Richard Kelly                  Alternat Fade Algorithm        arborpa@yahoo.com              06-13-03 (  :  )       Qbasic, QB, PDS        354  8833     FadeInOt.BAS'Name of program: Graphics Demo & Alternative Algorithm'Author: Richard Kelly'E-Mail address: arborpa@yahoo.com </ym/Compose?To=arborpa@yahoo.com&YY=15762&order=down&sort=date&pos=0>'Category: Graphics/Demos/Algorithms - Your choice'Originally released on: 06/14/2003'Language: QB/QuickBASIC/PDS'Version: 1.00'Please note that my E-Mail address has changed to the one above.  Those who'have E-Mailed at either of the NEWSON addresses and have not received a'reply, please try again at the YAHOO.COM address.'For documentation, select "DOCs" from the [F2] menu.DECLARE SUB Animate ()DECLARE SUB Coordinates ()DECLARE SUB Darkness ()DECLARE SUB DOCs ()DECLARE SUB DrawBoxes ()DECLARE SUB FadeIn ()DECLARE SUB FadeOut ()DECLARE SUB LoadPal ()DECLARE SUB Main ()DECLARE SUB Pal ()DECLARE SUB PauseIt ()DECLARE SUB PressKey ()DECLARE SUB Road ()DECLARE SUB Stars ()DIM SHARED ResX, ResY, VX, VYResolutionX = 640ResolutionY = 350VX = ResolutionX / 10VY = ResolutionY / 10DIM SHARED Box%(VX, VY, 1), Remaining%(VX + 1, VY, 1), P%(14, 2)DIM SHARED PN%(14), DP%(15, 2), Stuff%(999)MainEND'Palette colors (1-15) - Red, Green, Blue (Valid values are 0-63)DATA 21,42,0DATA 63,63,63DATA 0,42,21DATA 32,32,32DATA 63,0,0DATA 0,63,0DATA 42,42,42DATA 21,21,21DATA 0,0,63DATA 63,0,63DATA 21,21,21DATA 21,21,21DATA 63,63,0DATA 63,63,0DATA 63,63,63'Data for OUT values called within the PN% arrayDATA 0, 1, 2, 3, 4, 19, 6, 55, 56, 57, 58, 59, 60, 61, 62SUB AnimateH = P%(14, 0): I = P%(14, 1): J = P%(14, 2)FOR T = 13 TO 10 STEP -1: FOR P1 = 0 TO 2: P%(T + 1, P1) = P%(T, P1)NEXT P1, T: FOR P1 = 0 TO 2: P%(10, P1) = P%(14, P1): NEXTP%(14, 0) = H: P%(14, 1) = I: P%(14, 2) = JFOR T = 0 TO 3: FOR P1 = 0 TO 2: A = P%(T, P1) + 3: A = A MOD 64P%(T, P1) = A: NEXT P1, TEND SUBSUB Coordinates'Store the coordinates in the Remaining% array.  (?, ?, 0) is the X'coordinate, and (?, ?, 1) is the Y coordinate.FOR R1 = 0 TO VX - 1: Remaining%(R1, 0, 0) = VY: FOR R2 = 0 TO VY - 1Remaining%(R1, R2 + 1, 0) = R1 * 10: Remaining%(R1, R2 + 1, 1) = R2 * 10NEXT R2, R1VZ = VX: A = -1: B = 0StartBox:'Set the place in the array for the coordinates of the next box.A = A + 1: IF A >= VX - 1 THEN A = 0: B = B + 1'The End?IF VZ < 0 THEN GOTO Alter'Select a box coordinate at random.  Note that "Remaining%(X, 0, 0)" tells how'many unselected coordinates are left in the chosen portion of the array.X = INT(RND * VZ): VW = Remaining%(VZ, 0, 0): Y = INT(RND * VW) + 1'Put the chosen coordinates into the Box% array.Box%(A, B, 0) = Remaining%(X, Y, 0): Box%(A, B, 1) = Remaining%(X, Y, 1)'Find the position of the final coordinate in the entire array.VU = Remaining%(VZ, 0, 0)'Remaining%(X, Y, ?) is now stored in Box%, so replace Remaining% with the'very last (unstored by Box%) coordinate in the array.  This is the fastest'and simplest way to organize it.Remaining%(X, Y, 0) = Remaining%(VZ, VU, 0)Remaining%(X, Y, 1) = Remaining%(VZ, VU, 1)'The next command line has been REMarked out to increase the speed of the'program's performance.  If you use this array more than once in your own'code, you should remove the REM word, as it will easily allow the program to'leave the Remaining% array "clear" when all Box% coordinates have been'selected.  Of course, you could *also* use the array again if you set all the'(?, 0, 0) numbers to the variable "VY" ...REM Remaining%(VZ, VU, 0) = 0: Remaining%(VZ, VU, 1) = 0'Decrease the "base" number in the last portion of the Remaining% array, so'the coordinates placed in Box% won't be selected again.Remaining%(VZ, 0, 0) = VU - 1'Are all coordinates in this portion of the array selected?IF VU > 1 THEN GOTO NextBox'Yes?  Then mark out that array portion!VZ = VZ - 1NextBox:'Next box, please.GOTO StartBox'Finis!Alter:END SUBSUB DarknessFOR P0 = 0 TO 14: OUT &H3C7, PN%(P0): FOR P1 = 0 TO 2: OUT &H3C9, 0: NEXT: NEXTEND SUBSUB DOCs'I have created and released this graphics demo to teach the programmer two'things:'1.  The fastest and simplest way to set the palettes in 640x350 16-color EGA.'2.  To randomly select every area of the screen and store it in an array,'    there's a way to do it that takes the same amount of CPU cycles to'    complete ... no matter how many times you re-execute it.'The EGA palette cannot be set through the OUT command using values 0-14.'The correct values are stored in the PN% array.  The Red/Green/Blue settings'are in the array P%(?,0-2).  For fading in and out, the "dummy" palette DP%'is used.'The palette is set using the SUB "Pal", and the palette is completely black'when the SUB "Darkness" is called.  The palette is also black after the SUB'"FadeOut" has executed.'All animation is palette cycling, and the colors changed are 1-4 (the'"stars") and 11-14 (the stripes in the road).  The values of these colors are'changed in the SUB "Animate".'All valid coordinates for the screen are placed in the Remaining% array.'Each coordinate will be selected at random, then placed for use in the Box%'array.'The most commonly used way (at least to me) that a programmer would randomly'select every area of the screen and store it in an array (In this case, Box%)'would be something like the following:FOR B0 = 0 TO 63FOR B1 = 0 TO 34Try:X = INT(RND * 64)Y = INT(RND * 34)'Remaining%(X, Y, 0) will equal "-1" when the coordinate has already been'picked before.IF Remaining%(X, Y, 0) = -1 THEN GOTO Try'The coordinate was *not* already used, so store it in the array.Box%(B0, B1, 0) = Remaining%(X, Y, 0): Box%(B0, B1, 1) = Remaining%(X, Y, 1)'Mark the new coordinate as "used".Remaining%(X, Y, 0) = -1NEXT B1, B0'Although this technique works, the routine will keep picking countless'numbers of "used" coordinates at random, and the more coordinates that are'stored in the array, the longer the program has to keep generating random'numbers before it finds an "unused" area.  Add to that the fact that the'routine takes a different amount of time to finish filling the Box% array'every time it's run, and you see how impractical this method is.'With modesty, I feel my method is faster and more practical to use, and I'want the whole world to know how it works.  So here it is, documented and'everything!END SUBSUB DrawBoxesFOR X = 0 TO VX - 1: FOR Y = 0 TO VYB0 = Box%(X, Y, 0): B1 = Box%(X, Y, 1): SCREEN 9, 0, 1, 0GET (B0, B1)-(B0 + 9, B1 + 9), Stuff%: SCREEN 9, 0, 0, 0PUT (B0, B1), Stuff%, PSET: NEXTCALL AnimateCALL PalCALL PauseItNEXTEND SUBSUB FadeInFOR F = 62 TO 0 STEP -1CALL AnimateFOR P0 = 0 TO 14: FOR P1 = 0 TO 2DP = P%(P0, P1) - F: IF DP < 0 THEN DP = 0DP%(P0, P1) = DP: NEXT P1, P0CALL PauseItFOR P0 = 0 TO 14: OUT &H3C7, PN%(P0)FOR P1 = 0 TO 2: OUT &H3C9, DP%(P0, P1): NEXT P1, P0, FEND SUBSUB FadeOutFOR F = 1 TO 63 STEP 2CALL AnimateFOR P0 = 0 TO 14: FOR P1 = 0 TO 2DP = P%(P0, P1) - F: IF DP < 0 THEN DP = 0DP%(P0, P1) = DP: NEXT P1, P0CALL PauseItFOR P0 = 0 TO 14: OUT &H3C7, PN%(P0)FOR P1 = 0 TO 2: OUT &H3C9, DP%(P0, P1): NEXT P1, P0, FEND SUBSUB LoadPalSCREEN 9, 0, 1, 1: COLOR 7, 0: SCREEN 9, 0, 0, 0: COLOR 7, 0OUT &H3C7, 14: FOR Y = 0 TO 2: OUT &H3C9, 32: NEXTFOR P0 = 0 TO 14: FOR P1 = 0 TO 2: READ P%(P0, P1): NEXT: NEXTFOR P2 = 0 TO 14: READ PN%(P2): NEXTEND SUBSUB MainRANDOMIZE TIMERLoadPalPalCoordinatesRoadStarsFadeInPressKeyDrawBoxesPressKeyFadeOut'If you re-program the code beyond the SUB "FadeOut", make sure you remove the'REM statements from the following two lines, or you won't see anything on the'screen.REM CLSREM PalEND SUBSUB PalFOR P0 = 0 TO 14: OUT &H3C7, PN%(P0): FOR P1 = 0 TO 2: OUT &H3C9, P%(P0, P1)NEXT: NEXTEND SUBSUB PauseItFOR TR = 1 TO 3: WAIT &H3DA, 8: WAIT &H3DA, 8, 8: NEXTEND SUBSUB PressKeyWaiting:CALL AnimateCALL PauseItCALL PalIF INKEY$ = "" THEN GOTO WaitingEND SUBSUB RoadSCREEN 9, 0, 1, 0CALL DarknessC = 0FOR T = 0 TO 340 STEP 10: U = T + 9LINE (0, T)-(299, U), 5, BF: LINE (300, T)-(317, U), 8, BFLINE (318, T)-(321, U), C + 11, BF: LINE (322, T)-(339, U), 8, BFLINE (340, T)-(639, U), 5, BF: C = (C + 1) MOD 4: NEXTEND SUBSUB StarsSCREEN 9, 0, 0, 0CALL DarknessFOR T = 0 TO 99: PSET (INT(RND * 640), INT(RND * 350)), 15: NEXTFOR C = 1 TO 4: FOR T = 0 TO 99: PSET (INT(RND * 640), INT(RND * 350)), CNEXT T, CEND SUBThe ABC Programmer             NO BRAIN (LIKE HUGO) GAME      NO,BRAIN,LIKE,HUGO,GAME        Year of 1995           QB, QBasic, PDS        749  22543    NOBRAIN.BAS '==================================================='  NOBRAIN.BAS  By William Yu (1994)   EGA Required'  Game is incomplete, please finish.'  Like HUGO, but without the moving dweeb.''  The person you are directing has been brainwashed'  You must find food and money in order to survive'  So you must break into the store, then find the'  whereabouts of Mr. BumbScum who brainwashed him.''  HINTS:'     View SUB Hints if you are stuck and have no'     idea as to what to do next.'===================================================DEFINT A-ZDECLARE SUB ScrollUp ()DECLARE SUB ScrollDown ()DECLARE SUB LONE ()DECLARE SUB LTWO ()DECLARE SUB MBOX (Nlines%)DECLARE SUB PAUSE (SECS!)DECLARE SUB parseit ()DECLARE SUB EmptyChar ()CONST True = 1CONST False = 0DO    ve = ve + 1    READ in$LOOP UNTIL in$ = "end"DO    no = no + 1    READ in$LOOP UNTIL in$ = "end"DO    pl = pl + 1    READ in$LOOP UNTIL in$ = "end"RESTOREDIM SHARED Verb$(ve), noun$(no), place$(pl), UserInput$, v$, n$, p$, v, n, pFOR count = 1 TO ve    READ Verb$(count)NEXTFOR count = 1 TO no    READ noun$(count)NEXTFOR count = 1 TO pl    READ place$(count)NEXT' Declare Variables' ---------------------------------------' ve = Verbs' ne = Nouns' Count, etc. = Counters' UserInput$ = Command to Parse' True = 1  False = 0' CMD = Command Executed' Location = Current Location on MAP' Apples = Apples Available' WindowBroken = If Window has been Broken' Apples.Inv = Apples in Inventory' ---------------------------------------CLSSCREEN 7, 0, 0, 0LOCATION = 1APPLES = -1APPLES.INV = 0WindowBroken = FalseCALL LONEPCOPY 0, 1MBOX (7)COLOR 15, 0LOCATE 6, 5: PRINT "You are  standing just  outside a"LOCATE 7, 5: PRINT "store.  It is night, no one seems"LOCATE 8, 5: PRINT "to be around.  You must find some"LOCATE 9, 5: PRINT "way  to  break  into  the  store."LOCATE 10, 5: PRINT "A large fence  blocks  my passage"LOCATE 11, 5: PRINT "to the south."LOCATE 12, 5: PRINT "Exits: East, West"A$ = INPUT$(1)PCOPY 1, 0TypeCommand:LINE (-1, 194)-(320, 180), 9, BA = 3: I = 1: CMD = 0LOCATE 24, 1: PRINT SPACE$(40);LOCATE 24, 1: COLOR 15: PRINT "> "; : COLOR 10: PRINT CHR$(95);REDIM WORD$(40)DO  IF A = 39 THEN LOCATE 24, A: PRINT CHR$(95); : A = A - 1: I = I - 1  DO    A$ = INKEY$  LOOP UNTIL LEN(A$) > 0  IF A$ = CHR$(8) AND A = 3 THEN A = A - 1: I = I - 1: GOTO CNT  IF A$ = CHR$(13) THEN EXIT DO  IF A$ = CHR$(27) THEN EXIT DO  IF A$ = CHR$(8) AND A = 38 THEN LOCATE 24, A: PRINT "  ";  IF A$ = CHR$(8) AND A > 3 THEN A = A - 1: I = I - 1: A$ = " ": LOCATE 24, A: PRINT CHR$(95); "  "; : A = A - 1: I = I - 1: GOTO CNT  IF ASC(A$) > 30 AND A >= 3 THEN    LOCATE 24, A: COLOR 10: PRINT A$; CHR$(95); " ";    WORD$(I) = WORD$(I - 1) + A$  ELSE    A = A - 1: I = I - 1  END IFCNT:  A = A + 1  I = I + 1LOOPI = I - 1v$ = "": n$ = "": p$ = "": v = 0: n = 0: p = 0UserInput$ = LTRIM$(RTRIM$(WORD$(I)))BackUp$ = UserInput$IF UserInput$ = "" THEN PCOPY 0, 1: CALL MBOX(2): COLOR 15: LOCATE 6, 5: PRINT "      Don't just sit there!": LOCATE 7, 5: PRINT "        Type Something!!!": A$ = INPUT$(1): PCOPY 1, 0: GOTO TypeCommandparseitIF v = 11 THEN ENDGOSUB Commands'PRINT "Verb:"; v$, "Noun:"; n$'PRINT "Verb#"; v, "Noun#"; n'PRINT "Place"; p, "Place"; p$GOTO TypeCommandCommands:   SELECT CASE v    CASE 1 TO 5, 21      ' Hit, Kick, Punch, Shake, Break, Bust      IF n = 1 AND LOCATION = 1 THEN         ' Shake the Tree        IF APPLES = -1 THEN                  ' Shake the Apples          LINE (260, 35)-(300, 67), 2, BF          LOCATE 24, 3: PRINT SPACE$(37);          PCOPY 0, 2          LOCATE 24, 3: PRINT BackUp$;          CIRCLE (266, 160), 4, 12: PAINT (266, 160), 12: LINE (266, 157)-(266, 156), 0          CIRCLE (277, 143), 4, 12: PAINT (277, 143), 12: LINE (277, 140)-(277, 139), 0          CIRCLE (293, 162), 4, 12: PAINT (293, 162), 12: LINE (293, 159)-(293, 158), 0          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 5: PRINT "The tree shakes violently and"          LOCATE 7, 5: PRINT "down comes three red apples."          APPLES = True          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        ELSE                  ' No Apples on tree          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 5: PRINT "The tree shakes some more but"          LOCATE 7, 5: PRINT "nothing unusual happens."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF      END IF        IF n = 3 AND LOCATION = 1 THEN          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 5: PRINT "You attempt to break the window"          LOCATE 7, 5: PRINT "but you don't have enough force."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF        IF n = 4 AND LOCATION = 1 THEN          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 6: PRINT "The door is made of steel!"          LOCATE 7, 6: PRINT "You can't bust that down."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF        IF LEN(RTRIM$(BackUp$)) <= 5 AND CMD <> True THEN          PCOPY 0, 1          MBOX (1)          COLOR 15: LOCATE 6, 16: PRINT UCASE$(v$); " what?"          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF        IF CMD <> True THEN          PCOPY 0, 1          MBOX (1)          COLOR 15: LOCATE 6, 10: PRINT "Stop being so voilent!"          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF    CASE 10      IF n = 6 AND LOCATION = 1 OR n = 7 AND LOCATION = 1 OR n = 8 AND LOCATION = 1 THEN        IF WindowBroken = True THEN          PCOPY 3, 1          CALL ScrollUp          CALL LTWO          CALL ScrollDown          PCOPY 0, 1          MBOX (3)          COLOR 15          LOCATE 6, 5: PRINT "You enter  the store finding it"          LOCATE 7, 5: PRINT "pitch dark.  You can hardly see"          LOCATE 8, 5: PRINT "a single thing."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True          LOCATION = 2        ELSE          PCOPY 0, 1          MBOX (1)          COLOR 15: LOCATE 6, 8: PRINT "There's no visible way in."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        END IF      END IF    CASE 12 TO 15     ' Get, Pick, Take, Grab      IF n = 2 AND APPLES = False OR n = 9 AND APPLES = False THEN ' Get Apples When you already have them        PCOPY 0, 1        MBOX (1)        COLOR 15: LOCATE 6, 9: PRINT "They're in your backpack!"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF LOCATION = 1 THEN      IF n = 2 AND APPLES = True OR n = 9 AND APPLES = True THEN ' Get Apples (on Ground)        PCOPY 2, 0        LOCATE 24, 3: PRINT BackUp$;        PCOPY 0, 1        MBOX (2)        COLOR 15        LOCATE 6, 5: PRINT "You pick up the apples and stuff"        LOCATE 7, 5: PRINT "them into your backpack."        A$ = INPUT$(1)        PCOPY 1, 0        APPLES = False        APPLES.INV = 3        CMD = True      END IF      END IF      IF LOCATION = 1 THEN      IF n = 2 AND APPLES = -1 OR n = 9 AND APPLES = -1 THEN ' Get Apples (On Tree)        PCOPY 0, 1        MBOX (1)        COLOR 15: LOCATE 6, 8: PRINT "They're out of your reach."        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      END IF      IF LEN(RTRIM$(BackUp$)) <= 4 AND CMD <> True THEN         ' Noun not found        PCOPY 0, 1        MBOX (1)        COLOR 15: LOCATE 6, 17: PRINT UCASE$(v$); " what?"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF n > 0 AND CMD <> True THEN ' Noun found but not in data        PCOPY 0, 1        MBOX (1)        COLOR 15: LOCATE 6, 9: PRINT "You can't get the "; n$; "!"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF CMD <> True THEN ' Noun found but not in data        PCOPY 0, 1        MBOX (1)        COLOR 15: LOCATE 6, 5: PRINT "You can't get that in this game."        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF    CASE 16, 23        ' Look, See      IF n = 1 AND LOCATION = 1 THEN        PCOPY 0, 1        IF APPLES = -1 THEN MBOX (5) ELSE MBOX (3)        COLOR 15        LOCATE 6, 5: PRINT "The tree seems to be quite old."        LOCATE 7, 5: PRINT "It doesn't look as if it has a"        LOCATE 8, 5: PRINT "sturdy foundation either."        IF APPLES = -1 THEN          LOCATE 9, 5: PRINT "You notice three red apples"          LOCATE 10, 5: PRINT "hanging from it."        END IF        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF n > 0 AND CMD <> True AND LOCATION = 1 THEN        PCOPY 0, 1        MBOX (2)        COLOR 15        LOCATE 6, 5: PRINT "The "; n$; " looks remarkably"        LOCATE 7, 5: PRINT "similar to a "; n$        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF CMD <> True AND LOCATION = 2 THEN        PCOPY 0, 1        MBOX (2)        COLOR 15        LOCATE 6, 5: PRINT "It's too dark to see very much."        LOCATE 7, 5: PRINT "Exits: Outside"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF CMD <> True AND LOCATION = 1 THEN      ' Survey Area        PCOPY 0, 1        L = 5        IF APPLES = True THEN L = L + 1        IF WindowBroken = True THEN L = L + 1        MBOX (L)        COLOR 15, 0        LOCATE 6, 5: PRINT "You are  standing just  outside a"        LOCATE 7, 5: PRINT "store.  It is night, no one seems"        LOCATE 8, 5: PRINT "to  be  around.   A  large  fence"        LOCATE 9, 5: PRINT "blocks my  passage to  the south."        IF APPLES = True THEN LOCATE 10, 5: PRINT "Three apples are on the ground.": K = K + 1        IF WindowBroken = True THEN LOCATE 10, 5: PRINT "A window has been broken."        IF L = 6 THEN LOCATE 11, 5 ELSE LOCATE 10, 5        PRINT "Exits: East, West";        IF WindowBroken = True THEN PRINT ", Inside"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF    CASE 17, 18        ' Throw, Chuck      IF n = 2 AND p = 1 OR n = 9 AND p = 1 THEN        IF APPLES.INV = 0 THEN      ' Not carrying any apples          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 5: PRINT "You don't have any apples to"          LOCATE 7, 5: PRINT "throw with."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True        ELSE                         ' Has Apples in BackPack         IF WindowBroken = False THEN          X = 20          DO            PCOPY 0, 1            CIRCLE (160, 85), X, 12: PAINT (160, 85), 12            PAUSE (.01)            PCOPY 1, 0            X = X - 2          LOOP UNTIL X = 0          LINE (186, 75)-(182, 75), 11: LINE (186, 75)-(186, 85), 11          LINE (140, 85)-(133, 75), 0: LINE (133, 75)-(150, 84), 0          LINE (150, 84)-(160, 76), 0: LINE (160, 76)-(168, 80), 0          LINE (168, 80)-(175, 74), 0: LINE (175, 74)-(185, 79), 0          LINE (185, 79)-(180, 95), 0: LINE (180, 95)-(188, 106), 0          LINE (188, 106)-(181, 104), 0: LINE (181, 104)-(181, 101), 0          LINE (181, 101)-(139, 101), 0: LINE (139, 101)-(139, 104), 0          LINE (139, 104)-(134, 108), 0: LINE (134, 108)-(132, 100), 0          LINE (132, 100)-(140, 85), 0: PAINT (160, 80), 0          PCOPY 0, 1          MBOX (1)          COLOR 15: LOCATE 6, 18: PRINT "CRASH!!!"          PAUSE (1)          PCOPY 1, 0          MBOX (6)          COLOR 15          LOCATE 6, 5: PRINT "You take a  step back,  and with"          LOCATE 7, 5: PRINT "the arm of Nolan Ryan, you throw"          LOCATE 8, 5: PRINT "the  apple at  the  window  with"          LOCATE 9, 5: PRINT "great accuracy and force that it"          LOCATE 10, 5: PRINT "completely  shatters the window."          LOCATE 11, 5: PRINT "Not to mention the apple."          EmptyChar          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True          WindowBroken = True         ELSE          PCOPY 0, 1          MBOX (2)          COLOR 15          LOCATE 6, 5: PRINT "The window is already broken."          LOCATE 7, 5: PRINT "No sense in wasting another one."          A$ = INPUT$(1)          PCOPY 1, 0          CMD = True         END IF        END IF      END IF    CASE 19        ' Open      IF n = 3 AND LOCATION = 1 THEN        PCOPY 0, 1        MBOX (2)        COLOR 15        LOCATE 6, 5: PRINT "The window can't be opened from"        LOCATE 7, 5: PRINT "the outside."        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF n = 4 AND LOCATION = 1 THEN        PCOPY 0, 1        MBOX (4)        COLOR 15        LOCATE 6, 5: PRINT "If it  was only  that  easy you"        LOCATE 7, 5: PRINT "could pass this game in no less"        LOCATE 8, 5: PRINT "than  two  minutes!   Nice  try"        LOCATE 9, 5: PRINT "anyways but the door is locked."        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF    CASE 20       ' Read      IF n = 5 AND LOCATION = 1 THEN   ' Read Sign        PCOPY 0, 1        MBOX (2)        COLOR 15        LOCATE 6, 5: PRINT "What are you, blind?!"        LOCATE 7, 5: PRINT "The sign clearly reads "; CHR$(34);        COLOR 12: PRINT "CLOSED"; : COLOR 15: PRINT CHR$(34)        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF n > 0 AND LOCATION = 1 AND CMD <> True THEN        PCOPY 0, 1        MBOX (1)        COLOR 15        LOCATE 6, 6: PRINT "How can you read a "; n$; "?!"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF LEN(RTRIM$(BackUp$)) = 4 AND CMD <> True THEN        PCOPY 0, 1        MBOX (1)        COLOR 15        LOCATE 6, 17: PRINT "READ what?"        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF      IF CMD <> True THEN        PCOPY 0, 1        MBOX (1)        COLOR 15        LOCATE 6, 7: PRINT "Can't read that in this game."        A$ = INPUT$(1)        PCOPY 1, 0        CMD = True      END IF    CASE 22           ' Pull      IF n = 10 AND LOCATION = 2 OR n = 11 AND LOCATION = 2 THEN          PAINT (100, 10), 15, 0: PAINT (10, 100), 7, 0: PAINT (100, 150), 14, 0          PAINT (170, 26), 10, 0          CIRCLE (170, 30), 30, 10, .1, 3.05, 1 / 2          CIRCLE (169, 30), 30, 0, .1, 3.05, 1 / 2          CIRCLE (180, 29), 10, 15, .5, 1.5, 1          CIRCLE (179, 29), 10, 15, .5, 1.4, 1          LINE (47, 30)-(320, 145), 8, BF: LINE (166, 8)-(174, 15), 7, BF          LINE (160, 33)-(155, 44), 14: LINE (150, 32)-(140, 47), 14          LINE (170, 33)-(170, 40), 14          LINE (180, 33)-(185, 44), 14: LINE (190, 32)-(200, 47), 14          LINE (178, 29)-(178, 55), 15          CIRCLE (178, 56), 1, 12: PAINT (178, 56), 12        PCOPY 0, 1        MBOX (1)        LOCATE 6, 5: COLOR 15: PRINT " WOW!!! AWESOME, light at last!"        A$ = INPUT$(1)        PCOPY 1, 0        LIGHT = True        CMD = True      END IF  END SELECT  IF CMD <> True THEN      ' Verb not found in DATA    PCOPY 0, 1    MBOX (3)    COLOR 15    LOCATE 6, 5: PRINT "I'm sorry but I don't know how to"    LOCATE 7, 5: COLOR 11: PRINT LCASE$(LEFT$(BackUp$, 33))    LOCATE 8, 5: COLOR 10: PRINT "For a list of commands type HELP"    A$ = INPUT$(1)    PCOPY 1, 0  END IFRETURN'---------'Verb data'---------DATA shake,hit,break,kick,punch,knock,read,climb,look,goDATA quit,get,grab,pick,take,look,throw,chuck,open,readDATA bust,pull,seeDATA end'---------'Noun data'---------DATA tree,apples,window,door,sign,store,in,inside,fruit,cordDATA stringDATA end'-------------'Location data'-------------DATA windowDATA endENDGAME:SCREEN 0, 0, 0, 0: WIDTH 80, 25: COLOR 7, 0: CLSENDSUB EmptyCharDOLOOP UNTIL INKEY$ = ""END SUBSUB Hints' HINTS (Type as shown):' '     HIT TREE'     GET APPLES'     THROW APPLE AT WINDOW'     GO IN'     PULL CORD'     QUITEND SUBDEFSNG A-ZSUB LONEDIM SIGN(120)PALETTE 15, 0LOCATE 1, 1: PRINT "CONVIENCE STORE"GET (0, 0)-(118, 7), SIGNLOCATE 1, 1: PRINT SPACE$(40)PALETTE 15, 15LINE (0, 177)-(319, 125), 10, BFLINE (0, 0)-(319, 120), 1, BFLINE (0, 120)-(319, 125), 2, BFCIRCLE (300, 10), 16, 14PAINT (300, 10), 14DO  RANDOMIZE TIMER  A = INT(RND * 319) + 1  B = INT((176 - 125 + 1) * RND + 125)  LINE (A - 100, B)-(A + A, B + 1), 2, B  LINE (A - 100, B - 120)-(A + A, B - 121), 9, B  C = C + 1LOOP UNTIL C = 60LINE (20, 130)-(220, 60), 14, BFLINE (10, 60)-(230, 59), 6, BFLINE (11, 59)-(30, 35), 6LINE (229, 59)-(210, 35), 6LINE (210, 35)-(30, 35), 6PAINT (100, 45), 6PUT (57, 50), SIGN, ORLINE (35, 130)-(72, 70), 0, BLINE (73, 130)-(110, 70), 0, BPAINT (40, 120), 12, 0: PAINT (100, 80), 12, 0LINE (35, 131)-(15, 177), 8LINE (110, 131)-(130, 177), 8LINE (35, 131)-(110, 131), 8LINE (130, 177)-(15, 177), 8PAINT (80, 150), 7, 8LINE (130, 177)-(15, 177), 7LINE (69, 97)-(67, 103), 7, BFLINE (76, 97)-(78, 103), 7, BFLINE (130, 72)-(190, 110), 0, BLINE (131, 73)-(189, 109), 11, BFLINE (186, 75)-(182, 75), 15LINE (186, 75)-(186, 85), 15LINE (134, 107)-(134, 105), 15LINE (134, 107)-(135, 107), 15LINE (140, 109)-(180, 102), 12, BFCIRCLE (145, 106), 3, 15, 1.7, 4.6LINE (148, 104)-(148, 108), 15: LINE (148, 108)-(151, 108), 15CIRCLE (156, 106), 2, 15LINE (161, 104)-(164, 104), 15LINE (160, 104)-(160, 106), 15: LINE (161, 106)-(164, 106), 15LINE (163, 108)-(160, 108), 15: LINE (164, 108)-(164, 107), 15LINE (167, 104)-(167, 108), 15: LINE (167, 104)-(170, 104), 15LINE (167, 108)-(170, 108), 15: LINE (167, 106)-(169, 106), 15LINE (173, 104)-(173, 108), 15: CIRCLE (174, 106), 3, 15, 4.7, 1.5LINE (290, 133)-(270, 60), 6, BFLINE (286, 66)-(285, 126), 8: LINE (281, 77)-(279, 110), 8LINE (290, 133)-(310, 140), 6: LINE (270, 133)-(250, 140), 6LINE (310, 140)-(280, 135), 6: LINE (280, 135)-(250, 140), 6PAINT (277, 134), 6CIRCLE (260, 56), 25, 2: PAINT (260, 50), 2CIRCLE (280, 45), 33, 2: PAINT (290, 45), 2CIRCLE (303, 53), 22, 2: PAINT (315, 53), 2'Draw ApplesCIRCLE (266, 60), 4, 12: PAINT (266, 60), 12: LINE (266, 57)-(266, 56), 0CIRCLE (277, 43), 4, 12: PAINT (277, 43), 12: LINE (277, 40)-(277, 39), 0CIRCLE (293, 62), 4, 12: PAINT (293, 62), 12: LINE (293, 59)-(293, 58), 0END SUBSUB LTWOLINE (0, 0)-(320, 178), 0, BFLINE (47, 30)-(319, 145), 8, BLINE (45, 30)-(45, 145), 8LINE (45, 29)-(0, 0), 8LINE (47, 28)-(320, 28), 8LINE (47, 28)-(4, 0), 8LINE (3, 0)-(320, 0), 8LINE (319, 0)-(319, 28), 8LINE (0, 0)-(0, 177), 8LINE (0, 177)-(45, 146), 8LINE (47, 147)-(320, 147), 8LINE (47, 147)-(3, 177), 8LINE (3, 177)-(320, 177), 8LINE (319, 177)-(319, 147), 8PAINT (100, 10), 7, 8: PAINT (10, 100), 8: PAINT (100, 150), 6, 8LINE (165, 7)-(175, 15), 0, BLINE (166, 8)-(174, 15), 8, BFCIRCLE (170, 30), 30, 8, .1, 3.05, 1 / 2CIRCLE (169, 30), 30, 8, .1, 3.05, 1 / 2PAINT (170, 26), 2, 8CIRCLE (170, 30), 30, 0, .1, 3.05, 1 / 2CIRCLE (169, 30), 30, 0, .1, 3.05, 1 / 2CIRCLE (180, 29), 10, 7, .5, 1.5, 1CIRCLE (179, 29), 10, 7, .5, 1.4, 1LINE (178, 28)-(178, 55), 7CIRCLE (178, 56), 1, 4: PAINT (178, 56), 4END SUBSUB MBOX (Nlines%)IF Nlines% > 3 THEN n = 10 * Nlines% - Nlines% ELSE n = 10 * Nlines%IF Nlines% = 1 THEN n = 12LINE (23, 37)-(300, 37 + n), 7, BLINE (24, 38)-(299, 36 + n), 0, BFLINE (26, 38 + n)-(301, 39 + n), 8, BFLINE (301, 40)-(302, 39 + n), 8, BFEND SUBDEFINT A-ZSUB parseitUserInput$ = LCASE$(UserInput$) + " "'--------------'Parse sentence'-----------------------------'The first 3 letters of a verb'and the first 4 letters of a'noun is all that is needed.'-----------------------------DO WHILE LEN(UserInput$)  FOR ve = 1 TO LEN(UserInput$)    Char$ = MID$(UserInput$, ve, 1)    IF Char$ = " " OR Char$ = "!" OR Char$ = "." OR Char$ = "," + "" THEN        VrbHold$ = LEFT$(UserInput$, ve - 1)        UserInput$ = MID$(UserInput$, ve + 1)        Count1 = 1        Count2 = 1        Count3 = 1        DO  'get verb        IF LEFT$(VrbHold$, 5) = LEFT$(Verb$(Count1), 5) THEN            v$ = Verb$(Count1)            v = Count1            ve = 1        END IF        Count1 = Count1 + 1        IF Verb$(Count1) = "end" THEN EXIT DO        LOOP        IF n = 0 THEN        DO  'get noun            IF LEFT$(VrbHold$, 4) = LEFT$(noun$(Count2), 4) THEN                n$ = noun$(Count2)                n = Count2                ve = 1                EXIT DO            END IF            Count2 = Count2 + 1            IF noun$(Count2) = "end" THEN EXIT DO        LOOP        END IF        IF n > 0 THEN        DO  'get location            IF LEFT$(VrbHold$, 4) = LEFT$(place$(Count3), 4) THEN                p$ = place$(Count3)                p = Count3                EXIT SUB            END IF            Count3 = Count3 + 1            IF place$(Count3) = "end" THEN EXIT DO        LOOP        END IF    END IF  NEXTLOOPEND SUBDEFSNG A-ZSUB PAUSE (SECS!)BEGIN! = TIMERDOLOOP UNTIL TIMER - BEGIN! > SECS!END SUBDEFINT A-ZSUB ScrollDownFOR I% = 8240 TO 0 STEP -80M% = FIX(I% / 256): L% = I% - (M% * 256)OUT &H3D4, 12: OUT &H3D5, M%: OUT &H3D4, 13: OUT &H3D5, L%WAIT &H3DA, 8: 'waits for vertical retraceFOR DELAY = 0 TO 100: NEXT: 'Adjust for different scroll speedNEXTEND SUBSUB ScrollUpFOR I% = 0 TO 8240 STEP 80REM M% stands for MSB and L%=LSBM% = FIX(I% / 256): L% = I% - (M% * 256)OUT &H3D4, 12: OUT &H3D5, M%: OUT &H3D4, 13: OUT &H3D5, L%WAIT &H3DA, 8 'Wait for vertical retraceFOR D = 0 TO 100: NEXT: 'Adjust for different scroll speedNEXTEND SUBThe ABC Programmer             SPEED RACER DEMO               SPEED,RACER,DEMO               06-05-95 (00:00)       QB, QBasic, PDS        62   1953     SPDRACE.BAS '======================================='  Speed Racer Demo by William Yu' Simple demonstration of a vertical' scrolling road with a cheap imitation' of a race car done in QuikDraw'=======================================DEFINT A-ZSCREEN 7REDIM Sprite%(240)'FOR a = 0 TO 158: READ Sprite%(a): NEXT'DATA 22,25,224,-8164,7168,-25,1948,-32513,224,-8164DATA 7168,-17,4060,-16129,224,-8164,7168,-1,8188,-7937DATA 224,-8164,7168,-1,8188,-7937,30944,-8164,7288,-1DATA 8188,-7937,31968,-8164,7292,-1025,8188,-7937,-288,-8164DATA 7422,-4609,8188,-7937,-512,0,254,-2785,8160,-7937DATA -512,0,254,-2753,16368,-3841,-512,0,254,-641DATA 32760,-1793,-512,0,254,-641,32760,-1793,-512,0DATA 254,-17025,32760,-1793,-512,0,254,-17025,32760,-1793DATA -512,0,254,-8833,32760,-1793,31744,0,124,-1153DATA 32760,-1793,14336,0,56,-14465,32760,-1793,0,0DATA 0,-129,32760,-1793,0,0,0,-193,16368,-3841DATA 0,0,0,-225,8160,-7937,224,-8164,7168,-1DATA 8188,-7937,192,-16372,3072,-1,16380,-3841,192,-16372DATA 3072,-1,16380,-3841,248,-1924,31744,-5,892,255DATA 248,-1924,31744,248,124,0,248,-1924,31744,248DATA 124,0,0,0,0,0,0,0,0PUT (100, 100), Sprite%, PSETGET (98, 98)-(123, 126), Sprite%LINE (98, 98)-(123, 126), 0, BFX = 200: Y = 0: Z = 0: N = 1: M = 165: R = 230UP = 0DODO  IF N > 0 THEN LINE (X, Y - N)-(X + 4, Y), 0, BF  LINE (X, Y)-(X + 4, Y + 15), 15, BF  Y = Y + 25LOOP UNTIL Y >= 225  PUT (R, M), Sprite%, PSET  PUT (R + 1, M), Sprite%, PSET  PUT (R, M), Sprite%, PSETV$ = INKEY$IF V$ = CHR$(0) + "H" THEN  IF N = 0 THEN N = 1  UP = 1  M = M - 1END IFIF V$ = CHR$(0) + "P" THEN N = N - 1IF V$ = CHR$(0) + "M" THEN R = R + 1IF V$ = CHR$(0) + "K" THEN R = R - 1IF N < 0 THEN N = 0IF UP = 1 THEN Z = Z + NIF M = 30 THEN M = M + 1: N = N + 1IF N = 6 THEN N = N - 1IF V$ = "+" AND N < 5 THEN N = N + 1IF Z >= 15 THEN Z = -10Y = ZLOOP UNTIL V$ = CHR$(27)Joshua Dickerson               TRON LIGHT CYCLES              FidoNet QUIK_BAS Echo          10-27-95 (16:44)       QB, QBasic, PDS        229  7217     TRON.BAS    '                     T r O n   L i G h T   c Y c L e S''                              Programmed By:'                             Joshua Dickerson''                          Press Shift+F5 To Play!'DEFINT A-S, U-ZDEFSNG T'TYPE Cycle    X AS INTEGER    Y AS INTEGER    XD AS INTEGER    YD AS INTEGER    Turbo AS INTEGER    TurboOn AS INTEGER    Alive AS INTEGER    WINS AS INTEGER    WinLocX AS INTEGER    WinLocY AS INTEGER    Up AS STRING * 1    Down AS STRING * 1    Left AS STRING * 1    Right AS STRING * 1    TurboKey AS STRING * 1END TYPE'DECLARE SUB PlayerDead (i)DECLARE SUB Display ()DECLARE SUB UpdatePlayer (i)DECLARE SUB GetKeyboardInputs ()DECLARE SUB GamePlay ()DIM SHARED Player(1 TO 2) AS CycleDIM SHARED Pfield$(100)'CLS : WIDTH 40: RANDOMIZE TIMER                  'General IntializationPlayer(2).WinLocY = 1: Player(2).WinLocX = 20Player(1).WinLocY = 3: Player(1).WinLocX = 1Player(1).Up = "w"Player(1).Down = "s"Player(1).Left = "a"Player(1).Right = "d"Player(1).TurboKey = " "'Player(2).Up = "8"Player(2).Down = "2"Player(2).Left = "4"Player(2).Right = "6"Player(2).TurboKey = "5"'COLOR 11FOR i = 1 TO 2LOCATE Player(i).WinLocY, Player(i).WinLocX: PRINT "Ŀ"    FOR j = 1 TO 15     LOCATE Player(i).WinLocY + j, Player(i).WinLocX     PRINT "               "    NEXTLOCATE Player(i).WinLocY + 16, Player(i).WinLocXPRINT ""NEXT''FOR Round = 1 TO 3    FOR j = 1 TO 100: Pfield$(j) = SPACE$(100): NEXT    Player(1).X = 50: Player(1).Y = 50    Player(2).X = 51: Player(2).Y = 50'      FOR j = 1 TO 2     Player(j).Alive = -1     Player(j).Turbo = 100     Player(j).TurboOn = 0     Player(j).XD = 0: Player(j).YD = 0     Pfield$(50) = SPACE$(49) + "" + SPACE$(49)     Display    NEXT    '    WHILE INKEY$ <> "": WEND    FOR j = 3 TO 0 STEP -1     WHILE TIMER < t + 1     GetKeyboardInputs     WEND: t = TIMER: SOUND 400, .4: '    NEXT: SOUND 600, 8    FOR i = 1 TO 2                'Default direction is up     IF Player(i).YD = 0 AND Player(i).XD = 0 THEN Player(i).YD = -1    NEXTGamePlayNEXT    IF Player(1).WINS > Player(2).WINS THEN LOCATE 22, 1: PRINT "Player 1 WINS!"    IF Player(2).WINS > Player(1).WINS THEN LOCATE 22, 1: PRINT "Player 2 WINS!"    IF Player(1).WINS = Player(2).WINS THEN LOCATE 22, 1: PRINT "TIE GAME, WOW!"DEFSNG A-H, K-S, U-ZDEFINT K'SUB Display'FOR j = 1 TO 2'Display Player Locations.COLOR 10: LOCATE Player(j).WinLocY + 17, Player(j).WinLocX: PRINT "Location(";PRINT USING "###"; Player(j).X; : PRINT ",";PRINT USING "###"; Player(j).Y; : PRINT ")"COLOR 11    FOR k = -7 TO 7     'Is Window displaying upper or lower side of boundry?     IF Player(j).Y + k < 1 OR Player(j).Y + k > 100 THEN     LOCATE Player(j).WinLocY + 8 + k, Player(j).WinLocX + 1     PRINT STRING$(15, ""): GOTO Skip     END IF'     'Is Window displaying left side of boundry?     IF Player(j).X - 7 < 1 THEN     LOCATE Player(j).WinLocY + 8 + k, Player(j).WinLocX + 1     PRINT STRING$(ABS(Player(j).X - 8), "");     PRINT LEFT$(Pfield$(Player(j).Y + k), 15 - ABS(Player(j).X - 8)): GOTO Skip     END IF'     'Is Window displaying right side of boundry?     IF Player(j).X + 7 > 100 THEN     LOCATE Player(j).WinLocY + 8 + k, Player(j).WinLocX + 1     PRINT RIGHT$(Pfield$(Player(j).Y + k), 101 - (Player(j).X - 7));     PRINT STRING$(15 - (101 - (Player(j).X - 7)), ""): GOTO Skip     END IF'     'Nothing beyond boundry is being displayed.     LOCATE Player(j).WinLocY + 8 + k, Player(j).WinLocX + 1     PRINT MID$(Pfield$(Player(j).Y + k), Player(j).X - 7, 15)'Skip: NEXTNEXT'END SUBDEFSNG K'SUB GamePlay'GamePlayMainLoop:IF Player(1).Alive = 0 OR Player(2).Alive = 0 THEN GOTO RoundOver't = TIMER: WHILE TIMER < t + .1: WENDGetKeyboardInputsFOR i = 1 TO 2IF Player(i).TurboOn = -1 AND Player(i).Turbo > 0 THENPlayer(i).Turbo = Player(i).Turbo - 1: UpdatePlayer (i)END IFNEXT'IF Player(1).Alive = 0 OR Player(2).Alive = 0 THEN GOTO RoundOver't = TIMER: WHILE TIMER < t + .2: WENDGetKeyboardInputsFOR i = 1 TO 2: UpdatePlayer (i): NEXTGOTO GamePlayMainLoopRoundOver: END SUBSUB GetKeyboardInputsGetKeyMainLoop: a$ = INKEY$IF a$ = "" THEN GOTO NoKeyFOR i = 1 TO 2'Turbo Toggle?IF a$ = Player(i).TurboKey THENPlayer(i).TurboOn = (Player(i).TurboOn = 0)IF Player(i).Turbo < 1 THEN Player(i).TurboOn = 0GOTO DalreadySetEND IF'If player already selected direction, skip him.IF MID$(Pfield$(Player(i).Y), Player(i).X, 1) <> "" AND MID$(Pfield$(Player(i).Y), Player(i).X, 1) <> "" THEN GOTO DalreadySet'Did player press left?IF a$ = Player(i).Left AND Player(i).XD = 0 THENIF Player(i).YD = -1 THEN b$ = "" ELSE b$ = ""Player(i).XD = -1: Player(i).YD = 0GOTO BypassEND IF 'Did player press right?IF a$ = Player(i).Right AND Player(i).XD = 0 THENIF Player(i).YD = -1 THEN b$ = "" ELSE b$ = "" Player(i).XD = 1: Player(i).YD = 0GOTO BypassEND IF'Did player press up?IF a$ = Player(i).Up AND Player(i).YD = 0 THENIF Player(i).XD = -1 THEN b$ = "" ELSE b$ = ""Player(i).YD = -1: Player(i).XD = 0GOTO BypassEND IF'Did Player press down?IF a$ = Player(i).Down AND Player(i).YD = 0 THENIF Player(i).XD = -1 THEN b$ = "" ELSE b$ = ""Player(i).YD = 1: Player(i).XD = 0GOTO BypassEND IFGOTO DalreadySetBypass:Pfield$(Player(i).Y) = LEFT$(Pfield$(Player(i).Y), Player(i).X - 1) + b$ + RIGHT$(Pfield$(Player(i).Y), 100 - Player(i).X)DisplayDalreadySet: NEXT: GOTO GetKeyMainLoop            'Loop until buffer emptyNoKey: END SUBSUB PlayerDead (i)'Animated Explosion sequence with sound.Player(i).Alive = 0Player(2 - INT(i / 2)).WINS = Player(2 + (i = 2)).WINS + 1WHILE a < 4: SOUND INT(500 * RND(1)) + 100, .1    IF TIMER > t + .1 THEN    LOCATE Player(i).WinLocY + 8, Player(i).WinLocX + 8    a = a + 1: PRINT MID$("۲", a, 1): t = TIMEREND IFWEND: a = 0END SUBDEFINT KSUB UpdatePlayer (i)'If player is not alive, don't bother.IF Player(i).Alive = 0 THEN GOTO Shunt'Did player crash into outer-boundry?IF Player(i).X + Player(i).XD < 1 THEN PlayerDead (i): GOTO ShuntIF Player(i).X + Player(i).XD > 100 THEN PlayerDead (i): GOTO ShuntIF Player(i).Y + Player(i).YD < 1 THEN PlayerDead (i): GOTO ShuntIF Player(i).Y + Player(i).YD > 100 THEN PlayerDead (i): GOTO Shunt'Did player crash into light trail?IF MID$(Pfield$(Player(i).Y + Player(i).YD), Player(i).X + Player(i).XD, 1) <> " " THEN PlayerDead (i): GOTO Shunt'Move player in current direction.Player(i).X = Player(i).X + Player(i).XD      'If moving horizontaly, update XPlayer(i).Y = Player(i).Y + Player(i).YD      'If moving verticaly, Update Y'Place light trail in current position.IF Player(i).YD <> 0 THEN b$ = "" ELSE b$ = ""Pfield$(Player(i).Y) = LEFT$(Pfield$(Player(i).Y), Player(i).X - 1) + b$ + RIGHT$(Pfield$(Player(i).Y), 100 - Player(i).X)Display                                               'Display Player's WindowShunt: END SUBBen Ashley                     LIFE CELL EXAMPLE              alt.lang.basic                 12-01-95 (11:30)       QB, QBasic, PDS        97   2908     LIFE.BAS    '>   I am a little dumfounded as to how to search the array. Should I look '> for "*" and the count or should I bubble search one space at a time with '> a series of 'IF' statements and counting the amount of stars??'After a bit of tinkering around in QB45, I came up with the following.  Its'not perfect, but I think it will do the job:'-----' Dimension our cell array:DIM cell$(81, 41)WIDTH 80, 43DO   CLS   ' Fill in some contents, otherwise there will be no initial growth.  What   ' values we put here, is all important.   RANDOMIZE TIMER   LOCATE 1, 1   COLOR 15   PRINT "Life Cell Example - By Ben Ashley 1995,(R) Restarts (ESC) Ends"   COLOR 12   FOR f = 0 TO 81: FOR j = 0 TO 41: cell$(f, j) = " ": NEXT j: NEXT f   FOR f = 1 TO 300      x = INT(RND(1) * 79) + 1      y = INT(RND(1) * 39) + 2      LOCATE y, x      cell$(x, y) = "*"      PRINT cell$(x, y)   NEXT f   ' Life Loop:   DO      FOR f = 1 TO 80         FOR j = 2 TO 40               ' Calculate neighbours of cell:               neighbours = 0               IF cell$(f - 1, j) = "*" THEN neighbours = neighbours + 1               IF cell$(f + 1, j) = "*" THEN neighbours = neighbours + 1               IF cell$(f, j - 1) = "*" THEN neighbours = neighbours + 1               IF cell$(f, j + 1) = "*" THEN neighbours = neighbours + 1               IF cell$(f - 1, j - 1) = "*" THEN neighbours = neighbours + 1               IF cell$(f + 1, j - 1) = "*" THEN neighbours = neighbours + 1               IF cell$(f - 1, j + 1) = "*" THEN neighbours = neighbours + 1               IF cell$(f + 1, j + 1) = "*" THEN neighbours = neighbours + 1               ' What Happens               '               ' Neighbours is 2 or 3, it lives.               ' = 3 born               ' >=4 Death               ' <2 Death               IF cell$(f, j) = " " AND neighbours = 3 THEN cell$(f, j) = "*"               IF cell$(f, j) = "*" AND neighbours < 2 THEN cell$(f, j) = " "               IF cell$(f, j) = "*" AND neighbours >= 4 THEN cell$(f, j) = " "               LOCATE j, f: PRINT cell$(f, j)                       ' Check for keypresses               key$ = INKEY$               IF key$ <> "" THEN                  SELECT CASE LCASE$(key$)                     CASE "r"                        restart = 1                        EXIT DO                     CASE CHR$(27)                        quit = 1                        EXIT DO                  END SELECT               END IF         NEXT j      NEXT f      IF restart = 1 THEN restart = 0: EXIT DO      IF quit = 1 THEN EXIT DO   LOOP   IF quit = 1 THEN EXIT DOLOOPCLS'------'Concerning the death rule, (2 or less), I found that killed too many cells,'so I changed it to LESS than 2.  Any comments?Andrew Jones                   RAD VGA/ANSI DEMO              FidoNet QUIK_BAS Echo          02-11-96 (04:57)       QB, QBasic, PDS        194  12828    RADDEMO.BAS '...............[]RadDemo by Lord Humongous(Andrew Jones)[]...............'    RadDemo...Demo/Intro/Dentro...Released in Quik_BAS GTNet/Fidonet(?)    ''        Welcome to another QuickBASIC VGA demonstration.  While BlueWorld'was intended for release as an .EXE file used to demonstrate QB's capability,'RadDemo is intentionally released as source code for others to look at'(and learn from I suppose?)  RadDemo is 100% QuickBASIC, and is completely'commented, something I rarely do, but most of its history and documentation'is in the RAD.BAS file itself.  You will have no trouble reading this code!'        RadDemo draws all of the still graphics on the screen and then'begins to animate them...  The slats are animated with simple OUT commands'as well as the "copper/raster bars" so called because of the old Amiga'"Copper Chip" which has been much emulated on the IBM.  The stars provide'a nice display as well as a good mechanism for slowing this demo down for'your computer.  Since this demo was written on a 386/16sx, you will notice'that it flickers beyond belief, and it basically blows when viewed at such'as fast rate.DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"RADSRC.ZIP",4^6:Z&=8420:?STRING$(50,177);U"%up()%9%%%#-%N,IqEPV%FD^,7%%<4%%%,%%%%wf%iSitOh&&<>>TA6fwsOxh0;U"o)t[c>*LS8a-Q(.;..sj2L?/(bF(-Y:^s7p-ULJEfeQRX)oT8Hr?-aESN?KB^p'U"(/1NOIph6qmH^#XtL#n0pD=iMMPtP.z(NX^[VDcQKa\xcVaq$U;Fi&brJB8uxiRU"BmtDL]4HIv*8opuZh*9>FTe'rZ6'VogBZU,x$Z<R0ix+kV<;z4PZm,h4jsIMm3$U"2UF]1tDx>^xK)-SH$y\hN651&p\TKIWb;dpqe$Qip&6e_8#f05:-?Cbt8T%y-0zU"0\$2z\mK$Z0A&^_mLtO?2Q\=&A,<?uYfx1SgZnxR7zWMH4G5,A+^AiJ\%wnXk[LU"sLP+/w;S%MNC9)^\_+xT1F#X^+bPP22?G4E;Sgtb$IF^I.z)0<r.1p?Dz^>VQbQU"9AbbGbX2KIC(nrBdIptiIr9KhSMf=F)lV(+SJ<w8>-I/H[Me=6?)yb5c?HU;:_WU"f^Fl\/p./2B&9cC9:qbY=:501^i4gAA/R_C/$Ni)wZBM)b[ofFgF6-&>4r6qL1QU"Yk2DbH<+.dmbc_alp2#:$7m]G8:/K[aR<E%w/hm^UJ/0DQq3?ua8iD:T#xA,q)(U"VA;aIC^l7r1$M-._AZAgb=$iKa<YIDa)PdW$*1JZ02Yp-if_[Ka\T_EIqzplG(ZU"a)8'.d3dnmY4pwS,;+qM3$T7k^?5%C\mYb<l?F5G0(jB;]qL<sYrm8i6%ibN'OgU"O_8VJ)S-FJSbhPNCiJh%Hv'RgXS+3(oX++I1*;[rBp=%4EP+>a7CN,3T:l,b,FsU"l0&Y8qe<hIMf]2(4nd_<:)b+5$FP6Lamip9uZr,Rb56g01Ir<*<+aJn8A.-tpkVU".aRJexGTY\J%XPa1=b3Jb3sD5p/%:i[YND3?T#u#^Y:\$9fn#ZN1+&'9\7DPrjNU"YFh'Xdy8QDk].+B;pf<1s_q93E&tJ[^J'nKQ$*E'3RLRGU29GZPt$Y56vAdnn]IU"d1U,Z:adsDH1FlTi$P(S/kZ[+*q4A,BSB1idQr=FPPXF-L8X4o?qqZxmwTpDo-0U"-Lqm9hLjkGTQOeq<p'oL;v.IPydATbeLS_[oKYbC3k+jJwP*;E,i>f&dD*]b:crU"JQ<j2&\D>vgMTd1t0i]U%s/2Z'ccp+#uZp[kZggkU=8;oe2,EU90ZsE%,?F>9m9U"1:f9kS_7+xG2b-)?B9dZ4t5hVZSSL7>Bb>$P%Cu2P[3fK=.E'S9yQADmFO24^4VU"7[f?7Qw^#NH$kf?C0G^7(j6<Umd^roikY+u6'8=+i'a-0kPWnqOv3?CBn]AkR?lU"t%R>_6?V?IK5DezDIc):a\3;/4]ihHS?=SNrdSuU+NWX-WmPN0&uM:l6&'0Wri7U"zFR4;l>23k/*)#XV\IT%F%?npg<m]cFrI#kY$no3U&\wTU_cynv<#9P=QI2cSg_U"72$fOR%[VfiS4[1>&Y6[ragu]t,HgE&m.l51tN+B/cB&q&$,578j%P:E7a<ev4nU"+$S&,<o8KMdjUGRRPG'Pr<CkQ<htDu-NhE:TNTlMf+Ye(;VF8aCRW&*'t8C>DHUU"7W4D*<pFbDi.j&k1CPC9VospY)1;VL_T45=7+3<aZ4^]rZ$B5i4.3,Zu&6qe-%fU"NS)37Q4oKLm;fPr^<q*TNaFf]^ZRcO^u9YmK:=:S]Ogq^d;cJ:Vrj\A;jIXTKNKU"Z-YAqih+8FZ3PSEWUCJD()gX2lV:*.C.KkD9(xJRnm\_8BE%D[,DMmoqe8J565CU"3o0q3qV_0^H\5EA3pg;j)R(?hBBrU4l)G?LaInc#Q)S=SYHHQYHH41g=?5GNRl9U"w?%K*Jgdqv/xcs=9%YUBePdjYR9,/rhuP-6Hx/m$_VE;^s;9qqZGenf%b:P'2$#U"$$B*()B3\r&Qu9$EgE$xSg7cN.Zu:T-N$Jiu=GO5P:%4mDV91<pea-tqi+;?>SRU"DPLNr%7T2wS))ZYQfJcuWy_9I)W3ne3*GzAqZ(7Vp1*hNFcg2H<5.$)-Mu36jJ[U"E_\S>ZE#rm(fM7FUovdXQ4*3^v3j8Qa%X1S+vG\UW%]5.YdhDE<qKL%.5;k6QULU"V,$2TOEbG\p2VSy/<*q$N+Q=Wlct#f8rgNvkqn.wv+du2%.'BgfuT^8ourJJF?^U">e,:7.Z5HY0W'fA28K.A^'Q8=lXa/LchdDnnCNZ:YjzWV/EdYd-tMVK0>U.GVIVU"CdlahSnah#:k^X9R,-(T(kMtfsb367YhUuCP?itHjkqqD414o<F;'Z]07^LVp^HU"s[a48/j8D\1;&>b*f7FQ.C'FttLWl6lvkn<KVG\XAXh0I.kC%YP0DKv$OlwVA5eU"NL\,7$18uF/fyAhU.wS2,MiK'x*up%()9%%%%-%)GtZEVRb_u%>(%%&v4%%%,%%U"%%wfiS[ify6k&:]L.U5<#(j#xzErToJai[P1Bi>m*:.#QGR),wU.t=JT?UY)d7&U"k[p>_)\qLa>;FeF^oC&\X>tTWaH[CLN[.(\jT8M\ECrj4<]-r.*0nG0QR<uNVWgU"QVWV0lp-vWZo'p03QmI_$Sr$sOUe$]9c>'hbj,K>a&k:HRm$42VS7B]$8-a^i$FU"=/H*WTeS(C$QqP(G3Lw]>f.-N(&?(fa4.nWB5cwLaX9lxXjs9w9H*uPR0oH6Z:*U"*=,-R&&D<3mAV$YSa[D>(,ULK5Pq]f.0S[0fa6t&y-&jta490E_]%nrhMXaknYzU"DQWq[';r*2q:PxPA5u$ihF<p<ECc(iK#j1.CSX8B.*BZ2AnGk1%L:KRL1BVg^WeU"rU,ZX.J(SPSjQ]AX_G>e-SfiUw,?pA&uZL#x'\0am?r>Z/_jQ_+3I?o5ikfl\6#U"PdU\%miZJUVX'^FcCuQ[rh/:l31%Ixi?nz]-('R^_^tZ_jyg>kak7:lM&4If<5*U"hOBrpVNszvLN&TPo2pBXvnYz7Md<2kj^468Ht>9n(a:dCuv)$>W\G$8:dbW&?PCU"0m*D3/,kDkdl&\fD-tNdZ\&wCi;kHFJsXNgIyb-u&HX#WitsqX6ks'p^qpA),aHU"gE=6^f)5Cgpon,/SpDcn^m?g2<7>nC$>\)Y4<1zn,*'aD)s>+sW8pQh&>9\WE(gU"Lwp]ggTnOtvPW\m+gf)\yN2\S)VJ0c4ww5nj[([I*g'W4\Sb3+%5/jylQlnqcTSU"Kr[:BE(qs.gegn*Q/>[jc#bKTHKu:v9h8s(*aOj+=b+DR;L_D/iF#VscPt(b5F/U"Y;/ADWac.m&.]cQnbkfvP&Wnvs+8.QuY=4<<9,Mb_a?psF]rZl%8?&wMJTXywehU"LHiXp4jZ.p^h0_jW5nGb0o^E#crLBp[F<4ob7gHi<<_Xni\<BK5/FFTLll0i1gfU"L_8Fd-QswEN,.xcON8:1lNumGGpSJdeJVnE9KoZFZl5jLrQ88N*3XfN&%up()%9U"%%%%-%XL.pE\u5)%=:7%%Oa%%%,%%%%wf%iSgfFx&$NYBSAaux4CX>p\D*9Q-;4U"R8$RD?/):V;><i'k(hJnGy'+8(%lJ2hv$[Br$JxWj\1ytpK*PV[H..)-\V0zp+rU"bglbb.LfVXcwrp^xr?\4uB^Cck;Qbo=U(U,hLS?g2QE8xe9a5p''=za9ziez/'VU"1\9?4#Ct-#Ji/u^7ST7+o$:e;(ZI;-S(%qd;75C?lMC2l_i:eZSp$lb#x'__p'SU"UClq'](ii_/4j]y%n1rl:F1$3+h*QkF/sB80)C;Teh7'wI3vyQmbGW?-.BGHI*GU"cel7GiIu0amUU9>T^->(iUMokIQC+x_Ni706:y9>&G5%Tf)3C]9:';O;1#8IwQ0U"ST9;YRjx(sQ$Jv%T7)6WCHkjfTxXO$\HI'P1<$Ce&JGoKWjc36k1p=YC--xT*$bU"4W<9TSoAH-Y&(+KKA,+8#UDWYH'H2J'776ql:8$?SM)-c:nf9W2-2='z=N-cWQPU";Kr3nXItU[GvApCM[uK8,820539QjE5w&+1QsL4\=iX\ZPlBl4jX?G;'W^wg+wiU"AfEM?6Y$dD^::sjbk<i.xcv(OwDLn4sEPJil+GHM*6]W#u(bwgZARm^15,<4?[$U"KNFdy-pmYsIKQ'N':isWv(Q'^jHVK+zrauWq;A]7X=4%M.WU:lpg'L:P-W/JnEmU"'/h7YVEyl9(e9Qm^$cW)$q#[\gWci5<Y-'.O#rb3b&W_*'R'Fya.K7Y%mIJY'&(U"LK<foS5,JZk?$jqmr(ZAn6rU:kRG.H,AqtHF=lAqyl#p4.TDwJ\_<IVIjAd$.O/U"zd%%*st,.6;LY17R%rMEutL\.]6S1bfv*bhgTP(NAov:WaXIR##:iBQ^D?<JPKbU"fVpS.OH2s6xKxBf=\Z%j1='fZ#'jjGlGA?4%./AF[+h%E'>.S1=>&tsH(liHy9'U"LOl%Uh>v[UFB3ToG0caurmduPQ6x>^lG=;+r',0],(u#sK1.BYoatte^0h/y:E'U"Cw=u1S6eGK8Yk7-B$SNa-ImwoSvkoc.SH)TCJ[_,oqNq0[ta\LTg3#w,/^TH&m3U"<D;aE<W.O98Vi^xsQc;:(n*ry'f9etj&NChLl3%%U_e\&L\0LKy>+yf+[q(;tmAU"L.Fh_pTEfmrN%-HcnI9')3wn/pe_>tY%A0Lv$qdbXt?K'3wp^MZ8cd2<r9.4h43U")%)>,39G:ZgeWL*racc.^9GFKq7QnQIu+I6#o.>#=Q^UpM\8afKTITrok2S-A[pU"yAS^7%OoOAS;=N7++P*o$x>J)m<Yeg9oBsmgU91v.#niEf:4BJ?a0<X:Sp$iz1eU">Dft,qi=h+Cdgevos4sxc[3Xcu:qD2AX*uE_1vCwDJt]5)bGgM?t(0+(STHLfkVU"Qk'Oe\9;z:SR0o2CalhStv2IJ?QVr*Z$k0e]V^EJHMYgkpphL(]RgoEUoIcBh\tU"Ft*jRpMLM#6kSy-[F;i6#ek+$,Nh:t7Md;4EoHGHMOEB;O#[%O\C#6n:W4.JYhYU"hdA<;rZg[oZS#l\C83w1e#4jxzY$_Vil%*2/Zdn<RAC7]RUKMf.i;>lduk>i_nuU"Xa7H'9L7iM0AN[#e3+R%wY(05SKrqa[v(fK^\'A\L;xg]=7:PcX<MkFq,[U$c3=U"RM^;$Ua;.+FKRs$0=w8Ic:h[8a$uSj7Bo0ol4Xqi=%H5oHv9346[Ylf$xuXbW:RU"i1q(oZ5)[U/^#=cr6'oAX*\-S$VrWspte3D$$Q1R0U,A*mc[k*7s3*kif)4f)bpU"T8q65W+M&6CXZMBs*M2FWjGi9v'-0LoRZ70L<oJ/Uqxj<r6Gwq%Y;v9Hjl\-'W>U"hSNUbL*g\34EEbXwu<l(Kme>e<DR+qILC4qqG30?CSV\vNWmG0')U9C/UDv?8X#U"if&5-nV,$\Zv(^\OkdV*'8LNg?MR^Mjmr4aCt#Ow.O_IMn)o<tddCDc0cO#dl'PU"cY3daC6dmioFWOKX&SA:/U5>63XGd-\_p4_FdTEm'>feS1,7=O+f;ZQ=8=<(82GU"Z\;D<;CHfeo6N>Z[MjkWVi;q&bK4rI-BCCs4b-V$>IZn9bSVnS3COEVL-bOAzQ^U"$Y1YF+hM0%V'qfE84(HIwvPXk;DNK)C7wWe>8bKK$#pvlx6T?P51NhVR7Ob>l%YU"gcl2L,4ojllGdV;>W4BNFj,,hQibGieeJBIPN\-=KGRW#Cp6DlvVfJ2Mn\Ev:sTU"688%SQIB1_IJ)Alf?:2Mq3[D,'?;?E$/I7W'Na8Pt)<c2s)kZ>NaD*2HwVs]6XtU"+8a3^G>QKf8sbuv7^a1C(3>44%c4Lh'a*3\4>3lnF,gi3.T5HxE&^LlKJd-(=8CU"+BI>ipQ\dU.0/2N9#o-sX85:5v)3VlP#:Jc;]boKs:OqaWQj'RZn8ep>Ogzb+qgU"v84*mFvgFOZ]zcs:bRM0BewvkvTd7Ay>S+Oxt?DM/h9%,UNOs0G$P-/?U4'%fe*U"7G;gKws]+u.mN0L><Qc1$?OR2<BD$:ITG>9_U%%'e%.>xtD9][::ilDMeqwp/:HU"et__XToHBIfe)3ZQZlb$CJPAHgy.8T7PT)QsS.^1>P*9/5PffmMmF&'qCzm/q[5U"l(?_M3?iivEpsDXs0nO>1fZRV8f[2g[WFhvQ+T#>UwzVy*wOckNq0$QSW2KVHm-U"YTDI3jp7-M]mel91K7n>C0M^j585*?AB:NC&k#Z6LFV#wj0%)0fbSTv(BblmHOEU".)K;\$[NEV-At4)18jjSkE>:]*k^&AhfPceB6avR?Yr73D4cLGSAI6OW;iD+HOxU".Bv7v-AIo];AbnfV>ZC&H8pf6Yb=FE8tLiVrLG1:wZ*JO9;;Apw^Sx.*J#Hk#COU"<f%MnwiY)z4MHD<#.o$2Fl6.C6x5LJsdd?oEQBdg>3[9f)d:3j_iFo.d&%Nv891U"IWlzn]2eeVB5E7E.O1.GkM15[8(#M_IdDf?5A+:yX4PV%(DC9GD8>2pdYJ??jnHU".3epI'+$0=M_OO))yXzvI9A%#RDJ9A1yduNo\f^wT1q1ea$au>p1Ei+>s:a\NQ2U")X_]=H'[Mg3tT-8$PKM)Q9sIV-(Pu):IBdgONYc;i6OgMbnK78&#ci)(r]-s-lgU"'Ex*2.1;<PUI1I$SfH85nQ1rpy'SDs7('nL(I>zB-DXApYX\vC1)rrOdM$uCO;1U"m$JQQU;aDw5y65xQeS/(OSwN7F,yKNq:2T3sI<_tw\[*I;A30OK3*4'n4FIS1UFU"6%,HMFJ>AljSuBs/O1fE&1Rhr0[p*oW^hdwO/pExenV.)nT*Mn=eRcm1+xrM_];U"]2J?C+*<w'*/lM(2T1j$'^1w36J]+)I_)tzvx.RZHQ'pcM5E,2O9/h)]ZLkgPJ;U"PIZGfrsTwtdkK'.?xo5Co-7hdC=x)tn]oM)$s+BhpA_-gq7CnNH/Spa\DFdXA(.U")&A$5<u#gCO(s=Q(.o=tx=XdEi(]Dx,Ng[>GnZHP553<S09MHkXhaP?.U;w*)#rU"k[#/Gt,g^g#ra#HBKSRa6E2gV6nZ)]<w56q]M0\8wtB#rF+#W$=N^N8YJZa$unuU"gnW#],iD-K^]h:\7Oa;3$9\oM<is/g<.HsC,SoRf[vTI<ksod&(M*/[1Vj1_IFjU"(rFV&V:NOABi#g&N8W4Z2?qR&bonKkBKoi7aDlRZPB%GcCCh++^,N+tMG>?PhsZU"'Y-m(1g3yrlG0c2hp1A$Pp-hpM]*U0cY<[Y9q\)m':s;1HUFx37[a^l)j,HYB.=U"4L$iB]qxk4M('MUlF5MU^Ax:>:F3Ttbm0'._tU5$STpW%#nJ2?6EH?+>c'Gtd3nU"vZWiP$c66U)[tWd^FELwsl..4$,]:?D3Z+9Y6aV,m=ZWbik_uZZ:^A?)6t-G#U>U"RgB?b'WRy#&xyHs9uq'/LdLQrYr&-?lItL+&pwLGcF\94IAz-UA>wlS(qWEmmo(U".UU#Cr\Qlac86CKr'KH$Lv4?94AIIl;C)_2Mce,gdGhTE<'-1VM$,ZYh-AbR>MNU"Zh&8Fg#7DP==t;K+yq;<sCJ6W(OL?S)dU,ln(Jq9]8&^b(uSv]8vs$:+/lF%sAiU"wOlePVa,2s\KZfXFOrGk]/kHA$^\<'9cJ<6T-(HOsF4Xw^.eu.b1ux,o'32[B$PU"S9]kXUc[:/pHy^mV;CmIP2G,SbpwRAlWe:pBWmlbCkSS?918KD>Mhi9jzOE>x*\U"Ybs?W7?I'k'''p&^d']wj(5V0li)F-ek2&Y5nIK&NE#y[:,kq&Jn_;UF4M:<A6jU"<]n$pi94>]m[h[,qYFxr<)TW<<:n+x,V.K2.uc\(v0GoRet,.p+)>2Q]I=>uPdrU"g_TX;)uQkYDI6xdG1[I?YL:;rfF7)=<m8H/fWow2q5_Mg_jRS,xQ_23[\SWJH3$U"3-gSA0]&'S2QaUu5EA+n>02^z5ED4M<Sf3iMY3Wkpk[.78Q:x>JW6.C>W']X.myU"uEFHot\wPVe0f%V('QjHq*AgTg:Rg\&fqY1s<^T93l44Ub.#_s>xX:7;7Bo.:8SU"N4-fHTX->EE*8Lr+a1zzFk.kd>92NE+#&=$D<=*UH>_QX?]E>D/n>#.1MAs?#DcU"eDRhUvi&aR*ws_(o?cWOX5eBd[6IY3XXme*Nm:mN\O5jnoE6Tn;vW_jrvFv(hxrU"Q2SiqM+]v,G<$H_u;dwtTW^?k1FeD)0:p'4LXa%4HN[Ni$H^/o]sx^b4xmu>n];U"w_U%eQI0oZLrU8P)g-a7k;7qBC)dmI#M+2F0FJLrlEC7J4B)lWNV=TFEP]8v&r#U"/B7_l9b,&b_(A(<\>,Fvl;xBX1<*3?C]DAgPKmKjlRk.?dq\<b.uTGh6U>MPCrOU"\+tv,;hB1L4>L\;k\[rlKDA2ne4)pdb?/D%FfkjZL'RJW#E,m5QD]5=REagl3;cU"j]eH/S0=j[1M8P29n[[sKkAgjQG$k4=Y\*]3VR7E\?cb]adWDu4=&bnZc$-F8P5U".2.^CN^+,0q&_BJG0vJfYWjr.:>u48SPYF6pTC]CIs)[:zhpbO&tiJBJnI\,v_gU"//f_CCk_-sqEc]TQgeAp+Tf9.cs%n<1:yHkog7.wKfBRUU\<RoP(ll$],isMZQdU"-LcFc)#<KR/jDV(<M6ZF3PmLzjDv(znzt?\_bYS+[S%Srbni?L)Nc4oobvMY\O#U"jP>:MelKM-Dv0XVNN;sH1brEwZM1NmZJ-FIV[WfxS;p]ObXM6JIuMoEd8#IUua7U"RC_xQ+P'MRcZ_E$DD?>)TFsNmjJFgY/$29jGk#remn?$.WUb)Hl#t6-wU/x&n=\U"7cSA)z^c\n.^I$[Wrs?G_h>4PAh*U$R(S<8jb]oh_(a]D\IBBEk\%Q4$eTw'nM&U"Dln?bZ2wfRtZK:j3KMDKM;,=NR\7ZPRJB'pb)Rf&KR:ush1p964uXsCD/ivU$hBU"Es5U^^EJM&IOf8G,n$g<CqG7bu\D]wWKgTqkWoip*>=3p._-YFR\4EgIDH;4ADLU"Y)2/8#&pu]c<v9P_+lngWZ$0YM_ygd_'Rh^OjS?uC?+*i''WwJf]Xpw[2srrMc<U"j=O6V8b'BbpoRJZVqZR7[76s[UN&Y0K2[d?Jd)u=/QT]GvzEN9lwHSeMeG6VO*pU"[EW%*hU\xO4]Kp&,NK*-\Z<wfg[$OSX*.+^^bUsQ#J^T2KQ?cmfRj97RkF.QN_0U"mqZSNMI,2j\/EK$d_]Eq?mAk_ERJRv+pH+LdH$o0W6N;tH(]y#^Mgi*CSml:K1SU"'TH_xtdn+qPBzo\^N=fWuj2Gj&nt5Qs.LlPIK7CLb9zOnAErc]Ee:+1xtSKIURsU"D7c:.IY^R5?[22--:plu1?\Q4rNnx/EfbmVNgv;t,A#*YK'ib?A'ANaEXQPuPWTU"<j]hjd0>_b0;ikk;wOOlNih5]0toHVu%bkwG<LToh26Qr-1eND8xjns*7fl<<wrU"t7Zx(jN8;.?tS*t=Ovr/we((kpxc=X#7we)zNp<R06E4,Ae8Nri+XUNBue]cd#cU"L/g;7q$07It0QKBZ(&bgI>D[;]J/GEP)Wl5V6$tTF%LdI0%hWdI]kGXd#aXD>18U"W[xuc\iAAvQtk4?q8C?WG<tYZi/P?0lisaCWS;m$+WBc<Da51xSf+>-_Z2WD6ipU"Y-IW%2Nvoh37jv\5)D0tEp1<d#SCXtrT*aot-mFv$b3,]nrLgIqsYFJt?oKAJ(oU"<rfmA)3t6_NWfUzJ.two_')qzjjC\Fz*pRy/25zE9vkhF,nXzp-6SB<:Es/B]==U"_r:nWY7wT:fAv0TaSwk%xg_$(tAlH&;oRhacGJ5NA*jkZ=^/KNb%T$I.GKc\vaLU"$/qGYg\F?lefnaT2,zgn8+kknR/v]pY98pJe+bA9Hqc]>#*2P*xCTeK*:;$2W*+U",&b*LEX<0YWu-;eMw9]kJ*]AZs;AjVgLdht.H[Yq:f-u<E]riPvG_4w\bx$-iTvU"tI3V6GIb9\TpTvIM9hip^u%aP0OJ\J4BVsJuv=2BQwl_vrG(WkO6E/.=v722bisU"u'Fy]x.T7*3qhn238-aQo0p[&XL?Rn3AIz/\uooNfO=L2smpd=<-.?L*ZPc/F/TU"/F-P(U_de1^&?V&7J,$VLYS]k71OTBsji]lK.q<12MYyasd:1U>Ebwe1(A.=(kHU"GgeqpgK**\,;DET;baQ4VKS0Llu8SB.J6_HrkmOl&N%b7],hqO<rX2T=Rt:3B#\U"Ud(M+gBx3mv.ERg_iz7&1MOrx**m*#4mL<x:(2(Kq18$3XqLg?b]1/AdHobMczTU"=ZM=kQ(aeV1mN:hg4.#p=Fv6>,w;t3(\&M_u$\ePP%Hg?oxW,E#_L:x^R6lRuHQU"o'%r\^p\<wLoM82MXd6d<5Z2EMC$ig0D+U7FpUl8nKah(%?3:2BRc/1ylHrO]_[U"66dr..<<MDu_L\M^hjpZ9DuN+C^8Y/iDY]3q/Ry+r_m<SdoMKq%\8$r-c^*GhKcU"=gYeRthc7B82Smb0Xnf&$&0?M/6?rNu%p&'9%%9%%%%-%NA,qEP&VFD^[,%%<%4U"%%,%%%%%%%%%&%%E%%%%%%%%%wfi%Sith%up&'%9%9%%%%-%)GtZEVRb_u%>(%%U"&v4%%%,%%%%%%%%%%%E%.%%-,%%%wf%iSif%yup&%'9%9%%%%-%%XLpCE\u)*%=U":%+%Oa%%%,%%%%%%%%%&%E#%%%k%/%%w%fiSg%fxup%*+%%%%%(%.(%n%%%%TE%U"%%%%END SUBCLOSE:IF S=231AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBAaron Scott Zabudsky           GAME OF LIFE ALGORITHM         zabudsk@ecf.toronto.edu        12-27-95 (00:11)       QB, QBasic, PDS        73   5211     GOFLIFE.BAS maxwidth = 80maxheight = 25DIM world(maxwidth + 1, maxheight + 1)DIM result(maxwidth + 1, maxheight + 1)FOR y = 1 TO maxheight   FOR x = 1 TO maxwidth      READ world(x, y)   NEXT xNEXT ya$ = ""WHILE a$ <> "X"   CLS   FOR y = 1 TO maxheight      FOR x = 1 TO maxwidth         IF world(x, y) = 1 THEN LOCATE y, x: PRINT "@";      NEXT x   NEXT y     FOR y = 1 TO maxheight      FOR x = 1 TO maxwidth         count = world(x - 1, y - 1) + world(x, y - 1) + world(x + 1, y - 1)         count = count + world(x - 1, y) + world(x + 1, y)         count = count + world(x - 1, y + 1) + world(x, y + 1) + world(x + 1, y + 1)         IF count = 3 THEN            result(x, y) = 1         ELSEIF count = 2 AND world(x, y) = 1 THEN            result(x, y) = 1         ELSE            result(x, y) = 0         END IF      NEXT x   NEXT y     FOR y = 1 TO maxheight      FOR x = 1 TO maxwidth         world(x, y) = result(x, y)      NEXT x   NEXT y       a$ = UCASE$(INKEY$)WENDDATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0Andrew Jones                   SILLY GAME                     FidoNet QUIK_BAS Echo          04-14-96 (14:33)       QB, QBasic, PDS        70   1676     ARG.BAS     'This is a silly game I wrote awhile back.  There are 20 or so big dots'moving around and you are the one that is NOT their color.  All you do is'avoid them, each time you touch them your score is reset.  Whoop.  It'd'prolly be more fun on a Calculator written in Z80 asm, but oh well.DEFINT A-Zdie = 0xx = 0yy = 0RANDOMIZE TIMERSCREEN 13DIM bx(20)DIM by(20)DIM bmy(20)DIM bmx(20)d = 0my = 1DOLINE (xx, yy)-(xx + 2, yy + 2), 0, BFl$ = INKEY$SELECT CASE l$CASE "4"mx = -1CASE "6"mx = 1CASE "8"my = -1CASE "2"my = 1END SELECTxx = xx + mxyy = yy + myIF xx > 319 THEN xx = 319IF xx < 0 THEN xx = 0IF yy < 0 THEN yy = 0IF yy > 199 THEN yy = 199LINE (xx, yy)-(xx + 2, yy + 2), 9, BFFOR t = 0 TO 20IF bx(t) = 0 AND by(t) = 0 THENbx(t) = INT(RND * 320)by(t) = INT(RND * 200)bmx(t) = INT(RND * 5) + 2IF INT(RND * 2) + 1 = 1 THEN bmx(t) = -bmx(t)IF INT(RND * 2) + 1 = 1 THEN bmy(t) = 1 ELSE bmy(t) = -1END IFLINE (bx(t), by(t))-(bx(t) + 2, by(t) + 2), 0, BFbx(t) = bx(t) + bmx(t)by(t) = by(t) + bmy(t)IF bx(t) > 319 THEN bmx(t) = -bmx(t)IF bx(t) < 0 THEN bmx(t) = ABS(bmx(t))IF by(t) > 199 THEN bmy(t) = -bmy(t)IF by(t) < 0 THEN bmy(t) = ABS(bmy(t))IF POINT(bx(t), by(t)) = 9 THEN die = 1IF POINT(bx(t) + 1, by(t)) = 9 THEN die = 1IF POINT(bx(t) + 1, by(t) + 1) = 9 THEN die = 1IF POINT(bx(t), by(t) + 1) = 9 THEN die = 1IF die = 1 THENscore = 0die = 0x = 0y = 0END IFLINE (bx(t), by(t))-(bx(t) + 2, by(t) + 2), 2, BFNEXTLINE (0, 195)-(score \ 4, 199), 4, BFLINE (319, 195)-(score \ 4, 199), 0, BFscore = score + 1LOOP UNTIL score = 319 * 4CLSENDJustin Pasher                  LINE & CIRCLE REPLACEMENTS     FidoNet QUIK_BAS Echo          04-14-96 (21:45)       QB, QBasic, PDS        83   2120     GRAPHICS.BAS'> 'I need an algorythm (sp) that will allow me to draw a line without'> 'using the LINE command. The code below gives you an idea of what'...' Here's some code. I converted it from Pascal, so I hope it's all'correct! Enjoy!SUB Line (X1, Y1, X2, Y2, Col)  ' This draws a line from X1,Y1 to X2,Y2  XLength = ABS(X1-X2)  DX = SGN(X1-X2)  YLength = ABS(Y1-Y2)  DY = SGN(Y1-Y2)  IF DY = 0 THEN    IF DX = -1 THEN      FOR X = X1 TO X2        PSET(X,Y1),Col      NEXT    ELSEIF DX = 1 THEN      FOR X = X2 TO X1        PSET(X,Y1),Col      NEXT    END IF    EXIT SUB  END IF  IF DX = 0 THEN    IF DY = -1 THEN      FOR Y = Y1 TO Y2        PSET(X1,Y),Col      NEXT    ELSEIF DY = 1 THEN      FOR Y = Y2 TO Y1        PSET(X1,Y),Col      NEXT    END IF    EXIT SUB  END IF  XSlope = XLength/YLength  YSlope = YLength/XLength  IF YSlope/XSlope < 1 AND YSlope/XSlope > -1 THEN    IF DX = -1 THEN      FOR X = X1 TO X2        Y = CINT(YSlope*X)        PSET(X,Y),Col      NEXT    ELSEIF DX > 0 THEN      FOR X = X2 TO X1        Y = CINT(YSlope*X)        PSET(X,Y),Col      NEXT  ELSE    IF DY < 0 THEN      FOR Y = Y1 TO Y2        X = CINT(XSlope*Y)        PSET(X,Y),Col      NEXT    ELSEIF DY > 0 THEN      FOR Y = Y2 TO Y1        X = CINT(XSlope*Y)        PSET(X,Y),Col      NEXT  END IFEND SUB'> If that algorithm for drawing lines is in ASM could you convert'> it to QB and send it to me? Anything for a circle?' Well what do ya know! I do have a circle algorithm! Here 'tis!'(converted from Pascal again, so you might need a few END IFs.. :)'NOTE: This algorithm seems to draw the circle where it looks more like'an ellipse, but it's sorta close to a circle. You can try messing around'with a few aspects to tweak it out. Laterz...SUB Circles(X, Y, Rad, Col)  ' This draws a circle with center X,Y, with Rad as it's radius  Deg = 0  DO    X = CINT(Rad*COS(Deg))    Y = CINT(Rad*SIN(Deg))    PSET(X+160,Y+100,Col)    Deg = Deg + 0.005  LOOP UNTIL Deg > 6.4END SUBLuke Molnar                    GRAVITY 1.0                    blood225@aol.com               05-05-95 (23:34)       QB, QBasic, PDS        113  7443     MKDEMO.BAS  DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"MKDEMO.ZIP",4^6:Z&=5311:?STRING$(50,177);U"%up()%9%%%#-%2-\uE$x,wNl9.%%Jp%%%0%%%%lw(f%ny&(SgfFx>a,SF?2arhkU"<Dtkt34>dU]?pKgiZf(Ub2#p%$;G;E%mXq_EZ]URe#prZT&s[_7eZ8Rv:ip8N<;U"yswuJNek^,hY^8B3yzy^OdoNMaYRNuth(p\&SBuU0[HTjlghQr;L,Ws%1V;g:F+U"[?:hiSE)Wh=C.[b=g,e/UonFlr;f3pduxtnwsI4hYqzL7LleGh$\Z?5Q,?H+cSVU"2j+0_So(Q$UR*Tc0iwmD];(8P<1e)h'w4f_C.:WH>YwAM17^kSe/f7vF/UpLaG[U")zDEIDAT-?gMQ]GOseVbDb9B/:MOr69wR*f%QbCQ5ek.?Rn,YA\>jAR48jh*WUTU"N%:X80JD^hi,+6_o[6uOpPfiN,rFE19+9j6mfZ=CseB#B,dllPcSaM<A/CaO^tRU"3UPaG<Mk9XN%$9+B>wo)($O/J>PjygZ'?F\]QN*)N_-isAq)idM6a^Sject6R'wU"lJlRG;m2ai99[[&j]aS<YkBBZTZnhw_t$v8xfq/n8jIe_n\JO*X<9aUx61^1.-$U",V5rPUph<XRH)3nnwf9R'jM1):j-DY-Jw9t)bXfeYy[W_?Zrit(k#tr6oq];HP]U"fr0bU/#i&ET1r/Y;*]V<GMw)E)7v3QMT'F-r7+JN=Rnu_oZsV[hzfz4+26jP<73U"'raDcp*tAo,t:(c>6?f95uN9*VBH4N_MNrGE.XSV8NnTt;gn:s+(Z4mY.tNI4eIU"s+?MXXcFUTPH1o\qtB+JL3d9jflS10oM'bnPoiUq7nW5SP.6oOSnWo:uh*:Hn,-U"22VZxEtmQJWGB1t>WOy\A58o0aJOVJoWG;4u9^7u_K_cCv7UAF+L<RXS2K'6F5LU"_t&o8WPC5O/Hu\^$N9b/M,e.dRVinKe-b2?C#^IesxvLJ4ZtImX-G<=5M:4N=J$U"+P^W,Erwi7iA[0s0P\>yL,$,11e;T=H+Ff5M+_Cn_H:sR^d8?Ko.)4H*9u#KUQ+U"+F#NuS\5QNgXt&qHZ^ZkYYs%Wi9N.?t+hrxLqb:2Y6mG4QWacOXY4%wY&iTfitiU"9+7p3NFgX?cQ^w5WV9ea/v[Fn'^vi1o^7*D8yM6=]9QW5LTl1ZsC9M/4?2II+lsU".SwJ1&I^oWb4[&(JHJ*-xT#adHZ^eewtx5vYY(x<wnJZeZAc]D]b5IbuN&+iCXlU"vdzEZ>(gX2(I[<^aGNdycPcc?l:TVIfLA58Sj1%+H]j-9>Zs<%pD)7H3tLLz,PmU"DSK3&GgBqGCEgPjIS^.FR<7M$pg+<FS7[5Sb=p>uBq8aLn)SZP]PUA6L#KG%XS:U"1Fabw%fj?-?E_DvZr*Pyfhmg%MxLeZ?rG%_>Ld5KC_(V<m8>WK6LQWSS,F3sMI<U"Q6Qhu'HDd<d#2Y#a,R8Zhf](MtD)T3R*X;(kfm2Iym1]NBQ]T2Ve;O+aB\V6Sn)U"UtZY=HS'bnGO-FA8A?^BsHr.GM3t7.MBSvDUc$CX8ZMeC7LjIT)7J?f=&hGBg3EU"7Y;cY.r5]bd'[(vTrbArLZW'CTCdnaj\lh#JMWJ'Ai2S05#.a:lY\4PkOt3wB<%U"px+LLjS'6PF5HTknR(PGZH9e.P3j]c6uuI'LX<U:ceo^S\AaBEhoq2RN%)Nwd>4U"*qLCaVyeccMK#pzZitwL:^Jo\R-AF_m?;?dKx4u:*B&R>?J&HU=l$dlfQfUrG18U"R5#elD-*5<^=jC$E-CmJw:Yb%fa16rpC8T$3USSf3kn<=Num?P;7#n4#6zYNYD#U"n*a3nt[dgHkfXq*A1Hku^*OOXFS^BpWt]7D9%4^*aXyDM/D8952-wq?A#_Tg;p:U"w3W#ct$Tt8O5HR;$63Fw&JwCb]&=aYqzoRU>E=#KHbl8auPNMfKV>[y-ux#kx$QU"3/*vL5vSy6_w0Eu&m0I/'uW23]#qwF3?+t_9B][cd&kVb-1T#aAzAZy^-l13JL]U"6]noC?sAg3r[q2X)bt)<m8_pFlejK<Z0$,6:nq'RD:^mNjx_;%r=QD:HQkFM_f/U"YDU.'V9ov+0ZmP(:X_d#WaW158Alx:)8<lU1XB:3FW>yq/3g[jnwt$exCQBS/_4U"mX1-,U:7wI::$#mJ=+m'T9(LC[tfP6g);O00cGv._n%o[-5>=xmDv+wp5%6pi-jU"om>EWgK0ow<7#QMtx/sItB-Sz9vD+FmU,Q>M+B&Zc>1tdX$1gN7]T+[Z;*uC#DoU"l[Hd&Zvfee]LYPTuJ0,TY=RKpMC^Nq1yyJH#m\_^uka[H73dh#D#MD4_MsZ^rJ=U"CE:/8%pQfOfzDan;L;B<Th)hF1r<RM%OA^CiCGUeEMO*NF\'[C*cG1-brE16=*SU"\TP4hf.LwsUgl^lV\W2jl1SY%/YA2So7+>QcR'R]]>,/\I=F-7W-&5Jp+6n3EzlU"ft7h_.R0Z_D\cf]S3F:f/Yn<dr^_Mr2-oSPn[<S,vP]oZx0<\f_p*[8?.TAgT+JU"fkoA8e#HZMX:pH/&\0+2/T2G?k[o1mJP</D7Eet,nq0c0Fk#27=Eei6Y]q_j/vAU"Mod4?;c1ISLI95XJ)Nq%$2s_e3=Bxd,_s3SX7vJcDQWett+\:Yn,joUsa&?&6\dU"F(+u)?yjGM.(=L3L5XTCwaJ$WE#=_jO=]gXYM?D(SUE<C4Fj[\;(WR79C7[=\COU"?mUb-W^%O'F8nGD*yZ\dQD]n.iTfSriT]q/d)lyR4P&bPuuEE7QVNS5.2s\R$I6U"s-1[[2jxs?81WlWKWKqOYHi1;Ukpj\eu$Z2cLL3-R]dn^t:7vsmgLsy(F,<^r%-U"CZau[fp:N]xREL8REs7wPpGfQW)lTer.rP,8Gz1HdNter2^if^t>G,iRr2lK)?SU"AU#Axqu?Hs&DV]W2_xG?1V(WGu\_>Be#4BO.1Un;g;w$\U:5L8qo$)?k2t'2P-uU"hAl.8\6o+__]a_s[oKSH&5jOg#BF]8t6'qZXhrOj)BjNVvog6vn>qLwmfXptIBcU"IeJV#CBR4&VoBqP4FzOXTo$M*>r:l5W?vO.UzVQYXq#^'.ns+ML5fB[d*RmadqCU"cb\,BUr/TU/>TU/>D=n=A)#()mP495oJ^tPb\;e,u4]QjNKpTkx#9GaF6'-ykc\U"Q.uXP_cs4F;7[:qcMuNFmv+UFYW,Up<Qz0'/LJ9nw+89dHDfilsPTth*AtbGe/VU"ZA\i2%a/aPZv?_X7dwVU$K03n-Rc?a7cxVG>wGNW3(gmue;H,iHiIW^*FApdZ7XU"cLNnquE?E%nmt5&VEYiZ?5Cc.oqInWZChkXvPA]e5i^[iR#Z1ZT;Ys+iKY+VNkDU"\b$RrQ3M(UYziL.WpzD7.ytMI7$s]I?0F=SbxqA[Na]I?#lbm\e&KR52?0WkG2LU"X='_qg[x%bE+flniJPyH=P0OdP=;etcG-/<NW';f>P60kus*t7XEC=$4CX2gEcHU")e%<emZ:DHGtLkPhQ&<m]TSZhW8JhgvIe^C?F^,6f&p>li3Tl7?M2ssr2kO.4WTU";cn.>3u$pR9S37GR4HgX]^D$/b^S>w?M*Vd'1c4ubz(V3u4uglslplo\WzWu&xPU"w+Sys3rV,wqCC_B1LX-FqSL_B?L4=XynH^BC*)2%9^GPWh\];kRj6+c0JViG.3MU"cy9FNf\0cO][sQk^]kqk:SFFN*WvEh9e:[9IRKSEK[i>0vfqDog;viqrq8Q1RIKU">LQA$7jdlBg7OqNMf[PnwI7vT^LdxJf5,5d>E[T^9*mW8R?sWQt'Rox[rLc^K\vU"4gl_'\gs9FvxBj%5tTR?1:tcpM(D1F;Tj#9pGC$fSO:>_xK,8Z._SD9?#/lf<YWU"eA#>xMzYZ\Q#i,+N+2q-sSn4,dSad%:BVPy5T:U__esfU\wS,D\%yjGNLW/6D8]U"r&K5C=d*H0#8'iezOMGPzYq-c9UedB=^A&.-+&*OjE%K]_$a&t&SY<%]o*'c;[WU"E#9rr=#/Y4,O,25w8].Gw>yZ9'.jw3Vxa+Y,mkB1qo:D:u4%6fr^/OWVjgCrQzPU"d&xu;8fEu7r.D&V.oZu)R\Ksb5H$%O'o1OQ*n8q)[?c;'?:Gu?K_cMJn_%uwfIaU"K?8#BKydoau)1mPagqptmM,Dng%l*;r,cFQrkdE;SiY(&E%BSGP4]7.-UvOQ(PJU"#k\/:D]Tn'VwRoR(Z(m>63lg%rDY/ZuaRU>I'7MV.[z=lIi2ea08V?FhN^Y9_B0U"N>Vz2rXA*hMLA/Fj1FJXG:[?;(Vid9q)1EtU:ptY64jZ%sE8kz<j0ht:6U8C$$^U";y)?bvM*[/7HhIAXmZwA/TyxHV?#ZA'7x\40NcPC_XmK?&QX70d3toQeC,yqvdHU"^qF2YWjxiw>S&PcU&b=>MSDM*e)$+.&L/'R*V9$9&>%K.dewl'T/toI7Dt#S2?1U"JLfo):&<J\$fo09JQ_8*Z,72Qx)FqxFYdT+Rm&r_)UnnhTIBd\q/Jn'W\;AaUN'U":Qf/90U8^6n[-aX(VPjALP?W]=9'e't:<Wk72+-?2;s%CN<_egR:a3qWo%#ZV*xU"[a910mc\DEM48#'chC7f)''M8M:?cdd5dM>*=7b5)-/Wl+f12tr%CyV>&2bV''#U"'nmt\=35JJP\'[Db[hzeD1dg;YIEG5?f1NA*z^9Xy-ln_yYLJ/0zV/t91>RIhBnU"%,#i\ah?;?q=bN,JpFo10Q)NT;0aC'50a,Z*<ndZy;.'j<#8])b,r3_7nS(3;T9U"OrI3RZ4VN:W>9In9*#e^'B$raoSpQ;9#dq'X2c\]TyS]3g%GQ*qoU/:D#<APHF2U"b^rn]hzya:m9[QE9?vqlo9)ch0V>B_I5OS<5wu6r/<b?]Kl>awEr#p;82sHy;g/U"w/[[)h+'8K#<EV^=0,HfJb\/efw:P1L_:YzcA%vnCCXb;I#('nJ(B$g,u5;.EMkU"Gsy+GAK*&U*A9;7oUiLUoz>%sOd3EWP%%TO8N#CEa$tM^75e2Mm.VIf6ss9%,_-U"QUA1\f.(tEk&Tmiw#PL*VTFNqQ_J*bXLyHvYqgN#>/zz\.,C5wX[sO]O[ZKBm.dU"YRK?>.D5QB<7W16ZIC6pc'cAY;;#d*Mu[0B]S8J-PZReU[0aYX=76+c.FeM1BY=U"bsip^]w=VI\5_,932P#7NTlS/36uIf1qy-UqcqJcd[xe;g:khda(EB[gPufUu3<U">;\VR:COaf9GGtXY:2'MRFFsc=V;h*w%XB^C'(tb)Wgz'RNCI7?4mo7&fF3#v1.U"P.)I2%YAPf)u#f?LE6x73#^e[w%H/I/3:kO('0.e<A1TEMeBq2cXJP;#X$VrcPQU"';xE'?V;eE)Ro>hw+4bqE>kx0y=-cNf(jT^;rY1kZ^vj.XTEZMluv*o,5des(GfU":B\Oo.07UxQ7DthEb1$.uv\S[635>T02c>3kB(freLcn9<'</JGsW[V&od0K2+FU"LD'_d?MJ[PpzHE2BtIQ6(rIunFLc\C,tGS:%]>/oLj2QKiF7#^;51OqL.67&%:>U";CStgFGQ<%>wX0x>f?'HV?,C^d3Njg.RC.4SrEW>Zg?7h:QJX?3T_fId)Bn;>.sU"6hV42F;tBgQ-6KIX3BNWcyuFdr)r'>tuD\Wk1*3)Ud[pKgugJ,cUN,jyPctb+FZU"m,BUD\CWPUJ-jB+jI$c8o;>I=7?Ml<\t>1VwpB[5ne$<pL&TFnj2f#Y+Gy/K&#LU"'jn/R]RpF<W&Z#]PlbQE\asb+&+uX-n/Ia6E\vom?cc7r]X9QffzzWR'_2(ET:/U"ZbL7;j>:]Og,rxV_9s#*,mK]HCaxkj4KqfWoR6eqgASf;qaA3AsiJ>:)G>]H4kKU"m^)L8ZWQfvcQslb?q.UJ=3AFo7c0f3cmt&lCOHgH&eY9:hI0B]^;t_%S_.JZBx#U"nzUUu04isb'29WQV;z*uZN'_&8z^stzNWPfUa<gAtcb]+$LH.,niN_(Ri;qDgRMU"JKLP==Zml$==$HIC/H]uAWt$#1j*1#vQ&Z7vfa-GNCQDS^GN_c%e+$*Y17#k-;bU"v%BoER&_)z&/5$fkZMax-:Ob=7wnX;di%cQwh4FB#T$S56X9[CXXRbi(?sK)X^hU"8X3#*KE/55*J(t[da:lY23?AH#wS*I-heH38K%s5cQ:jU#A/z8VuU,PELCC\8PSU"Yw:$UkNB'nwTXvZ0C^&2wVtw/g(q>5i0Z0fW(grTlaWjd75Z0tjsn,S>na]?Fo0U"Y/mrG6V>%%b#d%P_'2ec5W4tl,0?O0Ake3*e\Q%X,1nQ-8kV,PZ%L?<1DpNgqivU"F#98\'eLW^O3b#Yl/g*7[oL4LRoYOUmB6v$mir.1QV2^Iy#=iz0HLL0gIe<MPXFU"EYRKs*pvjd=7&p=<hH./bH?.xAT9FVZ=NIz,F]LA9X?nFSuFOB6&q9XujlbK_qqU"RO#c/9o7+.Kr[1UoFO-Hpsm?H9&O=$8m.-B[ht1U&rOApD74r,*:Qz:gs^b?0\OU"[Z+Ah\IBi8(=hE#99TFsGypU\XE?;XK.<X?i\PV)[KPSpAJapGQ5MD:ms?=9qQ4U"JrL2)L=9BUygiEg)>vZ7l6uMd2d]Y<#8qn[)dn<RtHq8^?M;:ZHKi&I6A>y9]iCU"C\'i3%VN-]Ks_3I8;4_v2,$iLiAqLQ#AnzKa-:p5a0(KVF=.8x,%up&'%9%9%%%U"%-%12-uEj$xwN%l9%%&Jp%%%0%%%%%%%%%&%E%%%%%%%%%lw(f%ny&(Sgf%xup*U"%+%%%%%&%&%%^%%(%?9%%%%%END SUBCLOSE:IF S=239AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBBob Kohl                       INCOMPLETE EDITOR              FidoNet QUIK_BAS Echo          05-11-96 (04:26)       QB, QBasic, PDS        282  10050    BEDIT.BAS   '   Here is something I tossed together. It's been posted in the Basic'   newsgroups and it always looked interesting, so I tried to modify it. This'   is the result. It's not perfect, but it has potential.DEFINT A-ZDECLARE SUB Editor (Text$, Leftcol, RightCol, KeyCode)COLOR 9: CLS : LOCATE 1, 1: COLOR 4, 7PRINT "     F       E       S         R      C         O         W             H    "LOCATE 1, 8: COLOR 0, 7: PRINT "ile": LOCATE 1, 16: PRINT "dit"LOCATE 1, 24: PRINT "earch": LOCATE 1, 34: PRINT "un": LOCATE 1, 41PRINT "ompile": LOCATE 1, 51: PRINT "ption": LOCATE 1, 61: PRINT "indow"LOCATE 1, 75: PRINT "elp   "COLOR 11, 1PRINT "ͻ"LOCATE 3, 1: PRINT ""FOR I = 4 TO 20    LOCATE I, 1  'GotoXY(1,I);    PRINT ""NEXT ICOLOR 0, 7: LOCATE 3, 80: PRINT ""COLOR 11, 1: LOCATE 21, 1: PRINT ""COLOR 0, 7: LOCATE 21, 80: PRINT "": COLOR 11, 1LOCATE 22, 1PRINT "[       ]": LOCATE 22, 18COLOR 0, 7: PRINT "": LOCATE 22, 19COLOR 8, 7: PRINT ""COLOR 0, 7: LOCATE 22, 78: PRINT        '*** use CHR$(26) with the printCOLOR 11, 1: LOCATE 22, 79: PRINT ""COLOR 8, 7FOR k = 4 TO 20    LOCATE k, 80: PRINT ""NEXT kCOLOR 9, 11FOR J = 1 TO 80    LOCATE 23, J: PRINT ""NEXT JCOLOR 4, 0LOCATE 23, 20: PRINT " Bob's Editor "; : LOCATE 23, 36: COLOR 12, 0COLOR 15, 9' New Program Name " BKEDFIDO.BAS "'=============================================================='EDITIT.BAS the stub of a simple text editor modifed from the'EDITOR.BAS line editor example of Ethan Winer in "PC Magazines'BASIC tips and Utilities. This example reads a given line into'an array, passes that to the edit subprogram. There is primitive'line wrapping, and simple scrolling, but I haven't included'page up or page down. The editor starts in overtype mode and is'toggled with the insert key.DIM FullLine$(1 TO 1000)    'Make an array for holding textDIM D$(8)MaxCols = 79MaxRows = 23   '43    'or 25 for more readable textRowNo = 3                               'Initialize VariablesLineNo = 1LineUp = 0MaxLine = 1Text$ = FullLine$(1)           'Initialize the input routineLeftcol = 2                    'set the left columnRightCol = 79                   'and the right columnDO   LOCATE RowNo, Leftcol     DO                           'Now call the edit routine   CALL Editor(Text$, Leftcol, RightCol, KeyCode)   LOOP UNTIL KeyCode           'Wait for a key that is returned by the editor   FullLine$(LineNo) = Text$    'Assign new text to the array     SELECT CASE KeyCode        CASE -16, 27          ' ALT+Q or Escape                OPEN "temp.txt" FOR OUTPUT AS #1                FOR T = 1 TO LineNo                    PRINT #1, Text$                NEXT T                CLOSE #1    ' temp.txt file closed                LOCATE RowNo, LineNo + 2                PRINT "  Save File As (Only 8 Chararacter please)   ";                INPUT T$                T$ = T$ + ".txt": temp$ = "temp.txt"                LOCATE RowNo + 1, LineNo + 2                PRINT T$: SLEEP 5                NAME temp$ AS T$                EXIT DO        CASE 13               'Enter Key                LineNo = LineNo + 1                RowNo = RowNo + 1                MaxLine = LineNo                IF RowNo > (MaxRows - 2) THEN           'Complex proceedure for scrolling up                        LineUp = LineUp + 1             'a line if more es than on monitor                        StartRow = 3                        RowNo = (MaxRows - 2)                        FOR I = 1 TO (MaxRows - 4)                                LOCATE StartRow, Leftcol                                PRINT SPACE$(78)                                LOCATE StartRow, Leftcol                                PRINT FullLine$(I + LineUp)                                StartRow = StartRow + 1                        NEXT                END IF                Text$ = FullLine$(LineNo)               CASE -72                    'Up Arrow                RowNo = RowNo - 1                LineNo = LineNo - 1                IF RowNo < 3 THEN                        RowNo = 3                        IF LineUp > 0 THEN       'Scroll Up                                StartRow = 3                                LineUp = LineUp - 1                                FOR I = 1 TO (MaxRows - 4)                                        LOCATE StartRow, Leftcol                                        PRINT SPACE$(76);   '****** FIXED                                        LOCATE StartRow, Leftcol                                        PRINT FullLine$(I + LineUp);                                        StartRow = StartRow + 1                                NEXT                        END IF                END IF                IF LineNo < 1 THEN LineNo = 1                Text$ = FullLine$(LineNo)               CASE -80                       'Down Arrow                LineNo = LineNo + 1                IF LineNo > MaxLine THEN                        LineNo = MaxLine                        RowNo = RowNo                ELSE                        RowNo = RowNo + 1                END IF                               IF RowNo > (MaxRows - 2) THEN              'Scroll Down                        LineUp = LineUp + 1                        StartRow = 3                        RowNo = (MaxRows - 2)                                FOR I = 1 TO (MaxRows - 4)                                        LOCATE StartRow, Leftcol                                        PRINT SPACE$(78);                                        LOCATE StartRow, Leftcol                                        PRINT FullLine$(I + LineUp);                                        StartRow = StartRow + 1                                NEXT                END IF                Text$ = FullLine$(LineNo)   END SELECTLOOP'cls'LOCATE 1, 1'FOR i = 1 TO LineNo'PRINT FullLine$(i)'NEXTENDSUB Editor (Text$, Leftcol, RightCol, KeyCode)  '----- Find the cursor's size.  DEF SEG = 0  IF PEEK(&H463) = &HB4 THEN     CsrSize = 12               'mono uses 13 scan lines  ELSE     CsrSize = 12                'color uses 8  END IF  '----- Work with a temporary copy.  Edit$ = SPACE$(RightCol - Leftcol + 1)  LSET Edit$ = Text$  '----- See where to begin editing and print the string.  TxtPos = POS(0) - Leftcol + 1  IF TxtPos < 1 THEN TxtPos = 1  IF TxtPos > LEN(Edit$) THEN TxtPos = LEN(Edit$)  LOCATE , Leftcol  PRINT Edit$;  '----- This is the main loop for handling key presses.  DO     LOCATE , Leftcol + TxtPos - 1, 1     DO       Ky$ = INKEY$     LOOP UNTIL LEN(Ky$)        'wait for a keypress     IF LEN(Ky$) = 1 THEN       'create a key code       KeyCode = ASC(Ky$)       'regular character key     ELSE                       'extended key       KeyCode = -ASC(RIGHT$(Ky$, 1))     END IF     '----- Branch according to the key pressed.     SELECT CASE KeyCode       '----- Backspace: decrement the pointer and the       '      cursor, and ignore if in the first column.       CASE 8         TxtPos = TxtPos - 1         LOCATE , Leftcol + TxtPos - 1, 0         IF TxtPos > 0 THEN           IF InsStatus THEN             MID$(Edit$, TxtPos) = MID$(Edit$, TxtPos + 1) + " "           ELSE             MID$(Edit$, TxtPos) = " "           END IF           PRINT MID$(Edit$, TxtPos);         END IF       '----- Enter or Escape: this block is optional in       '      case you want to handle these separately.       CASE 13, 27, -16         EXIT DO                'exit the subprogram       '----- Letter keys: turn off the cursor to hide       '      the printing, handle Insert mode as needed.       CASE 32 TO 254         LOCATE , , 0         IF InsStatus THEN      'expand the string           MID$(Edit$, TxtPos) = Ky$ + MID$(Edit$, TxtPos)           PRINT MID$(Edit$, TxtPos);         ELSE                   'else insert character           MID$(Edit$, TxtPos) = Ky$           PRINT Ky$;         END IF         TxtPos = TxtPos + 1    'update position counter         IF TxtPos = LEN(Edit$) THEN                KeyCode = 13                EXIT DO         END IF       '----- Left arrow: decrement the position counter.       CASE -75         TxtPos = TxtPos - 1       '----- Right arrow: increment position counter.       CASE -77         TxtPos = TxtPos + 1       '----- Home: jump to the first character position.       CASE -71         TxtPos = 1       '----- End: search for the last non-blank, and       '      make that the current editing position.       CASE -79         FOR N = LEN(Edit$) TO 1 STEP -1           IF MID$(Edit$, N, 1) <> " " THEN EXIT FOR         NEXT         TxtPos = N + 1         IF TxtPos > LEN(Edit$) THEN TxtPos = LEN(Edit$)       '----- Insert key: toggle the Insert state and       '      adjust the cursor size.       CASE -82         InsStatus = NOT InsStatus         IF InsStatus THEN           LOCATE , , , CsrSize \ 2, CsrSize         ELSE           LOCATE , , , CsrSize - 1, CsrSize         END IF       '----- Delete: delete the current character and       '      reprint what remains in the string.       CASE -83         MID$(Edit$, TxtPos) = MID$(Edit$, TxtPos + 1) + " "         LOCATE , , 0         PRINT MID$(Edit$, TxtPos);       '---- All other keys: exit the subprogram       CASE ELSE         EXIT DO     END SELECT  '----- Loop until the cursor moves out of the field.  LOOP UNTIL TxtPos < 1 OR TxtPos > LEN(Edit$)  Edit$ = LTRIM$(RTRIM$(Edit$))         'trim the text  Text$ = Edit$END SUBJohn Rodgers                   FADES, FONTS & FUN             www.flinet.com/~coolfool       05-18-96 (00:00)       QB, QBasic, PDS        1475 32430    EIGHTBAL.BAS                               'EIGHTBAL.BAS                            'Wizard Productions                               'John Rodgers                               'Too Cool Fool                            'coolfool@flinet.com        'Eightball is a take off on the Plastic 8 ball you asked questions,         'turned upside down and a different answer floated to the triangle         'on the bottom.'Magic Eightball was an attempt to add a little dimension to the old plastic 'toy and then to incorporate some of the neat code I have picked up on the 'FIDO Quick Basic Sub. The fade and font routines and the getKey$ function'were posted in the FIDO sub and I extracted the code and deleted the mail 'so I don't know who wrote what. Sorry guys but great code. Thanks! 'This program and the source code are released to the Public Domain. 'Code is released as is and is not guaranteed for any purpose. 'If I get enough response I will update this with greater depth of 'answers and better graphics.'Thanks to Rick and Ruth, Dale and all the gang at AFAN for thier help.                            'FADES FONTS AND FUNDEFINT A-ZDECLARE SUB am ()DECLARE SUB who ()DECLARE SUB was ()DECLARE SUB what ()DECLARE SUB would ()DECLARE SUB should ()DECLARE SUB could ()DECLARE SUB how ()DECLARE SUB when ()DECLARE SUB will ()DECLARE SUB where ()DECLARE SUB why ()DECLARE SUB did ()DECLARE SUB isQ ()DECLARE SUB ifQ ()DECLARE SUB have ()DECLARE SUB were ()DECLARE SUB can ()DECLARE SUB does ()DECLARE SUB tellTime ()            'the subs above this line cover the questionsDECLARE SUB yes ()                     'yes answersDECLARE SUB no ()                      'no answersDECLARE SUB amb ()                     'ambiguous answersDECLARE SUB tri ()DECLARE SUB delay (a!)DECLARE SUB ballFade ()DECLARE SUB getAns ()DECLARE SUB getQuestKey ()DECLARE SUB parseAnswer ()DECLARE SUB displayAns ()DECLARE SUB getName ()DECLARE SUB getQuerry ()DECLARE SUB eye (xp%, yp%)DECLARE SUB delay (a!)DECLARE SUB title ()DECLARE SUB drawBall ()DECLARE SUB triangle ()DECLARE SUB getTime ()             'Great SUBs & FUNCTIONs I got from the FIDO QuickBasic sub [TCF]DECLARE SUB deFont ()DECLARE SUB fadeinit ()DECLARE SUB fadin (d%)DECLARE SUB fade (d%)DECLARE SUB font ()DECLARE FUNCTION getKey$ (row%, col%, prompt$, default$, maxx!, minn!, blanker$, limit$)                        'you need to DIM colourPalette for fade to workDIM SHARED ColourPalette(1 TO 1024) AS INTEGERCOMMON SHARED kpres%, k$, f$, name$, querry$COMMON SHARED prTime$, answer$, fir$, sec$                                           'a$(letter) is the array that holds the fontDIM SHARED a$(122)deFont                'define fontk$ = INKEY$                                    'Alfred Hitchcock theme songPLAY "MB"                            'backgroundPLAY "O2 L12 D N0 >D l32 E L12 DC+<B>C+ N0 DE< N0"  kpres% = 0SCREEN 9COLOR 7, 0  RANDOMIZE TIMERPLAY "AD N0 >D l32 E l12 D C+<B>C+ N0 DE N0"CLStitlePLAY "<AD> N0 FA..GF N0 A >C..< A+A N0 >CEDC+<A+GFE"drawBall    PLAY "<D> N0 D l32 E l12 DC+<B>C+ N0 DE< N0"eye 110, 56PLAY "AD N0 >D L32 E L12 DC+<B>C+ N0 DE N0.. F N0 A >C< A+AGF"PLAY "D+GA+DC+DE N0 F L9 E. L12 D"     DRAW "c14;s4 bm15,79"           'set cursor for font     f$ = "Wizard Productions"             'c = color, s = size     font                                   'bm15,79 = positions      fadeinit                      'I sorta know how this worksfade 100                       ' but I plugged it in and it doesCLSdelay 2 getNamefade 100CLSballFadeDO                                 'main loopgetQuerryfade 100CLS getAnsballFadetri displayAnsfadin 100delay 3fade 100CLStri                           ' play again?            f$ = name$ + ", need more answers?"     DRAW "c13;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",40"          font    DOLOOP WHILE LEN(INKEY$)     again$ = getKey$(14, 35, "Y/n  :  ", "Y", 2, 1, " ", "yYnN")IF UCASE$(again$) = "Y" OR UCASE$(again$) = "YY" THENCLSballFadeEND IFLOOP UNTIL UCASE$(again$) = "N" OR UCASE$(again$) = "YN" OR UCASE$(again$) = "NN"CLSPLAY "D+GA+DC+DE N0 F L9 E. L12 D"ballFadeeye 300, 20      f$ = "Wizard Productions"      DRAW "c15;s12 bm" + STR$(100 - ((LEN(f$) / 2) * 6)) + ",45"      font           f$ = "Thanks for playing "      DRAW "c14;s10 bm" + STR$(160 - ((LEN(f$) / 2) * 6)) + ",110"      font           f$ = name$      DRAW "c13;s10 bm" + STR$(300 - ((LEN(f$) / 2) * 20)) + ",170"      fontfadin 100delay 2fade 100SCREEN 0                                  'reset old machinesCOLOR 7, 0SYSTEMSUB amRANDOMIZE TIMERqNum% = INT(RND * 3) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambEND SELECTEND SUBSUB ambRANDOMIZE TIMERansNum% = INT(RND * 8) + 1SELECT CASE ansNum%CASE 1answer$ = name$ + ", the answer is dark."CASE 2answer$ = "It is you! " + name$ + ", that covet my icecream bar."CASE 3answer$ = "It is possible " + name$ + ", that no one cares."CASE 4answer$ = "Do not ask " + name$ + " it is not good."CASE 5answer$ = name$ + " your questions weary me."CASE 6answer$ = name$ + " " + name$ + " " + name$CASE 7answer$ = " The tree grows on the side of the mountain."CASE 8answer$ = "Seek that answer in the stars."END SELECTEND SUBSUB ballFadedrawBallfadin 100delay 1fade 100CLSEND SUBSUB canRANDOMIZE TIMERqNum% = INT(RND * 3) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambEND SELECTEND SUBSUB couldRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "Coulda Woulda Shoulda "CASE 5answer$ = "It is not for " + name$ + " to know."CASE 6answer$ = "Could be."CASE 7answer$ = "No " + name$ + ", it couldn't."END SELECTEND SUBDEFSNG A-ZSUB deFont                  'define font                    'font is from FIDO QuickBasic sub     a$(32) = "BR8"     a$(33) = "BR2G2RED8BD2D2HR2HBU2U3LU3R2D3U5FBU2BR2"     a$(34) = "BRBUGDRND2RULBR3DRND2RULUBR3"     a$(35) = "BR7G2D6LDU6L2GR3D3L3GR3ND2R4UNL2D3EU5NL3UL2NUR3UD"     a$(35) = a$(35) + "5R2EL3U3R3EL3U2EBR5"     a$(36) = "BR5DND15G4D4RNU4E3R3D6LNU6DLDL3HL2NDE2GR2DR2U10RF"     a$(36) = a$(36) + "URUNL3EBUBR3"     a$(37) = "BR4LG3DED2ED2EDE3LEL2EL2EBR6G2RDLD2HD3HD3HD3HD2UB"     a$(37) = a$(37) + "R6REL3EL2ELE3DED2ED3EUBU7BR2"     a$(38) = "BR6RF2NG3L2UL2G2RGDEDRND3G2NR3G3RGDERGDERGD2EURE3"     a$(38) = a$(38) + "H2R2D2F5REUGLNH4UH4E2R2D2RENL5BU8BR3"     a$(39) = "BRD4UHR2UL2BUBR5"     a$(40) = "BR6G4REG3REG3R2UG2ND5RD7RU4D5RU3FDBU16BR3"     a$(41) = "BD17E4LGE3LGE3LGUE2DHENU3LNU5HNU5UHU3GDBU2BR7"     a$(42) = "BR3D3ND3NL3NR3NG2NH2NF2E2BUBR3"     a$(43) = "BR5BD4D4ND4NL4LND5NU3DL4R8UL3R4BU8BR3"     a$(44) = "BRBD13D3GE2UL2RBU14BR5"     a$(45) = "BD9NR6ER6BU8BR3"     a$(46) = "BD15R2GU2BU14BR5"     a$(47) = "BD16E2LELE2DHE2DHE2DHE2DHE2DHE2BR3"     a$(48) = "BR4G3D8UHU4E4NR2DNR3FNR3FR2GR2D4LU4D6G3UNE3L2H2ED"     a$(48) = a$(48) + "RDRBU12BR8"     a$(49) = "BD2E2ND13GR2UD13H2R4GE2BU11BR3"     a$(50) = "BD4E4L2D3HUR2ER2DRND5FD3NG3LNG7LG5D3GUENR6FNR4FR2"     a$(50) = a$(50) + "E2HREBU10BR3"     a$(51) = "BR3G3NF2RE2RNG3DRF2DHD2HD4H2ED2R2D4ENU2G4H3LE2D2E"     a$(51) = a$(51) + "D2ED2EBU13BR6"     a$(52) = "BR6D14FU14LG6DR8FL8R6D3FDEBU13BR3"     a$(53) = "BR9G3L4U2R5GL4D6E3RG2RERGR2FND3L3FRD3G3LHNR3HNR5H"     a$(53) = a$(53) + "LR4H2GRBU10BR10"     a$(54) = "BR5F2RGH2LF2DH2LG2D9HNU6UE5D2EUD3EUND5FD3G5U3LU3B"     a$(54) = a$(54) + "U11BR9"     a$(55) = "BD3E2R7GNL7G2RG2RG2ERG3ERG2ERG2D2FU3ED4E2LBU13BR6"     a$(56) = "BDBR6L3G3R2DL2FRED3HR3HD2R3HD3HR3ND3GD3G2NH4L2UR2"     a$(56) = a$(56) + "NH4L3ULULUE8L2DEUL2UBR6"     a$(57) = "BUBR4G4D3FNU4EUD3RU2FE4ND5GD6G2NL5G2HRU2L2EBU7BR4"     a$(57) = a$(57) + "R2UH2LF2LNH2LHU2BR7"     a$(58) = "BD7R2GU2BD6D2HR2BU13BR4"     a$(59) = "BD7R2HD2BD4D3GE2UL2BU13BR6"     a$(61) = "BD6R6EL6BD3R6GNL6BU9BR5"     a$(63) = "BR3G3ER4HLD2R3DL2FRG4DBD2D2HR2BU13BR6"     a$(65) = "BD6U3NE2RE3NR3DR4G3L2DEUR3EG2DGDG2NH3NR7DNR7G2NR3"     a$(65) = a$(65) + "DNR4DFBR3HR2E3D3FNE2U14GND9E2BR3"     a$(66) = "BD3UEDRUR3EG3D4L2GDER2D5LG2NDE2REU9FED8EU8EDER3GR"     a$(66) = a$(66) + "2D2HD2G2HUND9D2R3ND5FD4LG2L5GE3R3DL3BU13BR8"     a$(67) = "BDBR4G3RG2ND4RD6FNU4RNU2ED2NR4UR6NE2NUL3U12G3D6EU"     a$(67) = a$(67) + "6ER5GLU2LUBR6"     a$(68) = "BDBR2NR7FR8GR2GRD2NL2D3NL2D3GNL6GL6GE3U10G3D7G2E3"     a$(68) = a$(68) + "U2L3GE2R2U4E2R2D5RGD2RGDBU11BR7"     a$(69) = "BR4G3ND8RG2D4RED4RNU2FNU2NR4ER5NE2NUL3U12G3D6EU6E"     a$(69) = a$(69) + "NR7ER2D2R3G4R4UNL3BU5BR3"     a$(70) = "BD6E2DR3UL2EU2D14L2GR2ERURUHU11R7NUL2UL3ED13GU8R3"     a$(70) = a$(70) + "EL4U4BUBR8"     a$(71) = "BD6D4FDU8E3D9G2U2D3NR7ERD2R4HU12L2ND8R5HD2R2GR2G4"     a$(71) = a$(71) + "R4HLD2R2ND3LD3G2BU13BR6"     a$(72) = "BD3UNR5ER5EG4D9GRENU9FRNU11EU11E2NRG2D4RE3D2END9R"     a$(72) = a$(72) + "D7G2LEBU13BR5"     a$(73) = "BD3URUR2D12L2GDR2UEU11EBR3G2D12L2DRE2U12EBR3"     a$(74) = "BD5BRRUL2U2E2R3DL4R6DL3R5LG3D9GL3G2ER3DRUR3U2RU10"     a$(74) = a$(74) + "ED9BL3DU9E2RERBUBR3"     a$(75) = "BD3E2R3NEGL2FD8G2LGE5DU8BR2NE2D8G3R4HLD2FURE3D2FU"     a$(75) = a$(75) + "2FRDH4LF2EH2E3LEL3GE2RBU3BR6"     a$(76) = "BD2E2R4EG2NL4D11L2G2ERENU9RNE3R2F2RNE3HRNE2UE2LHB"     a$(76) = a$(76) + "L3NU7FU7EBU3BR7"     a$(77) = "BR6LG4D11LUREU5L2UR2U4ERD11NG2U5R6D5EG3H2R3GNU12H"     a$(77) = a$(77) + "U6LNR5RU5LHR2DR6H2GRGND5R2DR2D12NEHU11E2BUBR3"     a$(78) = "BD3E2D2R3H2D14L3NDER2EU10RED11NG2U4E3R4GDGDGDGDR4"     a$(78) = a$(78) + "EG2L2U2RHEUEUEU3L3FRU2L3G3E4RL5E2RGR2BUBR7"     a$(79) = "BR9L4G5ND6RD8R8LGL4U2LUE2NU8LU7ER6FL3HGD10UE3R3DG"     a$(79) = a$(79) + "3REU5FUL3NG2RE2DHULBU3BR6"     a$(80) = "BUBD3E3D2LR2HD2LR2ND14GND13DG3R2GRDFGLNG2DR2D4R3U"     a$(80) = a$(80) + "3NU13R4GU2L3R5EL2E2DNU7HU2L2G3FRLHE3REUL3NGR"     a$(80) = a$(80) + "2EU2GU2GL2E2NDBR8"     a$(81) = "BR8L3G5ND6RD8R10GR2EGHL3GL4UHUF2R2NU13R2E4G2DEU9L"     a$(81) = a$(81) + "3HR3D2LFNG3DERD4L3G3UBL3NU8EU8EBR11"     a$(82) = "BD14E5U8EG2L2GE2RD10G2E3FG2R5G2HRU2LUENU8ENE4F4DN"     a$(82) = a$(82) + "E3H2R3H3LNF3UE2U4L4E2D3FR2UL2U2BUBR8"     a$(83) = "BR11G6H3UE2R3D2REL6GF3NR6L2HG2DED2ED2NR7ENR5RE2L2"     a$(83) = a$(83) + "R8GR2ND3GD3G3UGU4RNDG5L3HU2R7DH2RL5R2UBU10BR13"     a$(84) = "BD3E2DE2NR5DR9EG2L5D6G3NU3LU7NE3RG2D3F2E2NU5G2NR2"     a$(84) = a$(84) + "DR8NE2NULGNL4U12BUBR7"     a$(85) = "BD3E2R6EG2L6R4G4ND4RNED6FU3FD2FU2FR3NE4GNL2U13G2D"     a$(85) = a$(85) + "6GU5EBR4E3D13E2L3DU11FRBU3BR4"     a$(86) = "BD3UE2RG2RD10NLENU11D2F2NE6H2R3GUHRUNE3U3NE3U6H2B"     a$(86) = a$(86) + "R7NG3D9ENL3U3NL3U3NL2UHBR4"     a$(87) = "BD3E3D14H2RU9LE2RFD12GU3FRE2U10GE2D14HUF2DU3RD2NE"     a$(87) = a$(87) + "4U13BR2UED11EU9HBR4"     a$(88) = "BD3E3D4FU4LGR2D6L3ER3U4D6GDG2ND2L3NDERFRBR4R4EG3R"     a$(88) = a$(88) + "EL2U2LND2LU5R3GL3D3R2UL2U5EUE2LED3FU3FDE"     a$(88) = a$(88) + "BU2BR4"     a$(89) = "R3GRD10NG3LG2D2ED2NR3ER4HR5DGBU3L2BU2RL4U10FRUD9U"     a$(89) = a$(89) + "E3R3D2G2LEURU4L3NGR4DU3GU2GU2GUL2BR8"     a$(90) = "BD3UE2D2LR8U2GNL7D2NG5LG3L3R8L2GLDR3L8R4G2RERG3UG"     a$(90) = a$(90) + "D2GUR8GU2R2L7RER5EBU11BR3"     a$(97) = "BD6NE3F2G2D2F2U3HD2RFUR3D2EL2NU9EU8NEL3F2DGNLEU3H"     a$(97) = a$(97) + "BU3BR6"     a$(98) = "RD12NLFNU13FU2FURENU7RU6L2U2G3U6EBR7"     a$(99) = "BD6NE3RD5GR5EG2LGU3LRU6E2D2ED2EBU5BR3"     a$(100) = "BFGDERGR2GR2G4ND4RD5FU3FD3E3NU6LNGU5NE2ULURBU5BR5"     a$(101) = "BD7RNE3D4GRFNU6F2NE3UEL2ELU2E4L3FU2LBU5BR6"     a$(102) = "BR3G2D12LR3GU9L2R4L2U4EDED2EBU2BR3"     a$(103) = "BD17R5EL5E6D5L2EU2L2GLEL2NU5EU4E3D2ED5EU4EBU4BR3"     a$(104) = "BDFD13E2NL3HU10NE2D6E4GDED9G3ERE2U9BU5BR3"     a$(105) = "BD6ED9FE2LGU9RHBU2URBUBR4"     a$(106) = "BD5ED2ED10GE2U8H2BU2URBUBR4"     a$(107) = "BDFD12HR4G2U13NE2D6E3R2FL3FRG4ER2GR2D4EUL2U3BU10"     a$(107) = a$(107) + "BR5"     a$(108) = "BDFD11NL2DFELU13EBR3"     a$(109) = "BD6UED10HF2ELU9FNRE2D10FU10FNRE2D10RNE2U9FBU6BR3"     a$(110) = "BD5NE2RED9FE2LGU9FNE2RED2RU2D9FE2LGU8EBU4BR4"     a$(111) = "BD7NE4ND4RD5F2UHUF2E2NU6LU4H2EDFU2BU4BR4"     a$(112) = "BD5E2D13LR2NFU5NL2U7FE2D2ED9GH3R5DL3FE2U6BU5BR3"     a$(113) = "BD6NE3ND6RNE2D7FU2FE2D5NGR2HU9FG2DU5L2EBU4BR6"     a$(114) = "BD5NE2RED8HF3E2LGU2GU8FE2D2ED3EUBU5BR3"     a$(115) = "BD13NE8R6GLU2NL3BR3ENU2LU3LD2HL3EL2NU2EU2E2DR4GN"     a$(115) = a$(115) + "L2E2BU3BR3"     a$(116) = "BD4NE3RD9HR2D2EDNE2HU10FRBU4BR4"     a$(117) = "BD5NE2RED8FNU9FU3FDEF2E2L3FU10G2R3G2D5U8BU4BR6"     a$(118) = "BR3G3RDEUD10NLF2NE4U2RL2ELU7BR4NHD7EU5BU5BR3"     a$(119) = "BR2G2D2RU3D12HF2EUGU9FE2ND9FD8F2E2RGNHEU9NG3FND8"     a$(119) = a$(119) + "BU4BR3"     a$(120) = "BD6E3DGRD2RU2D5G4U3FRE2RD2RD2E3GLHUHUE4D2HLE2BU3BR3"     a$(121) = "BD5NE2RED10GDFR3EUGBH3RNU10EDE4NU6LU5G2BU6BR6"     a$(122) = "BD7UE3D2ED2EDG4R4HLD2R3DL2D2EL2DL2GDFR2EBU16BR5"END SUBSUB delay (a!)              'real time delay, if a = 1 then delay = 1 second dela! = TIMER outvar = 0 DO    lt& = lt& + 1  IF lt& >= 65500 THEN outvar = 1          'MIDNIGHT FIX IF TIMER - dela! >= a! THEN outvar = 1 k$ = INKEY$ IF k$ = CHR$(27) THEN CLS : SYSTEMIF LEN(k$) THEN outvar = 1LOOP UNTIL outvar = 1END SUBDEFINT A-ZSUB didRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = name$ + ", things do not just happen."CASE 5answer$ = "Well, Somethings do just happen " + name$ + "."CASE 6answer$ = "If it was possible."CASE 7answer$ = "No, you must ask something else " + name$ + "!"END SELECTEND SUBSUB displayAnstriPLAY "MB"PLAY "D+GA   "IF LEN(answer$) <= 25 THENtriangle    f$ = answer$      DRAW "c14;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",40"          fontELSEparseAnswerEND IF delay 4END SUBSUB doesRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "Things do as they must " + name$CASE 5answer$ = name$ + ", it does"CASE 6answer$ = "Only if you are watching, " + name$CASE 7answer$ = "You may believe otherwise, " + name$END SELECTEND SUBDEFSNG A-ZSUB doQRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = name$ + ", things do not just happen."CASE 5answer$ = "Well, Somethings do just happen " + name$ + "."CASE 6answer$ = "If it was possible."CASE 7answer$ = "Silence is golden, " + name$ + "!"END SELECTEND SUBSUB drawBalla8$ = ""b8$ = ""c8$ = ""d8$ = "" CIRCLE (315, 157), 57, 15 PAINT STEP(1, 1), 15, 15COLOR 15LOCATE 10, 37PRINT a8$LOCATE 11, 37PRINT b8$LOCATE 12, 37PRINT c8$LOCATE 13, 37PRINT d8$ FOR x% = 56 TO 129CIRCLE (315, 157), x%, 15NEXT x%FOR t% = 55 TO 126CIRCLE (315, 157), t%, 0NEXT t%   END SUBSUB eye (xp%, yp%)                           'logo graphicCIRCLE (xp%, yp%), 32, 14, , , 2 / 9PAINT STEP(0, 0), 14CIRCLE STEP(0, -1), 11, 0PAINT STEP(0, 0), 0, 0CIRCLE STEP(3, 2), 1, 12 END SUBREM $DYNAMICDEFINT A-ZSUB fade (d%)  FOR a = 0 TO 63    ' --- in mode 13, use I=0 to 255    FOR I = 0 TO 63      OUT &H3C7, I      p1 = INP(&H3C9)      p2 = INP(&H3C9)      p3 = INP(&H3C9)      OUT &H3C8, I      IF p1 - 1 >= 0 THEN OUT &H3C9, p1 - 1 ELSE OUT &H3C9, p1      IF p2 - 1 >= 0 THEN OUT &H3C9, p2 - 1 ELSE OUT &H3C9, p2      IF p3 - 1 >= 0 THEN OUT &H3C9, p3 - 1 ELSE OUT &H3C9, p3           FOR delayer = 1 TO d%: NEXT delayer    NEXT I  FOR delayer = 1 TO d%: NEXT delayer  NEXT a END SUBDEFSNG A-ZSUB fadeinit  FOR I = 0 TO 255    '--- Save all colours although text mode only uses 0-63    '    If time is important, reduce 255 to 63    OUT &H3C7, I    ColourPalette(I * 4 + 1) = I    ColourPalette(I * 4 + 2) = INP(&H3C9)    ColourPalette(I * 4 + 3) = INP(&H3C9)    ColourPalette((I + 1) * 4) = INP(&H3C9)  NEXT IEND SUBDEFINT A-ZSUB fadin (d%)  FOR a = 0 TO 63    ' --- in mode 13, use I=0 to 255    FOR I = 0 TO 63      OUT &H3C7, I      p1 = INP(&H3C9)      p2 = INP(&H3C9)      p3 = INP(&H3C9)      OUT &H3C8, I      IF p1 + 1 <= ColourPalette(I * 4 + 2) THEN OUT &H3C9, p1 + 1 ELSE OUT H3C9, p1      IF p2 + 1 <= ColourPalette(I * 4 + 3) THEN OUT &H3C9, p2 + 1 ELSE OUT &H3C9, p2      IF p3 + 1 <= ColourPalette((I + 1) * 4) THEN OUT &H3C9, p3 + 1 ELSE OUT &H3C9, p3    NEXT I    FOR delayer = 1 TO d%: NEXT delayer  NEXT aEND SUBREM $STATICDEFSNG A-ZSUB font                  'print(DRAW) f$ to screenFOR x = 1 TO LEN(f$) y = ASC(MID$(f$, x, 1)) DRAW a$(y)NEXTEND SUBDEFINT A-ZSUB getAns  querry$ = UCASE$(querry$)IF INSTR(querry$, "TIME ") THENtellTimeEXIT SUBEND IFIF INSTR(querry$, "WHO ") OR INSTR(querry$, "WHOM ") THENwhoEXIT SUBEND IFIF INSTR(querry$, "WAS ") THENwasEXIT SUBEND IFIF INSTR(querry$, "IF ") THENifQEXIT SUBEND IFIF INSTR(querry$, "WHERE ") THENwhereEXIT SUBEND IFIF INSTR(querry$, "AM ") THENamEXIT SUBEND IFIF INSTR(querry$, "WHAT ") THENwhatEXIT SUBEND IFIF INSTR(querry$, "WHY ") THENwhyEXIT SUBEND IFIF INSTR(querry$, "WILL ") THENwillEXIT SUBEND IFIF INSTR(querry$, "WERE ") THENwereEXIT SUBEND IFIF INSTR(querry$, "DID ") THENdidEXIT SUBEND IFIF INSTR(querry$, "WHEN ") THENwhenEXIT SUBEND IFIF INSTR(querry$, "HOW ") THENhowEXIT SUBEND IFIF INSTR(querry$, "IS") THENisQEXIT SUBEND IFIF INSTR(querry$, "CAN ") THENcanEXIT SUBEND IFIF INSTR(querry$, "HAVE ") THENhaveEXIT SUBEND IFIF INSTR(querry$, "WOULD ") THENwouldEXIT SUBEND IFIF INSTR(querry$, "SHOULD ") THENshouldEXIT SUBEND IFIF INSTR(querry$, "COULD ") THENcouldEXIT SUBEND IFamb END SUBDEFSNG A-Z'                   Get Key Function from FidoNet Quick Basic SUBFUNCTION getKey$ (row%, col%, prompt$, default$, maxx, minn, blanker$, limit$)fadin 150DO  LOCATE row%, col% + LEN(prompt$): PRINT STRING$(maxx, blanker$);  LOCATE row%, col%, 1, 10, 11  PRINT prompt$;  default$ = LTRIM$(RTRIM$(default$))  IF default$ = STRING$(LEN(default$), 0) THEN default$ = ""  IF LEN(default$) <> 0 THEN    LOCATE row%, col% + LEN(prompt$): PRINT default$;    queue$ = default$    LOCATE row%, col% + (LEN(prompt$) + LEN(default$))  END IF start:  DO    tmp$ = INKEY$  triangle       IF tmp$ <> "" THEN    IF tmp$ = CHR$(27) THEN CLS : SYSTEM  IF tmp$ = CHR$(13) THEN  tmp$ = ""     EXIT DO     ELSEIF tmp$ = CHR$(8) THEN           tmp$ = ""      IF LEN(queue$) >= 1 THEN    LOCATE , POS(0) - 1: PRINT blanker$; : LOCATE , POS(0) - 1    queue$ = LEFT$(queue$, LEN(queue$) - 1)      ELSE        SOUND 500, 1    WHILE INKEY$ <> "": WEND      END IF  ELSEIF LEN(tmp$) > 1 THEN      SOUND 500, 1      WHILE INKEY$ <> "": WEND      tmp$ = ""  ELSEIF ASC(tmp$) < 32 OR ASC(tmp$) > 126 THEN      SOUND 500, 1          WHILE INKEY$ <> "": WEND      tmp$ = ""   ELSEIF LEN(queue$) < maxx THEN    IF limit$ <> "" THEN      IF NOT INSTR(limit$, tmp$) <> 0 THEN GOTO start    END IF    queue$ = queue$ + tmp$       PRINT tmp$;     ELSE    c% = INT(RND * 10) + 1    k% = row%    m% = col%     COLOR 14     LOCATE 16, 30      PRINT "USE BACKSPACE TO CHANGE"      SOUND 500, 1      LOCATE k%, m% + LEN(prompt$) + 1 + LEN(queue$) - 1      WHILE INKEY$ <> "": WEND      tmp$ = ""    END IF    END IF       LOOP  IF LEN(queue$) >= MinLen% THEN    EXIT DO  ELSE    SOUND 500, 1  END IF   LOOPgetKey$ = queue$'LOCATE , , 0END FUNCTIONSUB getNametridelay 1PLAY "MB"PLAY "D+GA   "     DRAW "c13;s7 bm180,10"     f$ = "What is your name?"     fontDOLOOP WHILE LEN(INKEY$) name$ = getKey$(7, 26, "NAME: ", " ", 22, 1, "_", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")PLAY "D+GA+DC+DE N0 F L9 E. L12 D"END SUBSUB getQuerryPLAY "MB"PLAY "D+GA    " tri f$ = name$ + ", state your querry." DRAW "c12;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",30" 'DRAW "c13;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",40"          fontDOLOOP WHILE LEN(INKEY$)DOquerry$ = getKey$(6, 12, " ", " ", 55, 1, "_", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890?")LOOP UNTIL querry$ > ""PLAY "D+GA+DC+DE N0 F L9 E. L12 D"END SUBDEFINT A-ZSUB getTime           'convert SYSTEM time and date to prTime$ and prDate$                        'for program uset$ = TIME$Hr = VAL(t$)IF Hr < 12 THEN Ampm$ = " AM" ELSE Ampm$ = " PM"IF Hr > 12 THEN Hr = Hr - 12IF Hr = 0 THEN Hr = 12 prgTime$ = STR$(Hr) + RIGHT$(t$, 6) + Ampm$ IF Ampm$ = " AM" THEN                      ' convert prgTime$ to 5 characters   prTime$ = LEFT$(prgTime$, 5) + " AM"        'for AM END IF                                            ' convert prgTime$ to 6 characters IF Ampm$ = " AM" AND VAL(LEFT$(prgTime$, 3)) >= 10 THEN   prTime$ = LEFT$(prgTime$, 6) + " AM"        'for AM after 10 END IF IF Ampm$ = " PM" THEN                       ' convert prgTime$ to 5 charactersprTime$ = LEFT$(prgTime$, 5) + " PM"           'for PM END IF                                             ' convert prgTime$ to 6 characters IF Ampm$ = " PM" AND VAL(LEFT$(prgTime$, 3)) >= 10 THENprTime$ = LEFT$(prgTime$, 6) + " PM"             'for PM after 10 END IFEND SUBSUB haveRANDOMIZE TIMERqNum% = INT(RND * 5) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "No they haven't, " + name$CASE 5answer$ = "Yes I have"END SELECTEND SUBSUB howRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1answer$ = "You know."CASE 2answer$ = "If you don't know by now..."CASE 3ambCASE 4answer$ = "No how " + name$CASE 5answer$ = "By hook and by crook."CASE 6answer$ = "With outside aid," + name$CASE 7answer$ = "Not by any known method."END SELECTEND SUBSUB ifQRANDOMIZE TIMERqNum% = INT(RND * 5) + 1SELECT CASE qNum%CASE 1answer$ = "If wishes were horses-..."CASE 2answer$ = "If? HA! " + name$CASE 3ambCASE 4answer$ = "No " + name$ + " not hardly."CASE 5answer$ = "Yes " + name$ + "IF."END SELECTEND SUBSUB isQRANDOMIZE TIMERqNum% = INT(RND * 5) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "No it isn't."CASE 5answer$ = "Yes it is."END SELECTEND SUBSUB noRANDOMIZE TIMERansNum% = INT(RND * 10) + 1SELECT CASE ansNum%CASE 1answer$ = "No"CASE 2answer$ = "Not really "CASE 3answer$ = "Never."CASE 4answer$ = name$ + ", the probabitlity is less than 2%"CASE 5answer$ = "Not if you think about it."CASE 6answer$ = "Can't be."CASE 7answer$ = "That's a negatory Good Buddy."CASE 8answer$ = "Impossible " + name$ + "."CASE 9answer$ = "The answer is no."CASE 10answer$ = name$ + ", the probabitlity is less than 2%"END SELECTEND SUBSUB parseAnswertriangleFOR x% = 29 TO 21 STEP -1IF MID$(answer$, x%, 1) = " " THENfir$ = LEFT$(answer$, (x% - 1))sec$ = MID$(answer$, (x% + 1), (LEN(answer$)))EXIT FORELSEfir$ = LEFT$(answer$, 24)sec$ = MID$(answer$, 25, (LEN(answer$)))END IFNEXT x%       f$ = fir$       DRAW "c13;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",40"            font      f$ = sec$       DRAW "c13;s7 bm" + STR$(300 - ((LEN(f$) / 2) * 14)) + ",90"            fontEND SUBSUB shouldRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "Shoudda woudda coudda"CASE 5answer$ = "Somethings just should."CASE 6answer$ = "Shouldn't ask."CASE 7answer$ = "Not supposed to," + name$END SELECTEND SUBSUB tellTimeRANDOMIZE TIMERgetTimeqNum% = INT(RND * 4) + 1SELECT CASE qNum%CASE 1answer$ = name$ + " it is" + prTime$CASE 2answer$ = prTime$ + " is the time."CASE 3ambCASE 4answer$ = name$ + " you should not be so obsessed with time"END SELECTEND SUBSUB testCLSeye 300, 20     f$ = "Wizard Productions"      DRAW "c13;s12 bm" + STR$(100 - ((LEN(f$) / 2) * 6)) + ",45"          font             f$ = "Thanks for playing "     DRAW "c14;s10 bm" + STR$(160 - ((LEN(f$) / 2) * 6)) + ",100"           font      f$ = name$    DRAW "c13;s10 bm" + STR$(220 - ((LEN(f$) / 2) * 6)) + ",160"           fontfadin 100      END SUBDEFSNG A-ZSUB title                'display animated title pager% = INT(RND * 15) + 1k$ = INKEY$IF r% = 8 THEN r% = 15COLOR r%LOCATE 1, 1PRINTPRINT "                              "PRINT "                                    "PRINT "                                     "PRINT "                                   "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r%delay .3LOCATE 18, 1PRINT " "PRINT "   "PRINT "   "PRINT " "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r%delay .3LOCATE 18, 1PRINT "          "PRINT "           "PRINT "           "PRINT "          "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r%delay .3LOCATE 18, 1PRINT "               "PRINT "                "PRINT "                  "PRINT "               "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r% delay .3LOCATE 18, 1PRINT "                          "PRINT "                         "PRINT "                         "PRINT "                            "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r%delay .3LOCATE 18, 1PRINT "                               "PRINT "                                   "PRINT "                                  "PRINT "                                   "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r%delay .3LOCATE 18, 1PRINT "                                             "PRINT "                                             "PRINT "                                             "PRINT "                                           "r% = INT(RND * 15) + 1IF r% = 8 THEN r% = 15COLOR r% delay .3LOCATE 18, 1PRINT "                "PRINT "                      "PRINT "                       "PRINT "                  "delay .3END SUBDEFINT A-ZSUB tri  DO   t = t + 1   c% = INT(RND * 15)     LINE (x1pos%, y1pos%)-(x2pos%, y2pos%), c%     LINE (x2pos%, y2pos%)-(x3pos%, y3pos%), c%     LINE (x3pos%, y3pos%)-(x1pos%, y1pos%), c%  x1pos% = x1pos% + 1  y1pos% = y1pos% - 1  x2pos% = x2pos% - 1  y2pos% = y2pos% - 1  y3pos% = y3pos% + 1  LOOP UNTIL t >= 12t = 0LINE (2, 2)-(638, 2), 15LINE (638, 2)-(319, 348), 15LINE (319, 348)-(2, 2), 15END SUBDEFSNG A-ZSUB triangle     'triangle draws an animated triangle and plays prompt musicSTATIC v%, b%v% = v% + 1           'STATIC variables keep events from happening everytimeb% = b% + 1            ' triangle is called                      'play every 31000th timeIF b% >= 31000 THEN b% = 0END IF  x1pos% = 2  y1pos% = 2  x2pos% = 638  y2pos% = 2  x3pos% = 319  y3pos% = 348  RANDOMIZE TIMER                                'draw triangle every 5250th timeIF v% = 1 OR v% >= 5250 THEN   DO   t = t + 1   c% = INT(RND * 15)     LINE (x1pos%, y1pos%)-(x2pos%, y2pos%), c%     LINE (x2pos%, y2pos%)-(x3pos%, y3pos%), c%     LINE (x3pos%, y3pos%)-(x1pos%, y1pos%), c%  x1pos% = x1pos% + 1  y1pos% = y1pos% - 1  x2pos% = x2pos% - 1  y2pos% = y2pos% - 1  y3pos% = y3pos% + 1  LOOP UNTIL t >= 12t = 0LINE (2, 2)-(638, 2), 15LINE (638, 2)-(319, 348), 15LINE (319, 348)-(2, 2), 15IF v% = 1 THEN v% = 2IF v% >= 5250 THEN v% = 0END IFEND SUBDEFINT A-ZSUB wasRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "Time is a fickle thing."CASE 5answer$ = "Not in the real sense."CASE 6answer$ = "No, " + name$ + " it wasn't."CASE 7answer$ = name$ + ", the probabitlity is less than 18%"END SELECTEND SUBSUB wereRANDOMIZE TIMERqNum% = INT(RND * 6) + 1SELECT CASE qNum%CASE 1yesCASE 2answer$ = "Yes, " + name$ + " there were"CASE 3ambCASE 4answer$ = "There were kittens."CASE 5answer$ = "Not then, " + name$CASE 6answer$ = "If there were, would you care?"END SELECTEND SUBSUB whatRANDOMIZE TIMERqNum% = INT(RND * 6) + 1SELECT CASE qNum%CASE 1answer$ = "What do I care, " + name$CASE 2answer$ = name$ + ", seek your answer elsewhere"CASE 3ambCASE 4answer$ = "What do you think?"CASE 5answer$ = "No one knows what."CASE 6answer$ = "Whatever."END SELECTEND SUBSUB whenRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1answer$ = name$ + ", someday."CASE 2answer$ = "Some other time " + name$CASE 3ambCASE 4answer$ = "You should not be obsessed with time."CASE 5answer$ = "Time is fleeting, " + name$CASE 6answer$ = "When you give up."CASE 7answer$ = "Whenever " + name$END SELECTEND SUBSUB whereRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1answer$ = "Did you look in your hand?"CASE 2answer$ = "Where you last left it."CASE 3ambCASE 5answer$ = "Over there."CASE 6answer$ = "On the cusp."CASE 7answer$ = name$ + " look within."END SELECTEND SUBSUB whoRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1answer$ = "The one you think " + name$ + "."CASE 2answer$ = name$ + " it is the one you least suspect."CASE 3ambCASE 4answer$ = "One close to " + name$ + "."CASE 5answer$ = "A mere ghost."CASE 6answer$ = "Think about it " + name$ + "."CASE 7answer$ = "Silence is best " + name$ + "."END SELECTEND SUBSUB whyRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1answer$ = name$ + "! Why not!"CASE 2answer$ = name$ + "because"CASE 3ambCASE 4answer$ = "Why not, " + name$ + "?"CASE 5answer$ = "Well."CASE 6answer$ = "Think about it " + name$ + "."CASE 7answer$ = "Because " + name$ + "."END SELECTEND SUBSUB willRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "Never " + name$ + "."CASE 5answer$ = "Soon."CASE 6answer$ = "Not for you, " + name$ + "."CASE 7answer$ = "Silence is best " + name$ + "."END SELECTEND SUBSUB wouldRANDOMIZE TIMERqNum% = INT(RND * 7) + 1SELECT CASE qNum%CASE 1yesCASE 2noCASE 3ambCASE 4answer$ = "woulda shoulda coulda"CASE 5answer$ = "If it could."CASE 6answer$ = "Maybe, " + name$ + "."CASE 7answer$ = "Would you, " + name$ + "?"END SELECTEND SUBSUB yesRANDOMIZE TIMERansNum% = INT(RND * 5) + 1SELECT CASE ansNum%CASE 1answer$ = "Possibly"CASE 2answer$ = "Yes, " + name$CASE 3answer$ = "Maybe."CASE 4answer$ = "Well of course."CASE 5answer$ = "It is a happening, " + name$END SELECTEND SUBDaniel J. Robinson             LIGHTNING SIMULATOR            www.nerc.com/~dstein/bas/      05-01-96 (00:00)       QB, QBasic, PDS        1472 43203    LIGHTNIN.BAS'                                 STORM''                       Lightning Simulator Program''        By Daniel J. Robinson <email>>   drobinso@olie.wvitcoe.wvnet.edu'                   West Virginia Institute of Technology''                       **** Press F5 to start ****'                    **** Press CTRL-BREAK to Stop ****'           **** Press SPACE to increase 'tower hit' probability ****'                     **** Press 1 to 'freeze frame' ****'                       **** Press 2 to 'unfreeze' ****''               *** best run on 60 MHz or faster computers ***''DECLARE SUB Intro ()DECLARE SUB CopyRight ()DECLARE SUB RedrawTower ()DECLARE SUB Stormdelay ()DECLARE SUB Quitprg ()DECLARE SUB EndGame ()DECLARE SUB Intracloud ()DECLARE SUB BranchOne ()DECLARE SUB BranchTwo ()DECLARE SUB BranchThree ()DIM SHARED towerhit, freezemain, sheet, TME, STORMGONE, INTENSE, DUR, DEL, x, MENU, THRS, closeone, SOUNDONDIM SHARED w, brone, brtwo, brthree, bhhone, bhhtwo, bhhthreeDIM SHARED propo, brlength, bronefactorDIM SHARED qxa(10), qxb(10), qxc(10), qxd(10), qxe(10)DIM SHARED qxf(10), qxg(10), qxh(10), qxi(10), qxj(10)DIM SHARED qxk(10), qxl(10), qxm(10), qxn(10), qxo(10)DIM SHARED qxp(10), qxq(10), qxr(10), qxs(10), qxt(10)DIM SHARED qxu(10), qxv(10), qxw(10), qxx(10)DIM SHARED a, B, c, d, e, f, g, h, i, j, k, l, m, n, o, pDIM SHARED ab, ac, ad, ae, af, ag, ah, ai, aj, akDIM SHARED al, am, an, ao, ap, aq, ar, xax, at, auDIM SHARED av, aw, ax, ay, az, ba, bb, bc, bd, beDIM SHARED BF, bg, bh, bi, bj, bk, bl, redun'caps lock switch'DEF SEG = 0'POKE &H417, (&H40)RANDOMIZE TIMERMENU = 0INTENSE = 111119SCREEN 9IntroCLSx = 1l& = 1SOUNDON = 0MENU = 0STORMGONE = 0INTENSE = 1TME = 0THRS = 0CLSIF x = 4 THEN TME = 100000IF x = 4 THEN THRS = 10000CLSSCREEN 9LET h& = 0STORMGONE = 0DOIF STORMGONE = 1 THEN QuitprgIF MENU = 1 THEN GOTO 11119LINE (0, 0)-(640, 309), 0, BFLINE (0, 320)-(640, 400), 8, BFRedrawTowerLINE (500, 310)-(500, 319), 8PSET (500, 310), 4PSET (500, 314), 4LET h& = h& + 1IF l& = 1 THEN GOTO 120IF h& = 80 THEN GOSUB 64120 LINE (0, 0)-(640, 309), 0, BFLINE (0, 320)-(640, 400), 8, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFRedrawTowerLET w = 0a = INT(RND * 640) + 1IF INKEY$ = CHR$(32) THEN a = 500IF INKEY$ = CHR$(81) THEN Quitprg  '*****DO NOT SAVE When you exit!!!!!!IF INKEY$ = CHR$(113) THEN Quitprg '*****DO NOT SAVE When you exit!!!!!!freezemain = 0    '^^^^^^^^^^^^^^make sure there is not a 'q' over the 'if'!!IF INKEY$ = CHR$(49) THEN LET freezemain = 1closeone = INT(RND * 25) + 1IF closeone = 1 THEN sheet = 0IF TME >= 50000 THEN sheet = 1IF TME >= 50000 THEN closeone = 0B = 0brlength = 10brlgen = 0brone = 0brtwo = 0brthree = 0bhhone = 1bhhtwo = 1bhhthree = 1redun = 0DOz = INT(RND * 10) + 9y = INT(RND * 16) + 1brlength = brlength - .2brlgen = brlgen + .2LET y = y - 8IF w = 0 THEN LET c = a + yIF w = 0 THEN LET d = B + zIF w = 1 THEN LET e = c + yIF w = 1 THEN LET f = d + zIF w = 2 THEN LET g = e + yIF INKEY$ = CHR$(49) THEN LET freezemain = 1IF w = 2 THEN LET h = f + zIF w = 3 THEN LET i = g + yIF w = 3 THEN LET j = h + zIF w = 4 THEN LET k = i + yIF w = 4 THEN LET l = j + zIF w = 5 THEN LET m = k + yIF w = 5 THEN LET n = l + zIF w = 6 THEN LET o = m + yIF w = 6 THEN LET p = n + zIF w = 7 THEN LET ab = o + yIF w = 7 THEN LET ac = p + zIF w = 8 THEN LET ad = ab + yIF w = 8 THEN LET ae = ac + zIF w = 9 THEN LET af = ad + yIF w = 9 THEN LET ag = ae + zIF w = 10 THEN LET ah = af + yIF w = 10 THEN LET ai = ag + zIF w = 11 THEN LET aj = ah + yIF w = 11 THEN LET ak = ai + zIF w = 12 THEN LET al = aj + yIF w = 12 THEN LET am = ak + zIF w = 13 THEN LET an = al + yIF w = 13 THEN LET ao = am + zIF w = 14 THEN LET ap = an + yIF w = 14 THEN LET aq = ao + zIF w = 15 THEN LET ar = ap + yIF w = 15 THEN LET xax = aq + zIF w = 16 THEN LET at = ar + yIF w = 16 THEN LET au = xax + zIF w = 17 THEN LET av = at + yIF w = 17 THEN LET aw = au + zIF w = 18 THEN LET ax = av + yIF w = 18 THEN LET ay = aw + zIF w = 19 THEN LET az = ax + yIF w = 19 THEN LET ba = ay + zIF w = 20 THEN LET bb = az + yIF w = 20 THEN LET bc = ba + zIF w = 21 THEN LET bd = bb + yIF w = 21 THEN LET be = bc + zIF w = 22 THEN LET BF = bd + yIF w = 22 THEN LET bg = be + zIF w = 23 THEN LET bh = BF + yIF w = 23 THEN LET bi = bg + zIF w = 24 THEN LET bj = bh + yIF w = 24 THEN LET bk = bi + zw = w - 1'Three seperate branch generatorsIF brone = 4 THEN GOTO 23613139131IF brtwo = 5 THEN GOTO 23613239132IF brthree = 6 THEN BranchThreeIF brone = 4 THEN brone = 0IF brtwo = 5 THEN brtwo = 0IF brthree = 6 THEN brthree = 0brone = brone + 1brtwo = brtwo + 1brthree = brthree + 1w = w + 1towerhit = 0donot = 0IF bk < 319 THEN bk = 319IF ABS(bj - 500) < 20 AND bk < 320 THEN donot = 1IF ABS(bj - 500) < 20 AND bk < 320 THEN bk = 310IF ABS(bj - 500) < 20 AND bk < 320 THEN bj = 500IF ABS(bj - 500) < 20 AND bk < 320 THEN towerhit = 1IF inkeys$ = CHR$(49) THEN LET freezemain = 1IF towerhit = 1 THEN LET closeone = 0LET w = w + 1IF w = 25 THEN GOTO 2LOOP2 LET u = (bk / 20) - 10IF bk > 199 THEN LET u = 40GOSUB 55GOSUB 39GOSUB 51GOSUB 93rannum = 0MOVE = 0ribbon = 0IF INKEY$ = CHR$(81) THEN Quitprg  '*****DO NOT SAVE When you exit!!!!!!IF INKEY$ = CHR$(113) THEN Quitprg '*****DO NOT SAVE When you exit!!!!!!w = INT(RND * 2) + 1 '^^^^^^^^^^^^^^make sure there is not a 'q' over the 'if'!!v = INT(RND * 2) + 1r = INT(RND * 2) + 1q = INT(RND * 2) + 1t = INT(RND * 2) + 1s = INT(RND * 2) + 1RedrawTowerLINE (a, B)-(c, d)   'S=1 IS nonbranched3      'FIRST RETURN STROKE'branchesLINE (qxa(1), qxb(1))-(qxc(1), qxd(1))LINE (qxc(1), qxd(1))-(qxe(1), qxf(1))LINE (qxe(1), qxf(1))-(qxg(1), qxh(1))LINE (qxg(1), qxh(1))-(qxi(1), qxj(1))LINE (qxi(1), qxj(1))-(qxk(1), qxl(1))LINE (qxk(1), qxl(1))-(qxm(1), qxn(1))LINE (qxm(1), qxn(1))-(qxo(1), qxp(1))LINE (qxo(1), qxp(1))-(qxq(1), qxr(1))LINE (qxq(1), qxr(1))-(qxs(1), qxt(1))LINE (qxs(1), qxt(1))-(qxu(1), qxv(1))LINE (qxu(1), qxv(1))-(qxw(1), qxx(1))LINE (qxas(1), qxbs(1))-(qxcs(1), qxds(1))LINE (qxcs(1), qxds(1))-(qxes(1), qxfs(1))LINE (qxes(1), qxfs(1))-(qxgs(1), qxhs(1))LINE (qxast(1), qxbst(1))-(qxcst(1), qxdst(1))LINE (qxcst(1), qxdst(1))-(qxest(1), qxfst(1))LINE (qxest(1), qxfst(1))-(qxgst(1), qxhst(1))LINE (qxa(2), qxb(2))-(qxc(2), qxd(2))LINE (qxc(2), qxd(2))-(qxe(2), qxf(2))LINE (qxe(2), qxf(2))-(qxg(2), qxh(2))LINE (qxg(2), qxh(2))-(qxi(2), qxj(2))LINE (qxi(2), qxj(2))-(qxk(2), qxl(2))LINE (qxk(2), qxl(2))-(qxm(2), qxn(2))LINE (qxm(2), qxn(2))-(qxo(2), qxp(2))LINE (qxo(2), qxp(2))-(qxq(2), qxr(2))LINE (qxq(2), qxr(2))-(qxs(2), qxt(2))LINE (qxs(2), qxt(2))-(qxu(2), qxv(2))LINE (qxu(2), qxv(2))-(qxw(2), qxx(2))LINE (qxas(2), qxbs(2))-(qxcs(2), qxds(2))LINE (qxcs(2), qxds(2))-(qxes(2), qxfs(2))LINE (qxes(2), qxfs(2))-(qxgs(2), qxhs(2))LINE (qxast(2), qxbst(2))-(qxcst(2), qxdst(2))LINE (qxcst(2), qxdst(2))-(qxest(2), qxfst(2))LINE (qxest(2), qxfst(2))-(qxgst(2), qxhst(2))LINE (qxa(3), qxb(3))-(qxc(3), qxd(3))LINE (qxc(3), qxd(3))-(qxe(3), qxf(3))LINE (qxe(3), qxf(3))-(qxg(3), qxh(3))LINE (qxg(3), qxh(3))-(qxi(3), qxj(3))LINE (qxi(3), qxj(3))-(qxk(3), qxl(3))LINE (qxk(3), qxl(3))-(qxm(3), qxn(3))LINE (qxm(3), qxn(3))-(qxo(3), qxp(3))LINE (qxo(3), qxp(3))-(qxq(3), qxr(3))LINE (qxq(3), qxr(3))-(qxs(3), qxt(3))LINE (qxs(3), qxt(3))-(qxu(3), qxv(3))LINE (qxu(3), qxv(3))-(qxw(3), qxx(3))LINE (qxas(3), qxbs(3))-(qxcs(3), qxds(3))LINE (qxcs(3), qxds(3))-(qxes(3), qxfs(3))LINE (qxes(3), qxfs(3))-(qxgs(3), qxhs(3))LINE (qxast(3), qxbst(3))-(qxcst(3), qxdst(3))LINE (qxcst(3), qxdst(3))-(qxest(3), qxfst(3))LINE (qxest(3), qxfst(3))-(qxgst(3), qxhst(3))LINE (qxa(4), qxb(4))-(qxc(4), qxd(4))LINE (qxc(4), qxd(4))-(qxe(4), qxf(4))LINE (qxe(4), qxf(4))-(qxg(4), qxh(4))LINE (qxg(4), qxh(4))-(qxi(4), qxj(4))LINE (qxi(4), qxj(4))-(qxk(4), qxl(4))LINE (qxk(4), qxl(4))-(qxm(4), qxn(4))LINE (qxm(4), qxn(4))-(qxo(4), qxp(4))LINE (qxo(4), qxp(4))-(qxq(4), qxr(4))LINE (qxq(4), qxr(4))-(qxs(4), qxt(4))LINE (qxs(4), qxt(4))-(qxu(4), qxv(4))LINE (qxu(4), qxv(4))-(qxw(4), qxx(4))LINE (qxas(4), qxbs(4))-(qxcs(4), qxds(4))LINE (qxcs(4), qxds(4))-(qxes(4), qxfs(4))LINE (qxes(4), qxfs(4))-(qxgs(4), qxhs(4))LINE (qxast(4), qxbst(4))-(qxcst(4), qxdst(4))LINE (qxcst(4), qxdst(4))-(qxest(4), qxfst(4))LINE (qxest(4), qxfst(4))-(qxgst(4), qxhst(4))LINE (qqxa(1), qqxb(1))-(qqxc(1), qqxd(1))LINE (qqxc(1), qqxd(1))-(qqxe(1), qqxf(1))LINE (qqxe(1), qqxf(1))-(qqxg(1), qqxh(1))LINE (qqxg(1), qqxh(1))-(qqxi(1), qqxj(1))LINE (qqxi(1), qqxj(1))-(qqxk(1), qqxl(1))LINE (qqxk(1), qqxl(1))-(qqxm(1), qqxn(1))LINE (qqxm(1), qqxn(1))-(qqxo(1), qqxp(1))LINE (qqxo(1), qqxp(1))-(qqxq(1), qqxr(1))LINE (qqxq(1), qqxr(1))-(qqxs(1), qqxt(1))LINE (qqxs(1), qqxt(1))-(qqxu(1), qqxv(1))LINE (qqxu(1), qqxv(1))-(qqxw(1), qqxx(1))LINE (qqxas(1), qqxbs(1))-(qqxcs(1), qqxds(1))LINE (qqxcs(1), qqxds(1))-(qqxes(1), qqxfs(1))LINE (qqxes(1), qqxfs(1))-(qqxgs(1), qqxhs(1))LINE (qqxast(1), qqxbst(1))-(qqxcst(1), qqxdst(1))LINE (qqxcst(1), qqxdst(1))-(qqxest(1), qqxfst(1))LINE (qqxest(1), qqxfst(1))-(qqxgst(1), qqxhst(1))LINE (qqxa(2), qqxb(2))-(qqxc(2), qqxd(2))LINE (qqxc(2), qqxd(2))-(qqxe(2), qqxf(2))LINE (qqxe(2), qqxf(2))-(qqxg(2), qqxh(2))LINE (qqxg(2), qqxh(2))-(qqxi(2), qqxj(2))LINE (qqxi(2), qqxj(2))-(qqxk(2), qqxl(2))LINE (qqxk(2), qqxl(2))-(qqxm(2), qqxn(2))LINE (qqxm(2), qqxn(2))-(qqxo(2), qqxp(2))LINE (qqxo(2), qqxp(2))-(qqxq(2), qqxr(2))LINE (qqxq(2), qqxr(2))-(qqxs(2), qqxt(2))LINE (qqxs(2), qqxt(2))-(qqxu(2), qqxv(2))LINE (qqxu(2), qqxv(2))-(qqxw(2), qqxx(2))LINE (qqxas(2), qqxbs(2))-(qqxcs(2), qqxds(2))LINE (qqxcs(2), qqxds(2))-(qqxes(2), qqxfs(2))LINE (qqxes(2), qqxfs(2))-(qqxgs(2), qqxhs(2))LINE (qqxast(2), qqxbst(2))-(qqxcst(2), qqxdst(2))LINE (qqxcst(2), qqxdst(2))-(qqxest(2), qqxfst(2))LINE (qqxest(2), qqxfst(2))-(qqxgst(2), qqxhst(2))LINE (qqxa(3), qqxb(3))-(qqxc(3), qqxd(3))LINE (qqxc(3), qqxd(3))-(qqxe(3), qqxf(3))LINE (qqxe(3), qqxf(3))-(qqxg(3), qqxh(3))LINE (qqxg(3), qqxh(3))-(qqxi(3), qqxj(3))LINE (qqxi(3), qqxj(3))-(qqxk(3), qqxl(3))LINE (qqxk(3), qqxl(3))-(qqxm(3), qqxn(3))LINE (qqxm(3), qqxn(3))-(qqxo(3), qqxp(3))LINE (qqxo(3), qqxp(3))-(qqxq(3), qqxr(3))LINE (qqxq(3), qqxr(3))-(qqxs(3), qqxt(3))LINE (qqxs(3), qqxt(3))-(qqxu(3), qqxv(3))LINE (qqxu(3), qqxv(3))-(qqxw(3), qqxx(3))LINE (qqxas(3), qqxbs(3))-(qqxcs(3), qqxds(3))LINE (qqxcs(3), qqxds(3))-(qqxes(3), qqxfs(3))LINE (qqxes(3), qqxfs(3))-(qqxgs(3), qqxhs(3))LINE (qqxast(3), qqxbst(3))-(qqxcst(3), qqxdst(3))LINE (qqxcst(3), qqxdst(3))-(qqxest(3), qqxfst(3))LINE (qqxest(3), qqxfst(3))-(qqxgst(3), qqxhst(3))LINE (qqxa(4), qqxb(4))-(qqxc(4), qqxd(4))LINE (qqxc(4), qqxd(4))-(qqxe(4), qqxf(4))LINE (qqxe(4), qqxf(4))-(qqxg(4), qqxh(4))LINE (qqxg(4), qqxh(4))-(qqxi(4), qqxj(4))LINE (qqxi(4), qqxj(4))-(qqxk(4), qqxl(4))LINE (qqxk(4), qqxl(4))-(qqxm(4), qqxn(4))LINE (qqxm(4), qqxn(4))-(qqxo(4), qqxp(4))LINE (qqxo(4), qqxp(4))-(qqxq(4), qqxr(4))LINE (qqxq(4), qqxr(4))-(qqxs(4), qqxt(4))LINE (qqxs(4), qqxt(4))-(qqxu(4), qqxv(4))LINE (qqxu(4), qqxv(4))-(qqxw(4), qqxx(4))LINE (qqxas(4), qqxbs(4))-(qqxcs(4), qqxds(4))LINE (qqxcs(4), qqxds(4))-(qqxes(4), qqxfs(4))LINE (qqxes(4), qqxfs(4))-(qqxgs(4), qqxhs(4))LINE (qqxast(4), qqxbst(4))-(qqxcst(4), qqxdst(4))LINE (qqxcst(4), qqxdst(4))-(qqxest(4), qqxfst(4))LINE (qqxest(4), qqxfst(4))-(qqxgst(4), qqxhst(4))'main channelLINE (a, B)-(c, d)LINE (a + 1, B)-(c + 1, d)LINE (a + 2, B)-(c + 2, d)LINE (a - 1, B)-(c - 1, d)     'LINE (c, d)-(e, f)LINE (c + 1, d)-(e + 1, f)LINE (c + 2, d)-(e + 2, f)LINE (c - 1, d)-(e - 1, f)     'LINE (e, f)-(g, h)LINE (e + 1, f)-(g + 1, h)LINE (e + 2, f)-(g + 2, h)LINE (e - 1, f)-(g - 1, h)     'LINE (g, h)-(i, j)LINE (g + 1, h)-(i + 1, j)LINE (g + 2, h)-(i + 2, j)LINE (g - 1, h)-(i - 1, j)         'LINE (i, j)-(k, l)7 LINE (i + 1, j)-(k + 1, l)LINE (i + 2, j)-(k + 2, l)LINE (i - 1, j)-(k - 1, l)          'LINE (k, l)-(m, n)LINE (k + 1, l)-(m + 1, n)LINE (k + 2, l)-(m + 2, n)LINE (k - 1, l)-(m - 1, n)           'LINE (m, n)-(o, p)LINE (m + 1, n)-(o + 1, p)LINE (m + 2, n)-(o + 2, p)LINE (m - 1, n)-(o - 1, p)          'LINE (o, p)-(ab, ac)LINE (o + 1, p)-(ab + 1, ac)LINE (o + 2, p)-(ab + 2, ac)LINE (o - 1, p)-(ab - 1, ac)LINE (ab, ac)-(ad, ae)LINE (ab + 1, ac)-(ad + 1, ae)LINE (ab + 2, ac)-(ad + 2, ae)LINE (ab - 1, ac)-(ad - 1, ae)LINE (ad, ae)-(af, ag)LINE (ad + 1, ae)-(af + 1, ag)LINE (ad + 2, ae)-(af + 2, ag)LINE (ad - 1, ae)-(af - 1, ag)8 LINE (af, ag)-(ah, ai)LINE (af + 1, ag)-(ah + 1, ai)LINE (af + 2, ag)-(ah + 2, ai)LINE (af - 1, ag)-(ah - 1, ai)LINE (ah, ai)-(aj, ak)LINE (ah + 1, ai)-(aj + 1, ak)LINE (ah + 2, ai)-(aj + 2, ak)LINE (ah - 1, ai)-(aj - 1, ak)LINE (aj, ak)-(al, am)LINE (aj + 1, ak)-(al + 1, am)LINE (aj + 2, ak)-(al + 2, am)LINE (aj - 1, ak)-(al - 1, am)4 LINE (al, am)-(an, ao)LINE (al + 1, am)-(an + 1, ao)LINE (al + 2, am)-(an + 2, ao)LINE (al - 1, am)-(an - 1, ao)LINE (an, ao)-(ap, aq)LINE (an + 1, ao)-(ap + 1, aq)LINE (an + 2, ao)-(ap + 2, aq)LINE (an - 1, ao)-(ap - 1, aq)LINE (ap, aq)-(ar, xax)LINE (ap + 1, aq)-(ar + 1, xax)LINE (ap + 2, aq)-(ar + 2, xax)LINE (ap - 1, aq)-(ar - 1, xax)LINE (ar, xax)-(at, au)LINE (ar + 1, xax)-(at + 1, au)LINE (ar + 2, xax)-(at + 2, au)LINE (ar - 1, xax)-(at - 1, au)6 LINE (at, au)-(av, aw)LINE (at + 1, au)-(av + 1, aw)LINE (at + 2, au)-(av + 2, aw)LINE (at - 1, au)-(av - 1, aw)LINE (av, aw)-(ax, ay)LINE (av + 1, aw)-(ax + 1, ay)LINE (av + 2, aw)-(ax + 2, ay)LINE (av - 1, aw)-(ax - 1, ay)LINE (ax, ay)-(az, ba)LINE (ax + 1, ay)-(az + 1, ba)LINE (ax + 2, ay)-(az + 2, ba)LINE (ax - 1, ay)-(az - 1, ba)LINE (az, ba)-(bb, bc)LINE (az + 1, ba)-(bb + 1, bc)LINE (az + 2, ba)-(bb + 2, bc)LINE (az - 1, ba)-(bb - 1, bc)LINE (bb, bc)-(bd, be)LINE (bb + 1, bc)-(bd + 1, be)LINE (bb + 2, bc)-(bd + 2, be)LINE (bb - 1, bc)-(bd - 1, be)5 LINE (bd, be)-(BF, bg)LINE (bd + 1, be)-(BF + 1, bg)LINE (bd + 2, be)-(BF + 2, bg)LINE (bd - 1, be)-(BF - 1, bg)LINE (BF, bg)-(bh, bi)LINE (BF + 1, bg)-(bh + 1, bi)LINE (BF + 2, bg)-(bh + 2, bi)LINE (BF - 1, bg)-(bh - 1, bi)LINE (bh, bi)-(bj, bk)LINE (bh + 1, bi)-(bj + 1, bk)LINE (bh + 2, bi)-(bj + 2, bk)LINE (bh - 1, bi)-(bj - 1, bk)IF closeone = 1 THEN LINE (0, 0)-(640, 400), 7, BFIF freezemain = 1 THEN GOSUB 1019133221GOSUB 77LINE (0, 0)-(640, 309), 0, BFLINE (0, 320)-(640, 400), 8, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFRedrawTowerGOSUB 45GOSUB 47IF closeone = 1 THEN GOTO 5430154301towerhit = 0RedrawTowerintra = INT(RND * 10) + 1IF intra = 1 THEN IntracloudRedrawTowerLET t = 0z = INT(RND * 10) + 1q = INT(RND * 4) + 1IF x = 3 THEN LET q = q + 10IF x = 1 THEN GOTO 87IF x = 4 THEN StormdelayIF x <> 4 THEN SLEEP q87 LOOP45 MOVE = 0rib = 0ribbon = INT(RND * 6) + 1rannum = INT(RND * 2) + 1IF rannum = 1 THEN mover = .25 ELSE mover = -.25IF ribbon = 1 THEN MOVE = movery = INT(RND * 15) + 1z = INT(RND * 10) + 1IF z > 7 THEN LET y = 1IF z < 4 THEN RETURNs = 0DOLINE (0, 0)-(640, 309), 0, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFLINE (0, 320)-(640, 400), 8, BFRedrawTowerLINE (a + 1 + rib, B)-(c + 1 + rib, d)LINE (c + 1 + rib, d)-(e + 1 + rib, f)LINE (e + 1 + rib, f)-(g + 1 + rib, h)LINE (g + 1 + rib, h)-(i + 1 + rib, j)LINE (i + 1 + rib, j)-(k + 1 + rib, l)LINE (k + 1 + rib, l)-(m + 1 + rib, n)LINE (m + 1 + rib, n)-(o + 1 + rib, p)LINE (o + 1 + rib, p)-(ab + 1 + rib, ac)LINE (ab + 1 + rib, ac)-(ad + 1 + rib, ae)LINE (ad + 1 + rib, ae)-(af + 1 + rib, ag)LINE (af + 1 + rib, ag)-(ah + 1 + rib, ai)LINE (ah + 1 + rib, ai)-(aj + 1 + rib, ak)LINE (aj + 1 + rib, ak)-(al + 1 + rib, am)LINE (al + 1 + rib, am)-(an + 1 + rib, ao)LINE (an + 1 + rib, ao)-(ap + 1 + rib, aq)LINE (ap + 1 + rib, aq)-(ar + 1 + rib, xax)LINE (ar + 1 + rib, xax)-(at + 1 + rib, au)LINE (at + 1 + rib, au)-(av + 1 + rib, aw)LINE (av + 1 + rib, aw)-(ax + 1 + rib, ay)LINE (ax + 1 + rib, ay)-(az + 1 + rib, ba)LINE (az + 1 + rib, ba)-(bb + 1 + rib, bc)LINE (bb + 1 + rib, bc)-(bd + 1 + rib, be)LINE (bd + 1 + rib, be)-(BF + 1 + rib, bg)LINE (BF + 1 + rib, bg)-(bh + 1 + rib, bi)LINE (bh + 1 + rib, bi)-(bj + 1, bk)LET rib = rib + MOVEIF closeone = 1 THEN LINE (0, 0)-(640, 400), 7, BF33225GOSUB 36LINE (0, 0)-(640, 309), 0, BFLINE (0, 320)-(640, 400), 8, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFRedrawTowerGOSUB 77LET s = s + 1IF s = y THEN RETURNLOOPs = 047 z = INT(RND * 10) + 1IF z > 4 THEN RETURNw = INT(RND * 3) + 1LET t = 0DOLINE (0, 0)-(640, 309), 0, BFLINE (0, 320)-(640, 400), 8, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFRedrawTowerLINE (a + 1 + rib, B)-(c + 1 + rib, d)LINE (c + 1 + rib, d)-(e + 1 + rib, f)LINE (e + 1 + rib, f)-(g + 1 + rib, h)LINE (g + 1 + rib, h)-(i + 1 + rib, j)LINE (i + 1 + rib, j)-(k + 1 + rib, l)LINE (k + 1 + rib, l)-(m + 1 + rib, n)LINE (m + 1 + rib, n)-(o + 1 + rib, p)LINE (o + 1 + rib, p)-(ab + 1 + rib, ac)LINE (ab + 1 + rib, ac)-(ad + 1 + rib, ae)LINE (ad + 1 + rib, ae)-(af + 1 + rib, ag)LINE (af + 1 + rib, ag)-(ah + 1 + rib, ai)LINE (ah + 1 + rib, ai)-(aj + 1 + rib, ak)LINE (aj + 1 + rib, ak)-(al + 1 + rib, am)LINE (al + 1 + rib, am)-(an + 1 + rib, ao)LINE (an + 1 + rib, ao)-(ap + 1 + rib, aq)LINE (ap + 1 + rib, aq)-(ar + 1 + rib, xax)LINE (ar + 1 + rib, xax)-(at + 1 + rib, au)LINE (at + 1 + rib, au)-(av + 1 + rib, aw)LINE (av + 1 + rib, aw)-(ax + 1 + rib, ay)LINE (ax + 1 + rib, ay)-(az + 1 + rib, ba)LINE (az + 1 + rib, ba)-(bb + 1 + rib, bc)LINE (bb + 1 + rib, bc)-(bd + 1 + rib, be)LINE (bd + 1 + rib, be)-(BF + 1 + rib, bg)LINE (BF + 1 + rib, bg)-(bh + 1 + rib, bi)LINE (bh + 1 + rib, bi)-(bj + 1, bk)LET rib = rib + MOVEIF closeone = 1 THEN LINE (0, 0)-(640, 400), 7, BF33229GOSUB 36LINE (0, 0)-(640, 309), 0, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFLINE (0, 320)-(640, 400), 8, BFRedrawTowerGOSUB 99LET t = t + 1IF t = w THEN RETURNLOOP77 LET u = 0DOLET u = u + 1IF u = 300 THEN RETURNLOOP99 LET u = 0DOLET u = u + 1IF u = 1400 THEN RETURNLOOP36 LET u = 0DOLET u = u + 1IF u = 200 THEN RETURNLOOP55 r = INT(RND * 10) + 1z = INT(RND * 10) + 3y = INT(RND * 16) + 1LET y = y - 12IF INKEY$ = CHR$(81) THEN Quitprg  '*****DO NOT SAVE When you exit!!!!!!IF INKEY$ = CHR$(113) THEN Quitprg '*****DO NOT SAVE When you exit!!!!!!RETURN   '^^^^^^^^^^^^^^make sure there is not a 'q' over the 'if'!!66 LET u = 0DOLET u = u + 1IF u = 90 THEN RETURNLOOP49 v = INT(RND * 30) + 1SLEEP vPLAY "mbt160l19o0aaacbcddaaddacl32bddal19edcbadabdca"RETURN85 IF bj > 199 THEN RETURNPSET (bj, bk), 1GOSUB 77PSET (bj, bk), 1PSET (bj + 1, bk - 1), 3PSET (bj - 1, bk - 1), 3GOSUB 77PSET (bj, bk), 3PSET (bj + 1, bk - 1), 0PSET (bj - 1, bk - 1), 0PSET (bj - 2, bk - 2), 3PSET (bj + 2, bk - 2), 3GOSUB 77PSET (bj, bk), 3PSET (bj - 2, bk - 2), 0PSET (bj + 2, bk - 2), 0PSET (bj + 3, bk - 1), 1PSET (bj - 3, bk - 1), 1PSET (bj - 3, bk - 3), 1PSET (bj + 3, bk - 3), 1GOSUB 77PSET (bj, bk), 3PSET (bj + 3, bk - 1), 0PSET (bj - 3, bk - 1), 0PSET (bj - 3, bk - 3), 0PSET (bj + 3, bk - 3), 0PSET (bj + 4, bk), 2PSET (bj - 4, bk), 2PSET (bj + 4, bk - 4), 1PSET (bj + 4, bk - 4), 1GOSUB 77PSET (bj, bk), 3PSET (bj, bk - 1), 2PSET (bj + 4, bk), 0PSET (bj - 4, bk), 0PSET (bj - 4, bk - 4), 0PSET (bj + 4, bk - 4), 0PSET (bj - 5, bk - 3), 3PSET (bj + 5, bk - 3), 3GOSUB 77PSET (bj - 5, bk - 3), 0PSET (bj + 5, bk - 3), 0PSET (bj - 6, bk - 2), 1PSET (bj + 6, bk - 2), 1GOSUB 77PSET (bj + 6, bk - 2), 0PSET (bj - 6, bk - 2), 0PSET (bj - 7, bk - 1), 2PSET (bj + 7, bk - 1), 2GOSUB 77PSET (bj + 7, bk - 1), 0PSET (bj - 7, bk - 1), 0PSET (bj - 8, bk), 2PSET (bj + 8, bk), 2GOSUB 66PSET (bj - 8, bk), 0PSET (bj + 8, bk), 0GOSUB 66PSET (bj, bk), 0PSET (bj, bk - 1), 0LINE (0, 320)-(640, 400), 8, BFRETURN15 IF bj > 199 THEN RETURNGOSUB 36LET a = 0DOIF a = 0 THEN LET c = 1IF a = 1 THEN LET c = 3IF a = 2 THEN LET c = 1IF a = 3 THEN LET c = 1IF a = 4 THEN LET c = 3IF a = 5 THEN LET c = 2IF a = 6 THEN LET c = 1IF a = 7 THEN LET c = 3IF a = 8 THEN LET c = 1IF a = 9 THEN LET c = 0z# = INT(RND * 4) + 1v# = INT(RND * 4) + 1y& = INT(RND * 2) + 1IF y& = 1 THEN LET z# = -z#PSET (bj, bk), cPSET (bj + 1, bk), cPSET (bj + 1, bk - 1), cPSET (bj - 1, bk - 1), cPSET (bj - 1, bk), cGOSUB 36PSET (bj, bk - 1), cGOSUB 36PSET (bj + z#, bk - v#), 2PSET (bj + 2, bk - 1), cPSET (bj - 2, bk - 1), cGOSUB 36PSET (bj, bk - 2), cPSET (bj - 1, bk - 2), cPSET (bj + 1, bk - 2), cPSET (bj + z#, bk - v#), 0GOSUB 36LET a = a + 1IF a = 11 THEN GOTO 41LOOP41 PSET (bj, bk), 0LINE (0, 320)-(640, 400), 8, BFRETURN39 LET w = 0DOz = INT(RND * u) + (u / 2)y = INT(RND * (u * 2)) + ur = INT(RND * 2) + 1IF r = 1 THEN LET z = -zIF w = 0 THEN LET a% = a + zIF w = 0 THEN LET B% = B + yIF w = 1 THEN LET c% = c + zIF w = 1 THEN LET d% = d + yIF w = 2 THEN LET e% = e + zIF w = 2 THEN LET f% = f + yIF w = 3 THEN LET g% = g + zIF w = 3 THEN LET h% = h + yIF w = 4 THEN LET i% = i + zIF w = 4 THEN LET j% = j + yIF w = 5 THEN LET k% = k + zIF w = 5 THEN LET l% = l + yIF w = 6 THEN LET m% = m + zIF w = 6 THEN LET n% = n + yLET w = w + 1IF w = 7 THEN RETURNLOOP51 LET w = 0DOy = INT(RND * 10) + 1z = INT(RND * u) + (u / 2)r = INT(RND * 2) + 1IF r = 1 THEN LET y = -yIF w = 0 THEN LET o% = a% + yIF w = 0 THEN LET p% = B% + zIF w = 1 THEN LET q% = c% + yIF w = 1 THEN LET r% = d% + zIF w = 2 THEN LET s% = e% + yIF w = 2 THEN LET t% = f% + zIF w = 3 THEN LET u% = g% + yIF w = 3 THEN LET v% = h% + zIF w = 4 THEN LET w% = i% + yIF w = 4 THEN LET x% = j% + zIF w = 5 THEN LET y% = k% + yIF w = 5 THEN LET z% = l% + zLET w = w + 1IF w = 6 THEN RETURNLOOP93 LET w = 0DOy = INT(RND * u) + u / 2z = INT(RND * 10) + 1r = INT(RND * 2) + 1IF r = 1 THEN LET z = -zIF w = 0 THEN LET a# = a% + zIF w = 0 THEN LET B# = B% + yIF w = 1 THEN LET c# = c% + zIF w = 1 THEN LET d# = d% + yIF w = 2 THEN LET e# = e% + zIF w = 2 THEN LET f# = f% + yIF w = 3 THEN LET g# = g% + zIF w = 3 THEN LET h# = h% + yIF w = 4 THEN LET i# = i% + zIF w = 4 THEN LET j# = j% + yIF w = 5 THEN LET k# = k% + zIF w = 5 THEN LET l# = l% + yLET w = w + 1IF w = 6 THEN RETURNLOOP64 LINE (160, 199)-(160, 100)LINE (161, 199)-(161, 100)LINE (162, 100)-(200, 115), 1LINE (166, 120)-(170, 120), 2LINE (168, 120)-(168, 110), 2LINE (168, 110)-(166, 112), 2CIRCLE (175, 112), 3, 2CIRCLE (175, 118), 3, 2LINE (174, 115)-(176, 115), 2LINE (200, 115)-(162, 130), 1PRINT "What a Great Time for Golf!"LET h& = 0SLEEP 4RETURN10191DOIF INKEY$ = CHR$(50) THEN GOTO 30102LOOP30102RETURN236131                                     'BRANCH ONE SUB'set starting pointIF w = 0 THEN qxa(bhhone) = aIF w = 0 THEN qxb(bhhone) = BIF w = 1 THEN qxa(bhhone) = cIF w = 1 THEN qxb(bhhone) = dIF w = 2 THEN qxa(bhhone) = eIF w = 2 THEN qxb(bhhone) = fIF w = 3 THEN qxa(bhhone) = gIF w = 3 THEN qxb(bhhone) = hIF w = 4 THEN qxa(bhhone) = iIF w = 4 THEN qxb(bhhone) = jIF w = 5 THEN qxa(bhhone) = kIF w = 5 THEN qxb(bhhone) = lIF w = 6 THEN qxa(bhhone) = mIF w = 6 THEN qxb(bhhone) = nIF w = 7 THEN qxa(bhhone) = oIF w = 7 THEN qxb(bhhone) = pIF w = 8 THEN qxa(bhhone) = abIF w = 8 THEN qxb(bhhone) = acIF w = 9 THEN qxa(bhhone) = adIF w = 9 THEN qxb(bhhone) = aeIF w = 10 THEN qxa(bhhone) = afIF w = 10 THEN qxb(bhhone) = agIF w = 11 THEN qxa(bhhone) = ahIF w = 11 THEN qxb(bhhone) = aiIF w = 12 THEN qxa(bhhone) = ajIF w = 12 THEN qxb(bhhone) = akIF w = 13 THEN qxa(bhhone) = alIF w = 13 THEN qxb(bhhone) = amIF w = 14 THEN qxa(bhhone) = anIF w = 14 THEN qxb(bhhone) = aoIF w = 15 THEN qxa(bhhone) = apIF w = 15 THEN qxb(bhhone) = aqIF w = 16 THEN qxa(bhhone) = arIF w = 16 THEN qxb(bhhone) = xaxIF w = 17 THEN qxa(bhhone) = atIF w = 17 THEN qxb(bhhone) = auIF w = 18 THEN qxa(bhhone) = avIF w = 18 THEN qxb(bhhone) = awIF w = 19 THEN qxa(bhhone) = axIF w = 19 THEN qxb(bhhone) = ayIF w = 20 THEN qxa(bhhone) = azIF w = 20 THEN qxb(bhhone) = baIF w = 21 THEN qxa(bhhone) = bbIF w = 21 THEN qxb(bhhone) = bcIF w = 22 THEN qxa(bhhone) = bdIF w = 22 THEN qxb(bhhone) = beIF w = 23 THEN qxa(bhhone) = BFIF w = 23 THEN qxb(bhhone) = bgIF w = 24 THEN qxa(bhhone) = bhIF w = 24 THEN qxb(bhhone) = bi                   'determine general propogation directionbdir = INT(RND * 2) + 1redun = redun + bronefactorIF ABS(redun) > 2 THEN bronefactor = -bronefactorIF ABS(redun) > 2 THEN redun = 0bronefactor = -1IF bdir = 1 THEN bronefactor = 1propo = (brlength * bronefactor)bronesubone = 0bronesubtwo = 0brw = 0DOxx = INT(RND * (5 - brlgen)) + (5 - brlgen)yy = INT(RND * (14 - brlgen)) + (3 - brlgen)xx = xx * bronefactorIF brw = 0 THEN qxc(bhhone) = qxa(bhhone) + xx + propoIF brw = 0 THEN qxd(bhhone) = qxb(bhhone) + yyIF brw = 1 THEN qxe(bhhone) = qxc(bhhone) + xx + propoIF brw = 1 THEN qxf(bhhone) = qxd(bhhone) + yyIF brw = 2 THEN qxg(bhhone) = qxe(bhhone) + xx + propoIF brw = 2 THEN qxh(bhhone) = qxf(bhhone) + yyIF brw = 3 THEN qxi(bhhone) = qxg(bhhone) + xx + propoIF brw = 3 THEN qxj(bhhone) = qxh(bhhone) + yyIF brw = 4 THEN qxk(bhhone) = qxi(bhhone) + xx + propoIF brw = 4 THEN qxl(bhhone) = qxj(bhhone) + yyIF brw = 5 THEN qxm(bhhone) = qxk(bhhone) + xx + propoIF brw = 5 THEN qxn(bhhone) = qxl(bhhone) + yyIF brw = 6 THEN qxo(bhhone) = qxm(bhhone) + xx + propoIF brw = 6 THEN qxp(bhhone) = qxn(bhhone) + yyIF brw = 7 THEN qxq(bhhone) = qxo(bhhone) + xx + propoIF brw = 7 THEN qxr(bhhone) = qxp(bhhone) + yyIF brw = 8 THEN qxs(bhhone) = qxq(bhhone) + xx + propoIF brw = 8 THEN qxt(bhhone) = qxr(bhhone) + yyIF brw = 9 THEN qxu(bhhone) = qxs(bhhone) + xx + propoIF brw = 9 THEN qxv(bhhone) = qxt(bhhone) + yyIF brw = 10 THEN qxw(bhhone) = qxu(bhhone) + xx + propoIF brw = 10 THEN qxx(bhhone) = qxv(bhhone) + yyIF bronesubone = 3 THEN GOTO 2361311391311IF bronesubtwo = 5 THEN GOTO 2361312391312bronesubone = bronesubone + 1bronesubtwo = bronesubtwo + 1brw = brw + 1IF brw = 11 THEN GOTO 1263LOOP1263bhhone = bhhone + 1GOTO 391312361311 'first branch sub branchIF brw = 0 THEN qxas(bhhone) = qxc(bhhone)IF brw = 0 THEN qxbs(bhhone) = qxd(bhhone)IF brw = 1 THEN qxas(bhhone) = qxe(bhhone)IF brw = 1 THEN qxbs(bhhone) = qxf(bhhone)IF brw = 2 THEN qxas(bhhone) = qxg(bhhone)IF brw = 2 THEN qxbs(bhhone) = qxh(bhhone)IF brw = 3 THEN qxas(bhhone) = qxi(bhhone)IF brw = 3 THEN qxbs(bhhone) = qxj(bhhone)IF brw = 4 THEN qxas(bhhone) = qxk(bhhone)IF brw = 4 THEN qxbs(bhhone) = qxl(bhhone)IF brw = 5 THEN qxas(bhhone) = qxm(bhhone)IF brw = 5 THEN qxbs(bhhone) = qxn(bhhone)IF brw = 6 THEN qxas(bhhone) = qxo(bhhone)IF brw = 6 THEN qxbs(bhhone) = qxp(bhhone)IF brw = 7 THEN qxas(bhhone) = qxq(bhhone)IF brw = 7 THEN qxbs(bhhone) = qxr(bhhone)IF brw = 8 THEN qxas(bhhone) = qxs(bhhone)IF brw = 8 THEN qxbs(bhhone) = qxt(bhhone)IF brw = 9 THEN qxas(bhhone) = qxu(bhhone)IF brw = 9 THEN qxbs(bhhone) = qxv(bhhone)brws = 0DOxx = INT(RND * (6 - brlgen)) + (1 - brlgen)yy = INT(RND * (9 - brlgen)) + (9 - brlgen)IF brws = 0 THEN qxcs(bhhone) = qxas(bhhone) + xx + propoIF brws = 0 THEN qxds(bhhone) = qxbs(bhhone) + yyIF brws = 1 THEN qxes(bhhone) = qxcs(bhhone) + xx + propoIF brws = 1 THEN qxfs(bhhone) = qxds(bhhone) + yyIF brws = 2 THEN qxgs(bhhone) = qxes(bhhone) + xx + propoIF brws = 2 THEN qxhs(bhhone) = qxfs(bhhone) + yybrws = brws + 1IF brws = 3 THEN GOTO 391311LOOP2361312IF brw = 0 THEN qxast(bhhone) = qxc(bhhone)IF brw = 0 THEN qxbst(bhhone) = qxd(bhhone)IF brw = 1 THEN qxast(bhhone) = qxe(bhhone)IF brw = 1 THEN qxbst(bhhone) = qxf(bhhone)IF brw = 2 THEN qxast(bhhone) = qxg(bhhone)IF brw = 2 THEN qxbst(bhhone) = qxh(bhhone)IF brw = 3 THEN qxast(bhhone) = qxi(bhhone)IF brw = 3 THEN qxbst(bhhone) = qxj(bhhone)IF brw = 4 THEN qxast(bhhone) = qxk(bhhone)IF brw = 4 THEN qxbst(bhhone) = qxl(bhhone)IF brw = 5 THEN qxast(bhhone) = qxm(bhhone)IF brw = 5 THEN qxbst(bhhone) = qxn(bhhone)IF brw = 6 THEN qxast(bhhone) = qxo(bhhone)IF brw = 6 THEN qxbst(bhhone) = qxp(bhhone)IF brw = 7 THEN qxast(bhhone) = qxq(bhhone)IF brw = 7 THEN qxbst(bhhone) = qxr(bhhone)IF brw = 8 THEN qxast(bhhone) = qxs(bhhone)IF brw = 8 THEN qxbst(bhhone) = qxt(bhhone)IF brw = 9 THEN qxast(bhhone) = qxu(bhhone)IF brw = 9 THEN qxbst(bhhone) = qxv(bhhone)brws = 0DOxx = INT(RND * (6 - brlgen)) + (1 - brlgen)yy = INT(RND * (9 - brlgen)) + (9 - brlgen)IF brws = 0 THEN qxcst(bhhone) = qxast(bhhone) + xx + propoIF brws = 0 THEN qxdst(bhhone) = qxbst(bhhone) + yyIF brws = 1 THEN qxest(bhhone) = qxcst(bhhone) + xx + propoIF brws = 1 THEN qxfst(bhhone) = qxdst(bhhone) + yyIF brws = 2 THEN qxgst(bhhone) = qxest(bhhone) + xx + propoIF brws = 2 THEN qxhst(bhhone) = qxfst(bhhone) + yybrws = brws + 1IF brws = 3 THEN GOTO 391312LOOP                     '************************236132                                     'BRANCH TWO SUB'set starting pointIF w = 0 THEN qqxa(bhhtwo) = aIF w = 0 THEN qqxb(bhhtwo) = BIF w = 1 THEN qqxa(bhhtwo) = cIF w = 1 THEN qqxb(bhhtwo) = dIF w = 2 THEN qqxa(bhhtwo) = eIF w = 2 THEN qqxb(bhhtwo) = fIF w = 3 THEN qqxa(bhhtwo) = gIF w = 3 THEN qqxb(bhhtwo) = hIF w = 4 THEN qqxa(bhhtwo) = iIF w = 4 THEN qqxb(bhhtwo) = jIF w = 5 THEN qqxa(bhhtwo) = kIF w = 5 THEN qqxb(bhhtwo) = lIF w = 6 THEN qqxa(bhhtwo) = mIF w = 6 THEN qqxb(bhhtwo) = nIF w = 7 THEN qqxa(bhhtwo) = oIF w = 7 THEN qqxb(bhhtwo) = pIF w = 8 THEN qqxa(bhhtwo) = abIF w = 8 THEN qqxb(bhhtwo) = acIF w = 9 THEN qqxa(bhhtwo) = adIF w = 9 THEN qqxb(bhhtwo) = aeIF w = 10 THEN qqxa(bhhtwo) = afIF w = 10 THEN qqxb(bhhtwo) = agIF w = 11 THEN qqxa(bhhtwo) = ahIF w = 11 THEN qqxb(bhhtwo) = aiIF w = 12 THEN qqxa(bhhtwo) = ajIF w = 12 THEN qqxb(bhhtwo) = akIF w = 13 THEN qqxa(bhhtwo) = alIF w = 13 THEN qqxb(bhhtwo) = amIF w = 14 THEN qqxa(bhhtwo) = anIF w = 14 THEN qqxb(bhhtwo) = aoIF w = 15 THEN qqxa(bhhtwo) = apIF w = 15 THEN qqxb(bhhtwo) = aqIF w = 16 THEN qqxa(bhhtwo) = arIF w = 16 THEN qqxb(bhhtwo) = xaxIF w = 17 THEN qqxa(bhhtwo) = atIF w = 17 THEN qqxb(bhhtwo) = auIF w = 18 THEN qqxa(bhhtwo) = avIF w = 18 THEN qqxb(bhhtwo) = awIF w = 19 THEN qqxa(bhhtwo) = axIF w = 19 THEN qqxb(bhhtwo) = ayIF w = 20 THEN qqxa(bhhtwo) = azIF w = 20 THEN qqxb(bhhtwo) = baIF w = 21 THEN qqxa(bhhtwo) = bbIF w = 21 THEN qqxb(bhhtwo) = bcIF w = 22 THEN qqxa(bhhtwo) = bdIF w = 22 THEN qqxb(bhhtwo) = beIF w = 23 THEN qqxa(bhhtwo) = BFIF w = 23 THEN qqxb(bhhtwo) = bgIF w = 24 THEN qqxa(bhhtwo) = bhIF w = 24 THEN qqxb(bhhtwo) = bi'determine general propogation directionbdirt = INT(RND * 2) + 1bronefactort = -1redun = redun + bronefactortIF ABS(redun) > 2 THEN bronefactort = -bronefactortIF ABS(redun) > 2 THEN redun = 0IF bdirt = 1 THEN bronefactort = 1propot = (brlength * bronefactort)bronesubonet = 0bronesubtwot = 0brwt = 0DOxxt = INT(RND * (5 - brlgen)) + (5 - brlgen)yyt = INT(RND * (14 - brlgen)) + (3 - brlgen)xxt = xxt * bronefactortIF brwt = 0 THEN qqxc(bhhtwo) = qqxa(bhhtwo) + xxt + propotIF brwt = 0 THEN qqxd(bhhtwo) = qqxb(bhhtwo) + yytIF brwt = 1 THEN qqxe(bhhtwo) = qqxc(bhhtwo) + xxt + propotIF brwt = 1 THEN qqxf(bhhtwo) = qqxd(bhhtwo) + yytIF brwt = 2 THEN qqxg(bhhtwo) = qqxe(bhhtwo) + xxt + propotIF brwt = 2 THEN qqxh(bhhtwo) = qqxf(bhhtwo) + yytIF brwt = 3 THEN qqxi(bhhtwo) = qqxg(bhhtwo) + xxt + propotIF brwt = 3 THEN qqxj(bhhtwo) = qqxh(bhhtwo) + yytIF brwt = 4 THEN qqxk(bhhtwo) = qqxi(bhhtwo) + xxt + propotIF brwt = 4 THEN qqxl(bhhtwo) = qqxj(bhhtwo) + yytIF brwt = 5 THEN qqxm(bhhtwo) = qqxk(bhhtwo) + xxt + propotIF brwt = 5 THEN qqxn(bhhtwo) = qqxl(bhhtwo) + yytIF brwt = 6 THEN qqxo(bhhtwo) = qqxm(bhhtwo) + xxt + propotIF brwt = 6 THEN qqxp(bhhtwo) = qqxn(bhhtwo) + yytIF brwt = 7 THEN qqxq(bhhtwo) = qqxo(bhhtwo) + xxt + propotIF brwt = 7 THEN qqxr(bhhtwo) = qqxp(bhhtwo) + yytIF brwt = 8 THEN qqxs(bhhtwo) = qqxq(bhhtwo) + xxt + propotIF brwt = 8 THEN qqxt(bhhtwo) = qqxr(bhhtwo) + yytIF brwt = 9 THEN qqxu(bhhtwo) = qqxs(bhhtwo) + xxt + propotIF brwt = 9 THEN qqxv(bhhtwo) = qqxt(bhhtwo) + yytIF brwt = 10 THEN qqxw(bhhtwo) = qqxu(bhhtwo) + xxt + propotIF brwt = 10 THEN qqxx(bhhtwo) = qqxv(bhhtwo) + yytIF bronesubonet = 3 THEN GOTO 2361321391321IF bronesubtwot = 5 THEN GOTO 2361322391322bronesubonet = bronesubonet + 1bronesubtwot = bronesubtwot + 1brwt = brwt + 1IF brwt = 11 THEN GOTO 12632LOOP12632bhhtwo = bhhtwo + 1GOTO 391322361321 'first branch sub branchIF brwt = 0 THEN qqxas(bhhtwo) = qqxc(bhhtwo)IF brwt = 0 THEN qqxbs(bhhtwo) = qqxd(bhhtwo)IF brwt = 1 THEN qqxas(bhhtwo) = qqxe(bhhtwo)IF brwt = 1 THEN qqxbs(bhhtwo) = qqxf(bhhtwo)IF brwt = 2 THEN qqxas(bhhtwo) = qqxg(bhhtwo)IF brwt = 2 THEN qqxbs(bhhtwo) = qqxh(bhhtwo)IF brwt = 3 THEN qqxas(bhhtwo) = qqxi(bhhtwo)IF brwt = 3 THEN qqxbs(bhhtwo) = qqxj(bhhtwo)IF brwt = 4 THEN qqxas(bhhtwo) = qqxk(bhhtwo)IF brwt = 4 THEN qqxbs(bhhtwo) = qqxl(bhhtwo)IF brwt = 5 THEN qqxas(bhhtwo) = qqxm(bhhtwo)IF brwt = 5 THEN qqxbs(bhhtwo) = qqxn(bhhtwo)IF brwt = 6 THEN qqxas(bhhtwo) = qqxo(bhhtwo)IF brwt = 6 THEN qqxbs(bhhtwo) = qqxp(bhhtwo)IF brwt = 7 THEN qqxas(bhhtwo) = qqxq(bhhtwo)IF brwt = 7 THEN qqxbs(bhhtwo) = qqxr(bhhtwo)IF brwt = 8 THEN qqxas(bhhtwo) = qqxs(bhhtwo)IF brwt = 8 THEN qqxbs(bhhtwo) = qqxt(bhhtwo)IF brwt = 9 THEN qqxas(bhhtwo) = qqxu(bhhtwo)IF brwt = 9 THEN qqxbs(bhhtwo) = qqxv(bhhtwo)brwst = 0DOxxt = INT(RND * (6 - brlgen)) + (1 - brlgen)yyt = INT(RND * (9 - brlgen)) + (9 - brlgen)IF brwst = 0 THEN qqxcs(bhhtwo) = qqxas(bhhtwo) + xxt + propotIF brwst = 0 THEN qqxds(bhhtwo) = qqxbs(bhhtwo) + yytIF brwst = 1 THEN qqxes(bhhtwo) = qqxcs(bhhtwo) + xxt + propotIF brwst = 1 THEN qqxfs(bhhtwo) = qqxds(bhhtwo) + yytIF brwst = 2 THEN qqxgs(bhhtwo) = qqxes(bhhtwo) + xxt + propotIF brwst = 2 THEN qqxhs(bhhtwo) = qqxfs(bhhtwo) + yytbrwst = brwst + 1IF brwst = 3 THEN GOTO 391321LOOP2361322IF brwt = 0 THEN qqxast(bhhtwo) = qqxc(bhhtwo)IF brwt = 0 THEN qqxbst(bhhtwo) = qqxd(bhhtwo)IF brwt = 1 THEN qqxast(bhhtwo) = qqxe(bhhtwo)IF brwt = 1 THEN qqxbst(bhhtwo) = qqxf(bhhtwo)IF brwt = 2 THEN qqxast(bhhtwo) = qqxg(bhhtwo)IF brwt = 2 THEN qqxbst(bhhtwo) = qqxh(bhhtwo)IF brwt = 3 THEN qqxast(bhhtwo) = qqxi(bhhtwo)IF brwt = 3 THEN qqxbst(bhhtwo) = qqxj(bhhtwo)IF brwt = 4 THEN qqxast(bhhtwo) = qqxk(bhhtwo)IF brwt = 4 THEN qqxbst(bhhtwo) = qqxl(bhhtwo)IF brwt = 5 THEN qqxast(bhhtwo) = qqxm(bhhtwo)IF brwt = 5 THEN qqxbst(bhhtwo) = qqxn(bhhtwo)IF brwt = 6 THEN qqxast(bhhtwo) = qqxo(bhhtwo)IF brwt = 6 THEN qqxbst(bhhtwo) = qqxp(bhhtwo)IF brwt = 7 THEN qqxast(bhhtwo) = qqxq(bhhtwo)IF brwt = 7 THEN qqxbst(bhhtwo) = qqxr(bhhtwo)IF brwt = 8 THEN qqxast(bhhtwo) = qqxs(bhhtwo)IF brwt = 8 THEN qqxbst(bhhtwo) = qqxt(bhhtwo)IF brwt = 9 THEN qqxast(bhhtwo) = qqxu(bhhtwo)IF brwt = 9 THEN qqxbst(bhhtwo) = qqxv(bhhtwo)brwst = 0DOxxt = INT(RND * (6 - brlgen)) + (1 - brlgen)yyt = INT(RND * (9 - brlgen)) + (9 - brlgen)IF brwst = 0 THEN qqxcst(bhhtwo) = qqxast(bhhtwo) + xxt + propotIF brwst = 0 THEN qqxdst(bhhtwo) = qqxbst(bhhtwo) + yytIF brwst = 1 THEN qqxest(bhhtwo) = qqxcst(bhhtwo) + xxt + propotIF brwst = 1 THEN qqxfst(bhhtwo) = qqxdst(bhhtwo) + yytIF brwst = 2 THEN qqxgst(bhhtwo) = qqxest(bhhtwo) + xxt + propotIF brwst = 2 THEN qqxhst(bhhtwo) = qqxfst(bhhtwo) + yytbrwst = brwst + 1IF brwst = 3 THEN GOTO 391322LOOPSUB BranchOneEND SUBSUB BranchThreeEND SUBSUB BranchTwoEND SUBSUB CopyRightLOCATE 1, 2COLOR 14PRINT "c . 1994 by Daniel Robinson"CIRCLE (11, 8), 7, 14END SUBSUB EndGameCLSENDEND SUBSUB IntracloudLINE (0, 0)-(640, 309), 0, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFLINE (0, 320)-(640, 400), 8, BFtimes = 0DOqw = INT(RND * 100) + 1        '********MUST HAVE GRAPHICS MONITOR TO RUN***LET qa = 0                     '********MUST HAVE GRAPHICS MONITOR TO RUN***times = times + 1IF times > 1 THEN GOTO 90210DO                            '********MUST HAVE GRAPHICS MONITOR TO RUN***qy = INT(RND * 10) + 1         '********MUST HAVE GRAPHICS MONITOR TO RUN***qx = INT(RND * 10) + 1         '********MUST HAVE GRAPHICS MONITOR TO RUN***qm = INT(RND * 4) + 1          '********MUST HAVE GRAPHICS MONITOR TO RUN***LET qx = qx - 5 + qm - 2         '********MUST HAVE GRAPHICS MONITOR TO RUN***LINE (qa, qw)-(qa + qy, qw + qx) '********MUST HAVE GRAPHICS MONITOR TO RUN***LINE (qa + 2, qw)-(qa + qy + 2, qw + qx)qs = INT(RND * 10) + 1IF qs < 2 THEN GOSUB 30ender = INT(RND * 500) + 500LET qw = qw + qxLET qa = qa + qyIF qa > ender THEN GOTO 10LOOP10qk = INT(RND * 10) + 1IF qk < 3 THEN GOSUB 23LOOP30 LET qf = 0LET qg = qw + qxLET qn = qa + qyneg = INT(RND * 2) + 1ffg = 1IF neg = 1 THEN ffg = -1DOLET qf = qf + 1ql = INT(RND * 14) + 1qh = INT(RND * 10) + 1qz = INT(RND * 10) + 1qz = qz * ffgqe = INT(RND * 10) + 1qe = qe * ffgLET ql = ql + qeLINE (qn, qg)-(qn + qh, qg + ql)LET qg = qg + qlLET qn = qn + qhIF qf > 7 THEN RETURNLOOP23 LET qr = 0LET qa = 199LET qw = qw + 1qB = INT(RND * 10) + 1DOIF qr = 0 THEN GOSUB 44IF qr = 1 THEN LET qc = 3IF qr = 2 THEN GOSUB 44IF qr = 3 THEN LET qc = 0LET qr = qr + 1IF qr = 4 THEN RETURNLOOP44 IF qB > 5 THEN LET qc = 1IF qB <= 5 THEN LET qc = 2RETURN9 LET qt = 0DOLET qt = qt + 1IF qt = 100 THEN RETURNGOTO 90210LOOP90210LINE (0, 0)-(640, 309), 0, BFLINE (0, 310)-(499, 319), 0, BFLINE (501, 310)-(640, 319), 0, BFLINE (0, 320)-(640, 400), 8, BFEND SUBSUB IntroCopyRightB = 0a = 320g = 0l = 0s = 10COLOR 15DOe = INT(RND * 10) - 5c = a + ed = B + 5LINE (a, B)-(c, d), 15LINE (a + 1, B)-(c + 1, d), 15LINE (a + 2, B)-(c + 2, d), 15g = g + 1IF g = 5 THEN LINE (a, B)-(a - 40, B + 60)IF g = 5 THEN LINE (a - 40, B + 60)-(a - 60, B + 70)IF g = 5 THEN LINE (a - 40, B + 60)-(a - 42, B + 90)IF g = 15 THEN LINE (a, B)-(a + 40, B + 60)IF g = 15 THEN LINE (a + 40, B + 60)-(a + 60, B + 70)IF g = 15 THEN LINE (a + 40, B + 60)-(a + 42, B + 90)IF g = 20 THEN LINE (a, B)-(a - 30, B + 60)IF g = 20 THEN LINE (a - 30, B + 60)-(a - 60, B + 70)IF g = 20 THEN LINE (a - 30, B + 60)-(a - 42, B + 90)IF g = 25 THEN LINE (a, B)-(a + 40, B + 60)IF g = 25 THEN LINE (a + 40, B + 60)-(a + 60, B + 70)IF g = 25 THEN LINE (a + 40, B + 60)-(a + 42, B + 90)IF g = 45 THEN LINE (a, B)-(a + 40, B + 60)IF g = 45 THEN LINE (a + 40, B + 60)-(a + 60, B + 70)IF g = 45 THEN LINE (a + 40, B + 60)-(a + 42, B + 90)IF g = 60 THEN LINE (a, B)-(a - 40, B + 60)IF g = 60 THEN LINE (a - 40, B + 60)-(a - 60, B + 70)IF g = 60 THEN LINE (a - 40, B + 60)-(a - 42, B + 90)B = da = cIF B > 400 THEN GOTO 90217LOOP90217LINE (120, 320)-(530, 200), 0, BFLINE (120, 320)-(530, 200), 15, BRC = 8m = 120LINE (10 + m, 300)-(70 + m, 310), RC, BF    'SLINE (70 + m, 300)-(50 + m, 260), RC, BFLINE (70 + m, 260)-(10 + m, 250), RC, BFLINE (10 + m, 250)-(30 + m, 220), RC, BFLINE (10 + m, 220)-(70 + m, 210), RC, BFLINE (80 + m, 210)-(140 + m, 310), RC, BF           'TLINE (80 + m, 220)-(140 + m, 310), 0, BFLINE (100 + m, 220)-(120 + m, 310), RC, BFLET z = m + 70LINE (80 + z, 210)-(140 + z, 310), RC, BF     'OLINE (100 + z, 220)-(120 + z, 300), 0, BFLET z = m + 140LINE (80 + z, 210)-(140 + z, 310), RC, BF     'RLINE (100 + z, 220)-(120 + z, 310), 0, BFLINE (100 + z, 260)-(140 + z, 310), 0, BFLINE (100 + z, 250)-(140 + z, 260), RC, BFFOR r = 1 TO 20LINE (90 + z + r, 260)-(130 + z + r, 310), RCNEXT rLET z = m + 220                                 'MLINE (80 + z, 210)-(100 + z, 310), RC, BFLINE (160 + z, 210)-(180 + z, 310), RC, BFFOR m = 1 TO 20LINE (80 + z + m, 210)-(120 + z + m, 270), RCLINE (160 + z + m, 210)-(120 + z + m, 270), RCNEXT mCOLOR 15DOw = INT(RND * 10) + 1f = 05505q$ = INKEY$IF q$ = "s" THEN GOTO 87102LOCATE 12, 1PRINT "PRESS 'S' TO START"t = 0231t = t + 1q$ = INKEY$IF q$ = "s" THEN GOTO 87102IF t < 200 THEN GOTO 231LOCATE 12, 1PRINT "                        "l = 0566l = l + 1q$ = INKEY$IF q$ = "s" THEN GOTO 87102IF l < 400 THEN GOTO 566f = f + 1IF f < w THEN GOTO 5505w = INT(RND * 3) + 1f = 05506q$ = INKEY$IF q$ = "s" THEN GOTO 87102LOCATE 12, 1PRINT "PRESS 'S' TO START"t = 0631t = t + 1q$ = INKEY$IF q$ = "s" THEN GOTO 87102IF t < 200 THEN GOTO 631LOCATE 12, 1PRINT "                        "l = 05666l = l + 1q$ = INKEY$IF q$ = "s" THEN GOTO 87102IF l < 1400 THEN GOTO 5666f = f + 1IF f < w THEN GOTO 5506g = INT(RND * 10000) + 6000f = 04049f = f + 1q$ = INKEY$IF q$ = "s" THEN GOTO 87102IF f < g THEN GOTO 4049LOOP87102END SUBSUB Quitprg55112CLSINPUT "Do you want to quit the program now? (Enter 'Y' or 'N'): ", ender$tal = 0IF ender$ = "Y" THEN tal = 1IF ender$ = "N" THEN tal = 1IF tal = 0 THEN GOTO 55112IF ender$ = "Y" THEN EndGameIF ender$ = "N" THEN MENU = 1END SUBSUB RedrawTowertcolor = 8IF towerhit = 1 THEN tcolor = 7LINE (500, 310)-(500, 319), tcolorPSET (500, 310), 4PSET (500, 314), 4END SUBSUB StormdelayDUR = INT(RND * TME) + THRSIF DUR < 2 THEN DUR = 2FOR DEL = 1 TO DURNEXT DELIF TME <= 0 THEN INTENSE = 0IF INTENSE = 1 THEN LET TME = TME - 1000IF INTENSE = 0 THEN LET TME = TME + 1000IF INTENSE = 1 THEN LET THRS = THRS - 100IF INTENSE = 0 THEN LET THRS = THRS + 100STORMGONE = 0IF TME >= 100000 THEN STORMGONE = 1END SUBJonathan Leger                 CARD SHUFFLE                   leger@mail.dtx.net             06-29-96 (20:16)       QB, QBasic, PDS        90   2549     CARDS.BAS   DEFINT A-ZDECLARE SUB MakeDeck (deck$)DECLARE SUB Shuffle (deck$)DECLARE FUNCTION CardValue (card$)DECLARE FUNCTION DrawCard$ (deck$)DECLARE FUNCTION DealCards$ (deck$, numcards)CONST TRUE = -1CONST FALSE = NOT TRUECLSMakeDeck newdeck$          '*** Build a deckShuffle newdeck$           '*** Shuffle the deckFUNCTION CardValue (card$)'*** Returns the value of a card.  This should be changed depending on the'*** particular game you are playing.SELECT CASE LEFT$(card$, 1)       CASE "A"                  '*** Aces are worth 15            CardValue = 15       CASE "K", "Q", "J", "0"   '*** Face cards and 10 are worth 10            CardValue = 10       CASE ELSE                 '*** All other cards are worth their                                 '*** numerical value (2C=2, 3C=3, etc.)            CardValue = VAL(LEFT$(card$, 1))END SELECTEND FUNCTIONFUNCTION DealCards$ (deck$, numcards)'*** Returns the next numcards cards in the deck and cuts those cards'*** out of the deck.  This function should be used when a player draws'*** a card (or cards) as well as when dealing.Deal$ = LEFT$(deck$, numcards * 2)deck$ = RIGHT$(deck$, LEN(deck$) - numcards * 2)END FUNCTIONDEFSNG A-ZSUB MakeDeck (deck$)'*** Simply stuffs all of the cards in a deck into a string, deck$deck$ = "2H3H4H5H6H7H8H9H0HJHQHKHAH"deck$ = deck$ + "2S3S4S5S6S7S8S9S0SJSQSKSAS"deck$ = deck$ + "2D3D4D5D6D7D8D9D0DJDQDKDAD"deck$ = deck$ + "2C3C4C5C6C7C8C9C0CJCQCKCAC"END SUBSUB Shuffle (deck$)'*** Copy the deck into a temporary deck so we can mess with the deck.tempdeck$ = deck$'*** It's good not to have the same deck every time we shuffle, so we'*** generate a random number seed from the CPU's timer.RANDOMIZE TIMER'*** Let's shuffle it!FOR card = 52 TO 1 STEP -1     '*** Chose which card will be the next card "shuffled" into the deck.   nextcard = INT(RND * card) + 1   '*** Get the location of that card in the temporary deck.   cardloc = ((nextcard - 1) * 2) + 1   '*** Extract the card from the temporary deck.   nextcard$ = MID$(tempdeck$, cardloc, 2)   '*** Add the new card to the "shuffled" deck.   newdeck$ = newdeck$ + nextcard$   '*** Remove the new card from the temporary deck.   tempdeck$ = LEFT$(tempdeck$, cardloc - 1) + RIGHT$(tempdeck$, LEN(tempdeck$) - cardloc - 1)NEXT card'*** Copy the new "shuffled" deck into the deck variable passed to the sub.deck$ = newdeck$END SUBErik Bruggema                  SPACE SHOWER DEMO              immsstok@worldaccess.nl        08-15-96 (13:41)       QB, PDS                94   6196     SPACE.BAS   DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"SPACE.ZIP",4^6:Z&=4375:?STRING$(50,177);U"%up()%9%%%%-%oCd1FzC<ib13%%%#R%%%.%%%%xu%fhjS[gfx>k)dASZA/w\bzuU")rT,3:2n?U<FGf=hEfBE;+FV1eEIaLx,\tE^O.)I>nOITHy-=(([r(#cuLml-z*U"4t;<P>+6yp3#)bM-f>,?3Pcks26WO8I_mTA]FMSco8gA*[JK4/nrFP74h$4Bu:_U"NY'ePvnpbo0DAj#aW(HJx4#&=,5I/8ZaAx<A9o?&CG2hZ\uXHnEOWSu>QTv*BS/U"Xc5tLet/d#[K$0,2)D&)BhdrJJDqFseut<WQe/kyGGmu:o4PRi;%ul4mU\,$VVlU"SE++f+17/<h,qDs'&)\30O#fkK03(Z_(H^HCv>YI]&pB+&\Cs&F%3&ITs.vU2<7U"IcQM.Ej=QfnS'G2G(cI'9tZ>Qjal*sa*o?WWlf>V5GjGha*D5J.,DN#q.+=L$2(U"WhcY;)6Id5478U/iCa/Ol]pJqpMWUuQUQGo-_no.jhN*lTvB&K'<]*6TE2$%$$QU"Y6vjV%q=;L+PL1EU#[#jukUW3SXfTv>m7f-:?fI5(?DjfflarFYB251KNTEXVhKU"^PVBU5>nLK<?K1,6M&isl;gofd'cgKc-73UVCC+omxNE+&Cymqg0V-f:fC/Ygi-U"tIOC]>/g.2.2$3]*YZ835=9qYAF'U,p='47F\[hjF#&K'(>wf_j2?xWTZDcv06qU"Enjg8OvM9=BrQV&:U^3J1X5zF\K4(ndV=z9aS8**4u[;v(QBUmVTt.Z0P.Q-D'QU"7D3a/9[f7qahN^;&?WhU<.m*\l8ml>TswbQ,ZL;?_tm6O,td2L$i*-h(Da6;v.6U"t*$]uxsgql$ZHlCN$q?<Sp&+,QsVrJ/Y$vC;stbf7&]'i)8?r?ppWT_.inu$Bt-U"+*<gAI%pPLHVAINBhhoS;qXHWQSC+aP+kA#[3km&82Tidm0%mA\)vt_aPk>ZY]HU"*C:0_<V.H=2Ll$eW,JJ8u9O5\%]QS_CRXn-Jz(K>V0#gCL$Ip_Uk1bV/sRe<]u.U"0wYaAwVepJ-UCj)r[Q+qrr8.>iZOorATf$ajWNU77Uj+b6hiwE?l<e,.]tIo'uuU"_R4Ct-vR40[v8Y>ljPYLBb%ycnR9Wnm;Xwd<q6C9=p?y2x[MqUDv,6ohomj,/]&U"-7F/bc9GVjdGu=W4r8y^JIbfGso8Lmp\;kD7oXtgr#IwCAc:x8BLh.BH,bBb.8KU"y^r6QiS4jq1'j%V7O)UA[w&AdnG$K+YaK74Mv-L6#Gb9BqJY8hbG]:3=O1n54CmU"A^JoWouvaYjogvi1]d%y%olgb'cROhMkeBA.UIK_r2nGDenJ[1GN1tK-?Ia5UTBU"H3?k)Y'1ir_dPaJsY*2J_hbuBo8M#uV>#8j*9>0xZc9_7Zp%UrCe&?r9SU*/KH]U"Ka%-_^#bK%EqC8p%Xbw4Fbb.69\3oq+7HvL1<r+$;/k5hBP1hgzCJj&wwBrugJkU"Ks6SGU1WtkcF5*6q/6X$DMKYvTE[?'tqWs1hOD*p>-1gU&B7pJ^gAU[7_COUb.EU"?mJ<+PBJGHXHPK=]\oK(5h_&h1[fKvSPy,QB=5#nL9K8nm*,:n4aTH7Y>,*jWrpU"5v*.j1w??i($O7o'7tRXn8OmF<gbQH/d,1z)qK9xAp:i>R/%[_5n8#e:]Y[lpOaU"v3Qi=;X%L9lMBAM#WDVAJuauvKoLKSOqIHybHk+]j2<V'3Kp>;j32.a,4fU<sf5U"$-Lxf-ztjSY?S[8ziEVHh#CgovumCQ:b1MjyodJ^lmCt#/1o2K*;NW)0D<]Yc78U"f%oCD7J)=uxek7goIl4^B,_q5J+PfXVs-Z][U6.4;2wQJUaz((ZL;s178NQ<JFeU"==5kOxcu.53bH*pb,C&mG3#;n3J$\yk.C2So6GhD8;[Q^::BVrJ'FUE,hEZs(KOU"rf<p;a]8Ui?Ui5qNVNFB2rv:29IWMfS:>e7n40Ft>^$^asr04V>B1a=f&[aNpm(U"6VH>_.j(1uzOUtkZoD>7kz0G$6[99]t+g8KaB;%g]Gsd]Zjhuo,**B.sp,J>kaMU"G[RL6&JWtnSY'plRqtOcddLC[1d=3tpft\cTiOtWD82h(lI_U+noKZ<fS'+Cj=QU"VT?q#MguKqO.QGL&<tJ5h%pTV^M#u\[Qgb6C]-4%$Jf^p)tK28Cp2JxWC2DA>VDU"g-;8)$'\Zm_B8udFXTV6lgHI_T)GmizCZC6t9BX['AG*QUw5<;6cmQ:+RPQhUUmU"Exvb\hu:&.s7oH'<$^EFGg'*]&:^(8DJ&8Qh_\g7GTS0+eFF5UXhGfe-tRA_#;dU"2;_bWWB6UgGFlro=4=%^6bO=RuZMy18T+MW17HsnZc,G-TX$JPKFXgCUf3BAiA#U"t%G/]OKGvB,\UC+%9XZK<>]LkfSD),kY8)oA2W.4]Ji&$UI3l/u*p,+DgENnd3WU"*c-0\/t>,QNqgdP_nG=+iHO-acP:#HwQMc/V/R'W8jc8Jiif^PEl%CM*/g=vyLmU"7c&(JZfSf^^bq/d8gsBeu^a*=G:trNoWgDk3JcaAe-nW#&JnKnPS[:Sf7s<qLw+U"&ZPva.Am^-Q83CUh&,$ijibtmK=?eA$;Tp-#?iKPi?Ofp)7fM6XQ&?s=APC*,wPU"O97;&^N(8b<4/s;4n(0TrWAF'aAu0.7:+\VT\uGY?w0E-k%scs/B:qYFte3z<JgU"=A4X)3b(cm3hh\alT7g)c#r]%v<cy)Ax-p;-+/BM1UB#p?3FZ^5=,T[&)\W;G7:U"2iLlZm0%#d*AvRit3-f*0bH;f4CQYoQp*p$T7'_SEjWfv9RcBrtg<y9e9>[fW[/U"o%UpoKtS)5g,Q7oDgehA<=Y<^0L>QSv*JbOt7(a])(tQEc7qo?^)'Kf9E?LXsy&U"T]G12TM'IA?(6=RS,9OB?S9u%SL8Srb*H\vI$evhCD<ULuX5\7XwUFs&m#bFszGU"A>ex:f^j6bZUI1>CA,Be3g*#BFxTKE7tBu\$&qSkUq+T_jUXRD0Rae>NIXynN7hU"i]:*[\d-:AEhd07K:ahb'jGoK'$3#r\$>Qi,W1-\(anGXJlt%[A&>29^f1zSQ5>U"ghZ0]WDY,CXep]J'0VAiDK*17CLDUl0'5WM&X5?uAUFpd5gdVXV+kaUPN.z)u8yU"ho?i6&a7JZ<NzjNP?,r&lmrFWGnW35]bi;lKg)P?f\,FP'b+O)n>g8.*FUeAIT'U"7X4^RpKO3eP99Xjiq$5Ht<Xj%GwFwuEl_Ss8Bi=YX.3X-hZea?_0-_h'A7g)f\SU")pO'G)\c^lTiX;6&FcMBAPFSgUf)wj\Kf3=Sr'vkgxu?k;]<=_QCqwj]SbdeVuYU"#[C%Vs5di]#+g5t*v$QZ:3[L5AU^o/:8R8pDbd(kXd^h)Tu*S,Mje..H*?D+mOjU"mZASj/)SJ]W^_E5*=/6C6n6s9+5\4p\$tl8wcNB_X<\tQ4o(I3Oua,Amum3JfEvU"]22(<[k&UhdFPlOd885B8s7K&2Bm=wujp:A$k.J1y*Z?852ZE<jg0UYun4-ZPM\U"nGbfr=U-(h]qUYV.tqYTF07OYXh(Vi[c0bfOO:G?>RFcs&0l[z8xLdq%oNY)^2-U"m2KBwb9l/)#YL7&elAnT[xcNNK.Z3U%&J3w:>AItyhCIY:4E_x_bmw/FWQWKEz;U"W>'<GQ\3Uk2D]7NUB;XM14d(Pr-smnyRld%v9=c3UlZ[K(VXgoj/,75zPzTAxdxU",M7rtK_4>Ti^ul'^(ASP8I$YTEER%1/oIu/RZCjZ7C4=k*V>Bb]Mj/<gLFAuP-FU"\4eVI$A?:kQa:$vs:ES)5Qr%4h#Q%KN+r)T7s42Lb*k4\n)Lev183eWR2T?a.GWU"A(_kZfkiwIYxN<1F3WhtbkDFd5b;zdaP5wCT&FoO7nk*t=nSXPDez-CT(y?gW73U")BNDkSmG+fIk,,Xn9O:K-xdCCqokA*Iqesj+:33]Y9hcZtvXZ;9tsDu%m0rUwPUU"F?7qH8/<BQ+H5q)DPD9k=U?E4Uml4]\u9chHE;BMeDF7;7\6TPAm%#a5<G6</Q7U"g3Wxc<(^Q:A;cMNjcsL:mSseC>+Z$zustLfFgpq0.?n]7amXdRIB80gJqSDxM9*U"QT:uv<It,1tUUI(Jv&feqD&K(LaT2FoYST2JgY3T^mbTkcTOg<Iqw>'[Z75]_&:U"jo%.b1vNy.dqN<iItYOx=iTry#4m)q6<\eO#<Xo:(KsP:82nh=UbE<n^Brl<RE$U"9vr<+hNQ_?/Z\]Ak/i#GFiL'Rfin%8QMJ>ZHdbHKZ3lE0A[UZjQjhj$^U41/3D2U"z+,TXc/?nb)\4&qX6O[_V4o>iq8hIuw=;ap'0bKiRSs],s;w^O4mg^P/_AhL/5YU"/\e4vI#sIUW=N5-cbYJDua*+5n^<X<fSJ*m3<=f89?jx4;hxV10DUyZ1_Oq82/rU"CNU5^smDu[3AoK^z+b2EgT#t#SW4%bh^&aBx3FV%*h786_\d6NT<e2Y+C].ICu%U"+D>&XX=Q'TnVlH0ZMTFwbA=pj'O1'+?;0x^hEKM4[CU^uJS5X>CZ03DmR_=DjBjU"+d-pr.*K_tjAg3&:4SJW$P+Au/],)G.,QAvUN(_BQ_?EYp$I.ck--^*-^.Kf*KsU"&ZQU#mNGr+dXx^4fke_?E1_Q*X\OF=78:'eT$I=9j'DJ\2PfXQIH0&gsWV?0+<XU"_0jke./G2BXGGPFG#JvSIK+q'L#c386.:8^XT0=Qpg8S]tY$hYxgidK<nJ(Sp**U"gSzJ7J)LIF(RBTNWIA.VGn3r\bv0<SH%JT8y+3AcjQtqW'9A%6a.w=Rcx&S[)wHU"N\1[9iBt,]F2teNi-GqJ-Xf]Dg<.B.-^x%u%p()9%%%%-(%Ll/aF:Yv*-^&%+%=U")%%%-%%%%xuf%hjSg(ndyv,:,U98LTmdNUV=B6+:)=eC4J)mK_:?MastJ2C<)'IU"zpu2<tMv<Qd%$tk[rGGQ2pmB.H<0d]oM+/&k&PyDXs'V/$OJ8aOR*kXEW:2.56]U"hLq>VR0/E'7&nl.&sOK&'K3+VqVW]gOO+uDPIl[<oVS/#CaH-_iCPti-[GJd=%TU"XgvGicP?gSw)\XLRt4*Vy]y/hE8KskY%-2Lz,Ro%\I-R>3c'O_gmN4B>I]YOhH*U"F#g$G25VL$A[SY(_'0;R>jQZE0og5T?)<14h2QoGbMW&[J-Lu\Di#?$L5+g[k\NU"?Wf\1YDiEKD<:x)S.OKxlW.]Fp6r'M=Wh_vx>OWhH=MVn:uOd$FuXDwg0#aV?)]U"LuPciRb*JhfZ^]4LlHg5O6G9\:9jrN'?=:5H,UcM^su:cK?N*ddBOgc0h0GSfGcU".GY?+0XA_b6JBkm0Hkq%?u\3'?23%4E'kwnr]BAwQ#oJ[4Yp7-o4R_y7l3iMU('U"P<X0%6aY83b$d%up&'%9%9%%%%-%%oC1FYzCib'13%%%#R%%%.%%%%%%%%%&%E%U"%%%%%%%%xu%fhjS%gfxu%p&'9%%9%%#%-%L[l/F:XYv-^[&%%=%)%%-%%%%%%%%U"%&%%E%%+%X3%%%xuf%hjSg%nup*%+%%%%%'%'(%<%%(%c5%%%%%END SUBCLOSE:IF S=137AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBLuke Molnar                    SOUND BLASTER STARFIELD        Blood225@aol.com               09-01-96 (14:51)       QB, QBasic, PDS        311  12670    SBSTARS.BAS '*****************************************************************************'*                                                                           *'*   This program was written as a demonstration of using the MK Music       *'*     Loader / Player in a program that does a moderate amount of           *'*  calculations.  This is not designed to be the revolutionary graphics     *'*                     demonstration or anything.                            *'*                                                                           *'*   This program was written by Molnar \ Kucalaba Productions in 1996       *'*                                                                           *'*             http://members.aol.com/mkwebsite/index.html                   *'*                   ftp://users.aol.com/blood225/                           *'*                                                                           *'*****************************************************************************DECLARE SUB InitSong ()DECLARE SUB Main ()DECLARE SUB SBInit ()DECLARE SUB PlayMusic ()DECLARE SUB InitStars ()DECLARE SUB CloseChannels ()DECLARE SUB SetIns (Channel%)DECLARE SUB WriteReg (Reg%, value%)CONST BasePort% = &H220  ' Change this for other sound cards.  It is most                         ' likely 220h. (or 380h for Adlib)CLSSCREEN 13'$DYNAMICRANDOMIZE TIMERTYPE StarType X AS INTEGER y AS INTEGER Speed AS INTEGEREND TYPEDIM SHARED MaxChannel%, MaxNotes%MaxChannel% = 3CONST MaxPlay% = -1TYPE InsType MMult AS INTEGER MLevel AS INTEGER MAttack AS INTEGER MSustain AS INTEGER CMult AS INTEGER CLevel AS INTEGER CAttack AS INTEGER CSustain AS INTEGEREND TYPETYPE ChannelType Defined AS INTEGER Speed AS SINGLE SongPtr AS INTEGER PStat AS SINGLE Octave AS INTEGER WaveForm AS INTEGER Flag AS INTEGER Flag2 AS INTEGER IsPlaying AS INTEGER IsDone AS INTEGEREND TYPEDIM SHARED SongBuf(1 TO 790) AS INTEGERDIM SHARED ChannelStat(1 TO 3) AS ChannelTypeDIM SHARED Stars(100) AS StarTypeDIM SHARED CurrentIns AS InsType SBInit InitStars InitSong     Main SBInit SYSTEMSongData:DATA &HFD,&HFD,&HFD,&H28,&H14,&H28,&HFE,&HFE,&HFE,&H1,&H3,&H3,&HF,&HFF,&H44,&HFE,&H258,&H43,&H2,&H46,&HFD,&HF,&H46,&H14,&HFD,&H46,&H44,&H14,&H15,&H44,&HF,&H46,&H43,&H15,&HFE,&H44,&H46,&H4,&HFF,&H45,&H11,&H14,&HFF,&HFE,&H44,&H28,&H3,&H43,&H46,&HF,&HFF,&H45,&HFF,&H28,&HFF,&H64,&H44,&H14,&HF,&H44,&H46,&HF,&H44,&HFF,&HF,&HFD,&H14,&HF,&H28,&H45,&HF,&HFE,&HFD,&HF,&H3,&H28,&HF,&H44,&HFE,&HFF,&H43,&H1,&H64,&HFD,&HF,&HFE,&H14,&HFE,&H4,&H44,&H2,&H11,&H44,&HF,&H11,&H43,&HFD,&H12,&H44,&H14DATA &HFF,&HFF,&HF,&H28,&H14,&H15,&H11,&H44,&H46,&H46,&H43,&H45,&H46,&HFF,&HFF,&H46,&H28,&H28,&H46,&H44,&H46,&H46,&H44,&H45,&H46,&H44,&HFF,&H46,&HFD,&H14,&H46,&H28,&H46,&H46,&HFE,&HFF,&H46,&H3,&H14,&HFD,&H44,&H45,&HC8,&H43,&HFD,&H12,&HFD,&H28,&HFD,&H14,&HFE,&H14,&H44,&H1,&H11,&H44,&HF,&H11,&H43,&HFE,&H12,&H44,&H2,&H11,&HFF,&HF,&HF,&H14,&HFD,&HF,&H44,&H14,&HFF,&H43,&HF,&H12C,&HFF,&H15,&HFD,&H28,&H46,&H28,&H44,&H45,&HFE,&H44,&HFF,&H3,&H44,&H28,&HF,&HFD,&H46,&HF,&H28,&H45,&HFF,&HFE,&HFF,&H14DATA &H3,&H14,&HFD,&H44,&H46,&H14,&H43,&HFF,&HFE,&HFD,&H14,&H4,&H14,&H45,&H12,&H44,&HFD,&H46,&H44,&H28,&H12,&H43,&HFE,&H11,&H44,&H1,&H12,&HFF,&HF,&H46,&H14,&HFE,&H12,&H44,&H2,&H11,&H43,&HF,&H12,&HFF,&HFD,&H46,&H28,&H14,&H12,&H44,&HF,&H11,&H44,&H15,&H12,&H44,&H46,&H46,&HFD,&HF,&H12,&H28,&HFF,&H11,&HFE,&H14,&HFE,&H3,&HF,&H4,&H44,&HFF,&HFD,&H43,&H14,&HA,&HFD,&H46,&HF,&H14,&H15,&H15,&H44,&HFF,&H46,&H44,&H14,&HF,&H43,&HF,&H15,&H44,&HFF,&H46,&HFF,&H14,&HF,&H14,&HFD,&H15,&H44,&H28,&H46,&H43DATA &HFE,&HF,&HFF,&H2,&H15,&H28,&H12,&H46,&H44,&HFE,&HF,&H44,&H3,&H15,&H44,&H12,&H46,&HFD,&HFD,&HF,&H28,&H14,&H15,&HFE,&H12,&H46,&H3,&H11,&H12,&H44,&HFE,&H11,&H43,&H2,&H12,&HFD,&HF,&HFE,&H14,&H15,&H3,&H44,&HFF,&HF,&H44,&H28,&HFF,&H43,&HF,&H14,&H44,&H15,&HF,&HFF,&HFF,&H15,&H14,&H14,&H46,&H44,&HF,&H12,&H43,&HFF,&H46,&HFF,&H14,&HF,&H28,&H15,&HFF,&H44,&HFD,&H14,&H44,&H28,&HFE,&H44,&HFE,&H5,&HFD,&H2,&H12,&H28,&H12,&H12,&HFE,&HFE,&H12,&H3,&H3,&H12,&H44,&H12,&H12,&H43,&HFD,&H12,&HFD,&H14DATA &H12,&H14,&H12,&H12,&H44,&H11,&HFD,&H44,&HFE,&H64,&H43,&H2,&H12,&H44,&HF,&HFF,&HFF,&HFE,&H3C,&H14,&H3,&HFB,&H44,&H12,&H0,&H43,&HFF,&H0,&HFF,&H14,&H0,&H28,&H12,&H0,&H44,&HFF,&H0,&H44,&H14,&H0,&H44,&HFE,&H0,&HFD,&H2,&H0,&H28,&HF,&H0,&HFE,&HFE,&H0,&H3,&H3,&H0,&H44,&H11,&H0,&H43,&HFF,&H0,&HFD,&H14,&H0,&H14,&H12,&H0,&H44,&HFF,&H0,&H44,&H14,&H0,&H43,&HFD,&H0,&H44,&H28,&H0,&HFF,&HFE,&H0,&H14,&H1,&H0,&H44,&HF,&H0,&H43,&HFE,&H0,&HFF,&H2,&H0,&H28,&HF,&H0,&H44,&HFD,&H0DATA &H44,&H14,&H0,&H44,&HF,&H0,&HFD,&H15,&H0,&H28,&H46,&H0,&HFE,&HF,&H0,&H3,&HFF,&H0,&H44,&H14,&H0,&H43,&HF,&H0,&HFD,&HFF,&H0,&H14,&H14,&H0,&H44,&H46,&H0,&H44,&H15,&H0,&H43,&HFF,&H0,&H44,&H14,&H0,&HFF,&HF,&H0,&H14,&HFF,&H0,&H44,&H14,&H0,&H43,&HFD,&H0,&HFF,&H28,&H0,&H28,&HFE,&H0,&H44,&H2,&H0,&H44,&H46,&H0,&H44,&HFE,&H0,&HFD,&H3,&H0,&H28,&H46,&H0,&HFE,&HFD,&H0,&H3,&H14,&H0,&H44,&H46,&H0,&H43,&H12,&H0,&HFD,&HFE,&H0,&H14,&H2,&H0,&H44,&H43,&H0,&H44,&HFE,&H0,&H43DATA &H3,&H0,&H44,&H46,&H0,&HFF,&HFF,&H0,&H14,&H14,&H0,&H44,&H46,&H0,&H43,&HFF,&H0,&HFF,&H14,&H0,&H28,&HFE,&H0,&H44,&H2,&H0,&H44,&H43,&H0,&H44,&HFE,&H0,&HFD,&H3,&H0,&H28,&H12,&H0,&HFE,&HFF,&H0,&H3,&H14,&H0,&H44,&H46,&H0,&H43,&HFF,&H0,&HFD,&H14,&H0,&H14,&HFD,&H0,&H44,&H14,&H0,&H44,&HFE,&H0,&H43,&H3,&H0,&H44,&H12,&H0,&HFF,&H12,&H0,&H14,&H12,&H0,&H44,&H12,&H0,&H43,&H12,&H0,&HFF,&H11,&H0,&H28,&HFE,&H0,&H44,&H2,&H0,&H44,&HF,&H0,&H44,&HFE,&H0,&H0,&H3,&H0,&H0,&HFDATA &H0,&H0,&HFF,&H0,&H0,&H28,&H0,&H0,&HFE,&H0,&H0,&H3,&H0,&H0,&H15,&H0,&H0,&H15,&H0,&H0,&H12,&H0,&H0,&HFE,&H0,&H0,&H2,&H0,&H0,&H11,&H0,&H0,&HFF,&H0,&H0,&H28,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0,&H0InstrumentData:DATA &H1,&H0,&HE4,&H9D,&H1,&H1F,&HE4,&H9DDATA &H22,&H2,&H57,&H48,&H71,&H42,&HB3,&HBDATA &HE1,&H2,&HC8,&HF9,&HF9,&HEC,&HF6,&H6CREM $STATICSUB CloseChannelsFOR Channel% = &HB0 TO &HBF CALL WriteReg(Channel%, 0)NEXTEND SUBSUB InitSongRESTORE SongDataFOR X% = 1 TO 790  READ SongBuf(X%)NEXTRESTORE InstrumentDataFOR X% = 1 TO 3  ChannelStat(X%).Defined = 1  ChannelStat(X%).SongPtr = 1  READ CurrentIns.MMult, CurrentIns.MLevel, CurrentIns.MAttack, CurrentIns.MSustain  READ CurrentIns.CMult, CurrentIns.CLevel, CurrentIns.CAttack, CurrentIns.CSustain    Ficx% = X%  SetIns X%  X% = Ficx%NEXTEND SUBSUB InitStarsFOR Fill% = 1 TO 100 Stars(Fill%).X = INT(RND * 320) + 1 Stars(Fill%).y = INT(RND * 200) + 1 Stars(Fill%).Speed = INT(RND * 5) + 1NEXTFOR X% = 1 TO 5    OUT &H3C8, X%    OUT &H3C9, X% * 12    OUT &H3C9, X% * 12    OUT &H3C9, X% * 12NEXTEND SUBSUB MainDO   FOR X% = 1 TO 100    PSET (Stars(X%).X, Stars(X%).y), 0    Stars(X%).X = Stars(X%).X + Stars(X%).Speed      IF Stars(X%).X > 320 THEN        Stars(X%).X = 0        Stars(X%).y = INT(RND * 200) + 1      END IF    PSET (Stars(X%).X, Stars(X%).y), Stars(X%).Speed  NEXT PlayMusicLOOP UNTIL INKEY$ <> ""END SUBSUB PlayMusicFOR Channel% = 1 TO MaxChannel%  IF ChannelStat(Channel%).Defined = 0 THEN GOTO NoGotosPlease  RChan% = Channel% - 1  IF ChannelStat(Channel%).IsDone = 1 THEN   ChannelStat(Channel%).PStat = TIMER + ChannelStat(Channel%).Speed   ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%   ChannelStat(Channel%).IsDone = 0   ChannelStat(Channel%).IsPlaying = 0  END IF   IF ChannelStat(Channel%).IsPlaying = 0 AND SongBuf(ChannelStat(Channel%).SongPtr + Channel% - 1) <> 0 THEN    ChannelStat(Channel%).PStat = TIMER + ChannelStat(Channel%).Speed     SELECT CASE SongBuf(ChannelStat(Channel%).SongPtr + RChan%)       CASE 68         WriteReg &HA0 + RChan%, &H81         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 69         WriteReg &HA0 + RChan%, &HB0         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 70         WriteReg &HA0 + RChan%, &HCA         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 71         WriteReg &HA0 + RChan%, &H2         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave       CASE 65         WriteReg &HA0 + RChan%, &H41         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave       CASE 66         WriteReg &HA0 + RChan%, &H87         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave       CASE 67         WriteReg &HA0 + RChan%, &HAE         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave       CASE 17         WriteReg &HA0 + RChan%, &H6B         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 18         WriteReg &HA0 + RChan%, &H98         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 20         WriteReg &HA0 + RChan%, &HE5         WriteReg &HB0 + RChan%, &H21 + 4 * ChannelStat(Channel%).Octave       CASE 21         WriteReg &HA0 + RChan%, &H20         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave       CASE 15         WriteReg &HA0 + RChan%, &H63         WriteReg &HB0 + RChan%, &H22 + 4 * ChannelStat(Channel%).Octave              CASE 255         ChannelStat(Channel%).IsPlaying = 1         ChannelStat(Channel%).PStat = TIMER + SongBuf(ChannelStat(Channel%).SongPtr + Channel% - 1 + MaxChannel%) / 100         ChannelStat(Channel%).Flag = -1       CASE 254         ChannelStat(Channel%).Octave = SongBuf(ChannelStat(Channel%).SongPtr + Channel% - 1 + MaxChannel%)         ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%       CASE 253         ChannelStat(Channel%).Speed = SongBuf(ChannelStat(Channel%).SongPtr + Channel% - 1 + MaxChannel%) / 100         ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%       CASE 252         ChannelStat(Channel%).WaveForm = SongBuf(ChannelStat(Channel%).SongPtr + Channel% - 1 + MaxChannel%) - 300         ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%         IF RChan% > 2 THEN RRChan% = RChan% + 6 ELSE RRChan% = 0         WriteReg &HE0 + RChan% + RRChan%, ChannelStat(Channel%).WaveForm       CASE 251         ChannelStat(1).Flag2 = -1          FOR MaxChan% = 1 TO MaxChannel%           ChannelStat(MaxChan%).SongPtr = 1           ChannelStat(MaxChan%).IsPlaying = 0           ChannelStat(MaxChan%).IsDone = 0          NEXT         CloseChannels         EXIT SUB     END SELECT   END IF    IF ChannelStat(Channel%).IsPlaying = 1 THEN     IF TIMER >= ChannelStat(Channel%).PStat THEN      WriteReg &HB0 + RChan%, 0      ChannelStat(Channel%).IsDone = 1       IF ChannelStat(Channel%).Flag = -1 THEN        ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%        ChannelStat(Channel%).Flag = 0       END IF     END IF    END IF     IF ChannelStat(Channel%).SongPtr > MaxChannel% + 1 THEN     IF SongBuf(ChannelStat(Channel%).SongPtr + RChan%) <> 0 AND SongBuf(ChannelStat(Channel%).SongPtr - MaxChannel% + RChan%) < 250 THEN       IF ChannelStat(Channel%).IsPlaying = 0 THEN ChannelStat(Channel%).IsPlaying = 1     END IF   END IFNoGotosPlease:NEXT Channel%FOR Channel% = 1 TO MaxChannel% IF ChannelStat(Channel%).IsPlaying = 0 THEN  ChannelStat(Channel%).SongPtr = ChannelStat(Channel%).SongPtr + MaxChannel%  IF ChannelStat(Channel%).SongPtr >= UBOUND(SongBuf) / MaxChannel% THEN   ChannelStat(Channel%).SongPtr = 1  END IF END IFNEXT Channel%END SUBSUB SBInit   FOR z% = 1 TO &HF5     WriteReg z%, 0   NEXT z%END SUBSUB SetIns (Channel%)CarChan% = Channel% - 1WriteReg &H20 + CarChan%, CurrentIns.CMultWriteReg &H23 + CarChan%, CurrentIns.MMultWriteReg &H40 + CarChan%, CurrentIns.CLevelWriteReg &H43 + CarChan%, CurrentIns.MLevelWriteReg &H60 + CarChan%, CurrentIns.CAttackWriteReg &H63 + CarChan%, CurrentIns.MAttackWriteReg &H80 + CarChan%, CurrentIns.CSustainWriteReg &H83 + CarChan%, CurrentIns.MSustainEND SUBDEFINT A-ZSUB WriteReg (Reg%, value%)OUT BasePort% + 8, Reg% FOR V% = 1 TO 6  Buf% = INP(BasePort% + 8) NEXTOUT BasePort% + 9, value% FOR V% = 1 TO 34  Buf% = INP(BasePort% + 9) NEXTEND SUBLAaron Finley                   DOSFS FILESYSTEM BROWSER V1.0  aaronx86@geocities.com         12-01-96 (18:01)       QB, QBasic, PDS        903  28361    DOSFS.BAS   DECLARE SUB license ()DECLARE SUB dialog (A!, b!, c!, d!, shd!)DECLARE SUB ANXStringHandle (prompt$, max%, winsiz%, S$, sequins%)DECLARE FUNCTION GetString$ (prompt$, max%, winsiz%, S$, sequins%)'DOSFS Filesystem Installer V1.0'Copyright (C) Aaron Finley 1996'All Rights Reserved        CLS        COLOR 0, 15        PRINT STRING$(80, " ")                                                          '------------License-------------------        LOCATE 1, 1: PRINT "DOSFS Filesystem Installer V1.0":                           CALL license        CALL dialog(17, 8, 30, 10, 1)                                                   '--------------------------------------        COLOR 15, 3        LOCATE 8, 32: PRINT "DOSFS Installer": COLOR 0, 15        LOCATE 11, 26: PRINT "DOSFS Filesystem Version 1.0"        LOCATE 12, 24: PRINT " Copyright (c) Aaron Finley 1996"        LOCATE 13, 19: PRINT "           All Rights Reserved"        COLOR 15, 1        LOCATE 15, 25: PRINT STRING$(32, " ")                OPEN "dosfs.bas" FOR INPUT AS #1                        DO UNTIL EOF(1)                        LINE INPUT #1, A$                        IF A$ = "'[FS_APP.ANX]" THEN GOTO gotit1:                        LOOP                        CALL dialog(17, 8, 30, 10, 1)                        COLOR 15, 3                        LOCATE 8, 32: PRINT "DOSFS Installer"                        COLOR 0, 15                        LOCATE 12, 23: PRINT "    Installer Object Incomplete"                        LOCATE 13, 23: PRINT "      Unexcepted End-Of-File"                        SYSTEMgotit1:Fsb = 1qat = 1dfc = 1OPEN "FS_app.anx" FOR OUTPUT AS #2cc = 0        DO UNTIL EOF(1)                LINE INPUT #1, A$                        FOR i% = 2 TO LEN(A$)                                b$ = MID$(A$, i%, 1)                                IF A$ = "'[FS_APP.ANX]" THEN GOTO find2:                                b = ASC(b$)                                IF b = 254 THEN GOTO 4                                cc = cc + 1                                IF cc = 128 THEN cc = 1                                b = b - cc                                PRINT #2, CHR$(b);        '----Percent Formula V1----done = done + 1outof = LOF(1)length = 40 numprint1 = done / outof * length + 1 COLOR 15, 3 LOCATE 15, 25: PRINT STRING$(numprint1, " ")        '---Done That---4                NEXT                cc = 0                PRINT #2,        LOOPfind2:                CLOSE #1                OPEN "dosfs.bas" FOR INPUT AS #1                        DO UNTIL EOF(1)                        LINE INPUT #1, A$                        IF A$ = "'[FS_VIEW.BAS]" THEN GOTO gotit2:                        LOOP                        CALL dialog(17, 8, 30, 10, 1)                        COLOR 15, 3                        LOCATE 8, 32: PRINT "DOSFS Installer"                        COLOR 0, 15                        LOCATE 12, 23: PRINT "    Installer Object Incomplete"                        LOCATE 13, 23: PRINT "      Unexcepted End-Of-File"                        SYSTEMgotit2:CLOSE #2OPEN "FS_VIEW.BAS" FOR OUTPUT AS #2cc = 0        DO UNTIL EOF(1)                LINE INPUT #1, A$                        FOR i% = 2 TO LEN(A$)                                b$ = MID$(A$, i%, 1)                                IF A$ = "'[FS_VIEW.BAS]" THEN GOTO endthat:                                b = ASC(b$)                                IF b = 254 THEN GOTO 6                                cc = cc + 1                                IF cc = 128 THEN cc = 1                                b = b - cc                                IF b = -4 THEN GOTO 889:                                PRINT #2, CHR$(b);        '----Percent Formula V1----done = done + 1outof = LOF(1)length = 54 numprint1 = done / outof * length + 1 COLOR 15, 3 LOCATE 15, 25: PRINT STRING$(numprint1, " ")        '---Done That---6                NEXT                cc = 0                PRINT #2,        LOOPendthat:CLOSE #2OPEN "DOC.TXT" FOR OUTPUT AS #2cc = 0        DO UNTIL EOF(1)                LINE INPUT #1, A$                        FOR i% = 2 TO LEN(A$)                                b$ = MID$(A$, i%, 1)                                IF A$ = "'[EMANUAL.TXT]" THEN GOTO endthat2:                                b = ASC(b$)                                IF b = 254 THEN GOTO 889                                cc = cc + 1                                IF cc = 128 THEN cc = 1                                b = b - cc                                IF b = -4 THEN GOTO 889:                                PRINT #2, CHR$(b);        '----Percent Formula V1----done = done + 1outof = LOF(1)length = 64 numprint1 = done / outof * length + 1 COLOR 15, 3 LOCATE 15, 25: PRINT STRING$(numprint1, " ")        '---Done That---889                NEXT                cc = 0                PRINT #2,        LOOPendthat2:100        VIEW PRINT 3 TO 24        CLOSECOLOR 0, 0                        CALL dialog(20, 10, 20, 6, 1)                        COLOR 15, 3                        LOCATE 10, 32: PRINT "DOSFS Installer"                        COLOR 0, 15                        LOCATE 12, 24: PRINT "    Enter installation path"PRINTpath$ = "C:\DOSFS"COLOR 15, 1LOCATE 13, 27:Tmp$ = GetString$(Out$, 256, 24, path$, 0)ON ERROR GOTO DirAExt:MKDIR path$DirAExt:COLOR 0, 0CLSCALL dialog(20, 8, 21, 10, 1)COLOR 15, 3LOCATE 8, 32: PRINT "DOSFS Installer"COLOR 0, 15LOCATE 10, 24: PRINT "  Chose components to install."LOCATE 12, 24: PRINT "  [ ] 1. Filesystem Browser (REQ)"LOCATE 13, 24: PRINT "  [ ] 2. APP Loader C:\I...ANX (REQ)"LOCATE 14, 24: PRINT "  [ ] 3. FS Files and Manual (REQ)"LOCATE 16, 21: PRINT "Press number to select, Enter to cont."'------------Really Sloppy Code---------------------'Excuse this crappy code.  I almost ran out of time!               DORerr:IF Fsb = 1 THEN LOCATE 12, 27: PRINT "X"IF Fsb = 0 THEN LOCATE 12, 27: PRINT " "IF qat = 1 THEN LOCATE 13, 27: PRINT "X"IF qat = 0 THEN LOCATE 13, 27: PRINT " "IF dfc = 0 THEN LOCATE 14, 27: PRINT " "IF dfc = 1 THEN LOCATE 14, 27: PRINT "X"A$ = INKEY$: IF A$ = "" THEN GOTO Rerr:               IF A$ = CHR$(13) THEN GOTO donsel:        IF Fsb = 1 THEN IF A$ = "1" THEN Fsb = 0: GOTO Rerr        IF qat = 1 THEN IF A$ = "2" THEN qat = 0: GOTO Rerr        IF dfc = 1 THEN IF A$ = "3" THEN dfc = 0: GOTO Rerr                IF A$ = "1" THEN Fsb = 1        IF A$ = "2" THEN qat = 1        IF A$ = "3" THEN dfc = 1        LOOPdonsel:COLOR 0, 0CLS                        CALL dialog(20, 10, 20, 6, 1)                        COLOR 15, 3                        LOCATE 10, 32: PRINT "DOSFS Installer"                        COLOR 0, 15                        LOCATE 13, 30: PRINT "    Please Wait..."                         IF Fsb = 1 THEN cmd$ = "copy fs_app.anx " + path$ + "\fs_app.anx > tmp.tmp": cmd2$ = "copy fs_view.bas " + path$ + "\fs_view.anx > tmp.tmp": SHELL cmd$: SHELL cmd2$: file = file + 2            IF qat = 1 THEN OPEN "c:\ifloader.anx" FOR OUTPUT AS #1: PRINT #1, "chdir " + path$: PRINT #1, "qbasic /run " + path$ + "\fs_app.anx": CLOSE #1: file = file + 1            IF Fsb = 1 OR qat = 1 OR dfc = 1 THEN            dd$ = "copy doc.txt " + path$ + "\MANUAL.TXT"            SHELL dd$            END IF            IF dfc = 1 THEN            OPEN path$ + "\dosfs.bat" FOR OUTPUT AS #1            PRINT #1, "@echo off"            PRINT #1, "chdir " + path$            PRINT #1, "qbasic /run fs_view.anx"            CLOSE #1            file = file + 1            OPEN path$ + "\odc.anx" FOR OUTPUT AS #1            CLOSE #1            file = file + 1            OPEN path$ + "\odn.anx" FOR OUTPUT AS #1            PRINT #1, "0"            CLOSE #1            file = file + 1            OPEN path$ + "\odr.anx" FOR OUTPUT AS #1            PRINT #1, "2"            PRINT #1, "Aunix"            CLOSE #1            file = file + 1            ELSE            END IF                        CALL dialog(20, 10, 20, 6, 1)                        COLOR 15, 3                        LOCATE 10, 32: PRINT "DOSFS Installer"                        COLOR 0, 15                        LOCATE 13, 24: PRINT "Installation Complete (" + RIGHT$(STR$(file + 1), LEN(STR$(file + 1)) - 1) + " files)"                        KILL "fs_app.anx"            KILL "Fs_view.bas"            KILL "Doc.txt"            IF Fsb = 1 OR dfc = 1 OR qat = 1 THEN            KILL "tmp.tmp"            ELSE            END IFON ERROR GOTO errhndl:ENDerrhndl:SYSTEMSUB ANXStringHandle (prompt$, max%, winsiz%, S$, sequins%)   S$ = LTRIM$(RTRIM$(S$)): Cursor% = LEN(S$) - (Cursor% < max%)   F$ = " ": IF sequins% <> 0 THEN F$ = " "   Fill$ = STRING$(max%, F$)   S$ = LEFT$(S$ + Fill$, max%): INS% = -1: PRINT prompt$; " ";   Ybase% = POS(0)   WHILE done$ <> "DONE"      Sbase% = Cursor% - winsiz% + 1: IF Sbase% < 1 THEN Sbase% = 1      LOCATE , Ybase%, 0: Hid$ = STRING$(LEN(RTRIM$(S$)), "*")      IF sequins% = 0 THEN         PRINT MID$(S$ + Fill$, Sbase%, winsiz%); " ";      ELSE         PRINT MID$(Hid$ + Fill$, Sbase%, winsiz%); " ";      END IF      LOCATE , Ybase% + Cursor% - Sbase%, 1      k$ = "": WHILE k$ = "": k$ = INKEY$: WEND      k% = ASC(k$): IF k% = 0 THEN k% = -ASC(MID$(k$, 2))      SELECT CASE k%         CASE 32 TO 127            IF INS% AND Cursor% < max% THEN               MID$(S$, Cursor% + 1) = MID$(S$, Cursor%)               S$ = LEFT$(S$, max%)            END IF            MID$(S$, Cursor%, 1) = k$            IF Cursor% = max% THEN SOUND 999, 1            Cursor% = Cursor% - (Cursor% < max%)         CASE 13: IF S$ = Fill$ THEN S$ = ""            IF INSTR(S$, F$) > 0 THEN S$ = LEFT$(S$, INSTR(S$, F$) - 1)            EXIT SUB         CASE 8            IF Cursor% > 1 THEN               Cursor% = Cursor% - 1               MID$(S$, Cursor%) = MID$(S$, Cursor% + 1)               MID$(S$, max%) = F$            ELSE               BEEP            END IF         CASE 27: S$ = "": EXIT SUB         CASE -71: Cursor% = 1         CASE -79: Cursor% = INSTR(S$, F$)            IF Cursor% = 0 THEN Cursor% = max%         CASE -82: INS% = -(INS% + 1): SOUND 1500 + 800 * INS%, .5         CASE -83            IF Cursor% < max% THEN               MID$(S$, Cursor%) = MID$(S$, Cursor% + 1)               MID$(S$, max%) = F$            ELSE               BEEP            END IF         CASE -75: Cursor% = Cursor% - 1            lim% = INSTR(S$, F$): lim% = lim% - max% * (lim% = 0)            IF Cursor% < 1 THEN Cursor% = lim%         CASE -77: Cursor% = Cursor% + 1            lim% = INSTR(S$, F$): lim% = lim% - max% * (lim% = 0)            IF Cursor% > lim% THEN Cursor% = 1      END SELECT   WENDEND SUBSUB dialog (A, b, c, d, shd)        COLOR 15, 3        LOCATE b, A: PRINT STRING$(A + c, " ")        COLOR 0, 15        FOR i% = b + 1 TO b + d - 1        LOCATE i%, A: PRINT STRING$(A + c, " "); : IF shd = 1 THEN COLOR 8, 0: PRINT "": COLOR 0, 15        NEXT i%        COLOR 8, 0        IF shd = 1 THEN LOCATE b + d, A + 1: PRINT STRING$(A + c, "")END SUBSUB formulaCLSDOdone = 25IF done = outof THEN ENDoutof = 100length = 80LOCATE 1, 1COLOR 15, 1PRINT STRING$(length, " ") numprint1 = done / outof * length + 1 LOCATE 1, 1: COLOR 0, 15 PRINT STRING$(numprint1, " ")LOOPEND SUBFUNCTION GetString$ (prompt$, max%, winsiz%, S$, sequins%)   ANXStringHandle prompt$, max%, winsiz%, S$, sequins%: Elvis$ = S$END FUNCTIONSUB license                CALL dialog(11, 3, 50, 20, 1)        COLOR 15, 3        LOCATE 3, 35: PRINT "License"                COLOR 0, 15        LOCATE 5, 1:        LOCATE 5, 20: PRINT "DOSFS Installation v1.0"                LOCATE 6, 20: PRINT "Copyright (C) Aaron Finley 1996"        LOCATE 7, 20: PRINT "All Rights Reserved"        LOCATE 8, 20: PRINT        LOCATE 9, 20: PRINT "By pressing `A',  you agree to the following:"        LOCATE 10, 20: PRINT "---------------------------------------------"        LOCATE 11, 20: PRINT " 1. You will not use any of the package's"        LOCATE 12, 20: PRINT "    (which includes FS_APP.ANX,  FS_VIEW.BAS)"        LOCATE 13, 20: PRINT "    code from this version.  In order to use"        LOCATE 14, 20: PRINT "    the code,  you must register."        LOCATE 15, 20: PRINT        LOCATE 16, 20: PRINT " 2. You will not modify or copy in any way"        LOCATE 17, 20: PRINT "    the code in this package,  and will read"        LOCATE 18, 20: PRINT "    Manual.txt once installed. "        LOCATE 19, 20: PRINT        LOCATE 20, 20: PRINT "---------------------------------------------"        COLOR 15, 1        LOCATE 21, 20: PRINT "Press `A' to agree,  `D' to disagree.       "                DO999 A$ = INKEY$: IF A$ = "" THEN GOTO 999:        IF UCASE$(A$) = "A" THEN GOTO 989        IF UCASE$(A$) = "D" THEN SYSTEM        LOOP989END SUBSUB package'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'X                                                                          X'X                             File Area                                    X'X                                                                          X'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'----------------------------------------------------------------------------'"What the HELL is that?" Version 1.0'Copyright (C) Aaron Finley 1996'All Rights Reserved'----------------------------------------------------------------------------'[FS_APP.ANX]'EGFPFXL(\_M,\<\UcYX4=z{G|BH'EGFPFXL(\_M,\<\[Taa4=YffGh|BH'EGFPFXL(\_M,\<RXU[e4=YffGh|BH'EGFPFXL(\_M,\<[c1:<'EGFPFXL(\_M,\<eYVi3<yzF{AG'EGFPFXL(\_M,\<fbZfX4=z{G|BH'EGFPFXL(\_M,\<rx|s5>ZggHdAJ?aqrQi}zKQ'EGFPFXL(\_M,swsu{4=:C'EGFPFXL(\_M,\<a]Taa4=YffGh|BH'(FRWKY6[bXN,Sw{uz7Z'(Ert~xpoq~+4P7/Qr5\<NWXV'(Cop%Xpoq~~,_suxx'DQPQTT'[QK]QQ.rtz7@5YffGc@I>PI'DQOSW&>4):'EQ'32#>'JH#Qfioqwo/,J.121f[Yc6^gmi;ST'QTLRY&Tilrtzr2/;14B65A7{}@=I?BDD^'JPSYY&)*5*nyq2'JH#MSY[Z1;7,p{s4=2547?7la_i'!"#$%&'()*+,-./0Wae46T8J:ok=jdnIIO'!"#$%&'()*+,-./0E96T8fc_@EENCQFXQ'!"#$%&'()*+,-./0T2P4'!"#$%&'()*+,-./0ZX3H<9W;>=@?tigqDlu{wI]'!"#$%&'()*+,-./0'!"#$%&'()*+,-./0F96T8NA>J@UI'!"#$%&'()*+,-./0'!"#$%&'()*+,-./0_Wkh'4'!"#$%&'()*+,-./0Wae4w6T8\:ok=jdnIIO'!"#$%&'()*+,-./0E96T8fc_@EENCQFXQ'!"#$%&'()*+,-./0'!"#$%&'()*+,-./0G96T8OA>J@UI'!"#$%&'()*+,-./0_Wkh'5'!"#$%&'('!"#$%&'(}w{>1.L0fUTgZ:?M@F'!"#$%&'()*+,-./0'!"#$%&'()*+,-./08dXjO67Y}~=entpBUTFJV]'!"#$%&'()*+,-./0dW_YXj7[Zm`<RE'!"#$%&'()*+,-./01234567[Zm`<?acB'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUkqnt~UxwyW\k]f[gvhnfthzst'!"#$%&'()*+,-./01234567[Zm`<?agdjtE'!"#$%&'()*+,-./0123456789:;<=>?'!"#$%&'()*+,-./0123456789:;<=>?cbnoDtTjpms}TwvxV[j\eZfugmesgyrs'!"#$%&'()*+,-./01234567[Zm`<?kjdjtE'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUutmzzUdV\'!"#$%&'()*+,-./01234567[Zm`<?kcB'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUutmzzUdV\'!"#$%&'()*+,-./01234567[Zm`<?a`tC'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuU~roTwvxV[j\eZfugmesgyrs'!"#$%&'()*+,-./01234567[Zm`<?uqiugE'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuU{sqUdV\nU}Zml'!"#$%&'()*+,-./01234567[Zm`<?plB'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUzvmzzUxwyW\k]f[gvhnfthzst'!"#$%&'()*+,-./01234567[Zm`<?pldjtE'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUzvmzzUxwyW\k]f[gvhnfthzst'!"#$%&'()*+,-./01234567[Zm`<?kdrhgE'!"#$%&'()*+,-./0123456789:;<=>?'!"#$%&'()*+,-./0123456789:;<=>?@dcopEuUun|rqUxwyW\k]f[gvhnfthzst'!"#$%&'()*+,-./012345678'!"#$%&'()*+,-./0V`W4h[c]\n'!"#$%&'()*+,-./0TS_`5eE{|FTGPExpoq~OTcU^Sz_n`f^l`rkl'!"#$%&'(}w{>1.L034M4K=:X<?@'!"#$%&'(NV^Q'!"#$%&'()*+,-./0ZX3wz;8V:=@?tigqDtTs{'!"#$%&'()*+,-./0TS_`5eE{|FFODMS'!"#$%&'('!"#$%&'(NXO,VT'!"#$%&''!"#$%&'()*+,-./0'!"#$%&'(0789:;<=>?@ABCDg]lI]kv?hbpgpjxTUVWXYZ[\]^_`abcd'89'!"#$%&'(XZPZ-0~t@t87^hl;]mndneBdwEI\'!"#$%&'(Y\TZa.2E=25D7'!"#$%&'(LVZ_R.2E'!"#$%&'(XZPZ-0~t@t87^hl;eknttAcvDH['!"#$%&'(RX[aa.2E=2'!"#$%&'(RP+z{/M1D3h][e8bhkqq>BUMBpN'!"#$%&'(LVZ_R.2E'JH#rzs'E);+`US]0tv|96T8;<U<lndnADTLKr|OVxY]pv]cgzrgjzllrvv݌'JH#rzs'E)<+`US]0tv|96T8;<U<lndnADTLKr|OVxY]pv]cgzrgj{llrvv'JH#rzs'E):+`US]0\[_`58|H|@Y@jhCLIgKNONxvS\Yw[^]`y`liknƾv'!"#$%&'(0789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd'3'!"FPTYL(,?'QTLRY'MQRT''99'HQWS%=>''TWE$koiyz'''FPG$X[I''TWE$kokms},5|}:''!"#$%&'(Y\TZa.1VZjVX^h7:CFQdW`|~^qorcxqk'FPG$X[I''TWE$T4JPMS],5Q^^?`tz:@'!"#$%&'(Y\TZa.1SYUbb58}}ADObU^z|\ompavoi'FPG$X[I''TWE$T4jptk{|-6R__@au{;D9[klKcwtEK''!)Fss4uivo/G-0;2L2Q7:E<V<?pvsyF`FITKeKN|\T'!"#$%&''!"#$%&'!"#$%&'(RP+oqw41NQ4787la_i<fd?cppQrLIgKN[\QPzxUy|[^klazafvyrw'!"#$%&'()*+,-.'!"#$%&'(LVZ_R.2A'!"#$%&'(LVZ_R.2B'!"#$%&'(XZPZ-0~tt@t87^hl;eknttAcvDHW'!"#$%&''!"#$%&'(XZPZ-0~t@t87^hl;eknttAcvDHX'!"#$%&'(RX[aa.2B=2'!"#$%&'(LVZ_R.2B'!"#$%&'(OY],V3/M1C3hd6'!"#$%&'(RX[aa.2A=2VccD`=F;QLAcfgjyzLUJzZU'!"#$%&'!"#$%&'(RP+[;v63Q58fFz>=rgeoBljEivvWxROmQuc\Y^cu''!"#$%&'(WOc`''!"#$%&'()*+,-./0T^bgZ6:I'!"#$%&'('!"#$%&'(NbT`-adR'djn2j~{B'!"#$%&'(XZPZ-`XWYf7<hji<AOGK@mgqLxzyLQ_WXP^Rd]U|Y_bfz'!"#$%&'(MY+a[bX\1WbZ=L@'!"#$%&'()*+,-./0][aY5_ehnn;?SJ?I'!"#$%&'()*+,-./0ZX3]cikjAKG<ra`sfFKMSWLO~QTS_Uy]bnpf^j`cqyqp|rz|'!"#$%&'()*+,-./012345678lipja>WPQNCU'!"#$%&'()*+,-./012345678\fjob>BV[BflfouH{srtRWW\jbf[gglzrskymxp|ruw'!"#$%&'()*+,-./0V^fY'!"#$%&'()*+,-./0V`W4^\'!"#$%&'(UYZ\'!"#$%&'(Y\TZa.1U58zDMiosjz{L_]`QwUg`Z'!"#$%&'(Y\TZa.1UibM4b<ADKNSmb'FPG$X[I''TWE$T4S['!"#$%&'(LYW[_.F<1BM4eh`fm:=JK@'!"#$%&'(LVZ_R.2A'!"#$%&'(LVZ_R.2B'!"#$%&'(XZPZ-0~tt@t87^hl;eknttAcvDHW'!"#$%&'(XZPZ-0~t@t87^hl;eknttAcvDHX'!"#$%&'(RX[aa.2B=2'!"#$%&'(LVZ_R.2B'!"#$%&'(OY],V3/M1C3hd6'!"#$%&'(RX[aa.2A=2VccD`=F;K@befixyKTIyYT''!"#$%&'()*+,-./0dW_YXj7[Zm`<lLG'!"#$%&'()*+,-./012345678\[na=@nNF'!"#$%&'()*+,-./012345678\igko>VLAR'!"#$%&'()*+,-./012345678ildjq>booPlI'!"#$%&'()*+,-./012345678\[na=@nNF'!"#$%&'()*+,-./012345678\igko>RLAR'!"#$%&'()*+,-./012345678ildjq>booPlIFRHKjM'!"#$%&'()*+,-./012345678\[na=@nNF'!"#$%&'()*+,-./012345678\igko>QLAR'!"#$%&'()*+,-./012345678ildjq>booPlIFRHKTM'!"#$%&'()*+,-./U_V3gZb\[m'!"#$%&'(WOc`'!"#$%&'(LVZ_R.2A'!"#$%&'(LYW[_.F<1B'!"#$%&'(''FPG$X[I''TWE$T4TM[QP,5r~s?tz:@'!"RR%KYZX\+S\b^0II'!"RTJT'lxm9zn{t41Xbf5_ehnn;]p>erfgimqk'!"#$%&'(LVZ_R.UbVWY]a['!"#$%&'(RP+p|q=~rx85S7:GH=<qfdnArumszGJlRWZbki|z}nr}ww|'!"#$%&'(LVZ_R.2A'!"#$%&'(LVZ_R.2B'!"#$%&'(XZPZ-0^TT@Tbm87^hl;]mndneBdwEIX'!"#$%&'(XZPZ-0^T_@Tbm87^hl;eknttAcvDHX'!"#$%&'()*+,-./0'!"#$%&'()*+,-./0Z`cii6:JE:X?CaEIUK]gNr|xTXhqX]`phgkruyy'!"#$%&'()*+,-./0ad\bi6:IE:LG_EHSJdJiOR]TnTW^x^alc}cftl'!"#$%&'()*+,-./0T^bgZ6:K'!"#$%&'()*+,-./074R69{<?>J@RMJVLONQP\R}|~\aafkodppuĽz{suxz}|~ѐՈ'!"#$%&'('!"#$%&'()*+,-./0dZX`a6='!"#$%&'()*+,-./0\[_`58kH@'!"#$%&'()*+,-./0T^bgZ6:JNN''!"#$%&'()*+,-./0123456''FPG$X[I''TWE$T4TSLYY,5Q^^?`tz:@''!"#$%&'(Y\TZa.1]\Ubb58}}ADObU^|\ompavoi'FPG$X[I''TWE$T4YULYY,5Q^^?`tz:@'QTLRY&)ZVMZZ-w0u{uw||9<GZMV}tTgehYnga''FPG$X[I''TWE$T4]QNa+4q}r>sy9?''!"#$%&'(RP+p|q=~rx85S7:GH=<qfdnArumszGJmQVYajgzx{lzt'!"#$%&'(XZPZ-0~tt@t87^hl;eknttAcvDHW'!"#$%&'(XZPZ-0~t@t87^hl;eknttAcvDHX'!"#$%&'(RX[aa.2B=2'!"#$%&'(LVZ_R.2B'!"#$%&'(OY],V3/M1C3hd6'!"#$%&'(RX[aa.2A=2VccD`=F;QLAcfgjyzLUJzZU'!"#$%&'(RP+[;v63Q58fF}~>=rgeoBljEivvWsPMkOa\Y^c|''!"#$%&'(WOc`'!"#$%&'()*+,-./0T^bgZ6:I'!"#$%&'(Y\TZa.1Tuz8{=RSvMRV[_hùs|y~°'9'!"#$%&'(LVZ_R.2C'!"#$%&'(XZPZ-`XWYf7<hji<AOGK@mgqLxzyLQ_WXP^Rd]U|Y_bfw'!"#$%&'('!"#$%&'(MY+a[bX\1WbZ=I@'!"#$%&'()*+,-./0][aY5_ehnn;?PJ?WH'!"#$%&'()*+,-./0ad\bi6N?'!"#$%&'(UYZ\'FPG$X[I''TWE$T4^ZR^P,5r~s?tz:@''!"#$%&'(RP+p|q=~rx85S7:GH=<qfdnArumszGJlRWZbki|z}nr}ww|'!"#$%&'(LVZ_R.2A'!"#$%&'(LVZ_R.2B'!"#$%&'(XZPZ-0^TT@Tbm87^hl;]mndneBdwEIX'!"#$%&'(XZPZ-0^T_@Tbm87^hl;eknttAcvDHX'!"#$%&'()*+,-./0Z`cii6:JE:X?CaEIUK]gNr|xTXhqX]`phgkruyy'!"#$%&'()*+,-./0ad\bi6:IE:LG_EHSJdJiOR]TnTW^x^alc}cftl'!"#$%&'()*+,-./0T^bgZ6:K'!"#$%&'()*+,-./0`bXb5h`_an?DprqDINRGtnxSSX]^VdXjc[_fim~'!"#$%&'()*+,-./'!"#$%&'()*+,-./0Ua'!"#$%&'()*+,-./0][aY5_ehnn;SD'!"#$%&'()*+,-./0ZX3K<9W;>bmeBAvkisFwzrxLPa[PtzX]hmasZ~`du}di'!"#$%&'()*+,-./0ad\bi6:KE:RC'!"#$%&'()*+,-./0]abd''FPG$X[I''[FS_APP.ANX]'[FS_VIEW.BAS]'EGFPFXL(\_M,\<rx|s5>ZggHAJ?aqrQi}zKQ''EGFPFXL(\_M,swsu{4=:C''EGFPFXL(\_M,\<a]Taa4=YffGh|BH'(FRWKY6[bXN,Sw{uz7Z'(Ert~xpoq~+4P7/Qr5\<NWXV'(Cop%Xpoq~~,_suxx''(Vki%uyqpsymy.yw3z7<DH`abThOPrW\bej'(56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'EGFPFXL(\_M,\<\[Taa4=YffGh|BH'EGFPFXL(\_M,\<RXU[e4=YffGh|BH'EGFPFXL(\_M,\<[c1:<'EGFPFXL(\_M,\<eYVi3<YeZF{AG'EGFPFXL(\_M,\<fbZfX4=Zf[G|BH'DQPQTT'[QK]QQ.rtz7@5YffG@I>PI'''DNV'DQOSW&74);@'QTLRY&Z\[SYS16G@=2547?'MQFEYK'95*<F-^aY_f36Yej^lInuka?fJmT'DQOSW&>4):'WKH[%VYQW^+>-b^0CG'QTLRY'QTLRY&)LX]Q_<ah^T2Y}{=`G'QTLRY&)Kxz~vuw1:V=5Wx;bBT]^\I'QTLRY&)Iuv+^vuw2ey{~~='QTLRY'DJDMS&)n|il|}<p~4''[FS_VIEW.BAS]'[MANUAL.TXT]'EQVJX&Mquo~t}1T|9pLJM'Dqs}wonp}*3O6.Pq4[~;MVWU'Bno$Wonp}}+^rtww''10#[jrjwvo'./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy''!Yhphutm)~z,vt0y6~9^jocqM@AcCuJUZ^a'!kq$~u|z)k{|ywrq{58>CH^QRUZ'!QSIS&hvm*NX\aT>12]7}|=ARVQU`q'!kq$~u|z)z}{tp}=23uz7;NABrGIMSV[_'!vr$xk{(r~+}</0dwx4{z<}PF@DZ''!"0$Wkx}r|p-_QQd[V4GEI'!"0$F&oi{n+pwu14}:MF'!"0$:6rj)P}qr'!"0$IUZ(>8;,|/|rx''20#Gtstiwn~'./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy''!"#$%&'('!"#$%&'(i\X,h}qzvusw}vA''!"#$%&'()7+^r{~v3u6z~''!"#$%&'(iWVPV`/kt}yxvzyD>AphEZ''!"#$%&'()7+Ospv3u5y{?HPRFmV'!"#$%&'()7+[oxts2u{8{<?BEX\]I`U'!"#$%&'()*+ouoqtx6||=G['!"#$%&'('!"#$%&'(iMSPV`/kt}yxvzyD>?BgiF[''!"#$%&'()7+Ouo}wv3}{7{?IRZ\Pw`''!"#$%&'(ia]UaS/kt}yxvzC''!"#$%&'()7+Ospv3u5z{'!"#$%&'()7+[oxts2u{8{<?BEX\]I`UV'!"#$%&'()*+ouoqtx6||=G[''!"#$%&'(iML`-i~r{wvtx~wB''!"#$%&'()7+bvs0r2v{z9'!"#$%&'()7+O|rt0z3z~E:;>BINR['!"#$%&'()*+m{.~r{wvA67;}OBC''!"#$%&'(iWP^TS/kUd\jZPshZncxN''!"#$%&'()7+O|~0r2Wch6};@Diuzn|J'!"#$%&'()7+`us/~rx48=@CGLPTW[q'!"#$%&'()7+Rvzt1u{9<E]''!"#$%&'(iV^3''!"#$%&'()7+bvs0zx4x~=@DL'!"#$%&'()7+O|z~zxx5|9}''!"#$%&'(iel|}zxsr|uyxC''!"#$%&'()7+Us.2{7;~@CFRUY'!"#$%&'()*+u{~1D9:>JObUVY'!"#$%&'()*+r|/y{47H=AFNR'!"#$%&'()*+|nqzqxw3{6~:BXKLvOSX\'!"#$%&'()*+uw09BAGxC89ADh`^]aV]'!"#$%&'()*+u.}@''!"#$%&'()7+Z|.p~|wv;@EJ^STWZ^'!"#$%&'()*+|.rvsy5}E:;>DH`STW'!"#$%&'()*+m{.~r{wv58z;}SHIMR[W'!"#$%&'()*+ny}r{1y4v6z~=ILPWe]^a'!"#$%&'()*+m}~{yts}7:jJ~NABuKNRwY\~vtlr'!"#$%&'()*+|.xv2y}{7y:|>dneNCDxz|nwWLMPUm''30#$Qotq}ku||0rw4g{~}'./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy''!"#$%&'(iWVPV`6<1rV\Y_i?E:|>rnICFJPSX]s'!"#$%&'(Wy+o|rt0z3}8=ADNQh''!"#$%&'(]rp,s{|1xE:;AGLZZWLMSV\b''!"#$%&'()*+,></V~4Xz<p'!"#$%&'()*+,?</Vz6|?fsghDMOQy}^'!"#$%&'()*+,@</dyw3uw;>CHOTna'!"#$%&'()*+,A</Vwx4{z~}>FOKqZ['!"#$%&'()*+,B</U>t}6}{>DH_''!"#$%&'(]y+r|s0wz}yI>?FKOTs'!"#$%&'(J}+|/}r{4~E:;BEIXP'!"#$%&'(JPj^r~{Q|Dz''!"#$%&'(6789:;<=>?@ABCDEFGHIJKLMpFmXYZ[\]^_`abcdefghijklmnopqrs''!"#$%&'(WkxqG.nopqrstuvwxyz{|}~ghijklmnopqrstuvwxyz{'!"#$%&'(JqpF-mno'!"#$%&'(X|tsv|/w2wz~U<|}~\RS'!"#$%&'(hijklmnopqrstuvwxyz{|}~''!"#$%&'(]{q-}u0szR9u;y=aBCEGuM}'!"#$%&'()*89-[p{v2v|zy8;AGKNqU|c]afttsfg''!"#$%&'(Jno~rJ1qrstuvwxyz{|}~'!"#$%&'(Jno~r0CL3stuvwxyz{|}~'!"#$%&'(LsG.nopqrstuvwxyz{|}~'!"#$%&'(\~lrH/o?qA47wxyz{|}~'!"#$%&'(LyzJ1qrstuvwxyz{|}~'!"#$%&'(YrzzrH/8pqr=5uvwFyz{|>A''!"#$%&'(6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs''!"#$%&'(Y,v|/ry7y~;@FKNQZ^f''!"#$%&'(Jyu.]u'!"#$%&'(@?C,Yo3U{E'!"#$%&'(Qkq~>3dvD7IRJSO''!"#$%&'''!"#$%&'('''!"#$%&'()*+,-./0'[EMANUAL.TXT]END SUBCharlie Quante                 AN ANIMATED LIFE SIMULATION    charlie@charlie.seanet.com     12-08-96 (00:00)       QB, PDS                123  8138     ALIFE.BAS   DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"ANILIFE.ZIP",4^6:Z&=5834:?STRING$(50,177);U"%up()%9%%%I-%k3/WFl0)ZvV4.%%:S%%%1%%%%fs%nRqn%kjSgRfx&)<xBT]Z'xU"2llbxOBeETEPcj>sK9Vp0$\bTsds^PBRlG&LhK6D7Z0/Z$J[DJJj=rxql[%IjRYU"AS2x)vboI(-QE-nK%ciOPUx3Gp=/1W*a$oJN<#GoM0$krF:Vt:txKUGX*BwH0NaU"uk]4+&&by;B.<VW])+Xq+*i7kJ5BAe7e_#sZCO^iuqj8uv%_Ew\rw)G]\9O:urOU"OOXuwowFe:rFmp(N=i2zm6Cf?75BD9tJK[9O9Lgmu)qO%KKynaaLvdNw.VkMrATU"YVZ$Zaf$?7(IHOTolQL<pSUIf/^_n_SR+0^DFjK-rLjPPMlzm5=(<tpCRQ-oA%TU"\aba/#8pI^+,qy7Ou8p[EiDevd>kDWTjf;5;nEUSvC^JrMVub2D,NZ)ThmCXw2LU"&b<mA&p^J$9pu<f8mRx?hIn7#6UHml\i<0tNN48rgk<ZIdSjfcV<\(M.,F=r-)YU"[Na.>-Wd\#efg<z^>=%]GajN2]k1-(Ds+U_Re%#gXS0\Gs+wr_PdX>cBu#iK(n/U"W/kY+VoV[H=..J_>KS$LeJv\yZF[2TS;>)u_JEA/>Se.wfqE:ommhDkb:6>X_<dU"IbO[67o/6JeiQ__L>^U'gJHkZ=fZ<h0#h^AA-2_lsc-Sml?TH5jPs&&'(U0jj9wU"Vr<&_KS22ssAh1^-;ij88Q[uT1baxe[#CY40gKCU-OA58Y8nAt(Af)z::]a;Qh:U"_A43/&Wu8(Tc7#HKEWX('1$4FD^Sj/E*jEPkHta&)DQoHSUBFK+Z=f6[mj9A6$9U"4&id8:s*.otO+-Mz4\YboPm+tL#\/QesqTADUkt2<W0J(D9jE^?.WJ54+kP$i]kU"^qn:k9>T&3Q:>dg(LK13tW\.5m$R*R4rhJtDjE]D,<vcdTTVhND/McvK>i8%pW-U"Ptbbd%ZuXt,qmMA?rBF0(DpjOTjt,(d[[H?\ag=d6nbUu.>J'nU/6\[3'6[s&znU"&C/Qq:STOQAS[Fg41(;(KzKes1>pmqUUL3/QQZZ?.MiVNgn9GMji6LqKvP\A2;tU"H-HoA\\7O-RSy0aO\Kfshp?QH?1&bN35DsqHLgmYZJ5,W<6V&a#<6-?ci'a;frRU"EHF]jiB;R4n(#oly0JI:8\&Zdh9^<6sXhLb.8R;v*etF(8mXC:DE'aNXn?'Xu7FU"VfGA>JBiJCBX\9TB6^YT2de)HqaD?Qdo$du$=9lbR(vtwowM7a[Iak.n=(%SkB]U"<J\&+pAbPgKbB=l?b#4&Ukgt0-0x.3=aDw.YN$7i?mt:,#MmcG&lDm16+s322HkU"Tv508:JfLyuMG?I^O4,20dnA0pvFv0,ncWc2J:bG7m+&(qYS6X4/o)i\B<k#jN/U")B*A4W,%pi*E^ndxqa,g,_1/nS>?aCQPy9a2HFEBA%Q^sOdP\&fG*>4Lr1.]*1<U"DV8qATqvhQ)S$:jn<Qgat&Rj9cCw+hnjTmrI1qmYJ%6(W>;eo;q7etAL?EJfV:TU"2IkMnSr-7YeaM(#8(IdS9\\:.A6abM1qQkh)n^gRplfZoxWhH5V\]<0sQ-e6[)PU"t]>vNu>)l/lob<6AY*#'>onrEg\slge\Vy:j&4l:2LN:5HfrF*?^ZY5qVQC\$fgU"heO>pZTL-26r?6TT$c/rvR?IRdD2EW4('K)h;r4B<B,IdD1KS4pn&3WbL]q3<)OU"SG=gf;QXL^U_oD_f5-]$Z8NRD#j]f?Ev\:.IWT]WB_P[Vp+kwexwxxbeUvSo]>4U"-eH/25N_h;l'NGgY*ih#a46j7*)pPwd/+XFAYya)5M92CCZ&;2=dc,GpTgBa\rMU"IKx5SN_L,-/9>(aTv)%&3'Vdxni+0.Ae1IwXA$?)Ml3>GODMJ[D?%Gim$6=:d.9U"0]_u]WUw5VI.?uTlhivp4aFc-+<DqP7dK1_I\c6dOMXJi<jfBXGG\l9ARXES%;VU"If3YhUoSmw;(KM:H,)t4WHY>dPi(k^RPDRwuSqycBqHE3.VKGlWWkRC[)&aunCiU"l(j^GY)UE=YC'i(Tiyp#'6Tc2YJiU$ESgv85p#=SQuB((;<eq8blBPG5Y+$;k6UU"EL6=95DJUs48carH+:gnx-hHv0-;1=6'?f]87>KJ=RE/6pcMasmE+iJ'T#SxWnRU"88uRgvWP%[3CCc>Qw5a?B9,N-i\?f\_+mH(rBhkrG,E4ePEN=FF.3^vv4ZSIlT=U"XhRVrZXfX])oU8>cWTU)TG32>N;v=BA^kqU&&3cV];fXwe7U4B%oosBuN4.h2^%U"pzQ'V.Z1j.f=B8up5<G2,5jt[b3mnN62l[=#,OUSnXe35;)T?jC6>PO+rJhRdcaU"*5UW;asSKgjL)]-^DwWYs1[[/oE$IKxJ17O\%V/k%MG+aH;Z_jw>koE.5:T/JpiU"Oayn$-*d?$Mc/q4&p$J)JV)'RMk5)d-KH2X-PdW+aM2l6I2T<>ljrW(/MZ^iSDhU"?\6&,-4=c^LG-4-5]<(j/7wM;(Wbe>0#kI2F-pOOi4G)N8bGo;Z4(R\F3+Z\s/oU")h#k;l2&/3/PeXL*E]*qIHqrv'BXX7,hBc^+_:Qnmy5?a_Li%<nlk+J2hW5=M[3U"oH+#d54cAXJl%UKNKKiMq+V9hKK\Y>a^Kan;+faO^+e?B<)<J#KQbm;%.JqNeagU"'&x=BK)g&U[T?yg&:kU\r*x1d]R:tgqZqx6%<6>2#SzqF/o&L(c,-B-pfI?/X^RU"z,maHJe&j)ddaVv&l$9h%YBZU;_U?3#<R:vmad9T3MbA(Knw\Y1(&f\q<f[#tj=U"C8:8]v2WhRTnY8ar%(j-O.d2&'SOA7g,b>smX^t9OeBCgT&m\QOjTiaB[3GKXcTU"NZwB62%62<inlet-E3NcXAN?5oJ84_lXmiV'3K[KZ1k\ZbX(f$JHvponiD3;IYvU";ed0x7Zhm#2[MnOUDHQENt.GW&Ed\UtsE/(bfpB*gb&3tcqa]9q?.1-il?Ze::pU"6>ZHQHV-vmyjxvX4Ysuo^4^e,82H$5f5GY(0=3)73o[lkxuTt((xsJP16jC;o#6U"R7)%1TGuEk't4+NXHs.nVtdV9'*pOEF'89#3SIC2_:/QiVU1sVq4BnZE:U]=QX%U"&%59'7w<f&)#<d^>'Fn+L1_51B%7k2A16L16t4m##HP^-'6bK:7vndJOeCY?jHPU".^?+(8-L1?FR%f:E4DRJcqD,X7eR(C7xv&N*P7-MHxm8kj(N2?UD/kp6Yj:f_N/U"gQNx7yB#UxAn>RbfBlq<+luxZCB^E#tP_$gvsGo]OHYcEFb?1f?2E5(a=P3h],CU"oG#Z[.,DU]O=uc)ojVnCqYM28DO$6j;<]Zm4,F?R-YWj;fXPVoJB&X3cTuB+u[RU"S8liEe&v=)rjCh]8PbA(=#nS(^,k']CSJ=%(?EX6V^k93ojl)oBhxp=;t[>YeZ9U"_7=NQR80r$gNR_W.s+HfiYP1Ur;cXcEmyH*iYd[pg:jL+1$5+#<[u<BI&^M(&0kU"b\ja(hUl-$J9)'Y<jZ4AV$wnw1zY];9mDx\FFg$w#^]=AH6MdT,-bA0V;dtZ-2,U")J+H5x/0UeF027*7Nt%_f;bA^'V03b-Kso,K/2EBFL-b;H+0o]#;B?^J,A$0DEEU"uFk$A&jm1N\BWP$d%j^2yQh$(-UJ:c*+O:AhrWnEl(vaSx]b,8XU/MfF4bf:B7KU"XO.L?COVc-H+Z_W7R\<K-B0;9R&*]h6?6eAOPY(wlEn2glrZ#ig:AXqd.wJ+;lGU";d]-;YqiA$RlL8Tt1Kgjd.]ierHUUJQ=7GIfK'[4HH2Dqcp>)w%j/nQ].RD,;:NU"+NZl4L7;,v%U'[6FPnhe1R6c0f\:PPF,]RgVz3>O-j()9Iry6d$>*e6p'rd#mWkU"xZXe4v<bofsUVNP-zG^-,xe<&S*F7W_2h<JTgKKP;p)m<Sw79h&8e#</4qaB'riU";<cZo*DRtoJ1hD?BEAQ)ZrVhN:t9Q_&nNVD+IT=oG/iZD2bDEG(m'+-R:=C4)SVU"W5Amk.SedUli]-oK2x5PJPIdz?6]/VOpSG6=obWS7-]^=xW]xKBYO(qYVh)x$5VU",Vp)$UX];<m:wLk:gV+6R;).W80iazla>qBGR4Q61EnMOC=/QQrsF*in<(]vuXXU"+?MN7%8NAuG*,$Z#4?mEd\?cA%14s]>yq.Plq.Frl.8fXRn*8b_,MLXZDh-QcXbU"S8ZLh^FY%:h;>fXRS'8RhN)L?y\6:<K'MU.>#Kxa^6ZWNB&j]?J+B[(:uX_[4PLU"zm57%zf7p>Zr5eLQ1:Apr1NKc%aWG%%6/^+DZXg<Oqbia\jQWk4+mjjt5;),#u$U"7k2F9Xq>N7E&nSZ*rs=OM5jP&<06CL)m[=UXh\9Nr;KAKU9X]24bj-cD?YR-\YvU"HTb*\,Nxqp9\=$G>VFA%F=d:kWJ1)yugb:W-SK1XQ\b)h5$W5(:mb2,iP8V>/)FU"3Y5FEC?\\%Ly[t[RjxNQtK.S1X4rcdrOZpg,>1Mn%%VqB2YqJM]wY+(=lE&a?g&U":(otSuQ%SLnso?_,XJTnIkQj\)wRQiEq%aMhXps4j2^I%3*D;^Q;O6KKKq5fnK*U"05Cy3:d=FGa6m4FD-NO$;z&V2B^9(l&HFIdccuk>RLxBXK9;-Ah6':/dfwVZ)\\U"ut8eW9U%M0z1Pfv^eZJcC/&rU/U&+>6=u^HL$Uv+_/&QQpgP*'C1;iy/IM$Bd9IU"N0sgOOgZ$RC^QH0Z7^]qGCqXkCF+\O^q?gO\n'#j3.MNlg>LW^2?$FBkrpj>b0=U".WCz)2:71$=LED56ffu<(Bw-uKw;qkl;[Li2=lQcJdMJ1XG)2=BLTq%S&=x/E-&U"u#bm1R6lpn:</,<izh3's,W7OgliFFaZ7oQ)GGg2g4Ij&]\MpZstE,30HGtk($=U"65<\oG*gg.lky+VNMROi406]5wSdyKfRyb1oybRGyLoyfLRy,(oyXl-^P,a+jxdU"u%p()9%%%%-I%/wUCFLo+-Ht%%%%T(%%%.%%%%ywj%jVSnRhsf_9*o=e:5U8r.sU"\T=#$^u2M84JT=,?goK4YQQMtT)tp^Cf%f%QT,fm*Sd-U[Ci<)d<spf]q#.2?L'U"U0NqF?_D)XW,hV^n/HgK'^x.dl.iZPf]sZ0H^>;nl0cD(rKLpUMbnKWPa2c.I49U",/5Tq;B,BZ(taES_:9qu$/-eb#YlQJkmNvhHe*;VBlToU:i>#1x-6Rcc]F/nIVQU"W1AX720oVaAGOPP^K5,3<:t_>BF;PD?KH:_o)1RkSdxeR>C:O^CuM^Pk:lrO5,*U"1ipBYTVifZti9%-2JM*%vi>5-2T_Zhwt2f-ZtC]8kGNvRL%%up(%)9%%%%-%p)wU"UFm4p?R9%&%%T%(%%.%%%%y%wjjW%Snhs*f_VpB<u9TH8Py.(+8),LRWDC)a=*NU"\'\l0LQQRZ?YI:F+p9,S%/33B\T__37-S;8-=BD6)?fq?]IwtTjEN.YNYTbBZ7tU";Ln^$1fE<)uvHG1gMHOUT-_$yx5jNNuq5GcKY:P#^qZr'et(H&[CJBOJ*i>kH)7U">kfEFzhIj'iHy[Dig,lI,^kz2LCovO<[QyEgXcm)ht.0Yn)^7KU$;oA+pVhkGbXU"9ZWb#cUu&0=*3Sv4.?*<1ut>I.n<IGnXq<t/ua;CE_g0>3)faC[m4NdI_JdabpFU";L;W=XM0HtS6ZTRn)J4B[z6#TgC2MV-(zl9c:*s2(%.E1Ar=Vqw]wZh8lN?v&s'U"%up()%9%%%I-%jw/UF4f%l.6&%%%T(%%%.%%%%yw%jjXS[nhsf&_Vp(df9S8<FlU"0N'=pL&LVex;KL)A%Su74:%)*p0cfK),MQT'(As9G%ow&:k>YMw+afeiK:JT$_eU"f)\w#'0,5TX1tErW2lt4&MRO^zuMls8D8u]3=Sqte1+Y8J0pjP%#L6rgXHR9%/_U"gIADwyCLacVEYC(BSer$g7lM.s#Uh\jJrr<>:'f>Aal1(*&NJ/P4=(m<FlF4X'/U"CUDeIdaHZXYoY3Y,:a:f2[ND>V)Ye8KU<6U45N??APVP[6FDtem/Qe?2](Lj4&oU"TDKmd?PHaC(fj+K$fW.f[$lOHS=,4nG_W9M[:kNO>6Ks/f%sZ&t4KS#uF8BF4=HU"La?A7md'w;c&%up()%9%%%R-%Vw\UF,S)bY<&%%%T(%%%.%%%%yw%jjYS[nhsf,U"_6o(df9T8?B?EEi[uZ:e\6;%%)#*0_bCNfB/ym8+649+E5T4/J0>WtITEsBI*0<U"K%+fp.sNL=nrG=ih#.Qa?QoW^lp$B1,/jF;+Lzy3A?uMKT\-x<8n#h6E3P;>ci,U"v]MXBBdhMI.Lf?]Nl%Fq$mz8/wfDYo),]\Hq-W:FGNX\zL)HmgUNxRtuSm,1m/$U"9J=$5Gm7vaIWkhesu86#\i6Ps?%L2ok<E1ZhQi^L)S\vo_3ZY=T#U-5bxe<;dQsU"su_au7*t_*l:K4(+&q?4a,L*f2Dagx=SWe1[mT3nt)_Wd^ae04j=)&mPUPX*8qiU"6.\NZ(>Ob\;rs_q:bUZkk<0kZRxd>'b(up%()9%%%%-%1>xUF^sQ=6%7&%%%T(%U"%%.%%%%ywjj%ZSnh4sf_V+p<u9bT8I>J&ia=r.R?*)b:,0_x*l0LQQQr/R_4N'sU"/3s.sBT_Ks,S=*7pdiV?d[%#foa8pCQx9f:(Vhtm5Up:SFnaVT=MpE<)rMJBp=GU"P%Sd2KHohkqI%3jW$h8r3)D>tRa;X+0F-Q$_HHOS0n#P5G,h6[QVsy/=3Z:JkP,U"SNDVJU&qnSsHX1c2a*(F1Rqay^I>a7EnB?XwzW<&^lI*Kk7N=guI5I,ar=8L/>kU"L.k&+oT4xpGjR'ck+Q>\g2W6'+2<49kR-?k[QVBggE[G/0m^EaT]&<mLp'E(vP^U">e_d%2#2D^u;Cy./:ryBVnxx&nP'89*F$j^hW3ns.8NpXu%p&'9%%9%%#%-%kD3U"WFl10ZvV#4%%:%S%%1%%%%%%%%%&%%E%%%%%%%%%fsn%Rqnk%jSgf%xup&%'9%9U"%%%%-I%/wUCFLo+-Ht%%%%T(%%%.%%%%%%%%%%%E#%%%*%4%%y%wjjV%Snhs%upU"&'%9%9%%%%-%1pwUFRmp?R%9&%%%T(%%%.%%%%%%%%%%%E%.%%L5%%%yw%jjWS%U"nhsu%p&'9%%9%%#%-%jDwUF4%fl.6%&%%T%(%%.%%%%%%%%%%%%E%%+%16%%%ywU"j%jXSn%hsup%&'9%%9%%%R-%Vw\UF,S)bY<&%%%T(%%%.%%%%%%%%%%%%E%%%'iU"7%%%ywjj%YSnh%sup&%'9%9%%%%-I%>xU.FsQ='67&%%%T(%%%.%%%%%%%%%%%EU"%%%%S%9%%y%wjjZ%Snhs%up*+%%%%%%+%+%%r&%%&6:%%%%%END SUBCLOSE:IF S=146AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBKurt Kuzba                     NANO-MAN (GAMEBASE)            FidoNet QUIK_BAS Echo          01-15-97 (00:00)       QB, QBasic, PDS        455  21795    GAMEBASE.BAS'_|_|_|   GAMEBASE.BAS'_|_|_|   Simple routines usable for game design.'_|_|_|   No guarantee or warrantee given or implied.'_|_|_|   Released   PUBLIC DOMAIN   by Kurt Kuzba.  (1/15/97)'$DYNAMICTYPE spritedata: y AS INTEGER: x AS INTEGER: w AS INTEGER: h AS INTEGER   sprite AS STRING * 100: buffer AS STRING * 100: END TYPETYPE setupdata: y AS INTEGER: x AS INTEGER: objdef AS INTEGER: END TYPEDECLARE SUB levelssetup (S() AS setupdata, N%)DECLARE SUB qbblitsprite (S AS spritedata)DECLARE SUB qbgetsprite (S AS spritedata)DECLARE SUB qbputsprite (S AS spritedata)DECLARE SUB backgrounddata (S$, N%)DECLARE SUB monsterdata (S$, N%)DECLARE SUB playerdata (S$, N%)DECLARE SUB levelsdata (S$, N%)DECLARE SUB prizedata (S$, N%)DECLARE SUB spritecolors (S$)DECLARE SUB showlevel (L%)DIM Lft AS INTEGER, Rgt AS INTEGER, Clm AS INTEGER, Wpn AS INTEGERDIM player(15) AS STRING * 100, weapon(4) AS STRING * 100DIM monster(6) AS STRING * 100, prize(6) AS STRING * 100DIM sprite(11) AS spritedata, blast AS spritedataDIM SHARED levdat AS STRING * 640, background(16000) AS LONGDIM objects(10) AS setupdataCONST front = 0: CONST back = 1: CONST climb = 2CONST runright = 5: CONST runleft = 8CONST standright = 11: CONST standleft = 12CONST jumpright = 13: CONST jumpleft = 14CONST shootright = 0: CONST shootleft = 2FOR t% = 0 TO 14: playerdata player(t%), t%: NEXTFOR t% = 0 TO 3: playerdata weapon(t%), t% + 15: NEXTFOR t% = 0 TO 5: prizedata prize(t%), t%   monsterdata monster(t%), t%: NEXT: sprite(0).w = 10sprite(0).h = 10: FOR t% = 1 TO 10: sprite(t%) = sprite(0): NEXTDEF SEG = &H40: POKE &H17, PEEK(&H17) AND 223: DEF SEGSCREEN 13: GOSUB CreateLevel: Lft = 0: Rgt = 0: Clm = 0: Wpn = 0GameOver% = 10: sprite(0).x = 180: sprite(0).y = 10: figure = frontsprite(0).sprite = player(figure): qbblitsprite sprite(0)FOR t% = 1 TO 5: sprite(t%).y = objects(t% - 1).y   sprite(t%).x = objects(t% - 1).x: qbgetsprite sprite(t%): NEXTFOR t% = 6 TO 10   sprite(t%).y = objects(t% - 1).y: sprite(t%).x = objects(t% - 1).x   sprite(t%).sprite = prize(objects(t% - 1).objdef)   qbblitsprite sprite(t%): NEXTFOR Fstart% = 0 TO 100   K$ = INKEY$: x% = sprite(0).x: y% = sprite(0).y: falling = 0   nx% = x%: ny% = y%: Fstart% = 0: IF K$ = CHR$(27) THEN EXIT FOR   xy% = (x% \ 10) * 32 + (y% + 3) \ 10 + 1: Feet% = xy% + 32   IF x% < 180 THEN      SELECT CASE ASC(MID$(levdat, Feet%))         CASE 0, 2: falling = -1         CASE 1, 4: falling = 0         CASE 5: falling = ((x% MOD 10) > 0)         CASE ELSE: falling = ((x% MOD 10) > 2)      END SELECT   END IF   SELECT CASE INP(96)      CASE 75: move$ = "RL"      CASE 203: move$ = "SL"      CASE 77: move$ = "RR"      CASE 205: move$ = "SR"      CASE 72: move$ = "CU"      CASE 200: move$ = "SB"      CASE 80: move$ = "CD"      CASE 208: move$ = "SB"      CASE 82: move$ = "SF"   END SELECT   SELECT CASE move$      CASE "RL"         w% = -1: IF y% > 9 THEN w% = (ASC(MID$(levdat, xy% - 1)) = 6)         IF ((y% MOD 10) <> 0) OR (NOT w%) THEN            IF falling THEN nx% = nx% + 1            ny% = ny% - 1: figure = runleft + lr% \ 4            lr% = (lr% + 1) MOD 12: GOSUB blitplayer         ELSE            IF figure <> standleft THEN               figure = standleft: GOSUB blitplayer            END IF: move$ = "SL"         END IF      CASE "SL"         IF figure <> standleft THEN            figure = standleft: IF falling THEN nx% = nx% + 1            GOSUB blitplayer         ELSE            IF falling THEN nx% = nx% + 1: GOSUB blitplayer         END IF      CASE "RR"         w% = -1: IF y% < 310 THEN w% = (ASC(MID$(levdat, xy% + 1)) = 6)         IF ((y% MOD 10) <> 0) OR (NOT w%) THEN            IF falling THEN nx% = nx% + 1            ny% = ny% + 1: figure = runright + RR% \ 4            RR% = (RR% + 1) MOD 12: GOSUB blitplayer         ELSE            IF figure <> standright THEN               figure = standright: GOSUB blitplayer            END IF: move$ = "SR"         END IF      CASE "SR"         IF figure <> standright THEN            figure = standright: IF falling THEN nx% = nx% + 1            GOSUB blitplayer         ELSE            IF falling THEN nx% = nx% + 1: GOSUB blitplayer         END IF      CASE "CU"         IF x% > 0 THEN            O% = ASC(MID$(levdat, xy%)): O% = (O% = 4) + (O% = 1)         END IF         IF x% < 608 THEN            b% = ASC(MID$(levdat, xy% + 32)): b% = (b% = 1) + (b% = 4)         END IF: L% = b% + O%         IF L% THEN            figure = climb + CL% \ 5: CL% = (CL% + 1) MOD 15            nx% = nx% + (nx% > 0)            ny% = ny% + 3 - ((ny% + 3) MOD 10): GOSUB blitplayer         ELSE            move$ = "SB"            IF figure <> back THEN figure = back: GOSUB blitplayer         END IF      CASE "CD"         IF (x% MOD 10) <> 0 THEN            b% = ASC(MID$(levdat, xy% + 32)): O% = ASC(MID$(levdat, xy%))            IF (O% = 4) OR (O% = 5) OR (b% = 4) OR (b% = 5) THEN               figure = climb + CL% \ 5: CL% = (CL% + 14) MOD 15               nx% = nx% + 1: ny% = (ny% + 3) - ((ny% + 3) MOD 10)               GOSUB blitplayer            END IF         ELSE            b% = ASC(MID$(levdat, xy% + 32))            IF ((b% = 2) OR (b% = 4) OR (b% = 5)) AND (x% < 180) THEN               figure = climb + CL% \ 5: CL% = (CL% + 14) MOD 15               nx% = nx% + 1: ny% = (ny% + 3) - ((ny% + 3) MOD 10)               GOSUB blitplayer            END IF         END IF      CASE "SB": IF falling THEN nx% = nx% + 1: figure = front         IF figure <> back THEN figure = back: GOSUB blitplayer      CASE "SF": IF falling THEN nx% = nx% + 1: figure = back         IF figure <> front THEN figure = front: GOSUB blitplayer   END SELECT: DEF SEG = &H40: sh% = PEEK(&H17): DEF SEG   IF ((sh% AND 8) = 8) AND (INSTR("SLSR", move$) > 0) THEN      blast = sprite(0): Yloc% = 10: fire% = shootright      IF move$ = "SL" THEN Yloc% = -10: fire% = shootleft      blast.y = blast.y + Yloc%: wave% = (wave% + 1) AND 1      WAIT &H3DA, 8: WAIT &H3DA, 8, 8: SOUND RND * 1000 + 100, .3      blast.sprite = weapon(fire% + wave%): qbblitsprite blast      WAIT &H3DA, 8: WAIT &H3DA, 8, 8: SOUND RND * 1000 + 999, .3      blast.sprite = blast.buffer: qbputsprite blast   END IF   FOR sp% = 1 TO 5: qbputsprite sprite(sp%)      sprite(sp%).sprite = monster(objects(sp% - 1).objdef)      qbblitsprite sprite(sp%)      sprite(sp%).sprite = sprite(sp%).buffer: NEXTNEXT: DEF SEG = &H40: POKE &H17, PEEK(&H17) OR 32: DEF SEGSCREEN 0: WIDTH 80, 25: SYSTEMCreateLevel: : showlevel 1: levelssetup objects(), 1   FOR t% = 0 TO 4: sprite(t% + 1).h = 10: sprite(t% + 1).w = 10      sprite(t% + 1).y = objects(t%).y      sprite(t% + 1).x = objects(t%).x      sprite(t% + 6).h = 10: sprite(t% + 6).w = 10      sprite(t% + 6).y = objects(t% + 5).y      sprite(t% + 1).x = objects(t% + 5).x: NEXT: RETURNblitplayer: : sprite(0).sprite = sprite(0).buffer   qbputsprite sprite(0): sprite(0).x = nx%: sprite(0).y = ny%   sprite(0).sprite = player(figure): qbblitsprite sprite(0): RETURN'_|_|_|   end   GAMEBASE.BASSUB backgrounddata (S$, N%)   '  " " = clear   "0" = black    "1" = blue      "2" = green   '  "3" = cyan    "4" = red      "5" = magenta   "6" = brown   '  "7" = tan     "8" = yellow   "9" = white   '  These colors are used with all graphics object in this prg.   sp$ = ""   SELECT CASE N%      CASE 0: S$ = STRING$(100, 0): EXIT SUB      CASE 1: sp$ = sp$ + "0665506606"  'This format is for ease              sp$ = sp$ + " 006066550"  'of design only              sp$ = sp$ + "  05666060"  'It is obviously more              sp$ = sp$ + "666665560 "  'compact without having              sp$ = sp$ + "06566600  "  'it in a visually              sp$ = sp$ + " 065566666"  'recognizable format              sp$ = sp$ + "  06606550"              sp$ = sp$ + "660666560 "              sp$ = sp$ + "65566060  "              sp$ = sp$ + "6666560556"      CASE 2: sp$ = sp$ + "  111111  " + "  911911  " + "  111111  "              sp$ = sp$ + "  191191  " + "  111111  " + "  119119  "              sp$ = sp$ + "  111111  " + "  911911  " + "  111111  "              sp$ = sp$ + "  191191  "      CASE 3: sp$ = sp$ + "6660666666" + "6666066660" + "6666606666"              sp$ = sp$ + "          " + "          " + "          "              sp$ = sp$ + "          " + "          " + "          "              sp$ = sp$ + "          "      CASE 4: sp$ = sp$ + "6666666666" + "6666666666" + "6000000006"              sp$ = sp$ + "6000000006" + "6666666666" + "6000000006"              sp$ = sp$ + "6000000006" + "6666666666" + "6000000006"              sp$ = sp$ + "6000000006"      CASE 5: sp$ = sp$ + "6666666666" + "  911911  " + "  111111  "              sp$ = sp$ + "  191191  " + "  111111  " + "  119119  "              sp$ = sp$ + "  111111  " + "  911911  " + "  111111  "              sp$ = sp$ + "  191191  "      CASE 6: sp$ = sp$ + "6066666606" + "6660666666" + "6666606666"              sp$ = sp$ + "0666666066" + "6606666660" + "6666066666"              sp$ = sp$ + "6666660666" + "6066666606" + "6660666666"              sp$ = sp$ + "6666606666"   END SELECT: spritecolors sp$: S$ = sp$END SUBSUB levelsdata (S$, N%)   '   " " = space   "/" = up only   ";" = slide   '   "-" = floor   "=" = ladder    "\" = trapdoor   '   "[" = wall   SC$ = "": S$ = STRING$(640, 0)   SELECT CASE N%      CASE 1        '==================================         SC$ = SC$ + "                                "         SC$ = SC$ + "     /----------------[=        "         SC$ = SC$ + "-----/                [---------"         SC$ = SC$ + "     /                          "         SC$ = SC$ + "-----/  -----------------------/"         SC$ = SC$ + "     /                         /"         SC$ = SC$ + "-----/          =---------------"         SC$ = SC$ + "     /          =               "         SC$ = SC$ + "/-----------------------------\-"         SC$ = SC$ + "/                             ; "         SC$ = SC$ + "/----------        --------\----"         SC$ = SC$ + "/                       [  ;    "         SC$ = SC$ + "/-----------------------[  ;    "         SC$ = SC$ + "/                       [  -----"         SC$ = SC$ + "-------------=                  "         SC$ = SC$ + "             =          [=      "         SC$ = SC$ + "             =          [=      "         SC$ = SC$ + "  ---------  =------------------"         SC$ = SC$ + "             =                  "         SC$ = SC$ + "--------------------------------"   END SELECT   FOR t% = 1 TO 640      MID$(S$, t%) = CHR$(INSTR("/;-=\[", MID$(SC$, t%, 1))): NEXTEND SUBSUB levelssetup (S() AS setupdata, N%)   SELECT CASE N%      CASE 1         S(0).y = 150: S(0).x = 0: S(0).objdef = 1         S(1).y = 100: S(1).x = 70: S(1).objdef = 2         S(2).y = 200: S(2).x = 90: S(2).objdef = 3         S(3).y = 130: S(3).x = 110: S(3).objdef = 4         S(4).y = 270: S(4).x = 180: S(4).objdef = 5         S(5).y = 310: S(5).x = 10: S(5).objdef = 1         S(6).y = 140: S(6).x = 30: S(6).objdef = 2         S(7).y = 310: S(7).x = 160: S(7).objdef = 3         S(8).y = 0: S(8).x = 10: S(8).objdef = 4         S(9).y = 70: S(9).x = 160: S(9).objdef = 5   END SELECTEND SUBSUB monsterdata (S$, N%)   sp$ = ""   SELECT CASE N%      CASE 0: S$ = STRING$(100, 0): EXIT SUB      CASE 1: sp$ = sp$ + "          " + " 8      8 " + "  8    8  "              sp$ = sp$ + "   2222   " + " 22222222 " + "2200220022"              sp$ = sp$ + "2222222222" + " 22200222 " + "   2222   "              sp$ = sp$ + " 222  222 "      CASE 2: sp$ = sp$ + "          " + "  22252   " + " 22222222 "              sp$ = sp$ + " 2222  9  " + " 2222     " + "  22222   "              sp$ = sp$ + "2   22222 " + "22    2222" + " 22222222 "              sp$ = sp$ + "  222222  "      CASE 3: sp$ = sp$ + "          " + " 9 9  9 9 " + "  955559  "              sp$ = sp$ + "9 555555 9" + " 95855859 " + "9 555555 9"              sp$ = sp$ + " 95888859 " + "   5555   " + "   5  5   "              sp$ = sp$ + "  55  55  "      CASE 4: sp$ = sp$ + "          " + "    66    " + "   666    "              sp$ = sp$ + "   6666   " + "  60606   " + "  666666  "              sp$ = sp$ + " 6999996  " + " 66666666 " + "   8  8   "              sp$ = sp$ + "  88  88  "      CASE 5: sp$ = sp$ + "          " + "   6666   " + "  617716  "              sp$ = sp$ + "  777777  " + "   7447   " + "5555555555"              sp$ = sp$ + "5  5555  5" + "   5555   " + "  55  55  "              sp$ = sp$ + "555    555"   END SELECT: spritecolors sp$: S$ = sp$END SUBSUB playerdata (S$, N%)   sp$ = ""   SELECT CASE N%      CASE 0: sp$ = sp$ + "          " + "   4444   " + "  433334  "              sp$ = sp$ + "  433334  " + "  444444  " + "985888858 "              sp$ = sp$ + "9 555555 7" + "   8888   " + "   8  8   "              sp$ = sp$ + "  88  88  "      CASE 1: sp$ = sp$ + "          " + "   4444   " + "  444444  "              sp$ = sp$ + "  444444  " + "  588885  " + "985588558 "              sp$ = sp$ + "9 585585 7" + "   8888   " + "   8  8   "              sp$ = sp$ + "  88  88  "      CASE 2: sp$ = sp$ + "77        " + "8  4444   " + "8 444444 7"              sp$ = sp$ + "8 444444 8" + "8858888588" + "  558855  "              sp$ = sp$ + "  585585  " + "   888888 " + "   8    88"              sp$ = sp$ + "  88      "      CASE 3: sp$ = sp$ + "          " + "   4444   " + "7 444444  "              sp$ = sp$ + "8 444444  " + "8 588885 7" + "8855885588"              sp$ = sp$ + "  585585  " + "  888888  " + "88     8  "              sp$ = sp$ + "        88"      CASE 4: sp$ = sp$ + "        77" + "   4444  8" + "  444444 8"              sp$ = sp$ + "7 444444 8" + "8 588885 8" + "8855885588"              sp$ = sp$ + "  585585  " + " 888888   " + "88   8    "              sp$ = sp$ + "     88   "      CASE 5: sp$ = sp$ + "          " + "    4444  " + "   44443  "              sp$ = sp$ + "   44443  " + "   5885   " + "   888859 "              sp$ = sp$ + "   5558899" + "   8888   " + "888    8  "              sp$ = sp$ + "8       88"      CASE 6: sp$ = sp$ + "          " + "    4444  " + "   44443  "              sp$ = sp$ + "   44443  " + "   5885   " + "   888859 "              sp$ = sp$ + "   5558899" + "888888888 " + "8       88"              sp$ = sp$ + "          "      CASE 7: sp$ = sp$ + "          " + "    4444  " + "   44443  "              sp$ = sp$ + "   44443  " + "   5885   " + "   888859 "              sp$ = sp$ + "   5558899" + "    8888  " + "    8  8  "              sp$ = sp$ + "    88 88 "      CASE 8: sp$ = sp$ + "          " + "  4444    " + "  34444   "              sp$ = sp$ + "  34444   " + "   5885   " + " 958888   "              sp$ = sp$ + "9988555   " + "   8888   " + "  8    888"              sp$ = sp$ + "88       8"      CASE 9: sp$ = sp$ + "          " + "  4444    " + "  34444   "              sp$ = sp$ + "  34444   " + "   5885   " + " 958888   "              sp$ = sp$ + "9988555   " + " 888888888" + "88       8"              sp$ = sp$ + "          "     CASE 10: sp$ = sp$ + "          " + "  4444    " + "  34444   "              sp$ = sp$ + "  34444   " + "   5885   " + " 958888   "              sp$ = sp$ + "9988555   " + "   8888   " + "   8  8   "              sp$ = sp$ + "  88 88   "     CASE 11: sp$ = sp$ + "          " + "    4444  " + "   44443  "              sp$ = sp$ + "   44443  " + "   5885   " + "   888859 "              sp$ = sp$ + "   5558899" + "   8888   " + "    88    "              sp$ = sp$ + "    888   "     CASE 12: sp$ = sp$ + "          " + "  4444    " + "  34444   "              sp$ = sp$ + "  34444   " + "   5885   " + " 958888   "              sp$ = sp$ + "9988555   " + "    88    " + "    88    "              sp$ = sp$ + "   888    "     CASE 13: sp$ = sp$ + "          " + "    4444  " + "   44443  "              sp$ = sp$ + "   44443  " + "   5885  7" + "8888888888"              sp$ = sp$ + "7  5558   " + "   888888 " + " 8888   88"              sp$ = sp$ + " 8        "     CASE 14: sp$ = sp$ + "          " + "  4444    " + "  34444   "              sp$ = sp$ + "  34444   " + "7  5885   " + "8888888888"              sp$ = sp$ + "   8555  7" + " 888888   " + "88   8888 "              sp$ = sp$ + "        8 "     CASE 15: sp$ = sp$ + "        8 " + "       9 8" + "      4  9"              sp$ = sp$ + "    8   9 " + "   9 4 4  " + "  4  9 98 "              sp$ = sp$ + "9   4 4 8 " + "   98  8 4" + "      9  8"              sp$ = sp$ + "        9 "     CASE 16: sp$ = sp$ + "          " + "       9  " + "     9  4 "              sp$ = sp$ + "   9  4  8" + "  4    8  " + " 9  4 8  8"              sp$ = sp$ + "   9  4 8 " + "     9  4 " + "       9  "              sp$ = sp$ + "          "     CASE 17: sp$ = sp$ + " 8        " + "8 9       " + "9  4      "              sp$ = sp$ + " 9   8    " + "  4 4  9  " + " 89 9  4  "              sp$ = sp$ + " 8 4 4   9" + "4 8  89   " + "8  9      "              sp$ = sp$ + " 9        "     CASE 18: sp$ = sp$ + "          " + "  9       " + " 4  9     "              sp$ = sp$ + "8  4  9   " + "  8    4  " + " 8  8 4  9"              sp$ = sp$ + "8  4  9   " + " 4  9     " + "  9       "              sp$ = sp$ + "          "   END SELECT: spritecolors sp$: S$ = sp$END SUBSUB prizedata (S$, N%)   sp$ = ""   SELECT CASE N%      CASE 0: S$ = STRING$(100, 0): EXIT SUB      CASE 1: sp$ = sp$ + "          " + "          " + "          "              sp$ = sp$ + "          " + " 444  444 " + "4444444444"              sp$ = sp$ + "4444444444" + " 44444444 " + "   4444   "              sp$ = sp$ + "    44    "      CASE 2: sp$ = sp$ + "          " + "   8888   " + "    88    "              sp$ = sp$ + "88  88  88" + " 88888888 " + "88  88  88"              sp$ = sp$ + "    88    " + "    88    " + "   8888   "              sp$ = sp$ + "    88    "      CASE 3: sp$ = sp$ + "          " + "   2222   " + "    22    "              sp$ = sp$ + "   2222   " + "   2222   " + "  222222  "              sp$ = sp$ + "2222222222" + "2222222222" + " 22222222 "              sp$ = sp$ + "   2222   "      CASE 4: sp$ = sp$ + "          " + "    11    " + "   1111   "              sp$ = sp$ + "  111111  " + " 11111111 " + "  111111  "              sp$ = sp$ + "   1111   " + "    11    " + "          "              sp$ = sp$ + "          "      CASE 5: sp$ = sp$ + "          " + "          " + "   8888   "              sp$ = sp$ + " 88788788 " + "8788888788" + "8788888878"              sp$ = sp$ + "8878888788" + " 88788788 " + "   8888   "              sp$ = sp$ + "          "   END SELECT: spritecolors sp$: S$ = sp$END SUBSUB qbblitsprite (S AS spritedata)   SC& = &HA000: SG& = VARSEG(S.sprite): Of& = VARPTR(S.sprite)   BG& = VARSEG(S.buffer): BF& = VARPTR(S.buffer)   wide& = S.y + S.w - 1: high& = S.x + S.h - 1: sp& = 0   FOR x& = S.x TO high&      IF (x& > -1) AND (x& < 200) THEN         vert& = x& * 320: FOR y& = S.y TO wide&            IF (y& > -1) AND (y& < 320) THEN               DEF SEG = SG&: sd% = PEEK(Of& + sp&)               DEF SEG = SC&: bd% = PEEK(BO& + vert& + y&)               IF sd% <> 0 THEN POKE vert& + y&, sd%               DEF SEG = BG&: POKE (BF& + sp&), bd%            END IF: sp& = sp& + 1: NEXT      ELSE : sp& = sp& + S.w      END IF: NEXT: DEF SEGEND SUBSUB qbgetsprite (S AS spritedata)   SC& = &HA000: SG& = VARSEG(S.sprite): Of& = VARPTR(S.sprite)   wide& = S.y + S.w - 1: high& = S.x + S.h - 1: sp& = 0   FOR x& = S.x TO high&      IF (x& > -1) AND (x& < 200) THEN         vert& = x& * 320: FOR y& = S.y TO wide&            IF (y& > -1) AND (y& < 320) THEN               DEF SEG = SC&: sd% = PEEK(vert& + y&)               DEF SEG = SG&: POKE Of& + sp&, sd%            END IF: sp& = sp& + 1: NEXT      ELSE : sp& = sp& + S.w      END IF: NEXT: DEF SEGEND SUBSUB qbputsprite (S AS spritedata)   SC& = &HA000: SG& = VARSEG(S.sprite): Of& = VARPTR(S.sprite)   wide& = S.y + S.w - 1: high& = S.x + S.h - 1: sp& = 0   FOR x& = S.x TO high&      IF (x& > -1) AND (x& < 200) THEN         vert& = x& * 320: FOR y& = S.y TO wide&            IF (y& > -1) AND (y& < 320) THEN               DEF SEG = SG&: sd% = PEEK(Of& + sp&)               DEF SEG = SC&: POKE vert& + y&, sd%            END IF: sp& = sp& + 1: NEXT      ELSE : sp& = sp& + S.w      END IF: NEXT: DEF SEGEND SUBSUB showlevel (L%)   DIM SC(7) AS STRING * 100, b AS spritedata   FOR t% = 0 TO 6: backgrounddata SC(t%), t%: NEXT   b.w = 10: b.h = 10: levelsdata levdat, L%   FOR t% = 0 TO 639: b.y = (t% MOD 32) * 10: b.x = (t% \ 32) * 10      b.sprite = SC(ASC(MID$(levdat, t% + 1))): qbputsprite b: NEXT   GET (0, 0)-(319, 199), backgroundEND SUBSUB spritecolors (S$)   REDIM SC(1 TO 11) AS INTEGER: SC(1) = 0: SC(2) = 177: sp$ = ""   SC(3) = 9: SC(4) = 10: SC(5) = 11: SC(6) = 4: SC(7) = 5   SC(8) = 6: SC(9) = 89: SC(10) = 14: SC(11) = 15: L% = LEN(S$)   FOR t% = 1 TO L%      MID$(S$, t%, 1) = CHR$(SC(INSTR(" 0123456789", MID$(S$, t%, 1))))   NEXT: ERASE SCEND SUBXtance Coders Alliance         DEMONSTRATION OF LED LETTERING harryst@castel.nl              03-15-97 (21:20)       QB, QBasic, PDS        337  8600     DEMOCREW.BAS' a Xtance Coders Alliance Release' ' Mr. Snow presents the Demo made by Me and VS-BOS!'' mail - mrsnow@freemail.nl'' 02-08-96''DECLARE SUB Screenin ()DECLARE SUB Slowblijf (a$, kl11!, kl12!, kl13!, kl21!, kl22!, kl23!, y1!, clr!, met!, wachtTijd!)DECLARE SUB rand ()DECLARE SUB blijf (a$, kl11!, kl12!, kl13!, kl21!, kl22!, kl23!, y1!, clr!, met!)DECLARE SUB wacht (tijd!)DECLARE SUB kleur (k%, r%, g%, B%)DECLARE SUB knipper (clr, tijd, m11, m12, m13, m21, m22, m23, n11, n12, n13, n21, n22, n23)start:RANDOMIZE TIMERtim1 = TIMERKEY 15, CHR$(0) + CHR$(1)ON KEY(15) GOSUB eindeKEY(15) ONFOR i% = 32 TO 0 STEP -1 FOR j% = 1 TO 2000 NEXT j%h% = i%kleur 7, h%, h%, h%NEXT i%tim2 = INT(1 / (TIMER - tim1))SCREEN 12a$ = CHR$(34) + "[XCa] 1996 " + CHR$(34)blijf a$, 0, 1, 1, 0, 1, 1, 100, 1, 1a$ = "Presents "Slowblijf a$, 1, 0, 1, 0, 0, 0, 200, 3, 1, 7.5a$ = "in cooperation with"blijf a$, 1, 1, 1, 0, 0, 0, 300, 5, 1wacht 1000LINE (14, 30)-(626, 466), 0, BFLINE (0, 158)-(640, 198), 0, BFa$ = "Mr. SN()W "blijf a$, 1, 0, 0, 0, 0, 1, 150, 1, 2a$ = "and"blijf a$, 1, 1, 1, 0, 0, 0, 250, 3, 2a$ = "The DarkMan"blijf a$, 1, 0, 0, 0, 0, 1, 350, 5, 2wacht 1000FOR i% = 0 TO 16IF i > 480 - i% THEN LINE (i%, i%)-(640 - i%, 480 - i% + 16), (i% / 4 - FIX(i% / 4)) * 4 + 11, BIF 480 - i% > i% THEN LINE (i%, i% + 16)-(640 - i%, 480 - i%), (i% / 4 - FIX(i% / 4)) * 4 + 11, BNEXT i%LINE (14, 30)-(626, 466), 0, BFLINE (0, 0)-(640, 16), 0, BFLINE (14, 30)-(626, 466), 0, BFa$ = "The      Wizzard"blijf a$, 0, 1, 1, 1, 1, 1, 100, 1, 3a$ = "   Game       "blijf a$, 1, 1, 1, 1, 1, 1, 100, 7, 1a$ = "BBS"blijf a$, 0, 1, 1, 1, 1, 1, 150, 3, 4a$ = "Groningen"blijf a$, 0, 1, 1, 1, 1, 1, 250, 5, 2a$ = "The Netherlands"blijf a$, 0, 1, 1, 1, 1, 1, 350, 9, 3wacht 1000LINE (14, 30)-(626, 466), 0, BFa$ = "Call now"blijf a$, 1, 1, 1, 1, 1, 1, 100, 1, 1a$ = "050-5412191"blijf a$, 1, 0, 0, 1, 0, 0, 200, 3, 1i = INT(TIMER)DOknipper 3, 50, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0LOOP UNTIL INKEY$ <> "" OR INT(TIMER) - i = 59SCREEN 0COLOR 7, 1PRINT "INTRO Coded by Mr. SN()W for " + CHR$(34) + "The GAME Wizzard BBS" + CHR$(34)PRINT "Online time: 7 days a week 17:00 / 22:00 hourz"COLOR 7, 0ENDENDeinde:SCREEN 0PRINT "You are a nasty USER"FOR i = 1 TO 15BEEPNEXT iPRINT "Never do that again..."PRINT "INTRO Coded by Mr. SN()W for " + CHR$(34) + "The GAME Wizzard BBS" + CHR$(34)PRINT "Online time: 7 days a week 17:00 / 22:00 hourz"GRaphic:SUB blijf (a$, kl11, kl12, kl13, kl21, kl22, kl23, y1, clr, met)kleur 15, 1, 0, 0COLOR 15h% = clrkleur h%, 0, 0, 64kleur h% + 1, 0, 0, 64x1 = (640 - (LEN(a$) * 32)) / 2 'Mode 640LOCATE 1, 1: PRINT a$FOR i% = 0 TO LEN(a$) * 8FOR j% = 1 TO 16IF met = 1 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 3 + i% * 4, y1 + 3 + j% * 4), clr + 1, B END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr, BF END IFEND IFIF met = 2 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 3 + i% * 4, y1 + 3 + j% * 4), clr + 1, B END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr END IFEND IFIF met = 3 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + 3 + j% * 4)-(x1 + 3 + i% * 4, y1 + j% * 4), clr + 1 END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr END IFEND IFIF met = 4 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + i% * 4, y1 + 3 + j% * 4), clr + 1  END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4 + 2, y1 + j% * 4)-(x1 + i% * 4 + 2, y1 + 2 + j% * 4), clr END IFEND IFNEXT j%NEXT i%COLOR 0: LOCATE 1, 1: PRINT "                    "e% = 0: f% = 0: g% = 0FOR i% = 1 TO 63FOR k = 1 TO 2FOR j% = 1 TO wachNEXT j%NEXT kwacht .5IF kl11 = 1 THEN e% = i% ELSE e% = 0IF kl12 = 1 THEN f% = i% ELSE f% = 0IF kl13 = 1 THEN g% = i% ELSE g% = 0h% = clrkleur h%, e%, f%, g%IF kl21 = 1 THEN e% = i% ELSE e% = 0IF kl22 = 1 THEN f% = i% ELSE f% = 0IF kl23 = 1 THEN g% = i% ELSE g% = 0h% = clrkleur h% + 1, e%, f%, g%NEXT i%FOR k = 1 TO 100FOR j% = 1 TO wachNEXT j%NEXT ke% = 0: f% = 0: g% = 0'FOR i% = 63 TO 1 STEP -1'FOR k = 1 TO 2'FOR j% = 1 TO wacht STEP 2'NEXT j%'NEXT k'IF kl11 = 1 THEN e% = i% ELSE e% = 0'IF kl12 = 1 THEN f% = i% ELSE f% = 0'IF kl13 = 1 THEN g% = i% ELSE g% = 0'kleur 1, e%, f%, g%'IF kl21 = 1 THEN e% = i% ELSE e% = 0'IF kl22 = 1 THEN f% = i% ELSE f% = 0'IF kl23 = 1 THEN g% = i% ELSE g% = 0'kleur 2, e%, f%, g%'NEXT i%'CLSEND SUBSUB kleur (k%, r%, g%, B%)OUT &H3C8, k%OUT &H3C9, r%OUT &H3C9, g%OUT &H3C9, B%END SUBSUB knipper (clr, tijd, m11, m12, m13, m21, m22, m23, n11, n12, n13, n21, n22, n23)wacht tijdIF m11 = 1 THEN r% = 63 ELSE r% = 0IF m12 = 1 THEN g% = 63 ELSE g% = 0IF m13 = 1 THEN B% = 63 ELSE B% = 0h% = clrkleur h%, r%, g%, B%IF m21 = 1 THEN r% = 63 ELSE r% = 0IF m22 = 1 THEN g% = 63 ELSE g% = 0IF m23 = 1 THEN B% = 63 ELSE B% = 0kleur h% + 1, r%, g%, B%wacht tijdIF n11 = 1 THEN r% = 63 ELSE r% = 0IF n12 = 1 THEN g% = 63 ELSE g% = 0IF n13 = 1 THEN B% = 63 ELSE B% = 0h% = clrkleur h%, r%, g%, B%IF n21 = 1 THEN r% = 63 ELSE r% = 0IF n22 = 1 THEN g% = 63 ELSE g% = 0IF n23 = 1 THEN B% = 63 ELSE B% = 0kleur h% + 1, r%, g%, B%END SUBSUB randSHARED klekle = kle + .1kle = 63IF kle = 64 THEN kle = 0aa% = (INT(TIMER * 1000) / 63 - FIX(INT(TIMER * 1000) / 63)) * 63ab% = (INT(TIMER * 100) / 63 - FIX(INT(TIMER * 100) / 63)) * 63ac% = (INT(TIMER * 10) / 63 - FIX(INT(TIMER * 10) / 63)) * 63'kleur 11, aa%, ab%, ac%kleur 12, 63 - aa%, 63 - ab%, 63 - ac%kleur 14, aa% / 2 + 32, ab% / 2 + 32, ac% / 2 + 32kleur 13, aa%, ab%, ac%IF INT(RND * 2) = 1 THEN aa% = kle ELSE aa% = 0IF INT(RND * 2) = 1 THEN ab% = kle ELSE ab% = 0IF INT(RND * 2) = 1 THEN ac% = kle ELSE ac% = 0kleur 11, aa%, ab%, ac%END SUBSUB Slowblijf (a$, kl11, kl12, kl13, kl21, kl22, kl23, y1, clr, met, wachtTijd)kleur 15, 1, 0, 0COLOR 15h% = clrkleur h%, 0, 0, 64kleur h% + 1, 0, 0, 64x1 = (640 - (LEN(a$) * 32)) / 2LOCATE 1, 1: PRINT a$FOR i% = 0 TO LEN(a$) * 8FOR j% = 1 TO 16IF met = 1 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 3 + i% * 4, y1 + 3 + j% * 4), clr + 1, B END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr, BF END IFEND IFIF met = 2 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 3 + i% * 4, y1 + 3 + j% * 4), clr + 1, B END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr END IFEND IFIF met = 3 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + 3 + j% * 4)-(x1 + 3 + i% * 4, y1 + j% * 4), clr + 1 END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + 2 + i% * 4, y1 + 2 + j% * 4), clr END IFEND IFIF met = 4 THEN IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4, y1 + j% * 4)-(x1 + i% * 4, y1 + 3 + j% * 4), clr + 1  END IF IF POINT(i%, j%) = 15 THEN  LINE (x1 + i% * 4 + 2, y1 + j% * 4)-(x1 + i% * 4 + 2, y1 + 2 + j% * 4), clr END IFEND IFNEXT j%NEXT i%COLOR 0: LOCATE 1, 1: PRINT "                    "e% = 0: f% = 0: g% = 0FOR i% = 1 TO 63FOR k = 1 TO 2FOR j% = 1 TO wachNEXT j%NEXT kwacht wachtTijdIF kl11 = 1 THEN e% = i% ELSE e% = 0IF kl12 = 1 THEN f% = i% ELSE f% = 0IF kl13 = 1 THEN g% = i% ELSE g% = 0h% = clrkleur h%, e%, f%, g%IF kl21 = 1 THEN e% = i% ELSE e% = 0IF kl22 = 1 THEN f% = i% ELSE f% = 0IF kl23 = 1 THEN g% = i% ELSE g% = 0h% = clrkleur h% + 1, e%, f%, g%NEXT i%FOR k = 1 TO 100FOR j% = 1 TO wachNEXT j%NEXT ke% = 0: f% = 0: g% = 0'FOR i% = 63 TO 1 STEP -1'FOR k = 1 TO 2'FOR j% = 1 TO wacht STEP 2'NEXT j%'NEXT k'IF kl11 = 1 THEN e% = i% ELSE e% = 0'IF kl12 = 1 THEN f% = i% ELSE f% = 0'IF kl13 = 1 THEN g% = i% ELSE g% = 0'kleur 1, e%, f%, g%'IF kl21 = 1 THEN e% = i% ELSE e% = 0'IF kl22 = 1 THEN f% = i% ELSE f% = 0'IF kl23 = 1 THEN g% = i% ELSE g% = 0'kleur 2, e%, f%, g%'NEXT i%'CLSEND SUBSUB wacht (tijd)SHARED tim2FOR i = 1 TO tijd * 50 * tim2'randNEXT iEND SUBKurt Kuzba                     THE WOODS (TEXT RPG STYLE) GAMEFidoNet QUIK_BAS Echo          06-20-97 (06:20)       QB, QBasic, PDS        305  13219    THEWOODS.BAS'_|_|_|   THEWOODS.BAS'_|_|_|   A simple game to demonstrate some basic principles.'_|_|_|   No warrantee or guarantee given or implied.'_|_|_|   PUBLIC DOMAIN   by Kurt Kuzba.  (6/19/1997)TYPE character: Pname AS STRING * 32: hits AS LONG   magic AS LONG: strength AS LONG: gold AS LONG   Weapon AS INTEGER: experience AS LONG: END TYPEDIM SHARED Player AS character, Enemy AS characterRANDOMIZE TIMERSCREEN 0: WIDTH 80, 25: COLOR 9,0: CLS: LOCATE 3LOCATE , 10: PRINT "Your goal is to gain 2,000 experience."LOCATE , 10: PRINT "Upon doing this, you will have won.   "LOCATE , 10: PRINT "It will NOT, however, be easy.        "LOCATE , 10: PRINT "You will meet many malevolent forces. "COLOR 11 : LOCATE 14, 1: INPUT "What is your name? ", plyr$IF plyr$ > "" THEN   DO: Player.Pname = plyr$: Player.hits = 30: Player.magic = 0      Player.strength = 0: Player.gold = 100: Player.Weapon = 0      Player.experience = 0: Gameplay      PRINT : PRINT "Would you like to play again (YN)? ";      DO: k$ = UCASE$(INKEY$): LOOP WHILE INSTR(" YN", k$) < 2      PRINT k$: LOOP WHILE k$ = "Y"END IFPRINT : PRINT "Goodbye, then...": PRINT "Hit any key to continue."WHILE INKEY$ > "": WEND: WHILE INKEY$ = "": WEND: SYSTEMSUB Armory : DIM price(1 TO 8) AS INTEGER   price(1) = 75: price(2) = 200: price(3) = 400: price(4) = 600   price(5) = 900: price(6) = 1500: price(7) = 2500: price(8) = 4000   DO: COLOR 10, 0: PRINT      PRINT " Would you like to Sell or Buy a weapon (S/B/Q)? ";      DO: k% = INSTR(" SBQ" + CHR$(13), UCASE$(INKEY$))      LOOP WHILE k% < 2      PRINT MID$(" SBQQ", k%, 1): PRINT      SELECT CASE k%         CASE 2: money% = Player.Weapon * 30            IF money% = 0 THEN               PRINT " You cannot sell your hands here, friend!"            ELSE               PRINT " I will give you"; money%; "gold for your ";               PRINT Weapon$(Player.Weapon)               PRINT " Is it a deal (Y/N)? ";               DO: k% = INSTR(" YN", UCASE$(INKEY$))               LOOP WHILE k% < 2               PRINT MID$(" YN", k%, 1): PRINT               IF k% = 2 THEN                  Player.gold = Player.gold + money%                  Player.Weapon = 0               END IF            END IF         CASE 3: PRINT "--==**[  PRICES  ]**==--"            FOR t% = 1 TO 8: PRINT STR$(t%); "->";               PRINT LEFT$(STR$(price(t%)) + "    ", 6);               PRINT Weapon$(t%): NEXT            PRINT " Hit ENTER to buy nothing"            PRINT " You have"; Player.gold; "gold."            PRINT "Which would you buy (1-8)? ";            DO: k% = INSTR(" 12345678" + CHR$(13), UCASE$(INKEY$))            LOOP WHILE k% < 2            k% = k% - 1: PRINT MID$("12345678", k%, 1)            IF k% < 9 THEN               money% = k% * 90               IF money% > Player.gold THEN                  PRINT " You can not afford "; Weapon$(k%)               ELSE                  PRINT " Sold! I hope that "; Weapon$(k%)                  PRINT " will serve you well."                  Player.gold = Player.gold - money%                  Player.Weapon = k%               END IF            END IF         CASE 4, 5: EXIT SUB      END SELECT   LOOP: END SUBSUB FightMonster : level% = GetLevel%(Player.experience)   MakeEnemy level%: menu% = 1   WHILE (Player.hits > 0) AND (Enemy.hits > 0)      COLOR 4, 0: PRINT      IF menu% > 0 THEN         PRINT " F-> Fight": PRINT " R-> Run Away"         PRINT " S-> Surrender": PRINT " Y-> Your Stats"         PRINT " V-> View Enemy"      END IF      COLOR 15, 0: PRINT Player.hits; : COLOR 5, 0: PRINT Player.Pname      COLOR 15, 0: PRINT Enemy.hits; : COLOR 5, 0: PRINT Enemy.Pname      COLOR 4, 0: PRINT " [ F : R : S : Y : V : ? ]=> ";      DO: k% = INSTR(" FRSYV?", UCASE$(INKEY$)): LOOP WHILE k% < 2      PRINT MID$(" FRSYV?", k%, 1)      level% = GetLevel%(Player.experience)      SELECT CASE k%         CASE 2            PlayerAtt! = 1 + Player.Weapon            PlayerAtt! = PlayerAtt! * (1 + (Player.strength / 10))            PlayerAtt! = 5 + (RND * PlayerAtt! * 5 * level%)            PlayerDef! = 1 + (Player.strength / 100)            EnemyAtt! = Enemy.Weapon * (1 + (Enemy.strength / 10))            EnemyDef! = 1 + (Enemy.strength / 100)            IF RND > .5 THEN               PRINT " You move fast and hit first."               hits% = PlayerAtt! / EnemyDef!               IF hits% > Enemy.hits THEN hits% = Enemy.hits               Enemy.hits = Enemy.hits - hits%               PRINT " You hit for"; hits%; "points."               Player.experience = Player.experience + hits%               IF Enemy.hits > 0 THEN                  hits% = EnemyAtt! / PlayerDef!                  IF hits% > Player.hits THEN hits% = Player.hits                  Player.hits = Player.hits - hits%                  PRINT " You are hit for"; hits%; "points."               END IF            ELSE               PRINT " You move slow and get hit first."               hits% = EnemyAtt! / PlayerDef!               IF hits% > Player.hits THEN hits% = Player.hits               Player.hits = Player.hits - hits%               PRINT " You are hit for"; hits%; "points."               IF Player.hits > 0 THEN                  hits% = PlayerAtt! / EnemyDef!                  IF hits% > Enemy.hits THEN hits% = Enemy.hits                  Enemy.hits = Enemy.hits - hits%                  Player.experience = Player.experience + hits%                  PRINT " You hit for"; hits%; "points."               END IF            END IF            IF Enemy.hits = 0 THEN               PRINT " You have defeated the "; Enemy.Pname               Player.magic = Player.magic + Enemy.magic \ 10               Player.gold = Player.gold + Enemy.gold            END IF            IF Player.hits = 0 THEN               PRINT " You were defeated by a "; Enemy.Pname            END IF         CASE 3:            PRINT " You manage to escape, but all your strength"            PRINT " and magic are lost, and some experience points."            Player.magic = 0: Player.strength = 0            Player.experience = Player.experience * .9            EXIT SUB         CASE 4:            PRINT " You give all your gold to the "; Enemy.Pname            Player.gold = 0: EXIT SUB         CASE 5: Stats Player         CASE 6: Stats Enemy         CASE 7: menu% = 1      END SELECT: WEND: END SUBSUB Gameplay : menu% = 1: Stats Player   DO      IF Player.hits > 0 THEN         PRINT         IF menu% > 0 THEN            COLOR 15, 0: PRINT " W->  Woods": PRINT " H->  Healer"            PRINT " A->  Armory": PRINT " S->  Your Stats"            PRINT " Q->  Quit Game"         END IF: COLOR 11, 0: LOCATE , , 0: menu% = 0         PRINT " [ W : H : A : S : Q : ? ]=> ";         DO: k% = INSTR(" WHASQ?", UCASE$(INKEY$)): LOOP WHILE k% < 2         PRINT MID$(" WHASQ", k%, 1)         SELECT CASE k%            CASE 2: Woods            CASE 3: Healer            CASE 4: Armory            CASE 5: Stats Player            CASE 6: PRINT : PRINT "Leave the Woods (YN)? ";               DO: k$ = UCASE$(INKEY$)               LOOP WHILE INSTR(" YN", k$) < 2               PRINT k$: IF k$ = "Y" THEN EXIT DO            CASE 7: menu% = 1         END SELECT      ELSE         IF Player.experience < 2000 THEN            PRINT "Sorry... You have perished in battle."            FOR t% = 200 TO 150 STEP -1: SOUND t%, .1: NEXT         ELSE            PRINT "You have defeated all enemies! You WIN!!"            FOR t% = 100 TO 999 STEP 10: SOUND t%, .03: NEXT            FOR t% = 1000 TO 500 STEP -10: SOUND t%, .03: NEXT         END IF: PRINT "You had"; Player.experience; "points."         EXIT DO      END IF: LOOP: END SUBFUNCTION GetLevel% (e&)   SELECT CASE e&      CASE IS < 100: level% = 1      CASE 101 TO 500: level% = 2      CASE ELSE: level% = 3   END SELECT: GetLevel% = level%: END FUNCTIONSUB Healer : Totalhits% = Player.experience \ 10 + 30   ToHeal% = Totalhits% - Player.hits   IF ToHeal% <= 0 THEN      PRINT " You do not require healing!"; CHR$(7)   ELSE      PRINT " Each point costs 3 gold to heal."      PRINT " You can afford to heal"; Player.gold \ 3; "hit points."      PRINT " You need to heal"; ToHeal%      INPUT " How many would you heal? ", heal%      IF heal% > ToHeal% THEN heal% = ToHeal%      IF heal% > (Player.gold \ 3) THEN heal% = Player.gold \ 3      Player.hits = Player.hits + heal%      Player.gold = Player.gold - (heal% * 3)      PRINT " I have healed you for"; heal%; "hit points."   END IF: END SUBSUB MakeEnemy (l%) : DIM EN(1 TO 3) AS STRING, EP(1 TO 3) AS STRING   EP(1) = "Ferocious ": EP(2) = "Snarling ": EP(3) = "Evil "   SELECT CASE l%      CASE 1: EN(1) = "Squirrel": EN(2) = "Bunny": EN(3) = "Hedgehog"      CASE 2: EN(1) = "Bear": EN(2) = "Boar": EN(3) = "Troll"      CASE 3: EN(1) = "Demon": EN(2) = "Dragon": EN(3) = "Wizard"   END SELECT   Enemy.Pname = EP(l%) + EN(RND * 2 + 1)   Enemy.hits = ((RND * 10 + 20) * l%)   Enemy.magic = ((RND * 10 + 10) * l%)   Enemy.strength = ((RND * 10 + 10) * l%)   Enemy.gold = ((RND * 100 + 100) * l%)   Enemy.Weapon = (RND * 2 + l% * 2): END SUBSUB Stats (P AS character) : COLOR 15, 0: PRINT   COLOR 15, 1: PRINT " Name       : "; P.Pname;   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Hits       :";   PRINT LEFT$(STR$(P.hits) + SPACE$(32), 33);   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Magic      :";   PRINT LEFT$(STR$(P.magic) + SPACE$(32), 33);   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Strength   :";   PRINT LEFT$(STR$(P.strength) + SPACE$(32), 33);   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Gold       :";   PRINT LEFT$(STR$(P.gold) + SPACE$(32), 33);   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Weapon     : ";   PRINT LEFT$(Weapon$(P.Weapon) + SPACE$(32), 32);   COLOR 15, 0: PRINT : COLOR 15, 1: PRINT " Experience :";   PRINT LEFT$(STR$(P.experience) + SPACE$(32), 33);   COLOR 15, 0: PRINT : END SUBSUB UseMagic : COLOR 12, 0: PRINT : PRINT : menu% = 1   DO      IF menu% <> 0 THEN         PRINT " H-> Healing Spell   (4 magic)"         PRINT " S-> Strength Spell  (9 magic)"         PRINT " Q-> Quit this menu"      END IF: PRINT " You have"; Player.magic; "spell points."      menu% = 0: PRINT " [ H : S : Q : ? ]=> ";      DO: k% = INSTR(" HSQ?" + CHR$(13), UCASE$(INKEY$))      LOOP WHILE k% < 2: PRINT MID$(" CST?", k%, 1): PRINT      SELECT CASE k%         CASE 2            IF Player.magic < 4 THEN               PRINT " You haven't the magic!"            ELSE               m% = 1 + RND * 9               Player.magic = Player.magic - 4               Player.hits = Player.hits + m%               PRINT " Your spell yields"; m%; "hits."            END IF         CASE 3            IF Player.magic < 9 THEN               PRINT " You haven't the magic!"            ELSE               m% = 1 + RND * 9               Player.magic = Player.magic - 9               Player.strength = Player.strength + m%               PRINT " Your spell yields"; m%; "strength."            END IF         CASE 4, 6: EXIT SUB         CASE 5: menu% = 1      END SELECT: LOOP: END SUBSUB WalkInWoods   SELECT CASE (RND * 99)      CASE 0 TO 9: Player.gold = Player.gold + 1         COLOR 14, 0: PRINT "You found a piece of gold!"      CASE 10 TO 19: Player.magic = Player.magic + 1         COLOR 13, 0: PRINT "A faerie gives you one magic!"      CASE 20 TO 29: m% = 1 + RND * 9         Player.hits = Player.hits + m%         COLOR 9, 0: PRINT "A friendly Elf heals"; m%; "hit";         IF m% = 1 THEN PRINT "!":  ELSE PRINT "s!"      CASE 30 TO 89         COLOR 6, 0: PRINT "The path continues before you."      CASE ELSE: FightMonster   END SELECT: END SUBFUNCTION Weapon$ (w%)   SELECT CASE w%      CASE 0: Weapon$ = "Your Bare Hands"      CASE 1: Weapon$ = "A Stick"      CASE 2: Weapon$ = "A Quarterstaff"      CASE 3: Weapon$ = "A Small Knife"      CASE 4: Weapon$ = "A Big Knife"      CASE 5: Weapon$ = "A Machete"      CASE 6: Weapon$ = "A Shortsword"      CASE 7: Weapon$ = "A Longsword"      CASE 8: Weapon$ = "A Two-Handed Sword"   END SELECT: END FUNCTIONSUB Woods : menu% = 1   DO: level% = GetLevel%(Player.experience)      IF Player.experience > 2000 THEN Player.hits = 0      COLOR 2, 0: PRINT : IF Player.hits = 0 THEN EXIT SUB      IF menu% <> 0 THEN         PRINT " C-> Continue": PRINT " T-> Go to Town"         PRINT " S-> Cast a Spell": PRINT " Y-> Your Stats"      END IF: menu% = 0: PRINT " [ C : S : T : Y : ? ]=> ";      DO: k% = INSTR(" CTSY?", UCASE$(INKEY$)): LOOP WHILE k% < 2      PRINT MID$(" CSTY?", k%, 1)      SELECT CASE k%         CASE 2: WalkInWoods         CASE 3: EXIT SUB         CASE 4: UseMagic         CASE 5: Stats Player         CASE 6: menu% = 1      END SELECT: LOOP: END SUBJoey Hewitt                    JUMBO GAMES                    jimbo@cyberhighway.net         06-26-97 (08:21)       QB, QBasic, PDS        76   4976     JH.BAS      DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"JH.ZIP",4^6:Z&=3459:?STRING$(50,177);U"%up()%9%%%I-%5W%xGuE&JI[%%%%f%%%%1%%%%sn%hpxt%slSxmslln%0VYVoiVU"Z^oC\G*+mC\n]GVnBm\sH*7mtHVI&vX/^fr9)DG1G_Mb>kchg2cG0D*Q%%up()%U"9%%%%-%P-d\F#f*<+L&%%%.'%%%1%%%%gf%qqlf%rjSxIslL$9Ho<eX5?hTi7OvU"2^*i?Sj5=Rm&oE9aos',RoBD,BteF=Iu0pDSn1vikXB;uEGMlJH0$sw<NkbaIoKU"kA)/ByBTrdd_4k,hK7;-<w#6U'&Sf0,&QaL<zc,AGI$mb99mL+j*<(G'+dcTeT=U"Qq/HmBG0UIK=nGg&CICQ'6)S$R.DA4).0]Zpz),DJ\P9f\.\CB'sFvO7^-.:%BnU"cJ[uR/Z3+Z:2akj'K=ACMobh;&e:#U)[YG(Tj5sCVM'WQwO6U<oo-^0dI7S3NWkU"M7gE9fe&Kp]R?_pw&*9rAG:WPKDOK$>u]dj,RaG+CJ)f7D?Ss7k_tN=.*HQf/%NU"5--UC(O_P2'kr,Fof$tPZtJOv\I3J3/XH,0F&.up(%)9%%#%-%,[%\FqF97Ti#%U"%%#%&%%0%%%%f%qfii%nsSxRsl.]0*/RU15UFFsTIb?A%mv#q_=[>^Qv>e.0-)#U"B)67*HaT\5ZaQKpuTvUx)LFV%2CZhs=uGvUP7<qGsdQtFLB'saJubvH+g2yNU:WU"C^ar$(wt<2V8P7d%Gk[O\w)Zuz>M4Gs+ii)?%tK9&Okj$IN25Q#3r>^W^Nfoqe3U":RM3ky(oY\m1enm8f>?4))uqRo;f-%up()%/%%%%%%]u.kFp^,QsI%%%%I%%%%/U"%%%%hm%fwlj%Sxsl%2/yV%YUrx%qV[2C/>W2)50tX)2?V[J>W0>CX;Y2%2/2/%uU"p()%9%%%%-%evmkF#S(HW_%%%%m%%%%,%%%%gz%xSxssl\^C+\EVn,&)xm-G*msU"'BVnr7stFV+oGVn+v)vm]CVo0.(ovKWTsTp7Om*&AY(J\kanG2,G2%u%p()9%%%U"%-s%d%A4G\+4+wU-%(%iA%%%+%%%%omS[gfx&h(.B[I]7NvtYhIj/30gpEQgUB:U">aB9B:KF:mU&$+'2\(/6qO'N8;SDb$U6d.+IT7[32jzUmZ:4NhNs.0i3tEH_h%PU"0?gmj+2mQ7fQX[94S14ZU(QRM/8qJ%n9-*s'<p^<#:<=vZ&Px-7#-nwZn0l0i+?U"s$FB^l$'%Gl5VneK9Fa3gNR0:BH0&a)%S//o-8jU8LtfCjSU<p^q.dz8n&S1BuZU"je+1xnRZR940VODMUK9#5bjDl\e$Au0V+>U0-LAG?L=XINpl94#U?dIn/a&um)'U"7=[2iqm_V#'HWe4=m8^xMWMoyd9LJJ0)s]+\Bb/=yVJ$Usy'mJ=l#+xfa\pDi6RU":2_S0BqJ8TTC:h^SG'?&4fyWKinAvmQMk9\bDJY#v=Xv3u/KXUg-x#s1X:iG6l*U"Hq(q%LSL+<:SL^D-jgl:oHu4&N5P8DLM2>A+j<k\EjElpR8OCVkL.*vpEK*2gEKU"7>:H=l+[c/d>R=EqSm94&\r<95t7>SsAhA2#I[h1$H)Le+A_oqoQIuLV9*/pmVbU"WS/mjlvEkn_3^Q_ZRw7Wh8OF#7E<GqMfTOeG#0Y=c7Qh%K$?zOKY5>*6\^oEpKkU"n*rPlS#JDjqP[G4+\No+G/:mpS=<\$60KAc=&IzPhTN6g5Mik%Mm[,t&1H</Vu;U"ZJ/wdOGA9Uh+'X$=#\SfvkENlCmHcYLiG6H,CRC)S9s&#k'k2V>Cvi\?m^9E\.=U"[86Ng1m^j:6-+AaU1tDT.STC>7*Raxh$,^^]fB4a+8WRK>&]_v4n(3r='oCLHG+U"_,1eu+JcrTmd1[8]T]mDRjVZJ04/-2CXJ4H9YvUE-J<$1O&EFvp4cVj#A68?2_>U"9w)[wB6lNo2yrrH:%>,(,Nb,6/UrX1Wpa-,Q&Mu]q<^:%k%s;?2,Uj.M;KUOFofU"c5rhWFfd$ssD/eVfpjk$X2%&Up'Y#135m36/e'X,CU->A5Q=H3JajX+NpVoj$/aU"+K.5p6'rxUI1b3M$j_+E0cS5L$qRHFGde#eb9yD5Vge4gye4:V]GOr'4u*p*Pn(U"^hv:QIY0F&042\4A6nOGwt8_U\b_qV<\JjNtT\hEg^_9Bb4[:**=V1Z'2UMs30VU"Yp#EsZjo^vJraZ&uFa^MB')Vi?,\]rAy+6FAM=uk\GwuQ-Bd(Tvhd7-.Mdj\\7RU"CuhCi(aJhb5q)u#B;<5zOQ[S_hR)Y)'APj_B9Cv%776=2ntIgBeE248<^2VWiWjU"AWSjWW-U^>([9PO$Rkl(,G;:fjsa4%RSDd#d7VD(RZ2++B2?#t9tWn)0bufoIXaU"F6PN(Nv.zEYuE?cl7e(OEIJ.B9O-'9h0Q*4&tL&g+>#R-J'qMC#ej+6V9kx?RwwU"3pxH&9Cw:[j3R0E]ZkEohcLG-mja5gJ0oa;TcarW58'S<[cwj^*l.YCXS6TmK$_U"VRUrQHvF8kE$LQ,APx-BJ?DX;,KyRz#<5Z*R'Hl126bh3>,LH2)Qfdb3veu>[t2U"W]CG4##oja2:E*sED9_<Qt->nS)bo18dDhx.*7jquE2aX/AvZbWxS-LuC=2M#t>U":1BG*/Aub7L3]6Rj7LL$fhTs%k1Iy*--nI=7<VxrUEuUOu>tFH$(r_&0>pCko5ZU"M'.FBwrrt<.pRyBfuX;aTZ?_6Z>K66/BKn9;;?AG+:Q;=R(RU_h.R(;DU>:tr,:U"O*5(_.$UIZHWxR9iF%VK'aO*eGZKd&kbr5m/9=S=/-=DRk'Rq;Ro%l?wZ'el:slU"J'Q]:ZvNiie^.+/=Jj&8FAwNlp6f2K%7K+beXw#Q4&K\-utiA9Qts-]HEsj?1XUU"+V<j,4*0s]iBEviMxT+'qgHjw2]f#%]Dr85RX=RaTtxdS2:AQ-P^>1KWIV32>^cU"Res('Z%K:0X)1I_>]i)]B?[8Utik=FKm]RM/YgtS-:OKw;6k98z,JEe6eS4(=>4U"sP:7:JfQs;W7+/VG/xc;pN8$5H\9im8-O(#Ffh3.&$aY3(\L84*b1?TBFOS%l;(U"\Pta>tq6L>P[KW_'U$U#$L\?o-l0VM63N7O$uJq1>Gm\s<ICUHs)ZND=<hH$EfFU"d-)+KjTG:WD$>9DRWu#VFi+KEuBQl1TLrr8]\<4BM=X$^1sr2P+-(GJ[I](AG#IU"e#GvJ[fHhxjtj%&4qBKhL7pT.Yz5sSlrbBG3L/=[6^5z:_=(:c$e.'=3;L84/5IU"HH[I'8uP7*6+dq[Jd8vWXfAj;diIa*$Gkd$b-2U+k^Q_Pp2kwk&3-uwZ\_s>lx;U"l.O3EYl_Neu.+8\>%FP(Rc/-U0<>Qh]3aWZ;J*(bwB,gp9#qV8F.sn2VzBet-SdU"JY72jb,<aL&k\[rvse=/Kg#\M7SC0v9o89gu^=DN*1bW[pI^P3/Mz]#c&&,hS,qU"r;ia+(3gMrfeV/;&nq0&Na8MT%dq^i.sM<:b2IkV#q5l*oUf<USkC?4iD48wdx_U"-[PikTdGbP[^(fe=M-+p*[PfM%#MYs3DSF+XK?+$k6nq.cPvQ\/^39?)xiU,\:$U"w-lgoP9k/U2f#9?VfeJ6FrQ8p1GYw\#aRYLl>^,lY#2i<-3f,[)hM=A+>H.G?f>U";v1BC+AP/jb;Flb*tqOaq7EuS5w&s9.P(S1m6%AZ0Pn;\=Gt$ao\zx3c13'IRroU"^mb;JR<F(GZ:;tFTZ#TSGAiPj:k.+KJ,'KT'5Aiz[XMsxL6JxfADNdAH>b/MLlkU"MXp=lwVkimO4$gaDZspJ6*0Mp_fFaM29G-Zw]r=%GQXL$4*n[4P'>W,rQ8FHP(#U"bCYR??e1AjmRdjr-RF6Unwi*V.AJ=qNM$vVuuI*X$.%VJG1NG:I_G>(T8;X^LX?U"GJa/0%(lKqe;<9nr/T>,,1iwbiKX%vI2*wN%u%p&'9%%9%%#%-%5&WxGu(EJI[%U"%%%f%%%%1%%%%%%%%%&%%E%%%%%%%%%snh%pxts%lSxs%lup&%'9%9%%%%-%%P-U"\pF#f<&+L&%%%.'%%%1%%%%%%%%%&%E#%%%/%%%%g%fqql%frjS%xslu%p&'9%%U"9%%#%-%,[%\FqF97Ti#%%%#%&%%0%%%%%%%%%&%%E%%+%*&%%%fqf%iins%SxslU"%up&'%9%/%%%%%%%]ukFep^Qs%I%%%%I%%%%/%%%%%%%%%&%E%.%%C'%%%hm%fwU"lj%Sxsl%up&'%9%9%%%%-%%evkFH#SHW%_%%%%m%%%%,%%%%%%%%%&%E%7%%9'%U"%%gz%xSxs%lup&%'9%9%%%%-s%d%A4G\+4+wU-%(%iA%%%+%%%%%%%%%&%E%%%%U"D%(%%o%mSgf%xup*%+%%%%%+%+%%s&%%%D1%%%%%END SUBCLOSE:IF S=183AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBBrian Mahocker                 GAME MAP                       Kain121182@aol.com             07-03-97 (12:01)       QB, QBasic, PDS        173  4358     MAP.BAS     DECLARE SUB EndGame ()DECLARE SUB WFK ()DECLARE SUB MU ()DECLARE SUB MR ()DECLARE SUB MD ()DECLARE SUB ML ()DECLARE SUB PrintScreen ()DIM SHARED map(12, 31), x, y, cc, NOC, dx, dy: SCREEN 13DATA 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,1DATA 1,0,1,1,1,1,1,0,0,0,0,0,1,2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,2,1DATA 1,0,1,2,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1DATA 1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,2,0,1,0,1,0,1,1DATA 1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,2,1,0,1,1DATA 1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,2,0,0,0,0,1,0,1,1,0,1,1,1,0,1,1DATA 1,0,0,0,0,0,0,0,0,2,1,0,1,0,1,1,1,1,1,0,1,0,2,1,0,0,2,1,0,1,1DATA 1,0,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,1,1DATA 1,0,1,2,4,0,0,0,0,0,1,0,1,0,1,2,1,2,1,0,1,0,0,0,0,0,0,0,0,2,1DATA 1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1DATA 1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,1,2,1DATA 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,11,27FOR r1 = 1 TO 12: FOR r2 = 1 TO 31: READ map(r1, r2): NEXT r2: NEXT r1READ dxREAD dyLET x = 2: LET y = 2PrintScreenSUB EndGamePRINT "YOU WIN!!!!!!"ENDEND SUBSUB MDIF map(x + 1, y) = 0 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x + 1   LOCATE x, y   COLOR 9: PRINT CHR$(2)   GOTO AfterMDEND IFIF map(x + 1, y) = 1 OR map(x + 1, y) = 3 THEN GOTO AfterMDIF map(x + 1, y) = 2 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x + 1   LET map(x, y) = 0   LET cc = cc + 1   IF cc = NOC THEN EndGame   LOCATE x, y: COLOR 9: PRINT CHR$(2)END IFIF map(x + 1, y) = 4 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x + 1   LET map(x, y) = 0   LET map(dx, dy) = 0   LOCATE dx, dy: PRINT CHR$(0)   LOCATE x, y: PRINT CHR$(2)END IFAfterMD:END SUBSUB MLIF map(x, y - 1) = 0 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y - 1   LOCATE x, y   COLOR 9: PRINT CHR$(2)   GOTO AfterMLEND IFIF map(x, y - 1) = 1 OR map(x + 1, y) = 3 THEN GOTO AfterMLIF map(x, y - 1) = 2 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y - 1   LOCATE x, y: COLOR 9: PRINT CHR$(2)   LET map(x, y) = 0   LET cc = cc + 1   IF cc = NOC THEN EndGame   LOCATE x, y: COLOR 9: PRINT CHR$(2)END IFIF map(x, y - 1) = 4 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y - 1   LET map(x, y) = 0   LET map(dx, dy) = 0   LOCATE dx, dy: PRINT CHR$(0)   LOCATE x, y: PRINT CHR$(2)END IFAfterML:END SUBSUB MRIF map(x, y + 1) = 0 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y + 1   LOCATE x, y   COLOR 9: PRINT CHR$(2)   GOTO AfterMREND IFIF map(x, y + 1) = 1 OR map(x + 1, y) = 3 THEN GOTO AfterMRIF map(x, y + 1) = 2 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y + 1   LET map(x, y) = 0   LET cc = cc + 1   IF cc = NOC THEN EndGame   LOCATE x, y: COLOR 9: PRINT CHR$(2)END IFIF map(x, y + 1) = 4 THEN   LOCATE x, y: PRINT CHR$(0)   LET y = y + 1   LET map(x, y) = 0   LET map(dx, dy) = 0   LOCATE dx, dy: PRINT CHR$(0)   LOCATE x, y: PRINT CHR$(2)END IFAfterMR:END SUBSUB MUIF map(x - 1, y) = 0 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x - 1   LOCATE x, y   COLOR 9: PRINT CHR$(2)   GOTO AfterMUEND IFIF map(x - 1, y) = 1 OR map(x + 1, y) = 3 THEN GOTO AfterMUIF map(x - 1, y) = 2 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x - 1   LET map(x, y) = 0   LET cc = cc + 1   IF cc = NOC THEN EndGame   LOCATE x, y: COLOR 9: PRINT CHR$(2)END IFIF map(x - 1, y) = 4 THEN   LOCATE x, y: PRINT CHR$(0)   LET x = x - 1   LET map(x, y) = 0   LET map(dx, dy) = 0   LOCATE dx, dy: PRINT CHR$(0)   LOCATE x, y: PRINT CHR$(2)END IFAfterMU:END SUBSUB PrintScreenFOR p1 = 1 TO 12   FOR p2 = 1 TO 31      LOCATE p1, p2      IF map(p1, p2) = 0 THEN PRINT CHR$(0)      IF map(p1, p2) = 1 THEN COLOR 15: PRINT CHR$(219)      IF map(p1, p2) = 2 THEN COLOR 14: LET NOC = NOC + 1: PRINT CHR$(15)      IF map(p1, p2) = 3 THEN COLOR 4: PRINT CHR$(182)      IF map(p1, p2) = 4 THEN COLOR 13: PRINT CHR$(22)   NEXT p2NEXT p1LOCATE x, yCOLOR 9PRINT CHR$(2)LET SwX = 11LET SwY = 27WFKEND SUBSUB WFKDO   LET Ky$ = INKEY$   IF Ky$ = "8" THEN MU   IF Ky$ = "6" THEN MR   IF Ky$ = "2" THEN MD   IF Ky$ = "4" THEN MLLOOPEND SUBUnknown Author(s)              SKIER                          Internet                       09-08-97 (22:00)       QB, QBasic, PDS        133  2714     SKIER.BAS   DIM skier(1000)DIM flag1(1000)DIM flag2(1000)DIM trad(1000)RANDOMIZE TIMERx = 150y = 100upp1 = 180: upp2 = 0SCREEN 13LINE (1, 1)-(11, 11), , BFLINE (4, 2)-(4, 10), 1LINE (8, 2)-(8, 10), 1CIRCLE (6, 5), 3, 4PAINT (6, 5), 4CIRCLE (6, 5), 1, 9PAINT (6, 5), 9LINE (2, 2)-(2, 7), 7LINE (10, 2)-(10, 7), 7GET (1, 1)-(11, 11), skierCLSLINE (1, 1)-(7, 11), , BFLINE (2, 2)-(2, 10), 7LINE (6, 2)-(6, 10), 7LINE (2, 2)-(6, 4), 12, BFGET (1, 1)-(7, 11), flag1LINE (1, 1)-(7, 11), , BFLINE (2, 2)-(2, 10), 7LINE (6, 2)-(6, 10), 7LINE (2, 2)-(6, 4), 9, BFGET (1, 1)-(7, 11), flag2LINE (1, 1)-(12, 16), , BFLINE (6, 1)-(2, 12), 190LINE (6, 1)-(10, 12), 190LINE (2, 12)-(11, 12), 190PAINT (6, 4), 190LINE (5, 13)-(7, 15), 8, BFGET (1, 1)-(12, 16), tradCLSPAINT (1, 1), 26LINE (90 + 2, 6 + 2)-(230 - 2, 193 - 2), 24, BLINE (90 + 1, 6 + 1)-(230 - 1, 193 - 1), 22, BLINE (90, 6)-(230, 193), 20, BLINE (93, 9)-(227, 190), 15, BF10IF upp1 < 10 THENflags = 2: upp1 = 180LINE (93, 9)-(227, 19), , BFEND IFIF upp2 < 10 THENflags = 1: upp2 = 180LINE (93, 9)-(227, 19), , BFEND IFIF upp3 < 10 THENtree = 0: upp3 = 175LINE (93, 9)-(227, 25), , BFEND IFraktrad = raktrad + 1IF raktrad > 1000 THEN tree = 1: raktrad = 0IF flags = 1 THEN rand1 = INT(RND * 100) + 1: flags = 3IF flags = 3 THEN upp1 = upp1 - .08: PUT (rand1 + 110, upp1), flag1, PSETIF flags = 2 THEN rand2 = INT(RND * 100) + 1: flags = 4IF flags = 4 THEN upp2 = upp2 - .08: PUT (rand2 + 110, upp2), flag2, PSETIF tree = 1 THEN tree = 2IF tree = 2 THEN upp3 = upp3 - .08: PUT (rand3 + 110, upp3), trad, PSETIF tree = 0 THEN rand3 = INT(RND * 100) + 1IF POINT(x + 10, y + 10) = 190 THENx = x - 1y = y - 1lod = 0move = 0END IFIF POINT(x, y) = 190 THENx = x + 1y = y - 1lod = 0move = 0END IFIF POINT(x, y) = 24 THENx = x + 1y = y + 1move = 0lod = 0END IFIF POINT(x + 10, y + 10) = 24 THENy = y - 1x = x - 1move = 0lod = 0END IFPUT (x, y), skier, PSETSELECT CASE INKEY$CASE CHR$(0) + "H": lod = lod - 1IF lod < -2 THEN lod = -2CASE CHR$(0) + "P": lod = lod + 1IF lod > 2 THEN lod = 2CASE CHR$(0) + "K": move = move - 1IF move < -2 THEN move = -2CASE CHR$(0) + "M": move = move + 1IF move > 2 THEN move = 2CASE CHR$(27)ENDEND SELECTIF NOT move = 0 OR NOT lod = 0 THEN GOTO 500GOTO 10500IF move = -1 THEN x = x - .04IF move = -2 THEN x = x - .06IF move = 1 THEN x = x + .04IF move = 2 THEN x = x + .06IF lod = -1 THEN y = y - .04IF lod = -2 THEN y = y - .06IF lod = 1 THEN y = y + .02IF lod = 2 THEN y = y + .04GOTO 10Brian Pavey                    RPG DEMO VERSION               bcpavey@hotmail.com            10-15-97 (23:16)       QB, QBasic, PDS        1007 66627    RPGDEMO.BAS DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"RPGDEMO.ZIP",4^6:Z&=49768:?STRING$(50,177);U"%up()%9%%%.-%WuAUGg<6Cpi>#%%%y%%%-%%%%wu%lXSg7fxfbq<*\/6+XHC3wRU"=snJFV9bXlCoZ-$BQbPU+;hb3.1'XqG7tf=G.Ml4BMcvnm+jb+4#XF)-*D')78&U"5YX?S\kK'[c=AXCA.Aba4MXAbW3CrmiBP-Z&v6R4##m_*?1fL*]=rs9A,#Y#Qw]U",oXv$;Sm9A\Wjd'LZ9<Lq$6+4EHbEH)u4VUXF$LtJDlPsU[Dd5LaW6lTShtA0avU"'^dL3>Il?THvf'hQv.V728P.YQ4Bd9sx$GhOy(c$QP8^s\\/L<FUvr'iJjZ<=)uU"9Mvl^dXA2e+v#ryr4mZ&ka>O.E/&sW2xSo;D,gy\L2D:okm%-Qc9+E%MxzLx/aZU"8OKA5N;H1WaxoIvxu35JlM-oelpFjW:\tE(Ai'KTdH*E13ZJn5xe4-t*<tN.+qFU"ulvWfqfwX*_UZvHO%x:s+vHClkLMhu\N.=C>w3#8&6Ey_BA,aBbAg<L_fvlCtIOU"vVM,9<FontasAD2*2u]4QewK&Eqeimvtyl^k.kS)=gVgmw=nhBj6mTa_=K.?YQ&U"UqCdgLAf4j8FK>fUH2BpfSIho:h^PZwW*hk+KW#B1ll3J86]Qc>s.EQe0rZ\$<5U"K2QjmMwys&OzLz9obznm/ykI:GCItVA4[%cI%02h.zBx$g099H:L(nXnD#WE\C*U"iE:cumCK_(T+N'6*CHcQP:Z[PO2c.<vx/),Crmv^K(k=sRGlYoZ3Eq%OebP]_JCU"gr7&33.-nON(ucoP9^gBKVb4a05kNa+(v.r;:9-oMZnM/ik9rOX.udb)Ls&dVw:U"gUw:?x:ZbM?qywZ/bsKZ(kxuKQk]P[feT$E%An4P4h5n.A*(svcsF0wX29JNT7VU"dlGu_pr#t7w^X*:BlZdK2Y<NI/N^<2L8&<fSHi9eH):STftJ[\Dl]fipXUm;p;cU"Oo]5wq^K1w$wma.uhhnsrvjv6lv6R+#tqMQ[AsB37S7Nt'<,8[[h3btn$_7ig,)U"'c.HtwV:FFoICnp>QjZAp,mWR9&DST:AEaixZOedQf&WiP)5:+U>\=ZQ%ba<l<?U"\UMg.vO+9ukqH;QE)uu[ZR5#7Cd1%J%4$:3]_VFFuE9zqd/;aJ[_s)+ouhZP4r.U"':8c-wn:5G?&e7]Ff6R:/J=NZVEEiQHtBNMlT[a0]1[9>pdrM9S/xZqTbAaMqPfU"%8cJi&t'UrhNckrS&PV-ifth(4e6S%8S:aK^zc::^bYMhm5J8Ad>^$(dOwSNtN-U"0K#<?EL)RBc1$\75Obiw#nmITdG5JH;11FL<0cMisrbq)E-)2\6V%u/FbldUIXFU"&U7zMNp2i^)Nk8nooe[S;8hQdd-/9n:)7ZhcQ,x^:oLRw<cLOP/TQHMp^uou7Y0U"D1Wc$B5uPqFu-9&Y%(FJ,]c)H]EVuNI-t-DyepDV.eAucSf7wX*CJ>1/[%OYf<XU",V0Ody0x#AIo,Ev/TTf0csVraP+L/:1q:(wN75q=\S1&j\_Csn]lNk:^Lm/O$q)U"]<=Pc>Md(_YNXOK8%^/WJ0U(08Un[ky_SE9FqMsj$?nPws\/ZS&I?p7IE#VFi&tU"3a#:$,YM/Agjj,tVJv6p_.?_IEn:D$C5AeySdWrTmye;4YnA(s0l8Hlp/K$Z;G8U"E0NtJlwAk8_-qi285kN\bj>$Gt(lK6Uq]8XIxNIq<k((JnRK[8pm=lB6.mQ%)^iU"L2zk4o6MgTsc[ND.%t*1J1lUJ10'/6)6x8FfqD)qX[f2$fKZ_mP?Z-l^[:v$DWQU"=&.0VWGO.&5nSe-f=uP,B3cb?A+_o]N=<MMD0cqa4r6M$EJfB$i8gSee_$t^o)%U"]TvTpa/.=hwn#sNUc<d'>,cuP)#L:LlWeWhkVA>Wv60\Li3.b)6icZ^[Jp0OOfmU"*4+Qn\j1'%(7QzgsU-T)98LJc76P*%#P+#z_bj(V<<Q+w>26LQ?t1s2X^KC$-u:U"WTds_'eqTI3abR^^Mqg[$o0qFT'\5EE:,Ihp1Apvs>qBNh-QXlHVNRvJ]O[NK(jU"/uraF0w*eMnvl$.sO).k;e5If6C$;?hVd0\AgcL6rQ-uCwGT<FZ7LTK\gS(W:g9U"40PHup(1'j?UChRe9f5Hka=N]?[1s'OWoYEwphPo)bvd\57#qa+97tdH#.7KqRUU"ArN^SM_%]Ooc.[gv=6L.yv]BZwW-7^3.aW+o':Lq0,nOJn75J'4[jMJn#VT3pTiU"39#SImhgc>L_o.12W,1QMW84XBF:)JYw=7Vd;B11Q'bIU1ZMDZ,CUeIEC]25AUpU"aJ.cF(o*i4M&6S='rD6?K1Z3=-W.fKcSo,yZGhLO2kBSW8Fjn$Bk-aD/3km%e/.U"*khJQlViG[Xos$oMV#?hk+iLR>^.&QOQkN8^s]HN7)%Zm;#17h_&:KE,lnXqKm&U"B?=Egu\_10=fN'j?R=RRl5o?Nlf;l-bXzs.Jf)Eefp6F>VUpy1fN?31N7P6<L65U"1r3,[De*b(k/fMcW:g=8[S0ZcF94p=FoCMJ4rU6rV?aHlW=J]ACH,lr'+>QejSCU"^QA5)5F9k,S'L+lC<1T0_h(_5>tg*Ua3gAe(*CTqh&hr#,5OHsP'x>4_Ic=]QGmU"/UHA+Lg7e1k]=X$(c(4+wFT**la^\.8<8L%Z<_hqXD$$]Ga\,W[_AB_&dP3BM?>U"=1'\K,RI?=1&,FM4I[Zk&OTgAZWP$*HuZNV$BLpmJ[3+cmi>oE=XcvF08>2oGq$U"G--aIpC*ujK<j^B-lMp7('_8WZ?8KP;gD;H^Zs[9V%JAb59tcL-(Q1S;-/\0C2DU"t^$aXUQjG\ra?K5pb]#N)CoQ0^kIKmtoRWIoh%jCdwE^NT7LMQo](l7Z$'4T73XU"O.rp\=^E,qrs2k:q>utCJAt;g^f^*p+;voBc[x4#T0.J6X9oX'Ct1\?Olh<H.CsU"7ed]Bg,VfBcB1$H<\]Q*F%#,S/w:Ek]\Iq%^ua\\BHn2poj^VJ%)XED/?sIvSk2U".poC\%QS*h&h0jk[Gf#ks8AA'KVFbh7;'I)nF3ZdC[(8F-<r>j+,WjWS]h/Y3XXU"ja;bv\cwY]LHXXUB.zQhpq39,Rf;Lcb9u22^=c>U^jU^i(7BpW>o\,i]jUlH?s(U"^<ZPP'B;^-G[Q-,$u(3;?mX,eb)]-SUC#KY$<Zh(U=1Dm:s-\LS15Yib;#qDuq$U"\UhD:&mzk6JZDaJF)/bhc(?4]68wSp0BSHYPL2/'TX#_K-<G%.qrJ]E%E61[VvMU"P>9vg/hHQL$ntKOpp9;R,8cQRG[VV<;]i3&I-.<.H:jfn,+[?wQA6$D=tLL16FMU"N>o^Rc3'PH'HY>0ii;0?,VUgux<xa_vrT#g\l-ZslWQFPj4q.Snf'6*-$SJWNY'U"RsA>gnZnwWoqBLO8ucw(G$315jCNauN*ntCBg3Ki8j5&[k=Q4$6.m><#LhJm2c(U"ge<c1&8W;VwwIqqU+TSsKdwK>MBGJNTqx#7\%a0G3Qv'L/1lu8O(36siV\mAVMvU"QO./sDn-3Mj_%c.u[tAvlq%&C5D8Sz59&56;r%DV$U96rg\e\ThWG\UkkUsO/9eU"b\SlxVv*JY?h3><+Ou/OFv:bxj?G1576*5moPiY&:*e]0Jr0tV-sb65w'5oCEqSU"w;c\_yq$)=k[1U,WqN/[AnyDr;4i%dv=s:i9#6o4HHqd8X+lB2li%UAA6)&[?DxU".SS+.ifXww<-;^rF7.w#E%Q:_3iJ_W)Ee7*l(KU/wbw\e&#=N:pU[UZX0PV_oS(U"GLr&.N0<;Qse]W1U:H5InJwO]hDU98lflhb+whYbv6p-WLtlc]-XMZ^]Xog2%RGU"<2s<L0&Akc>TbPV4q=<[55^6a8zXUok-U95iN9-E\)A8R/'[5bV](HZlRq(E7LqU"nEqDcqflJ>au8YX:v8v9BTJp.S89UW?Qg:PD33ZH;g-]\.DP.?k%I>,$d&G5.cIU"*,$$$L7FaIg,;%rCI#5Ijm<[EmhRW1F]S=M#1bN8r]+QJ$TIm^VM%gj,>d>I[/YU"c>lE\-e_*WVZdXn*;C)Vb6$^T31c[54G:QPR'Jz%4-[9((^rlFQe4A;_,B>Gpb$U"UP.5R[bB#$FEbU?<:hc[=%(^QTdY5R]gpU'[#,Q0v^&-VZudXx38w;N=Z)?PmQ_U"E&?GK;G*b4Chsy:s.i*FaO&'oTC0h$a))[Z)n]>;QkAxR)WLdggia24\JC(xA&wU"x^[KW4/0;&n+mZ'n4M*O7&/4)a4GaFF]^:fX9LZ,fqL,lc%:ViJq90%VZ.Xb&bJU"#kCQO8rW%Gq46X]R7w[-ZxlW5G+24)KP&uiJnBT'nG)zpirag#-a-DSg<_EciAKU"Zt6gvm0J-X:cgUUr-_B+:;6Gg%A<obGBImWsFhu)a&AWOG#/.ZDTH6NGg,o7[_hU"DJRa;a/o?^91)LX/%[FN/.NTa;*D%NBvO--]-Y6MvMxHmTwxXqmI&8YoB$pA:6-U"/EA.QSE)n-,?6f>O6x38Vje$1,T)l)qL5rX;FPCHX%m]pp4U86mpY8^5wemprmMU"<]6>\[V(#3/DGC3h,jV/0h+m$b#(sbT\o98V;7bUTAQUeVsI^miep]hh=DFm.0XU"P2)N&\_0n3<V[TG]qE\Vk3pzFq[<xM4LCHdH2*7(aSV>>.+j?LD'KG?#*\XLzKLU"hG<NT<V%;W?m18s9LEB']mOBSpZ[$kUi^nhONQ0vP%^2h1(s=>(W<ao$dxhu$+/U"B1p1W$YAk1j9ZA:wL?_646\$J'8P<1vlZ.^Sk)<kq69XF$??>/e0.bjnenInSR:U"^7%\HohP3$&1LH/[(w*Z>vJUq:2:F65,.A'rhOS:.hS.p[Qn8]j[&87V5+P\KS]U"aegVQRX_M4e%>LEJnns,jZa-/2LV(CY/9S-QHFpTX<F01y><:<_bU/mXxWO.r(&U"Wu:Ggb>/Fu?9Xs^-Vd8MkMQrFaM5F]&-Si9_EC$HX-ZWS^w7X5t.1Dt_hM^<=&eU"*+Wuks5K>]Er<>$=b&e0k-vFos:'YffLsombR%_q_4.-A7D7u5w0YVljDodko_eU"b%S*u$.YEl)6QN<*wpA>e+JKtYR,J>W'T75OuY_R<O-,w;tX\'rxm_rY%+q'H02U"qJ]'5:.>(NUj&Nc1Glf5*BFiPqQ1c*:*$i>kupCK+lHp?oaFkHXosV%,sJ.r2CmU"Bf=bkAwu95NK?=BFo&?zl<noH<mg-,AVd70GRI8J27cB&3Q.5gXk2XG?(:BaoHcU"&l:H.Dbrjfggru>;?40n\R2AQ)l,7b;Djs5_QTkVh6[/BTcnXG)=R?<tJag:Fn;U"<\+%<:*9c%:(z#V1<pteKFR)m5/\Q/1l2^f4eSAB8pQ=f[GDJZ,>KKA>GLZ8yHiU"w[M#gic-Y^36W?&w#vMP.7Ro(p3>$X>*XstFW:nh$ihlRlD])+lMt*$X^_jGnUrU"134M3&38ct+54p%o4pi3=pY3xcI3x9o3x)3:xo3xG_3xOislQLS,'L,5QKl'TK2U":7<p+U0(Nu+V:RWbv;ioTwh_4h)aqHlY$ax)q'M=sm7tEiSd,&4E*PVr-#;Hs[ZU">;mm[Fka6EMVHgrSG<Ac^sGY<5*=J1%1.O9$ABv>s$%FMxj<nZ)#UQ_[=jU^=<<U":K<Q5_?Rv9DHeQ5F&=9a>eHOjG%krMSEMTGs#sMHua*qv,qrW=dq4CKa/e9Gzh[U"vd<HvG<%'VxvJkElp?Tp,^\Q#qP0H6u9&&a<aLt#RF]F*Xe+WfQkQS>G'CptH:DU"+f'aDsECQu7RjsR1jIj9cb0Ab&^DmGRd_E\PMDZMPP57c4=ve9Bv\pYeMpWGUsWU"Gl(1lH6^_m)vKPqOMUpMGbHu%sKNw#am]x3.Hqy3$u'r=fSN?*QB9g)$D4P2(H;U">hFT>$Ru'5(Fx>fFG$i:tlBAmpnuDA6U,]Zl#C+PMD)MOwOAgQ*uR5FP8qu\AGpU"ri(bpujB+bxr5hBbP(BN]Y[]frcX0Q]A<xvs<mhEiR#5p^IeB),i\FA\Oxi/k_BU"T*0&EP7[eg3K9FrboQ8n7[*jls7Pn_vUwh[nxBCQ$dYGtiR'>8#g^]B)Tsmob6XU"2U[$oXk*2gFs_Sd2[1FXGlE]d;[1TV&l1rHZLGAY-AgNj9s,W=a2%_qgIT#*/8+U"\&&xQA/BapeVG$qh#%EL4oU7\&f1B&yHIjc]-JH1<2^Kxy/-+Ro?,d&+5uWTX-UU"xn'f:y-/?=cq-eWG=TU#/c^_Uxb/pKKmraABI,>.wqB-fTu8vRjap%r_jg2Z0+XU"CWHlLObRPo7fQ)_kVblZVoOtE,>=kf.T8CsCK.d&t6lMqykyidX?^\+_(2v:'cDU"h'$e>'6(BxSMuP\aDg='4d<H95xGaTH/eTSb3'H'<Uc]HLfr*0oaY7_fi=.M&sAU"]^&M+\W%eaA\ruY9:YI$t6=7t;R]J+([MiK,Yj=xMtW>D,[$\;ULVr]<n>qwl$iU"*i(?6v9%[Ah192md'umcJMSf:*&E\cpSK6cv,jGfE*+97Bz)If6<Wb*k4Ck0*JtU"jJXeALk,3M8MrB3[]LO6e9T$X.1TdmyfFN>e%^On3J-=0;+q)_%(:.12+*.G9dRU"-iT9pS89uT7N.iUzS:f.%=.cdr.vDTMdAGo(N.3W_X&&&#/WotQ(fSqy(OD&v0(U".WMGk[5\8Ok4S:fS&%'b[(M)$5x/%>gJV,O31u%4%?&#ep+7R)%fu+%IO2C.q>8U"dP)xDFE&5sBJ/eO%C'Vg>(Dne+;1g<GP-h_A9H%80MJ_$Ss48godhLc<KKA:#w8U"5\&y1V.%Z'5R:DqFEa?KQ?Bo>9mMR)C0TKQ0PKug_]Gfi0QGYi0NFP(5aDigS+eU"Kqe_*Q*^yTZ.cAT[4h%IVAhlUFOI[Aj2V-BD2>q)YVwhu-J%A0B_0#[1'?:O5Z/U"9.+Y'P[=)4QS5r-qM8d'Mh)eH&V06Ed#G)BY\VuAE6gZyv3=6G;hd5>b+Q>i0CiU"+0hge8DaA'V2S5lXuz9G]bEJ/pbkdj7aI)npIC%<nVvGldgYhVyxj^u%Q-RpA=2U"RE6xWoQ,(B+\=aM*O4_g^&^Ae&w'B60]UIo9.ggna=fiAlqC#AsTK$xIVLXseV/U")ehTV%1O5KL16HdS,>:ClYD\v$64B-p*Ul?aZDnb/FSf6UHAFUADgkvlZkw#nm6U"4NVmPiYh[9dc82abmfcMV729#i4:5pKKj%NN5$>Kh4>V+HvO.Lz7SxG+:hfuVdgU"a,yxnl^<V]YmL9A.OaABIu(;&]T:bdNr7%Y/6kYMi^lgF_IjFIO:ZK)?V,RldWKU">iKo0ilfWO[0*jXW=Ffqf>F,WW568I_r693T]BK%4N2=$[qf7d&6URuSH]ZHP0*U"95*b>>#]LG+,nQ2cwd\>>d(j;fi6.)[u13r7'=oy4cLb?k^(o\5'cfpWA+i=\P^U"IWLPY:+hLwvpXkk7SO<g\G>RHU#:lh6vERp\/2%eJhb+35\DM1d)atg4>\,CTTCU"DX+n9&dQ:#:U__',qd]-X7dc0WIJHlGr9rIQb#coK8VdPfbWrO<aWr3E]wbnxHAU"?7DY8Qn[Jc)J?cRt;wA3<C\cin,t,,aoc:,22cGpasXBmJDYzG#e[Q+g,=[mNC^U"'A44M.de.n\fFV_y<Sa4Tk9IZ7?lrW.0H$I.n(&$FC<eW^QVT=vo&>ChGS['JlXU"gkPQhlBT1QRw^Q<VG$nAP;Rh>\lAhCf.c]Z$])<#q?cdZGM)CeCTRmHR=qhka24U"<PB;('<]vp<'WtGWd?kTNaq>&l5>,Flg>&lY:t>wN'hAtjpRk.&UIMr<H4KQQ3$U"7^6Al1jcchKS1Zt3]?7*<Y\6mkk&hih<-^Vy%1HIT2HIOTACE]a*qag>J0d2d=5U"TW](Vyk%/H(2lHAdc=aa6[DIgHBK4t+rZ5o<Juz<AUjjp=hmlJY6a2IeZ.5Vtj,U"/-Sb5m%RKuH5_[R;9:u[hBdTQE>H30T;IE^e0',hxLR_+Bo)k0^iSOttJ*gS(RnU"NVbfym^*S)G%>hNezZyEWxbOum^JQ)F]>7?E(Qi_?(,FgnBbbW?M9&IV/RN'lC.U"D*cuJtM)#2tknp#YkW_^kN#&<LYN\8M?j2X-^kLflR3%sI&4$3)jlrGAoX%XQ-sU"ujgtA]ZF,&Ga6FpK-Sg[w?FX4^o9_'l=cVt-r.nsHtwW0-m^?6p#87=AVod;aZgU"Lhl+E(G/w6LI,4>m(DL,&s7/\R;^%kw?2Y3Ap_6v\-Re/-8OJobs^1-$YBtj$-GU"$,E,yAbfZ6]x7:jAZ=>bBSJqnx*-dRWkR]DgA%#wIB6t11'xD60$9SoOIqbM.p3U"LC,wP&9jWYZ_o;A*BdVZN#9wIb$9H_.D16g2Pk4jt)P(H=Ivud%up()%9%%%.-%U"^uAUGM188#''%%%Q,%%%/%%%%hw%jfyj%SgfxK&z,>BSU9LV^cx?Ddqv)2S?'d4U"eVs5#1i0#i]gyV8j#U[.wm_nsPjh$(IKYri4\8ip5A(H?j2#lAun$MP6KPp]A]UU"*lGY%A_DcK3lOm4s4IrANX;i)Pd&14=m8UeFMR_bCV0OH.'>kRaW.*b9ghrv$R1U"u8N;t:/#3a)/x&[beb^%7gHHe;>g?V''bFYY#'%2],HMcQ6qZ,[*p;:%6CDTysKU"Cjre2sg:ju#^(POg8s:)TvYLdIme$W7Q8i=o>gPkr>X[dI'H/-/+1OMiYf8H*7=U"hWOMAeyP^kM>')Jcf8<-L]Gd(aM[6,q8>)oiBYR^oh'56g*/.yS%#t;EdE*x9Y#U"go65aJN_0SX)1gG3a7:2s5&Zf[O4aOwP+1S*1<4I#uFvaTZpJ6Q0cO8S+Yx3#2/U"t>8\MiWve'\BAfw0ty\v9$p\hJL>fD2/5%jOJF(K&o7Pb?j%il<:E6r%(WM,>GZU"^$_ppWx*o?A,haE,2vJNv.bkS/a;Yg(Pt/wa[g97znNlS%pfb'AMu:P?(+PmjvYU"^#ng8WOoe(1i^n_5(jz)o^,-fhi,4-rr.f]5#mc9/dniS>]kk%-n=pKMHKchI,YU"M\4OIYF*N$pu<gW'vc[3(nH)56h%^dVUM6U8L$$OveXrQ-?DTlw>g)6O3dR]VdcU"Sc\#;/-g8W64q/:O^Z.>DQvvf]<YuS9l7v,w,tB9_8N4jOe5:r7ncu7\142l(NUU"t4yf(4sCpSrWf'/\s#%qabFAwYJ0M%(NtuKbLgu#MeVDl/gGxwPmOtwHU>pT[#qU"-H_,nlS9TrdOkpNt=?nr^>rf6C'05'f/vWD%30/YzHm+BDPgXWp9/L3B#6A7*khU"tk9>QpTN7x'w'up%()9%%%%-%/[uUGUU^&q%u&%%&X(%%%/%%%%htrg%fySg7fxU"6w3X:Qe^ANd16xZZ)m:ilG?%,QhFB'2+tYBQd#jl.htp'FxkM$9dLWJlQuYptrcU"bR3tUfNWV&hQ)i7WTYrh5HkgCV9,(H3Bia9AZ%oF=<QZB>C1-*'3[t]P+)[[Mp*U"e3i=IM<<G,R8O]G-ArJ4,nF&=;_WJpn'ibd)qU$$lb8]'b%&>h5]7QGY3H0zhjrU"Kl9IWwbH;z2*COuL%bJnJ0ro's.Ea?Pwd^L45<IHuWKdEh[YMKlH#WVa)0\4>q2U"nzYQ>[q#$sg9rTtdCf[J,dre0ssd:fW4)8H(.z'xSA.uNuJFtJSxn.tpxz>--l)U"?3FixKD?'&1=?^TmXRTij$/^tLtZ8AYu[a>MvZ8s?BG/Ug;FB+b_[.=4?R)7jtqU"-=Z<XP>P8bb]m#CIqnUk,BGk(MF2g;]]SzmEwn(-XXup%()9%%%%-%/cuUGr0gTU"+%Q'%%&b)%%%.%%%%ynyq%jSgfCxdy,,>Se5nKdbw-<An07Y9R]1D/x4*?+%:hKU"e<KcsJ.PoM7QAp]$qpNVBW1hi^y$s,EUglEG]]G%Q0IAbCkyIo6z,\T#zgo+G$%U"U:c>LDh=[9,TTbAb[CQFV0Gt*IzsYd/PELyJJO;J;l144?,tX:Z%ZiYu,*i_&=MU"5R:l'A#2PEVXn>CJF2;P7o_F2q=o[xtK#Y$l7W;(]TXgq);R%RQL:8.I\4rG=t9U"j2gNEG/y(W.%6<B3[]B>.:RB':WE7592eFV5M)[]Zk]*s]<Z->Y&Cf1Ayy9hM4:U">ShSGX]GiQJ681?EtxjlMfo+,]Rsr/pnJpXTrGPq=Zc[''j<^23&MuTb<<2Q<1dU"2;3N8H2_Lutzr:f__P)cclv(OqMp)D&bvHfmG4CI9LrW2C#3o6f.CkETD3O,foIU"4MB$L9$Yl^A686r2L4EVf)$.Ta(kX5<aCd=m]pAL*9uII\6_VGB_w+k.v?V1g4JU"mr9XjK5hk,r?P\7PG.o#nmlSE'w6iXw>gY:e:0d/>?bm/R4BLM8MIQgi-Q8HK.;U"^sRBZGm_:OhB$\U)6ajek6vw;:,Stb;H;Xq7Z]K+D<W.N-]teB:lg.&jgrBQduNU"Tq9jGD%kGV<S-1Ht_wb<qlrMG&DQFscji*'5TL^qo:V+sUi;/1pgk=35UL<wZ0:U"0T#,Z8])N2NAujbdVeX$Sv'\NQYi%,up(%)9%%#%-%q[0^HksY1?1[%%%N%%%%.U"%%%%x%yfwy%Sgfy\BmrG<A&At=p\^ooGN_^('Bb7'Dw:OBlp:Y%w8x9%oWw:5+uU"l:0KWBw&Z:OxjpeH2#/7pZUxH2+8lbu:8K8,xC:YpZaw:OvCgL:K<ul6:0M9kB^U"(QFegios8JnC+.J0w1#P5+QM1v8mg(n5ns&yCu%b92k+hun-1Pm,mQhU.921gGMU"v1sYQX]IJJr4j>iu.jsd/IsjhX&H/oS5hbhJ\X^cr%jNo/I&eV&*kA&%%up()%9U"%%%.-%>#SEGsn&HQm([%%,s%%%-%%%%rf%ljSumnhfS1r]kU15U0o_?acA:mBLAU"G$&H)O/qv+4=TbnR[nbL,%&9:L2n;2QUv-MXQDkBd&%+;HbHSgqFMrx)IXti$k\U"C#Ypx'nk26f=dzMlTi/LzceU)(Pdzw3ZdBoOnbB%,bu-'S2)l&\6&lRF1qzm[tSU"+dpGPr#JHq:M^,<e66<rY(IGZf5sm;_su+Uz6<>HVl%K5jrjd?D7o,n/O]G]&2mU"K]-Dyv$%MGd<#V_<^qMflR$TItiee.foUCLpF/(s/?8dXZb[oW1[3x^E+]Tj_?&U"/l6puk9<VyrFZb+,X]Fl'cOrnB2YjVw;$l/.^QV_m8RVyv6.$1=X#flANnSQK9uU"Q,B6-un-r4J=y&yLlMazbpV'_B^r$jDv>q>^yDZu8A]bkZTu]EJTNeQGEW7ik&BU"^u/ijyQ/?rMfD:5Rzrduf-j.FzwVUn'QGADts%3b$%]>;o$b%pR,ty#umU^?gtJU"&RmJj8JYFBH9_lsw['Nh'.K$NpI,Fu2Wk4n-_;d-nEt0GlGuW)ED[d>mO8MT=9oU"*2MJ[nr(wrVd/r6Fst4u_\vpzG82dcaqb2HZ0aOegA_j0uqBb#qXpN>>hM4O]F<U"&sME^GZ^2vi.OJgsj.P*nj.5K*dTilZ&&HHuq6jL8)nYiX3URWZ\\l/rtl,Tu5RU"P6F&M*2/_pqMa\4gz4b8rx:xB4%F-Hq5ETxT^<]a>na)Rj*L8okN,yH(R[cAFC$U",i?;\qjdogx,O^6i%J,bQD?(OHtl09^\bz3fgT]\&Ij$xz#sxVuch:;Jke4_nrqU"\zGkp0._PQR;80>kX)okM]FHmtKrBRMd*l$H>d?Uzf<>5cX/%KS8y-PM,yz5>XMU"XH8oBQ6ugVJobkTu;Ql8[N8/67J78i&jbvI<o=\A(p+7X:[of$TBuKz&dL-IOXIU"Vh^-kHUg0rN_bktHJ5rMHxwM7)DFnUJD]JKb%JO,ix<9M^('%%%%%%%%%%%%%%%U"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%U"%%%%%%%%%%%%7%%Yd'k0up%()9%%%%-%2v'EGS?:Ic'g1%%+,s%%%0%%%.yj'y%U"xhwS[unhf/lr]RIN3Th-**LkjQ[=9^H'u(LWT)9>DT$=RWpcXhzse3$WXO^?4p?U"D5KQU%uTj(o>^OSdtj/8/jRXIXlwP;fZ,Oi^$$'D6QpZNKqVNc7PFf4#?1hoRZoU">WD,1x_Pm\dIp<W>ubFs?r1>.w_d&CA<<*$p;\q[rtS>J\0>Q4#[J0trKt]0bLGU"kj76orNvh\=RHoh:;Ye\?;:(=W#Nx[dVc#6d]Q>VIvv2XDV.QYk(YF/(<S:ZY+>U"H^/Ij,+?q>$MfA.y7\nDtUuqlb_WxpSV1z'l%ov07t<RwF+eh0Njby$z;&[mTd_U"c2kR'9M?ZHHh&DM06+Lss-#_e<[^jY:TC:YqjOzZJ$<UQ#6R5NuQ>5ee*wiV*JoU"RE_OYl&_d'U5%e+149<_(eJrY/_rOKf(PAd*]+xa5QNtd.Yk7+UNw:Wj>&QuGV#U"uXDm+_([d%TfAbM(<K*by7L'\'bO_/77xXW#Q#Ig-RNEjJ89>cOjv^GQx)^qXAvU"?bDWSd?:MVZH1n1g(>ef+nUz\p[:/MH&t4P+/rlbgg-.d-#JaRsI>E7f.$]l3hcU"v3D]w0?W1isV_bTh\JEpBOu_v70ij-&IR[S_VVM?KQ0w,)m_otWXpRYpr==h975U"d]>gQ-(,QL1rif'NFahU67TaYnJuT;uuR0>H-n/SF&\agL9D'je\cq,N#;<..j+U"U4wvSvV?Ct;_g1-uHGOhhUwO(,h02[GG1&X8/_d2wHcKa*t+u/URRMM6UeNU3])U"2/uE?dIeR'+bsYpC;,7R#)]tj^VRdNite9[[aU1R6oaGcOu0N-R:mY,2nN\6M0EEND SUBSUB V2U"=RfYVt9R3oh$lZ:mEg+HrfykAL3TS4$=\n/nJlKLsAj'et2QJje_UHM(+CFym8[U"x+F'8D9Q*KUsCy<'Sl3YUY00hz[#Q15V^9mjVe]OL+Ul2,bs(C_[N-/9\3Epds3U"IzI[^j^_Yo$BSXL9vcDs-X0&m_y7e6_UajC0NM9c0\ElU2j-Bq/?&r7#o%0Ws3pU"#FOk,*f#[P&/R>jUXil]?T=$2_Q3fLZNpr2]u2Op1kO<[NoBT^hTwjB/#xgx63mU"C889v,(:7$.\T,0jgs\#:M:FPTjaKVyw+bE_5vbMnVehj0[)W+*$'l#tj-O=RllU"AnbXP??&J_?49H]#9W?PU56oyOv6h?2G:ZF_&w'2rrVa=*3^>lt9S\$;1/um[(5U":G072ijtJgFZ)qP3GEto:F&Vie-K(v]I.*[+#V)j?0&tSLJXpDo)I\ineU$;T54U"LqrV]K1COa3.lllMq#icK-f'_2+xbMN8$KuEqn4S>RF=mD:r4eaTMfh3N&\\ft%U"[EP7Q&;X.0AiSZ.AVad#N[bLb=l(^78?mu:&bdeD]3h]FPEo^'7o[,r\3LE$DL%U"Y.Z_6%1oXp\$knN58?&87Pbap]1i=58([ihStq<v8r0g(')x8'^4Q2M<BwSu[xKU"qvp=($fL]:^zkd9tB,q._+uPRXdG#Y<XFxv3,NELt$>(VlN'iv3<1)<u8(O*a+1U"pHq>:]SbXqZ%M3C.tkwi*2J+EM\u<$sqIT;DUlq.DPqh:d8-iO5d$0NPV8mOw,jU"bV-=LT3XZ0Y*MB]GXplPN-Ngsr'FxcJdqlPN:^Z<ltr<m_ear=HqJBn8yOXnmX'U"qZ.$(+4?xtXu'q.$i(+)x]F.Qjk:H.2c9h^\hY.JwNCNQn6sX+dmdZxtE$[PMHfU"rPf;mNL>t&uSlS&SiJuG1[PrGniXtGG1[WPm8A_Xn$>glCdqjZGS32vCXDr<e=hU"gP10_XQ?84ko>ewQsq43]YiJw:(=t3XvuSZO)&\nBbZRMBfXW?c(Etd5>)NDjk.U"%_9(=dNhMkNr:Ui'=;NXqL'jhQg5DvAVm=ru'<xBuNQ>hJ?S1iiXD.2Y1J\DqouU"0_(YExFhna0ugo?_MuN'$t>9b-Z<lRZCAK-/qZ_ukN[HXHcSRbet98C=ZUbUq8vU"W#.%YNO5H>BXyPXgTilj>cXjX4E/M^_9*f\<<'N10nMD.q1p2I-3j:$>IOw?c'?U"Tqmkrj.i3,]C_GduJ[t(PuN]ndbLjb;:wiHYnw>Rx,H1Q\nXrNaq.qjZ%/2M]KfU"h)NRwCG$v8]v\xZnLc[Pn_^Dvpn:H8^qfKrXhx:+/GJMqeJLMZQ8T$sK/;N8iA4U"uwaHOd1qQ(D8qEAGiWdFX)\uRQ'V.5I\*q#R\[kHJxG\G9OH[PWn;#XXg$K%xx,U"Prd%sQ_HBu]^[P5=q*RNw\xT9>Tutfpg%NcCuX,ZRcrf-H8q;t+YPhnZ;=(-6plU"9lrJ6_<dFXG4<VqT:k4wcPboY.F$mjzW^^aKUVTqTEw5+]GqxXaNgW.R1JZ&AcMU"qB^t.4k0N*c*i9x88dum86c2ND.,CHMR.jej6uc#>4l(Tg.Mf^d/EGpkl?3uazfU"6.pvUU*oq#rv2M]](,ejbJu59^ujdFhk(.8HtO]H<xx>TXig)t9nHEd6$k*V'xIU"x%hY.rl;G<wTW,nCN?u_HS9GdlZS<lwNcExwHYnqdbjcL.86t?+Sh%kN/fG9O[lU"Pk\:6>$._N9W.[b.qSGbYxSXqHunXFDr\Iu>xm6pj&u7NX4-j]8LejNtMfH1RMnU"NX%>H22p63T=N&8FM6jmNrLNK<_^17.iONWX'^\(kY<vp;ssYdrO2jzkt\(Q8*2U"g'uru1uKc&ad-*#//eWjZ2G3\'sItNC8tE[&R2UN:jf#m&MM[>dB7UQTrRjqX(JU"?r8d+lp.-m*8.$xp%m>>$4'grQnbl^qDgI:+A<mlHX<JFH<%Zq>.PGXf<<GR2]AU"SH?B?QM<T6hccpGp:HJVbf>Ai]k>3ouCj3i#,54w>Quamqjoq&JK#mT<I_5[z4LU"<.2>WGM[^9X1'=SgB:yauHH,CwlpdGhh%tuAUp>fnH1;[#eQ(8nniWZ,VZk;;+SU"]La1im97KvZ*:8l:<?/wu#d[W)LSIE(b-R,pLb%'\-j+UAX0WP]&NW2hdU.38bMU">gG%epjp)15NaN>MeeiLDWqBlGi#Tfwk.3krpzLm\\L):e,i'7(]u[&CwQZNeX<U"^ris?-LY3vhwcnqL:1BfO-7jM^?7$?LChG+aqu6ue_>is$ucg%:[F31R#<ghRX8U"K4]bd6kB[zVYnI-H4m5GMAp5)YXst1UW6#q*UI$S+-+AMJZIL?wv>bSm7E8K,8$U"pwh.Zu>dXU8>I\pzO9ELBB*(E(wvNq<XodthtBYH2Rh4XLw8(I*8/-%>ODzcbI9U"a3Zi2l#Zg3GUDr74(SIAb:mVG:'-QP#='wTd8c,8F^.6[hh+fk&QPej/,>7(CqJU"*5-fw[IGf3gJ+(9-n\%nFj8:r==6%jXo$B6cg;t1vV+i$^a>>7uQxPcG,OEPpS#U"4O>W<8W_F53U_/pDpqK(-/9?D_R,.hAOekzYQ9hm>%<'Hd\cVGhv_bZ$R&D;cM=U"JJjAEF9p/+47Xorx'&SsRq>L.)D]$>;QH<<UjlUQhm-)uuDhRd(0tTB082Sq88XU"-R7*.NrKMqa:MDc>sI))6?>Y:C=Su$vPsE6q6NE9XYv]c<p_[VsYWq;b(ERDFCYU":ahuXXs&6gLZKMu.#S5odqto4&S6WbRh[3Z[H+g0QlII8nTGKpK\]s#9Q+8SqabU"FimlHts:+mUE1AQT<:/+(#:&e[RO.[E/ykSJh0R&*rsgII$Oc,F['3Oo1FDM=60U"qr,_6u&o.eb]ID943d]WGck4#m&XS:O$;l,\1y]7-93lo2wm,#o4takV'F2>et^U"Q+7wUL6B$K9\-SjeXrPG8mdklRkm$Qh56t03wDRHpYgi+Dv0aBO70&XMVJ9WAGjU"vOa<#fQEcEtENksBFGFM=fc5)3pH_QE>-Zn.e,n+VP#q)rb(eu$0BHBs#I13=GVU"yVc^-oBMvp,&I.jH]#'$GR=\s7V>SZs?A\==QUEfZhdlOn9-KZzQJ(PtJ%5-W1NU"i7Eb\PG8O1[/6(W/)]$9o6EKJO*U9SCV=hzLywtbSwKio><x\<8dj78dj8+dj8dU"]j8dj78dj8+dj8d]j8dj78dj8+dj8dBj8d<f[LM[pLMS==tu=tcu=tuo=tu==tuU"=tcu=tuo=tu==tu=tcu=tuo=tuwVMjqXPnqXniqXnqVXnqXPnqXniqXnqVXnqXPU"nqXniqXnqVXnq878dj8=djLKGM[LMf[LM[pLM[plx0XXWxWXN%%up(%)9%%#%-%U"E_(EG,=or(s%/%%,'s%%0%%%%y%jwxh%wsSuRnhf+Fp'Qv+7%>$[$7H/:u*A6=QU"#DineQ6ESWq3LIlk>Ej9Zz\-g'453]VqEWwHwI>m$hl-qxUBT&Rx:j[Pm,ut#6&U"lnO)p:dM9d[Zd_P9-]V44$['Ael$]HIb8MqjD&>u%bSkFe#QNlRD?GZGjlyZ='\U"e[WP)q<H=ZcqS;T=^gY*2Y-3Zlk;j<qVO;2fn.Wv4TI-Ln9t;xvfl68#8I]RZ=qU"7w*?$V>;N65Y>TB(-#931Z.DWfY/CKi<nrdG$'nZ\u1rlYp<_WxpRj1rg\)fs<KU"p5zJi*q5YuB?4gL-dXw)u\pCHc1+]qxHls;sdsA[4V^Pw':Q5jAu80F5IL_>m+;U"6T$CC4,jTj07hV(%YUc82kTfa3'L+3tH&W?UfqDP5=E_/vpJSFYI3o4qgTmE#F<U"kJ6dv6[khRrm.<U?5:_\nXP6M46MH8O$qAZq;D8)gsFd1d=\7Jd%hfqYfJtYa0;U"=u)Zfrw,r/sD.RGG/FSLGJ]V$O[Vu#<.KlPy,ueY>3CBZPF5205t=zT81aOeDf^U"-Jb6pD6l+])9XthGFk$*X8t2CaqRo?<VMd-e%A_30(U(PChv;M2(4770\lx_.+YU"Z'xfRQ6IKh0=v6pZGe9?,QRXO82&+Q2qrh>N1KHUOFU/JNH?i<m_i0TeQJ_x+g6U"[*gG7NSRT?Jj>a*[KZAW8fy'f-/sHVS0pm=+8+0puvY$YYPek[W'&]2,(k9T,&SU"u<,>FPz$yq_?n3x<j_:cZ1Y(f+J*;-%m$(zt%'5%aH[QODF4wWUk(J<$i0kGVoAU"L)<<TJ4NgH%EcdxDZRQ-0[YRTa4H,[Hb\ZFE;N+Fty=a,:Fc\ai:53/HGJ8>]'(U"OB18IBtX_(l>e/qpj)tqv,ipB^;X2:m)NG)P?<9O-w%G0NgS&N>0TJ6K0rnD>5YU"E^$HeV*UkKgN&$BG8tXar3VZul=Did[3\>ixfS_[hC8z[l4TLklZ+aZfMu%XRSkU"T=sJd(RY*_6MVkZalb>2XQD81Bt)K*30;IE5\lB<6tAV0DDB>Z$Jc<sglXFSYU2U"j[kfo)&NvXr=ciMC6hS2tqxY&_1aUw[76Te19FP8,k3:Jqhu;^pWh<mk*r2=F\<U"=0V5)$'-#lrke[q6td$XbImM?6,+SqX3)T[fE3Eh(Z/i\aA^;<V]C/&E>KwFa'0U"lV2tmt$u2%>=dW.%iRX?0:,=cH6$U(Y_EW+,FMB[;&H%8oAf/NS?>GJ<+VhE7kQU"(sk/L4k0s[UF6T;bNY&634=U;Bq)^g2N\^RfglO,#?1_[?YEI7YYh8o(dQa015*U"U+(5n,zVNp>Me(22?\*H>XxT^HM'ck?<:&.a8c='L6,9,pwA-ht-=lrqOaP5ufbU"s%C8EgDKe23[^^R9[T_w#?K>>0[D6pl/k>Ea*I8(q;XH7ltchhk&lFr*u$xw9[TU"lTdKF=[NX=KSMJSk^Q7[>16KFcd-iu0'oTrw)/hTnCb0OAW4:$k?C;NVeS*8,1\U"f^,<B?l]bW6&ofFnt65u6x8]U4b4^M/KTH<#.HnTPl9JE)Gp#ZnE#Ta*[TuI<t2U"&i2O>kFrlT$dpHa>aPc$w?qks6pK-JVt\x=X:D:rSf$w9rPW?N$_NBzFifkRq%pU"SU8\?Z;Zm?<Lua:?Trj[a=v:0fMaj'WNm4$t:fboq$un0^PV'uN<G[b'LhWXzjBU"UQ'afSB[8Efw^.86V&NVCQT9Nn'pCZQi^i^DWN\:p+NlqKr[fAYhf7Iu_t.\GfSU"x#G2,d+RXQwQc8BzLF\u>%p4,>EY.tu%X#&'m,N2%kZu>qTJJN=Aa&0/aWv>_.mU"qjV%Rdb4o=CZejc62K0peX8($6w\l7,XpxXc;RZeI\NCKVe^?Noq-]=>>XDSJv(U"K+cpxcQ;RZI48x9df^Hk6nw\uN,MCl]nJvheq>9wrP^6wFk:o2>kVqznM&f:(P)U"fTM_Sav1,Ix#$Q,*&M5fiRts.w5fq;9??h;;V_XgXF&ZgU$>>xf9P82RiYQe?^TU"FIdHmL5jv2<0MWOf.8A\;F;CC+R8h([EKJ&Q8Q6mHTs,IF?+CeO$Q^_2V&oh;?6U"$9Sw</w.UU^e?F8Mg(?.z36GVp;n_wa03h^AXZ4N';871-yaBA2s^#9(6^#VlUHU"mVKdS:?0d#l8gz,T;ebQ/(f3aqW^oHc##%r\MRUd0Cl[Nm^eI^*c]q*rX<^H6].U"wsJMGObJO[p>k#g0'('i%HSJ:'6&/ohgVTf.D^E*.J)uvVg0w)b<<+&DM^[lI7)U"$Nd2ySwyTStC,GgNPQ+tP4oW6S9\7x_Uqh)*xZYO'waiig+fWX)gk>vm9-Nk/,eU"BdLw(<<7cy(\iJ*-Ik8:AGg[o4vw2Kgrs74J#2WqOevru(k*SwR#F$R4[/m7RRJU"3A3.N?C/Bol0&jNn6d/[p:b0RSCa?exBi?NZcFJjV+tEYXJpi04l3G?HpBVG\%eU"9OS%mlmW%XQ#a>VxL-Ft<iW2*1qi:\5VrF;$HMYD)xtoAJln#o]bahXI/>QPzIjU"h;tY9$k.&HD2(&Gt-O;#>8aNJr04YHWmZ>&v^Hf9hBXRXN]MQk\3T]rY^C99_j&U"Xt=3;&Nuev=0150:ek[jt_c4#vtu#09PI/TiYbG3M]YJ69$g-tAhu1H:ddRem;>U"YXg9,#<#u#YLW]^H%;6+*+[R0+X*1QKM&htkP>E9n]Gk<)L]S8qJgukBM12nNY/U"n-BC54<Z0I1p$BLQ)H^_WGCatp_:3_=wr&v6)Wh^W(ZM-0l0%G*YeA;BD5\C=03U"_nI,=N*+pl_d=xClzMnFi-mWCN-7zI8o*;XW(ocl#Bw0p<HH$*a[&l+Sbi:Ru<rU"H'f1=n#\=+RYh*a<blSktU)Ncf0I6IpJd='9h)178kkQ;6hLs]50Q:<>kWJ=l3WU"&zG94xQ,1JzwpbDnS&8fsI-1rfdN**tI?+*[Eb.j'hc[NZ\dYDXE?(i,Fp,H'sLU"2s3+T]6#Xp-qIthSqfvlT%jZi0-qIUPZUt'Q-$&EU%dalQw<,bH&m)*?k)*<45GU",NPT,rh-U%ww2U$XiK-F;BT:D>nt1MK#1aR8I[^5=S4h]^7[ol_c:Hs-x=3F+0WU":#?T[\dfQ:NXowbKUZIp3]$E[EiiV]-Q(u8(o[q#$GxxQV=PUCZEvVHqJINOl=$U"QLq\Q=oac3g-EAUpQh9oo#i.N80Z-QE(-QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE(-U"QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE(-QE-U"AQE-Q.E-QE(-QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE(-QE-AQE-Q.E-QE9u<u4%upU"()%9%%%.-%GW8IGvn&t^d:[%%,s%%%0%%%%tg%ojhy&'Sunjhf,6,]Tm7_uo&m(U"Q<UVP?jTb+2u+(ab:JU)G1,(L]lw?Z(YekQ'Z/0G/szk$*DP<cPNzV>,v<DY8]YU"s-'nu9/ZrYDld8ZUtnV84?'t(o4-env+z3YPVAoG+jj(e768?4Ir8DjpiABPUs'U"5KFgvH[e3)f5:LAgUz]Ucyi18WLTV$+ux4zsTU[#i?Ysiu+\)-iZX27%aLu]htdU":<Qe0H:nNK9ts5:>6&\<bMC/uJg3e5m4$2<uuA>\qufmm3-)TRFwXAAuujbT+LjU"2dWM)K9<HvN6[d]*8r<0,RUA7vGUaUf0HVj4dSBH<^?544$SXpq8rwK+a#b^%&$U"JfTXk-8Lr.gDncnL7Xqb2r=ZFsfF'2W.9%iH*ZXZ_)R=f0#Qe?ilY&P[d]N*QcdU"&m>akGEglf3AVA3b-Ue_Q>GhW*^%fqe2:lS.IyPW=WXMH.?./q&mpD%>s4ZtH'oU"dd[/G4]d*4n&dZ87r0'rZ%RJRl)S-eWNgO#;>Qnj6;pe^%om;VhxFl0,SW:)M2#U"tA#+q=>tjmok,WvMmQnt.DQOdtTwks?_#/SYO=Y$&F^e#awt.'=Eunt-cV$0k/MU"/AA%qGdF'%aO0Zr9Zc*u*uTYYx0r(AtH8N+u3a'8h9-Hg5q2(Q.A2H&wTAQ<:GjU"ku+9q/tH;]pY>L^I[)3J9Ew%m6mue;f.89bG?ou<eDw-(g3f8hkr_,gDjivAbH0U"Oek'&2[.;+BGYXlc]79co%SUM2AXQs:ugpNqRfrwMFjwWM99f?+?.l9SDfkSW>DU"8<Fgb>3Yeu$s]Tc4]NO4eMzp3gJ,lmgls;wqx%Q()DH>kOVi<w5Uu6'8^&+d,;dU"-pdUk4$Y4WIal0tJ^FYrdB38W;_\5pRT\ZQjo*diU&g:XKYldUEJ1:csamSq8H7U"w7^dGAJR3dwQb_9RD#Dp.-G7)yTNw=gJ'Ahe[h>03_/LBIx\+ws)ewFCY.Iu9MqU"tpY6,ZVxU$fe0=lHY]eBuTCFFA69IO(1[n80NZd05uB9-pwm]&Wby9=0HiH[6FHU"ZOp1uq-6o/cU7Cm$03-JUA,>gff0WM'E]SKfHA6h==AV#HtxjssLf]._%dYel94U"Qjxh3j9q;x//OrU/IeWCZ)L(MPDdd_2EYB5MTnHgkDWswdn37mouytNOeod56A<U"p]GuO0?T_=UN>Y]*[6C:ejl0D:eg0hdWw)1U/&S>e-]tn=3=[-)XG%&hFNNxXTtU"p/s>SMcLTD.a#?qMkhVdGI?1>Z\k'uU:G):ENVI\uh2GT;*I\l#J)]jr9:bx9#cU"BiHhfurl]>5Pl3^RnGFADk5a\ZY/*u48P3'P;dJhT7<u<5+M&<=>e.(dcd]^fNrU"MRWs/;+e[BH6QQ38[]7d:'AkG+d#4F]._cWIj/P<5feI=q0q6'5%x<'Drgd<g,mU"^4+%T_8oHtvZZNx[$6'&jU(B\\15>/t0S\NXFAEi8'-6^Opej,9sFL^,PnoB=RAU"5o4VhC)mn4A3HcWX[I3*gXO?7Yw9p$CC?#*ImZT.kq8TeFnYq]:D'u+0oDI^\MnU"g1I2:i?]NK9ZmYSb)oPBoi1E3[UFW#T[by[l[-:?4]m;q'K$\6ZQXN)EN*$;DwjU"RiR-:e^*0Y)7J[W6#qh=8v(_R)x>G9u]?Yq<Bu:'Y)PkpE;39R5HhG_s_dHPdqPU"cF%h_O6%T_k(<%%vAPzu/Id7-.XL\$&6[Nppm'qdi%6d0#3[6N+G9jUwbDjD)txU"p_B9bHZ,I'd.-M4HQOmD?HFgk[cq9jU_g(9,Ds\_1)X(0Kf[)^B:5PfsQYX/u$nU"7n),K8M;0G=NW=u?U[$5dXhXXX_r,5>:<A-?uqomQuU-*B'F5MgO97=HHw1Pk.]U"qb1Qlpn.&yg+T88uVct(smmCCwmj6YXn86MHOU\GuUICQQScX9_7s/8foTYzL,>U"7'8y_./Lc5:FWDFX=me4d\,oQ;V'=,iSg'+E^C?fdU10;VV(V/I3Tr0t^&^^E-:U"'[1leuH9[,%R%2m[pJ&D_cjl_3F:*+--uJin:dq3+u'>H#dEML9-)Lm#s8W>3X:U"$NP\za\0fctxutXd^U<fz69:4nQcff\Qx1Rr6cN3XF1_GKiuj+=^Yk2u?8FJx0CU"d4'M]^A]O+Y]J>So](;u+9R\d&aPQ&ivSZnLR#.aN+L].Vau9&:LT7/7-E_dhYqU".+jFrxrE*h^'9u57&_oV98XxcHViYO2vOEO.1(-K5QI8=M36AI[79<7'yJtU:3;U"&nAm,Lgna9KpOM5NgQ6mec?d?Cu0yG/j2'Bw%&SR<hqh?Nn8Y+xn:y5#'rQA?:FU"+^-yXuPe2pC5Si8kpvLwu$2%FJ,%w5x11mDZiwz9*P)LG/il,v6ks+UY3lD[ziqU"P[O]eb5k+,c-&B8Y)E&&D=.mg5CS[^<O_EhX)Q-idd<mZx;sBZ&kzl3sRA/N*=ZU"-u7Ld1ZKHnZU*O^Jr]&?V5G0%in>3JE'b^#n\gwk#9'WS:Ez)y]JRI9QPdnYhh^U"S%^'rBtHimFzad8Sn>>M]sSK4q$83,uQbI_ium[Xs4Mxu/mr*hKXR>SVL7g2F^1U"&hY,ummreWiJ?I1'6u<udX9+U:23^m%wu+#3dNM8V.uK89%+gOz<>]SjZ57D)djU"Iqtk)bq6ZXlR(S:Kuqi/w)\+7^q+E*$jcVBfEu4e6s>8F^'jPZ^taPO$*$6#eLdU"2.(p-.cwV2xxoB-5V,YBNtCc7Yiro\0Fj7$mvbF-_f9BaFl7nU0WYKaL$gdcb8IU"h)+PND%Ff.i8MDDQ:t<X$XC%&Y%.vT23fudEu=T:Tl\.$oiBcq7j%^9N36S$C^MU"X+56vC'Sfo8RF3C/1=sq2K\NnL;Zsrl[3??9W7HPvlew;235):^P3FSVaMn6S$RU".gl+)^&GCCNkgjGC1Q_lqFv9*cS+[Ra]1j6?>n89t\i/G:f>KXE#Vc#$%2zn\)>U"<4/'7ZcFioFU4.U.GNr2N$Zy6rT##tnF<Tw&$Y&0B8v4tK0OqG\KNws\,TeT:]IU"HQF6hbN;qj.G;RT$gt\(z3M5o$\jd?LI.sSMx%)Lwgxun7OIjd%l8dQb$&2AO;<U",zXRMJQZbK.?D9eAI%vtECi2uPdEeTV#U#WjH%'QM#=-WDa(BuLaIH3K3xIp.ydU"^DgI:CB;4l]9$jFR=L+axi%oFSb?jmZqH8hHM(a<G<N^eOn1B97c=r$&-#_iveJU"H[MDpY[1;A+Ee-CcIPWfvb4Ck=ESRnmw%[X,nvM\^%o:&(j]+YVk9-Q2r\m7wYxU"&IPCd(,v8'a0\zb6jYjn[U2_d>k=</OH$>Be(BXi&65YWj9wbu1+kWMkuE[rqNaU";P,QdrR?ma88[7'eS5C,fV1Ga#h7VW(Mi0kher^$v8\R<3]Is5];R<d;Z:4d[6dU"f#-/HskN&RTnXjj%u?8TnN5Yr^sPqkN5,#4HiCf0hg7MHb;\_ut'm>;Jld*sKq6U")YNjBSo7^>eB<l\q:Y&v[N2Ql)C^*GHG-J$$$Rb,eR^E(m^9+_fVn.yCiIh%JNKU"H%N)<3G:8ns0iqQnaGEp;xW[n66,qSH#aONdF]H^;M:VNCltpWgUq>-mqfq_K[KU"bH,-P]O.Z-kZ&8GZ>Ui>z+%^'Y24-#&sFijqDpoNkjDc8Zh,WTHXVH;>%[IFP6aU"iZYF]u7*GVw<ru6:cC?7=HqmladjeBoE?amLxYmhKHVn1\#O+d+/H;M]r[3uuB*U"l=HQoa]KDDn.6KRWiLQRN<>D+VAYu(3&B6REtHLn7.iDfrWQ](dDySHq$_80$q^U"ffS\P&x-:eh;XGila[l=Ko=4pIIVTXuPj]=An5r+6a$#Z>VlnoQj/aSY2Uai?\BU"_*2-h^YQ,N5MmFWaH.NbjxB?*6l(eevo:BIzFM^s1WY^pTXU5:y'r(-;hyrDR[WU"_hJQph+xD7<Hrp=G-lAq4Oe#j3*MYl:-_d,]ADq\SlO+zlZohJj<9[h7a44-k'0U"_U;.%3aE^NQ%C+DSVs2xPaC]*M[Innf>hFvweUIcO[aE+NCMT'HO'?:kJ.0':^MU"_Q?E'_U(h#t'u9dT(qn&57):%A_%?$mA(;YTd,L7i^WUsB:]obn;W,6GyM\TPn.U"K7ot7uI4+gb-.Q.pX'\l6Uak)Eu$#x/%nVA9=[)8/6gnI&=tqU[<86gWqaLj&McU"li#&EC\>M]-rC65fJZ>A9n>UWH3xEtTo3gT#dM[L5QEu4H,PCCicdRMYwUi3nj)U"1s/NWm$*?hs_%>jqc6qb?iat9XrIYgBZwfkqj&:FhRL$kasbb('p./EX#1kGr.iU"E(qJ;>,WPQrj?Hn^T.h=Dh/eNmhv#0SU5=f;tkURY,_c9q^vTV.TVegVKpHgdbMU"W[X-]/d9&'rISXtHphbMC5i5+5YXVk;Zi,RI[5M=ZYQDrrN;kKFyJIMZqAA7ca:U"Jsk=8puetFoiCDLMZN_=I^*sZ+U+2(.d<=[P:K&L\wWo6I;quM(vr-uo_/moD3WU"88-9JW7Mu7\OS(fxFyXt?/ufZ#6*NjOr^0Fnx6R,f*tq#DifCBs#A?3q#N]<3fqU"JmVC)uU2TuHpt9E99kll97OT899.<W2P'wU9$cf.9j>q8._nu18[5'K>+<'y?<KU".Y%FUaZ=kuWHkL.StbRjHDks'8Z6m4i^r62QssT&dp[k.^Hou]dRk[\rE[N\P[.U"-HwHFa5w(o]K%7hHWSaL4tOdDaiY_%_7r:qFjxf,4uCte?6jn(5,c9RZxI7MSO:U"t+Hu-oF#$4d/?uIW>ox-lWA>7'=7+wXO)M0KIQQ8l$GEAhu(bM3qM<ay/[Bdv;SU"?7alBN/'Q8UDaU#ncx&Z]Ljb'kl76oihvnJ>fPou8va;n:UrUU+SkPPf8''skrtU"edisjt#L'xvg3S:i+xj0[lNo(vQC]B<$>Uu84grz*rI(.[+Au1.q.YXa3fnXJ-uU"WlT(MNur8OnweWAnaW-&Z,vQTec;5$:x]QPA4EuXkJL>+Seg>ZAX>(sNd/$bT\=U"_N5swS3.3fEw2gP>QxQ&e:4S$c,Q6t>66*vNE?Zv,f]o.qP6Yn]AXc;DN3X=8d2U"]d?U1#vk;47wP*#>kW=^l^G;s,+SK?nFXL-TG<uk$jBu1(gezye8X.WaYbo6m<oU"OtU2ZKdqj3k.?uV\tupKx%0Nu5e*x&wN&icx*8?$XG%xY\]-fBC]zfV'&*$GuEGU"M4P_Nb,M')]Y5jc4Nk.JZG6m<75%?d=G4wVs14&X/D-cdp(Hp?eD0C-.A9t#XMoU")-hbc8zG#\Oscjd1KwO$j*-r[t#qJ^5KItYq^&mv9w>+1QIt,&sa))8[/a$T%87U"k^:P%OlIxO/FDr]ZS^k.aND:p*]rwhBk\EKa;9Iw)Z,]S)KP5%33ykZ9v9p*WukU"uHHuU39mr?:&s'$m8pur:hEBNPFsG:H8Z#Fd>T=41>pmwkYm:Dj<<pQ1g*._dBlU"iLrvCl0t,Yik&Up%3H^2-0aSe[0eLj*WIgNG'Ba6l$^whj)8;-lrlNJNg;lcw?)U"G,sHhz'^truT:-ql7mZuSbfxswQwZT/)K$Xm8^C8a_]AT./PwNLRqrOPpzB^.k6U"M,DrCCr(93nrcVf9LxlTh\r_>#kgd'Wx&iYwfX<gi-2nPMx*0w3ogg%2n$&?^PuU"/FbT?T>1XAI#&HQMx1B<:&;x)VMfHNQ$tFbN\&lfPJE]/<%s'Q2,Hw'1(3>6k(JU"Uju?wVXbbxSouhG/9O#xgqoezFsRHn[kZ4JuCglw(NimJqxurfv4p:01=lu#KxsU"SE.9kJ%\aEh*UIZl(=niUCxwuVD$8Xpv4+se(e[ti'sI^i[P4Sm\m5l$TZ$BIV8U"JL9J.obNp\FTxSqCfh)y$6%wq/uMV.Kfkb(kn(TD3>FNqRWRS2g(ND_XYE%4%,)U"on>gsDF2siV.KeAqCwTxA_5rmFO7_Xf%^^WgiQGP/\V*X;s]<n/gIS<PHG,CPoPEND SUBSUB V3U"T[<R6BY=cjqlOhheY%EP^o:D=eUMe/YyPb8br2Z05SXArG%?Z,>vrv3^_Ek^-ifU"O%GEPPNMT&gIiwem>\u/ew\],5c'4H*sXG;g)7n]R1o8Qw\C_YB13xIcfArJ856U"]hk,u4xHeAneEn=^MjXF1d$,sqm,q,(rPbpmF<rT(3cz.._Mq^l:-q;h7wQAMs%U"bT$*3*3HN\n0WiP5Qc-.Op/cT8Z&wWaZu&CNj^g2]*qn3%PYV'NB>;]>k1sikt.U"g>n_Q6ZQTBDAwu#<$mo059gPUl._<k6$'6jHhec&;XCNwN?/o>4n0VW/3j*HNf:U"*qH.9:';V,Qc(W/tw#24QZufz7Q9v6;Itu*<ukwWkM*3L<V=w#)mB03FI9Lgi:JU"_w&)*s3lLV=w5j5xT[)TcwEDa\S,=p\P$)XWQ<V=w0*j(%R0X5tw$nDXalOvawcU"w6rfq1F&-+Gx2bVckxI*bBT3I640hLyN>zfw\bx%o,h7ew$,(Ukrt?lwP;LHx:fU"Fl&-9wk&;fO<x3;,kDxJncr#.lB81#yS=js?uEON(jWdFvZqF5bDQ&'-U-lAJs0U"(,VTVyvM*jlM/h3VBolA,KUZ9h8zY'Ig)58rla[XTsDWWy?z?4etz?\0usUM0uKU":4qhSUr-i?bjv,D]hIxnt&pbEGAGtPGEPQN?lh=0O2GDyiZ&=bi'deXZBaSCmpPU"#Hru5hRhgiMh3'%N<fX.ipl#Dyluc_rgb)BQ7qbE6xo6zu_NXXKiux66wN$tFA?U"(l80Xs14%_)MLutxwp/0ulrkA\?Z9EMwvr(k\?Z59Mwv/rk\?UZ9MwCvrk\d?Z9U"M/wvrkA\?Z9EMwvr(k\?Z59Mwv/rk\?UZ9MwCvrk\d?Z9M/wvrkA\?Z9EMwvr(kU"\?Z59Mwv/rk\?UZ9MwCvrk\d?Z9M/wvrkA\?Z9;CZmd%up()%9%%%I-%+-8EGG#U"+m/l'[%%,s%%%/%%%%lw%tzsi%SunhZfSZ9&ke9*8/D#\?e<mt)hvA'nT;;;k7-U";ctl,4BBpfEIW=Z:#1rAMTN8e4Hn*\SXH(7Cyh]Qr_Xlfq_.>v?yXIs)N/FqD9IU"A:\O-(ZlS1/]Ykr9ZistKbn2uvl>3IY/]Y:k+J4,E.^v-nrCBZVgEMo4dp#7yl:U"vhp7'LNtVKD#9A:\3sIy_8ycXxsiv/;DV.n)AD9Adt[s3LnujN$MJQ7'rMF5cM-U"YQrtqJZ'2^(D9[AZVSPKTFZB&[/]Rokh&QOt5J5'h4v\?yWk(/BN_;,-6_:/]CjU"NfLBb>>xUu%;*ljGr<#B',zBzknhPJ_,>Z,kqYwRdv#F->n\#q&D9AZFdSIFPK)U"+W2Qra6DPNLHa'WDrij,Wu]iSliK9t]mhXQr_dl,z2LrYQrUG$wB7r)ad]dd(suU"HsHn(v?yYjgx(xKrZr0arhDk0Nv?yXYcdxWcwsK7t6bd9dddd0ddNK1/]i=fbd.U"8jQv6vk6v6vk6v6vk6v6vk6v6vk6mnnknnn8cR6,suHsH$(v?yIWKN'Xj%v6vS6U"ex(-x2c/_]Ykaaddd8n5Y%b9vh7_1/]Yk&LbzB:znhNjGv6vk6v6vc$Hi:[v8HvU"Q$dftux%x%ux%x%ux%x%ux%x%Zx%x[uw,w,cwl\4upIXN?XNXbM^QrqU6o8zo80U"ah?chOl7Xkf0XG<NujSd:%)mpJ?-4G*%%%%%%%%%%%%%%%%%%%%%%%%%%[%%%q)U">N%u%p()9%%%%-R%g%E1GDr8*F47%7%,s%%%.%%%%yny%qjSuRnhf,(paINU34#U"He9B&a[JPs;F/'WDppAES;;sp)e]l5n>c+;$jH<o4\yGau7(4v5tauhiSn5;Ni<U"=NOGy-=jEu,o<-6OID\JTV>:=buJ4dAvMQ8O%Z&mSdpuLXmPuSnpS&zZ^vSMBXGU"8+T?h'm\$Km,GGLYjlMqX4M,2Y<&Z'$OnxOb6Dh]hf')G91SDTj^Og^7\c+\g^tU"qD0kEkau4J^qgRtCLltb8o3aWP;oo]BF$-j3uMIb]?Jo*F$3dD+_ne)um3,EsP,U"yk$dqELifU;ZuVD0F3p#k'M.ri,'?/7?_>rY&W.0Hfcgdm,Ma=lO7&^Hly4.cOwU":XdcVB*?KYcbujA22FxEt1q-lHc3V]jPG/qxXli&cn1BiY2&*]BfL&9cCoN)oh?U"/L9%eWy_(MBoV&FIuh;J_Uo;_$]F],C,v6[k9HDcro=+WYG\TJP^x2(pbF+KYJ9U"X>#vc^_Tzmb1UEc.%/uiQ7]ci;-o=E>.]R)^zJPi&$G9L->KMWc>BT&g.8Gi;ZAU">=m<L1*;>b[+N4#)<>u?Q<nQws#g]c-$uedR5IqNtcVA?0m+LXnt.6]1Q8OhQy:U"cCdA%K\;8p,gW\<RTH?5SO?XO^nUZOOq.p#**;2Z_J-J<0*Z8]QH<vV4_o_1po0U"1;B/N.&-f<M9T18gNjvk9n1tb*?MR2&UU=RD(yL5YXSJxj4[6XWM1T_Y2,TQe3PU"IRMF+:\j=bmB-,GA:sUkYe%$fh'reeWxGW=BJj)^h#Ba*tIi_^W1G8P(8YUMX6OU"FecKwi%BRD#7Is2)NjN*#By>?+<iUJ8vgRnZ&C;g=,Z5Wra%wF]CQ50VcR6_QDcU"_^%yS*'U6cVV,y+XH.=7a674K+v#9nY#$=vw#=uJj9::H]+8w5+.,v8;,/M0*y&U"bFkzJ\%Q,oieYP)cz?I.1E%Ored5&4h3hk-\-8,TmrAxFgM;1+3'9)V4w6$HmA(U"A;,vuZ/AW),TjB+ybbrqF8XIL><7$MqeC91W1Ebi>X+6OR3^#3%KVrLCa4vfO\#U"sEd+E?W)Ovg5]DWaxy2:q*iM^ukA3&V,e^Xrk[b6m\w+kHExScx,9L_bXA%ekjJU"(vGiJbmKNgI'KgLL#_giCweX4O3K^R7Dz7:oQ-NM^_<BJ%\KVq,lnzX.8uLY_5vU"^i.PYT/2TOaX*.y3TI#]KCCvbp(>P1B,Cz1v;3?3k['j8WMBum&o7([V+EGqafTU"b5KO&QUBy6nbo-a5Z5C._ST2Tp+Piq?w?D\UwVB1[6&nMna*4D*r7+XK<=/H$aUU"I(q^4d.?T0\?I.SZFCvpXH]+>.W.hQ\*B#r>ecDEdkuhKq]R/EeLk0(,Qq>1uYLU"Q&gu&d+x\q^b;q=5f4BODYw6/urRt1o'$I?7o:uFu;m?#N/8#d%=EBLZP[GL#ZtU"bixFe/UzXOUyvFR84vQRp4V^?ZhLmvs'I.x=vF4AhE:CCuquH<I2:E:u&L:^fmDU"/VUAE,<U_furUdE\Ffa4nu4P<XAqEz/Ti^bNQgqB,lc+wxe.&[fS>wBosr;=QBbU"W+pZ8qdTSX-4JKloTN3>x\j>Z7)xcu[E0xMZ7\\qn1J26b$Xd8W;o7;EZN[W:,wU"6g2mxT9xlr,t>+Hxr#w,f$xRS>u_5Dxf;%W6'weQD3;$alj<E/UQ)T[&5E'h6KOU"9EjujC'vM.B/TrV55+WD5-/ZU)T[G&w)Mt*xSw-2L<ZVR#<=b4=P4HO8;[g#EjjU"fCCnda-?24Tnt=>rE/U)NT[&E]ZLfjDi,:E&rLyGYtVtf#7QCEoLy*e<EN,i70<U"_T,:8Ip>kiZ,$pnL$rZ4pH$,4&3Ne6ucb;uEDp=]_NWR##^*T-S8V?Kjbp-*Vq[U".;m[6k>nWlq->sO$e6>KubbJ*<=H#uK2x?XAB)*S1//:UTF]Ct>w>wf2?OBaJx=U"vl0b^*kKA.nE%N0F<UFuSDLpQWiY[nU6jHBRd;vt#O>8zoY>uMM%fJA<j;*'2b$U")#K5&4>TCr:f<<u[w=uB[kX[L;URlqJN9AYmSnV&C$[u5'vE(:W0dN=.dleN.)CU"mM5]jl^N=nli;=NNcY4n*FW/q7#d?'VHLjrZiX?^o*=W.h'4pDt\Xi^X^\#(f5TU"<u==x#%UefwTcp>:,us;t$pM4Y;6(#,dNe_N)4qG4dk2HseZqLbZ8>st>o>V0wJU"/R'$Y2221aV%%ZEo.FNJ.'/aiHMm>l1<=VtYrsu1T%[$Te[dgGJPD89TT,;nv\wU"7$Tq^eV5d'LKm\Y#YVVcw52g+Xdh%UVisw2gu'21dULAv:>DE6^?d4w0fj#DE06U"VR$qNI=[r+i,#3_%txnK^(8lVW5L6HoLA5-Hhdu\<Tb_SNxw-Z.dScu+fws%wvBU"0o6K+TI'GOZ$w$?8/=7GTw*(zt#&rmIj^^_nNdxsld$.s9P&X&0Z.oXtMZw$u\HU"8h?xdsk:-fx*uh#AN<,5w*0nNG/lZH^iW42[P?XC+P^VM.xPQo1DH>xzJc^FDTeU"Nd^/E)>-bW-%?+ksXIgVY.qaBu>r66l^>Fcwh6w/fnNLor<gi&*3bBGMck8rnVlU"vXDoSrBi5%&Tq;o+#&/tZ#D7&:fEC(?[<2c?5NiB6\ML>qk^ql=u\P[pDX)?G3bU"'IuivabnkAOsx^eNDZTpJs&up:6w#P0^Ik_vK#Z5hwKsEx_:ujbdieRS\7S)?l<U"k[ZQN9#,qBPUWXP?XZpZHo,dNZ?WkDYTxY<D)M,h(B.tLZ6trZ?e8G'>O'q(hJHU"6Q)<gGSrt>55aXe[XPJcs(Y>Gn:rhNmgbLx'/4b<=;Q6_a4Z\fKjAN*0L,d'X;kU"ahoVun(_tg,*CNs7Snxig1x-Dg_x6GJPQn?mXX$lkH]MAbJ=euL;-0fXc=ZYPnPU"_=2fjDP7wVGboT:ma\j-Ddd0MllIr3ut(vvD^7I&rbCLlb[4ncko^7*sh)^&M8NU"^?=p;3GqZZHtb>f8OHXLuOj:c9xAn*>7q8JU)Pu_fpBn>B\:qlvHhaAr,;FL0h'U"Pt9AV4,[&2^d^S^qe6uliv^^vR,LC)gA(0v;KFk>o8*lnHM\[^u\X*u?nrx_1p/U"T0Nj*LNox<8n?enDT3iJo'\0NUXEs\Vf<7kdt?Yp:duZ0ahj]hfqYT#f.^;,%tNU"[V_CY,').07BM7Las$s?b_l^CU:N+t^X+La#Oh$_bN<8En=4Y%Dw%*:c&vAo-pcU"X08r7sbEX'T=.80:r8b8xn3o8#$h0%+Zw1,MR8Moi's#P3hFmIu62,n<rS*w2WxU"A7CbtDlQsTmYt$iR(_=?uga$kFCuY#Y<batxA#u<bK4$FO,Mq.zGqaP]QNdBd=2U"_;)s5PJO15=dhu*?s[,]:(Kjh>L$(CioBZ3jD]Z8'h1f-<48vAnDf4p/^YOHceOU"HKV&,j:sOxC?k^o.oB$4OM81dXa_:e<G\.z2ec<(uxq-QXT*+A]1$/H]%t:-$AEU"X6+k]\?+ht-lw&Q0NXF6k4N5banAjj,g)=TQa3w5M=8n?/[pS]eTaDBwJXwQVq,U"al8xES6Kq7^roKq*C'$l5PyDp.ka8D?b>Vi4/*8VLZSxN3UQ^w_&O*yUT7)8?fqU"r%uZ;4vspLyX]k\81EoJZm0L)WV.]Z<Caaerxxr,TKt6upTvbRZosut>7RSLYr&U"u$(WMg>IBr\n6$rXjq&e<EB]tr<Nhkf>LcHK2IM7]NDLu=;PjxNZ6m3G.vU(im,U"SXVLK>Xoi3,ibHixTo(]pHQ>T_:W23x<>p.)QQ_GVn$BQfeYGjZvocH/v-wNh<FU"]bt7gT6.EoO0PxVZ-uCQbJq>lH]TpsdU*1lciYNY&,f4EdfUPlN>Z3HZ'f>uTx%U"dN0kqBpRut8?4wI7mpObt?'uDym5d2\'h6dSH4$VHo)uust2c8uOWsM#dzb^,ocU"hx,G=8J.Bv79[f7KN_9-gt3Nqdw*O>''IK?t-bad1E02Gon^/Nk7NYJd87ciXZsU"l\'CGll\62.iC*3]^t*:Gzi0zkbYxJsxu34ow?i4J,7NINhGMMlu)fdilT)n9QpU"[4f7DM3d>y+nBh>aCsru]0<\.Ve5FSABC*6TZqN-nh6l\Vq^)nT(lo;olc)jp]#U"i<Rpcovjns4ge$ihP.kH>kV2WqyvrQp.#mc7wkmQ^HCLoxqj>jQ594sFxA0ix*DU"#t88x<$uN%IBnSkgja4MoBjS%vNxMsKY<uMeG:.$:A#K=No7bpP/tdDJYJdxtbzU"kT8HbtPKE3cTnlRq\sPlW'[YWuDl<847%tt9e+VnTX$.fBEhLEd=u3r1uZ;1N$DU"/0T&)_(<Sv_0>tR<qPwulxW,xk4\FalXa\8d?jJ<h=+Kqt7B[#:\M9'/m%fRuK2U"t4TdL;M-*VEt9EJuTu4w]U]xmcsnZ/Y?5>[V):+nx9b:7RxE)e:6l9Ff8FEIJvlU"H_4vuH/v_DZNvnuxO8%5.#9Sjcu/xlfq#,>n6399*h+.-+ldQ6xUx03[^j$k5sTU"l[d51g'kd<i=4fu>E?nGgZM0w4=%E?tEff?d8Vb3%un(CW9xZv0M&czMg$r.orsU"2q(5q,M=U^M\vo5M25lJbZKL<UG:a;6Qvo.A4,\MnjJ>v6wJ7TosvQj6Nub>u3uU"r+QZT6xf\3Qu6M27R2(Qk:29FG(P$NP-QMXQ>bZ9jN^c0KwU.K-jSGR-hplBW*_U">lUpX]BavT#8S$dfZh4Xs8HF8HNEI(p&IYT-nH;A>JR>hs#$<z1FUF%Y2mm;aTlU"2^-YT.koz*7O9rM2P:8'S42IP8,owPmL1=3F=TeWpWSz/9aX5ZBJ7:a%5c%4;r&U"\eCG.I8hVLMgTvK?i3rDUo5K&T>+42e$^0->_OF)4sgJG-.fj=zb)6(mLgzV#HtU"AjNDC(<uY=[w%:)>5rebc(6hDpH=dWbwM)\mMs1rV_uK9gp_74r07#kfv[:v]d3U";:07Q[)ljmQ.9n(kU:9*B?DdCIHL0ueCKZ6X?nM*l3d_jpL,Ig_ePwNFo[1V-=%U"5ZFso=h;lon3[5e*i=u;GL6x?;w/CWn++tIs>Hvav_-FQG]Sucldf('2M%oagKoU"+)h=A;;9lpyWV_rA_Z;;\J2mg2V;B60q(EDep9ao37H5R6WMWaF1e78F22BuDqJU"*WKT1sI$=Z#\]su-+E.Qb,mn3qNg$Vy:PN)sGA[(1'Z5eUi2x>DE?tHYABSVN*JU"9d:Ci=k4<R[xl[zf(I0g1eTP%h+Wpz6'_*MC=oF,,;:&3K:Dm[754^*&u+^yj-=U"S>TER/2Vak2DIBBEAd_v966QvWhO$]U>Fra7xY(P61#IFJR9$s^ycV^hT?7P1/xU"lv[Do[3$x-ql>:Hi+AWW>T[*jF0IUNQFOjG,3V^r'h)c=XMB1=v$;bYFear0'2,U"qJ&/(>t/7E8rn\mW'2jV(HWW8k=o[Bqfj\oW7L:\I,A9Y_d')F]O*JZj+j:XvrJU"v_/Pae=q,*k\47zkDRL/s3EKP0Wj\,oGwB)Q2+](W46([IdAZ:*Is/[e/++]l/gU"['dCfX:M8^\I\Rjd'_/.*1h+:SG7+XnRl:MiSeWw%hOFvpK8,KjT(%5wzVIg<(nU"NJP]Y;3d]gH6CsjI3:I:u=VOJmK(QpA(uYinguvUB3.1R[#-(:_(ZzhPP5Y1#WrU",eLe/3S:9(0&+B2>JUofcc]FJ2'l:9cu%iGgkX0FD+9.FR*Lg(ODt]Vxwg>=/cCU"aWG;eu7r6RzCK,%pgjxe<ynYT^y#E/.Z#)J5J0)+EGMMVyr\Xnt-#D'&#92KsT/U"XEk],4;aRrmqaSW.+SS&u;1EK4/5r92jTKiZ*I$0-6_/Z/i6ruU'CunK#kO9$=AU"ir'0Iv'R4NP8q+hB&eu:(.j5-20I*;1AK=:b<I:MH-=OTFQqM)2PYaxfk*9owE=U"=,f2wuM1B,.;Pde&XKrY&yG3&Fp'EGLougqJSW-d*q(7,/dnQ5)oPfFG7OO6YUUU"'9t[<gWuqBVw,wv4u%p()9%%%%-#%FlFOG=/b&B*)%7%,s%%%0%%%%htr%xhws%U"SunhEfk2='TU1k2DokN.lXE9WVy;OUfZ\u,e/K:FnTVX9#&TY9OdsgakK#:4db&U"oWbF;]o)A#2$4dW8se2xcd,Cl#IodDFXNv9tmxPv1;,>Pku,dsP>+=Kp<&/XoddU"K47NbFhN9uWxc$&ftvE9bXf/Es)HWw;Kvn^FnA8.xuZ]sZD</FDpLT$Ks\sOqkFU"EwLr.psZm[rqZrFWp;irWm2jF?PH+qYlNEBpoRonW9)kyJ9L#Nr1#Y-_XGv_Y>FU"pbdqn^Y8<+D&W#V,h+x&zPr6Gvatn]S3&?wodWqsnJ=XXg?RhbDk6mtf96#MBw[U"mT;U2dMA*PTrjS^0],n(QB7o]x6Uw(1Bwm08c:-R]]D.rZk=K/Z<;TNrzlbjusUU"XkVB.<nk9K#SZd<kc=K\uXcEpnS8s=ne4s1bNTS^q)o8sgib(N&6K#Zdr<k]u,TU"qXnQHrFzHvXU?qDc8[1^XtL>N&K0:8mn(SM48VuX<hZlpiJ,HmixzQm;SVbn;tZU"bvixqjNucvFXu9MI/dTn>a8ix9qNu9AM/dTGn;txVNuwhrs6qvcgtdojTiJqFbuU"CMcHs08tVX<hZZpiJ0k<M4r8VX<lhB.nktiJqsbnHMad<tZbvixqFNu9MHCw>MIU"/dTnT;tB.9qNu9&M/dJkNZviOxcnx;N5xlovXnH<iJqb0uCM4r8VX<]hB?u^CM4U"8>VXDSk/vOXu<hZp<iJqbWums6WcnZv9ix[4AM/dT;nAwJlwYviaxqNuGcn(MJIU"gM)XH?XPlumEBsa3#i(GMXMrB^lill#A[Pz,M^kNfM]rl7a>0rKM?rJEX8,Cr#uU"T8(dn%D[bBi1Bikq&)xulX<.7NRxl>DxN3hu8#jtj7C]$*pfcNquMYBYhnjfj2uU"mvVZ\XV$*zcwjquMc6ontD31AYjWQ[XfN^+he^X5$iE\;QXJ<,MnY.VYSss<rPlU")xRXu<hZpWiJcn?ZpMdaxxqvsXnHM4d,Mu9xqvX?nHMdkBwtwkhs6cMnxNUbn;tU"ZbvixqaN$4qFNu9Mjox6sXdLxHl\lj-Kw>M>X_8*NtPX<hZZpiJ9qbuCSM48VuXU"<hBb.qbu^CM48pLNZpuit,lqJ8w+hM;%xsA*xNsO=vHn4UQsb8enFu,cLT63fNzU"&:D:d$pTwhtn\m83cJ1MqJFAP*XO2q$o>BL$_>e,i-Ma'RD6t.)()dnf\T1xkzVU"*#=)HX(h)6dq:K:vIZsxDk]7S-N3x9l8ljpuO%th/[%*D6jWAtR09$YK<go>#seU".bkSK7uebZ0xw&qzBD7LueIujUG<f%Tup(%)9%%#%-%C^tFGC4)e<(%-%%,'s%%U"*%%%%j%SunhEfjV=BTm9U;V?*\[59h%(Q%GegDO/<*?lP&^NL,rgUySfFyd+#*>U"9&:\u45qR%SEgt)QA7*p5mor[_+-kZV\_'x7py%GT[Dow\hFauwu8:Ptwyj%uYqU"-7(e<98BM<#j6)=nb6_kcsfXXsu9X'Z7jv'sS<ksD66'j-3nH*-/uNHRUQ<nS,.U"mth=LBNupXDlk+2%7+Gi_1f(NP/opi]e:^YREn.BI$,g:qh\zDLIV5^ntPc86IDU"Wn4ufHVPe=sw:(go/V77GrrWY\sf$r8vU&:)a6,*VN,((oorDfrpVSnnao.oX.rU"4*3AlE$DbTO;6,sMhAM)rnrLORb&8t]ih9B.Uv]a2DH(5C0aH,V>v(ol$(2dg/;U"#HcPFC.eTVX(su)<X,*Ofk*Ntr9%U;N3+ib#aH[:<U8pw=-WThioiU*2d*Gwl3VU"21_i-Rbux<q&?wMMC^H40L&Pw9598&Yf)VnU7L[^RrkEBZDX=+V7NNnYylPvg]NU"R:fpEJ)^0[ruSUN(R#Wk,eC%%'xYM$g;ah+,s]3D1gQhNRLU*[LG877qq(O807[U"if5.3/?HckhI>OL[NA5YKZ2TR_T&NCohN?$X.q*U8T<cdg<X5WYVs0P>9bvp_OGU"efVMLp\hcm)BrPm0A$;I_Az[/Kp./Hq0#&kqUKnwN-q.*wZ\F7L6,3z'LMJ_71=U"8NfDoI4/g]O+:n=-E+oPED0\]u$uc>K^uFG[%E,h\Ju:k7>BK>*PRdf53e3hP*nU"5f9''3AB.vmm%4]5#e7,dQP/w,Cw',jaq4(i21PVWs1WTRm+vcEk6./UcxG,/G*U"s'eeg%$P,3K3Z9tXKTpKAmT8G_5[#j*:%>1Q&ZM*Dz73gw]Y]$f>_kbcGM,$&rAU"[2byo=*0ZW1oZhM]oRGA>(Qbjpl9gB;-]%O(*%g2N6F0BJjQBM[]ncSCpYE:(%$U"dUe65,IP?NH,n8m1jopdqI:;Nb=oXO;rq[B#J2Z5N>dH5T&NjA:k5jruXjtrbBfU",>c54H$2#-.IN:4*pVH4Jx/l9brqrbf4EGB6*E(kncGkx#eGp&uj03Tc*'o$W61U"?-tVs,,O^en&*5l6Kou^qrktmGUS_Zugf9oL<]NG0\Z:sg7-Jn5<t:\R5\n$l6SU"nc/(%NM/9?\d+:04%tlmP$HE/48\.(%9BrD:E,L;h=8hTpMuF<TVC&LnnFe\tNRU"ok2sfh4A0M'c>>'6'nDPp8r;-xnMBtxJFA)gBnEEr2;>06'bfhqaxweU\Z9iC.iU"sEm0\vNud;_FhQH?Vd?uu5Xw_cp>;bLNwK\AqyODR/9Z2H/l'b:W2zudsII_hZjU"__UlMj>^,e9>F7k_uJu[hdP<(XO<betd]Oe^j]*=nd?n\Al0NqHL<FS&'b3bCdmU"R%ru)AnW<LXII83YP'vCjw2gFhy:Z8<bcll:'vL_2NENI?hK6DffO6^>1J$TUnCU"s3tOZNHWOLb&ZC&\a:u=.4:7'ORSpJIw/jSbJY.SuXo5vCc;k:8aNs8TutTUVWHU"/uR\E98W<U<>\^WDFae=eO/Ufs]'0r0JsQHXK)_Ye9=y=tu*$uBXIxJqAYn-](yU"zF.h2Faw.plm]rs\H#w]OD.+nooaX.Dm.y.?k5o*'2%X8FjwEljkzDfu#^Gu&mTU"bGms0O00KuRbd:-smr&t>DSV.Vuh9cRdYrGEX95:XY*(SD8VkJ1]uHr3(N;0XC*U"#g6]zsoOmYGlk:LdGUx0W9JsiKnt9GoFdcx*>TCwhe)/2qBe30'nZy(VCv8C<6uU"Q26vni)93v:9<5??pG/$$%p$'[P<q*(DrBoHw(mo8*KE0-'MM-oD9dKwIeM)f(<U"qB[5SZ$h-s*pr,jDUjqONjFFGH#V+$Xx$^HAq<Ub0Lf39uJUncCKw7bC0htmxw9U"s'Zv^XExh&ualYwp^2h&4ug6B&7pnYm4I'd(W$uN=b2$%?bAsQ<AnWtLD7B_Q?cU"enRiMQ^gTFgQ,c;T'tBvN[&D8CEM&ZjZV'p*u>\BB(Y5-w[kr^W8Sq)Jh*8be,'U"jCi65=^*wR:gyYRYNVrbZ6TOB1<^d[+LSl]g8NnMSfAO&kvGXknd++fZh9cvnn4U"-XBv0,Ef9,&8bIJ$)oq^b(sSTGwJjIu=Tn9Lvu)7hZ0G2_K)F,.qm7x8.+mq(%mU"%%9xeP2p9t$588g#Lm$sfYJs%[D#RuI4110i[m'=lrtuXD[HJ(>+1E0i)PK&MT<U"-BYn*+0tpa0&)':]gsoH_O%7GWZXJf&s\YF?-\kj,.cRNa?uju'8PLrHbBM_QjFU"ulYgtQ6mmfEuvHDw[d+c,)O_?SdH2:qV%%C02R,-Nba9q$:DA>_[0^-NLsJJ6NKU"PK^H'Wx]>J26N0XEx00Ko5dR7DHu(214Kyda.Y*u+BdtKReX?;DwnM?6Euvt/.[U"ddoa$wu^ev4FNp3NdRbYXb0vz*]m*sm0nPdqtl(uHi<pFuF5OxWd$UP$>WX54MHU"Zh9N8\eedk]8N])HD&h<X8$-Pmk?E%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%U"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%,Ew'u%p()9%%U"%%-L%_(H:GJdO%%D.%7%,s%%%0%%%%jsj%rnjx%SunhWfkH=BTm7Vej7P6:/Wr+U"Dc1&M^&--_C.QAC'p81+&_DkLb0(_c+Gaac6b-O2MVMOP0H^WVB.mU*=zVuHW+jU"C/eP*%v<t1By216_4Q8cy=cJlxvRxNn>=*9xH\#APY][D<n#Jn'Pe<3S2W5JxdnU">MYht+XF<q\+GDC$F'j*3\8*5)wc6R]T$N'27=pZV?_9uahDlk+r%74Gi=c$8b)U"oXnAR*N+2RKJDfn6#+4?)0v]P[GJ%Truu6JLlgf1sma8AgT]D5v7)_m:P(?f(gWU";^u66_MJb_ebc?w4XPt*jk3;f3Lq?uBluitl_874Du6uAk]:-s%pD7jSGOPNmXDU"=3NhPlrt?se?wma22HVMGAaH,d$s.fq^-h[kl,<]HrCPNGV<(BCIT3NM>).eO9eU"^yq((ub;At$nf7w+9ouorJ,IxI3K#hC2ov7c5ELx=s[KgtMGNt:kT8[V2=zRme\U"o9T>G>HJ;Epvin3q2b.?lOl\RV<S.un4csonNGXPMx6CbG-0U,hqrXJ-,4[A]Q&U"kFyv\.Z&uRUmACbj-)Xda8wlt/61DEx,b9\w1n*_MhXqs0tTDlBeSc'TlcNjjbTU"$;c?5-wNq4u9'98B>s%9sX/S,Gkquhc46d&t-dU%I,F,rmbAfmfQFA.f/ZK%EP+U"'.n9p7%,?dO3YSqEaVe9$5Vdw6)3z'LMJ_32i7NvAs+4/g]O+:+8^l%G^JF>^BpU"_uifsB=Fj;&C,h\Ju:k7>BSTS(m0vcY3Qeh$*8XpYsO'AB.#vm%,fk]E-((e:UhU"Nlwd?P#B$$_Y*36nfG<.G>[XECnJOErs_F0Z:_/J'/(,YFbk$j&hNl'l\f_*wYBU"\'TIN-3G/3.Mo],-nD5k#P#5=Nm\^b\0U:HZZCQIr?C'Y[K5P7GSuHaWuP=GiLWU"H<-*&K=&k>M-%s:_XbS=F3Wq4]Jj;bag.J;\/DTv(mP$0:j\RTDkfnWfb7s78;[END SUBSUB V4U"S>wb:V<P(gcu_kVZ)8C6Ucc81ef95jbruJVZuBoRs1C+$0B+S)ta8#Oitg=md9=U"#spMMs^L^z+>YP6Jvn^mc*9>^9YQwGjAFtYoug<nE8HfMBk^(Cz9J6T<.N-1cFhU"F>wO5(m/,u/8iuW_\\p%^n]3rc:td[\5dnY$6Sn^?'%8CP9?\=d.dDU%Ib>3Ah<U"D-K8+%,OddO>CVZF?EE<dXolmM/Nf._sIIqD]q_#sbZ'sXZ8AVI>,784I/ILSrwU"]+xQ#,;uM5n5hE24fHi^^(8[4/qp\xo<s+#WR'1PN(;QLF=hlkA.B.+^S(a'0N#U"V>$cj6mB/tGno<:Dc&*+=S0TJ(##/qu0]'kD&aej68(nceLGDubpu71jI=W<n.OU"w7PKra9tLl+t[h3y7oRqu>?,REXtNd8gkytm&X'L>1&jo%rNuIFh&Zc7=cX+eXJU"M_x+pTfN.l>X1:KrHPZ^jld4gdaFdNX^Ed<DA6C3kfu_nLW9irc6d7omP\O\#pMU"8'S,.Q<deI8,7MR[EbUT<9wiWQq2DW.n.Cv-agLggpdNgrKT=PZbCJTWf?DfhfMU"TP%V<<m#f)cNg3a2N#.8e)'^xzcjH#gINlLqrkgMMa8[wzJUO>gs9O\_H$j3#^vU"\#%dsSaeJ6D9f8wq9\Fe60R=xKLgsgkljzD5fuHG(u&TbaTn0O<P(w[*b%)wTs;U"K[:Tf(lTwqneeD?f$k.9:XJe*=C.8VJ]jlw1V8Pd+i0^(B6c1%oOumY,k(:LGU?U"&09B>LFsL=Zu=dZcxJVICwe)M/HEe?SRs?ny&SbLTJIqTQr\v7L7alm*xi_Cp-'U"lb.*b<s78?X6LL&W+=,d7]aj&lAQ\TNh,oDdFKwIMp)f(qHl[5ZL$>vQ>VuR4TgU"rucuq486]$=cVqzJ^Bfq\nHnj3[k)fALNmpprKT4BSn8a'Ot_.d\l/n>/+g)=CXU"n_>InWWj5DIN.kXo=L^:r28.Td]$O*nkcDi5vEvF'-^BftDnsOb9FlpJ5FCfq?*U"Y)=d>_OS\C=>c6'K_Ap%O2BGV%E*k6YOstuNOisJ^,^)i:inQd\F5Zn>bev/=rbU"B$to>=&HSr7%S5S7DltHqtjLNb4LDHc5M.J8E<N^<%dvorgtf;-G)(u71sNkZWTU">KHpNDTR_t>qii3NjxE_;EsL4NKW%8AK$o/i>is&j';D%%F%id/IQD/O#8VE?C1U"N[Mluq0m7*fY71]5L5k7LFs,HK'(.79k't6s?ZM>0DVet'd8kncvqs07f#KtFP9U"dy0S8]/e885>\p%\]=Hir6Fh6fP*+t+pLVR;P](#>8Y(L<IK_%\M0Ajp8Nc^:jfU"hRuu.S(5=9vxu9^daW93h(PVHIZs6k#<FDHTE&PQtC-Nx$'GktHBTM_QpEF.=YaU"agEib6lL:+XsQ'nN4<Y#\K1NtV88f5^%TTi:gMJ.j-NbDNvonS('4z8.msI2Ns>U")/NBNf9IiH;Ue)tw9xowyuqE(YH(6Vb/B(#=fQ0Gm^q^V$iHC1q#$$>/YNlrOB8U"6,_ok\K(*;57)H+bEN)KK:)HOntXCd)&\H/i-NaZ:4op\>_8fw;Gm6;w7*i%AVuU"tDuBo[RUB1B0,KNfn%\r5H9n))?;$hD/LF>rZmZ('htKeOX?kw_n'4(M]p1PliPU"jxZmbDx<kF't>SjM<U?^i6m^dIb9,YX<u&frr1=%r1<u(uzuo3FpE>'$UBFQ-N;U"%NN;l'LJbobmF<oq0ZHufhMpj<KhvcD*_qc\,)qTt$w'OErJ%\yZ_<Pn>./KplvU"N_pIC.iG1OFJnXO6F#/vbUi/l6eN,=Mm7];gu0$hMu'X78^6nEMkJZfxf[dE6fwU"?P6ifjk8ayP/b6,5N9C)D&*kE8?oF0$-PI/Q6&%%%%%%%%%%%%%%%%%%%%%%%%%U"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%,WxU"%u%p()9%%%%-R%b0FOGZ#*(n'9%7%,s%%%/%%%%hwj%fyjS[unhfh,*aUJo34#4U"N7'iD>OT'$I,K7=z0codl'Rf_m8rTYl=:h<ECt.[,F.69udpDl$UNV?UWT7k<G4U"s:B2CJ%JtDp>XGLflhrSAZ$JJcsx]Lb1U<K1Af<cm4oK\sVsrnjle$Zjd5cutV7U"V<H)KB^ZTk(r;qfAGQ=<q)43u;I-CB#VV,Od'B7.S2e6#]$J'LN.rnu,Z]$O[gtU"=DWt,$X^tL.l$CY^oZbVh[j89N(39W8CY[SSCbpZ6t[PD5N_U9gkd]DH#;4MLa+U"sN3aE$S[IL%KL<KvzEJj13aOqngD))L1#9mPMn7lY/%&HCyH6WVwm.,rg^F/a+7U"aKD^kChgmnm=5MkImGAZ9\R[sKh:0^=r[9qQ.C:#:1,w8xUv.#%v_%#O1gU7q,*U"2+N?s-=yJ'I0P8s8EkovFMdM#HTKCK-RK\c?VsjidumM9I[v<biVqE3ICdusiCOU"KV=-Y1(6Ihg.QEphT/_1oTmJ;&d*+pi.jIUs[tLwsF<Z7]Est09HJ4:..Wr9(SOU"+M's\C>%BxQSp]o>gwJ4buP[skK/+?Jc72+/6\nl3XTmA/?i.%[,rxs4u-#=/+<U"dBV/GP61lH%Ji-[jJJx4+cFUx>)pu/MBe+\=W9\6^.]KG8vg*_E^ap1=V*%':&^U"Tq.;9T98MNe^6y0+bull)3d0eqHKDH;6Od_o#.x>3WqK#a68g8cPE94-3+W&'V-U"c6daprjo9d(3A/GL'FoJ-:hMqE:yve^ukFdAiNU1sGGED1%>W++3uKtI&8*=wIvU"kt\Yz,ERN\38>V%p9lSY:gWI^Qkb\pQg&(aTV3OYl1tG*s#G<+OV/#DQv5;(yuvU"&Sp)h1)4fOGymqVR..GWm,0+=WMDu33iXeFn2iIBXNEk3d[eSA:Y$Z<>Mm3%-'LU"GNd4vyC.'Eu07C-uW*Hy131(Wh/ppa2F2,Iwi)b0<ABI[Gv()%#*,BEog.UhU.kU"M9\'OP;Nd;kcOf8KP(OaWryE76L\6/M-xzK:Fg6Wis%Y=f^_r\dm:atq[<=X%:dU"3sq9d9'?'=vLMy]_h_2yDCI*m]-sYhoDz-E9LkAQnWK.v\hePvi[q2Qb8cLK3EcU"d-XgMJg\:Vl[SSg)&<%:7:xFa^ygPRm,l>^EXGMCSs1D,CBa+\CVy2kd-WU0ou7U"\[s[Y#<j:YK;)gkUjyk,DQQH^k]%Ajmy5Ua%(0V?PO]Du4ZuW1)qK9+f9B%R,U/U".dbvZEK)OOu>YcqboI-504HCUTUs2p?%Oz__C#SPoDZg.J4oK<GF05RZ5]e+hRVU"/$Wp<p-N#g(My5fE2CfOi#Mh'v.lWib[FV,cf_0a*?or_==j^Al2d,=&12.],qKU"u\+yB?fFRy'G:=g[LC==y<fjOD\qurwJv?s(d#6Xf:q:_#rLn%/j2Pwfb8kdagTU"(dvQP0gaXv\R>U0>kjpd/H3cX&$?jxdnwl5Z[sk<b=Jq,yX]t^dhj8URWOanN'uU"^3O':ZsXnN8E$U%ekA'H<d>-^=YYP3n=c5.qT9)ugaMLPU#(%l=Db+(i<<?WufcU"'QHYQd#?bgiC'vV(YBrdwDc_u;ua[$BZ<P/4A'8Qk>PjvHDjt6^XtY#qp,Ju[,?U"71>XQuW6NHe1u*5rFMu3=nE?ov2VSFBr>MUb#4ZBix\lm.e*#Mm\.bbZtBvsZTBU"sX*xdXoTBY$as9t]qV\x>e9iE$ZBX**&jBbQ=+rtBNvlP.Lw>f\Qx:h5c3_mx8zU"9KPGQ4B<j_o&-dP4=/Ub4b^;>=pc\M3c9_;a*BX\XB+Qx;(Rf95Zt$fL2_ak*eiU"hN*<'crV:U5<evZcOBI-NraX.Tn;SCA0.\hHl0s/+]:r<G#iqi0odP4iO3jvTHPU"gB,bA,/80UR1m6%jGcs\cq.n]aN^'p4??v$0SY-R+5ke)u2tDjC/F*)V5HdWc/YU"jwKQY#VU)c5k4ikjk&v0$k*yO0?DBY:jCucn(+\Z32.GV4ZBz4+\=R)I6=I?x;qU"Z>:u??;[JY7ux6TLsKagLX#Q[dFrq*]P*QyN>l6QRhzHF25yb._V%]p.+U9W6l,U"VN2d0^.bS>YANF-22ll&w_sK2$Kq9wq=9P[r>iY7*>K3i&CdpDlN6qb8l\H'9THU"CrkU+:(P6L99[UlF2xYMKv=Em5qL*H]2>[uOY:>REXAqN5n$Nb\)#4_+*mL>g[EU"hfuwAqjWG2bUZXPZ6PUH8EW\+x9\uGNH[kQ]qo-qx#SydT<ojd2_Guo(z1T+bqFU"Lrn=1GghR;N5FMPmwB'-i6.0kXwji#nQD;Wqen>pYJUhD;Ns:[b6huE][c7/:VvU"znIqj4EGeWAG2v*d2?;'q6F2*pgiXu+fbTbo=OvB7rQ38psw9=F<FX^T-SipwE*U":GwW*K>'nN-RcY)C\nSvdkt9*PAw]xJ:&YV$_%1b>e%/AN>XWP>F],1%dya0xBqU":dE$[bviW_>pW>vWUy3(l<#FoB$hueWGpbU1Qpz%pa9<N#CQHQsw5Hh6jTI3YnZU"$IslRBTtIXgWWv2GLJ3P'9f1kyh3f1%$W]EqDr2OV#]d'5Sb_&c1?glaD,H(NwlU"xKexk%U#=u#cg>0(BMbq?&\0mrPUq4)dv8BqD<bsXbHikh=<u<bUe+WsBV[T398U"Mts7=(YFC6x#dL9yc->t3PLvz=<_[qRIZEun97b7LbB8Tin*[;d>SuNe/KQ3xfuU"pH6u]=Q9cwTJmT01%qR(0t+bNaIHdcFf1(iuN&T,;\M7$Cc;fwpxeh:Q>.S+ttxU"oOV0'ad5R$Z_?d.Mx2Mli3LBxbtOV0)u;sPBw?p9XPXb)^V=\0Owdgjn:SGs&X?U"nJ>DE&^ZdhNNK24M:gBB*ElYEn'6*1t=6*9J9&;F0\i_NGfJ^.[o>_HrPnz-5'uU"?-_\a<^qwq&\judk-bv=*h#-$/qj0_,NUfRJxu.<K&Wq9v4rXkkG5DoXguX3m.%U"+GgLTB-Ff>%Z6'XWNqQTfpb(gVuD*t3Ww6'thPf]rk<va:t=x#^cx'C;HLXcbH%U"oPFhwAF?Hi:8AVXn\dce0L't$llX<1K%ZR%Zf1f/+6;W'cnV9,TtQlgNR.ka$8fU"ROdAnn8ThubQw[WoC4GXuJb/D+*^dL5fxR__1YdI_fFcZSN(jL&iD3mV<Mcn6,fU"vkt*MsklG<a3NVK$.r8RxjBxB:-hO.JhPx.3t<.5OLZ>h+[5Mu41EF#L]D6LFpHU"nv0?YJ385W4awbeDN%XsSvP%mdSIt[?;>*7#ktXjts(x5y6NUE4<Rp>(xH7(pDuU"qKa$hL*55>ok.mzZ:06ID%5csIG7*D?'w,>Ark]wsPo3\yt?+Qt',om=llXQ'cWU"oVtpHM4q$8-L5^.c56[kvOG$DC5l=[Ypa\EvdVsKxFaK89fv4$iNA6JXM2>D(u4U"t(wSeANjo/W6WXEj2h==C.t9g,<vKVAflpe1CnMJ:ZOPp_h*9Y*)5wK:I,#LF[PU"(3rgy5Y#r/MNBhD[jRhr<KpVNCV1\MW&imwPxYR;hB_bIS?fsroQnhc&sVZ'i\lU"NP5q;=6DXE?.F69b56fB-CMIQp\S+1_Qk>$>ad&6slm&9gY5tsPCX1/VS7p,1LfU"-Q/qpAtg83Lp%FwYZgD^E'_Lt^ltZ;uM2N_H'FGF-stkFV5OXoc*dvPB(mJxjlxU"eB6(E+dLihl$XEt^32k/s5nrq,$xR_Ixlhx1K5fw^xw45K&r$j:6w;u2c$r[N#XU"XT=hXp8Gl$nkRQlI,JCaFYhLd1?e\**DDDcZ9xounY2rdnnx/El:m%utqAX#_>?U";7^EN$i4_wFYqS6i8/q>?[elLLj?w&X,lXDYD/Hr[d\wj1$NJ.cQH2^=6JA50M6U"Op>FV10'N:zf,w^xe7+[X&nvN8k[4e$Dse$=2(msku/XK0TQ>$LnJ_J7tN22D_tU"+l*VHttPZ-_o%DGrXhu?4HM&546D,6H<-<wci<>(sYdT_\dm\Bv\yR9oAJ8:IGcU"H^]=DS%dF3WmB%X'ypZ+&w)UmVq<*rn#<^yFq(,0VT?Qv$3<[-NCriXe=w7ShQpU"ZxTVzTw04AFrqf+-$$^HRt63pIU;(/esdq6U5m?;Rbhbeo31kH-&jTiZ*RRKXKpU"FnOS_'+p[G*9thr$ILjsQg6JZ=1=^8j;o5X_;?)xpnivp\NAFQ[H[l6G25RR5pTU"j6jbb.cT#GD+TUG>RbDZIP#viP>>.(NAOE[^Hr2U--E&jljb<?sfQ.rkPe::6lvU"hr#u5LYwAS??k/sJnq[gnc8^=850fJZF&'PmtM^VU*:z7d4y4DdCj$eOoeZN8XlU"u]piv9b:A?=eMBr)CWZ'X*z?:t7#XBd)/6&xQ5r%6k\:>Mg(W[2hpt;HVuMkcq+U"_BXQ34ACn7VQVu>F59#66on:5UPMVv1Df>WEP.(Mb^$[(;zXeZ?rDx#ppE4:dA(U"jUgt*lYuD.NXrIbpjL,NdYE0kGNn(0ZusRTsP8%Tn4s,i&jc?=ZOBkPw?GE3TliU"Slb&fwp1Hq4kn('3Q)8pRpovoXzxYP)u[x^AaV5i0H<WuvjhMpDF/uYh;hn5XtgU"*/bC?88[DAd6+rN8qJkoDrXDn4XQ6vyY*2&.nzKvp'<-%r[15OHgc689h>+<'>9U"fVAhh'IQV:8=LcGKW%WVnu[ujA0A4dCx=2:#IzuwonP_m%cT<8+c[Zm#Q(-dxB-U"-fFIB&2[[[qSUnXlHxa_u8R_(nFT=E0u8)13W2H=GZjJKrj*&j89pNDH<xeQ^K&U"SH-pnbw<xIwTh%2uq^PSAFQa$db2t;aD-lfNbrvpw6u2wD03q<+]^$=]g?bewTBU"=rTlWbB1=-6ex?O7M/:]uzRS]toFUJvciMTHSiKYJsqL5ZK&JfDSf8pdGx-3=^NU"r\P,OWZKO9zk.[8Yo(#->>4NG\^3n68Z6#hA't0Q&.K0%6?hhPYX$YpKaVkYifuU"UJPNfw;J<VvjX$3]I_O7of>kG_Mw;MTXehxzT_3A0JU^pNPv8x5/'JGOMVg9E_6U"u46mBtDf=HEY6r/#M*&;u(k8GjWl[x9&X/$nL],,=EoAQ-VuBC'l^0*shp)^dT5U"Cwg:j\.m,dfj_V__-qmytFs;x;-cp6+v449v&RA[tnheKijE\ydN.PpFXJmHG6:U"'DDds\_(3e.4BEWmLjR-vMkpL6=v(8Or[tI6q9*]xo%ET=t%p^aVR+s%n(%(Sb$U"0C52S$l7v2?T8ytdFXO4bm>dj\o2m25+tDnclHRCOSij0t'8A]C6K]NpjMs3M)HU"=PbaMvMSna&D=,>>TUR=[x>WB19nKd\xt50^4^FI'^:YJ$HLs*)=\>)ilcTqU^VU"2iarzj<B07Ld9\TY[#2cQX].aTOXj*SfD/':;p8^VN:wo.V7WIUTyPDDKbqQK8CU")(F#]A0b2i?a>*=^Ctb=4?r-%u^,'Y9X*0R(n\APMCE$3<AiO*X;kSSz%[a68ZOU"Z$)ZMd\a$-w+h,)5tgLSOpldjaHsg)7y\tGmd[vAqKuI#=gV/gBP&A<bhSNaL'oU"&2FO%E6gWj0;/XB_joc5Fm)f(nM<i1b*^*lv)^sq41ODrJ8[x_SSG9)/%MaPifCU"mqWMhcJGq'r]D1K,>k-7Q*Nf<u:*Zws>]=A(>YH>5#lu5W'.k%EDA*qrKm-Zx/MU"J&7f?Lm[YoLKR,JeuL?6I(2oyuhw)jf8_i;._Jn++tYkNQvi-_^rD6%RhDmdH(%U"fu.5'*TV?0KC-IKxFu5FS=gM]J3JW:Vo-B0]qI5x&q&__8t'4vpXX:uqJ=fA&S<U"\:<MU._mYGO4klI^U\9A_?N;bxN$a'r<SZ?YPAn%CET9-9wAgk5TeoC0XJ<.QVMU"s8:d>M>XQ%m3[v%:]%*j^<Ggkv$dl8*lkAtYgXFRb>/&>O#xmC%+85p0W'wqt=?U"8Vr=C^xg8ra5FOz]19$<m*Qb)heGf&H=+OJt9DZ>eJ%.uLXJ%V:*1hH;928^gf7U"ln:3<Qwpwa2n*U\+e=[v#yN%Gk?l47FyAm=*9L/qi1xz>[OXNcm-IxI[-8Tja&;U"zY<5#CZGSj0r;ZaPL#iS=eb+$(,F?7JU+hcBm.,O.\JXw<Qi7G($;:3wv(?2&dIU"Qhi\R-8/'.Iqn-sS,79+J'J>ndZ%EOF'rs(QmL7NFw%ZK.vo*5bD126L_R5\1v^U"v^hC[^$ua&fun>?J&XdwUDR<>QgK4_8KO$_wbJ^Yg?#hGy%EA0i\q0aJ6N[cg1uU"xYLDdpi>V(?PDH-k%8Eti.tV;Q^B0OAHr)+SA+7Po&;FPX(H.:vH?8FqW6mF8:4U"HoG7qCyti9:w95^fs_:I[VKd[>WYJiflY%2MAEQ_^;/jsV=Nx[.]UHA.m55:8XsU"XO=4gGJ2pkY[g6ngDIczF.gwESBLOSxP4].oMBpss[_$5aVR_hIo'v);.G>0wuNU"E/Hs8_)XZ,DK&u;1CuT3BiS(;v7w+#mc'1G..?M49%rO*U1:n'Ck7)s6f)Sj'5[U"+flFDC1YB[1960[eKWP&d1i7[z8t7su.3OBY<c+c/MYAPL1*img)I&edLinZ$VdU"jI99*KF0Uu=[s]Co8rK%rXqX6._z7l>(IEq87V7-8(cIW>6hE38ZK3C;6VaKVSOU"uqB26-.vDu%p()9%%%%-I%\%IjGe&p+-G4%7%,s%%%/%%%%hfx%yqjS[unhfS,rU"G;+N'aX)EEJkn;F09p-eLD[iRbbm^GEBfTbZcG(CyxucDElU(P*\uxq8$t.HlurU"txo8o.:&.OBxlBQf,%^jdHh&l0OIugLMW8t)u3oGi1aMq]UXiTd_qL)ldRS;[.hU"LhL^jrj7ueXf><\PZZZ3Cr[T13c&6\8=#q2405$-7u8-2#EYLHM:><.6Q8bd6K#U"JZ,n]<j[]0#L7?xmWd\GCSDA&\3C,y#bC_U=?q\lBBJ.eLn73p2+=dpLMq%#B^eU"UZMPnR,TwK3S[N]$erF%7K%\(=d#VA'FKW<Nutvm/F5B/$KZDtFVI\1nSnFtd#eU",u#6tDRZl*nir&:[R,B^X^bHdBJi$rX$$4PK7EZv^6YE9:>HfJ3v5RMCeJN'/9>U"/$;E[W)BEAFo^FaGIit>aUX)'RiCV?dfKT_>.^;9q;];:(mj50U>>BeOSUQDX&uU"3H4H(Do?w:F8Ke<%(KvIcG[W\=R%V=V,G0ej&>(cvC)?'e:n$vc[#B.KP?i:#0#U"BfK2Gz>TZ>V^uk8Fh3P2xZo+exA,QanlL>+&TepNBGhlc?DjY(mMW+H#g];1h?DU"mL$#B8<XR&tvptg2xF,gNTK'+HsZrZTdDIa^'6S_uTI6Hb6c2cJ$jNR;sLr7q8gU"<5/'BP\oR*j/i=>Yv_0tKTm(bGnbEg'EdlC[c;+Q_RiqFrZLF'WZ(qyBUMTO=nCU"r%qQfX^Jemx7i^gPi[WQM&DU4=kv4pv,+$VXVXho4B^k$b+d:%WY,+GMvwaJIfUU"Ceav4$ogOd]p]*vV#N9UwPHZm+Q<[kOikW)*\S^4*lk_tTZqx91+F4:DIaxz;b,U"wMZ+WB5nQR$Yy65+#f?[P><F0R;Q\sJ$K/*J2IEaC.')m%(jMWeXu\Nr(8<8e>oU"^Cay..*Ef08.mu[G%NKVjF=o;?,-/V&stoYOr4?/3XQk;b(f9_M+dP/O1n;$bmOU"eUPF=Nb;kaOnMK.-Dc-qwE7*L<1JNi9&8?-lr,m-xV?1UuzaJO*s,sq]3Wv$P8sU"sAdA]?+>JL]x]Sn_(Nf&_RFllta2&*(-EZS2ZZfrmFxDMm$v/\t3m3<]XjjA[ogU"10c#?afINn;sjiof1ga1/.pST^sn8VnF-w[xaH%9d$KDgWFI#m#kEweEm'9(_$eU";(8INz7Y1.OkJRzV5$?YaN8IO<eQ)?ZdEW=)a[Ub&SZq._:M)n1%=b?C['XQjlgU"&]E2/)Wcf0A>Lj_[-Tx?B1%#nfFzjE50^)shc5A/_FEfsZ[UY<n*gi(BBm[GIY_U"]m?L\ZL6^^xkN3U-2ZU,=$UQlj&t*+VOXBs4c'xy$NThaue&E%tZjVD4ZiP5yojU"t.h3r'tx.^YIaNswT0oIDwwY'xn<n>LP2lU)7fhqNgw-9T[jH\OtZeV(xeJpYz&U"#:x\47[-yx$ZZ/axs[':+uit#md,+7rLd%)f2n9*kX>HwK]Fut.E6^1+kuvOtN_U"vi[YPF[NH+#;Mt.rZji8H\Ajt.dWpS^xJqh5Vlc,oxs+%0J0n%tXBLx\m[C;-/ZU"lwK,ipybseidN?c7][<DN/nYl5Hw.ke:9M9OG<mkNqRe0mTt./fK.=R\n6a,cCwU"LwUl:+6TxxM(-RxMprbk0eIT/Owfv,2r:=]MBb(i+\XcNWGq4BHEi)uvSj#(;rkU"NLOnCy:\-?R1$2i?Ly6?jCx%r8a8b.d\<v8>Ugxif\&/Ho8>[ftyJ\edBjdO2?LU"y_lN589j+\cQNWG4F08-Y:lENxUreIWYc/vf76Qwy:hyQUclXWJZ;;u6NnfmX.8U"CMY'x^^4+dddDkA9(w).4S:5M[4/LlB4Etzqjm]^O&#hZn3QG9Z<'UUXDZmdzibU"sNstcrH=u6MaJn9m\#Km]8NlkPxOdQP<rA>UsF&.6sHp%;EZxN?s(atW*KE.>DoU"8xjCpYX&dRy*s6EqBhYNMpD1\zIQEq,OG-qfN&0JA0>Z?CLtmGv,fsXbrCb.?9.U"f:MnhNY3*6ep,*[q/dR[4y6B*+HZ$k6]Fn,6feQ0u=NZjPxa-^Y'EAH*^Rd9mNsU"pWvh^81al$:\g/d>s'2/qt*q(idxQU4C<*OCP(q,*\m>d'r[L6i4xun'7%Rrp$dU"Z:,Zs<wBneW)iX$&cVGLrDY<B(sXnLK,[gt.*u4[n6;T#Qrpt)):#6?/1Vf+%0RU"<(g8Dm&UVLknX1Ujt.b>8KbtpO;\Myr6DEV]vlTvu^&>bZ?XX1oUt.%tCfJX=R?U"vyk*0]2*26K(MKyl*u#U'2b'n8.cxF__k=GINeN6M0,]2#X>'rL\U;&Nk(Bl#g_U"6I^(Z8DxGie^TXjmA:vjOwT#9N=picoTMt6v0e0psS)e#TaD2pQ6Hu64t^2^xc:U"x&f:<p9xxw1uKR5uXR?xd<vTd\Y?Qd^,HwlCGJmy2jGY9<EZ4_7H)e,x?xR.YkGU"a'(0sJhp<-+tzeUAdwhK48lV985vmVcNGOdAn8ZpiGvA)C(56j8D4NhKy,sz=KxU"6gZlt?.pUxVb5VkZdXoNkk\m8=e0$x:RrPQD-EtfH'n#'0YM,Xd;w6Ik%vzpuu:U"V%\)gzxQh81xRuqAclRgm^>Vd(V=#S*D+ExHQZI4a^KkHa^*5+Gzn.$&cB8u<pjU"P<Z8T$'/1$WM_xlFm.Cu^RCxY#^(x70DVyuwDE>SqY.2jS6kd6Xn.sq;O6qdFK,U"H3K.qj'i5Gn?t#,^UM:bxfO&/9Y6NH0tzspX6s\mRde9*nI\wN$X*X<^:+g;Th<U"H5uL:Be%ErNXfX2^=^],<pvH2k<3/ZD016i[Vsl^(Mn?$VY4Zk[h^Ig5m9)wn(8U"--fdga%#xfUYu()Wj:YNl,ibw=\uufoY<slc$lyTg-uFjVja8nGvS^h=&$batzGU"XsfD;/OUGulwfclK\u(el0a=*utZXM^ee(d6<E]?ONQdsN$Y[^A^1-'/*u\;hOnU"1\\(^9BymO,tBUrKJotVxw:vh)'m<s5i*e3H[lQ-uK;oQt64Z0hQnxKjhYtSqJRU"zdD;j76;h:p;huxaf%22Fuk86.3evVDT=lTD6wc&;bgm<-^\U<,unLr$,=upuieU"=mHW]VrnCBZ0Rh&*-FW/nN.kc99&7j]U6<m%o(HeXk>$_-1w$XydmJ&Q8sWh*rfU"eLWM+Tm<?^YVp5DR,0YFbywpSknZMd,-v7;>['u>HBK+&\U:p(ZqB+.;,,q1H0wU"0QfxoMunlp]a/AQN?d-;M9uhQnPkWXv[Ft(RhaZUruSqzuP_K$2r>*Ww\a0aaNnU"'nPM]^30Gk%uBcMAwo26OHm/L_NyDK&iZet't7cpDKjd/-QnWtUDxjNsAjfgdB?U"w6Em1;/M\N0owpHxQ4Y#yoldKwml%&,:=xkyZveh(p%uvwDuK:M?I^o_85RGsu^U"Hl2?xiw\i]V*xr(&w^kNMQiD3x3njNu=v#s\;rsVx+k-0K;%d/Aew4Adl>'MtZ+U"jw:h_B>qH1c8eTmB^+H*ETaDH8IoZlWs2vJc4wpZrpd8F>\83jhJn9SVKG-c6j\U"TD$*oJ9fKj]5W848q<waWEjL_aotf+x6rw^gJJ.(OT*XZD87=atNrpK>xE1f22ZU"9#D.X-a38l,r(ttB3X5oq<QuOpwyMVly2GTqvxzZqjMnq,(CQ2p?QyWu)_nkj+oU"vcrQVLpdkx:q/?Dw%a>by6j4Yde4Ux0'xz%qTZ,v44Z%0ls;)wNjQx>Ch.iq%QsU"fYMtxv#.S.Z,Mhg%KZbV.=2?5F-jcZ950t5JHKTXCfgBnp;ZXcNw&S:VK^A/iZDU"c?;Tjm#%<l*xmR(>MfXyXp<^4SJQMku.Gur50vtrTL;.JgDLcuUm*uC_D$bc3uwU">Q6]-BNDhKC1u4i4r*L-Qps8vNsQ6rR5jRV_5#acj$(XH=h?xlZvDU85j9-Vm1fU"mbA2Ut)&h*vY(m]R505'_kd5Xm+XQkq150E*FcYkPg\.)&pa*%8>Rd%H%CT8*XwU"48VsL&_lRXFNkA'6ny$3g$<&lV<_DK).?T2Ma+&Hm=/.5WX,N]y$EI,eg*yVBVLU"3JnFqOxx2jKM;Q:4v80CKZl(txlOcL<oVfe.?S.=g6&#0e6NG;17=.fv]VN7VVDEND SUBSUB V5U"LO.e[82Vs_]YDO<k_.'Tend?]GCG95YA_JwQxJ*h<dgj<e,eF$Lj8pa-1;F^#PgU"rb/Lle<,oW&(&w-CprQHuhNGu'v<k8q+8COb,NXa;)93-7xUdC]:H9QuXaLAI/fU"Ylg6.*j.O>s02NV3GC#7D\>x:n,0;FPaJU7WjcEbmpfEIu8U+=*jrEl]o=\>>#_U".W[Yg?4Q2AUdfRRMskmq&2F_Kth:7(r,RdJL*6or2&P)X[);*^SV[w6BQBr:(EtU"8WA<,0B33wJz/NWQqIpWfuEbI$f%bg2Zs'?Ue,S>ROumqO6e1KGn1K'56(d^6[XU"t-X><Eh)8\q1I#3?AFnsot;)0rWP'6UX=Ra/JpzP8&toG%+>Q.[yY]^Lx?o:XxMU"'w^4_2u'hXJd,I?8E-_4uyLucKZ/b7GTc_UZn<10H)f3BsYJhitdCYB+%9xqk:%U"i,%WA#:KMc0]?lU+Al>H%rIAV0Go,C4/ZG^Ivhnd3YOD6P&)]ERTaG=^Pd)Bx]TU"2%FdaoH,BK0uK9r2nKK2EhJOZi_<>fJB].'HDM6N([a;w%bw0;dCpPRb?D1[>kuU"FtX4N=ucT04b*i%nF=K(&#qUo8JSU>;D\MQ5<a,NO$u3MLA?=Tw^'1GyinZa:dVU"M3(*XeS-9^+E'12>IT;b?pJB(ZMp0o&7p[&-r5tW2[Sj-=8:0;pPm:5)Yha2+(dU"IU:RSWy$0PBr#IJkfQODj638zU(+(r*lCI^3iY^2Sff,,S*[&$?45Nw[A2ggV5AU"S$j1oDx^BBVv7yht7bqr])gdl3t%+.HS%6n5+[UDQq=lCSkX%/KaIx?I)x&n%-hU"oStq&/B6wIPYv'8sp(p]eTmdCi[i2TJP)[?gX0A>LUjY%r=NU_:+nBk;d*vKZ9RU"'Qve9RL%M&hu_gHOPXlWp+2AzIw2f5OdadH^wOuaE.m#;9j\[*.saq\pfn[[]3bU"_BBg2C>>R%U.PRaJjEyq/,+zzFFieu;kqGWS-pq417VSnIL8_QdFKgSDy5kz^B1U"q<Uc=u3l.xxv%dup(%)9%%#%-%>^#EG+/e]c/%'%%v%0%%-%%%%r%fljS#ufqDhU"e:]<dU-SxQ(-F#Jk_jmNx3*)L+Nms[wu-Zf^&20rXnH,;F#lH\-<^wFfk]&m?HrU"fZ>8m]m<bwYROd[D>$\XOTRGS(S;D>=66QAZZ/Ct29Lp)z-A,'x.^rRj*52T[s:U"?,E,^pPytQ[8q#mX'Y=g4kA,regT*WvC^8pX^6K-hVI4FPFGu+Pks6,90udfPJ>U"=6GklhlLQPT*yi(epq/o7wTU9f\BVN#pq:Z1^W&S2Y)Uy^EWICnsl$j5u7ys)?8U"Lec=L4^nS,dpN.X6LegG<Qs#&SMd8t#]0i=bwHE1UUZZTHg:IOJqm;oJRk*WnedU"L*;lh&*zESQ_q-I):_T8c4bMaX0LBiWzSr%E\w:dt<C<Wic0x.SZ5minE*')DKfU"<dX0_/WbftkYB:pj?0.H-u_aTAEZ0j;-[KyS_('Gd>70rNpx5FAjYp>cK,?FBS]U"29C7^YS/jG)>DmkgTTq9?Orb#9+nCid9<2#aq$GKIULujk?C;/]*L3gEhHK>O03U"6U.b(ZD.j<b,F8?#L7$n15tjc\^Um8TW+eIcKUuWKTWybf.>_%(7*rUO%I(%s.EU"^dYSqSP7]/O.>QO=)jiOB5L-dv,MAeZ&h-geD)_.3S%<[1S/;/c.JG&]r]$2y-<U"FjdcOpRGKD9VRAiuRSm%4up(%)9%%#%-%v)'EG22MsJ;#'%%(%0%%0%%%%y(j'yU"x%hwSuIfqDe;*]eUm-ix(UYJ:HZnEs&/EhV/6#N8Nne._^p'2#H68d*<jvvbLd,U"D:Yt;8lQ<pq#n;nA#^]/<qN#tsDKW%P,kXKpj5jJ2mOY^.b10$MAQqfQaD#fwJnU"G3BL((WR$sqLHB20Of%moJ6B%n7NA,6eJEj'-B\3S&92m4h+aDo(C8sdMIi5uSRU"3B-Bk\^D(0hP?_8/n1EA,#oDZB$q+jRxbgP#NbCXz.oUgpOR7c_o2?$DjGoMW)8U"sNg_ui&^EUfm]3Fa'w]'_/1'%iR&E/)6w]f><G^Xjrjl)X5fVOec'm[0-45oQ><U"/]pM[vIg>Y>^$J4:kZL1'$]l,9;:[nH,VJp]\-_S%#ytDbFEIZZDu[GBSL3bJDeU"qj32UHuP3OO3j&bDRS[VkmjeGq&-Nfg3nU$%-,.[TmM^d<QdV>\Hj+AJLafE-qpU"/-NbqgQ$D-\#vmnKbUY5GQqtHV5RvY[YXlx1M4Q-*e2_m:MJT2BgPCHi/:>JZU9U"LlI9xDGVr0qM\zWXaP2%Xv+x_mV(p7>tZ^]9AV>k&y_4UfL=XNrdmdQ9v9s;)LjU"k1q%Q#MyZB-Cus^'jzII%u(es.m^H=3j.'8#:EB:)tBpSAqG1VywtY9X#1<3(ENU"G6qL/>VuV?T(hPY&4T9#Q9n7N=3vQ,$>d:dxUL;[2d2A]x%up()%9%%%I-%F(\EU"Gvo-4g9'.%%(0%%%0%%%%yj%wxhw%sSufgq\ed)]SU-5Tx>WlhK%dY[Hx34PC$4U"]?r[*n$wC^pe8Td6$seFmOKotE[22kWnb#k4spRcl]/2%V>wkXZv7q'((6AO/6dU"(kUSVo<=.SR[tke\SG/-n-:+[dXR.]b))[CRkNo#b\s__'RSk\x]t36>Pprc5.9U"82Q1+FXM>8Btm>9L$?lCDTibH$7Tz)[[b>_(oh)rS+qID#*<Sf/KHt/JUPq=';EU"lpZ\6;GA[sc%B<jE^4c9fVrVmUsCPa]i63[_oi'jE\YPrS(N)]6C$)z,YYHK<76U"90w)+:WxLBfIs,)wh?_D>oPs><RMtXF9\<m/?5/sRs=+m&HG0TH$ZsN)hC+P)Q]U"Mum8uKtqe3IJhiI0]>DV.]tmiC]7g9Y96I[EOCsZ4/^&YcSOh3P)a=x)81#Eb<RU"rJ$+vA*G>*ssAUWaKT.[dPB&l0W^wS-k+YJzK^8F)JUIaS)^bt^k8X3rA]KN>B)U"rc.5<)>bE,pepYN1n'(EN?bXV)2hShE+ZMFg&Mo*SZ=Frh+J1UuHf$o','?N?SpU"Jdaz%&<WvU9Bi>Tlhu4=$i5TTu>EqhxkrN\KBWw\F-+-.LLpaA2gebM1tCI385jU"Anj,YTG\#>yTi4I5]3JcK(>JLG[-V-'a-%]>m)m5f9T3ifwk8^<e7<B95h)Dk7DU"k:Y?u%'up(%)9%%#%-%G^WIG4)\>%7%'%%v%0%%0%%%%t%gojh(y'SuIfq\e;<=U"eUR-jx&3c-;LUsvd.'R0BSjA\[m)s'K)CU+ckZovnMA]FO.t;TqqX+Gr)$PksptU"j7^')JldUT^T/<2KK*^Srp%V]GPY<7p$8,bH5Js6f^D)'b'kg,/EEJS>QaTJrXLU"#%n>5rE7lF:nuNsH?PX)^?pqGPYw:()P5Be(Vd4T.5IKUi3^gkm9TwGmu^1fK7XU".kj-d6jqtAA2#N2?4ZOUTmv8nHnJA0?HOLWb(r^HoA:%H]:I[jG_fU?3[ye-96NU"d7+q^V8dhW??D#X-',>D76vR-.BGVQOW2C+VKrHh+pu;JKw)c)59_A[M,=*JJx,U"9H(ad5pR,3,<AS?63^Kg*/U>q;?k_nyFIJP?[UQt-Y<C(Jq^C^T>LQ#hs\V?RmSU"+Yr<NBT9;5^7t\iCaABh53(+E)DIu#K,EJDiljO*A*LrA*hG9U:(gCMO_L9=HclU"B]iU#%(i-2QR%C(X,&?&lF%#o*^f=NJPesR(gLD/2c/aDrLUQzZ?'rrcsod^_#SU"bre%_Ojpn\>>)k1km3o,GE]6/N9Ro;tn9S//U[ip8_*;,W&uejfQtc88D&OOCI*U"'_Y_B4:[3n'K_/U85D'2O1XL;\KQpUp(7V.n-V_o^vd[/jp5fx\pWHI+'9DeiavU"6qgDw%H+dPH8NLGZx\X;c7>P<n4%up()%9%%%I-%+-&EGS()sd0'%%%v0%%%/%%U"%%lw%tzsi%SufqM\e:=B=E1SWx&c,hOSCpKuL:k?nYHsdOz)-C3[D[M\pLNVLMTU"_R9DoFGj#?5Eo&CBc3Utro=B$Q;N/CdHeh[^].aX3q/Lb5ke_YKHupJ=#Didr+aU"/J_]9i%?)+1DpP+:,YV>LFHh^5.iNv_3-uF)vTbOH%2AqU;m,3LZ47?Tv-GaE^^U"VL*E[qFA+:>UBK<md1UO:jp&.L4URhUiS2^7O?hoHD>$(;E--(1josm&^6W?Lk+U"FvEaTVh9<0=XMz((a;u3jiugaN)$;ZLF-0Q9zj.PiU6M94C;x%uetrgFa:c2qYAU"<g>K8+6E=Gq-*Y1#xDi_5JI+mK*wV/GJe*c#MXF:1nB7n%=C-PrA7Z>jl].';f<U"WOxdT=N-uB)RqM8acJ/CK/d#nq*$=,o\*3x+]uNleG*%8hgFUV($O5b)3n7Pv+gU"AEt.8h4WrTl:CJsy:skC#H+$<H3RI9kGc[W.'p#RBIcbLR2gLL%%De+tqO0Q$0BU"oPG&IdO/wo+GguW'd9<Oo(bCn?9N6V,0aCtedzzpIN\TK$gffLsXNrV0;hM$lupU"xJqyq%06MF,QY<;>absU=I&sDSB6-gJ8Hr,m#G*]KR0cjbilMJPKOl/*n=-0pC'U"3<s+[7&k)<Z2q0pyr#D2DZ3Z*Wp_sJ8C:g-Zq*u%p()9%%%%-R%g%EUG:wW%q1'U"%(%(0%%%.%%%%yny%qjSuIfq\e:v==U7-ixPTnSQ]Z0RlnT%FjSC,(zd9O/:+f<U"1_.?h(d\i3sGj0#h^bb7/b(:^fU39r]p_e%dC,Dl5S],2tZg2-9.pG;vW_nK*ZKU"a_hGGu#7t.t?)=^S2b_*s;l/Vt-0=5NxJC;bf[,/-d>D4Oboo8V'mRjt$-t'h,aU"v7ld$ht3kRa,NmM'Af?y%+$mvQ>bQ]8Fm$#W0WF'3*Y-uRpjdbh*F=XL76.X#[eU"A-ksU2a#wIq:TY(kApzR3T%O7j]JIc;=q+qnbE%YxLr9BHJ##LE(kxeNO.-d80aU"^RlQA^)4y*6)4UG\[G'j.:]3)o'KGsqd*vpipRD*9E,?x+fcKZEA?vJ]+JBfy7fU";1I0''*&#KF/a/hRoPULDj9N3p:l:Fn-8pnab#+7G*_/,I(sc=K_'5'92Ci4h:/U"n/V&lqX4A2Q:w6_OI)E&1jveTuvQl3'CPfKW9A<UVy0l9<SBJt-f':GSvD2tO0gU"(G--Mmm,H=\=tnP*P/>)V'jp4uGhPOxGH/^a$KuNBei4Lma'e/;SEJ0V*HoCe:eU"Bz/rX))EfOfl5i?lV[+apSdxEHOKzPUk=8:Grhv#0py/BR)Xqs9XL$SB9x(;O7vU"a.euh=tgH:nNuaoWkPd,3cvsL3>8.q,d$'5\BPlJnQmQRU'd<up%()9%%%%-%.FU"lFGDiZ;f%4'%%%v0%%%0%%%%htrx%hwsS#ufqDhe8==dE1TxP&c,OtSEErstO3ZU"*RnBOa*>&(fHp7X5.pB1jvj0(o#cG)YB7liYBJvfZw^4=s*VQXUs]b3mDs32ZRVU")xPIZ7LZQd*^jXeg&bsVc_>C:DNP63]*uEWV&KE4c[*gk/mo-RJ_Z8-&w=gZTRXU"XU>5CIt<Ip$FVYgPe8*Fb6jjo_xOh%llwHQXf<%r2^=JeQAtL9s3]ISpM>4_?53U":h8kqfUqCG81E0pB^N\K>9>brF?F\<'d9I[(doN-J_N)+.+-9M[K>z2A[T5$6%xU"?9j'lO;GIOW56jJek*;g.J$VgeT5dipE<m*jK+5HOM2kg>Q+h+)9P$)'Om.Z*S3U"J=otk2z(zpnPESK,cKGsuJM9,F;wVt)3fo_twB;gqc;Dj/WKJp0QSajuBB>/qz'U"+f/O)VC1Vz07OFgp56SLJKE8Qj<'F:6WT3q4cf_\91D5R(V[YXll#m_&;/8=oO:U";xq5^q8,_g?2nvWE0:NC6cha=v*g]O:cS/MSqtVYx<H#$$NRl/,#cWiXd*>>mr\U"#0YX/_arD9$%\O):njf>hWjHj8mzuS\Vkr0vDI(IMAM5fv,rqoKHkeSRHfXG<hPU"L=RWFGD-kf*(_gkw=5=)=fO/=ptj'JLm0Ei(V.Q\7Pme)b='$#o<jX(;&srN\;;U"'n(up%()9%%%%-%/CtFGlvW[$%;'%%&(0%%%*%%%%jSufgqLed)]SU-kTx>+ThwU"d4kk$N+4:^c45u,Xrp6P;ZswThH6l%,yu5Qo:f#\?/OX(LF>I2aplg1%8PGtAzOU">2-nJ^Z76iTAAb;^QJK>H*0<cUj<T=cqq+b]%3J3tWLM(CR?gYAJo4Yk+8Zd6j2U"m=5hH7*FWB-PX0_=K>jf;4x=5Ce^H.*rEWj-eZ[zTi6lImpn5]6$fEOr_?lLAavU"TjdOb9bUP#bf4%dp-unb9F;*A82IFQ-Z4uK-1AnbD+U0XqPE)0KzprjY7&DC)6OU"Lv>Yz9?Y5eHems8.u9<9B+5vhdV$m)q<^>uqYm:]G=TF)._\+ugI7FNJDRS($*oU"QV+of#;UpT7u>OI:r2hcBZ):DN5:izO^1Hrc9mr0uOK;duc'[Wn,RZQQl*K<^C0U"J9>.J*L(chk,;48YJT3:m?e6',?K6.GT.6$NJK8/Qj:RS,UKsfDafS\Kl2PV;?YU"_55_GaAas%*.?+w/#L:DQ)h+Zgg)2nvrE0:Tj-?pBMw'Fk(/DgUXgWPqY#:N:EiU"*D%CUhlc?r%UOHoEDFkOHOb.Ytu_]XvFrdS,w1UC$8C?Bxt8Z9J4sDI#7fmDyIbU"OM7aXXa4D/3t)sR-)HR$p>>RdmW[DU4-L\dd&k\7ood)KGqa8sj*qGE:lNwia\&U"Jw,/PsTT[';.1nz[G-;n,u%p()9%%%%-L%_(HsGcKO&E8'%(%(0%%%0%%%%jsj%U"rnjx%SufqM\e<='fE1iWx&c-s1rafrs&Oqf?(V2PHKbQmWV?Q_227XY.p,Dkpr$U"(74^_E<R.d]t];f;PfWH\fv,ucCH.DAQE&aE3fC=(pC<9f(Z/d+q;L91^L9n;V+U"a?Spp+Dh4LNtxs##&6OoYj+L5uk*WKCC^uX*bieo25oVBoG(5\-cHl&CA72.Iu2U",xCV^1V<:VjZ]I7[JtBC5Z>YiP=5R:]Lw71jd+jh'Od(rMD(a=*'Lx\c-sE)E,5U"P?,a\INU30fpfQI&FjvGD[LegEwIxV%mj:2Y;%HI$V9>q;x+o^QB&fa^^<_w%m1U"H%^FPM4WpEv2^em/^__LQM6e[:iLFYl^%'&8V6q&QMRD^Z\%^Yg(_/_1'GM8$BbU"-WLU_gd^Id'+M:YRmqX=*']'F<1yW:LK]S;,1afMK2'$4K<Ou$25]-$CUw82M1/U"dHJLzK*VoPwsEkl2kX.Q^5(p\TkAh80inK/N[A=I,*Y#.AIcXS5)jptU64sP8W4U"QPDZ=SeTN%rvI<NWcVO*tt)4PP6x2Na5oXZ79X4]dgt4A,[)E=S[vHGZbmLHjF0U"1fm=5KxEvT..4MdBC'&A2%DT2n)0T')YCw<[#gRoTu9,iJ'0O;RwhJ7H:.C7s/:U"<I,dFGm0kg&_]as6URddtyrF4dQ<KgKGrZK0J+/.OANu%p()9%%%%-R%e0FXGvWU"['$;'%(%(0%%%/%%%%hwj%fyjS#ufqLPed]SdU-Tx>>+hwid4k$bN+:^ec4u,AXU"r6Pc;ZwTuhHl%n,y5Q?o:#\b?/X(hLFI2oapg1k%8Gt_Az>22-n^ZV76TAPAb^QU"fJKH*o0<Uja<Tcqfq+]%X3JtWALMCRd?gAJio4k+*8Z6jb2m5hTH7FWdB-X0;_=U">j_f;x=/5C^HY.*EW6j-Z[YzT6lGImn5Z]6fEOOr?laLAvTajdb9hbU#b)f4dp.U"-ub9ZF;A8[2IQ-pZ4K-61AbD?+UXqJPE0KRzpjYQ7&C)C6Ov>;Yz?Yo5eem(s8uU"98<9+5(vhV$Pm)<^Q>uYml:]=T(F)_\A+uI75FNDRVS(*oaQVof##;pTi7uOIK:U"rhcJBZ:D#N5izBO^Hr&c9r0?uO;d;uc[W%n,ZQWQlK<7^CJ9/>.*LM(ck,5;4YJU"BT3m?9e6,?%K6GTS.6NJ4K8Qj/:R,U<KsDa5fSKlO2P;?iY_5_/Gaas(%*?+&w/U"L:LDQh+#Zg)2YnvE0c:T-?PpBw'DFk/D[gUgWiPq#:WN:i*CD%Uhplcr%oUOoEgU"DFOH,ObYt8u_Xv+FrS,Gw1C$r8CBxot89JN4sI#(7fDycIbM7_aXa4WD/t)nsR)U"H#R$>>-RdW[cDU-L&\d&k>\7odl)Kqa^8s*qGGElN]wi\&jJw/P7sT['E;.nzn[U"G;n%,up(%)9%%%%-%\)%IGv?o4g9#'%%(%0%%/%%%%h%fxyq%jSufgq\ed)]SU-U"5Tx>WlhK%dY[Hx34PC$4]?r[*n$wC^pe8Td6$seFmOKotE[22kWnb#k4spRcl]/U"2%V>wkXZv7q'((6AO/6d(kUSVo<=.SR[tke\SG/-n-:+[dXR.]b))[CRkNo#b\sU"__'RSk\x]t36>Pprc5.982Q1+FXM>8Btm>9L$?lCDTibH$7Tz)[[b>_(oh)rS+qU"ID#*<Sf/KHt/JUPq=';ElpZ\6;GA[sc%B<jE^4c9fVrVmUsCPa]i63[_oi'jE\YU"PrS(N)]6C$)z,YYHK<7690w)+:WxLBfIs,)wh?_D>oPs><RMtXF9\<m/?5/sRs=U"+m&HG0TH$ZsN)hC+P)Q]Mum8uKtqe3IJhiI0]>DV.]tmiC]7g9Y96I[EOCsZ4/^U"&YcSOh3P)a=x)81#Eb<RrJ$+vA*G>*ssAUWaKT.[dPB&l0W^wS-k+YJzK^8F)JUU"IaS)^bt^k8X3rA]KN>B)rc.5<)>bE,pepYN1n'(EN?bXV)2hShE+ZMFg&Mo*SZ=U"Frh+J1UuHf$o','?N?SpJdaz%&<WvU9Bi>Tlhu4=$i5TTu>EqhxkrN\KBWw\F-+U"-.LLpaA2gebM1tCI385jAnj,YTG\#>yTi4I5]3JcK(>JLG[-V-'a-%]>m)m5f9TU"3ifwk8^<e7<B95h)Dk7Dk:Y?u%'up(%)9%%%%-%$%0^HGdND1n%'%%<%,%%,%%%U"%w%ulSi7th.y*hZGla5vSq=dMsF+M]k-mFAD*OiFA:ZQag9+-r7MhJ9k?PmgpN7U"]1UD)nyv\-gVA<C'8Bu_lMzh*Nz?\Gtl615YG:YoYQe*>qTZ%lGdI0/?zT[/Vl<U".f'UfnLan<ep0g7uW7QfAitGnj5RZodrRf4XBie5apLg(0:4o)3_/k_9DF/xDfSU"Gn'M&?BB<Lj:BC.ERs>of7tNZ6:kccBzqZPOtNtPrdT8_tx.[W[y=+.u-D-WB',U"?VvgL:=J6T?\]xGrwKviFRA]Fk\6a,H'BgWexM/%.o/+jDr2.r6naIMRcw5oAqPU"/<':5;<ce#\Q2([w3W$rRj2rf3&U#;HV(T>3D7-2-S0reu]7HCWE2mb]Wj_.vIjU"rHVtWF1oCqNfn-<=(<a:Jf#^34hC;>1B09TB\Gj8KGB\dZNH&8%SK]LqI.zt=VjU".-^qS9_CO'.h6]lW56i:/%6?Y,D/J_ieoa$FZ'n8u*rb:Re5P'&30_:'aRC]\q$U"KIg%Pf0t1=t9z8ql>jI%kw_8RP+nR9n7O4lCJ150f[5-RGhs_dR_r'S*/E5%nBoU"r6rnLPE2-<skYcA*cSz/qK4gZC_:Namz7;o8Efu]rcYs2Zw1mY-%MK9[/hYm:b'U"$P=Ye.Ad\Sh5AVX5DW\B^^#YiAZ]'pLta1_No.iTPa++CtO)FsU*N[5ATbdlR01U"N/MiC##tpgLm$HI$1)Df>bH0Ep'zkt>W;Ub:-Us4jhDi6laKc/QL=x[$AQ:&bFKU"cfjOfLLj<lERkPAlX=VB55$22X#GY_cAQ#3st9-&i3xbP#nrA,t5=+RPM1RmL6%U"*LL04Q:oD[CInDXSMN9c,d?I;896qR5_Q_EbG2YB%1987o&oV=J4bBGIV:o#J5KU";5(/X2'M###3oS%>UZmH6?sE_)<iKhB4Lx7O;=AvS%rlb(jUR?L3ktUtZ0uvN2CU"$<CUQ8N-^l\u%p&'9%%9%%#%-%W(uUGgY<Cpi%>%%%&y%%-%%%%%%%%%&%%E%%%U"%%%%%%wul%XSgf%xup&%'9%9%%%%-C%^uUIGM18+#''%%%Q,%%%/%%%%%%%%%&%U"E[%%%9%>%%h%wjfy%jSgf%xup&%'9%9%%%%-C%[uUdGU^&&qu&%(%X(%%%/%%%%U"%%%%%&%E#%%%e%A%%h%trgf%ySgf%xup&%'9%9%%%%-C%cuUjG0gT'+Q'%(%b)%U"%%.%%%%%%%%%&%E%%%%3%C%%y%nyqj%Sgfx%up&'%9%9%%%%-%&q0^HokY1?'1%U"%%'N%%%%.%%%%%%%%%&%E%.%%0E%%%xy%fwyS%gfyu%p&'9%%9%%#%-%>^#EGs)U"nHQm%(%%,'s%%-%%%%%%%%%%%%E%%%%eF%%%rfl%jSun%hup&%'9%9%%%%-L%v'U"E^G?:I,cg1%7%,s%%%0%%%%%%%%%%%E[%%%'%I%%y(j'yx%hwSu%nhup%&'9%%9U"%%%I-%E(8EG,o-r(s/[%%,s%%%0%%%%%%%%%%%%E%%%'>V%%%yjwx%hwsS%unhuU"%p&'9%%9%%#%-%G^WIGv(nt^d%:%%,'s%%0%%%%%%%%%%%%E%%%%aa%%%tgo#jhU"y'%Sunh%up&'%9%9%%%%-%2+-EG]G#m/%l'%%+,s%%%/%%%%%%%%%&%E%.%%sv%U"%%lw%tzsi%Sunh%up&'%9%9%%%%-%4g%EG_Dr8F&47%%+,s%%%.%%%%%%%%%%%EU"%%%%8y%%%yn%yqjS%unhu%p&'9%%9%%%%-%F^lFG=2/bB*%)%%,'s%%0%%%%%%%U"%%%%%E%%1%n5%%%htr%xhws%Sunh%up&'%9%9%%%%-%/CtFGTC)e<%(-%%+,s%%U"%*%%%%%%%%%%%E%R%%F9%%%jS%unhu%p&'9%%9%%#%-%_D(HGJ'dO%D%.%%,'s%U"%0%%%%%%%%%%%%E%%4%lA%%%jsj%rnjx%Sunh%up&'%9%9%%%%-%4b0FG3Z#*n&U"'9%%+,s%%%/%%%%%%%%%%%E%#%%$K%%%hw%jfyj%Sunh%up&'%9%9%%%%-%1\%IU"G<e&p-'G4%%+,s%%%/%%%%%%%%%%%E%R%%4_%%%hf%xyqj%Sunh%up&'%9%9%%%U"%-%/>#EGE+e]c%/'%%%v0%%%-%%%%%%%%%&%E%R%%*o%%%rf%ljSu%fqup%&'9%U"%9%%%I-%v'AEG2M)sJ;'.%%(0%%%0%%%%%%%%%&%%E%%%*Zq%%.yj'y%xhwS%ufU"qu%p&'9%%9%%#%-%F)(EGv?o4g9#'%%(%0%%0%%%%%%%%%&%%E%%.%Et%%%yjw%U"xhws%Sufq%up&'%9%9%%%%-%/GWIG34\>%%7'%%%v0%%%0%%%%%%%%%&%E%I%%,U"v%%%tg%ojhy&'Suf%qup&%'9%9%%%%-L%+-E#GS(s&d0'%%%v0%%%/%%%%%%%%%U"&%E#%%%g&x%%l%wtzs%iSuf%qup&%'9%9%%%%-R%g%EUG:wW%q1'%(%(0%%%.%%U"%%%%%%%&%E[%%%D&z%%y%nyqj%Sufq%up&'%9%9%%%%-%.FlFGDiZ;f%4'%%%v0U"%%%0%%%%%%%%%&%E%m%%w&%%%ht%rxhw%sSuf%qup&%'9%9%%%%-C%CtFXGvW['U"$;'%(%(0%%%*%%%%%%%%%&%E%%%%[')%%j%Sufq%up&'%9%9%%%%-%2_(HGZcKOU"E%8'%%&(0%%%0%%%%%%%%%&%E%d%%>+%%%js%jrnj%xSuf%qup&%'9%9%%%%-R%U"e0FXGvW['$;'%(%(0%%%/%%%%%%%%%&%E#%%%z'-%%h%wjfy%jSuf%qup&%'9%9U"%%%%-I%\%ImGvo4'g9'%(%(0%%%/%%%%%%%%%&%E[%%%b'/%%h%fxyq%jSuf%quU"p&%'9%9%%%%-%%$0^%HGND,1n'%%%<,%%%,%%%%%%%%%&%E%%%%J'2%%w%ulSi%U"thup%*+%%%%%A%%A%8+[%%d5%%%%%END SUBV2V3V4V5CLOSE:IF S=41AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBChris Gunn                     CANYON                         Aaron Tucker                   10-11-97 (18:38)       QB, QBasic, PDS        103  3729     CANYON.BAS  'See if the changes below don't help make it easier to work.  Set up this way'you can tell which player crashed and into what.  I used the <Tab> key but you'could use "F"aster and "S"lower.'The two subroutines at the bottom are the timing secrets for all of my games.'Your FOR loop would create different speeds on different computers.'/\_/\ CANYON.BAS /\_/\ Hail to the Commodore PET!DECLARE SUB Timing (Dly#)SCREEN 0, 0, 0RANDOMIZE TIMERintensity = 3' 2 speed demon   3 default    4 lazy' 5 slow poke     6 grandma    7 snailCLSDIM Course(25) AS STRING * 80COLOR 12, 0FOR X% = 1 TO 25   Course(X%) = "" + SPACE$(78) + ""   LOCATE 24, 1: PRINT Course(X%)NEXT X%Speed# = .25  '  500 whoosh!  1000 wheee!    1500 cool!               ' 2000 ok       2500 <yawn>    3000 Commodore PET               ' 3500 <- baud  4000 zzzzz...               ' 3000+ would be fun with obstacles..' P1Alive = 0 : P2Alive = 0    'not yet implementedp1x = 33: p1y = 8       'Player 1's X and Y positionp2x = 38: p2y = 8       'Player 2's X and Y positionLWall = 20   'Left Wall X positionRWall = 50   'Right Wall X position  DO  Move$ = INKEY$   IF LEN(Move$) THEN      IF Move$ = CHR$(9) THEN Speed# = Speed# - .01 '<Tab> Speed up      IF Move$ = CHR$(0) + CHR$(15) THEN Speed# = Speed# + .01 '<Shift-Tab>       ' Player 1 Shift AZ (up and down)  <> (left and right)       IF Move$ = "," AND p1x > 1 THEN p1x = p1x - 1       IF Move$ = "." AND p1x < 79 THEN p1x = p1x + 1       ' Player 2 Shift 85 (up and down)  46 (left and right)       IF Move$ = "4" AND p2x > 1 THEN p2x = p2x - 1       IF Move$ = "6" AND p2x < 79 THEN p2x = p2x + 1   ELSE      ' Leave player in same column   END IF    ' Print screen  LOCATE p1y, p1x: COLOR 14, 1: PRINT "1"  LOCATE p2y, p2x: COLOR 8, 1: PRINT "2"  wallmove = INT(RND * intensity) + 1  IF wallmove = 1 AND LWall > 1 THEN LWall = LWall - 1: RWall = RWall - 1  IF wallmove = 2 AND RWall < 75 THEN LWall = LWall + 1: RWall = RWall + 1  ' !! !!  walls go in and out...neat huh?  CrushEm = INT(RND * 100) + 1  IF CrushEm < 15 AND LWall <> 1 THEN LWall = LWall - 1: RWall = RWall + 1  IF CrushEm < 15 THEN SOUND 1525, .5  IF CrushEm > 74 AND RWall <> 75 THEN LWall = LWall + 1: RWall = RWall - 1  IF CrushEm > 74 THEN SOUND 541, .5   IF Move$ = "\" THEN STOP   ' IF LWall + 2 = RWall THEN GOTO GameOver   IF MID$(Course(p1y), p1x, 1) > "9" THEN GOTO GameOver   IF MID$(Course(p2y), p2x, 1) > "9" THEN GOTO GameOver   IF MID$(Course(p1y), p1x, 1) = "2" THEN GOTO GameOver   IF MID$(Course(p2y), p2x, 1) = "1" THEN GOTO GameOver   Course(25) = "" + SPACE$(78) + ""   FOR X% = 1 TO 24      SWAP Course(X%), Course(X% + 1) ' Move everything up   NEXT X%   MID$(Course(23), LWall) = ""   MID$(Course(23), RWall) = ""   IF MID$(Course(p1y), p1x, 1) = " " THEN MID$(Course(p1y + 1), p1x) = "1"   IF MID$(Course(p2y), p2x, 1) = " " THEN MID$(Course(p2y + 1), p2x) = "2"   'IF LWall > 1 THEN LOCATE 24, LWall: COLOR 12, 0: PRINT "["   'IF RWall < 75 THEN LOCATE 23, RWall: COLOR 12, 0: PRINT "["   COLOR 12, 0   LOCATE 24, 1: PRINT Course(23)   Score% = Score% + 1  ' Control the loop timing  ' FOR DelayPause = 1 TO speed: NEXT DelayPause   CALL Timing(Speed#)LOOP UNTIL Move$ = CHR$(27)GameOver:  LOCATE 24, 1: COLOR 15, 4: PRINT "--SPLAT--   Score: "; Score%ENDSUB Holding (Dly#)'Precision time delay in seconds,tenths,and hundredthsBegin# = TIMERWHILE ABS(TIMER - Begin#) < Dly#: WENDEND SUBSUB Timing (Dly#) STATIC'Precision execution loop delayWHILE ABS(TIMER - Begin#) < Dly#: WENDBegin# = TIMEREND SUBRobert Colletta                ARCADE KOMBAT FATALITY DEMO    riley007@hotmail.com           12-15-97 (14:07)       QB, QBasic, PDS        1412 28500    AKDEMO.BAS  DECLARE SUB ghosty ()'ARCADE KOMBAT 1998 DEMO by Richard Colletta'Email me at RILEY007@HOTMAIL.COM'A SNEAK PEEK AT A WORK IN PROGRESS!'Send me your comments!'You may not use these graphics without permission'For more info on this game read comments at the end of this prog!DECLARE SUB arcade ()DECLARE SUB ghosty ()DECLARE SUB thepit ()SCREEN 13: CLSPSET (1, 1): PRINT "RICHARD COLLETTA'S ARCADE KOMBAT DEMO"PSET (1, 4): PRINT "COMING IN 1998"SLEEP 2CALL arcadeDIM arcad(1 TO 8000)GET (40, 40)-(100, 130), arcadPUT (100, 50), arcadCLSCALL ghostyDIM ghost(1 TO 600)GET (1, 1)-(40, 40), ghostCLSCALL thepitDIM pit(0 TO 500)GET (98, 97)-(136, 129), pitCLSax = 100: ay = 1CLSCOLOR 4: LOCATE 10, 10: PRINT "FINISH HIM!"PUT (20, 75), arcadPUT (100, 130), ghostFOR i% = 1 TO 280PUT (i%, 160), pitNEXTSLEEP 1LOCATE 10, 10: PRINT "           "SLEEP 2PUT (20, 75), arcadFOR i% = 50 TO 1 STEP -1PUT (20, i%), arcad, PSET: PUT (20, i%), arcad, PSETNEXTFOR x% = 20 TO 100PUT (x%, y%), arcad, PSET: PUT (x%, y%), arcad, PSETNEXTSLEEP 1FOR i% = 1 TO 70'LOCATE 1, 1: PRINT ax; i%PUT (ax, i%), arcad, PSET:'IF i% < 55 THEN PUT (100, 150), ghost, PSETPUT (ax, i%), arcad, PSETNEXT'blood 111 - 112 , 4FOR i% = 1 TO 70b = INT(RND * 5)IF b = 1 THEN col = 4: IF b = 2 THEN col = 111IF b = 3 THEN col = 112: IF b = 4 THEN col = 4PSET (RND * 100 + 10, RND * 10 + 150), colNEXTCOLOR 4: LOCATE 8, 10: PRINT "ARCADE WINS"SLEEP 1LOCATE 10, 10: PRINT "FATALITY!"'Arcade Kombat is a duel to the death between classic arcade characters.'Arcade is one of the bosses. There are 21 different players in all to'choose from. Each character has 3 special moves, 2 fatalities, and an'arcade fatality in which that character's arcade machine falls on the'opponent. Since, Arcade is an arcade machine he just jumps on them himself!'Hope you enjoyed this demo...Try to be patient with me. This takes'time and planning. RC 1997SUB arcadePSET (49, 80), 4PSET (50, 80), 4PSET (51, 80), 4PSET (52, 80), 4PSET (53, 80), 4PSET (54, 80), 4PSET (55, 80), 4PSET (56, 80), 4PSET (57, 80), 4PSET (58, 80), 4PSET (59, 80), 4PSET (60, 80), 4PSET (61, 80), 4PSET (62, 80), 4PSET (63, 80), 4PSET (64, 80), 4PSET (65, 80), 4PSET (66, 80), 4PSET (67, 80), 4PSET (68, 80), 4PSET (69, 80), 4PSET (70, 80), 4PSET (71, 80), 4PSET (72, 80), 4PSET (73, 80), 4PSET (74, 80), 4PSET (75, 80), 4PSET (76, 80), 4PSET (77, 80), 4PSET (78, 80), 4PSET (79, 80), 4PSET (79, 81), 4PSET (78, 82), 4PSET (78, 83), 4PSET (78, 84), 4PSET (77, 85), 4PSET (77, 86), 4PSET (76, 87), 4PSET (75, 88), 4PSET (75, 89), 4PSET (74, 90), 4PSET (73, 91), 4PSET (73, 92), 4PSET (72, 93), 4PSET (71, 94), 4PSET (71, 95), 4PSET (71, 96), 4PSET (71, 97), 4PSET (72, 97), 4PSET (73, 97), 4PSET (74, 97), 4PSET (75, 97), 4PSET (76, 97), 4PSET (77, 97), 4PSET (78, 97), 4PSET (79, 97), 4PSET (80, 97), 4PSET (80, 98), 4PSET (79, 99), 4PSET (79, 100), 4PSET (78, 101), 4PSET (78, 102), 4PSET (77, 103), 4PSET (76, 104), 4PSET (75, 104), 4PSET (75, 105), 4PSET (74, 106), 4PSET (73, 106), 4PSET (72, 106), 4PSET (71, 106), 4PSET (70, 106), 4PSET (70, 107), 4PSET (70, 108), 4PSET (70, 109), 4PSET (70, 110), 4PSET (70, 111), 4PSET (70, 112), 4PSET (70, 113), 4PSET (70, 114), 4PSET (70, 115), 4PSET (70, 116), 4PSET (70, 117), 4PSET (70, 118), 4PSET (70, 119), 4PSET (70, 120), 4PSET (70, 121), 4PSET (70, 122), 4PSET (69, 122), 4PSET (68, 122), 4PSET (67, 122), 4PSET (66, 122), 4PSET (65, 122), 4PSET (64, 122), 4PSET (63, 122), 4PSET (62, 122), 4PSET (61, 122), 4PSET (60, 122), 4PSET (59, 122), 4PSET (58, 122), 4PSET (57, 122), 4PSET (56, 122), 4PSET (55, 122), 4PSET (54, 122), 4PSET (53, 122), 4PSET (52, 122), 4PSET (52, 121), 4PSET (52, 120), 4PSET (52, 119), 4PSET (52, 118), 4PSET (52, 117), 4PSET (52, 116), 4PSET (52, 115), 4PSET (52, 114), 4PSET (52, 113), 4PSET (52, 112), 4PSET (52, 111), 4PSET (52, 110), 4PSET (52, 109), 4PSET (52, 108), 4PSET (52, 107), 4PSET (52, 106), 4PSET (52, 105), 4PSET (52, 104), 4PSET (52, 103), 4PSET (51, 102), 4PSET (51, 101), 4PSET (51, 100), 4PSET (51, 99), 4PSET (50, 98), 4PSET (50, 97), 4PSET (50, 96), 4PSET (50, 95), 4PSET (49, 94), 4PSET (49, 93), 4PSET (49, 92), 4PSET (49, 91), 4PSET (48, 90), 4PSET (48, 89), 4PSET (48, 88), 4PSET (48, 87), 4PSET (47, 86), 4PSET (47, 85), 4PSET (47, 84), 4PSET (47, 83), 4PSET (46, 82), 4PSET (46, 81), 4PSET (46, 80), 4PSET (47, 80), 4PSET (48, 80), 4DRAW "p4, 4"PSET (56, 90), 4PSET (56, 91), 4PSET (56, 92), 4PSET (56, 93), 4PSET (56, 94), 4PSET (57, 94), 4PSET (58, 94), 4PSET (59, 94), 4PSET (60, 94), 4PSET (60, 93), 4PSET (60, 92), 4PSET (60, 91), 4PSET (59, 91), 4PSET (59, 92), 4DRAW "bl2;p4,4"PSET (59, 93), 4PSET (59, 94), 4PSET (60, 94), 4PSET (61, 94), 4PSET (62, 94), 4PSET (62, 95), 4PSET (61, 95), 4PSET (60, 95), 4PSET (59, 95), 4PSET (59, 94), 4PSET (59, 93), 4PSET (59, 92), 4PSET (58, 92), 4PSET (57, 92), 4PSET (57, 91), 4PSET (56, 88), 9PSET (57, 88), 9PSET (58, 88), 9PSET (55, 89), 9PSET (55, 90), 9PSET (55, 91), 9PSET (55, 92), 9PSET (55, 93), 9PSET (55, 94), 9PSET (59, 90), 9PSET (59, 89), 9PSET (59, 90), 9PSET (59, 91), 9PSET (59, 92), 9PSET (59, 93), 9PSET (59, 94), 9PSET (58, 91), 9PSET (57, 91), 9PSET (56, 91), 9PSET (60, 90), 9PSET (60, 91), 9PSET (60, 92), 9PSET (60, 93), 9PSET (60, 94), 9PSET (60, 95), 9PSET (60, 96), 9PSET (60, 95), 9PSET (60, 94), 9PSET (60, 93), 9PSET (61, 92), 9PSET (62, 91), 9PSET (63, 90), 9PSET (62, 91), 9PSET (61, 92), 9PSET (62, 93), 9PSET (63, 94), 9PSET (64, 95), 9PSET (74, 91), 11PSET (75, 91), 11PSET (75, 90), 11PSET (76, 90), 11PSET (76, 89), 11PSET (77, 89), 11PSET (77, 88), 11PSET (76, 88), 11PSET (77, 88), 11PSET (77, 87), 11PSET (78, 87), 11PSET (78, 86), 11PSET (78, 85), 11PSET (78, 95), 51PSET (78, 96), 51PSET (77, 93), 54PSET (76, 93), 16PSET (77, 93), 16PSET (78, 93), 16PSET (77, 93), 33PSET (78, 93), 33PSET (78, 94), 33PSET (77, 93), 16PSET (78, 93), 16PSET (74, 96), 43PSET (60, 104), 27PSET (60, 105), 27PSET (60, 106), 27PSET (60, 107), 27PSET (60, 108), 27PSET (60, 109), 27PSET (60, 110), 27PSET (60, 111), 27PSET (61, 112), 27PSET (61, 113), 27PSET (60, 113), 29PSET (61, 113), 29PSET (62, 113), 29PSET (60, 114), 30PSET (62, 115), 30PSET (62, 114), 30PSET (62, 115), 4PSET (59, 110), 4PSET (59, 109), 4PSET (59, 108), 4PSET (59, 107), 4PSET (59, 106), 4PSET (59, 105), 4PSET (59, 104), 4PSET (59, 105), 4PSET (59, 106), 4PSET (60, 106), 4PSET (60, 105), 4PSET (60, 104), 4PSET (60, 105), 4PSET (60, 106), 4PSET (60, 107), 4PSET (60, 108), 4PSET (60, 109), 4PSET (60, 110), 4PSET (60, 111), 4PSET (61, 110), 24PSET (61, 111), 24PSET (61, 110), 24PSET (61, 109), 24PSET (61, 108), 24PSET (61, 107), 24PSET (61, 106), 24PSET (61, 105), 24PSET (61, 104), 24PSET (61, 103), 24PSET (72, 106), 24PSET (71, 106), 4PSET (72, 106), 4PSET (73, 108), 22PSET (72, 107), 22PSET (73, 108), 22PSET (74, 109), 22PSET (75, 110), 22PSET (74, 111), 25PSET (75, 110), 25PSET (76, 109), 25PSET (75, 110), 25PSET (74, 111), 25PSET (75, 111), 25PSET (74, 111), 16PSET (75, 111), 16PSET (74, 111), 16PSET (75, 110), 24PSET (74, 111), 24PSET (75, 112), 24PSET (74, 111), 24PSET (75, 110), 24PSET (76, 109), 24PSET (77, 110), 24PSET (78, 110), 16PSET (77, 110), 16PSET (76, 110), 16PSET (76, 111), 16PSET (76, 112), 16PSET (75, 112), 16PSET (74, 112), 16PSET (74, 111), 16PSET (75, 111), 16PSET (75, 110), 16PSET (76, 110), 16PSET (76, 109), 16PSET (75, 109), 16PSET (74, 109), 16PSET (74, 108), 16PSET (73, 108), 16PSET (73, 107), 16PSET (72, 107), 16PSET (44, 80), 23PSET (45, 80), 23PSET (45, 81), 23PSET (45, 82), 23PSET (45, 82), 23PSET (44, 82), 23PSET (44, 81), 23PSET (44, 82), 23PSET (44, 83), 23PSET (45, 83), 23PSET (46, 83), 23PSET (46, 84), 23PSET (45, 84), 23PSET (45, 85), 23PSET (46, 85), 23PSET (46, 86), 23PSET (45, 86), 23PSET (45, 87), 23PSET (46, 87), 23PSET (47, 87), 23PSET (47, 88), 23PSET (46, 88), 23PSET (46, 89), 23PSET (47, 89), 23PSET (47, 90), 23PSET (46, 90), 23PSET (47, 92), 23PSET (47, 91), 23PSET (48, 91), 23PSET (48, 92), 23PSET (48, 93), 23PSET (48, 94), 23PSET (48, 95), 23PSET (49, 95), 23PSET (49, 96), 23PSET (49, 97), 23PSET (49, 98), 23PSET (49, 99), 23PSET (50, 99), 23PSET (50, 100), 23PSET (50, 101), 23PSET (50, 102), 23PSET (50, 103), 23PSET (51, 103), 23PSET (51, 104), 23PSET (51, 105), 23PSET (51, 106), 23PSET (51, 107), 23PSET (51, 108), 23PSET (51, 109), 23PSET (51, 110), 23PSET (51, 111), 23PSET (51, 112), 23PSET (51, 113), 23PSET (51, 114), 23PSET (51, 115), 23PSET (51, 116), 23PSET (51, 117), 23PSET (51, 118), 23PSET (51, 119), 23PSET (51, 120), 23PSET (51, 121), 23PSET (51, 122), 23PSET (50, 121), 23PSET (50, 120), 23PSET (50, 119), 23PSET (50, 118), 23PSET (50, 117), 23PSET (50, 116), 23PSET (50, 115), 23PSET (50, 114), 23PSET (50, 113), 23PSET (50, 112), 23PSET (50, 111), 23PSET (50, 110), 23PSET (50, 109), 23PSET (50, 108), 23PSET (50, 107), 23PSET (50, 106), 23PSET (50, 105), 23PSET (50, 104), 23PSET (49, 104), 23PSET (49, 103), 23PSET (49, 102), 23PSET (49, 101), 23PSET (49, 100), 23PSET (48, 100), 23PSET (48, 99), 23PSET (48, 98), 23PSET (48, 97), 23PSET (48, 96), 23PSET (74, 92), 9PSET (75, 92), 9PSET (76, 91), 9PSET (77, 90), 9PSET (78, 89), 9PSET (78, 88), 9PSET (79, 87), 9PSET (79, 86), 9PSET (79, 85), 9PSET (78, 84), 9END SUBSUB ghostyPSET (15, 11), 53PSET (15, 10), 53PSET (16, 10), 53PSET (16, 9), 53PSET (17, 9), 53PSET (17, 8), 53PSET (18, 8), 53PSET (19, 8), 53PSET (20, 8), 53PSET (21, 8), 53PSET (22, 8), 53PSET (23, 8), 53PSET (24, 8), 53PSET (24, 9), 53PSET (25, 9), 53PSET (25, 10), 53PSET (26, 10), 53PSET (26, 11), 53PSET (26, 12), 53PSET (26, 13), 53PSET (26, 14), 53PSET (26, 15), 53PSET (27, 16), 53PSET (28, 17), 53PSET (29, 18), 53PSET (29, 19), 53PSET (29, 20), 53PSET (29, 21), 53PSET (29, 22), 53PSET (28, 21), 53PSET (27, 20), 53PSET (26, 19), 53PSET (26, 18), 53PSET (26, 19), 53PSET (26, 20), 53PSET (26, 21), 53PSET (26, 22), 53PSET (26, 23), 53PSET (26, 24), 53PSET (26, 25), 53PSET (26, 26), 53PSET (25, 25), 53PSET (24, 26), 53PSET (23, 25), 53PSET (22, 26), 53PSET (21, 25), 53PSET (20, 26), 53PSET (19, 25), 53PSET (18, 26), 53PSET (17, 25), 53PSET (16, 26), 53PSET (15, 25), 53PSET (15, 24), 53PSET (15, 23), 53PSET (15, 22), 53PSET (15, 21), 53PSET (15, 20), 53PSET (15, 19), 53PSET (15, 18), 53PSET (15, 19), 53PSET (14, 20), 53PSET (13, 21), 53PSET (13, 20), 53PSET (13, 21), 53PSET (12, 22), 53PSET (12, 21), 53PSET (12, 20), 53PSET (12, 19), 53PSET (13, 18), 53PSET (14, 17), 53PSET (15, 16), 53PSET (15, 15), 53PSET (15, 14), 53PSET (15, 13), 53PSET (15, 12), 53PSET (16, 11), 53PSET (16, 12), 53PSET (16, 13), 53PSET (16, 14), 53PSET (16, 15), 53PSET (16, 16), 53PSET (15, 17), 53PSET (14, 18), 53PSET (13, 19), 53PSET (14, 19), 53PSET (15, 19), 53PSET (16, 19), 53PSET (16, 20), 53PSET (16, 21), 53PSET (16, 22), 53PSET (16, 23), 53PSET (16, 24), 53PSET (16, 25), 53PSET (16, 24), 53PSET (17, 24), 53PSET (18, 24), 53PSET (18, 25), 53PSET (18, 24), 53PSET (19, 24), 53PSET (20, 24), 53PSET (20, 25), 53PSET (20, 24), 53PSET (21, 24), 53PSET (22, 24), 53PSET (22, 25), 53PSET (22, 24), 53PSET (23, 24), 53PSET (24, 24), 53PSET (24, 25), 53PSET (24, 24), 53PSET (25, 24), 53PSET (25, 23), 53PSET (25, 22), 53PSET (25, 21), 53PSET (25, 20), 53PSET (25, 19), 53PSET (25, 18), 53PSET (25, 17), 53PSET (25, 16), 53PSET (25, 15), 53PSET (25, 14), 53PSET (25, 13), 53PSET (25, 12), 53PSET (25, 11), 53PSET (24, 11), 53PSET (24, 10), 53PSET (23, 10), 53PSET (23, 9), 53PSET (22, 9), 53PSET (21, 9), 53PSET (20, 9), 53PSET (19, 9), 53PSET (18, 9), 53PSET (18, 10), 53PSET (17, 10), 53PSET (17, 11), 53PSET (17, 12), 53PSET (17, 13), 53PSET (17, 14), 53PSET (17, 15), 53PSET (17, 16), 53PSET (16, 16), 53PSET (16, 17), 53PSET (17, 17), 53PSET (17, 18), 53PSET (16, 18), 53PSET (16, 19), 53PSET (17, 19), 53PSET (17, 20), 53PSET (17, 21), 53PSET (17, 22), 53PSET (17, 23), 53PSET (18, 23), 53PSET (19, 23), 53PSET (20, 23), 53PSET (21, 23), 53PSET (22, 23), 53PSET (23, 23), 53PSET (24, 23), 53PSET (24, 22), 53PSET (24, 21), 53PSET (24, 20), 53PSET (24, 19), 53PSET (24, 18), 53PSET (24, 17), 53PSET (24, 16), 53PSET (24, 15), 53PSET (24, 14), 53PSET (24, 13), 53PSET (24, 12), 53PSET (23, 12), 53PSET (23, 11), 53PSET (22, 11), 53PSET (22, 10), 53PSET (21, 10), 53PSET (20, 10), 53PSET (19, 10), 53PSET (19, 11), 53PSET (18, 11), 53PSET (18, 12), 53PSET (18, 13), 53PSET (18, 14), 53PSET (18, 15), 53PSET (18, 16), 53PSET (18, 17), 53PSET (18, 18), 53PSET (18, 19), 53PSET (18, 20), 53PSET (18, 21), 53PSET (18, 22), 53PSET (19, 22), 53PSET (20, 22), 53PSET (21, 22), 53PSET (22, 22), 53PSET (23, 22), 53PSET (24, 22), 53PSET (24, 21), 53PSET (24, 20), 53PSET (24, 19), 53PSET (24, 18), 53PSET (24, 17), 53PSET (24, 16), 53PSET (24, 15), 53PSET (24, 14), 53PSET (23, 14), 53PSET (23, 13), 53PSET (22, 13), 53PSET (22, 12), 53PSET (21, 12), 53PSET (21, 11), 53PSET (20, 11), 53PSET (20, 12), 53PSET (20, 13), 53PSET (19, 13), 53PSET (19, 12), 53PSET (19, 13), 53PSET (19, 14), 53PSET (19, 15), 53PSET (19, 16), 53PSET (19, 17), 53PSET (19, 18), 53PSET (19, 19), 53PSET (19, 20), 53PSET (19, 21), 53PSET (20, 21), 53PSET (21, 21), 53PSET (22, 21), 53PSET (23, 21), 53PSET (23, 20), 53PSET (23, 19), 53PSET (23, 18), 53PSET (23, 17), 53PSET (23, 16), 53PSET (23, 15), 53PSET (23, 14), 53PSET (22, 14), 53PSET (22, 13), 53PSET (21, 13), 53PSET (21, 14), 53PSET (21, 15), 53PSET (21, 16), 53PSET (21, 17), 53PSET (21, 18), 53PSET (21, 19), 53PSET (21, 20), 53PSET (22, 20), 53PSET (22, 19), 53PSET (22, 18), 53PSET (22, 17), 53PSET (22, 16), 53PSET (22, 15), 53PSET (21, 15), 53PSET (20, 15), 53PSET (20, 14), 53PSET (20, 15), 53PSET (20, 16), 53PSET (20, 17), 53PSET (20, 18), 53PSET (20, 19), 53PSET (20, 20), 53PSET (20, 19), 53PSET (20, 18), 53PSET (20, 17), 53PSET (21, 17), 53PSET (22, 17), 53PSET (23, 17), 53PSET (24, 17), 53PSET (25, 17), 53PSET (26, 17), 53PSET (26, 16), 53PSET (26, 17), 53PSET (27, 17), 53PSET (27, 18), 53PSET (28, 18), 53PSET (28, 19), 53PSET (28, 20), 53PSET (28, 19), 53PSET (27, 19), 53PSET (26, 19), 53PSET (25, 19), 53PSET (17, 14), 16PSET (17, 15), 16PSET (17, 16), 16PSET (23, 15), 16PSET (23, 14), 16PSET (23, 15), 16PSET (23, 16), 16PSET (19, 21), 16PSET (20, 21), 16PSET (21, 21), 16PSET (19, 21), 16PSET (20, 21), 16PSET (20, 22), 16PSET (21, 22), 16PSET (20, 22), 16PSET (19, 22), 16PSET (22, 13), 30PSET (22, 14), 30PSET (23, 14), 30PSET (17, 14), 30PSET (21, 13), 52PSET (22, 13), 52PSET (23, 13), 52PSET (24, 13), 53PSET (25, 13), 53PSET (24, 13), 53PSET (23, 13), 53PSET (22, 13), 53PSET (21, 13), 53PSET (21, 14), 53PSET (21, 15), 53PSET (21, 16), 53PSET (21, 17), 53PSET (21, 16), 53PSET (22, 16), 53PSET (22, 15), 53PSET (22, 14), 53PSET (22, 13), 53PSET (22, 12), 53END SUBSUB thepitPSET (101, 100), 23PSET (102, 100), 23PSET (103, 100), 23PSET (104, 100), 23PSET (105, 100), 23PSET (106, 100), 23PSET (107, 100), 23PSET (108, 100), 23PSET (109, 100), 23PSET (110, 100), 23PSET (111, 100), 23PSET (112, 100), 23PSET (113, 100), 23PSET (114, 100), 23PSET (115, 100), 23PSET (116, 100), 23PSET (117, 100), 23PSET (118, 100), 23PSET (119, 100), 23PSET (120, 100), 23PSET (121, 100), 23PSET (122, 100), 23PSET (123, 100), 23PSET (124, 100), 23PSET (125, 100), 23PSET (126, 100), 23PSET (127, 100), 23PSET (128, 100), 23PSET (129, 100), 23PSET (130, 100), 23PSET (131, 100), 23PSET (131, 101), 23PSET (131, 102), 23PSET (131, 103), 23PSET (131, 104), 23PSET (131, 105), 23PSET (131, 106), 23PSET (131, 107), 23PSET (131, 108), 23PSET (131, 109), 23PSET (131, 110), 23PSET (131, 111), 23PSET (131, 112), 23PSET (131, 113), 23PSET (130, 113), 23PSET (129, 113), 23PSET (128, 113), 23PSET (127, 113), 23PSET (126, 113), 23PSET (125, 113), 23PSET (124, 113), 23PSET (123, 113), 23PSET (122, 113), 23PSET (121, 113), 23PSET (120, 113), 23PSET (119, 113), 23PSET (118, 113), 23PSET (117, 113), 23PSET (116, 113), 23PSET (115, 113), 23PSET (114, 113), 23PSET (113, 113), 23PSET (112, 113), 23PSET (111, 113), 23PSET (110, 113), 23PSET (109, 113), 23PSET (108, 113), 23PSET (107, 113), 23PSET (106, 113), 23PSET (105, 113), 23PSET (104, 113), 23PSET (103, 113), 23PSET (103, 112), 23PSET (103, 111), 23PSET (103, 110), 23PSET (103, 109), 23PSET (103, 108), 23PSET (103, 107), 23PSET (103, 106), 23PSET (103, 105), 23PSET (103, 104), 23PSET (103, 103), 23PSET (103, 102), 23PSET (103, 101), 23PSET (102, 101), 23PSET (101, 101), 23PSET (101, 102), 23PSET (101, 103), 23PSET (101, 104), 23PSET (101, 105), 23PSET (101, 106), 23PSET (101, 107), 23PSET (101, 108), 23PSET (101, 109), 23PSET (101, 110), 23PSET (101, 111), 23PSET (101, 112), 23PSET (101, 113), 23PSET (102, 113), 23PSET (102, 112), 23PSET (102, 111), 23PSET (102, 110), 23PSET (102, 109), 23PSET (102, 108), 23PSET (102, 107), 23PSET (102, 106), 23PSET (102, 105), 23PSET (102, 104), 23PSET (102, 103), 23PSET (102, 102), 23PSET (102, 101), 23PSET (103, 101), 23PSET (104, 101), 23PSET (105, 101), 23PSET (106, 101), 23PSET (107, 101), 23PSET (108, 101), 23PSET (109, 101), 23PSET (110, 101), 23PSET (111, 101), 23PSET (112, 101), 23PSET (113, 101), 23PSET (114, 101), 23PSET (115, 101), 23PSET (116, 101), 23PSET (117, 101), 23PSET (118, 101), 23PSET (119, 101), 23PSET (120, 101), 23PSET (121, 101), 23PSET (122, 101), 23PSET (123, 101), 23PSET (124, 101), 23PSET (125, 101), 23PSET (126, 101), 23PSET (127, 101), 23PSET (128, 101), 23PSET (129, 101), 23PSET (130, 101), 23PSET (130, 102), 23PSET (130, 103), 23PSET (130, 104), 23PSET (130, 105), 23PSET (130, 106), 23PSET (130, 107), 23PSET (130, 108), 23PSET (130, 109), 23PSET (130, 110), 23PSET (130, 111), 23PSET (129, 111), 23PSET (128, 111), 23PSET (127, 111), 23PSET (126, 111), 23PSET (125, 111), 23PSET (125, 112), 23PSET (126, 112), 23PSET (127, 112), 23PSET (128, 112), 23PSET (129, 112), 23PSET (130, 112), 23PSET (129, 112), 23PSET (128, 112), 23PSET (127, 112), 23PSET (126, 112), 23PSET (125, 112), 23PSET (124, 112), 23PSET (123, 112), 23PSET (122, 112), 23PSET (121, 112), 23PSET (120, 112), 23PSET (119, 112), 23PSET (118, 112), 23PSET (117, 112), 23PSET (116, 112), 23PSET (115, 112), 23PSET (114, 112), 23PSET (113, 112), 23PSET (112, 112), 23PSET (111, 112), 23PSET (110, 112), 23PSET (109, 112), 23PSET (108, 112), 23PSET (107, 112), 23PSET (106, 112), 23PSET (105, 112), 23PSET (104, 112), 23PSET (104, 111), 23PSET (104, 110), 23PSET (104, 109), 23PSET (104, 108), 23PSET (104, 107), 23PSET (104, 106), 23PSET (104, 105), 23PSET (104, 104), 23PSET (104, 103), 23PSET (105, 103), 23PSET (105, 102), 23PSET (104, 102), 23PSET (105, 102), 23PSET (106, 102), 23PSET (107, 102), 23PSET (108, 102), 23PSET (109, 102), 23PSET (110, 102), 23PSET (111, 102), 23PSET (112, 102), 23PSET (113, 102), 23PSET (114, 102), 23PSET (115, 102), 23PSET (116, 102), 23PSET (117, 102), 23PSET (118, 102), 23PSET (119, 102), 23PSET (120, 102), 23PSET (121, 102), 23PSET (122, 102), 23PSET (123, 102), 23PSET (124, 102), 23PSET (125, 102), 23PSET (126, 102), 23PSET (127, 102), 23PSET (128, 102), 23PSET (129, 102), 23PSET (129, 103), 23PSET (128, 103), 23PSET (127, 103), 23PSET (126, 103), 23PSET (125, 103), 23PSET (124, 103), 23PSET (123, 103), 23PSET (122, 103), 23PSET (121, 103), 23PSET (120, 103), 23PSET (119, 103), 23PSET (118, 103), 23PSET (117, 103), 23PSET (116, 103), 23PSET (115, 103), 23PSET (114, 103), 23PSET (113, 103), 23PSET (112, 103), 23PSET (111, 103), 23PSET (110, 103), 23PSET (109, 103), 23PSET (108, 103), 23PSET (107, 103), 23PSET (106, 103), 23PSET (105, 103), 23PSET (105, 104), 23PSET (106, 104), 23PSET (107, 104), 23PSET (108, 104), 23PSET (109, 104), 23PSET (110, 104), 23PSET (111, 104), 23PSET (112, 104), 23PSET (113, 104), 23PSET (114, 104), 23PSET (115, 104), 23PSET (116, 104), 23PSET (117, 104), 23PSET (118, 104), 23PSET (119, 104), 23PSET (120, 104), 23PSET (121, 104), 23PSET (122, 104), 23PSET (123, 104), 23PSET (124, 104), 23PSET (125, 104), 23PSET (126, 104), 23PSET (127, 104), 23PSET (128, 104), 23PSET (129, 104), 23PSET (129, 105), 23PSET (128, 105), 23PSET (127, 105), 23PSET (126, 105), 23PSET (125, 105), 23PSET (124, 105), 23PSET (123, 105), 23PSET (122, 105), 23PSET (121, 105), 23PSET (120, 105), 23PSET (119, 105), 23PSET (118, 105), 23PSET (117, 105), 23PSET (116, 105), 23PSET (115, 105), 23PSET (114, 105), 23PSET (113, 105), 23PSET (112, 105), 23PSET (111, 105), 23PSET (110, 105), 23PSET (109, 105), 23PSET (108, 105), 23PSET (107, 105), 23PSET (106, 105), 23PSET (105, 105), 23PSET (105, 106), 23PSET (106, 106), 23PSET (107, 106), 23PSET (108, 106), 23PSET (109, 106), 23PSET (110, 106), 23PSET (111, 106), 23PSET (112, 106), 23PSET (113, 106), 23PSET (114, 106), 23PSET (115, 106), 23PSET (116, 106), 23PSET (117, 106), 23PSET (118, 106), 23PSET (119, 106), 23PSET (120, 106), 23PSET (121, 106), 23PSET (122, 106), 23PSET (123, 106), 23PSET (124, 106), 23PSET (125, 106), 23PSET (126, 106), 23PSET (127, 106), 23PSET (128, 106), 23PSET (129, 106), 23PSET (129, 107), 23PSET (128, 107), 23PSET (127, 107), 23PSET (126, 107), 23PSET (125, 107), 23PSET (124, 107), 23PSET (123, 107), 23PSET (122, 107), 23PSET (121, 107), 23PSET (120, 107), 23PSET (119, 107), 23PSET (118, 107), 23PSET (117, 107), 23PSET (116, 107), 23PSET (115, 107), 23PSET (114, 107), 23PSET (113, 107), 23PSET (112, 107), 23PSET (111, 107), 23PSET (110, 107), 23PSET (109, 107), 23PSET (108, 107), 23PSET (107, 107), 23PSET (106, 107), 23PSET (105, 107), 23PSET (105, 108), 23PSET (106, 108), 23PSET (107, 108), 23PSET (108, 108), 23PSET (109, 108), 23PSET (110, 108), 23PSET (111, 108), 23PSET (112, 108), 23PSET (113, 108), 23PSET (114, 108), 23PSET (115, 108), 23PSET (116, 108), 23PSET (117, 108), 23PSET (118, 108), 23PSET (119, 108), 23PSET (120, 108), 23PSET (121, 108), 23PSET (122, 108), 23PSET (123, 108), 23PSET (124, 108), 23PSET (125, 108), 23PSET (126, 108), 23PSET (127, 108), 23PSET (128, 108), 23PSET (129, 108), 23PSET (129, 109), 23PSET (128, 109), 23PSET (127, 109), 23PSET (126, 109), 23PSET (125, 109), 23PSET (124, 109), 23PSET (123, 109), 23PSET (122, 109), 23PSET (121, 109), 23PSET (120, 109), 23PSET (119, 109), 23PSET (118, 109), 23PSET (117, 109), 23PSET (116, 109), 23PSET (115, 109), 23PSET (114, 109), 23PSET (113, 109), 23PSET (112, 109), 23PSET (111, 109), 23PSET (110, 109), 23PSET (109, 109), 23PSET (108, 109), 23PSET (107, 109), 23PSET (106, 109), 23PSET (105, 109), 23PSET (104, 109), 23PSET (104, 110), 23PSET (105, 110), 23PSET (106, 110), 23PSET (107, 110), 23PSET (108, 110), 23PSET (109, 110), 23PSET (110, 110), 23PSET (111, 110), 23PSET (112, 110), 23PSET (113, 110), 23PSET (114, 110), 23PSET (115, 110), 23PSET (116, 110), 23PSET (117, 110), 23PSET (118, 110), 23PSET (119, 110), 23PSET (120, 110), 23PSET (121, 110), 23PSET (122, 110), 23PSET (123, 110), 23PSET (124, 110), 23PSET (125, 110), 23PSET (126, 110), 23PSET (127, 110), 23PSET (128, 110), 23PSET (129, 110), 23PSET (130, 110), 23PSET (130, 111), 23PSET (129, 111), 23PSET (128, 111), 23PSET (127, 111), 23PSET (126, 111), 23PSET (125, 111), 23PSET (124, 111), 23PSET (123, 111), 23PSET (122, 111), 23PSET (121, 111), 23PSET (120, 111), 23PSET (119, 111), 23PSET (118, 111), 23PSET (117, 111), 23PSET (116, 111), 23PSET (115, 111), 23PSET (114, 111), 23PSET (113, 111), 23PSET (112, 111), 23PSET (111, 111), 23PSET (110, 111), 23PSET (109, 111), 23PSET (108, 111), 23PSET (107, 111), 23PSET (106, 111), 23PSET (105, 111), 23PSET (112, 113), 24PSET (112, 114), 24PSET (112, 115), 24PSET (112, 116), 24PSET (112, 117), 24PSET (112, 118), 24PSET (112, 119), 24PSET (112, 120), 24PSET (112, 121), 24PSET (112, 122), 24PSET (112, 123), 24PSET (112, 124), 24PSET (112, 125), 24PSET (112, 126), 24PSET (112, 127), 24PSET (112, 128), 24PSET (113, 128), 24PSET (114, 128), 24PSET (115, 128), 24PSET (115, 127), 24PSET (115, 126), 24PSET (115, 125), 24PSET (115, 124), 24PSET (115, 123), 24PSET (115, 122), 24PSET (115, 121), 24PSET (115, 120), 24PSET (115, 119), 24PSET (115, 118), 24PSET (115, 117), 24PSET (115, 116), 24PSET (115, 115), 24PSET (115, 114), 24PSET (114, 114), 24PSET (113, 114), 24PSET (113, 115), 24PSET (113, 116), 24PSET (113, 117), 24PSET (113, 118), 24PSET (113, 119), 24PSET (113, 120), 24PSET (113, 121), 24PSET (113, 122), 24PSET (113, 123), 24PSET (113, 124), 24PSET (113, 125), 24PSET (113, 126), 24PSET (113, 127), 24PSET (114, 127), 24PSET (114, 126), 24PSET (114, 125), 24PSET (114, 124), 24PSET (114, 123), 24PSET (114, 122), 24PSET (114, 121), 24PSET (114, 120), 24PSET (114, 119), 24PSET (114, 118), 24PSET (114, 117), 24PSET (114, 116), 24PSET (114, 115), 24PSET (113, 113), 23PSET (112, 113), 23PSET (111, 113), 23PSET (116, 116), 21PSET (116, 117), 21PSET (116, 116), 21PSET (116, 115), 21PSET (116, 114), 21PSET (117, 114), 21PSET (118, 114), 21PSET (119, 114), 21PSET (119, 115), 21PSET (119, 116), 21PSET (119, 117), 21PSET (119, 118), 21PSET (119, 119), 21PSET (119, 120), 21PSET (119, 121), 21PSET (119, 122), 21PSET (119, 123), 21PSET (119, 124), 21PSET (119, 125), 21PSET (119, 126), 21PSET (119, 127), 21PSET (119, 128), 21PSET (118, 128), 21PSET (117, 128), 21PSET (116, 128), 21PSET (116, 127), 21PSET (116, 126), 21PSET (116, 125), 21PSET (116, 124), 21PSET (116, 123), 21PSET (116, 122), 21PSET (116, 121), 21PSET (116, 120), 21PSET (116, 119), 21PSET (116, 118), 21PSET (116, 117), 21PSET (116, 116), 21PSET (116, 115), 21PSET (117, 115), 21PSET (118, 115), 21PSET (118, 116), 21PSET (118, 117), 21PSET (118, 118), 21PSET (118, 119), 21PSET (118, 120), 21PSET (118, 121), 21PSET (118, 122), 21PSET (118, 123), 21PSET (118, 124), 21PSET (118, 125), 21PSET (118, 126), 21PSET (117, 126), 21PSET (117, 127), 21PSET (118, 127), 21PSET (117, 127), 21PSET (117, 126), 21PSET (117, 125), 21PSET (117, 124), 21PSET (117, 123), 21PSET (117, 122), 21PSET (117, 121), 21PSET (117, 120), 21PSET (117, 119), 21PSET (117, 118), 21PSET (117, 117), 21PSET (117, 116), 21END SUBWarren Seyle                   DEMO WITH A NICE PICTURE       wseyle@awod.com                03-17-98 (13:34)       QB, QBasic, PDS        1073 77417    DEMO.BAS    DECLARE SUB GPrint (Text$, X AS INTEGER, Y AS INTEGER, FColor AS INTEGER, sx AS INTEGER, sy AS INTEGER)DECLARE SUB BlankScreen ()DECLARE SUB ShowScreen ()DECLARE SUB LoadGraphics ()DECLARE SUB ShowBackGround ()DECLARE SUB ShowBlond ()DECLARE SUB LoadPalette ()DECLARE SUB Title (X AS INTEGER, Y AS INTEGER)DECLARE SUB Frame (X AS INTEGER, Y AS INTEGER, X1 AS INTEGER, Y1 AS INTEGER)DEFINT A-ZREDIM SHARED RedOctagon(500) AS INTEGER              SCREEN 13              COLOR 15: LOCATE 10, 10              PRINT "For YU, William YU!"              LOCATE 12, 13: PRINT "Press any key"              DO              LOOP WHILE INKEY$ = ""                   BlankScreen                   LoadPalette                   LoadGraphics                   ShowBackGround                   ShowBlond                   ShowScreen                   GPrint "Excellent", 115, 175, 247, 1, 1                    DO                    LOOP WHILE INKEY$ = ""                    SCREEN 0                    CLS                    COLOR 15                    ENDRedOctagonImage:DATA 144,144,144,141,131,131,131,131,131,131,131,126,144,144,144DATA 144,144,141,141,131,131,131,131,131,131,131,126,126,144,144DATA 144,141,141,141,131,131,131,131,131,131,131,126,126,126,144DATA 141,141,141,141,131,131,131,131,131,131,131,126,126,126,126DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 130,130,130,130,141,141,141,141,141,141,141,122,122,122,122DATA 122,122,122,122,119,119,119,119,119,119,119,109,109,109,109DATA 144,122,122,122,119,119,119,119,119,119,119,109,109,109,144DATA 144,144,122,122,119,119,119,119,119,119,119,109,109,144,144DATA 144,144,144,122,119,119,119,119,119,119,119,109,144,144,144BlondBeauty:DATA 193,152,210,152,032,193,193,193,152,210,032,152,152,193,193,193,193,152DATA 193,193,152,193,152,152,050,117,012,243,181,202,023,148,229,181,155,205DATA 012,012,148,229,251,207,184,202,184,184,229,184,155,148,229,229,184,184DATA 202,202,159,159,026,159,201,140,140,196,207,103,202,202,148,012,021,021DATA 223,223,117,050,117,223,021,223,160,096,201,201,180,092,110,161,161,161DATA 161,045,161,045,045,045,045,045,161,161,232,045,250,250,250,250,250,250DATA 032,152,193,193,193,193,152,193,193,193,152,193,193,193,193,152,152,152DATA 152,152,152,152,117,117,117,108,229,184,229,155,229,155,202,202,155,021DATA 160,048,202,201,145,028,207,014,184,184,229,185,229,229,148,229,229,229DATA 184,184,201,201,207,140,014,103,207,140,028,028,055,201,202,184,048,012DATA 167,012,223,223,021,223,223,223,223,043,201,245,127,110,110,092,161,161DATA 232,161,161,045,173,173,161,161,040,040,045,173,045,250,250,173,250,250DATA 152,193,152,193,152,152,152,152,152,152,152,152,152,152,152,152,152,117DATA 152,152,050,050,117,117,148,167,202,014,014,229,148,202,202,229,148,184DATA 202,205,229,229,140,140,201,202,184,229,229,229,023,023,205,203,096,205DATA 205,033,229,202,202,125,103,140,140,140,028,196,055,028,028,202,184,229DATA 023,160,021,223,012,012,021,223,160,243,154,201,140,110,110,072,161,182DATA 161,161,040,045,045,045,045,161,161,170,040,045,045,045,045,045,173,045DATA 032,152,152,210,193,152,032,152,210,193,152,032,152,152,210,152,193,050DATA 152,152,152,152,117,051,021,021,026,207,207,014,184,184,148,184,014,229DATA 023,121,203,229,202,224,246,026,229,229,229,203,023,203,023,023,023,023DATA 203,203,148,148,229,202,201,014,207,207,207,207,140,055,028,055,207,207DATA 184,148,048,096,223,160,043,012,043,012,184,245,240,134,110,110,182,084DATA 161,161,161,045,040,161,161,161,133,170,040,040,045,040,161,045,045,045DATA 152,193,152,152,152,210,193,193,152,032,152,193,032,152,152,152,152,088DATA 050,050,152,152,061,155,048,181,207,195,192,028,207,202,125,202,184,203DATA 096,096,148,184,066,023,096,155,181,066,096,023,167,096,096,096,023,023DATA 148,229,229,229,026,184,202,026,026,201,140,207,028,028,028,055,055,207DATA 207,202,184,148,096,012,012,223,012,023,184,201,207,143,092,084,084,161DATA 161,161,161,161,161,040,161,186,170,170,161,161,161,161,161,161,040,161DATA 032,193,152,193,152,032,152,210,193,032,152,210,210,210,032,152,115,152DATA 152,088,117,243,103,223,148,195,028,145,028,052,207,201,201,246,148,023DATA 043,012,066,096,021,160,096,203,203,066,243,043,023,023,203,066,229,229DATA 184,202,065,014,014,014,240,201,014,014,014,140,207,028,028,028,192,195DATA 145,192,014,201,184,229,023,096,023,023,229,195,180,143,182,143,084,182DATA 170,170,170,161,170,170,186,170,186,170,170,186,092,110,170,092,161,170DATA 152,193,032,210,210,193,032,193,210,152,210,152,152,193,152,210,152,138DATA 152,152,117,103,224,167,201,028,140,028,120,120,192,201,184,203,023,160DATA 243,043,203,203,023,203,203,023,148,090,148,229,184,184,184,184,184,202DATA 105,184,202,026,125,125,014,125,201,014,014,140,207,028,028,055,055,145DATA 192,055,207,207,140,201,202,184,229,023,184,120,180,110,198,217,143,110DATA 092,092,092,170,040,170,170,161,170,092,170,007,239,239,239,110,092,170DATA 032,152,210,193,152,152,193,032,152,193,210,032,032,152,138,152,152,152DATA 152,088,033,051,096,229,207,120,145,014,192,028,145,184,184,023,023,043DATA 096,023,023,023,023,096,066,203,066,229,184,184,013,229,148,203,023,023DATA 148,148,184,202,184,201,201,014,240,014,014,014,014,014,014,140,028,028DATA 145,145,191,207,207,028,014,202,184,148,183,191,198,180,107,182,163,198DATA 110,182,170,170,170,083,186,170,133,170,092,110,239,239,239,239,239,110DATA 152,210,152,152,032,193,193,152,152,210,152,193,210,152,115,152,152,138DATA 152,152,096,051,096,202,195,120,120,207,014,140,192,014,184,184,203,202DATA 240,125,184,229,023,203,205,203,148,023,023,023,023,023,203,066,229,184DATA 229,184,184,184,184,184,125,201,125,014,014,240,195,145,195,207,140,207DATA 140,028,055,028,055,207,028,207,014,201,014,145,180,217,234,084,143,110DATA 092,249,161,170,092,186,239,092,170,040,092,239,239,239,102,239,110,239DATA 193,032,032,210,032,152,210,152,152,193,152,032,152,193,152,210,210,152,115,50,243,202,183,159,120,120,191,14,201,184,207,192,229,184,246,66,26,184,229,246,184,26,184,66,246,203,246,184,185,203,246,229,229,184,184,184,184,184,184,184,125,201,207,207,145,55,55,55,145,145,195,28,240,195,28,195,28,28,140,28,28,55,145,35,64,171,93,217,123,123,143,182,170,249,170,239,239,92,161,161,92,7,239,252,57,151,239,239DATA 152,210,210,32,152,210,152,210,152,193,152,152,138,32,152,32,152,223,117,160,184,159,207,195,145,120,240,125,184,184,202,192,26,184,184,243,43,43,23,23,23,96,66,184,26,26,202,201,184,201,201,125,201,201,184,202,184,201,207,207,100,28,145,77,77,35,35,35,64,64,35,145,120,145,55,145,192,145,145,145,120,52,46,77,219,11,35,84,123,182,161,249,182,133,170,92,57,92,232,170,110,7,239,151,102,102,102,57DATA 193,193,115,50,152,210,152,152,32,193,115,50,152,152,152,117,223,117,117,183,207,207,195,145,120,28,14,105,229,246,229,207,202,202,246,229,203,160,160,43,43,96,43,96,96,121,23,205,246,246,66,184,184,245,207,207,145,145,145,192,207,207,125,14,140,195,55,120,145,120,120,120,120,192,120,52,145,145,145,120,145,77,120,52,35,35,219,84,161,199,232,113,232,199,83,92,239,182,161,182,182,110,239,57,102,102,222,238DATA 152,193,152,115,193,152,152,210,152,152,152,152,88,117,50,117,117,12,96,55,85,120,28,28,192,195,14,184,246,66,203,201,14,184,184,66,229,184,203,23,23,43,243,43,160,43,160,43,43,203,148,229,201,145,64,35,35,46,35,145,120,191,207,245,207,145,35,137,35,120,145,120,127,192,145,145,120,120,120,192,120,192,120,120,52,35,217,84,199,232,232,232,199,249,249,92,92,161,170,84,110,110,239,57,102,139,238,128DATA 152,193,152,193,152,152,138,152,50,50,152,152,117,12,243,229,229,184,207,207,195,145,207,140,14,14,125,159,184,246,184,229,14,184,26,184,246,229,229,184,229,90,66,203,203,90,246,184,184,184,245,145,107,64,64,77,191,207,195,240,207,195,120,35,64,64,35,120,35,77,180,28,195,195,191,192,145,145,192,120,145,180,120,120,120,52,217,219,182,189,189,232,199,161,161,123,182,249,143,93,182,110,110,102,238,238,95,95DATA 152,152,152,152,138,152,152,152,115,152,223,96,183,202,159,55,55,201,14,207,145,145,240,240,201,201,125,184,184,229,184,184,184,201,184,184,229,246,246,148,184,229,185,13,184,184,184,90,202,55,137,64,46,120,145,207,240,240,240,240,140,195,120,64,85,68,68,68,162,171,46,87,240,201,240,191,195,191,192,192,180,52,77,120,180,180,52,84,189,182,199,189,199,116,143,182,182,123,93,161,83,170,239,57,238,231,42,149DATA 152,210,193,193,115,193,152,117,152,181,96,148,160,148,35,35,35,55,28,14,201,240,207,14,65,65,201,154,26,184,184,229,184,184,201,184,184,184,229,184,184,184,184,184,184,184,184,195,145,120,35,120,145,145,240,195,207,207,65,184,207,191,64,234,68,194,194,208,189,68,84,163,52,245,246,240,65,100,192,192,192,192,120,120,180,120,180,35,171,162,68,189,189,93,199,182,182,68,93,182,170,92,239,198,231,42,149,149DATA 152,152,193,152,152,152,138,117,117,167,223,223,167,202,120,120,180,145,145,140,14,65,26,140,14,201,184,229,184,26,201,201,201,201,184,14,14,14,65,125,125,154,184,154,14,195,120,120,35,120,192,207,240,14,14,201,184,184,184,207,120,64,189,208,68,171,52,120,55,35,162,143,52,52,240,184,240,65,100,100,195,191,127,127,180,180,52,217,219,234,68,68,93,199,199,182,68,93,182,182,182,92,57,238,42,95,41,191DATA 210,32,152,32,152,115,152,152,50,12,243,12,223,26,240,100,28,192,195,192,55,207,14,184,184,125,14,184,246,66,246,184,201,201,125,184,26,125,201,184,184,201,240,195,120,120,145,145,207,14,240,201,184,184,201,201,14,245,159,120,217,162,35,52,120,145,120,64,171,162,171,219,84,219,127,154,201,245,240,240,166,195,195,192,127,180,180,46,171,162,162,162,68,189,182,68,93,182,116,93,93,84,110,238,42,149,191,69DATA 32,210,210,79,210,210,115,210,152,138,88,175,66,140,240,140,195,195,28,195,195,28,207,14,201,184,202,201,184,184,13,229,184,184,202,201,201,14,240,240,240,192,145,145,145,145,195,14,245,207,207,184,245,201,245,245,245,14,35,171,52,120,120,195,120,64,93,93,11,182,171,171,35,219,180,127,245,13,13,65,240,100,192,127,120,87,52,180,52,35,219,11,234,171,68,162,68,199,199,199,182,171,217,87,95,149,191,195DATA 210,210,210,210,210,115,210,152,175,117,243,184,14,195,145,191,195,14,14,28,191,195,28,14,140,207,184,184,26,26,184,184,184,184,184,184,26,184,184,202,207,120,120,100,195,55,240,14,145,95,245,184,184,245,184,245,14,120,180,120,191,120,95,35,171,171,68,68,68,234,234,162,52,52,180,52,100,245,135,168,65,240,100,191,127,87,180,52,84,217,171,171,162,234,162,171,171,234,189,189,93,84,198,238,120,149,191,191DATA 115,152,32,115,138,152,115,43,160,43,184,14,207,195,192,195,195,145,191,195,14,65,240,195,14,14,207,14,184,184,201,125,26,125,125,125,154,125,201,195,180,145,207,145,145,100,195,145,145,245,184,245,71,185,245,240,195,180,180,95,120,120,180,35,219,85,234,68,64,192,145,192,35,180,52,180,127,14,184,184,245,240,100,192,95,180,52,35,52,219,35,219,219,162,171,234,68,189,93,199,249,110,238,42,149,191,100,195DATA 152,88,117,152,88,152,160,66,96,184,125,201,240,28,180,191,207,192,191,240,14,184,201,14,201,14,240,201,14,201,184,184,184,184,184,26,202,207,192,52,207,201,145,145,195,240,145,145,195,245,245,184,184,245,206,240,120,120,127,149,180,35,180,171,68,68,162,217,35,145,240,207,207,35,52,87,87,191,245,13,184,100,191,191,127,180,35,217,35,35,171,171,171,171,162,171,171,93,182,182,182,134,87,149,41,191,100,195DATA 32,152,88,117,117,117,243,43,184,184,14,202,145,145,120,192,191,140,140,14,125,125,184,184,154,201,184,154,202,154,184,26,184,184,246,184,28,145,120,240,245,195,145,240,240,191,120,145,100,206,245,245,245,245,245,100,149,180,95,180,52,52,198,107,68,171,107,219,35,35,120,120,171,35,180,52,163,87,65,154,227,14,195,127,127,87,52,84,219,11,162,171,162,162,182,93,171,171,84,84,162,163,238,42,191,195,195,100DATA 138,88,50,178,223,223,23,207,14,207,201,191,195,180,28,207,195,195,207,14,14,207,240,207,125,125,201,201,184,184,184,246,90,229,14,195,180,145,240,14,55,145,195,240,145,35,120,191,191,240,245,240,245,245,240,145,120,127,120,35,42,217,162,68,171,171,143,143,64,42,120,107,234,171,35,219,87,192,191,195,154,164,240,195,195,127,52,35,219,171,11,11,171,162,93,171,171,219,35,171,143,163,198,95,191,195,100,195DATA 223,88,223,243,90,202,26,28,201,195,207,195,145,192,195,195,28,195,195,140,240,240,140,195,14,14,14,125,184,168,13,185,201,192,145,145,140,240,14,195,240,245,245,195,120,120,120,69,100,100,245,60,245,240,206,69,42,69,180,42,180,171,68,162,182,143,68,171,198,180,234,68,68,162,219,52,192,195,191,156,13,184,13,14,191,192,87,219,219,162,219,171,11,171,11,219,217,219,219,217,219,180,180,120,145,191,195,240DATA 181,66,66,160,160,23,148,207,120,192,192,195,192,195,28,166,140,14,14,65,125,229,184,184,125,14,65,184,65,201,14,195,145,55,192,195,14,14,240,14,100,240,195,120,145,35,100,69,206,245,206,245,245,240,100,145,120,145,180,120,217,162,171,182,171,171,171,171,68,68,68,68,68,93,163,195,191,191,192,166,154,154,90,154,100,149,42,52,219,162,85,171,64,171,171,171,64,171,171,171,64,64,180,238,95,195,195,195DATA 160,175,223,160,23,205,184,207,55,195,145,195,195,140,240,14,14,65,125,184,246,13,203,121,135,246,184,184,184,240,145,28,120,195,14,14,14,245,245,240,206,145,120,35,137,195,145,240,206,245,245,154,206,206,195,95,42,35,42,180,171,217,182,171,182,171,182,143,171,68,189,68,68,171,140,195,127,127,120,191,154,65,154,184,65,191,127,42,35,171,162,11,171,46,219,46,219,64,217,85,217,171,35,120,191,240,14,14DATA 175,152,74,223,148,201,229,207,145,145,120,192,140,207,195,14,240,65,13,90,23,135,135,203,135,203,246,14,195,145,195,14,125,154,168,184,245,245,100,100,195,191,120,120,95,95,100,34,100,34,245,185,71,184,34,95,149,180,95,107,134,143,143,143,123,182,143,171,68,68,194,208,162,69,207,180,180,52,87,127,166,65,156,156,65,100,127,87,52,72,11,162,85,171,64,171,35,35,171,171,35,64,180,55,207,14,245,184DATA 22,96,99,96,43,184,148,120,35,77,127,192,195,195,240,240,14,125,13,168,43,99,121,121,23,185,240,28,28,65,168,184,245,184,60,245,245,69,100,100,95,120,120,145,191,69,100,100,69,41,41,69,206,185,184,207,35,180,95,123,198,143,123,123,143,182,171,189,189,146,194,189,149,145,180,171,219,72,52,42,191,195,132,132,227,166,192,42,52,180,93,11,234,171,171,64,180,35,107,35,107,120,120,195,14,201,184,154DATA 178,175,152,121,23,66,202,107,35,87,192,140,192,195,140,140,14,67,13,135,121,121,203,121,184,195,240,154,65,184,184,70,168,70,184,245,100,240,100,95,180,35,35,41,95,100,100,34,100,100,191,95,41,34,60,245,95,180,217,134,134,143,123,123,123,116,182,68,68,68,68,42,120,143,64,171,171,35,219,163,127,100,192,191,100,195,69,192,87,52,35,234,68,17,107,219,64,64,35,35,120,145,207,184,203,23,43,160DATA 43,210,43,223,66,229,107,11,87,192,195,195,28,227,227,240,184,135,67,135,90,135,66,207,240,26,154,184,67,168,168,90,90,71,60,245,206,206,95,180,120,180,231,120,95,100,240,206,245,245,206,100,69,69,206,245,195,95,143,198,134,143,123,123,123,123,171,189,68,93,238,107,171,217,234,93,162,84,219,52,127,127,42,127,149,191,195,192,120,180,52,171,234,68,142,107,171,77,120,145,145,195,184,185,23,99,99,223DATA 175,175,43,23,201,55,234,87,28,195,140,192,195,14,195,14,67,121,13,90,135,13,195,154,121,90,13,90,90,67,27,27,71,71,245,245,245,41,120,180,217,198,198,231,95,206,71,185,90,90,154,245,245,100,69,206,245,195,217,102,134,134,123,123,94,182,93,171,182,217,171,68,198,171,68,171,162,234,219,180,87,180,52,42,127,42,191,127,127,35,46,217,11,234,31,142,107,180,55,145,196,201,184,23,23,160,223,88DATA 88,160,243,26,55,234,52,28,140,227,192,240,14,65,140,67,203,13,13,67,184,207,154,184,90,27,27,27,27,90,90,71,71,154,154,245,191,145,95,95,102,231,102,198,231,100,135,187,135,90,71,100,69,206,100,100,245,240,180,198,143,123,123,123,182,182,189,182,143,217,171,198,107,68,68,68,68,162,219,52,217,52,163,87,180,52,127,192,87,87,52,11,171,85,68,31,142,107,145,120,207,201,185,23,23,43,178,88DATA 178,121,140,120,219,52,195,227,140,28,140,125,125,14,13,13,246,246,67,67,140,105,168,13,27,135,135,27,38,67,27,71,184,60,245,195,191,41,95,95,231,134,198,198,134,41,71,154,90,30,203,184,191,95,100,100,100,195,100,191,143,94,116,116,116,182,182,182,84,143,180,180,208,189,189,68,208,68,219,219,35,180,52,52,163,180,180,180,87,120,52,72,162,11,85,142,68,142,137,145,254,14,23,148,23,43,88,88DATA 121,202,77,46,84,140,227,14,195,227,125,105,154,26,105,105,172,246,246,201,184,26,105,27,135,135,135,203,158,67,90,168,245,100,245,245,100,41,41,95,231,198,134,134,134,95,60,191,184,48,172,185,154,41,95,100,95,191,100,100,95,171,113,116,116,116,116,171,143,180,238,171,189,171,68,208,68,162,11,171,180,46,72,52,72,163,52,52,120,77,120,46,234,11,11,234,142,142,85,55,201,183,23,23,96,43,223,88DATA 229,120,52,162,28,65,14,195,227,13,13,246,26,26,246,172,147,184,125,246,201,14,105,13,187,179,135,27,90,71,65,154,184,154,5,34,100,248,41,231,102,252,242,123,143,102,206,206,100,90,203,255,255,245,95,95,95,191,100,206,100,123,189,113,189,116,249,110,238,95,35,68,68,68,68,68,146,68,171,219,46,219,46,219,219,46,219,217,180,87,35,46,46,11,11,85,85,234,142,107,201,148,148,23,23,160,175,88DATA 140,127,52,28,227,166,140,125,13,67,67,184,125,121,43,43,121,26,203,121,140,201,227,13,172,135,135,197,70,154,13,38,71,71,5,206,100,3,212,231,174,198,242,123,123,242,95,206,145,245,255,204,63,206,191,180,198,95,248,206,248,217,116,189,113,116,94,231,95,198,171,68,162,68,68,208,208,68,234,234,162,171,171,171,171,171,219,46,219,35,46,198,219,171,234,11,11,107,85,85,137,184,243,203,43,223,223,88DATA 192,127,192,195,227,26,13,13,38,13,105,65,121,121,43,147,13,105,90,125,105,184,13,175,99,97,90,168,13,38,71,60,71,154,5,206,34,69,95,231,231,252,242,123,94,123,134,231,95,95,31,63,63,95,100,231,238,238,95,100,41,134,116,116,189,116,134,102,95,217,93,171,68,93,68,194,208,234,234,68,234,234,234,162,162,162,46,171,162,171,35,46,35,11,162,234,171,64,171,64,85,120,159,148,99,223,175,88DATA 195,140,227,201,105,154,105,105,184,105,105,121,147,121,121,121,125,13,13,14,14,156,184,13,49,135,67,90,38,60,71,90,70,71,5,206,248,3,41,231,134,252,242,94,94,116,94,123,143,198,180,217,171,231,95,180,198,231,231,231,198,143,116,116,189,123,252,231,198,171,68,234,68,68,68,142,84,11,234,234,68,234,234,162,68,208,107,162,68,234,171,171,35,46,64,11,85,85,64,35,64,137,137,201,243,223,175,223DATA 65,65,125,154,105,105,105,105,184,246,43,99,203,66,147,97,125,105,125,105,105,184,184,125,187,27,27,67,71,168,60,71,60,71,154,34,248,212,231,174,174,242,242,242,94,116,94,116,123,171,123,143,217,134,41,143,238,238,198,198,134,94,116,116,94,134,252,134,143,84,171,93,93,93,234,171,107,142,68,142,68,142,189,234,234,68,31,107,234,68,142,234,35,171,171,11,11,85,107,85,64,64,77,77,207,148,223,88DATA 125,65,154,65,65,154,184,13,246,172,172,67,66,147,203,246,105,121,227,168,246,26,67,246,147,38,38,71,71,60,60,245,60,5,54,206,41,212,231,231,252,252,242,242,86,94,116,116,116,116,116,123,171,143,143,143,238,238,238,134,123,94,189,189,94,242,198,180,163,180,162,162,93,162,68,162,234,68,31,31,194,31,142,234,234,208,194,68,142,68,31,194,142,171,46,11,85,11,85,85,107,137,77,55,55,28,202,43DATA 14,14,227,105,13,246,38,147,147,246,105,147,203,147,172,26,147,43,13,246,105,168,246,147,135,90,27,38,168,60,154,60,5,5,245,34,3,212,231,231,252,252,242,94,94,94,116,189,113,116,199,116,116,123,134,238,95,231,198,198,94,116,199,249,94,134,102,238,238,219,162,171,162,68,93,234,68,142,68,194,194,194,68,68,142,68,194,194,68,142,31,31,31,85,107,64,11,64,64,35,64,85,107,55,103,159,202,121DATA 125,105,105,26,125,13,246,121,121,121,121,121,147,114,229,105,99,203,246,168,121,184,172,172,97,38,135,90,90,5,5,5,245,34,34,69,248,212,95,102,252,252,242,86,94,86,94,116,199,199,116,182,143,143,198,198,198,102,134,123,182,116,116,182,242,231,238,238,217,84,171,84,171,219,46,35,85,234,31,63,165,31,31,142,68,234,208,63,31,68,31,194,194,68,142,85,171,11,77,77,35,137,107,137,196,207,148,243DATA 14,125,125,184,140,65,246,203,43,99,147,172,49,121,13,13,99,105,246,121,97,26,187,187,97,27,38,38,60,5,245,206,206,206,248,248,212,231,174,102,252,242,86,242,86,116,94,116,116,116,116,249,143,134,198,252,231,102,134,94,116,116,94,242,198,212,41,180,217,182,143,219,163,87,120,46,162,142,31,194,165,194,68,234,142,208,17,194,194,31,194,63,194,63,68,142,107,46,145,77,35,77,137,77,55,196,103,202DATA 125,14,140,240,14,240,246,172,99,172,172,172,97,105,246,147,175,105,13,203,67,13,49,187,101,27,27,71,70,245,206,206,213,248,34,41,212,231,231,252,252,252,242,242,86,94,116,116,199,116,249,123,242,134,134,198,102,102,242,94,94,123,238,41,69,100,240,95,180,180,143,182,95,192,180,46,142,68,68,31,194,194,68,142,234,234,68,194,165,194,31,194,194,136,31,142,85,64,55,55,77,55,28,137,137,202,243,21DATA 38,70,227,195,192,28,127,125,135,99,147,246,125,67,246,49,49,97,147,246,121,124,49,187,135,27,38,71,70,5,5,34,34,34,248,41,212,231,252,252,252,242,94,94,116,116,116,199,113,116,94,94,134,134,252,198,252,102,134,94,123,42,69,100,100,34,206,240,245,195,42,198,149,120,180,64,11,234,85,194,194,208,107,68,171,68,142,194,194,194,31,68,31,165,31,31,85,35,145,207,28,103,229,159,196,55,183,223DATA 13,70,245,164,240,195,192,191,28,192,192,14,184,13,135,172,121,67,99,97,99,124,172,121,97,27,38,158,70,245,206,206,100,248,248,41,95,231,102,252,242,123,94,94,94,116,113,116,116,249,94,242,252,252,198,198,102,252,134,94,252,213,156,69,191,191,100,206,245,34,191,95,191,42,180,217,171,46,234,68,31,142,234,217,64,11,142,68,63,194,31,31,208,142,194,234,85,64,196,202,159,148,148,66,61,196,55,229DATA 158,168,164,245,166,245,156,195,100,156,246,246,105,97,147,172,147,147,49,49,172,115,172,172,187,27,27,71,168,5,5,34,34,41,41,212,95,102,252,242,242,242,94,116,249,116,199,116,249,242,102,102,102,252,252,102,102,102,242,123,34,197,27,197,156,42,191,100,191,195,191,69,149,120,52,171,46,171,234,142,68,85,142,46,219,171,234,85,194,194,194,31,142,208,17,85,11,107,28,202,202,205,96,66,155,183,255,202DATA 168,71,70,164,227,156,65,156,100,195,156,38,13,67,147,49,121,187,172,147,147,2,49,187,187,27,38,71,60,245,206,206,69,41,41,222,231,252,252,242,83,94,94,94,116,113,199,94,252,212,212,231,231,102,252,231,102,134,123,123,69,184,23,254,185,240,69,154,41,238,41,100,127,35,219,171,162,171,162,234,68,11,11,171,46,46,11,234,194,31,31,68,17,142,234,85,11,46,120,202,203,96,167,148,155,205,51,196DATA 70,70,154,245,100,65,156,65,156,100,100,154,67,67,76,49,121,147,172,147,121,175,124,172,30,97,197,71,168,5,206,34,100,69,95,231,102,198,123,94,123,94,249,116,116,199,116,242,41,212,231,231,252,252,102,231,102,102,242,134,95,154,185,207,221,71,166,156,191,102,100,69,42,35,171,234,171,11,234,162,46,11,64,11,171,171,162,11,31,31,31,31,234,234,85,64,64,137,46,207,66,23,96,160,23,223,160,55DATA 70,154,5,245,240,213,112,245,65,156,100,156,70,168,38,187,203,38,49,13,246,172,124,49,172,187,27,158,60,245,206,248,69,212,238,231,252,134,242,94,94,116,116,116,249,116,249,94,3,231,231,212,231,102,102,102,252,134,123,242,41,41,14,255,204,154,90,245,95,100,191,127,35,217,234,234,171,171,11,162,87,46,64,11,64,162,85,171,208,68,31,31,31,85,234,11,11,77,159,207,201,229,160,43,160,160,12,51DATA 245,164,245,164,156,156,65,206,156,213,166,166,112,154,168,67,203,67,99,105,184,187,176,49,30,187,27,38,60,5,248,213,41,128,231,238,252,123,249,123,249,249,94,249,116,116,249,94,252,29,231,135,135,206,102,252,252,242,94,134,95,127,107,31,64,168,90,69,213,240,180,52,35,234,162,171,11,171,219,52,127,52,171,11,11,11,234,171,142,68,162,234,31,194,142,85,120,77,203,224,224,103,121,160,117,160,96,243DATA 164,164,164,206,100,156,206,156,5,156,206,245,245,154,154,13,97,38,179,184,105,121,49,175,172,187,27,158,70,245,206,69,41,95,102,198,242,242,123,249,249,94,249,116,116,94,94,123,123,252,231,3,80,54,41,102,134,94,94,123,134,231,240,35,65,197,246,156,14,191,42,217,171,171,162,162,68,162,52,145,192,52,11,11,171,85,68,234,17,208,68,142,17,11,234,17,85,77,207,229,207,145,229,96,160,223,21,167DATA 245,164,164,156,227,112,112,156,213,156,156,156,156,245,156,125,246,70,172,105,105,184,49,153,179,187,147,197,60,206,34,248,41,231,238,252,110,94,249,83,94,249,123,94,94,94,94,94,94,242,242,252,212,34,248,231,242,94,94,123,134,198,95,156,206,154,245,140,42,52,35,35,234,234,171,234,234,11,35,120,191,120,171,171,11,162,234,234,194,194,17,68,162,46,11,11,64,46,46,55,140,1,160,121,160,178,178,50DATA 164,206,156,164,213,156,156,213,213,213,156,156,156,245,14,156,168,105,179,38,125,14,153,49,111,111,101,27,70,206,213,69,41,212,102,134,249,94,242,94,252,252,134,123,94,242,242,94,123,94,94,242,231,212,212,231,134,123,94,123,123,134,110,149,14,191,14,195,52,35,219,171,68,171,46,162,162,171,219,87,192,52,46,11,11,234,68,234,208,194,208,234,46,52,11,219,52,55,145,201,66,43,99,178,205,88,138,152DATA 164,164,206,206,156,156,213,213,213,213,213,156,34,100,206,166,65,105,97,172,13,26,49,114,111,172,187,76,38,70,206,248,149,95,238,198,92,123,123,242,3,235,235,80,212,231,231,252,242,123,94,94,252,231,212,41,231,134,94,123,123,123,198,156,100,120,52,180,35,219,171,234,234,93,171,234,219,162,52,120,145,52,46,84,162,162,234,208,194,208,173,162,52,120,35,46,46,145,28,28,26,74,96,96,178,160,115,152DATA 164,206,156,164,206,213,156,213,213,100,69,213,156,156,156,164,154,245,13,111,114,187,244,49,111,49,30,187,197,70,206,69,212,128,238,198,134,134,134,102,29,235,3,95,235,235,235,3,174,174,94,94,123,252,212,212,134,123,83,123,123,92,132,245,127,87,35,52,219,162,162,234,234,68,162,84,35,35,219,87,120,52,72,64,11,234,11,208,194,173,234,52,52,120,46,46,46,77,145,201,26,229,121,50,88,178,88,152DATA 156,156,156,213,164,206,213,213,132,213,213,34,156,34,213,213,112,156,164,135,175,147,111,10,49,153,111,30,101,71,245,213,128,238,102,102,102,198,242,102,3,3,3,242,123,174,54,54,235,29,252,94,242,123,94,123,83,94,123,123,94,57,90,195,127,87,52,72,217,85,234,68,162,234,68,219,219,219,46,52,180,52,46,219,219,234,208,194,173,208,46,46,52,52,46,35,46,77,55,28,140,224,66,22,88,138,160,160DATA 112,213,156,206,166,156,156,156,156,166,213,166,69,132,213,213,213,112,206,112,71,179,49,49,49,10,10,153,187,197,70,213,41,128,238,102,198,198,198,231,3,235,29,29,189,194,231,235,54,235,174,123,123,242,94,249,123,242,242,92,92,164,70,191,127,180,52,219,11,68,208,68,68,162,142,162,84,46,219,87,180,52,46,46,11,68,194,194,208,162,120,52,52,219,35,46,46,120,192,28,140,201,205,178,175,210,22,1DATA 206,112,206,206,112,206,112,213,213,213,166,213,213,69,213,100,248,213,34,206,213,112,30,114,49,49,49,111,111,76,158,206,69,95,238,180,102,57,252,102,3,3,29,29,242,116,189,41,54,54,235,29,242,94,94,94,94,94,242,242,102,27,14,127,180,180,52,163,162,189,68,93,68,171,93,234,171,162,217,77,52,46,219,219,162,234,208,194,208,52,52,46,46,219,46,46,52,77,120,55,28,201,202,121,74,115,115,96DATA 164,65,164,164,206,156,213,206,156,213,213,156,213,227,69,213,69,213,69,248,34,213,248,30,49,175,10,49,111,187,197,112,69,41,222,102,198,134,198,102,41,80,29,174,29,242,189,134,54,60,54,3,242,123,94,92,242,94,123,102,70,38,213,149,87,180,163,72,93,173,208,234,234,68,68,189,68,171,219,180,46,219,219,46,11,234,208,173,93,11,180,52,219,11,11,52,77,52,120,120,28,28,229,201,66,43,138,88DATA 112,245,164,245,112,206,156,156,34,166,213,156,213,213,213,248,69,69,132,132,248,248,213,34,179,179,49,49,111,30,76,70,34,41,149,238,198,143,92,252,222,54,3,174,29,29,174,102,54,60,54,174,123,242,123,242,242,242,242,132,38,154,166,87,52,42,180,52,93,93,173,162,162,93,68,173,162,162,219,219,72,11,72,11,234,208,31,208,162,219,46,46,46,46,219,52,77,52,77,120,77,55,140,202,155,155,99,138DATA 206,112,164,164,164,206,164,156,156,213,156,112,156,213,213,132,132,132,132,41,132,41,69,248,60,172,49,179,49,111,187,197,112,213,212,238,252,134,123,123,134,248,235,3,29,174,29,235,54,24,80,252,242,92,242,242,242,134,149,60,13,245,95,52,42,127,87,163,162,162,93,68,162,234,189,162,162,162,72,219,162,162,219,234,173,234,208,208,11,162,219,46,52,46,77,46,87,77,77,77,77,77,55,140,202,155,224,203DATA 164,206,156,5,164,164,156,112,206,156,156,213,156,213,166,213,132,212,230,41,230,69,132,41,213,30,49,111,49,10,111,97,70,206,41,128,238,123,110,123,242,102,34,235,3,174,29,29,24,54,231,252,242,242,242,134,239,132,70,168,70,240,52,198,87,127,180,84,219,84,162,189,93,93,93,72,162,93,162,162,68,162,162,162,234,17,208,162,219,11,219,46,46,52,46,52,77,52,145,77,145,77,137,145,103,229,155,96DATA 164,245,164,245,164,245,156,65,245,156,156,213,213,213,213,132,149,191,149,128,149,41,41,230,41,70,10,49,49,49,111,30,27,164,69,212,198,134,242,134,92,252,231,80,235,3,29,235,80,212,198,252,239,242,252,222,206,65,105,38,154,120,180,87,180,87,52,219,72,84,93,93,93,189,162,162,93,162,93,234,93,162,234,17,162,93,208,234,162,219,11,219,35,52,52,77,52,77,120,77,77,77,64,137,77,184,96,23DATA 156,112,245,65,206,112,245,213,156,112,156,156,166,156,69,132,41,128,128,128,222,128,212,41,41,248,101,179,111,49,187,172,97,71,206,248,102,198,134,123,134,110,242,222,34,54,235,3,174,102,252,57,134,102,132,70,70,245,158,90,191,238,52,180,87,163,163,163,72,72,219,162,93,162,84,162,72,234,93,208,234,234,234,162,162,17,173,234,46,11,11,46,72,120,52,52,46,46,77,145,77,52,137,107,107,55,160,33DATA 112,245,206,112,65,206,213,156,213,156,213,206,213,213,166,69,149,149,128,42,238,128,128,128,212,149,5,187,172,179,179,179,187,76,70,213,212,198,134,123,242,252,242,134,102,222,231,198,252,134,239,252,222,164,158,60,164,168,90,105,127,52,87,72,163,87,52,163,198,72,162,84,162,163,72,72,84,173,93,208,93,162,162,162,162,208,17,234,46,72,46,219,46,52,77,52,77,46,52,77,77,137,46,64,137,137,246,21DATA 164,112,245,206,213,156,206,156,100,213,100,100,100,69,69,230,149,42,102,238,57,198,87,102,42,128,248,197,187,179,179,187,179,101,27,206,248,128,238,134,110,134,242,134,252,102,102,239,239,102,239,213,67,38,70,154,154,158,168,65,42,180,72,87,191,87,87,72,52,163,84,84,162,163,72,163,162,93,173,173,162,162,162,162,162,234,68,162,72,46,72,46,46,46,120,77,52,77,46,46,35,137,137,137,46,64,55,243DATA 213,164,156,156,156,213,213,132,248,69,166,213,132,132,149,149,128,238,238,57,180,57,198,87,102,238,128,206,27,97,187,187,111,49,187,38,206,69,231,57,134,134,252,134,57,238,102,102,139,128,38,187,67,168,71,70,154,38,154,195,87,52,35,191,191,87,87,87,52,52,72,162,84,52,163,72,163,93,173,93,162,11,11,162,11,173,17,11,46,52,46,52,46,52,52,192,77,77,77,46,137,46,46,46,137,137,137,202DATA 206,156,213,213,156,213,100,69,100,69,69,100,69,191,149,149,139,238,87,198,198,198,87,57,180,57,238,128,70,67,101,67,49,111,111,101,70,213,41,222,134,57,198,102,238,102,238,215,213,172,49,76,27,158,154,154,70,154,245,192,180,219,163,191,191,87,163,217,87,163,84,219,162,163,87,84,84,162,93,173,162,162,93,173,234,17,173,162,46,120,46,72,52,46,77,120,77,77,52,77,46,137,137,137,137,137,137,140DATA 213,156,213,156,34,132,166,166,132,132,132,69,191,149,149,95,238,87,180,163,198,163,180,198,110,198,87,102,248,203,187,135,179,172,187,172,97,70,213,230,95,102,222,139,128,128,112,227,168,49,49,67,67,158,164,65,154,65,240,127,52,72,87,191,192,87,163,163,52,180,163,72,219,163,163,52,72,84,162,173,162,162,162,162,234,234,234,11,72,52,120,46,46,52,52,77,120,77,77,46,137,11,46,64,137,77,77,55DATA 69,248,100,166,166,100,132,213,166,191,149,149,149,127,128,238,87,180,198,163,163,143,110,110,163,110,198,87,222,158,97,135,121,97,184,187,187,38,164,166,230,128,139,132,67,147,99,64,172,175,99,97,38,90,154,156,245,65,227,127,163,84,52,191,132,180,72,52,163,72,219,219,219,219,87,219,219,162,162,68,93,162,162,11,93,68,208,162,11,52,87,46,52,46,52,77,77,145,77,46,64,137,137,137,137,77,77,28DATA 213,166,248,132,100,166,69,191,149,149,149,128,149,95,42,180,87,110,110,110,217,110,143,182,123,110,110,57,102,156,67,147,147,43,168,147,187,147,168,154,65,13,172,176,114,114,99,192,121,114,172,97,13,245,154,227,154,65,100,120,46,219,87,192,192,52,72,180,219,52,52,163,219,163,46,72,72,162,234,234,208,11,93,234,208,208,17,234,162,52,77,46,52,52,77,52,77,77,77,77,64,64,64,77,137,55,55,103DATA 132,69,191,132,69,191,132,149,149,149,149,42,128,87,87,238,163,52,217,182,84,84,84,84,182,182,110,163,87,128,135,97,135,187,203,76,49,114,114,114,124,59,244,175,114,124,175,121,49,175,172,97,154,65,184,166,125,156,192,120,52,219,52,127,87,52,217,52,52,219,163,52,52,219,72,52,219,162,162,234,31,208,85,93,234,208,208,234,11,46,52,52,52,52,127,52,77,120,77,77,35,64,221,137,77,77,55,55DATA 132,132,132,69,132,69,149,149,149,128,127,42,42,238,198,163,217,163,182,84,182,182,182,249,182,182,182,110,57,102,168,38,97,147,121,67,99,114,114,124,2,58,2,2,114,114,246,66,147,124,187,13,164,65,184,100,65,240,191,120,87,64,219,180,52,52,219,217,52,219,219,219,163,219,219,52,163,162,162,208,208,194,194,162,93,208,208,208,11,46,52,77,52,77,127,77,77,46,180,77,137,46,85,64,137,201,28,55DATA 230,132,132,132,69,132,132,191,127,149,128,95,238,87,180,180,217,217,219,182,162,84,84,93,182,84,84,110,163,87,213,121,27,97,172,67,172,176,124,114,124,58,104,2,176,114,67,147,114,244,147,71,65,154,65,227,65,227,192,120,52,219,11,180,52,52,11,72,52,52,219,219,11,84,219,219,72,11,93,142,31,136,165,194,208,208,136,208,93,11,46,87,77,77,192,77,52,46,77,77,64,137,137,107,137,26,103,140DATA 191,132,191,132,132,191,149,128,149,95,42,42,42,238,163,163,163,163,84,84,182,182,182,182,249,84,182,72,239,57,132,172,97,97,172,147,135,49,22,114,58,2,58,59,244,179,103,206,114,175,187,105,164,125,156,14,227,240,192,52,87,219,171,52,46,163,84,217,52,72,72,35,171,234,219,162,11,219,11,68,208,194,165,165,194,68,194,194,234,11,35,145,52,127,192,192,77,77,77,77,64,77,137,64,64,207,202,125DATA 149,41,41,149,69,149,128,42,149,149,42,238,87,198,198,163,217,217,217,84,182,84,161,171,93,182,110,110,110,139,149,172,97,67,101,179,147,49,114,176,114,244,244,124,115,172,184,234,49,172,175,105,156,154,227,227,227,195,127,87,120,46,171,219,35,84,72,52,180,163,52,72,219,68,171,11,171,64,162,68,208,31,136,225,194,208,208,31,194,46,46,52,145,127,192,28,77,46,46,137,77,77,55,107,137,55,121,96DATA 149,149,41,149,149,149,127,149,149,149,42,42,180,180,57,180,110,163,217,84,123,143,84,182,84,110,84,110,57,198,222,172,203,76,97,187,111,172,114,22,114,58,244,244,244,246,55,204,135,172,172,154,245,65,65,245,154,100,127,145,77,35,11,46,52,35,35,180,52,52,52,163,46,234,142,162,171,11,234,17,68,17,136,165,136,31,208,194,63,142,46,52,145,77,195,127,192,46,11,46,55,77,28,77,137,207,246,88DATA 128,149,128,149,149,149,149,149,42,128,42,42,238,238,180,57,163,163,143,163,84,163,84,84,182,182,110,163,57,102,42,38,76,203,97,97,175,187,153,114,114,124,244,114,175,105,137,136,14,43,135,125,125,14,156,26,65,195,192,180,120,52,11,171,180,46,219,52,180,46,52,219,219,11,68,11,85,171,11,234,17,68,194,165,106,136,17,31,194,31,64,35,46,145,77,145,77,145,77,85,55,55,28,77,77,207,246,22DATA 95,149,149,149,69,149,149,132,149,149,128,42,42,238,180,198,163,198,163,110,143,84,143,84,92,84,110,110,110,57,238,154,67,38,67,97,172,99,172,176,176,124,176,124,175,105,137,225,145,172,246,65,65,227,154,168,125,227,127,52,180,77,171,234,52,35,219,52,163,35,163,219,11,11,142,234,234,11,234,234,234,17,208,136,165,165,194,136,165,194,142,52,77,120,52,77,145,77,77,11,46,103,55,28,145,140,66,210DATA 149,149,149,149,132,149,149,149,149,128,42,238,238,87,238,198,163,163,163,143,84,163,182,110,84,182,92,110,110,57,238,206,67,168,38,67,172,153,99,49,114,176,114,114,172,105,77,225,77,147,246,227,227,65,246,168,125,14,127,52,77,52,171,162,52,11,219,219,35,72,52,72,171,234,162,234,17,162,11,85,234,234,31,136,165,165,136,136,63,194,208,64,145,52,77,192,28,28,77,85,46,28,77,103,28,140,105,58DATA 149,41,149,69,149,41,69,149,149,42,128,139,87,238,198,180,163,163,198,163,110,110,110,110,182,84,110,110,57,163,57,156,67,125,67,13,111,114,49,172,49,153,175,99,175,125,14,85,28,246,203,195,227,14,147,105,154,227,120,127,52,180,171,85,217,219,163,11,217,217,217,219,234,162,171,85,142,162,234,162,142,11,17,136,165,165,136,194,136,136,31,142,77,52,145,77,192,28,55,46,64,55,28,140,140,103,184,115DATA 149,149,230,132,132,132,230,191,149,42,149,128,222,238,87,198,198,198,163,57,198,163,110,84,110,92,84,134,57,102,139,156,13,65,67,67,187,175,111,97,22,49,172,111,114,121,125,140,13,147,184,192,14,125,203,184,154,14,192,127,77,52,171,162,219,35,46,72,162,52,219,171,68,162,11,162,68,234,142,234,234,162,208,194,165,165,136,194,136,194,194,234,35,145,55,145,55,28,145,46,11,120,103,201,26,202,184,58DATA 149,69,191,191,149,149,149,149,149,139,128,149,42,231,87,102,57,163,57,110,57,110,163,143,84,110,110,110,110,57,139,213,38,227,168,67,147,49,49,13,114,99,172,172,153,99,147,147,121,43,140,52,140,154,147,13,154,65,192,127,120,52,11,11,171,219,217,52,162,72,84,162,234,162,171,85,31,142,31,234,208,11,234,136,165,165,165,194,165,136,63,208,64,77,192,77,145,28,145,77,77,77,140,26,246,1,121,115DATA 230,248,69,69,132,191,191,149,149,149,139,42,139,42,57,180,163,198,198,198,134,163,110,110,110,182,92,163,239,163,57,132,67,227,154,38,147,49,99,13,114,147,147,172,176,111,175,172,172,90,120,127,125,105,147,13,164,14,192,120,192,46,46,234,219,219,72,52,162,46,219,162,234,162,162,85,68,31,234,234,85,11,208,194,165,165,165,136,31,136,136,194,11,137,140,28,28,140,55,77,77,77,14,201,99,121,178,22DATA 100,100,213,132,191,41,132,42,191,149,128,128,42,95,238,57,198,57,180,110,163,134,163,182,110,110,110,110,110,57,139,230,67,195,65,13,147,49,172,13,176,99,187,187,172,99,49,147,172,202,35,191,65,67,203,38,105,14,192,192,28,52,46,162,162,11,52,11,162,219,219,68,234,162,11,68,31,208,234,173,234,11,17,136,165,165,136,194,31,136,31,31,85,145,192,28,28,140,196,28,55,77,28,184,22,22,79,47DATA 156,213,213,156,213,132,191,132,191,149,149,128,42,231,87,238,198,57,57,57,198,163,110,110,143,92,163,110,110,134,57,132,67,195,65,168,76,172,67,67,172,121,147,147,172,49,49,172,27,145,120,14,105,147,13,168,13,65,166,192,195,120,35,85,171,171,180,219,11,72,11,162,234,171,162,142,208,17,234,11,162,162,85,31,165,165,136,136,31,31,136,17,17,64,55,28,192,26,140,14,28,77,105,22,88,244,47,214DATA 112,206,156,213,156,69,69,149,149,149,128,42,128,42,238,238,198,57,198,198,57,198,163,110,110,134,110,198,57,57,102,132,67,140,195,105,147,99,26,147,99,121,187,172,147,135,172,135,184,52,127,125,13,147,154,67,67,125,140,195,28,180,46,11,171,219,52,52,11,11,162,68,68,85,142,194,208,85,234,162,234,85,234,136,136,165,63,136,17,31,31,31,234,11,120,103,28,184,140,26,202,77,66,244,58,58,39,9DATA 245,164,206,156,213,213,213,69,191,41,149,95,139,238,139,238,87,87,198,57,198,57,110,134,110,110,239,239,239,139,222,156,67,166,14,13,97,172,14,121,172,13,176,172,97,147,187,121,28,180,140,227,172,105,154,76,203,184,195,195,191,52,35,171,46,219,217,46,171,171,11,234,68,142,194,142,162,11,234,85,162,11,68,31,136,165,31,63,136,17,31,31,17,85,145,140,28,229,14,246,224,140,246,22,210,15,39,20DATA 70,70,164,156,156,213,100,69,41,149,41,95,42,222,238,238,102,198,57,238,198,198,163,110,242,84,110,110,57,102,139,112,13,140,227,105,135,203,140,147,172,13,153,147,147,97,67,184,87,192,227,168,67,156,168,147,67,125,195,140,28,52,35,162,219,219,217,219,11,171,208,194,194,68,17,162,46,219,11,162,11,234,17,208,63,165,17,136,63,234,31,31,17,85,77,196,240,229,26,178,66,140,74,115,47,9,15,39DATA 158,71,70,245,206,156,166,69,149,149,128,128,42,42,139,102,87,102,198,238,57,57,163,57,110,134,110,239,163,102,222,154,38,140,240,65,147,125,227,172,246,187,172,187,172,135,67,28,127,140,65,13,168,125,97,172,246,125,195,227,195,52,46,217,219,46,219,162,162,11,68,17,68,208,162,219,217,11,11,85,162,162,142,31,136,31,31,31,136,17,31,31,208,85,77,28,140,201,121,88,74,66,58,58,47,9,20,18DATA 101,67,168,70,245,156,213,100,132,41,149,128,231,238,102,87,102,102,57,57,198,163,57,110,110,110,239,110,239,87,139,168,13,227,227,125,203,14,14,147,246,172,99,147,97,97,13,195,192,227,105,13,154,13,187,187,13,13,140,227,192,35,219,46,52,219,171,35,171,68,68,68,194,208,162,11,72,219,162,162,85,11,68,31,136,31,234,63,194,17,17,31,194,85,145,28,140,184,22,178,178,175,47,210,9,214,15,37DATA 179,97,197,158,70,164,213,166,213,41,127,149,139,42,238,102,180,238,57,198,102,198,198,163,198,57,134,239,57,102,128,38,168,125,65,227,13,140,227,203,229,153,187,67,121,121,227,28,227,105,168,105,13,38,187,67,67,105,14,195,120,35,11,219,64,171,234,194,194,194,194,208,173,84,11,219,46,162,162,11,162,162,17,17,165,234,17,208,17,31,17,31,31,234,28,201,201,246,22,22,178,210,39,47,47,39,39,37DATA 114,30,101,67,71,245,206,213,166,41,212,128,128,95,238,238,238,57,238,57,180,239,102,57,57,239,198,57,102,139,248,38,13,105,227,125,168,195,14,246,105,178,99,13,147,105,14,140,227,13,105,38,13,67,147,97,13,168,227,28,120,46,64,46,84,162,234,173,173,93,93,208,234,162,219,219,35,11,11,162,11,162,85,31,31,234,85,31,17,17,31,31,194,17,120,140,155,66,175,115,115,47,15,39,39,9,39,18DATA 59,49,187,27,158,5,206,156,100,191,127,149,128,102,139,102,238,102,57,57,238,238,198,198,110,110,239,102,102,222,213,97,67,184,227,227,125,140,227,105,168,114,172,246,38,125,140,227,168,67,168,38,168,38,187,135,13,13,14,120,77,11,52,219,162,162,162,11,46,46,72,162,162,219,162,84,52,234,234,11,11,17,234,31,17,64,11,17,142,17,17,31,194,17,55,14,96,178,58,58,47,47,47,39,39,37,4,37DATA 104,2,49,101,38,70,164,213,248,41,212,128,42,139,231,87,102,238,57,102,57,102,57,238,57,239,57,102,139,128,5,67,67,105,125,14,140,140,125,105,67,49,187,203,105,14,227,65,13,13,168,246,105,97,121,168,168,184,195,35,11,35,64,64,11,163,52,163,84,72,163,219,162,162,219,11,46,11,162,162,234,234,142,31,17,11,11,31,234,17,142,194,136,208,145,26,175,58,210,210,47,9,39,9,39,37,37,18DATA 58,2,114,187,197,168,70,156,213,132,149,212,128,42,222,57,57,87,102,198,57,102,57,102,57,102,57,102,222,230,97,76,38,13,156,105,227,195,105,105,246,172,172,147,105,65,227,105,13,168,38,105,168,172,246,13,105,207,35,64,35,46,46,52,52,52,163,52,52,163,72,84,162,162,162,142,68,234,234,11,234,234,31,17,85,11,85,142,31,208,17,31,136,208,192,121,88,115,115,47,47,39,39,37,39,37,37,4DATA 39,58,104,175,135,90,5,65,206,41,69,149,128,222,42,222,102,102,198,102,198,198,102,102,102,57,102,102,139,248,49,172,97,121,105,38,14,140,38,13,135,67,187,172,184,227,105,168,13,246,105,168,227,154,240,207,145,35,77,64,46,11,192,127,52,52,52,87,87,52,163,72,84,162,162,234,162,234,171,162,234,31,234,31,234,85,85,17,142,31,142,31,31,208,207,203,178,178,22,115,210,15,39,15,18,15,47,37DATA 8,36,47,114,172,38,70,206,132,213,41,128,128,128,231,238,238,57,102,57,57,239,239,102,57,102,102,231,222,70,179,187,147,121,168,67,240,140,246,67,147,121,135,49,125,105,13,246,246,13,67,67,168,26,65,125,192,46,46,52,46,192,28,52,52,87,87,120,52,52,52,219,162,162,11,84,11,85,11,142,17,234,142,17,142,11,85,142,31,17,142,31,136,208,184,243,99,88,115,210,47,9,39,39,37,37,18,37DATA 8,36,8,20,124,101,38,245,156,100,132,41,41,128,95,222,102,238,102,57,134,198,238,102,57,102,102,238,41,168,187,111,49,203,97,246,140,65,13,67,187,121,67,121,105,105,13,67,67,67,67,168,125,13,105,192,77,120,52,77,52,145,77,120,52,87,87,87,87,120,52,72,162,219,162,11,162,234,17,17,17,17,234,31,85,85,64,85,31,142,107,31,63,85,201,74,88,210,210,79,47,9,47,15,39,18,37,37DATA 8,8,8,36,18,58,135,168,245,166,69,41,230,128,102,238,238,102,198,163,57,102,102,57,102,231,139,222,248,67,67,49,175,67,172,184,227,184,121,97,147,187,97,203,13,105,105,147,13,67,13,105,168,125,28,192,140,145,77,77,127,120,52,46,192,127,127,120,87,52,52,219,162,11,11,234,17,234,17,234,17,234,17,17,85,11,64,46,17,17,85,17,136,35,201,43,50,244,210,210,79,9,37,37,18,37,37,18DATA 8,8,18,8,36,4,20,97,112,156,132,69,69,149,42,231,102,57,102,239,163,57,198,102,87,139,222,128,5,203,135,203,135,76,121,125,14,105,147,147,147,147,147,135,38,13,168,97,76,246,38,13,125,227,28,65,125,28,120,120,120,77,52,52,52,120,120,87,87,52,46,217,46,219,234,85,17,17,162,17,85,17,142,17,85,64,46,64,142,85,85,85,31,28,202,205,43,223,58,79,47,15,20,15,18,37,18,36DATA 37,214,39,4,8,8,18,37,175,154,191,132,69,41,128,238,198,198,57,198,134,239,57,102,102,102,139,127,158,135,67,135,246,203,67,26,125,172,111,147,101,175,172,172,246,13,67,121,121,67,13,154,105,125,14,26,140,192,192,145,46,46,35,120,77,52,87,52,35,46,171,46,219,11,162,162,17,85,11,11,234,17,17,85,85,11,77,46,85,11,107,17,31,202,229,96,74,22,79,47,9,15,39,39,37,37,37,18DATA 18,59,114,104,20,4,8,8,8,20,67,166,213,248,41,222,87,198,198,57,87,57,102,57,102,238,231,230,203,135,135,67,90,67,13,154,168,147,49,49,172,49,172,121,246,13,105,187,203,13,67,13,125,65,105,65,140,28,192,52,64,11,77,52,52,77,46,35,46,11,11,219,219,219,11,11,173,17,11,85,17,17,142,85,85,46,196,137,46,55,64,17,142,160,74,115,58,210,47,9,20,15,37,37,18,36,36,118DATA 4,58,49,49,175,47,8,37,4,18,39,175,13,156,149,128,231,57,134,239,110,102,57,102,102,238,139,164,135,135,203,135,121,67,246,26,246,147,172,172,147,172,187,121,76,121,13,147,13,203,67,246,154,105,105,201,227,28,77,46,85,46,46,77,127,120,52,46,85,162,11,11,46,11,171,85,85,11,11,85,85,17,17,64,137,55,140,77,77,77,77,107,55,21,21,138,115,210,210,47,15,37,15,39,37,8,118,118DATA 8,47,49,179,49,179,59,15,20,37,39,4,18,176,154,128,42,198,180,198,198,102,102,238,238,222,128,90,135,135,135,121,203,135,203,203,121,135,121,187,172,172,147,172,246,13,13,67,187,187,67,13,125,105,154,125,28,145,46,11,46,77,52,120,120,52,46,142,142,85,85,46,46,219,11,234,11,85,85,17,17,17,85,77,28,140,55,55,196,77,55,85,229,88,22,115,47,79,47,47,47,15,36,18,37,8,8,37DATA 4,104,10,49,179,30,135,179,104,4,4,4,8,39,115,65,128,238,198,57,87,102,139,238,238,128,132,111,187,135,135,135,121,203,246,135,135,121,121,172,172,43,172,43,203,203,67,246,147,121,38,184,105,105,184,14,28,52,46,46,52,52,145,77,35,11,31,208,31,234,11,35,11,64,11,11,85,46,85,85,17,85,28,159,140,140,28,201,28,137,137,46,178,58,50,115,210,79,9,9,39,47,15,37,37,15,37,18DATA 18,58,49,179,179,172,135,135,27,175,98,4,20,39,20,47,99,166,87,57,198,87,238,222,128,128,60,47,58,49,121,203,90,203,121,43,160,49,179,160,49,49,99,172,135,67,13,97,172,97,67,97,105,105,154,227,28,52,72,77,77,77,180,85,234,85,68,17,17,85,11,46,46,11,11,11,64,85,85,17,85,77,140,103,224,103,140,202,196,77,64,26,115,115,115,47,47,47,20,39,15,39,37,15,18,15,18,37DATA 47,59,49,49,179,135,135,27,90,38,135,236,98,47,15,47,236,47,172,240,87,102,238,139,128,149,187,79,98,58,135,43,203,135,121,43,179,43,99,179,179,49,172,172,121,246,13,97,121,121,203,203,13,13,26,28,77,120,77,120,120,35,85,208,68,17,31,31,85,85,46,64,11,171,64,85,85,85,17,17,85,103,201,140,159,140,229,202,196,137,55,99,88,115,138,210,47,9,39,15,37,39,18,37,37,37,37,18DATA 37,115,99,49,43,179,135,90,60,60,245,245,185,203,59,104,47,157,47,104,49,125,41,128,149,213,2,47,47,115,97,135,23,43,179,160,160,99,43,43,43,179,135,172,172,184,246,67,187,147,135,67,105,168,125,28,127,127,127,52,35,142,17,234,234,31,31,31,85,46,46,64,85,85,234,142,64,17,204,17,77,26,159,26,201,66,155,103,28,28,205,138,58,79,47,47,9,15,39,39,15,37,4,18,39,18,15,37DATA 15,2,10,49,179,135,135,197,71,70,206,69,69,41,191,185,49,79,79,47,47,58,244,121,168,76,98,47,98,115,187,121,135,135,43,179,43,179,179,43,135,43,179,121,175,135,38,13,187,147,67,67,13,105,140,140,192,28,120,46,208,208,85,17,17,17,17,11,11,107,85,142,142,142,31,11,107,17,17,64,55,159,201,26,229,205,229,196,140,202,22,115,210,47,15,15,20,39,15,39,37,37,15,36,18,37,37,37DATA 4,59,49,49,179,30,135,135,71,245,206,69,41,149,238,198,198,191,90,88,47,47,47,47,79,47,47,47,98,115,172,121,43,135,43,99,30,99,172,99,179,121,49,172,179,43,246,67,97,67,121,38,105,227,140,140,195,192,46,162,11,11,93,85,234,85,46,64,11,85,31,142,31,31,17,107,31,17,107,140,159,140,159,229,66,205,159,201,202,74,22,115,115,47,20,15,15,37,15,20,15,37,37,39,39,37,18,18DATA 179,49,49,175,49,135,135,27,71,70,206,69,41,41,95,180,198,217,217,95,185,175,79,79,47,47,47,15,214,47,179,135,135,43,43,49,99,99,99,49,99,43,43,135,99,97,67,67,67,67,203,38,125,14,140,195,192,77,46,46,46,46,11,11,46,46,11,11,85,31,17,17,31,194,31,17,85,46,77,229,202,201,26,229,202,202,202,202,43,138,115,47,79,39,15,39,20,15,15,18,37,18,18,129,36,129,36,37DATA 23,179,49,179,179,172,30,27,90,71,245,34,69,41,212,238,180,198,217,134,217,231,245,179,79,79,47,15,39,47,43,43,23,43,43,135,99,49,49,43,160,172,49,121,135,135,147,67,67,121,184,184,14,227,195,192,77,52,52,52,46,46,77,52,77,46,137,85,85,17,17,17,136,11,85,85,137,77,26,26,66,66,96,205,229,66,229,66,175,115,115,58,47,39,20,37,15,15,39,37,18,37,37,4,8,8,36,18DATA 30,49,49,49,49,30,135,135,197,60,70,206,100,69,95,238,198,217,110,163,134,163,238,231,69,179,79,79,79,79,175,135,179,121,43,99,99,160,43,49,160,99,43,135,38,67,43,13,105,90,125,125,227,140,140,127,145,120,127,52,46,52,77,145,46,52,46,46,85,17,31,136,11,46,46,77,28,140,229,74,74,175,223,160,43,21,160,178,175,244,115,115,47,39,15,15,39,37,18,37,4,36,18,37,37,18,8,36DATA 135,49,49,49,179,43,135,135,90,70,5,245,248,41,41,42,238,198,217,84,143,198,198,238,95,158,49,49,59,244,179,99,43,99,179,99,99,172,99,99,49,99,121,160,121,135,203,229,105,125,65,14,227,195,195,140,192,77,145,77,192,28,145,77,52,145,77,11,85,17,31,85,55,77,77,140,155,229,99,99,178,178,74,43,138,43,244,115,115,47,47,39,39,39,39,20,18,18,15,37,37,15,18,37,18,37,8,36DATA 172,172,179,99,179,187,30,135,197,158,71,112,206,248,41,95,238,180,134,143,143,110,198,238,149,206,135,135,43,179,99,172,49,99,172,99,49,99,99,99,99,172,147,49,43,99,96,246,105,125,26,140,195,140,227,195,192,28,192,28,28,28,77,145,145,77,46,11,85,17,46,55,77,28,201,26,205,74,175,175,175,50,88,115,124,175,79,79,47,39,47,39,47,39,18,15,37,39,20,18,37,36,37,37,37,18,37,18DATA 172,49,179,49,172,179,135,135,27,71,60,5,206,100,41,212,238,238,163,143,163,110,198,139,231,100,135,43,135,49,49,49,99,43,99,175,99,49,49,49,178,99,43,99,175,49,121,23,184,125,14,28,140,14,227,140,195,192,28,201,28,28,28,28,28,77,46,46,46,28,103,28,140,201,205,99,178,175,22,178,88,244,244,244,115,47,47,39,98,47,47,39,39,15,20,36,37,18,37,37,20,15,37,36,18,37,18,37DATA 179,49,179,179,49,172,187,135,27,90,60,5,5,34,69,41,128,102,198,134,143,198,163,102,231,230,121,43,135,43,49,179,172,172,49,176,175,49,99,175,49,49,99,172,178,172,184,184,207,28,14,28,140,227,14,201,26,140,140,140,140,140,201,140,28,55,145,28,140,201,140,201,26,205,178,175,124,244,115,244,244,244,115,58,79,79,47,39,47,47,15,39,37,37,37,15,39,37,18,18,18,37,18,15,39,15,37,8DATA 135,179,179,179,30,187,135,27,27,38,60,245,206,206,248,69,95,42,238,198,134,110,198,238,139,95,27,135,172,172,43,49,49,172,175,49,175,99,49,99,49,175,175,99,175,43,202,55,77,140,201,28,28,13,66,105,26,201,201,125,26,227,140,140,140,140,140,26,26,201,26,205,175,175,175,58,115,115,58,104,115,58,47,104,47,47,79,79,47,15,15,20,39,15,18,37,18,36,37,37,20,37,15,37,37,18,37,18DATA 172,172,135,172,49,179,187,135,197,71,5,5,54,34,34,41,41,128,231,180,57,180,102,198,238,102,67,43,179,172,49,49,175,175,49,49,175,49,175,114,175,176,244,114,175,66,26,229,43,229,195,28,140,246,43,121,121,66,66,155,66,246,26,105,202,229,66,66,224,205,43,43,49,244,244,244,58,47,79,47,115,47,79,115,47,47,98,47,15,214,47,39,15,20,4,18,37,20,37,18,15,18,18,37,18,37,39,18DATA 22,179,172,179,30,179,135,101,90,70,70,206,206,206,206,248,69,212,95,231,238,198,57,238,102,163,38,187,99,49,172,49,175,49,49,178,153,49,114,176,175,175,114,22,124,244,175,124,22,66,195,96,26,121,99,49,99,147,22,99,99,43,74,121,121,121,205,121,178,175,178,43,172,22,244,115,58,115,47,47,79,104,79,79,47,47,15,39,79,15,15,39,20,18,37,37,18,36,18,37,37,39,4,15,4,36,37,18SUB BlankScreenSTATIC Cmr%  ' Blank the Screen while Drawing ..    OUT &H3C4, 1    Cmr% = INP(&H3C5)    OUT &H3C5, Cmr% OR &H20END SUBSUB Frame (X AS INTEGER, Y AS INTEGER, X1 AS INTEGER, Y1 AS INTEGER)    LINE (X + 2, Y + 2)-(X1 - 2, Y1 - 2), 19, B    LINE (X + 3, Y + 3)-(X1 - 3, Y1 - 3), 25, B    LINE (X + 4, Y + 4)-(X1 - 4, Y1 - 4), 44, B    LINE (X + 5, Y + 5)-(X1 - 5, Y1 - 5), 53, B    LINE (X + 6, Y + 6)-(X1 - 6, Y1 - 6), 56, BLINE (X + 7, Y + 7)-(X1 - 7, Y1 - 7), 62, BLINE (X + 8, Y + 8)-(X1 - 8, Y1 - 8), 73, BLINE (X + 9, Y + 9)-(X1 - 9, Y1 - 9), 75, BLINE (X + 10, Y + 10)-(X1 - 10, Y1 - 10), 78, BLINE (X + 11, Y + 11)-(X1 - 11, Y1 - 11), 81, BLINE (X + 12, Y + 12)-(X1 - 12, Y1 - 12), 82, BLINE (X + 13, Y + 13)-(X1 - 13, Y1 - 13), 89, BLINE (X + 14, Y + 14)-(X1 - 14, Y1 - 14), 91, BLINE (X + 15, Y + 15)-(X1 - 15, Y1 - 15), 89, BLINE (X + 16, Y + 16)-(X1 - 16, Y1 - 16), 82, BLINE (X + 17, Y + 17)-(X1 - 17, Y1 - 17), 81, BLINE (X + 18, Y + 18)-(X1 - 18, Y1 - 18), 78, BLINE (X + 19, Y + 19)-(X1 - 19, Y1 - 19), 75, BLINE (X + 20, Y + 20)-(X1 - 20, Y1 - 20), 73, BLINE (X + 21, Y + 21)-(X1 - 21, Y1 - 21), 62, BLINE (X + 22, Y + 22)-(X1 - 22, Y1 - 22), 56, BLINE (X + 23, Y + 23)-(X1 - 23, Y1 - 23), 53, BLINE (X + 24, Y + 24)-(X1 - 24, Y1 - 24), 44, BLINE (X + 25, Y + 25)-(X1 - 25, Y1 - 25), 25, BLINE (X + 26, Y + 26)-(X1 - 26, Y1 - 26), 19, BEND SUBSUB GPrint (Text$, X AS INTEGER, Y AS INTEGER, FColor AS INTEGER, sx AS INTEGER, sy AS INTEGER)A = LEN(Text$)FOR I = 1 TO ASELECT CASE LCASE$(MID$(Text$, I, 1)) CASE "a" LINE (X, Y)-(X, Y - 5 * sy), FColor LINE -(X + 4 * sx, Y - 8 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 5 * sy), FColor LINE -(X + 7 * sx, Y), FColor LINE (X, Y - 4 * sy)-(X + 7 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "b" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor LINE -(X + 8 * sx, Y - 8 * sy), FColor LINE -(X + 8 * sx, Y - 5 * sy), FColor LINE -(X + 7 * sx, Y - 4 * sy), FColor LINE -(X, Y - 4 * sy), FColor LINE (X + 8 * sx, Y - 3 * sy)-(X + 8 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y), FColor LINE -(X, Y), FColor LINE (X + 7 * sx, Y - 4 * sy)-(X + 8 * sx, Y - 3 * sy), FColor X = X + 10 * sx CASE "c" LINE (X, Y - 1 * sy)-(X, Y - 7 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE (X, Y - 1 * sy)-(X + 1 * sx, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor X = X + 10 * sx CASE "d" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X, Y), FColor X = X + 10 * sx CASE "e" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor LINE (X, Y)-(X + 7 * sx, Y), FColor LINE (X, Y - 4 * sy)-(X + 4 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "f" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor LINE (X, Y - 4 * sy)-(X + 4 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "g" LINE (X + 5 * sx, Y - 3 * sy)-(X + 6 * sx, Y - 3 * sy), FColor LINE -(X + 7 * sx, Y - 2 * sy), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 1 * sx, Y), FColor LINE -(X, Y - 1 * sy), FColor LINE -(X, Y - 7 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor X = X + 10 * sx CASE "h" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE (X + 7 * sx, Y)-(X + 7 * sx, Y - 8 * sy), FColor LINE (X, Y - 4 * sy)-(X + 7 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "i" LINE (X, Y)-(X + 6 * sx, Y), FColor LINE (X, Y - 8 * sy)-(X + 6 * sx, Y - 8 * sy), FColor LINE (X + 3 * sx, Y)-(X + 3 * sx, Y - 8 * sy), FColor X = X + 9 * sx CASE "j" LINE (X, Y - 2 * sy)-(X, Y - 1 * sy), FColor LINE -(X + 1 * sx, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "k" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE (X, Y - 4 * sy)-(X + 7 * sx, Y - 8 * sy), FColor LINE (X, Y - 4 * sy)-(X + 7 * sx, Y), FColor X = X + 10 * sx CASE "l" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE (X, Y)-(X + 6 * sx, Y), FColor X = X + 9 * sx CASE "m" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 3 * sx, Y - 5 * sy), FColor LINE -(X + 4 * sx, Y - 5 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y), FColor X = X + 10 * sx CASE "n" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "o" LINE (X, Y - 2 * sy)-(X, Y - 6 * sy), FColor LINE -(X + 1 * sx, Y - 7 * sy), FColor LINE -(X + 2 * sx, Y - 8 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 6 * sy), FColor LINE -(X + 7 * sx, Y - 2 * sy), FColor LINE -(X + 6 * sx, Y - 1 * sy), FColor LINE -(X + 5 * sx, Y), FColor LINE -(X + 2 * sx, Y), FColor LINE -(X + 1 * sx, Y - 1 * sy), FColor LINE -(X, Y - 2 * sy), FColor X = X + 10 * sx CASE "p" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 5 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor LINE -(X, Y - 4 * sy), FColor X = X + 10 * sx CASE "q" LINE (X, Y - 3 * sy)-(X, Y - 6 * sy), FColor LINE -(X + 2 * sx, Y - 8 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 6 * sy), FColor LINE -(X + 7 * sx, Y - 3 * sy), FColor LINE -(X + 5 * sx, Y - 1 * sy), FColor LINE -(X + 2 * sx, Y - 1 * sy), FColor LINE -(X, Y - 3 * sy), FColor LINE (X + 3 * sx, Y - 3 * sy)-(X + 5 * sx, Y), FColor X = X + 10 * sx CASE "r" LINE (X, Y)-(X, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 5 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor LINE -(X, Y - 4 * sy), FColor LINE (X + 2 * sx, Y - 4 * sy)-(X + 7 * sx, Y), FColor X = X + 10 * sx CASE "s" LINE (X, Y - 2 * sy)-(X + 2 * sx, Y), FColor LINE -(X + 5 * sx, Y), FColor LINE -(X + 7 * sx, Y - 2 * sy), FColor LINE -(X + 5 * sx, Y - 4 * sy), FColor LINE -(X + 2 * sx, Y - 4 * sy), FColor LINE -(X, Y - 6 * sy), FColor LINE -(X + 2 * sx, Y - 8 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 6 * sy), FColor X = X + 10 * sx CASE "t" LINE (X, Y - 8 * sy)-(X + 6 * sx, Y - 8 * sy), FColor LINE (X + 3 * sx, Y - 8 * sy)-(X + 3 * sx, Y), FColor X = X + 9 * sx CASE "u" LINE (X, Y - 8 * sy)-(X, Y - 1 * sy), FColor LINE -(X + 1 * sx, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "v" LINE (X, Y - 8 * sy)-(X + 3 * sx, Y), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor X = X + 9 * sx CASE "w" LINE (X, Y - 8 * sy)-(X, Y), FColor LINE -(X + 3 * sx, Y - 3 * sy), FColor LINE -(X + 4 * sx, Y - 3 * sy), FColor LINE -(X + 7 * sx, Y), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "x" LINE (X, Y - 8 * sy)-(X + 7 * sx, Y), FColor LINE (X, Y)-(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "y" LINE (X, Y - 8 * sy)-(X + 3 * sx, Y - 5 * sy), FColor LINE -(X + 3 * sx, Y), FColor LINE (X + 3 * sx, Y - 5 * sy)-(X + 6 * sx, Y - 8 * sy), FColor X = X + 9 * sx CASE "z" LINE (X, Y - 8 * sy)-(X + 7 * sx, Y - 8 * sy), FColor LINE -(X, Y), FColor LINE -(X + 7 * sx, Y), FColor X = X + 10 * sx CASE "1" LINE (X, Y - 6 * sy)-(X + 2 * sx, Y - 8 * sy), FColor LINE -(X + 3 * sx, Y - 8 * sy), FColor LINE -(X + 3 * sx, Y), FColor LINE (X, Y)-(X + 6 * sx, Y), FColor X = X + 9 * sx CASE "2" LINE (X + 7 * sx, Y)-(X, Y), FColor LINE -(X + 7 * sx, Y - 6 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 2 * sx, Y - 8 * sy), FColor LINE -(X, Y - 6 * sy), FColor X = X + 10 * sx CASE "3" LINE (X, Y - 1 * sy)-(X + 1 * sx, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X, Y - 7 * sy), FColor LINE (X + 7 * sx, Y - 4 * sy)-(X + 3 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "4" LINE (X, Y - 8 * sy)-(X, Y - 4 * sy), FColor LINE -(X + 7 * sx, Y - 4 * sy), FColor LINE (X + 6 * sx, Y - 8 * sy)-(X + 6 * sx, Y), FColor X = X + 10 * sx CASE "5" LINE (X, Y)-(X + 5 * sx, Y), FColor LINE -(X + 7 * sx, Y - 2 * sy), FColor LINE -(X + 7 * sx, Y - 3 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor LINE -(X, Y - 4 * sy), FColor LINE -(X, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 8 * sy), FColor X = X + 10 * sx CASE "6" LINE (X + 7 * sx, Y - 7 * sy)-(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X, Y - 7 * sy), FColor LINE -(X, Y - 1 * sy), FColor LINE -(X + 1 * sy, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y - 3 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor LINE -(X, Y - 4 * sy), FColor X = X + 10 * sx CASE "7" LINE (X, Y - 8 * sy)-(X + 7 * sx, Y - 8 * sy), FColor LINE -(X, Y), FColor X = X + 10 * sx CASE "8" LINE (X, Y - 5 * sy)-(X, Y - 7 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 5 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor LINE -(X + 1 * sx, Y - 4 * sy), FColor LINE -(X, Y - 3 * sy), FColor LINE -(X, Y - 1 * sy), FColor LINE -(X + 1 * sx, Y), FColor LINE -(X + 6 * sx, Y), FColor LINE -(X + 7 * sx, Y - 1 * sy), FColor LINE -(X + 7 * sx, Y - 3 * sy), FColor LINE -(X + 6 * sx, Y - 4 * sy), FColor X = X + 10 * sx CASE "9" LINE (X, Y - 5 * sy)-(X, Y - 7 * sy), FColor LINE -(X + 1 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 8 * sy), FColor LINE -(X + 7 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y), FColor LINE (X + 7 * sx, Y - 4 * sy)-(X + 1 * sx, Y - 4 * sy), FColor LINE -(X, Y - 5 * sy), FColor X = X + 10 * sx CASE "0" LINE (X, Y - 2 * sy)-(X, Y - 6 * sy), FColor LINE -(X + 1 * sx, Y - 7 * sy), FColor LINE -(X + 2 * sx, Y - 8 * sy), FColor LINE -(X + 5 * sx, Y - 8 * sy), FColor LINE -(X + 6 * sx, Y - 7 * sy), FColor LINE -(X + 7 * sx, Y - 6 * sy), FColor LINE -(X + 7 * sx, Y - 2 * sy), FColor LINE -(X + 6 * sx, Y - 1 * sy), FColor LINE -(X + 5 * sx, Y), FColor LINE -(X + 2 * sx, Y), FColor LINE -(X + 1 * sx, Y - 1 * sy), FColor LINE -(X, Y - 2 * sy), FColor LINE (X + 1 * sx, Y - 1 * sy)-(X + 6 * sx, Y - 7 * sy), FColor X = X + 10 * sx CASE "." LINE (X, Y)-(X, Y - 1 * sy), FColor LINE -(X + 1 * sx, Y - 1 * sy), FColor LINE -(X + 1 * sx, Y), FColor LINE -(X, Y), FColor 'PAINT (x + 1, y + 1), fcolor X = X + 6 * sx CASE " " X = X + 10 * sx CASE ELSE LOCATE 5, 1: COLOR 3: PRINT "Sorry not done yet" END SELECTNEXT IEND SUBSUB LoadGraphicsFOR R% = 0 TO 13FOR C% = 0 TO 14READ P%PSET (C%, R%), P%NEXT: NEXTGET (0, 0)-(14, 13), RedOctagonCLSEND SUBSUB LoadPalette'colors used for framePALETTE 19, 524288PALETTE 25, 786432PALETTE 44, 1048576PALETTE 53, 1310720PALETTE 56, 1572864PALETTE 62, 1835008PALETTE 73, 2097152PALETTE 75, 2359296PALETTE 78, 2621440PALETTE 81, 2883584PALETTE 82, 3145728PALETTE 89, 3407872PALETTE 91, 3670016'colors for red octagonPALETTE 109, 7PALETTE 119, 15PALETTE 122, 23PALETTE 126, 31PALETTE 130, 39PALETTE 131, 47PALETTE 141, 55PALETTE 144, 855309'orange colors for lettersPALETTE 188, 9788: PALETTE 190, 9276: PALETTE 200, 8764PALETTE 209, 8252: PALETTE 211, 7740: PALETTE 216, 7228PALETTE 218, 6716: PALETTE 220, 6204: PALETTE 226, 5692PALETTE 228, 5180: PALETTE 233, 4668: PALETTE 237, 4156PALETTE 241, 3644: PALETTE 247, 3132: PALETTE 253, 2620'colors for letter backgroundPALETTE 6, 4369: PALETTE 16, 6168: PALETTE 150, 9252PALETTE 169, 12336: PALETTE 177, 15420'blond colorsPALETTE 0, 0: PALETTE 1, 791570: PALETTE 2, 264204PALETTE 3, 988972: PALETTE 4, 132102: PALETTE 5, 791585PALETTE 7, 1188656: PALETTE 8, 131588: PALETTE 9, 395782PALETTE 10, 395792: PALETTE 11, 1582895: PALETTE 12, 790544PALETTE 13, 791578PALETTE 14, 1055265PALETTE 15, 395270PALETTE 17, 1846065PALETTE 18, 394244PALETTE 19, 131586PALETTE 20, 132104PALETTE 21, 659470PALETTE 22, 396300PALETTE 23, 791060PALETTE 24, 659489PALETTE 26, 923676PALETTE 27, 659480PALETTE 28, 1187364PALETTE 29, 1054768PALETTE 30, 527380PALETTE 31, 2042931PALETTE 32, 526856PALETTE 33, 923156PALETTE 34, 923173PALETTE 35, 1450540PALETTE 36, 132098PALETTE 37, 132612PALETTE 38, 659994PALETTE 39, 263686PALETTE 40, 1189943PALETTE 41, 1055273PALETTE 42, 1187627PALETTE 43, 659475PALETTE 45, 1256504PALETTE 46, 1451052PALETTE 47, 264200PALETTE 48, 922132PALETTE 49, 527376PALETTE 50, 527884PALETTE 51, 1186330PALETTE 52, 1319468PALETTE 54, 791076PALETTE 55, 1318692PALETTE 57, 1187887PALETTE 58, 264714PALETTE 59, 395276PALETTE 60, 791071PALETTE 61, 1054742PALETTE 63, 2370867PALETTE 64, 1582124PALETTE 65, 923936PALETTE 66, 791574PALETTE 67, 659992PALETTE 68, 1780019PALETTE 69, 1055271PALETTE 70, 791582PALETTE 71, 791069PALETTE 72, 1319983PALETTE 74, 528400PALETTE 76, 528409PALETTE 77, 1450792PALETTE 79, 395272PALETTE 80, 922919PALETTE 83, 1319477PALETTE 84, 1451057PALETTE 85, 1714223PALETTE 86, 1450808PALETTE 87, 1187884PALETTE 88, 527372PALETTE 90, 791066PALETTE 92, 1319731PALETTE 93, 1583155PALETTE 94, 1450549PALETTE 95, 1186859PALETTE 96, 791058PALETTE 97, 528406PALETTE 98, 263688PALETTE 99, 527888PALETTE 100, 1055269PALETTE 101, 527894PALETTE 102, 1187375PALETTE 103, 1317918PALETTE 104, 264202PALETTE 105, 792092PALETTE 106, 2569527PALETTE 107, 1844268PALETTE 108, 922642PALETTE 110, 1319473PALETTE 111, 396306PALETTE 112, 792098PALETTE 113, 1582138PALETTE 114, 395790PALETTE 115, 526858PALETTE 116, 1582135PALETTE 117, 658956PALETTE 118, 263684PALETTE 120, 1318953PALETTE 121, 659990PALETTE 123, 1450547PALETTE 124, 264716PALETTE 125, 923679PALETTE 127, 1187881PALETTE 128, 1055787PALETTE 129, 394242PALETTE 132, 924199PALETTE 133, 1123382PALETTE 134, 1318961PALETTE 135, 659478PALETTE 136, 2109495PALETTE 137, 1647656PALETTE 138, 396298PALETTE 139, 1056301PALETTE 140, 1055778PALETTE 142, 1845552PALETTE 143, 1450801PALETTE 145, 1384487PALETTE 146, 1715256PALETTE 147, 528404PALETTE 148, 922647PALETTE 149, 1121321PALETTE 151, 1056304PALETTE 152, 658698PALETTE 153, 396304PALETTE 154, 857631PALETTE 155, 923158PALETTE 156, 923682PALETTE 157, 263690PALETTE 158, 659997PALETTE 159, 1186333PALETTE 160, 659472PALETTE 161, 1386293PALETTE 162, 1582897PALETTE 163, 1319471PALETTE 164, 792097PALETTE 165, 2371640PALETTE 166, 924197PALETTE 167, 791056PALETTE 168, 791580PALETTE 170, 1319988PALETTE 171, 1582128PALETTE 172, 527890PALETTE 173, 1714996PALETTE 174, 1186354PALETTE 175, 527374PALETTE 176, 396302PALETTE 178, 527886PALETTE 179, 527378PALETTE 180, 1318956PALETTE 181, 922644PALETTE 182, 1451059PALETTE 183, 1054232PALETTE 184, 923163PALETTE 185, 922138PALETTE 186, 1188659PALETTE 187, 527892PALETTE 189, 1714230PALETTE 191, 1121319PALETTE 192, 1187623PALETTE 193, 527368PALETTE 194, 2108470PALETTE 195, 1121317PALETTE 196, 1449762PALETTE 197, 659482PALETTE 198, 1318959PALETTE 199, 1582902PALETTE 201, 1055262PALETTE 202, 1055003PALETTE 203, 791063PALETTE 204, 2238510PALETTE 205, 791572PALETTE 206, 923170PALETTE 207, 1252386PALETTE 208, 1846068PALETTE 210, 395784PALETTE 212, 1055275PALETTE 213, 923685PALETTE 214, 132616PALETTE 215, 1055792PALETTE 217, 1450543PALETTE 219, 1451055PALETTE 221, 1975592PALETTE 222, 1055789PALETTE 223, 658958PALETTE 224, 1054744PALETTE 225, 2699060PALETTE 227, 924450PALETTE 229, 923160PALETTE 230, 924201PALETTE 231, 1186861PALETTE 232, 1386552PALETTE 234, 1714225PALETTE 235, 922153PALETTE 236, 395274PALETTE 238, 1187629PALETTE 239, 1187890PALETTE 240, 1055266PALETTE 242, 1318964PALETTE 243, 922130PALETTE 244, 395788PALETTE 245, 923168PALETTE 246, 791576PALETTE 248, 923687PALETTE 249, 1451062PALETTE 250, 1454136PALETTE 251, 1054230PALETTE 252, 1252914PALETTE 254, 1382941PALETTE 255, 1777698END SUBSUB ShowBackGroundFOR R% = 0 TO 195 STEP 14    FOR C% = 0 TO 314 STEP 15        PUT (C%, R%), RedOctagon, PSET    NEXTNEXTEND SUBSUB ShowBlondRESTORE BlondBeautyFOR R% = 0 TO 122   FOR C% = 0 TO 107    READ P%      PSET (C% + 104, R% + 34), P%   NEXTNEXTLINE (103, 33)-(212, 157), 255, BFrame 76, 6, 239, 184Title 110, 11END SUBSUB ShowScreenSTATIC Cmr%  ' Turn the Screen back On ..    OUT &H3C4, 1    Cmr% = INP(&H3C5)    OUT &H3C5, Cmr% AND &HDFEND SUBSUB Title (X AS INTEGER, Y AS INTEGER)'BLINE (X + 1, Y + 1)-(X + 13, Y + 1), 253LINE (X + 1, Y + 2)-(X + 13, Y + 2), 247LINE (X + 1, Y + 3)-(X + 15, Y + 3), 241LINE (X + 3, Y + 4)-(X + 15, Y + 4), 237LINE (X + 3, Y + 5)-(X + 15, Y + 5), 233LINE (X + 3, Y + 6)-(X + 15, Y + 6), 228LINE (X + 3, Y + 7)-(X + 15, Y + 7), 226LINE (X + 3, Y + 8)-(X + 15, Y + 8), 220LINE (X + 3, Y + 9)-(X + 15, Y + 9), 218LINE (X + 3, Y + 10)-(X + 15, Y + 10), 216LINE (X + 3, Y + 11)-(X + 15, Y + 11), 211LINE (X + 3, Y + 12)-(X + 15, Y + 12), 209LINE (X + 1, Y + 13)-(X + 15, Y + 13), 200LINE (X + 1, Y + 14)-(X + 13, Y + 14), 190LINE (X + 1, Y + 15)-(X + 13, Y + 15), 188PSET (X, Y), 177: PSET (X + 1, Y), 169LINE (X + 2, Y)-(X + 14, Y), 150: PSET (X, Y + 1), 169LINE (X, Y + 2)-(X, Y + 4), 150: PSET (X + 1, Y + 4), 16PSET (X + 2, Y + 4), 6: LINE (X + 2, Y + 5)-(X + 2, Y + 12), 150PSET (X + 1, Y + 12), 169: PSET (X, Y + 12), 177: PSET (X, Y + 13), 169LINE (X, Y + 14)-(X, Y + 16), 150: PSET (X + 1, Y + 16), 16LINE (X + 2, Y + 16)-(X + 14, Y + 16), 6: LINE -(X + 14, Y + 14), 6LINE -(X + 16, Y + 14), 6: LINE -(X + 16, Y + 4), 6PSET (X + 16, Y + 3), 16: PSET (X + 16, Y + 9), 16LINE (X + 16, Y + 2)-(X + 15, Y + 2), 150: PSET (X + 14, Y + 2), 6PSET (X + 14, Y + 1), 16LINE (X + 8, Y + 6)-(X + 8, Y + 4), 6: LINE -(X + 10, Y + 4), 6LINE (X + 10, Y + 5)-(X + 10, Y + 6), 150: LINE -(X + 9, Y + 6), 150PSET (X + 9, Y + 5), 0LINE (X + 8, Y + 12)-(X + 8, Y + 10), 6: LINE -(X + 10, Y + 10), 6LINE (X + 10, Y + 11)-(X + 10, Y + 12), 150: LINE -(X + 9, Y + 12), 150PSET (X + 9, Y + 11), 0LINE (X + 16, Y + 8)-(X + 14, Y + 8), 6'lX = X + 21LINE (X + 1, Y + 1)-(X + 7, Y + 1), 253LINE (X + 1, Y + 2)-(X + 7, Y + 2), 247LINE (X + 1, Y + 3)-(X + 7, Y + 3), 241LINE (X + 3, Y + 4)-(X + 7, Y + 4), 237LINE (X + 3, Y + 5)-(X + 7, Y + 5), 233LINE (X + 3, Y + 6)-(X + 7, Y + 6), 228LINE (X + 3, Y + 7)-(X + 7, Y + 7), 226LINE (X + 3, Y + 8)-(X + 7, Y + 8), 220LINE (X + 3, Y + 9)-(X + 7, Y + 9), 218LINE (X + 3, Y + 10)-(X + 7, Y + 10), 216LINE (X + 3, Y + 11)-(X + 7, Y + 11), 211LINE (X + 3, Y + 12)-(X + 7, Y + 12), 209LINE (X + 1, Y + 13)-(X + 9, Y + 13), 200LINE (X + 1, Y + 14)-(X + 9, Y + 14), 190LINE (X + 1, Y + 15)-(X + 9, Y + 15), 188PSET (X, Y), 177: PSET (X + 1, Y), 169: LINE (X + 2, Y)-(X + 8, Y), 150PSET (X, Y + 1), 169: LINE (X, Y + 2)-(X, Y + 4), 150PSET (X + 1, Y + 4), 16: PSET (X + 2, Y + 4), 6LINE (X + 2, Y + 5)-(X + 2, Y + 12), 150PSET (X, Y + 12), 177: PSET (X + 1, Y + 12), 169PSET (X, Y + 13), 169: LINE (X, Y + 14)-(X, Y + 16), 150PSET (X + 1, Y + 16), 16: LINE (X + 2, Y + 16)-(X + 10, Y + 16), 6LINE -(X + 10, Y + 14), 6PSET (X + 10, Y + 13), 16: LINE (X + 9, Y + 12)-(X + 10, Y + 12), 150LINE (X + 8, Y + 11)-(X + 8, Y + 2), 6: PSET (X + 8, Y + 1), 16'oX = X + 15: Y = Y + 4LINE (X + 3, Y + 1)-(X + 11, Y + 1), 233LINE (X + 3, Y + 2)-(X + 11, Y + 2), 228LINE (X + 1, Y + 3)-(X + 13, Y + 3), 226LINE (X + 1, Y + 4)-(X + 13, Y + 4), 220LINE (X + 1, Y + 5)-(X + 13, Y + 5), 218LINE (X + 1, Y + 6)-(X + 13, Y + 6), 216LINE (X + 1, Y + 7)-(X + 13, Y + 7), 211LINE (X + 1, Y + 8)-(X + 13, Y + 8), 209LINE (X + 1, Y + 9)-(X + 13, Y + 9), 200LINE (X + 3, Y + 10)-(X + 11, Y + 10), 190LINE (X + 3, Y + 11)-(X + 11, Y + 11), 188PSET (X + 2, Y), 177: PSET (X + 3, Y), 169: LINE (X + 4, Y)-(X + 12, Y), 150PSET (X + 2, Y + 1), 169: PSET (X + 2, Y + 2), 150: PSET (X + 1, Y + 2), 169PSET (X, Y + 2), 177: PSET (X, Y + 3), 169: PSET (X + 1, Y + 10), 16LINE (X, Y + 4)-(X, Y + 10), 150: PSET (X + 2, Y + 10), 6LINE (X + 2, Y + 11)-(X + 2, Y + 12), 150: PSET (X + 3, Y + 12), 16LINE (X + 4, Y + 12)-(X + 12, Y + 12), 6: LINE -(X + 12, Y + 10), 6LINE -(X + 14, Y + 10), 6: LINE -(X + 14, Y + 4), 6PSET (X + 14, Y + 3), 16: LINE (X + 14, Y + 2)-(X + 13, Y + 2), 150PSET (X + 12, Y + 2), 6: PSET (X + 12, Y + 1), 16LINE (X + 6, Y + 8)-(X + 6, Y + 4), 6: LINE -(X + 8, Y + 4), 6LINE (X + 8, Y + 5)-(X + 8, Y + 8), 150: LINE -(X + 7, Y + 8), 150LINE (X + 7, Y + 5)-(X + 7, Y + 7), 0'nX = X + 18LINE (X + 1, Y + 1)-(X + 11, Y + 1), 233LINE (X + 1, Y + 2)-(X + 11, Y + 2), 228LINE (X + 1, Y + 3)-(X + 13, Y + 3), 226LINE (X + 1, Y + 4)-(X + 13, Y + 4), 220LINE (X + 1, Y + 5)-(X + 5, Y + 5), 218LINE (X + 9, Y + 5)-(X + 13, Y + 5), 218LINE (X + 1, Y + 6)-(X + 5, Y + 6), 216LINE (X + 9, Y + 6)-(X + 13, Y + 6), 216LINE (X + 1, Y + 7)-(X + 5, Y + 7), 211LINE (X + 9, Y + 7)-(X + 13, Y + 7), 211LINE (X + 1, Y + 8)-(X + 5, Y + 8), 209LINE (X + 9, Y + 8)-(X + 13, Y + 8), 209LINE (X + 1, Y + 9)-(X + 5, Y + 9), 200LINE (X + 9, Y + 9)-(X + 13, Y + 9), 200LINE (X + 1, Y + 10)-(X + 5, Y + 10), 190LINE (X + 9, Y + 10)-(X + 13, Y + 10), 190LINE (X + 1, Y + 11)-(X + 5, Y + 11), 188LINE (X + 9, Y + 11)-(X + 13, Y + 11), 188PSET (X, Y), 177: PSET (X + 1, Y), 169: LINE (X + 2, Y)-(X + 12, Y), 150PSET (X + 5, Y), 169: PSET (X, Y + 1), 169: PSET (X + 4, Y + 1), 16PSET (X + 4, Y + 2), 6: LINE (X, Y + 2)-(X, Y + 12), 150LINE (X + 8, Y + 5)-(X + 8, Y + 12), 150PSET (X + 1, Y + 12), 16: PSET (X + 9, Y + 12), 16LINE (X + 2, Y + 12)-(X + 6, Y + 12), 6: LINE -(X + 6, Y + 4), 6LINE -(X + 8, Y + 4), 6: LINE (X + 10, Y + 12)-(X + 14, Y + 12), 6LINE -(X + 14, Y + 4), 6: PSET (X + 14, Y + 3), 16LINE (X + 13, Y + 2)-(X + 14, Y + 2), 150: PSET (X + 12, Y + 2), 6PSET (X + 12, Y + 1), 16'dX = X + 18: Y = Y - 4LINE (X + 7, Y + 1)-(X + 13, Y + 1), 253LINE (X + 7, Y + 2)-(X + 13, Y + 2), 247LINE (X + 7, Y + 3)-(X + 13, Y + 3), 241LINE (X + 9, Y + 4)-(X + 13, Y + 4), 237LINE (X + 9, Y + 5)-(X + 13, Y + 5), 233LINE (X + 9, Y + 6)-(X + 13, Y + 6), 228LINE (X + 3, Y + 7)-(X + 13, Y + 7), 226LINE (X + 3, Y + 8)-(X + 13, Y + 8), 220LINE (X + 1, Y + 9)-(X + 13, Y + 9), 218LINE (X + 1, Y + 10)-(X + 13, Y + 10), 216LINE (X + 1, Y + 11)-(X + 13, Y + 11), 211LINE (X + 1, Y + 12)-(X + 13, Y + 12), 209LINE (X + 1, Y + 13)-(X + 15, Y + 13), 200LINE (X + 3, Y + 14)-(X + 15, Y + 14), 190LINE (X + 3, Y + 15)-(X + 15, Y + 15), 188PSET (X + 6, Y), 177: PSET (X + 7, Y), 169: LINE (X + 8, Y)-(X + 14, Y), 150PSET (X + 6, Y + 1), 169: LINE (X + 6, Y + 2)-(X + 6, Y + 4), 150PSET (X + 7, Y + 4), 16: PSET (X + 8, Y + 4), 6LINE (X + 8, Y + 5)-(X + 8, Y + 6), 150: LINE -(X + 4, Y + 6), 150PSET (X + 3, Y + 6), 169: PSET (X + 2, Y + 6), 177: PSET (X + 2, Y + 7), 169PSET (X + 2, Y + 8), 150: PSET (X + 1, Y + 8), 169: PSET (X, Y + 8), 177PSET (X, Y + 9), 169: LINE (X, Y + 10)-(X, Y + 14), 150PSET (X + 1, Y + 14), 16: PSET (X + 2, Y + 14), 6LINE (X + 2, Y + 15)-(X + 2, Y + 16), 150: PSET (X + 3, Y + 16), 16LINE (X + 4, Y + 16)-(X + 16, Y + 16), 6: LINE -(X + 16, Y + 14), 6LINE (X + 10, Y + 15)-(X + 10, Y + 14), 6: PSET (X + 11, Y + 16), 16PSET (X + 16, Y + 13), 16: LINE (X + 15, Y + 12)-(X + 16, Y + 12), 150LINE (X + 14, Y + 12)-(X + 14, Y + 2), 6: PSET (X + 14, Y + 1), 16LINE (X + 6, Y + 12)-(X + 6, Y + 10), 6: LINE -(X + 8, Y + 10), 6LINE (X + 8, Y + 11)-(X + 8, Y + 12), 150: LINE -(X + 7, Y + 12), 150PSET (X + 7, Y + 11), 0'!X = X + 19LINE (X + 3, Y + 1)-(X + 7, Y + 1), 253LINE (X + 3, Y + 2)-(X + 7, Y + 2), 247LINE (X + 1, Y + 3)-(X + 9, Y + 3), 241LINE (X + 1, Y + 4)-(X + 9, Y + 4), 237LINE (X + 1, Y + 5)-(X + 9, Y + 5), 233LINE (X + 1, Y + 6)-(X + 9, Y + 6), 228LINE (X + 1, Y + 7)-(X + 9, Y + 7), 226LINE (X + 3, Y + 8)-(X + 7, Y + 8), 220LINE (X + 3, Y + 9)-(X + 7, Y + 9), 218LINE (X + 3, Y + 10)-(X + 7, Y + 10), 216LINE (X + 3, Y + 11)-(X + 7, Y + 11), 211LINE (X + 3, Y + 13)-(X + 7, Y + 13), 209LINE (X + 3, Y + 14)-(X + 7, Y + 14), 200LINE (X + 3, Y + 15)-(X + 7, Y + 15), 190PSET (X + 2, Y), 177: PSET (X + 3, Y), 169: LINE (X + 4, Y)-(X + 8, Y), 150PSET (X + 2, Y + 1), 169: PSET (X + 2, Y + 2), 150: PSET (X, Y + 2), 177PSET (X + 1, Y + 2), 169: PSET (X, Y + 3), 169LINE (X, Y + 4)-(X, Y + 8), 150: PSET (X + 1, Y + 8), 16PSET (X + 2, Y + 8), 6: LINE (X + 2, Y + 9)-(X + 2, Y + 16), 150PSET (X + 2, Y + 13), 169: PSET (X + 3, Y + 16), 16LINE (X + 4, Y + 16)-(X + 8, Y + 16), 6: LINE -(X + 8, Y + 8), 6LINE -(X + 10, Y + 8), 6: LINE -(X + 10, Y + 4), 6PSET (X + 8, Y + 13), 150: PSET (X + 3, Y + 12), 16LINE (X + 4, Y + 12)-(X + 7, Y + 12), 6: PSET (X + 10, Y + 3), 16LINE (X + 9, Y + 2)-(X + 10, Y + 2), 150: PSET (X + 8, Y + 2), 6PSET (X + 8, Y + 1), 16END SUBLuke Erren                     ROAD ENGINE                    errenvep@worldonline.nl        05-20-98 (22:53)       QB, QBasic, PDS        95   2510     ROAD.BAS    DECLARE SUB Install ()REM ****************************************REM **              Road Racer            **REM ** __________________________________ **REM **                 / \                **REM **               /  |  \              **REM **             /         \            **REM **           /      |      \          **REM **         /                 \        **REM **       /          |          \      **REM **                                    **REM **     Road Engine by Luke Erren      **REM **             (C) 1998               **REM **        Errenvep@worldonline.nl     **REM ****************************************REM **    When you use this in your own   **REM **   program, please mention my name  **REM ****************************************SCREEN 13DIM Hoogte, Speed, x AS INTEGERHoogte = 100Speed = .01InstallWHILE Stoppen = 0 i$ = INKEY$ IF i$ = CHR$(27) THEN Stoppen = 1 IF i$ = "8" THEN Hoogte = Hoogte - 2: IF Hoogte < 80 THEN Hoogte = 80 IF i$ = "2" THEN Hoogte = Hoogte + 2: IF Hoogte > 122 THEN Hoogte = 122 IF i$ = CHR$(0) + "H" THEN Speed = Speed + .001: IF Speed > .3 THEN Speed = .3 IF i$ = CHR$(0) + "P" THEN Speed = Speed - .01: IF Speed < 0 THEN Speed = 0 Fase = Fase + (Speed * 10): IF Speed = 0 THEN Fase = 0 f = f + Speed: IF f > 2 THEN f = 0 FOR z = 0 TO Hoogte: LINE (0, z)-(320, z), ((z / 120) * 50) + 100: NEXT z  FOR z = Hoogte TO 200    c = ((((100 / z) * 2 + f) * 5) MOD 2)    l1 = -z + 210    l2 = -.75 * z + 190    r1 = .75 * z + 135    r2 = z + 115    LINE (0, z)-(l1, z), 2 + c: REM Grass    LINE (l1, z)-(l2, z), 4 + c: REM Red Line    LINE (l2, z)-(r1, z), c + 7: REM Road    LINE (r1, z)-(r2, z), 4 + c: REM Red Line    LINE (r2, z)-(320, z), 2 + c: REM Grass  NEXT z WENDSUB Install FOR i = 100 TO 150  OUT &H3C7, i  OUT &H3C8, i  OUT &H3C9, ((i - 100) / 50) * 63  OUT &H3C9, ((i - 100) / 50) * 63  OUT &H3C9, 63 NEXT i   OUT &H3C7, 7  OUT &H3C8, 7  OUT &H3C9, 20  OUT &H3C9, 20  OUT &H3C9, 20  OUT &H3C7, 8  OUT &H3C8, 8  OUT &H3C9, 10  OUT &H3C9, 10  OUT &H3C9, 10  OUT &H3C7, 5  OUT &H3C8, 5  OUT &H3C9, 40  OUT &H3C9, 0  OUT &H3C9, 0  OUT &H3C7, 4  OUT &H3C8, 4  OUT &H3C9, 30  OUT &H3C9, 0  OUT &H3C9, 0  OUT &H3C7, 3  OUT &H3C8, 3  OUT &H3C9, 0  OUT &H3C9, 30  OUT &H3C9, 0  OUT &H3C7, 2  OUT &H3C8, 2  OUT &H3C9, 0  OUT &H3C9, 40  OUT &H3C9, 0END SUBMilo Sedlacek                  NITROFIRE FMX (RACING DEMO)    sedlacek@execulink.com         05-04-98 (00:00)       QB, PDS                477  31450    NFIRE.BAS   DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"NFIRE.ZIP",4^6:Z&=23339:?STRING$(50,177);U"%up()%9%%%I-%\yo6I%a+*6lAI%%6P%%%1%%%%sk%nwjk(r'Sg7fx^bnHt\AbfxU"lC/FMpn\bYKfRHLLo&tFYv%(fIb>VmLo:K#9pM16;VXssL>l63zep)iRB6%MB)lU"4W,n*cMzcNhl,luWnIiodLmFO4,v/V\y.A#nrtR%QBLf=5F\n__Vc?BXUzi1([RU"M(pQj7.k>yS'K1da3u1pzf>g:u6x11WNknRG=[BjnX'%9C4coba\;a0uY72At=tU"[mNJkaVbdE3uLq/k^N[$D18QmHVRo(\$<CgbVRCY-kHtpD>=$HQYlK,9*V_nA=wU"S3'Y4#o6uda#vBxRdruHkOxUljz-kX.,.3k1aZfn?_XH%:Wlr4ONwjU6,#G>h3(U"/_Iz=Th7OF(g9)/,,pQwA-;Hk>nW*<$RjXuGlr2NLDT:S'>^f=SvuocmH?ZY_XeU"ySuZpQW)Me.1c,Q:FwN-l.LvU2SZ7G?46Wj*tbRRGs);DNa)8&i)4:a0Vtu9E\,U"+dHT5w4_FKe<XwJ]G]+ImL&9_;gO1a0UEs)SZx:+L*ob5--k^//:<edQKoL';pSU"l1Cn5d>sP3UaTeR:*1?i\:tg(Mii3LQn[EuCqDHv>GXQvjr\9brQICC2zbGKorQU"dVkNob6D'lg\Q5ZFaE[?)kV6&:0)%PdnUhE?vNd5?\abc.LKms#0wLXEx\[$YT>U"[vS8U8n3^*%M/jQk*A0Y.bV/k();OoqtB7)&0*gvtfa)igiJB=KRf3x'u1AWyPaU"MuZuc%9(O*'hDf,a=.Y(PwoCf$fis442Y*j+HQ$2/%g:2/<-68OQu>'M+'PYfoHU"R&8=*-My>Y$QtP7GYXJHp89f[T'Nsrpl#m_g*u1FQ/md]DX8wavtB\J>)^8Ab6IU"]AnT)e#71TiUnpUl(cU]D(+#7a&esJwqB,x\Y1%6G9-#[8hSLiO/%+fm5k0nIZIU"TEJ)v;/LhW&Oy-EdnaMCAevun'G<=M5[0:%un#D=-(\i:-]M9jC1gp/H-$U0^CTU"f09#e+=,W_&Y_ig[CWKAb;A?XApHdLdMldpM8OBU\UbgSzKr(I8nW'U0F'vv4e>U"]&9S''slO(mT2l;vr(hU.<Sy+GjG0E\we$u(<wRZrbn<Kh37G=WbW,#\Ei/6o(IU"h_[E^qC/w?FZK)_Gt2el:qD>M4'4]b#12OyxM>xCB)NTce[8yeu)tNc?>+ngsP>U"GIg-+Wy.c,n'UYJm$<44jy-G8^7)O^aCWfs\rWH$WBM8.#hP$PO#h);G5a*ERMPU"X'>L8.?=_Q6Guhcu)IY-*j,:Ju'.=WBF^'z39'1B54#<XjyP.86d(st$NbipA9MU"G*CoR*CB3kCWiwFrWft<B-#-<fYfQM0gAV6oR+V1ETQXJ/CYInToeNkk.6F%T/FU"2/C0-Jj\j.'sG1lnpG%F;;6i3>2n]r2iAnR_gM&*[?AuX&bQ^B?UU&QJ<7hKcNbU"/8u:J61oQVt_Ep5&),4HTLdl&yXr#&(l=1y\_E9eEjR.whK9qo1Ovvy,eQFC.b/U"e>HLK0c59B7UW2TQPF]KWnYCZ]CM$JSdV-HvQ.h&=tcF[TZPShp#;hB8([+lbGsU"n8<h(WhfL8k_5z3)Erxx5b;77?%WJ9Sat\GC>4=dfQo-aDrY-bhpYuetC7q_Rd,U"pP\nfC93lCTv'Q(Yg[l_7-FI^75)KM__sb;EigD3*>lx3]^S'rD<G*FKLe9/g\LU"Y7a:F^FSL.)/ja._Bln%0HvKHqBXg]YIsRZ;x3-%,dZQ]005Y-T*m7MM9(<OK/0U"DjbsSxAG16Zocu1LV4Ki2tji:x<0g6)GOX#c1#MAN=\u]Ue=RzDhg0h>s^L)5%SU"Z/dK.2r?:wR^1MMChLiq#Jo(or9'29X6ZXA?*4)DWr22z0*Q64in[O8Uq;Kixb(U":q<;.%CX/dp_>Ab3Fm1xp2,dI46xdpf%OzGZO:/I><D>gs$/NjN%]2D8+U,(PtXU"8*=sP?4Vg04\2d:1Z'5SM)>NSmB3L*<#rwBj4e:$e\]YYQW,D:WeTf58AgE.;gDU"%']?JEb;mgl8i'E9E^E)V1pK5gG:w1g5UgiW<1.]3Il*r_l'NK>;DwGe-Q+-T>aU"FOhQ[%<f$vIHjPNM&6hCV48Ly_1*%yBYvd_Ukp-lM4wBO=YrT/,?,aTOa28hDpiU"-O]%jHFHT^oN8JIR*6'?,/zGDmjjD)<-pUWR/(.q)Cf<-6'?7h[;tHf-r=_;Ku=U"jPFa9,nx-lm^0&cc<<<ND_cNlM,6s$+[MGH4?493OT0#vaYG4J$]Vt/(vw^)UL.U"cKR[-v'.pTI^'NP%O0<DJ$HQR3EO09bGnXF-8:I/<N-<r/0qD;0R<&$n4jQ<rgMU"].OrGGjUmM(<?A/rw4-=rjM71t<GG^:d1Khd9Xo\017<$k/-6PE++3BsE'5A&:WU"16*=Wg95XS]CG26/$#%=Q1/$mn,Cu0h7;_a:.t8h]\((#Yl=?\>><AQte%ea%lBU"hFk]dl4,&Oab,E,GA5(=gbKh#e$N^HkSOUJD#PT^vC=H+O&C3=cTn3i_S03E=hiU"hb/er53MsmbQUjti9NR?I=Bo3_tOb(Vd6+=u9LR,qp?2-3XV+jPC.s+<[z#1195U"pd+08,=AoS_f+pC/&8LFFK>LEa?>P3KgZX;ryS+WP'27Y70rbz3?.gx3r&2)WlAU"c:ZqDv+stM9BJXOrPMWQF]zEUIx0Q^SVTIXgKX(/Z009_h:/Dht8TG,=t<-DrkAU"jZlgJ4Th+C*=Sde2Je>Yv\s6jjZvx9Qsy3i#]:Cq2qOlS5%OT?)4B9+#b0*oS1nU"PYi1(lZ2e;PC/g3b$wF*/hEL20t%;.0a'#?rHL42b=cKv$sJErC_zgaU[Fu:]mkU"+=ka,k&$h#duEHg53;H13^cRN4XH2M[hwi-i-Gp]-lc=/9YeF<oq$usgn#nxfD*U"8b4zKryOtK%F#mfOM%9xdW,+AMifiFru*OI79EVFbX&f?Zp1(xTKc&Num8Ax,fFU"<;/^$_[+KoCsB*8AnDPPr1[19sdX>7w/DAMJw4u6(%<M4YCP4r]oQQ'QnP\#Jr9U"k&aKosFnD:lO'T'Es/GO;Ox^gt5v9-Omcbp/,e[00c$+mM4v0)?>AVMQVX#5k#rU"u96dEl[b-pCJVfiL4Z(e0ep8wJ(FDHlp-r2Of_K)FHlXp_DKAsjSOu%r;b<)FN$U"p#p,LJ04*%FSJL79?vs3OHvEIj\eL'okW)*[GZ%?^1G$3'D&.0hvgT,D\T%a0KGU"i>QSd:q*#'eF('*>bK?Wg6oAgU[F9?k''x'ROfaH:NHZr=MI-NTl>g)<'?/(Rk.U"d#+2lgi22&CZ]$FBn-3O*uy&'6#fz+hxfUug76d*X[5t]vZTkNJ^q/U[X#CU6c6U"vYWu,S\,D1)d4bsv1X.uF#uY3*C_/.zA$818jH\n*>n)2YMUEYo/3YTc2o>^&EOU"/&R.Nx*?#(uS$662An8X<9-q6F6Wp2G]h?vlJJHcQ;AV0JY9Mg23=jwL1[LpLqNU"ak6ds.HoFcje8.o<(Ic_(J(=bUFDY1)?VGkO]I%Yg4xRL54KwwtzL^R*\+/Bjq:U"7C)SkE4Auyyt[aH'=8s\6d=k)U2_:_U:_0rQ+o'n&K,D#72q2o/>+nq5kM3H&_KU"*l/5q'>k%:VJ*:GQ:.A]U[Dh+9)*7E025L.y;h^*&9>-UF(:I^5k)D#aT;S5e61U"fA,vk5-+]Az53oA+_y+omDHOJ-5+XutZZ;>glpd[Q4n^xiK._($q&?aX3LjBy_DU"jr%Sz,.&L2VGF-rBk,Mi;ZaE*,4m=P(A&O1wGqYj:+'oDC3.bO2w>*A5ecil9D*U"2\#[9=AVYa8ErE/;Szk&=THdGskUdfp2?'-=rOume(Ax%.nN0ZebE,=WJ3qtANpU"i.U2J(?H:XtNWdLclh]U+^BH(Cy4fMoQ)c<%sJwx9*m(%F,/Hv03.<494f&y(k$U"W=9M4D2:'7H=rG]uint\W3#-f9Yy<qU_Ir%&.,*I7s'5]bi3,;_Fkk.kAhNTG6mU"[kRTAbqTI):NL8#Pj#AE&69$dN;k-FHt(20PWfKN]h3T%kV_gZ=9.(9DOt9'pmbU"x?VV-ZV&Xy\[ytm(5Up28NFTpw/iAwywDSaPb8VLgGpEkl4oGj?=q.XSfyKA6,CU"ZJ/l/)_dpHt-pbmoe01F,Hh'2qJn^)axV\-&:ZVI3IHkAkrT-hDZQrF^/:Qh3B;U"o5j(=2'av7H?&xogiqyVT&5$jv+21,=I_VeFMXqaDx\C*\%?MQc/,8RY-Nf#:I+U"&)1FL:Y8KCQFgTLihAAZ%f.IBELi;Yn7NjKD3d)iA?ZDcKG2I0Mcf9D8PFFu6JPU"4^#?<J0)Cdp%k#jlr%Kui/ekR2'EIH=#Su\mHrBh_25ALstd?C%8/9lHG)iFq75U"j2OSa2Ukdiu&(kLM4whu1Io3ur)#ZS,0<0<5<yHt;U2'TM(#%2Q\2Hl1]'>s_V&U")8*.6r%/=XrCt#)F5o=e.px'LHZ-,w9CvXH33<r<^mR6YYnpAxQTF=r3>B4_sJRU"O8.>zvn42la(#7z$Qd+BTT2;yi6L_OL//aJWd/0zyzKF'WFm^uslg?%z*PXOB\+U"sjYd3W4I;*nm_GN\*+GRYA_'sG6YOr(k4JMKe\]^^Hz<h_po;jVd<dX[eQ^c#:qU"-U8Ahy6fOGx=l1q.o:Y*Sd1p;r*9Opa:Do3(B4Sxc[b+n)hnqV=mtx-=Ti)KO](U"*&24nYv&6[Cdpm)tb_bBVKTBhKb51-<D:n+*o3jEl))m5&8hlN&?iq3U.[I-,KTU"Ll4W<gIL8qh]C5%8tz+s=a7#qh]_u&DrC*)V5DeiaWXv/->=W2qjWd?+0A+*I_)U"5;9;fj7L%j/;(GE\6&bj&V??P-b-OW3n39p_HBUJ.mARIzvs9u(g=fF&C\Cmba$U"K^Ka4cjn'8RA?P(QN[=o*VL1C_Ktc'SjD4muzci#&zBkPAs8'mz1(ZbC#Kg=w%sU",/7<8f^xuLA52<VG2$VsJswj>;P-*UO>m0Rq1vc&zqBX[-0)EUcp&Q>\R_2#8B2U"9r/;4%.;o6l<wOr.yw_*>gn8y$V;$)YKdXaBR/N1TS;#M(6W2J>93Iz8zM/gtNtU"E0qNRpZ4)we#+:;A/jXDDT$J&u_\YUj1,+SFD*rAW2<(HY1LZ]oE\L:=#=lFfl+U"T9fVo?9g-3Yi:,d9[e_s_L6ik7]b$?E>b368*mXpUZ9]33A-\_t]G$Wjhj2fNo+U"x--K]w1*HpfcJ3X)V=$re'c/WfopwXO.rOniZ.<OWR'W].BMF-O)$Se*8ThP0V=U"=E$*Shqm\B2>FksoQR^kVte5[C$+:W,)Ze%y(U\\QlJcpR$5lW,u4)fCiP2v'ceU"Fg*[>=D^tyHDem3u.1D=Kem\,x+,SN$4YZl_\#sf_]+Z?W_nqu9st=,aS[*p),_U"<sej8^d0)U)773#,eKv).1[;38*P)ZPP2E]_pA%'Y+S8Thb3oS>MCHeQ)I]8=7uU".1,qj?km\2TG8Ffab[Gfwvs0Kic\hyH<88bw+GLMWP)HZKm/HFr(9g-j]*ln((oU"\dA*NVUpyU+FJN.Hk)Se,zC)O=h.%EAM'G(Jf(HqEGP26JBV[h)>*a[O\W#MXfdU"Q)kf,WWDtvpH2jhBP-/\in(rQelq$B:sMAp)P9puK9b9^pJvU.YV)I3X3'[znIDU"sly^2l\hj]jrKe,_=2N-AO=11,9:,iah=C+WvO?exP9Y>Fj/eOvO/MADEjc12_0U"T<2e[[MMuo.5Z9;Yy'Br/VD<>4NZ$\]qTtc7owp*Lwwq5T)?&t9%7'akaRoGAP7U"+&Ar2>)4xi)*f(JGN>oM'o0fo9/q-zY.L)jEH9KSh*<4A-2OnTGP\%YR;/)C>E4U"2]p+BKKC4=EFY&L+u&Z:Hb^72^uEaAAcrhU8y)50&MsgT;$.K3AaO[Nf)#gtkQwU"0cN),Wnh9:Pa'7[Y1*vv[->^-W6$N3IOwQk7SB(BSuZemcg/Ip:HNPv^PSDYxW'U"$t*iGAYf\C?yY#YjuPP2:7W.+47ykg$n<+vh_TFk=]ie+#kJ0WrgJ:Vk.ibJ8/)U"P_,F#$vV'ahYCN/,Gm61U$0C'-0Vb+N[w<PVIj=bK^]go-tn6wbt1'^U_k>7d=qU"5w(]Ggzc8wypldaB[Ot;4)uTDlM7(:KEti9b)=>C[H(zQL-sw?u8AQzU-ZG;axUU"c]$J=#,g:G6W2&.u4962F'_/usgKdkCjZDS._qT3-&c:SMHf^(91_w7vMc[0$7vU"OrgI<J<Y]e$B;N2WMkdPmVK25NTLD:U%QQH2TAc<LYd[JdRuu&1JudUoANS>e(;U"^nAq[e'e\0f5+BIg2'%zZ^'oNtH*A+00P.=#Z5];;GsSIXc.e05*u2%ER^Uh81AU"-Y_Z*jk/XQDQ&37$_fhl<dEi*ag(Qm)&TV-]l;^U5q8CPQw[%WPqMQ6.9DCQ3+qU"$T6bFFRl5-bo3b9OZeaie+)a'SR\75;TW$()g%RJEQ'#to9WQA4d7Q=;E>ll>)$U"pM?qC8)R+J*XfR^3oXE](Sp)T,Be=U,F/RT4TAMOn0eO$8k\Gs#k?T=S8*B$UKfU"tX<+OH1F>l<<-B3dn_$g_rU8ueYm\bHTlAHeSBH=pr^xbu]beb.-H/'N]])xi&gU"Ps*Xa1Uyt3vgk?E':sO6<K4cZua'uTQe3W&NRDq.%7rWx&rN?6W6J_>MC0V><GlU"?GHg^of\]FHH\^luF2LtfRbvtYU5rH=a#RW]:]PEVmNK<lwJKHO^F:5)K)1T0FVU"vkWp-Ng,[P*=B8Ws'm04M<O=f\0JT*0XD?,.Z.[y1#LjknIMN0=i/kd01K*j0TfU"#;$v=*\qcG\MI6kymRt0>%&**AW\hF.nuBn$/cng'cl6)Tj](ORHmYAl\p=r-X#U"hsZ*5Eg<hBp\';0KXVo(#4GODf:Jz#Nn,0w,lB(rhL27Gyj?'Q0^d+):(Im,>piU"2^1/2Ivr/$BlU5VSLZYyPRWaoHgLo98fW7W?jiJosm2Ar2AjVC881&'M'JaCAV'U"\k[[?0dW<aPl/o7<mbnjUctX7'j/Lz=sS,-P_'<Z094^b$l_#Q'SxhN3ST#\ir2U"D?RJ%cX:s9(,sr8LfK_Md*FMDJ#<fs5>l;Gt'S(O8Hjw[%N?q0pIB]2G\QkA:PQU"5O$,^$.UsRr-t&fq:qO:;^Z]s:#f/n>JI>=^^Cinj*k2<F%29jNd?eAm?qD,S'EU"b17julraa=wN*cFfR<</,/r$qlkW'+7K,UdG;plWJ7sE;g+;vBN/6bFNdt44UV\U"L4_Q0J'Dp\:^e6A[l.*V7[$0Zt]4uh?_VjmU7)oWMh-6gg'Qh'z^%qE5f8sEO)OU"rrF%VVd'<)ZpX*EV&1:);DO7X)*FS9[QzSF-r0?nTfW4lTp24$l4JGvl70lrTS3U">aR<WO%rfupQ?fEWBqY2OfT+tQp:]5VSEtOBYk2OH4i.=&[hgD\VG)0P#ZE3_=6U"&Td]h5,:0-OfoAZ,'6*Qdw8#51*lSI2:-nb9'3*RpylZ=h'+]0]=:hok]NG*+>lU"Ga\>cCn:lrJD'Mjc-qG+Q)PMafqJJ?f:Q*gt^8r)l'[X:uhK>ia&Q0mB,\MREeDU"\$31?x&e$c<Gn+YKk&D8288.hH<;A_[\$R[ZK%1&8:8A8pH<:<_/\J$/OIJ*2adU".0Sohf-_xwh0$j$8_;Gnuh(R_bFeoUW&V*x+Q^(^O*$zTg1D#s2gmswVfoRf&*/U"Y6s\n_pU)Lf'(]bSxe(uwuSetq]J=P[\q<T:P#6iXn\DQ7hXPW4eI]A-g0CS+NqU"U_d.n3bpqXS>/+b604$pQddMTUO^*si2.eTFW/M0(/EI\8O_Z-BeofVeKEbWl[0U"LdVp0u]jl>,tJqa.sUc^S:j&a:to5Itua:bW5e%RTqG<I<_H(4$>VmQ;I5T>NX;U"PYwMnlq9c_g7%]IT^Rh3r&4[Jg^nbwhk^$7*,1KCfjQIP3.hcM8u8&tISb'IspGU"f\-n5hoOLSe$\1EXf/ghP>qwo_IL51VoO6?b.#vJIBY9qZ1S^WfVXvhe4_=tOm6U"oX$f]0]WFPiUh,IO6Yu+T7,7J;6]V[QU#M:^9mAFNGNJAwEYwF1$QV]z.,67d1(U"WCBt&eXDLf+8g\#l]lmI*ng5P?ZvE5WJT=2gFf5\fhH#(.ZXdXn;YV%=YY+LwVGU"hCRe>1_llkSb_+r:3(o9m7ONfY?Duj8WsOGRFVU\sFv/y*GpiY$K(G<7Sswg?qhU"5i.8x4aS>g:fP(+Ll:DL0mM(R#hJke+Np\n(Y=Dc3p.jJe<G3YfX?-]q=Ff3-QBU":b3Gz1fHk&MMjcMM$Jy.m*E01f+P-ZN%dI&TgCE<Q;ap-6(h(Y/C(Qg;YHCPutXU"gjugXnqc_TbW;Lb#\uXej=oO0Lhn-jSMpmNU\VX7$\ICtSF?WYj*+>uW6te_6SBU"\F/w_$Fs^ft=y0'$SY[5kxudf3#+mNhIJ'&V[.Q&QmF2?$[s4(1<YME-pC)\3LcU":a%t-*LH[6Cd9'f;CXGpR4D,NIr5r;HOShMx<3?L<qRE*_mBBS'TvoG%?gvC7\)U"Q&'Ufq[p((b7Ec3N9JecGoU[92dkL(jbO<V8>hJV9]m:kA;n0=Z'*CIIc\E,3k^U";TaZ%.YSJkZOX;(Fp]l:1=iqQ)uwu?/s]8$Z>7#lfl.LUDs,u<+AYX-rlr<vK(IU"XLNY?n+tD:gwa<Xb)?b6xG]-t*%'N#Zy$9F.q=3#sPWk,2yr9B-hGcqI]H,>lfgU"clD;OR_MToW#?8L4q+L:F4kT419#v1JdL4Re.2o^nCnALHVVu^:h<sR<5Ct?U$7U"\i^zY:>hFv*lU?a?GXu7PdhXc]aKs42Og[_K[DzfY9PZ&*RgpJ?CF29npV1ggYzU"p2>)e=-FO)c6AAJrpY2F4u^ZY?tfBZIeb0iFSm:^]^N>'^Ka]6L-]SK<2B+(THwU"YyHaI\?sS]OG)A8,uZxE3J$t3ig_3B$upe+(rvK_%OOUiH2IeTgW^P<_^a,SOdlU"62Ba?'IIXgYu/#wg&#/bJe*YU3;j+D1].2.1jbxH]SBsG,,p+9:&Y#pK?E^MJI,U"0W.EckR>U'sm+<FF=0a)Tz,RYx:'UOP[C;_AyO%>9sVs1udkKr2B&>StMa\ZfauU"AW3SCSdpOT'uct6wLS5f''ti^WYg)<Q'c74YpbX*e((84*,8pZcT$O1>sm-B<VzU"-he?ESbvZcwFf*WnUJuVT\LV+TmN%&up(%)9%%%%-%/))nH%(ufnJ%7%%R%u%%.U"%%%%f%hzwf#Snr'Nfk.]ld3$?tl9sP*sRnG%o-U-RU=-J^&<v(4&+Os.;E6**O/U"UP+=-nd+3G'+[UE\u7UPAG<+Q%EFPAxO#y:nXSam4P2hJB$5Fq?s;nJ8KpJhubVU"z1JNZ6ut5u,tfHs[loDrFNumk^TfaCdbdtjrj.xlm$nxkUvFvqf.wgYnx$&u:8uU"wt.xiuWdnu93lt)u4z%1g4-qz?c5+w_PHTA7V<j.airCkDL]HpeRIV$t/*Ks;obU"K2t?[Qg%#BnA&Pa)F-kqaFIbIOf\j,uH$Ee_P,]m1rvQ5\P.?#(IC$dEb/lar$gU"uR-t3i$6*aoNbTFSr8i8LzE:tKQ_CJQIFj;YMcwCOJmAra;<tiZB1?4T56U=liHU"\lrl<q%#.6^D8qvx<=#wIYgcloxJZ2TM>,N_w3dYBPnK_JGtCK&TncPV?cR/2WGU"PKZGLdf\Fn03_Bj3w4r>NK7AN,?U42x;(5i15nnR1^()t-ZUBYzsere%Eb].Jf1U"J00)%1+<gV4L/:i(=\aN^(<?6D87_#/)S=BlF1)-_kD^yHuQ(\19C2TG*gg6f4tU"xVX;E4mPI-UV]RP9:wOFdc]ulIjate=;GEP^$g&rm2P0P8.yoBFc_D7B1J/hmC$U"WmLp['V^Cp*94ZL+;AADejGVeZt<fuo9K=dXTO301'%GJNM?MA>oKKNf)Z+3/5pU"oe2sHTgYe3A*qYyFq%-Qe(YJT1C$i+/&c\.)Momtgp)CJSYn/I5*1&;X8UitYdoU"_55IOf#Kc1>qoQh8+O827]j,J<#S4k(3=oalGQutC+%nLc7Z)Y+/+UnfPll+Ra:U"Yna#aYOH%2v5efE8',7N6>>'WGh)77XO1,KzGL#$o=,LEgZZs,5eW[1O1:gtR(CU".rB:+rgchoVwLe%/M&))0_U*/w0lt(HTT4w?<9of1TcP^>K=3Ts.EM:V>WQ>f%iU"FgV1<Dk6PbUz\=Y\c3mBiRDx<.*S>HlWMwdJjzeWpjL(-eqlr)k(FtB[_VE'O)IU"X&F,S1W:k/:tlFt5f^:z[^Mr#Q.uZ0,D%Q/0i.)Q$SVnWO\7Egc'$QALR'97>5BU"^Z=vRKO[\5J?V&D#w&RF*874rp-wTXpR9;p,,b/2;eC=YoXhiM'.d(ciU(r(yJHU"c#XB>bP+O8,'D$D03dD7M)tC'k:Z']5;.79mt-^$CaJf2,U1YSB>e&6,9C=9(t%U"^=%Ddxu7U0#.BeMU0b2Y=YjSOdW#'+w,W,=)7Q]V5s/OM[;6&)4Tu%PGC5C(BtsU"O5A4=,F#9UTs:SG,,QT8geQ1DD0P[mH$obcbQWUM\qVE><x%QqrV9(L2^l9><xGU"+dP]D7X/cL2l6n*?V-0$gGDt[=$?9>7^OZD^%E/DcAJW86i?PPpzROf;*8>/n%JU"'Q#a?&].KRqjVX?0[U]n&$L9aOG=D6*5w[.CtCFWw$:9t=>kNLVF)\pERN=?2L+U"r9CR5o:5cg\'rQ[QYjhU1ML858J?bG_[&0>&Yq;Bf]J%#ls)(AOm#io4gc]<9a]U"4)#Q<;73C;_hmiTdAa':hE>4gG.1ZUKEu2?o2TK9uVpGpOv^ZnajU5yfh++,=Z1U"QvLZD,\;[$K?bD[P[R]sLo&)#L-o7TaQ1PBdQ--YH&7G$eAk<?5iDW=ghqy,kDqU"x]XjUEW;td0vLlc8Z_Qhv0^AWrKXo,FwH9/:xj2W)l7*2*MGnZ2pQ2mc,^RlGERU"mG:\n$/e%iEe6K9C^ZrQ68MJANdR<*T%8+/naVdM>+O?dje+ZWM,WaENIOAT7d2U"v+Mi*HIbI+gd<^B$LSca6bs4:>41Y]IJPi,k'X(#b.Eo5*0jHZ*eRD^X=,(7a],U"ch.XFIf]_yZkp>c^2,e)fVBm?^[&=sPg.c3;ZM(bj9aK1GG$&*b3zZ8>'Eqi(U)U"sM_/H%g<H>ir\6eO4wgg?N_.fKi6&H&4ui+FiTV3Cvj<DP/Q0phwZI\*?o6=IY)U"^Q31#*G,:5e*Q:f7Yqe3LB.aS]O]U#nM*FCe5Hrm&Ono<lIbQbe&16]#Po-X%LLU"k(_p'FjX//^xgnSE1QuPlCevR+UakcC$MKLOINtJb#_UIUKv3k3u8/)mV.itS&PU"pRxhby;/W$N4/I4)OG:m)hMIT/:<]B,%nJ*GBjy9>uuTtB?,v,6.NkI%j=1AZ3cU"9YosJj(A(D3rMgW3874-o,Ej'$Cvn]xcxcH%Z.:cpb_^o%nQn^A_s*jD0?$Q;XoU"Ln172$2q5OFu22UAlg;)#Ch3(TP>,bj$+0-QIrdgIJl54ZnRGEQ-KowH<1t]_*eU";U'/g?C;_6\QJMV\a2H12=b2<RKOAK;z*,[E=sm.J3JCtr>2zYqj=TROgN:<5mVU"casOd1-CA^wXP6pW;,J[KZ#IK2B*T4)EuT]A+\=.MRMvbx%VaV9]SZEnUj>;_1PU"+7TuvNKHhnjD8?,/lh?sD$*8EVgNSX]0?+O%7ysO&(Ww=o^&XO7PNVn[dBpp4$&U"4U/3YyX-$)<2;QPP>oE^qAa24Axgb/*1':LQu>kw5*OGot%(O3pF>d[HX;H%Ab(U"i%(YcFWUC*evD9tMV6ev#f==<aL'&-a3)z.MMr/70J%[_mzF9?Bfe[N*\0?-3o8U"Wj0Cd\v%IIULKb;(CLyW0seZlC9)K:\KM%arX(&5fj>SF%_jzJ59C91Y0u%M8SlU"S%3C-m>.()S$B;BT1)RR9;(+o3LD0Zb=Yer[r.D+WP,_N>BpD3vQ'+5<&1EfQeYU"CmebPfJ1^5tU'dFa/iiI$HLiMY-2^(\%J5kqL#F2b)HEH)e9lE%\$i'+5)[LT#QU">F:51TeQ8[mk1-&LmQoiYagc%5X<H]u2MqlS(h9t8fF#hu<fd<$G;Kg%Gw>JXhtU"6i(o1X[JLa[]=?KE(Zlh>_f^=]8b)O7detWKE/t+rh]4kjn9SD(LDr.OU+i:pw_U"'2pw[Opc)Xkd1\-4:_/xp'j7Up>Vq374lBIlA,=&H#.XoR?>Dj,s>gL;qUK5^(bU"za?-2\k+61gDyH\ZV[E*Nm5UZ:KF$a*3ODQc.=]N%f'TAHk,%nYDP=%WcuJ?tIXU"FD/]p1txgke]%[lY&Mz:u.\HeNVDz,)=h3^KQr=Jzk8M[p7#uE,.#U_tSnFD_arU"Xl9bdPn>6t0bru/[BM;.h6o^jg?kD'OQZJ;\y.i+KjA]A8Z]-*oiQaIT2()7:&+U"c#FH6;BwgO)P#j(M;j6U3'zCw$u2eLNXR(nj-CC11yLUkd&_hDq2,XKu?e<Z:F1U":.(hxJ'eeLZX218yWdu6;lq0pOg1H+yHlE)_<C'.)NDg'S(J;*1kVshNVME;g?MU"jg*[O2r7n1=jg:ETd#c#W4ZZW9CAXn(-:Oko.x?80<Agn,z]$#f2p4Ij[Y;Z/j3U"%=.+17mp9R/4r;='+JtOiNE7Y5i;j)o-]#-V/Id?F:i5.w_fQ3Q#<pOMI_>;0/cU"04O1OmzF)b3q1[p&AtoP>+?qceRe)Ol[)po]ZW-]+Oj.o%jnI,'Z/9<3;e#3IW?END SUBSUB V2U"f<acM-m[x+XMClStXLwvXznB?AOi-y4U.09G-FkabyWeOsJ=(tr4>P5qGr#h1pOU"\(Oi:5P]8DT,g+FDptyZOGt6[-HfJMsiNd0,*EIyWe&u4bA,ia&xEcw1Y2^(We.U"Uu[E<<m4P*dFSRi?Ud>]%sf_KI$Yd$1Q1hP6Eit9wh3]q<nM3PgQ0D%nfo]E+wDU"ZEsXj;^Wx]#LhVJi(z_*w*#,39/$S&ZG.1^ULCs*$%mX0V&O_i6:S:/;IoG%)&oU"VON*e9#Y4j%n.Gd4$6:Z&oS-?'r=QPp)fF=Umx&LEGKI8;X'?(\E[1tz#dDD*KoU"qbvPBb5*mvNV585#zG,>fbzWvbzbw_$bVncZP,Vg7e*p2FK+]-JVF*Eco5<.i'WU"DE&H,k&Te._Lol.-6StD^2td2W(bS/J,>qHJ-;em(q;3EG+tfW<[iRP3FT1fgb;U"$d:zOzW2$ea6\3Mln)pqeD-pKXDElN4GZ'_sK;;#-'Z&Vv)Oxna(>%u<Dg)DceAU"^;^wveoG_ScaHCA'RXJ&E,=e8r]]V[->SEQBC2h]]aR?)LS]Z_;>;4lWA2v^e80U"[]pC_fSmIOL]'W*\x]IA_8dD'/edg\7Es&ts7c+O,l%>PPri+]a<#7)OfzD:0):U"ej#=mjX+0BD+m#K+a^N$t\EctIICB2N9jEI:]&i^8bu+nK[Og:gyQyCdYKpq^TFU"9-'KV?G7v;do>[ue$AZ6uceho\9MEdFgJcm'u^/*P8C1S>t$\?;VqF2:)gb-oMuU"v+r;#c0%A9$=Xy]grpw+XO-rcH^V,p9\gYjcqoGYCFiL4;JK(aI9GnQe$%uo,sfU"1l:m.OM*jy5G8%1<rYPK>*naKwhv'sU(6C>R1Tbq#pJRi*CL5F5VEZa'\/mJ%VqU"#,0BrWX=:<d4C_(cIL9*m4-L5yx?Hb1u3o,2uB4xJm?6_O(D]p*1KD8>uCi)DA/U"BKhM\ctO=5ORJ5,N[*$mo7.fB&ufzc'D73nV3gN^R(pFT\IcHD*6EtV:ag=UGz>U"7_%^c%jTMH\%U(;^Z^3dL[1t8;7&7:^WHPBFPhJc>Usi&.0JqT/g/1\*7WI2Y*IU"*5\M.-JC3#^6Pt]09-h+TJE]YM?+hi3VVg-\h:#Iw+vLSSR>hP%WtG[5N:4LprPU"/*Mq&6'wEbA+jciiN\H880#hJnYyM##CIUA^[3*_^bY)UV8L_.V%Uwz13)ue&5nU"RT\mW*1W.J)$W1kG0A'p(F]Oa%Tc#e[QajH,%;Qk&la[eT;,s3l$,ZF+vXm^umKU"oHLx8j:[3aX[LR;^hJwMN(?(V/dS-A8CqXMBt9RC?jK=)FfrS;BlYV:T2aDbjgOU"+^I]'ySM[_d7S6ILK9F3UQR=8m2W:&_'6j1BE+RR^d1<Tzwe^fMW]e1mCX*O&:7U"O+)*je\4Ip8LK;MlSYZDcxW[71.aaja'qQ>g_%'ET,=0ci1q,JH0*6iTmM^K_$>U"]DK%5y7H9p'E)/=^hxI^>O)ZGa<.aEtjH&aUUAPpdKEF[gK)swI7c-,8[BOdL3nU"=p/JS-;,mi*]6od7BjJCKgRCdFs7Y<YIVAQvlT\&)\PB0Z%[f1Nh=5#b.0r;/4BU">UTEgG72k]QHhK1Ve->]h$V;(C,mF5B0?^RRaq8CLt_h*1ck7]s6,_3O<#F7bkaU"K$-3=6uRF^QaJOSFALi3(L6>7B.'QFa^t3ra,V+$UUhnn5=\Qx.G-Lff[dH;aF.U"nGWrmP:)OGI$xtWq%frDWDmWD3b*_=k3s00k-vZ+iB>kL6gaB:Tw)i5/:?=n<-ZU"(%sl3fndBml/WkGMoax=s5M+13AnZ1?7)r>sHW<SZYRn7bMKroy#G;/n0ROz/bYU">>L9nYWatJREce<EOkhKPUK**:leocaN<%J;ZPIj<T&;qWd/U,wc%7j,QDUJXtbU"]l#r1_5$gP-Gl:X\tVa5ThZ,ET'hUt4.K1BUA1X]J*Ci$1jFgj33MPQ?H9l%[r>U"a#o9<5ohfHBW3*<Yk%=^X$g03PE+:U,xQ%%]Yu[lR1a+7FfWJ6V1;x0\/gFQ[(nU"iXMAc$=_PCClG*PJONP::B8]oB_:wOIn*/t?aGx29/lNiFeRG5Hg)DrrUQ0b=bbU"$%J#B^6MXexMef4H]>q-fTqhSNS+Wd2EJKV1W47x*e,H5F\f&0_cM[cl&UY/rcRU"N:844BloQY-hukDiRdoYd6'G#*dB8aN?]Qb/&_*JHROhICM(YbIX#*>wqz?vectU"^jL_>mAdq74P.I8aGJBVgA(-VTU:rDU01rCm0Xo[uJjrPhc0uCSt#Q[M(g:BMNnU"cs&qQ:?UO5rD?l_M2D:lX.=ovbAs;]RIX>2#4%)='vJUEALUj^G3rEO^DD5PxTHU"Jc/VqVy4O_jPT$40g-Gor,Pw%+up(%)9%%#%-%oCbnH/pmAoZ#&%%\%1%%/%%%%U"y%wfhp%VSnr5'.dv%s)F1JUpKCPb2Q^2-/FtuZLY=TPN>r-qg2a\i<V*MlD5Oo;U"%RQprcuL_^ewYc$u3ih#IOQXCZ>KeiTGSmJ4CI3H)qydiGvuPklxn(h^[6$J$JmU"20;eAV:gqp+jkS2b[agq'?wA<Ml,1;.UhkWmT)<rEI#SeBv[l#+H+CNPYDifA.UU"FVm:d8:+X;QpK,A6V\67dd28T6.l:b?GoGF''%Xo1P?,Z_kSaDx$N5foZQg%6g/U"s1ZQ;MalwX>5*+tI[[BC)k3zc%DlmnE9x1g-EC:*SG;\*6)Sbn>DH3a_+++2[?jU"K($]5#?4>[Yu6+=SoqL8:k8rN7Dh[Sf]dU1$-<J:G<HRj[[T#L6KSccK=%7FXIMU"XDRPkBVpe=/>]#[aiVdsXHm,7&?[#6),uq/rPIQ#/_i]fe(/=\%'z#P#ZOj.kw,U"76>fundZZo3#A\Z;t-',C[8LE39uSCkKr./hmCH6TpQ1m>Bj)BpIcTZqMCh%2szU"isK7vFdcb8XsI3ge<Yxiv;t?kTQ_Uj^X2vT&Kr'A/NOo([I.q9+I(z2M[_^u<G1U"vfu4Mj-gmpY_SG#l5HN^H%Tf%q^$C>ZopYfP,<R?_t(:'q*up%()9%%%%-%.XknU"HfcH'1'O&%%&<,%%%/%%%%xyfy%zxSn1r'ly%rpIV+5&\-8RQQ<3jqQYV]6h-9_U"]#^GGk,GM.''N,Y0+fcbh&x5\q*)#$nJHXjHeQqlm'5msz^NjpnK6Kv;H+qmW6GU"o]og^Z(5CV1Q#Vd,G:Lsd<4ZpE>dAX2ctc\Pz++,Vf=7$&.c3e')jvei&jH%j8=U"nEaKWR=i1?wnDHlR=o<cIUsUHx8lIADE+'[oy7Z'AjB9?m3AXi[?<UsUN>HGGZ&U"J<w.F'AqeIho/lg9^Q<j?&hl837-XUM+LT(?o:V-n=+EH[W^yH)0+aP$33jr4UMU"[o<u.F&-k:ua(:OFNmq;-.ZR;th,V3rEp:z<JjtM%=1LUxgFdis$o/eWDQE9=E/U"nmSQ<=wu[L^;3*9//eU_,(>:_Dc+4X[s-k%uOxf5w=Fs_XlR>#Z.5H<wFz^EK2SU"akjzuK4&xmeH>MCCSBym7gap-)1Hdn_hIdK%fzzxnY/L&&^Os>N3pLZiq,U%U$rU"9=AfVAi_?A*?RA]:#1A8#AOR?/khV0o>b0)=6Y#gtmX;tW1tC?2d:_)e_bZJ?$iU"/<8*A<Rk2Mkjup<>u*=r.#'d;i/fSTkJN#I^2N.T385o4V:B?^KCgX%up()%9%%U"%7-%>S7GIoO0#Q&%.%%V&%%%.%%%%xp%nixSdnr'&HG*.OdU5TZ]XgmbC3Qxs9AU"-[9.sFe>dEx3#meej;A,/0LrFR5hgE4-Z%AA_8L0m\l&RiKUsg5kS?Fk5jOyB?*U"f-Z$vhrdbobXW?kAbZxF%1:up%()9%%%%-%&D6GI2YCJo%d&%%&N)%%%1%%%%wtU"hp%yzsj%SkruWFa*9'<U9j#Tzu[^(,oBD7RqunQ(B]knb>mm4QU*ARl#;[a*7AZU"_8bVC9IJ*r'z3IFJIfkYvp'mZm'v#JK+-%HjtHCnv9=6F]W&Wk$A)?9Dp-G0?f+U"j2\S#)%JP>RsTJ)7%<<vfjV7,X<Yf7?+hFUI),^'6*/3n+A2sX-_^#c]VphB#?,U"wK_tQoH-3pLZb-#ImlDB.UZr0-V5jRmA_iVjh,m/,RYdO:1+1KF3\TTTP.hpGnBU"Ddw^xVllSYBS-NH1KF3\EfBtbMR(mD330Ufn*G.l>kr_94t]XqWAE/.W'j,p]F:U"]jpPdO#mbb6I<$[enRj[L-SJ?Fx2ImD_]LHA.p*6Xu,*XWaFUg>6m8:RA=\OOdeU"9(BOeQvfJE#mcMu6#Jvmp.RG-5mbB-xXtu%p()9%%%%-C%4knRH\2R)AJ&%%%,(U"%%%1%%%%skn%wjkr&'Sufjq^$D&]?V5pj>=D1x[h'/115_)4i[K1*8Vs)b[km)KU"4c\FwASjJKf]Ci0F#G'(4d&d1C2_r^Ab6%4FyzZ.TfiAu^C^PvLx<uT'd'uPdTTU"lTfE4-Xhq8V6n;Ka?VQ6W'Cxxrap8-,/9&&)WoisSl9J-(V5=,g/G]m+V2oJL:<U"J5(]V55%HwGzq&Ym63wDRiGsG:$>-NQ&WFVO\I]qK3p^;k2+SV>xJR>00i*1InJU"=Tq(+T>q2-FASQZ(Q8ITRpO+(ST2A(F'ik<ks[o5e7wVCxq<:,fE48edmblMxcZU"0__R2Y^-nmMK^Gt&%XUYIF$+a56x[4HZ2G^+TQ3UKF=UMUUnY%VRr^PL&F[+i6)U"o0#iWbWD&(ovC42UG=9EMKIUR'0jZKMvf=Xw:;DwU5R's>2Hp$KWYpypVZb:;\>U"6.>^3QhX#Jl#v]nYI6V=LD(2[MD,vc(C4z:(+G'-Ag';g7&Tq89jd\\%up()%9%U"%%R-%v%JlHEy13w=(.%%Vc%%%/%%%%yw%fhpV#Sqj%<fiRt[9f5?qH=JVJO<oXgU",GPpI:qeG,z)gE*:G#rFYJ)RtYkcx6e,XQo1XNV'NbXzh.>[bNhLJNubbb(rcjsU"vh:B7ar$kBCuCCCC-Cs4ZpWI]a%flLslgV6K5Zt:t<#]0>Irst0r-_q8c'&C\72U"UT[^wz2Lfu'U)k/dx.V:GpmNZNV?te).*Bt,EkYLqA(=5E0jfqr]0HgKjmuhq=wU"&w3B3(%M:(W'Nj&G:jYvLsnh]dT[Bo-Ur^;-ibX(-;dxzlLi)UJ3&f\4iH.]A;wU"OqRDQY*iJ)nA[/B%TW/-71lq?cT-Pbc[[MBejYdT0PYr<jduT0jVcY]AcRBbJ;-U"Xd\+1MIw0qL77G>tDvDAN[e#1\y7,t=Xrt<\:Pr81aJ3Q%mNKExPn[mL_XhOyhMU"oZO9ZdfP%YH$(Sy00<OeT=iPb/sT(pv.:S+Y=.b=\5NZb\S>>n:u:JnC^2\T&NbU"YnYIWr.=%9#MPMMQG_LW\=o6-342Z0L>c)8C(dMye(pGGIo7XrV8'm<b5M%M[u*U"Fmdb7Jxf-0m2EZ<D=nV&*'9$eej46^j$3J(V')w]+I]Pr5'ZANBr/8%$1+o7Tk%U"C,J=zn2KM^O1JfPnP3ou^cXAj,pVPPgujt<&W_qGe[Efa;iVXS)O_sh;-'IaEM:U"8FsRSdZRpm?M.0eJ+l,C$xDQcIg>-(6$#pJ9W#uFMPL'J=QxK#tQa#8^?)67bE>U"(;4vMk$-5lib/BS*>A&R6(a+dh<%+bmd94geYI2,__^G?-8.ej6Rth/*AMSSBfmU"WF?4K4MS:SBmGeFsle#/44XaHKK4c;<h[m-5XA(MfsofXb<4i^^liSRCKFb^iZgU"GH&^Y-1=\PrZ:MlC[/x,cum?&?Vl3XsCbi%g_w5H7#o$x3Y(Du0&7wVkl'k-*coU"?J=5tfECovPXf%_w3uA^8qATYcpdTL848..Q%j4n,:Wg3[OkDj/XFa52[HotamFU"\$)3;2JN5^FR,V,wSXc9l0UY)uZ\5H/95a7\V3zncu5:N*Tvs(KvgjO.iriD9[PU"3P&A^9SGeaG:vL9J_Me5d&u?RS#*LWbF1/Z&\>GX;;W?Ly8[(7u&y>x_M%%%%)%U"%;w&N%up%()9%%%%-%.vulHG5H<K&E:%%(,G%%%/%%%%ywfh%pVSyRnqf,3VajmU"E+Ei^\)mej.%;?(oaVo;behKmL%vImt2X]UU?7.mfkikCtnCC%V=:O2Y^T,=,E;U"Y-oqO,k?DCEOuQxtXrxHpguV8ToZiwvp=bAw%oxBW#abu,8KBc+TGf>bk5tD#4WU"HOX3RDS\VBLJR,+7pd>VM:jxI..nmjNq,TY8ui&Gfi$KteY;h,,P7S3wL7$u5$vU"tTi,uSRL3MgNi&VGoiI5f+ePeP-<^-mfqB.W%VcdH][XS\m0Sh4Oqx,uhN9=K[dU"b$benCim=T1%,V$jn_E]upqcUZYZ6,U,#oj4%/tRY,up/n]Puq1Pq/VMBKu8Y,wU"p*.mXrwXwTbRNd0jqpNKWxZvN;7<xD:3uxv_=Ttsb&qTSV.Z05loX5ooxqwGWA>U"m^</qmtOt4pN-Lxq[ktxjvGne4>N24NUrxVOkmD\>xX[\x<orx8Dt-DX._leDolU"?w'atjut20i$Ztmrmqmsq:h4k-\V8rsSX\B,)<M6ht]^U-N0,5^pSs-ajLafJw2U";n.b[:Ybi/eN'P%UfD6_iYJ756_KMk=;6+?<Y+WphcwtqxQMUsN;IEKdRbYb.)?U"(4Ga\dFB^rfi2W<8;6c2tS[Z0%/%Ni(MTOtk:K<U:u[<CkBTlq%N:O<vFNtqx'.U"ls$ebTwtsNu*xTGWoNTi9wl2:jcb.Z387NBWWiRN>fRxX$rJH8TJdSY]KdbfbUwU"rxjXRcwk>oN+Xd5^eov>w0Gl^d=kYx,?ZxTkvVMf6e68hIRjde\vc*I\rupCqDuU"5'D\?+=v?$wRBf9P^u$3(t:?2Fm&a08S4x5n<xb>-n1as^0ru5Hd9]Y)Prx/xdVU"$H0T:no/aNF4CwK1?x<t0uP135k.i=9uv6%d$?<8w:_>Gr4BjzWjex%4jL?Fg?wU"l$GTusq:QR1yAWF]jfJDDm%9h;?lh+\^PcjwJrX0S/[N8<7BX0\hEi$o]VP]^VNU"e,rJ;P.Oo[P(\RA4Y7zRi7z\wl<v)xS?bf&kI_YpnN*wh5j(_d>+/V?<uLL9O?8U"9i=wZX$QPMjS&.[z2o_6jd&u]\zZcxID=#$/6W89C4hxiB=AFrzTs,=wXRZ305aU"pqZm?m3gh+8Y.<HOf*Cs;iHFp:_PItY8QxuT)VXjLrxpbbv,lTXPt.8j_u#lexXU"^e>gROaEY8\1\pB(_8yl?44?(,GTVlKp]=cX.*d+DUYyi:iIGxiUfVg13iR%CaZU"wCn5Vqjr$qF3xf7ENL9MJY[?'UZcIA(=7=7gZ=Am7=)t0TYsNic,(fZC]rTWE#MU"4,#?To-Hep8?1pg^$/4#8?TkM$e.#x+0od#0x,vRrxeNkrh#*uq*%D8?(+8D>XxU"g<lXwz?*xAA)Kp)REm]+Ul#]1ho))BAc&k'*?p]m;7^?MOrhZ#W1kFUM;srfh+uU"o#l<LUQf%'$,l<c?lh>R<_nO?s.^D??;YhhB,H3>Zq<Vc-+)jI-Dtgt'UcM[42pU"<6P:8<;tlaYV9R(zlNf?VXdVwVo*Yq%ad:tsF$\Jhowc5/ix\,lViJQqcuj]CsTU"8,uibFa89ZRCDq^ruka$DT84Pr.8lx.Dx-,=DngTSjmOk1)>jTb,s_T#x8s6'g0U"tfsv.cjxP[98Uw0Lc^nWqJ2uxbx]4\YN=6bKo(=9lxsl#rx&pxq20i\9qTwtT?TU"oNkEu)7YDuxv$TN=x72cdt?iNqt\ME#xQX6<>ZrXpYMNZcN<V\=YMYJPOD6CdvgU"x3/mjx$*wS:wwz5K:N^Kf%,DaSK(5rx\?:OVMzYdY3]T+L>dHixH_uHd<l9sLC6U"xuDfPwrptoPi?PVK2[=NpojD-x7Wpu\>=Th?tNx#fqN#uY*obl.^BoCYWhrw,>xU"nxusMufdK$Dd9qNxT8k\sF^o^Sbx<ZqiTmdxul=<iDUM#orXV?=ddmw=pg4wKD/U"-xk5sP3qfNGiuKMg]NLu;?%sPsNw709sHUg<b^j0NMndNut\fxb;dTA*c^Dq0v*U"'b<e<v*f($lw48vd\Hm0P:jB7Pvc.Wd,l8rA'kBt:0ZHfhzu^xos:p0dTqwfjGEU"M.uNYl&8KUfNLnlaH4s(PQ&?Zv&l>M%N;N^oNQxuLo2vSL#xYqcN>jPni.8ou,vU"lTqDd>O]wN8lwpkc:S#uli2.:us,w>jbnf4#Qxh(Nov$#xbwxUw+Pvd9p/NtSlnU"$*\GNMd[9xnx4L<TNHu^sh0iCn^xfIJIu_1+>xd:c]xX>w^n=KxpCcx<hFfqD#\U"Zq(i#uuH]X<wGtdHTs0^<xuwgu\8&89ur\dN-)^.jQ0[xtIvToQ2vLv0nd.xeNNU";v5T#Nx8NfvR?/wk\,\xfMjXwZvajvJr-Fq45W<G%rlU\G%YCv27I?xN-?,sl':U"2BNI3j&(sDrYderL/cHldV_N)nx*nHxM't;NZHR+uj,A7_:xz]I':x\l1cPuADEU"xRy>x+Q?85:Kr\I:qN3:BWw1UfH?8$2/NxDV*qp<2nM5B[a\Fj\Y&Lq/rjVJ[_2U"nPuk01KRWxe6dZ8Cu^l,w6Tt'wrJTkTR.]%(>wrV4wh%wr+d%i;+drQg?8UY\:NU"^=vo\Y^Cw0pd't839#LA/\BQ6jz##EN_0Y;7CkqdUz7q^J9C5krCA*lpUvNGc<UU"nwc:ap;slmRYXPx<bqJQhaSFzxl9Co^d>W'kDMm*Ke9xiwl9vlwl6vxZ*t^sh\bU"#Mdlt.mHua<vXxjjxnaa]nd.aEnd.OEnN>Hi<>Zat8$NlxANNrxv%xuj1EuVNdrU"NYfrx5t:vxa,<w^1O[x[MsdbxGi]nPx%+D;;G9uEao>4uPQq9NZm4cMoc8>4uWxU"Avt?E?8O4#xkBux/SxGU6D<?w&ud$$PKxu7DkHN9NR.F?xdVqT$SxOT9N\s4uPqU"55u(NR0zqUWxlq._1/Pw4<0NNfx0jqP._NvWv>YNPzv>/q/zvh^UK7xspaSxsH3U"kxqS5i4l]x$x<&-x6rqN)wrxsOXi<#zuQx4.KtJfu<c[tfZ_Ff9x>U4H=<hXVrqU"c\l1g$/3fsUwdocgA&_+VqdUsu#r5U#KuPQp(mN_HZ4gjn\240H.nGiV8as(#W*U"zj-X$v7D^ibo3bS8/ec+GsdLW8kJTMblf$ixrpR?8hwD.DGUqD#Fb,=n92nu4o1U"#Fxb4n\r?xclTcW[(x_&TtulX%8v7#WPpTwRuv]pTYxt0R8ZqNWNWlqx4tHPd30U"m461guxK_XegQhw;F8VF'6,xsGuxt(uu0]l74;xVoM%%vJlRMG8DI,dVZ^jzH*8U"x5\NDE$:^ju$^i/Kxg3Eb#k.p8uhRk6mP8urG6G?.5uXRqH$MnhMA)-c4h,t\xsU"E&*jn6Fq)0U,:%qSN?%A:=RMuC<[jWoHu#MU''\TxKxRdwm2ku(t?_M.MS'U]\xU"c<Htjd?DxsQBxPO;62Yf98X07Hf:HM%7lju56t<Q^':LRqi$+=?0X39Xir.W7G<U"wj>qIxuD'qdQ^jNxV2Q8kNg;LjuPqnN.wd4R-\>n,uXcl8r_qNzExnmWxtuZ?u$U"bonDo$9NBxVdux*[Yc8x92kndIqScbGXxs(Hv$x-?x/qFd$?<u8H[qu>TA[teZDU"QXFQwa4cj$.rY>kh/tD/xZo>lVxbPxoxlAxsx(V%^ruv#_Xh/#9vj.i.ithx/w0U"L]ZD?q(O&FHxHMl]xn&F(Wc^pd_xCWxis>KQ$*Nu6Hc(Z=x]NtXxBx>5nXJbzxWU"x:*nrTZqGOn>Z%wA9rDjHux8)wQRi.NMNOBNrfND%uwSduqVAx]ox(x,HshNzrxU"M+rlHIiugLojunz^Tunz^Quhz8<wpz4rP=ND8sX\lH_m4KwrSVktN\^V9\hEJmmU"OGUlrmn1kxM-Tg<<0fQ8ZoZC8.uVw.#shaubRL5^HFbsFSlFwZ.<a;]uw<1PtvsU"PMWMTZ.pV:xdPn8Na6SYEl?V1dakz?H]pD.Y/D$NEF_DlD\]t<l5jW6NZ?5o8EPU"T?n.a^w3vbpnd%flzT#=(kHPp:#VHK>Mi#E$:jbmw.X\RxY7Fcb68UiH&f^ODl^U"e)ny)K$wJUur<mPu=l2pNowH2VP]qva40%;=Q^gFlb%g9guk?w9]JH*]pW_tcoKU"x)N/j,Ho5cTBCGc]T9MGYaNsS+r(qO4\h\_^OvjHxbwfB/'hSjblO9i8x&,.ldaU"ol#qxWI9w28[GuTc1whuoh_'xaExrun,9Sx<s6ddt=ixSk9w2xj0xrxjLw.R9x7U"x8jci.t;.F^To%Uwn5dd>^lxtz^XdYwpXy=lMr;N?f+Gx8c<j.\(ox2w\rN4n#9U"rlDDny)RusplYf9upataBx6xd\p[xsGxRxsPw\07_1x\<dnjdh[mUx^fWzl[D*vU"u_^AlwjLrXxsow/)il.0hqVF8qs[i5$XsO8AX)GoFh=7zR-w]jaK/d)DI5G?-=,U")OAVPJcVH^\Uw5k8*dl=\hPDn?0GIBeW'f1*6=eV4(=I;EMI.:5880PbS;J;6NlU"/20?B1e)Hfod%YF*1CArYrX>H+U_BlKXxkN8w>lqr5:^n9<]ht<JFlmco$^sr'fU"mwC,;D&K-$Hzcn<HHlt#(q=*jH6)Ll6d5qhf:m2^6]YYqTWaCq<$Kv.L,Q[5Nk.U",,K^tMtw<aT8.xb4v#ltnv8iknvN(D-w+^oX.xBZx0;NYY<S^byC)oopnqH9n<ZU"dB[L4CXku'bI;EM+9p5dul:wTxsPR8i8NJtdSx;%#0Vh+,l;\mibn#bZgd^J;VNU"YxStPv;lZwE9]T[tZN5jONHix*YtQ\jv]u$v>t=E7iD<u.9<9m;h<om3vXjOu>JU"Txng.=DIx.rsXuXqa]X_?8,h3UA2UR1bGCN-w#HzHx2]*lx:0BktnNd$2xrwr*hU"+nd<cNxt+\<Wt:u)XW1;w0GnFd;RYcR0kex4rQH[F(6ufI#/N[&#tN3B?nnaIdiU"nF(vk6QiscHJfEYj[Hou.dFrm,\bufLr8.X/Z#/4hiRXY#6;VjejyiW*rsfZPxfU";-uV$#qN.,scd]qu<fDuniBd]8o0[we2,gvyiq&;P+<$DaCKZ.Nc9mvi-v9XTGSU"X$AmN6xC7^B\x7VXYD,Ve$1^]Fo.sC'8;m>:x<ehp)x[lzv.iw9yJppysd$-(qvU"rPzs<1VjN-e7c*x?.*l4SJxxg?U?'dulRs,u%wZ,isV(x^<;Jcjdk.mcHu<vaXxU"xxa8xxxt&AxMlxvc&l8lEvjDow'jdo-\GVx[ulx<M(BjH$Duw$,nhvLexhCMfNlU"XUkFi8+<voBr/waYY)/h(N6nL4tE,SN1unbDv.A;HBw&Zq(jdU<,\']_ZciqN%qU"A2NT^BsZ85wV>6d>u,,n08:[x_j^\N6T'dF7ZeSx=Q&xnP9x/xoI8B.i8NEwLtKU"[8YYJtvbbhrDjFHx>NcGrTwtfr(c$x?kPrxPx[qNXxSox,wh?fuhSV*N$doxd+HU"Fwqczdd;EwW:hj6YARtVLc*NmKNdK%WxGpZ;>#VhkW3,Javu^?j-5rq+XGZzqcNU"D#5IU>95N'a(Ouuh9.%9NwRe?\*G)p?::'#V(]^%*>$8x+I?+v#Aqo4t$l\_XfFU"d^%3$xa(=nD4RuSfA<zaFg]B:aGXn]obwwiJ%\Em^gwj_j:qwaF*d^gdl&R+\]DU"6;8sul/9&FY]w9VoRLdInaz_&q4Vo6duiMQu:p1xlaZx/a?Ru$N\j,a6YLxj<u\U"n8;YN+x-oqtoX%j'y0iNnIZ4dNnyU2Oc.3;NydMD2iTG^dC1skWp+7o,qt-n(y(U"Pos&.dn:q\eD4$x6]pt*t*ot;?x1gF5*xAwcXx7w4xv#6owxvjjv=vskrindY^;U"xmWc^;N_yN/\W?]c^batxvaxqt\NXiANVyNOx9W/qtb(vzq6(P.FW3,xCHCO&luU"W?80gR;3EG=kAN-fjM=rAJ+8%2B6$c9wDQDOuly9xxU>kqczQ$xWV/rT?vvZAW[U"PZdhtUsVqvLG_O5U6$q2\^nGe\4d$5FpepjX^81xp)+N#MC1</Y.d;iXa-r<>1DU"^_^pFU$jeN<t[?1Ll(>1wFxl,Fmu[4.>Gn;]h$#+cQk8+xMABk5N9seuFw$hPb?U"XvchSr/vuLZl,VU$u>yiP][^Q\nbuv[8K(iV[vqr]Y3A19w/j\:cK_>h=m3WQajU"NAu40jxt<Lu$7ayqD*xN=GTxb>n5liNKTtpufTq\knZdh;Nc'80x?2wK.9x^w5rU"wBuJa0xNw<aSxXcH8.xbHwrqQHl>lWin#NoZd$Xr;NG8PTxcNa-x$CqmTx]nN7xU"Jix;Sxbcx-xttwGuaLxLu?hAx.9xNw5WwbxlYTx]NbTxaxjOuvjt.qXbijNQ^p_U">\xulpX5l&xIn'w>S<lIX.auo.rw';C;Ebss#w<XUMwPNl'VGanDmI0x[Z9D.<.U":CNo2kMM/q82jUBlmiW<s<obaraS#qQT<vNa%DHxV_oZSB<OvoR'?d'gx\EH8ZPU"[_UekaiM?CpH15[ELGnWdxC?IyKNx3wk>xxjaV)y8Hk,xz2m[LdxM%*N,VN]p^,U"GNxH?hx[Oa9qc'9Y$u5kY;FN>/88Zbws#&s(DWxfnh<jrPKvXrsr^pcRu46:lwXU"d<m5wLT%\TjErn?Q/syNhu$,Ndr8ogaYtw?4Umn_NQI4\JW?.x/llVBw]\,[hsBU"(xip(j8$TnD75kIq]dpt]bll9nv.-?<Na2Cdw-g$KnbWX*vJlNx^aYx.wPoxoxAEND SUBSUB V3U"ixsN[l8anrgTI6wXX'in8?8x6a\jD\QX=Nak.q^kjLw2uklq^sstu$hmDjw#Ww6U"wvTwlwzow,wTur0NGNxH,N3&#kwQdx%*_N,Xtu,wpht.x?1i;Nhx,0w0S9ldZ8TU"x:wy6$X7BYGov^i9NZ8W3;u(>N-uccl8UP,qv4Q?]Iw,Wq>_N59C2GU4WxITv\kU"N=zXXd#3N4Ja9wlxsTu$sb6[d(oxmu$fnDXxc5wNjGndtXix:+ps<rxx%up()%9U"%%%%-%[g&aHqp;TQM,%%%,e%%%1%%%%kr&'jsl%nsSwRysf%MLGb&=:8$rd?g&LU"M[^=;M_=BSPd'&)6jnRv*C%NjZO&3D,qIVigiUW%AxB0,TSyAj-0?1:#LWIs4q>U"yP^P.hfCl5G4('pofE_)wv'B'-P]KVk35BXKYlMmHo*qVcc3W.mLupF2pqmJGrZU"vgBJ*vhL.dFjpdXk;jN[15ycaYF=f6QmjWpcsDMfXa=uhSX(0oU_b/'TLtVk3X#U"$S,D7J;y#Sbj^LBhEFrDhq$.iJ&hD8dEwXtMk9OL,a0$9Fl6xP[FtHPh>.3YX#0U"DQJuaZkH5Mg$lmPCtuJqTK#rjaC#nfc*espD85][PP8u3cBNq.*lnl.X'pgydxsU"\jZt(YN?5pEo(p,Z6.Z*7#\RIZ4Uq<i#FkHt<wgp?78^,lHx?dt^/6)Hv#$+a$VU"r4>-uBttN/t$uF8q^i(-9RrlAdW,Lt4AtK^I(tNlT/$o]sHtz8lsqMN1d3A:N]tU"Ie1xaipDxtC+$MKbdnHfvT>m$ol2muxnF8Bvb=IpPKguhTN+5umo9^DN->Ku$c4U"P-W4C>%GAAA%AAAA%AAAA%AAAA%AAAA%AAAA%AAAA%AAAA%AAAA-x,U)dL8vL1nU"4l3Mk0DHJ?:c=31iLIac(#L7k)cU'U+y;+L<f'9hZFPCZ,hbVPhg/>u1^Sb52$RU"M13eJeaR(EqA:;[[>64'cI,:\&O_Y9en/6Y)f='u^n&%wc,eX)GZ3/o=jVVlIz?U"kE*(SabGpg:;4HwE=V?r.?X'9,y/_ms&&zlT<F0,oSESXw>$wh;&.q[PiB%CFABU"QYE,$<H_DT)7Ev3&-K7;&O2P9co?hr$U$DYZ.wMJNdD;dOg*T]vETOQqt#jpvm]U"h=\CY4#kd^9*c)*^D9ra&]AN;]/1ZMx<P99&hLfioRKLuw*m5^;_.cPMiwOC+FjU"NBOAbyJ59)AKf=SO];[0jw$TMqE=[Ri_cI'<VwGc.+v?M2cG3c-VtggZu4stcmpU"6rtoxRZ&$ziIyrgRz]axAJZ3)3c-Yh^_DT<UFR3fshwZYqB$kYp91f9MkD:o-ofU"jpC_T6K0)5Rt_zQL#F+&IG7VRq'g.ubZ8T,A3al4MH[xPfq/cEKy:z'>w,gB-62U"0^mRGo,Y:$9K8.b6&*DN4s9uYb3O0-ZOra#y)^m:A^MVT)0WOfWmfb\A]PBZQ=%U"4U4pva/V3XmTg5\5#mQ%#_w)B5&b1<:o&pRM=Wo.aR_4=RV8WO)[2ff5gMW]CnCU"v'OMYAhuKUu#t.](yyDpIf%<L+Fs]MxZAI0*iz\:'V0Uq\Cz,PM/UrCZmeWt5x*U"ieRtXSWgFy#,]cn63PRvRS<iF:(O89WVg:IDd;uT/=6581[5qYVyhA9D/E6g(zpU"-S6I\G*oktY7>)_E't;j1:OxMvxX+EI\]_Ar6r[:uY88YPUW,s,ob,P%M<.mrYRU"Pc.HkB[znG5&ZcJxQP-hH0UVGkwWxBl5fMpiV$Q^eYY/#$sv&12;3y)qk:O>z:cU"z9\M+P0BM4n'3QU=69d&0<YDW%hk>O:C3Py411Ew.P%/lS9cme^hn/7n<I;-tktU"/8-q6FY+;1wlFcX#utm#F$aI'x>7\OIASe\[WgN3^g=RT.5bJ9lNwYRQsEO,GsiU"NmUiWWkR_Yu.J(+L6#cdDdiS\oU01p-nIo7.2Ft((18on;((Yoky66<&Hs1/)vJU"wrAF_lo^WJ6d17'v:3PtBp=_.%DbyRRKW=ZH7f9;r-X)4kW\\UmVR3kE9[5z:c'U"3%so;(\<;S6\Lu#8I4D)8$]]+*WhiR8T)zj6)f3R\h,pYQoQ-JL.ZtR6ek1hsj(U"W2EEj.35Q,[F<vC/Gr?3GL^jccJK=D];FPbg^#jN=B^qSdZRt?rc##w1t3WoaNbU"CCE#up+E6Nr5%lWhP#=P,&ckL]wBAfA/ZFF3^8:DDvpX%aZKJ4[moO*dTX(,Y7&U"#4+Ina7K2ZNQ>?Z_\8],(m6]XPTl7G1oUxwsp1:fn2x$N9NaC;GeGMvk]u^u^t1U"Yv(NNoMsLMYM7VM>RPOx-0mO>/[3Xcq[L9sZx_>m_*o/V3oDHWA%iO=Z(SD'LoRU"DZ1l9rv-=$X\GOE+Dft]X]7v4+D^7i?9Io8vvDA_tT8upf)K3Zt*&\#nNCy1W;^U"N;)T*w$4=0-J)skra[\3QGVC7$7/$V?CzhB;<w5SUf&o4-DtdANcFSrib\Za/SRU"B9wRjrRP&SRbi;#XuCPzE=Z3VPwgFk==MZIr:1Y;.=C*Wqt6dfq&vh#,p\'FNO7U"GMc(n5E[+GeJqJ(1ev26,;wmlm]X>r0&;uvmJroCncP?CAO:]aeC(dT\SNI6AouU"ze#-wty6K%FK2=UA$FJ(xX0)J<dSXKI9dv-ZJC:2522]$t5j<jUl4w+eE[Qod\mU"UCl*;sZ6L(J<4]e>QrK3AS7H/2v05kGisJ0B_iESz0V<C#9CH';8HsFm_ME&Qg2U"C%xUOTl<%Gi7*+D8V6V.m^yL)XDauhMct<]Wbz5R*9DrV$bddlVRr5m+K:\[lTeU"2<vt8;Z8*R\]]%]]]]%]]]]R]]wL'54up%()9%%%%-%0-b5HlH3g]&]%%%%,&%%U"%.%%%.pj(g%WSwy4stzuu9999fqweZAt2(=LE6Go-h?c:m+covIG1NeaSf^U;F/U"8/E<]UUD.z$>H%wRN(?s'IK-tSPstwH(JtpP1-8$))R,+BT**TdnZQ;1q2pS40SU"RovTd,BV0gX;/ID2e816Idb8h/7JIHBwI$Pvb(qsov,=72/H9u[R\]/rGrHN_m6U"o%0%%u%p()/%%%%%%%:(GgI9Yp'e<%%%%<%%%%,%%%%wzs%Sgfy)#1ETA;ETADDU"=E=M58A425<GS210Bu%p&'9%%9%%#%-%\by6I%9a*6l#A%%6&P%%1%%%%%%%%%&U"%%E%%%%%%%%%skn%wjkr&'Sgf%xup&%'9%9%%%%-I%/)n#H%uf%nJ7%%%Ru%%%.U"%%%%%%%%%%%E#%%%#%A%%f%hzwf#Snr'%up&'%9%9%%%%-%/obnHe/mAo'Z&%%&U"\1%%%/%%%%%%%%%%%E%7%%6S%%%yw%fhpV#Snr'%up&'%9%9%%%%-%.XknHfcH'U"1'O&%%&<,%%%/%%%%%%%%%%%E%7%%?U%%%xy%fyzx#Snr'%up&'%9%9%%%%-%'>U"SGI9oO#Q&&%%%&V&%%%.%%%%%%%%%%%E%7%%=W%%%xp%nixS.nr'u%p&'9%%9%%U"#%-%D#6GIY)CJod#&%%N%)%%1%%%%%%%%%%%%E%%%%gX%%%wth%pyzs%jSkr%uuU"p&%'9%9%%%%-C%4knRH\2R)AJ&%%%,(%%%1%%%%%%%%%%%E#%%%z%Y%%s%knwj.U"kr'S%ufqu%p&'9%%9%%[%-%vD%lHEJy3w=#(%%V%c%%/%%%%%%%%%%%%E%%%%u[U"%%%ywf%hpVS.qj%u%p&'9%%9%%%%-%vCulH5KH<KE%:%%,&G%%/%%%%%%%%%%%%U"E%%+%_^%%%ywf%hpVS%ynqu%p&'9%%9%%%%-%[(gaHqgpTQM%,%%,%e%%1%%%%%U"%%%%%%%E%%(%St%#%kr'%jsln%sSwy%sup&%'9%9%%%%-F%-b5XHH3g*]]%%%%,U"&%%%.%%%%%%%%%&%E#%%%Q&&%%p(j(gW%Swys%up&'%9%/%%%%%%%:(GIq9Ype%U"<%%%%<%%%%,%%%%%%%%%&%E%#%%\'%%%wz%sSgf%yup*%+%%%%%1%1(%q'%1%B'U"%%%%%END SUBV2V3CLOSE:IF S=7AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBChris Pulley                   SIMPLE TARGET GAME             beelzebu@swbell.net            06-21-98 (02:38)       QB, QBasic, PDS        175  5612     TARGET.BAS  ' Target  Version 1.0'' This is a simple target game it is extremly simple to program and use' this code is freeware and you may use all or any of the code you want' as long as you give me (Chris Pulley) some credit'' Has a Few Bugs Sometimes the Enemy isn't completly cleared during' movement and sometimes the ball gets caught in a loop and follows the' same pattern, adjust the edir% numbers in the enemy control section' to change the directions'' If you can fix it then COOL if not I don't give a fuck, took me 20 minutes' to program and I have better things to do'' The Keys are as follows      Have NUM-LOCK on to use keypad'' W = UP                       8 = UP' X = DOWN                     2 = DOWN' A = LEFT                     4 = LEFT' S = RIGHT                    6 = RIGHT' Q = UP AND LEFT              7 = UP AND LEFT' E = UP AND RIGHT             9 = UP AND RIGHT' Z = DOWN AND LEFT            1 = DOWN AND LEFT' C = DOWN AND RIGHT           3 = DOWN AND RIGHT'' M = FIRE                     5 = FIRE'' ESCAPE = END'CLS                                                    ' Clear the ScreenSCREEN 13                                              ' 13h 320 X 200 X 256RANDOMIZE TIMER                                        ' Set Random Numberspoints% = 0ammo% = 1000                                           ' Set Variablesxpos% = 160ypos% = 100col% = 4ecol% = 2expos% = 100eypos% = 100edir% = 4xmin% = 17xmax% = 300ymin% = 17ymax% = 143exmin% = 33eymin% = 20exmax% = 294eymax% = 139LINE (0, 0)-(319, 199), 1, B                           ' Draw the Game ScreenLINE (0, 160)-(319, 160), 1LOCATE 22, 2: PRINT "AMMO:"LOCATE 22, 25: PRINT "POINTS:"updatescreen:                                          ' Update AllIF ammo% = 0 THEN GOTO done1FOR i% = 1 TO 20000NEXT i%' Update TargeterIF xpos% < xmin% THEN xpos% = xmin%: BEEP              ' Define BoundariesIF xpos% > xmax% THEN xpos% = xmax%: BEEPIF ypos% < ymin% THEN ypos% = ymin%: BEEPIF ypos% > ymax% THEN ypos% = ymax%: BEEPLINE (xpos% - 16, ypos% - 15)-(xpos% + 16, ypos% + 15), 0, BF  ' Draw NewLINE (xpos%, ypos%)-(xpos% - 11, ypos%), col%                  ' TargeterLINE (xpos%, ypos%)-(xpos% + 11, ypos%), col%LINE (xpos%, ypos%)-(xpos%, ypos% - 10), col%LINE (xpos%, ypos%)-(xpos%, ypos% + 10), col%CIRCLE (xpos%, ypos%), 7, col%' Update EnemyLINE (expos% - 20, eypos% - 15)-(expos% + 20, eypos% + 15), 0, BFCIRCLE (expos%, eypos%), 10, ecol%PAINT (expos%, eypos%), ecol%, ecol%' Update User VariablesLOCATE 22, 7: PRINT ammo%LOCATE 22, 32: PRINT points%' Enemy ControlIF edir% = 1 THEN expos% = expos% - 1: eypos% = eypos% - 1  IF expos% < exmin% THEN edir% = 3  IF eypos% < eymin% THEN edir% = 4  IF expos% > exmax% THEN edir% = 2  IF eypos% > eymax% THEN edir% = 1END IFIF edir% = 2 THEN expos% = expos% + 1: eypos% = eypos% - 1  IF expos% < exmin% THEN edir% = 2  IF eypos% < eymin% THEN edir% = 3  IF expos% > exmax% THEN edir% = 4  IF eypos% > eymax% THEN edir% = 1END IFIF edir% = 3 THEN expos% = expos% + 1: eypos% = eypos% + 1  IF expos% < exmin% THEN edir% = 3  IF eypos% < eymin% THEN edir% = 4  IF expos% > exmax% THEN edir% = 4  IF eypos% > eymax% THEN edir% = 2END IFIF edir% = 4 THEN expos% = expos% - 1: eypos% = eypos% + 1  IF expos% < exmin% THEN edir% = 3  IF eypos% < eymin% THEN edir% = 4  IF expos% > exmax% THEN edir% = 1  IF eypos% > eymax% THEN edir% = 1END IF' Get User Keykey$ = INKEY$IF key$ = "w" THEN ypos% = ypos% - 5: GOTO updatescreenIF key$ = "8" THEN ypos% = ypos% - 5: GOTO updatescreenIF key$ = "x" THEN ypos% = ypos% + 5: GOTO updatescreenIF key$ = "2" THEN ypos% = ypos% + 5: GOTO updatescreenIF key$ = "a" THEN xpos% = xpos% - 5: GOTO updatescreenIF key$ = "4" THEN xpos% = xpos% - 5: GOTO updatescreenIF key$ = "d" THEN xpos% = xpos% + 5: GOTO updatescreenIF key$ = "6" THEN xpos% = xpos% + 5: GOTO updatescreenIF key$ = "q" THEN xpos% = xpos% - 5: ypos% = ypos% - 5: GOTO updatescreenIF key$ = "7" THEN xpos% = xpos% - 5: ypos% = ypos% - 5: GOTO updatescreenIF key$ = "z" THEN xpos% = xpos% - 5: ypos% = ypos% + 5: GOTO updatescreenIF key$ = "1" THEN xpos% = xpos% - 5: ypos% = ypos% + 5: GOTO updatescreenIF key$ = "e" THEN xpos% = xpos% + 5: ypos% = ypos% - 5: GOTO updatescreenIF key$ = "9" THEN xpos% = xpos% + 5: ypos% = ypos% - 5: GOTO updatescreenIF key$ = "c" THEN xpos% = xpos% + 5: ypos% = ypos% + 5: GOTO updatescreenIF key$ = "3" THEN xpos% = xpos% + 5: ypos% = ypos% + 5: GOTO updatescreenIF key$ = "m" THEN GOTO shootIF key$ = "5" THEN GOTO shootIF key$ = CHR$(27) GOTO doneGOTO updatescreenshoot:        ammo% = ammo% - 2LINE (100, 159)-(xpos% - 4, ypos%), 2LINE (220, 159)-(xpos% + 4, ypos%), 2FOR i% = 1 TO 32000NEXT i%LINE (100, 159)-(xpos% - 4, ypos%), 0LINE (220, 159)-(xpos% + 4, ypos%), 0IF xpos% > expos% THEN IF xpos% > expos% - 15 THEN IF xpos% < expos% + 15 THEN IF ypos% > eypos% - 15 THEN IF ypos% < eypos% + 15 THEN GOTO newenemyEND IFEND IFEND IFEND IFGOTO updatescreennewenemy:ammo% = ammo% + 500points% = points% + 1000LINE (expos% - 15, eypos% - 15)-(expos% + 15, eypos% + 15), 0, BFexpos% = INT(RND * 300)eypos% = INT(RND * 139)IF expos% < exmin% THEN GOTO newenemyIF eypos% < eymin% THEN GOTO newenemyGOTO updatescreendone1:CLSPRINT "GAME OVER:   AMMO DEPLETED": PRINTPRINT "FINAL POINTS: ", points%SLEEPdone:Adam Dalke                     STAR TREK WARP DEMO            jwdalke@worldnet.att.net       06-19-98 (19:52)       QB, QBasic, PDS        312  7552     WARPDEMO.BAS'/~~~~~~~~~~~~~~~~\ WARPDEMO.BAS, a look at work in progess on The Dark Star'| A              | Project. A Star Trek: The Next Generation RPG of epic'|                | proportions being created by Ace in the Hole Software Ltd.'|                | Being as this is a demo of an unfinished program, please'|       /\       | don't use my Enterprise graphic in your programs, this is'|      (  )      | not public domain (at least wait until I release the whole'|       /\       | program). This program was not created, approved, licensed,'|                | or endorsed by any entity involved in creating or producing'|              A | the Star Trek(R) television series or films.'\________________/'''                      \                             /'              --------->Press F5 to begin the demo.<---------'                      /                             \'''DECLARE SUB warp ()SCREEN 12DIM SHARED trek%(197, 35)FOR B = 270 TO 292.5 STEP .5        LINE (B, 240)-(B - 9.38, 260), 8NEXTFOR B = 173.12 TO 190 STEP .01        LINE (B, 260)-(B + 10, 245), 8NEXTFOR a = 1 TO 50        CIRCLE (320, 240), a, 7, , , -.9NEXTFOR a = 1 TO 60        CIRCLE (233.12, 260), a, 7, , , -.85NEXTLINE (173.12, 261)-(203.12, 270), 0, BFFOR c = 1 TO 8        CIRCLE (203.12, 270), c, 0NEXTFOR c = 1 TO 8        CIRCLE (204.12, 270), c, 0NEXTFOR c = 1 TO 5        CIRCLE (293.12, 260), c, 0NEXTFOR c = 1 TO 5        CIRCLE (294.12, 260), c, 0NEXTLINE (163.12, 245)-(233.12, 237.5), 7, BFFOR a = 1 TO 3 STEP .05        CIRCLE (163.12, 242.25), a, 7NEXTFOR a = 1 TO 3 STEP .05        CIRCLE (164.12, 242.25), a, 7NEXTFOR a = 1 TO 10        CIRCLE (233.12, 242.25), a, 4, , , -.7NEXTLINE (161.12, 242.25)-(220, 242.25), 1, Bk = 238FOR B = 215 TO 210 STEP -1        LINE (220, k)-(B, k), 1        k = k + .8NEXTFOR B = 210 TO 215        LINE (220, k)-(B, k), 1        k = k + .4NEXTFOR d = 271 TO 369 STEP 4        PSET (d, 240), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 243), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 237), 14NEXTFOR d = 176 TO 286 STEP 4        PSET (d, 258), 14NEXTFOR d = 196 TO 266 STEP 4        PSET (d, 255), 14NEXTFOR d = 216 TO 286 STEP 4        PSET (d, 261), 14NEXTFOR d = 216 TO 272 STEP 4        PSET (d, 264), 14NEXTGET (160, 235)-(370, 267), trek%'SLEEPCLSDIM SHARED trek2%(197, 35)FOR B = 270 TO 292.5 STEP .5        LINE (B, 240)-(B - 9.38, 260), 8NEXTFOR B = 173.12 TO 190 STEP .01        LINE (B, 260)-(B + 10, 245), 8NEXTFOR a = 1 TO 50        CIRCLE (320, 240), a, 7, , , -.9NEXTFOR a = 1 TO 60        CIRCLE (233.12, 260), a, 7, , , -.85NEXTLINE (173.12, 261)-(203.12, 270), 0, BFFOR c = 1 TO 8        CIRCLE (203.12, 270), c, 0NEXTFOR c = 1 TO 8        CIRCLE (204.12, 270), c, 0NEXTFOR c = 1 TO 5        CIRCLE (293.12, 260), c, 0NEXTFOR c = 1 TO 5        CIRCLE (294.12, 260), c, 0NEXTLINE (163.12, 245)-(233.12, 237.5), 7, BFFOR a = 1 TO 3 STEP .05        CIRCLE (163.12, 242.25), a, 7NEXTFOR a = 1 TO 3 STEP .05        CIRCLE (164.12, 242.25), a, 7NEXTFOR a = 1 TO 10        CIRCLE (233.12, 242.25), a, 4, , , -.7NEXTLINE (161.12, 242.25)-(220, 242.25), 9, Bk = 238FOR B = 215 TO 210 STEP -1        LINE (220, k)-(B, k), 9        k = k + .8NEXTFOR B = 210 TO 215        LINE (220, k)-(B, k), 9        k = k + .4NEXTFOR d = 271 TO 369 STEP 4        PSET (d, 240), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 243), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 237), 14NEXTFOR d = 176 TO 286 STEP 4        PSET (d, 258), 14NEXTFOR d = 196 TO 266 STEP 4        PSET (d, 255), 14NEXTFOR d = 216 TO 286 STEP 4        PSET (d, 261), 14NEXTFOR d = 216 TO 272 STEP 4        PSET (d, 264), 14NEXTGET (160, 235)-(370, 267), trek2%'SLEEPCLSDIM SHARED trek3%(197, 35)FOR B = 270 TO 292.5 STEP .5        LINE (B, 240)-(B - 9.38, 260), 8NEXTFOR B = 173.12 TO 190 STEP .01        LINE (B, 260)-(B + 10, 245), 8NEXTFOR a = 1 TO 50        CIRCLE (320, 240), a, 7, , , -.9NEXTFOR a = 1 TO 60        CIRCLE (233.12, 260), a, 7, , , -.85NEXTLINE (173.12, 261)-(203.12, 270), 0, BFFOR c = 1 TO 8        CIRCLE (203.12, 270), c, 0NEXTFOR c = 1 TO 8        CIRCLE (204.12, 270), c, 0NEXTFOR c = 1 TO 5        CIRCLE (293.12, 260), c, 0NEXTFOR c = 1 TO 5        CIRCLE (294.12, 260), c, 0NEXTLINE (163.12, 245)-(233.12, 237.5), 7, BFFOR a = 1 TO 3 STEP .05        CIRCLE (163.12, 242.25), a, 7NEXTFOR a = 1 TO 3 STEP .05        CIRCLE (164.12, 242.25), a, 7NEXTFOR a = 1 TO 10        CIRCLE (233.12, 242.25), a, 4, , , -.7NEXTLINE (161.12, 242.25)-(220, 242.25), 11, Bk = 238FOR B = 215 TO 210 STEP -1        LINE (220, k)-(B, k), 11        k = k + .8NEXTFOR B = 210 TO 215        LINE (220, k)-(B, k), 11        k = k + .4NEXTFOR d = 271 TO 369 STEP 4        PSET (d, 240), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 243), 14NEXTFOR d = 291 TO 349 STEP 4        PSET (d, 237), 14NEXTFOR d = 176 TO 286 STEP 4        PSET (d, 258), 14NEXTFOR d = 196 TO 266 STEP 4        PSET (d, 255), 14NEXTFOR d = 216 TO 286 STEP 4        PSET (d, 261), 14NEXTFOR d = 216 TO 272 STEP 4        PSET (d, 264), 14NEXTGET (160, 235)-(370, 267), trek3%CLSCALL warpDEFINT A-ZSUB warpn = 150       'number of starsDIM y(n)DIM x(n)DIM s(n)DIM c(n)DIM x1(n)DIM y1(n)DIM c1(n)DIM s1(n)RANDOMIZE TIMERCLSFOR i = 1 TO nx(i) = INT(RND * 640 + 1)y(i) = INT(RND * 480 + 1)s(i) = INT(RND * 5 + 1)s1(i) = INT(RND * 5 + 1)x1(i) = INT(RND * 640 + 1)y1(i) = INT(RND * 480 + 1)IF s1(i) <= 3 THEN c1(i) = 8IF s1(i) = 4 THEN c1(i) = 7IF s1(i) = 5 THEN c1(i) = 15IF s(i) <= 3 THEN c(i) = 8IF s(i) = 4 THEN c(i) = 7IF s(i) = 5 THEN c(i) = 15NEXT isecondprise = 1DOFOR i = 1 TO nPSET (x(i), y(i)), 0PSET (x1(i), y1(i)), 0x(i) = x(i) - s(i)                 'change + to - to go in opposite directionx1(i) = x1(i) - s1(i)              'change + to - if you change the thing aboveIF x(i) <= 1 THEN GOSUB 22          'change < to > if you change the thing aboveIF x1(i) >= 640 THEN GOSUB 33       'change > to < if you change the thing abovePSET (x(i), y(i)), c(i)PSET (x1(i), y1(i)), c1(i)a$ = INKEY$: IF a$ <> "" THEN ENDNEXT iIF secondprise > 425 THENLINE (secondprise - 22, 200)-(secondprise + 212, 236), 0, BFLINE (630, 147)-(630, 257), 11LINE (secondprise - 223, 207)-(640, 207), 11SLEEP 1LINE (630, 147)-(630, 257), 0LINE (177, 207)-(640, 207), 0EXIT SUBEND IFIF secondprise < 100 THENLINE (secondprise - 1, 200)-(secondprise + 212, 236), 0, BFPUT (secondprise, 200), trek%speed = 1secondprise = secondprise + speedEND IFIF secondprise >= 100 THENLINE (secondprise - 2, 200)-(secondprise + 212, 236), 0, BFPUT (secondprise, 200), trek2%speed = 2secondprise = secondprise + speedEND IFIF secondprise = 200 THEN warped = 1IF warped = 1 THENLINE (secondprise - 22, 200)-(secondprise + 212, 236), 0, BFPUT (secondprise, 200), trek3%LINE (secondprise + 1, 207)-(secondprise - 23, 207), 11speed = 20secondprise = secondprise + speedEND IFLOOP22 x(i) = 640y(i) = INT(RND * 480 + 1)RETURN33 x1(i) = 1y1(i) = INT(RND * 480 + 1)RETURNEND SUBJosh Ferguson                  CHOPPER COMMANDO               qbasic.com                     10-11-98 (14:00)       QB, QBasic, PDS        933  30077    CHOPTER.BAS DECLARE SUB bomb (thrust!(), bx!(), by!(), new!, current!, posx!, posy!, t!, obx!(), oby!(), thrust2!(), t2!, d!, bd!())DECLARE SUB databaseprocessing (inputshort!, inputlong!, etype!(), ex!(), ey!())DECLARE SUB buildingseg (posx!, posy!)DECLARE SUB levl (lev, ex(), ey(), edx(), en, etype(), posx, oldx)DECLARE SUB levr (lev!, ex!(), ey!(), edx!(), en!, etype!(), posx!, oldx!)DECLARE SUB title ()DECLARE SUB enemy (posx!, posy!, ex!(), ey!(), ed!(), oldx!, oldy!, en!, el(), edy!(), da, etype())DECLARE SUB blowup (pox!, poy!)DECLARE SUB wasoncenukked (pox!, poy!, f!)DECLARE SUB egect (px!, py!, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype())DECLARE SUB level (lev!, ex!(), ey!(), edx!(), en!, etype())DECLARE SUB blowitup (pox!, poy!, spdy!, spdx!, auto, da)DECLARE SUB abase (px!, py!)DECLARE SUB imnukingyouhahahaha (posx!, posy!, speed!)DECLARE SUB iamshootingyouwhitamissle (posx!, posy!, d!, size, speed)SCREEN 1: CLS : COLOR 0, 2hs = 1power = 10DIM etype(100)DIM ex(100)DIM ey(100)DIM edx(100)DIM edy(100)DIM el(100)DIM ed(1)DIM bx(100)DIM by(100)DIM thrust(100)DIM obx(100)DIM oby(100)DIM thrust2(100)DIM bd(100)title' Drawing Animation for ChopperPSET (4, 4), 3PSET (4, 5), 3PSET (5, 5), 3PSET (6, 5), 3PSET (7, 5), 3PSET (7, 4), 3PSET (8, 5), 3PSET (9, 6), 3PSET (10, 6), 3PSET (11, 6), 3PSET (11, 5), 3PSET (12, 5), 3PSET (11, 4), 3PSET (10, 4), 3PSET (9, 3), 3PSET (8, 3), 3PSET (7, 3), 3PSET (6, 4), 3PSET (4, 9), 3PSET (4, 10), 3PSET (5, 10), 3PSET (6, 10), 3PSET (7, 10), 3PSET (8, 10), 3PSET (9, 11), 3PSET (10, 11), 3PSET (11, 11), 3PSET (12, 10), 3PSET (11, 10), 3PSET (11, 9), 3PSET (10, 9), 3PSET (9, 8), 3PSET (8, 8), 3PSET (7, 8), 3PSET (7, 9), 3PSET (6, 9), 3PSET (4, 17), 3PSET (5, 17), 3PSET (5, 16), 3PSET (6, 16), 3PSET (7, 15), 3PSET (8, 15), 3PSET (9, 15), 3PSET (10, 16), 3PSET (9, 17), 3PSET (10, 17), 3PSET (11, 17), 3PSET (12, 17), 3PSET (8, 18), 3PSET (7, 18), 3PSET (6, 18), 3PSET (12, 16), 3PSET (9, 16), 3PSET (4, 23), 3PSET (5, 23), 3PSET (5, 22), 3PSET (6, 22), 3PSET (7, 21), 3PSET (8, 21), 3PSET (9, 21), 3PSET (9, 22), 3PSET (10, 22), 3PSET (9, 23), 3PSET (10, 23), 3PSET (11, 23), 3PSET (12, 23), 3PSET (12, 22), 3PSET (8, 24), 3PSET (7, 24), 3PSET (6, 24), 3PSET (9, 20), 3PSET (8, 20), 3PSET (7, 20), 3PSET (6, 20), 3PSET (5, 20), 3PSET (4, 20), 3PSET (7, 14), 3PSET (8, 14), 3PSET (9, 14), 3PSET (10, 14), 3PSET (11, 14), 3PSET (12, 14), 3PSET (9, 7), 3PSET (8, 7), 3PSET (7, 7), 3PSET (6, 7), 3PSET (5, 7), 3PSET (4, 7), 3PSET (7, 2), 3PSET (8, 2), 3PSET (9, 2), 3PSET (10, 2), 3PSET (11, 2), 3PSET (12, 2), 3lev = 1'making array for chopperDIM chop1a(5)DIM chop1b(5)DIM chop2a(5)DIM chop2b(5)'storing the chopper in memoryGET (3, 2)-(13, 6), chop1aGET (3, 7)-(13, 12), chop1bGET (3, 14)-(13, 19), chop2aGET (3, 20)-(13, 25), chop2b'drawing the manPSET (7, 96), 3PSET (7, 97), 3PSET (6, 97), 3PSET (8, 97), 3PSET (7, 98), 3PSET (6, 99), 3PSET (8, 99), 3PSET (17, 96), 3PSET (17, 97), 3PSET (18, 97), 3PSET (16, 97), 3PSET (17, 98), 3PSET (17, 99), 3'making an array for the manDIM mana(1)DIM manb(1)'storing the man in memoryGET (6, 96)-(8, 99), manaGET (16, 96)-(18, 99), manbCLSlevel 1, ex!(), ey!(), edx!(), en!, etype()speed = 0: size = 20d = 1posx = 230: posy = 111: cs = 0: cst = .5: da = 0begina:IF posx < 0 THEN olev = lev IF lev = 2 THEN level 1, ex!(), ey!(), edx!(), en!, etype(): posx = 280: oldx = 280: lev = 1 IF lev = 3 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 280: lev = 2: oldx = 280 REM CALL levr(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF olev = lev THEN  posx = oldx  ELSE current = 0 END IFEND IFIF posx > 290 THEN olev = lev REM CALL levr(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF lev = 2 THEN level 3, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 3: oldx = 1 IF lev = 1 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 2: oldx = 1 inputshort = 1: inputlong = 1 CALL databaseprocessing(inputshort, inputlong, etype(), ex(), ey()) IF olev = lev THEN  posx = oldx  ELSE current = 0 END IFEND IFIF posy < 9 THEN posy = oldy: spdy = 0IF posy > 180 THEN posy = oldyIF d = 1 THEN PUT (posx, posy), chop1aIF d = 2 THEN PUT (posx, posy), chop2aod = d: oldx = posx: oldy = posya$ = INKEY$REM IF a$ = "" THEN a$ = b$b$ = a$SELECT CASE a$CASE CHR$(0) + "H": spdy = spdy - hsCASE CHR$(0) + "P": spdy = spdy + hsCASE CHR$(0) + "K": spdx = spdx - hs: d = 2CASE CHR$(0) + "M": spdx = spdx + hs: d = 1CASE "s": LOCATE 1, 1: INPUT speed: b$ = ""CASE "S": LOCATE 1, 1: INPUT speed: b$ = ""CASE "m": CALL iamshootingyouwhitamissle(posx, posy, d, size, speed): b$ = " "CASE "M": CALL iamshootingyouwhitamissle(posx, posy, d, size, speed): b$ = " "CASE "n": CALL imnukingyouhahahaha(posx, posy, speed): b$ = " "CASE "N": CALL imnukingyouhahahaha(posx, posy, speed): b$ = " "CASE "e": egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaCASE "E": egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaCASE "a": IF auto = 1 THEN LOCATE 1, 1: PRINT "Auto Egect Off": auto = 0 ELSE LOCATE 1, 1: PRINT "Auto Egect On ": auto = 1CASE "A": IF auto = 1 THEN LOCATE 1, 1: PRINT "Auto Egect Off": auto = 0 ELSE LOCATE 1, 1: PRINT "Auto Egect On ": auto = 1CASE "B": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, 0, bd(): posx = oldx: posy = oldyCASE "b": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, 0, bd(): posx = oldx: posy = oldyCASE " ": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), power, d, bd(): posx = oldx: posy = oldyEND SELECTCALL bomb(thrust(), bx(), by(), 0, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, d, bd())IF POINT(posx, posy) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx + 10, posy) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx, posy + 5) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx + 10, posy + 5) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF da > 0 THEN spdy = spdy + da / 10posy = posy + spdyposx = posx + spdxRANDOMIZE TIMERCALL enemy(posx!, posy!, ex!(), ey!(), ed!(), oldx!, oldy!, en!, el(), edy!(), da, etype())FOR a = 1 TO speed: NEXT a: IF cs > 30 THEN SOUND cs, cstIF od = 1 THEN PUT (oldx, oldy), chop1aIF od = 2 THEN PUT (oldx, oldy), chop2aIF posx < 0 THEN olev = lev IF lev = 2 THEN level 1, ex!(), ey!(), edx!(), en!, etype(): posx = 280: oldx = 280: lev = 1 IF lev = 3 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 280: lev = 2: oldx = 280 REM CALL levl(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF olev = lev THEN  posx = oldx  ELSE current = 0 END IFEND IFIF posx > 290 THEN olev = lev REM CALL levr(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF lev = 2 THEN level 3, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 3: oldx = 1 IF lev = 1 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 2: oldx = 1 IF olev = lev THEN posx = oldx IF olev = lev THEN  posx = oldx  ELSE current = 0 END IFEND IFIF posy < 9 THEN posy = oldy: spdy = 0IF posy > 180 THEN posy = oldyIF d = 1 THEN PUT (posx, posy), chop1bIF d = 2 THEN PUT (posx, posy), chop2bod = d: oldx = posx: oldy = posyREM LOCATE 1, 1: PRINT "Speed="; USING "###"; spdx + spdy; : PRINT " Miles per Hour"a$ = INKEY$REM  IF a$ = "" THEN a$ = b$b$ = a$SELECT CASE a$CASE CHR$(0) + "H": spdy = spdy - hsCASE CHR$(0) + "P": spdy = spdy + hsCASE CHR$(0) + "K": spdx = spdx - hs: d = 2CASE CHR$(0) + "M": spdx = spdx + hs: d = 1CASE "m": CALL iamshootingyouwhitamissle(posx, posy, d, size, speed): b$ = " "CASE "M": CALL iamshootingyouwhitamissle(posx, posy, d, size, speed): b$ = " "CASE "n": CALL imnukingyouhahahaha(posx, posy, speed): b$ = " "CASE "N": CALL imnukingyouhahahaha(posx, posy, speed): b$ = " "CASE "e": egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaCASE "E": egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaCASE "a": IF auto = 1 THEN LOCATE 1, 1: PRINT "Auto Egect Off": auto = 0 ELSE LOCATE 1, 1: PRINT "Auto Egect On ": auto = 1CASE "A": IF auto = 1 THEN LOCATE 1, 1: PRINT "Auto Egect Off": auto = 0 ELSE LOCATE 1, 1: PRINT "Auto Egect On ": auto = 1CASE "B": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, 0, bd(): posx = oldx: posy = oldyCASE "b": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, 0, bd(): posx = oldx: posy = oldyCASE " ": bomb thrust(), bx(), by(), 1, current, posx, posy + 6, 0, obx(), oby(), thrust2(), power, d, bd(): posx = oldx: posy = oldyEND SELECTCALL bomb(thrust(), bx(), by(), 0, current, posx, posy + 6, 0, obx(), oby(), thrust2(), 0, d, bd())IF POINT(posx, posy) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx + 10, posy) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx, posy + 5) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF POINT(posx + 10, posy + 5) = 0 THEN v = v ELSE blowitup posx, posy, spdx, spdy, auto, da: IF auto = 1 AND da = 3 THEN egect posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype(): spdx = 0: spdy = 0: GOTO beginaIF da > 0 THEN spdy = spdy + da / 10posy = posy + spdyposx = posx + spdxc$ = a$CALL enemy(posx!, posy!, ex!(), ey!(), edx!(), oldx!, oldy!, en!, el(), edy!(), da, etype())SOUND 150, .2FOR a = 1 TO speed: NEXT a: IF cs > 30 THEN SOUND cs, cstLOCATE 22, 20: PRINT "Chopper:";IF da = 0 THEN PRINT "Perfect"IF da = 1 THEN PRINT "Bruhion"IF da = 2 THEN PRINT "Junk   "IF od = 1 THEN PUT (oldx, oldy), chop1bIF od = 2 THEN PUT (oldx, oldy), chop2bGOTO beginaSUB abase (px, py)px = px - 21py = py - 56PSET (26 + px, 56 + py), 3LINE (26 + px, 56 + py)-(39 + px, 56 + py), 3LINE (39 + px, 56 + py)-(43 + px, 60 + py), 3LINE (43 + px, 60 + py)-(43 + px, 66 + py), 3LINE (21 + px, 61 + py)-(26 + px, 56 + py), 3LINE (22 + px, 60 + py)-(22 + px, 66 + py), 3PSET (21 + px, 61 + py), 0LINE (22 + px, 66 + py)-(30 + px, 66 + py), 0PSET (22 + px, 66 + py), 3LINE (22 + px, 66 + py)-(26 + px, 70 + py), 3LINE (39 + px, 70 + py)-(43 + px, 66 + py), 3LINE (26 + px, 71 + py)-(26 + px, 88 + py), 3LINE (39 + px, 71 + py)-(39 + px, 88 + py), 3LINE (26 + px, 88 + py)-(20 + px, 90 + py), 3PSET (39 + px, 88 + py), 3LINE (39 + px, 87 + py)-(46 + px, 90 + py), 3LINE (46 + px, 90 + py)-(20 + px, 90 + py), 3PAINT (25 + px, 89 + py), 3, 3LINE (23 + px, 60 + py)-(28 + px, 65 + py), 0, BFLINE (30 + px, 60 + py)-(35 + px, 65 + py), 0, BFLINE (37 + px, 60 + py)-(42 + px, 65 + py), 0, BFEND SUBSUB blowitup (pox, poy, spdx, spdy, auto, da)IF spdy = 1 AND POINT(pox + 10, poy + 5) = 2 THEN spdy = 0: da = 0: GOTO aaaIF spdy = 0 AND POINT(pox + 10, poy + 5) = 2 THEN da = 0: GOTO aaaIF spdy = -1 AND POINT(pox + 10, poy + 5) = 2 THEN da = 0: GOTO aaaIF da = 0 THEN da = 1 spdy = -3 GOTO aaa:END IFIF da = 1 THEN da = 2 spdy = -4 GOTO aaa:END IFIF da = 2 THEN da = 3 spdy = -5 GOTO aaa:END IFIF auto = 1 THEN GOTO aba:aba:h% = -1.56IF 2 * (spdy + spdx) + 10 < 0 THEN spdy = 3: spdx = 3FOR a% = 1 TO 2 * (spdy + spdx) + 10CIRCLE (pox + f%, poy + 5), a%, 2, , , h%CIRCLE (pox + f%, poy + 5), a% + 1, 1, , , h%SOUND a% + 37, .1NEXT a%FOR a% = 2 * (spdy + spdx) + 10 TO 1 STEP -1CIRCLE (pox + f%, poy + 5), a%, 0, , , h%SOUND a% + 37, .1NEXT a%IF auto = 1 THEN GOTO aaa:ENDaaa:END SUBSUB blowup (pox, poy)co = POINT(pox, poy)k = poyx = 0j = kaqw:x = x + 1j = j + 1IF POINT(pox, j) = co THEN v = v ELSE GOTO aqw2GOTO aqwaqw2:j = j / 2k = jFOR a% = 1 TO x * 2CIRCLE (pox, poy), a%, 2SOUND x + 37, .1NEXT a%FOR a% = x * 2 TO 1 STEP -1CIRCLE (pox, poy), a%, 0SOUND x + 37, .1NEXT a%LOCATE 1, 1: PRINT "Good Base Destroyed"END SUBSUB bomb (thrust(), bx(), by(), new, current, posx, posy, t, obx(), oby(), thrust2(), t2, d, bd())IF new = 1 THENIF current < 1 THEN current = 1 bx(current) = posx by(current) = posy thrust(current) = t thrust2(current) = t2 bd(current) = d current = current + 1 GOTO startEND IFshotsimstart:FOR h = 1 TO current - 1thrust(h) = thrust(h) - RNDthrust2(h) = thrust2(h) - RNDby(h) = by(h) - thrust(h)IF bd(h) = 1 THEN IF thrust2(h) > 0 THEN bx(h) = bx(h) + thrust2(h)IF bd(h) = 2 THEN IF thrust2(h) > 0 THEN bx(h) = bx(h) - thrust2(h)PSET (obx(h), oby(h)), 0IF POINT(bx(h), by(h)) = 0 THEN v = v ELSE GOSUB explosion: GOTO startPSET (bx(h), by(h)), 2obx(h) = bx(h): oby(h) = by(h)IF by(h) > 200 THEN GOTO startGOTO jhexplosion:FOR a = 1 TO 10CIRCLE (bx(h), by(h)), a, 2CIRCLE (bx(h) + 1, by(h) + 1), a, 3SOUND 37 + a * 5, .1NEXT aFOR a = 1 TO 10CIRCLE (bx(h), by(h)), a, 0CIRCLE (bx(h) + 1, by(h) + 1), a, 0NEXT aPSET (bx(h), by(h)), 0FOR v = 1 TO current - 1 bx(h) = bx(current - 1) by(h) = by(current - 1) obx(h) = obx(current - 1) oby(h) = oby(current - 1) thrust2(h) = thrust2(current - 1) thrust(h) = thrust(current - 1) bd(h) = bd(current - 1)NEXT vcurrent = current - 1RETURNjh:NEXT hstart:END SUBSUB buildingseg (posx, posy)LINE (11 - 11 + posx, 34 - 34 + posy)-(28 - 11 + posx, 34 - 34 + posy), 3LINE (11 - 11 + posx, 35 - 34 + posy)-(28 - 11 + posx, 35 - 34 + posy), 3LINE (11 - 11 + posx, 36 - 34 + posy)-(28 - 11 + posx, 36 - 34 + posy), 3LINE (11 - 11 + posx, 37 - 34 + posy)-(13 - 11 + posx, 37 - 34 + posy), 3PSET (14 - 11 + posx, 37 - 34 + posy), 2PSET (15 - 11 + posx, 37 - 34 + posy), 2PSET (16 - 11 + posx, 37 - 34 + posy), 2PSET (17 - 11 + posx, 37 - 34 + posy), 2PSET (18 - 11 + posx, 37 - 34 + posy), 3PSET (19 - 11 + posx, 37 - 34 + posy), 3PSET (20 - 11 + posx, 37 - 34 + posy), 3PSET (21 - 11 + posx, 37 - 34 + posy), 2PSET (22 - 11 + posx, 37 - 34 + posy), 2PSET (23 - 11 + posx, 37 - 34 + posy), 2PSET (24 - 11 + posx, 37 - 34 + posy), 2PSET (25 - 11 + posx, 37 - 34 + posy), 3PSET (26 - 11 + posx, 37 - 34 + posy), 3PSET (27 - 11 + posx, 37 - 34 + posy), 3PSET (28 - 11 + posx, 36 - 34 + posy), 0PSET (28 - 11 + posx, 35 - 34 + posy), 0PSET (28 - 11 + posx, 34 - 34 + posy), 0PSET (14 - 11 + posx, 38 - 34 + posy), 2PSET (15 - 11 + posx, 38 - 34 + posy), 2PSET (16 - 11 + posx, 38 - 34 + posy), 2PSET (17 - 11 + posx, 38 - 34 + posy), 2PSET (22 - 11 + posx, 38 - 34 + posy), 2PSET (23 - 11 + posx, 38 - 34 + posy), 2PSET (24 - 11 + posx, 38 - 34 + posy), 2PSET (21 - 11 + posx, 38 - 34 + posy), 2PSET (14 - 11 + posx, 39 - 34 + posy), 2PSET (15 - 11 + posx, 39 - 34 + posy), 2PSET (21 - 11 + posx, 39 - 34 + posy), 2PSET (22 - 11 + posx, 39 - 34 + posy), 2PSET (23 - 11 + posx, 39 - 34 + posy), 2PSET (24 - 11 + posx, 39 - 34 + posy), 2PSET (21 - 11 + posx, 40 - 34 + posy), 2PSET (22 - 11 + posx, 40 - 34 + posy), 2PSET (23 - 11 + posx, 40 - 34 + posy), 2PSET (24 - 11 + posx, 40 - 34 + posy), 2PSET (14 - 11 + posx, 40 - 34 + posy), 2PSET (15 - 11 + posx, 40 - 34 + posy), 2PSET (16 - 11 + posx, 40 - 34 + posy), 2PSET (17 - 11 + posx, 40 - 34 + posy), 2PSET (17 - 11 + posx, 39 - 34 + posy), 2PSET (16 - 11 + posx, 39 - 34 + posy), 2PSET (11 - 11 + posx, 38 - 34 + posy), 3PSET (12 - 11 + posx, 38 - 34 + posy), 3PSET (13 - 11 + posx, 38 - 34 + posy), 3PSET (11 - 11 + posx, 39 - 34 + posy), 3PSET (12 - 11 + posx, 39 - 34 + posy), 3PSET (13 - 11 + posx, 39 - 34 + posy), 3PSET (11 - 11 + posx, 40 - 34 + posy), 3PSET (12 - 11 + posx, 40 - 34 + posy), 3PSET (13 - 11 + posx, 40 - 34 + posy), 3PSET (18 - 11 + posx, 40 - 34 + posy), 3PSET (19 - 11 + posx, 40 - 34 + posy), 3PSET (19 - 11 + posx, 39 - 34 + posy), 3PSET (18 - 11 + posx, 39 - 34 + posy), 3PSET (18 - 11 + posx, 38 - 34 + posy), 3PSET (19 - 11 + posx, 38 - 34 + posy), 3PSET (20 - 11 + posx, 40 - 34 + posy), 3PSET (20 - 11 + posx, 39 - 34 + posy), 3PSET (20 - 11 + posx, 38 - 34 + posy), 3PSET (25 - 11 + posx, 38 - 34 + posy), 3PSET (26 - 11 + posx, 38 - 34 + posy), 3PSET (27 - 11 + posx, 38 - 34 + posy), 3PSET (25 - 11 + posx, 39 - 34 + posy), 3PSET (26 - 11 + posx, 39 - 34 + posy), 3PSET (27 - 11 + posx, 39 - 34 + posy), 3PSET (25 - 11 + posx, 40 - 34 + posy), 3PSET (26 - 11 + posx, 40 - 34 + posy), 3PSET (27 - 11 + posx, 40 - 34 + posy), 3LINE (11 - 11 + posx, 41 - 34 + posy)-(27 - 11 + posx, 41 - 34 + posy), 3LINE (11 - 11 + posx, 42 - 34 + posy)-(27 - 11 + posx, 42 - 34 + posy), 3LINE (11 - 11 + posx, 43 - 34 + posy)-(27 - 11 + posx, 43 - 34 + posy), 3END SUBSUB databaseprocessing (inputshort, inputlong, etype(), ex(), ey())GOTO qhoCLOSEOPEN "levchop.dat" FOR RANDOM AS #1REM ********** Section I - Looking it up in the short reference ************REM GET #1, inputshort, referenceREM IF inputshort = 100 THEN LOCATE 1, 1: PRINT "Sorry. No more info in the Game Map.": GOTO qho reference = inputshortREM ********** Section II - Looking it up in the long reference ************GET #1, reference * 100 + 100 + inputlong, locationREM ********** Section III - Retrieving Information ************************bogalish:GET #1, location, info1$IF info1$ = "" THEN GOTO qholocation = location + 1IF info1$ = CHR$(1) THEN co = 1: GOTO dolineIF info1$ = CHR$(2) THEN co = 2: GOTO dolineIF info1$ = CHR$(3) THEN co = 3: GOTO dolineIF info1$ = CHR$(4) THEN co = 0: GOTO dodotIF info1$ = CHR$(5) THEN co = 1: GOTO dodotIF info1$ = CHR$(6) THEN co = 2: GOTO dodotIF info1$ = CHR$(7) THEN co = 3: GOTO dodotIF info1$ = CHR$(8) THEN co = 0: GOTO docircleIF info1$ = CHR$(9) THEN co = 1: GOTO docircleIF info1$ = CHR$(10) THEN co = 2: GOTO docircleIF info1$ = CHR$(11) THEN co = 3: GOTO docircleREM IF info1$ = CHR$(15) THEN GOTO dobuildingsegGOTO doenemyREM ********** Makes a line on the Screen **********************************doline:GET #1, location, info2$: location = location + 1GET #1, location, info3$: location = location + 1GET #1, location, info4$: location = location + 1GET #1, location, info5$: location = location + 1GET #1, location, info6$: location = location + 1GET #1, location, info7$: location = location + 1x1 = ASC(info2$)x1b = ASC(info3$)y1 = ASC(info4$)x1 = ASC(info5$)x1b = ASC(info6$)y2 = ASC(info7$)LINE (x1 + x1b, y1)-(x2 + x2b, y2), coGOTO bogalishREM ********** Makes a dot on the Screen ***********************************dodot:GET #1, location, info2$: location = location + 1GET #1, location, info3$: location = location + 1GET #1, location, info4$: location = location + 1x = ASC(info2$)xb = ASC(info3$)y = ASC(info4$)PSET (x + xb, y), coGOTO bogalishREM ********** Makes a circle on the Screen ********************************docircle:GET #1, location, info2$: location = location + 1GET #1, location, info3$: location = location + 1GET #1, location, info4$: location = location + 1GET #1, location, info5$: location = location + 1x = ASC(info2$)xb = ASC(info3$)y = ASC(info4$)siz = ASC(info5$)CIRCLE (x + xb, y), co, sizGOTO bogalishREM ********** Tells the computer to make an enemy *************************doenemy:GET #1, location, info2$: location = location + 1GET #1, location, info3$: location = location + 1GET #1, location, info4$: location = location + 1GET #1, location, info5$: location = location + 1GET #1, location, info6$: location = location + 1x = ASC(info2$)xb = ASC(info3$)y = ASC(info4$)et = ASC(info5$)en = ASC(info6$)ex(en) = x + xbey(en) = yetype(en) = etGOTO bogalishqho:CLOSEEND SUBSUB egect (posx, posy, mana(), manb(), speed, lev, da, ex!(), ey!(), edx!(), en!, etype())FOR a = 1 TO 10CIRCLE (posx, posy), a, 2: SOUND a * 37, .2CIRCLE (posx, posy), a, 0NEXT aFOR a = 1 TO 10CIRCLE (posx + 1, posy), a, 2: SOUND a * 37, .2CIRCLE (posx + 1, posy), a, 0NEXT ad = 1md = 1loopstart:IF posx < 0 THEN olev = lev IF lev = 2 THEN level 1, ex!(), ey!(), edx!(), en!, etype(): posx = 300: oldx = 280: lev = 1 IF lev = 3 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 300: lev = 2: oldx = 280 REM CALL levl(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF olev = lev THEN posx = oldxEND IFIF posx > 310 THEN olev = lev REM CALL levr(lev, ex(), ey(), edx(), en, etype(), posx, oldx) IF lev = 2 THEN level 3, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 3: oldx = 1 IF lev = 1 THEN level 2, ex!(), ey!(), edx!(), en!, etype(): posx = 1: lev = 2: oldx = 1 IF olev = lev THEN posx = oldxEND IFIF posy < 9 THEN posy = oldy: spdy = 0IF posy > 190 THEN posy = oldy: GOTO lkIF d = 1 THEN PUT (posx, posy), manaIF d = 2 THEN PUT (posx, posy), manbod = doldx = posx: oldy = posya$ = INKEY$IF POINT(posx, posy + 5) = 0 THEN GOTO asqCALL enemy(posx!, posy!, ex!(), ey!(), ey!(), oldx!, oldy!, en!, ey(), ey!(), da, etype())SELECT CASE a$CASE CHR$(0) + "H": jump = 1CASE CHR$(0) + "K": spdx = spdx - 4: md = 2CASE CHR$(0) + "M": spdx = spdx + 4: md = 1CASE "x": GOTO lkCASE "X": GOTO lkCASE "m": IF md = 2 THEN hg = 0: CALL iamshootingyouwhitamissle(posx + hg, posy - 5, md, 3, 0) ELSE hg = 3: CALL iamshootingyouwhitamissle(posx + hg, posy - 5, md, 3, 0)CASE "M": IF md = 2 THEN hg = 0: CALL iamshootingyouwhitamissle(posx + hg, posy - 5, md, 3, 0) ELSE hg = 3: CALL iamshootingyouwhitamissle(posx + hg, posy - 5, md, 3, 0)END SELECTIF spdx < 0 THEN posx = posx - 1: IF d = 1 THEN d = 2 ELSE IF d = 2 THEN d = 1IF spdx > 0 THEN posx = posx + 1: IF d = 1 THEN d = 2 ELSE IF d = 2 THEN d = 1IF jump = 1 THEN posy = posy - 10jump = 0asq:IF POINT(posx, posy + 5) = 1 THEN posy = posy - 1: IF d = 1 THEN d = 2 ELSE IF d = 2 THEN d = 1IF POINT(posx, posy + 5) = 0 THEN posy = posy + 1: IF d = 1 THEN d = 2 ELSE IF d = 2 THEN d = 1IF od = 1 THEN PUT (oldx, oldy), manaIF od = 2 THEN PUT (oldx, oldy), manbIF spdx < 0 THEN spdx = spdx + 1IF spdx > 0 THEN spdx = spdx - 1GOTO loopstartENDlk:IF d = 1 THEN PUT (oldx, oldy), mana ELSE PUT (oldx, oldy), manbposy = posy - 20da = 0END SUBSUB enemy (posx!, posy!, ex!(), ey!(), edx(), oldx!, oldy!, en!, el(), edy!(), da, etype())FOR c = 1 TO enIF etype(c) = 2 THEN GOTO enemy2IF etype(c) = 3 THEN GOTO enemy3ox = ex(c): oy = ey(c)IF ex(c) < posx THEN ex(c) = ex(c) + 1IF ex(c) > posx THEN ex(c) = ex(c) - 1IF ey(c) < posy THEN ey(c) = ey(c) + 1IF ey(c) > posy THEN ey(c) = ey(c) - 1IF POINT(ex(c), ey(c)) = 0 THEN v = v ELSE ex(c) = ox: ey(c) = oyPSET (ox, oy), 0PSET (ex(c), ey(c)), 2backintheloop:NEXT cGOTO eendnowenemy2:ox = ex(c): oy = ey(c)IF ex(c) < posx THEN ex(c) = ex(c) + 1IF ex(c) > posx THEN ex(c) = ex(c) - 1IF POINT(ex(c), ey(c) + 1) = 0 THEN ey(c) = ey(c) + 1IF POINT(ex(c), ey(c)) = 1 THEN ey(c) = ey(c) - 1IF POINT(ex(c), ey(c)) = 0 THEN v = v ELSE GOTO brqPSET (ox, oy), 0PSET (ex(c), ey(c)), 2brq:GOTO backintheloopenemy3:ox = ex(c): oy = ey(c)IF ex(c) < posx THEN ex(c) = ex(c) + 5IF ex(c) > posx THEN ex(c) = ex(c) - 5IF ey(c) < posy THEN ey(c) = ey(c) + 5IF ey(c) > posy THEN ey(c) = ey(c) - 5IF POINT(ex(c), ey(c)) = 0 THEN v = v ELSE ex(c) = ox: ey(c) = oyPSET (ox, oy), 0PSET (ex(c), ey(c)), 2CIRCLE (ox, oy), 10, 0CIRCLE (ex(c), ey(c)), 10, 3GOTO backintheloopeendnow:END SUBSUB iamshootingyouwhitamissle (posx, posy, d, size, speed)asa:IF d = 2 THEN GOTO asa2f% = 0jkla:f% = f% + 1IF POINT(posx + f% + 1, posy + 5) = 0 THEN v% = posx + f% + 1 ELSE GOTO jklbPSET (posx + f%, posy + 5), 1GOTO jkla:jklb:FOR a% = posx + f% + 1 TO posx STEP -1PSET (a%, posy + 5), 0NEXT a%h% = -1.56IF POINT(posx + f% + 5, posy + 5) = 3 THEN blowup posx + f% + 5, posy + 5: GOTO alFOR a% = 1 TO 10CIRCLE (posx + f%, posy + 5), a%, 2, , , h%CIRCLE (posx + f%, posy + 5), a% + 1, 1, , , h%NEXT a%FOR a% = 11 TO 1 STEP -1CIRCLE (posx + f%, posy + 5), a%, 0, , , h%NEXT a%GOTO alasa2:f% = 0jkla2:f% = f% + 1IF POINT(posx - f% - 1, posy + 5) = 0 THEN v% = posx - f% - 1 ELSE GOTO jklb2PSET (posx - f%, posy + 5), 1GOTO jkla2:a% = 0jklb2:a% = 0FOR a% = posx - f% - 1 TO posxPSET (a%, posy + 5), 0NEXT a%h% = -1.56FOR a% = 1 TO 10 STEP 2CIRCLE (posx - f%, posy + 5), a%, 2, , , h%CIRCLE (posx - f%, posy + 5), a% + 1, 1, , , h%NEXT a%FOR a% = 11 TO 1 STEP -1CIRCLE (posx - f%, posy + 5), a%, 0, , , h%NEXT a%al:END SUBSUB imnukingyouhahahaha (posx, posy, speed)jka:IF POINT(posx, posy + 1 + f) = 0 THEN GOTO jkaaaaaGOTO ajjkaaaaa:PSET (posx, posy + f), 1PSET (posx, posy + 1 + f), 1PSET (posx, posy + f), 0PSET (posx, posy + 1 + f), 0f = f + 1GOTO jkaaj:FOR a = 1 TO 80 + x STEP 2CIRCLE (posx, posy + f), a, 2: SOUND a * 37, .1CIRCLE (posx, posy + f), a, 0CIRCLE (posx + 1, posy + f + 1), a, 2: SOUND a * 37, .1CIRCLE (posx + 1, posy + f + 1), a, 0CIRCLE (posx + 2, posy + f + 1 + 1), a, 2: SOUND a * 37, .1CIRCLE (posx + 2, posy + f + 1 + 1), a, 0CIRCLE (posx - 1, posy + f + 1 + 1 + 1), a, 2: SOUND a * 37, .1CIRCLE (posx - 1, posy + f + 1 + 1 + 1), a, 0CIRCLE (posx - 2, posy + f + 1 + 1 + 1 + 1), a, 2: SOUND a * 37, .1CIRCLE (posx - 2, posy + f + 1 + 1 + 1 + 1), a, 0                           NEXT aEND SUBSUB level (lev, ex!(), ey!(), edx!(), en!, etype())SELECT CASE levCASE 1SCREEN 1: CLS : COLOR 0, 2LINE (0, 40)-(34, 135), 1LINE (35, 135)-(56, 141), 1LINE (56, 141)-(104, 141), 1LINE (104, 141)-(121, 137), 1LINE (122, 137)-(139, 99), 1LINE (139, 99)-(165, 135), 1LINE (160, 127)-(192, 98), 1LINE (192, 98)-(211, 122), 1LINE (211, 119)-(305, 117), 1PSET (138, 100), 1PSET (139, 100), 1PSET (224, 116), 2PSET (224, 117), 2PSET (225, 117), 2PSET (226, 116), 2PSET (225, 116), 2PSET (224, 115), 2PSET (225, 115), 2PSET (224, 114), 2PSET (226, 117), 2PSET (227, 117), 2PSET (228, 117), 2PSET (229, 117), 2PSET (230, 117), 2LINE (231, 117)-(256, 117), 2LINE (227, 116)-(256, 116), 2PSET (256, 115), 2PSET (255, 115), 2PSET (256, 114), 2LINE (305, 117)-(320, 117), 1PAINT (5, 190), 1abase 68, 106en = 0CASE 2SCREEN 1: CLSLINE (0, 117)-(64, 123), 1LINE (64, 123)-(104, 123), 1LINE (105, 123)-(143, 75), 1LINE (143, 75)-(163, 109), 1LINE (163, 107)-(195, 58), 1LINE (195, 58)-(216, 92), 1LINE (216, 92)-(305, 57), 1LINE (305, 57)-(320, 40), 1buildingseg 80, 113buildingseg 80, 103buildingseg 80, 93buildingseg 80, 83buildingseg 63, 113buildingseg 63, 103buildingseg 63, 93buildingseg 63, 83PAINT (5, 190), 1ex(1) = 64ey(1) = 122etype(1) = 1ey(2) = 143ex(2) = 74etype(2) = 2en = 2CASE 3SCREEN 1: CLS : COLOR 0, 2LINE (0, 40)-(44, 64), 1LINE (44, 64)-(63, 45), 1LINE (63, 45)-(99, 93), 1LINE (99, 93)-(99, 93), 1LINE (99, 93)-(162, 115), 1LINE (162, 115)-(340, 119), 1PAINT (5, 95), 1, 1ey(1) = 114ex(1) = 162etype(1) = 3en = 1END SELECTEND SUBSUB titleSCREEN 1: CLS : COLOR 0, 2LINE (77, 33)-(101, 33), 1LINE (78, 32)-(100, 32), 1LINE (76, 34)-(82, 34), 1LINE (76, 35)-(82, 35), 1LINE (76, 36)-(82, 36), 1LINE (76, 37)-(82, 37), 1LINE (76, 38)-(82, 38), 1LINE (76, 39)-(82, 39), 1LINE (76, 40)-(82, 40), 1LINE (76, 41)-(82, 41), 1LINE (77, 42)-(101, 42), 1LINE (78, 43)-(100, 43), 1LINE (88, 52)-(114, 52), 1LINE (89, 51)-(113, 51), 1LINE (87, 53)-(94, 53), 1LINE (87, 54)-(94, 54), 1LINE (87, 55)-(94, 55), 1LINE (87, 56)-(94, 56), 1LINE (87, 57)-(94, 57), 1LINE (87, 58)-(94, 58), 1LINE (87, 59)-(94, 59), 1LINE (87, 60)-(94, 60), 1LINE (88, 61)-(113, 61), 1LINE (89, 62)-(112, 62), 1LOCATE 6, 14: PRINT "hopper"LOCATE 8, 16: PRINT "ommando-X"LOCATE 10, 10: PRINT "Demo Version"LOCATE 14, 15: PRINT "By: Josh Ferguson"DO: LOOP WHILE INKEY$ = ""END SUBSUB wasoncenukked (pox, poy, f)FOR a = 1 TO 80 + x STEP 2CIRCLE (pox, posy + f), a, 0CIRCLE (pox + 1, poy + f), a, 0CIRCLE (pox + 2, poy + f), a, 0CIRCLE (pox - 1, poy + f), a, 0CIRCLE (pox - 2, poy + f), a, 0NEXT aEND SUBKinnear Penman                 NIGHT VISION GOGGLES V1.0      kinnear@hotmail.com            11-23-98 (22:03)       QB, QBasic, PDS        768  50772    GOGGLES.BAS DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"GOGGLES.ZIP",4^6:Z&=37856:?STRING$(50,177);U"%up()%9%%%[-%](JFJqy3E]B-7%%k:%%%0%%%%lt%llqj%xSgfOx.'<=x[Q7]wsU":x;pVN6.9>-+=*C.[:e_%e]1+BV&iTFAH]%FVpoQ;OZwqTL#sgeCQ?4*f/h/VsVU"nv4n'gcTCs&991rc]YG0)1B%>&_Nzst0Y2j)4n\oa(')sLi;<4>uv.2.Ij<6bM$U"y'E_^M?Nd.aV+BH2]/4h_<F<(%NhLmc*W>X6<G<g;%AVlUu;455DS*pVT7nH$)XU"R$B>,N823Fj$*#<<<$RKe#6:1u;,ET*0^.fM/>K)a[faFiN%'>7K':s0ZWp$/iAU"&n>]cYji)o(%[Nr:BZB?4gtX*F5G5T0HJcX-,6lknqev_Q7\q];>rAlZ2f:'N%'U"_&M/$dT%BMAl#q=-^PuG(0%Pa/o-4Oz;AqI1\?OaokT0G#_0#.WNJScFmfO*7]&U"olnEQU7-7$oVU^7S(gFf32^736g#L^%Yrq./H:5R#Uei4H,21C1z0d.gVV6RtE)U"nq43a&6D;_f9O3kMY,<N\''4/hN&fZ+F>)zW9(gT4WJa#-)o+b$DDSPemcyC>4zU"2'qmAE(kM7fJ^+7x6x9]juM(xTI7Oc0$/joLZfVTjm$VR]im:>)]w7q6+Z%)3gMU"7U^.%jR*'#YEOkD#)o=g(.[16.IpsZ;E<hNNKoI%&'#d8g<^\G7V^_LJ$RKP9\^U"i%gCTg]j.qT4''I>FX9O?^F%&o3Ln7QkgBgr=Jqw\x?/[%IUVSw)T/DjX:+6EL)U"[eOr/('mb6#9gP2-A#d\yt[)]$0\'PfUu:&Uc0'2yJGg^s$>/E[0&,hoN<6QNL=U"Ci)=jIHof<kV(ReQI$,H'OB_0LMgJrlb^9/R_1U1oX/I0&YPi9);]FZQR;3\9?LU";Il^YnripNh9h6*43/Tw-s13;vkr_oZIFBe<---<n*7?XorXKl6^KX#L<pN#3DgU"_JtrD8XZKkK0;3&/nU_tDAl-TKpnyEb[:--9LdYh&nH-;A[v:2/1''SN9U>,i,vU"2+Xg[*2lmmPOTP4Y&EAw13LcWk3]n9KDU>p.Is;uTHm6Q$lX^^R9*BaQz]w:?l;U"LnI_K_2?[T+md)qxKWQRsY#3=9Nx+=1mt6Gy7+IeqKYs%(X6<*VUfZ$v2s2ujK+U"Yb]<6GsWwIhcJ4/S,vjhYQ7KUAcm<9l]8=R;<Hk6QASD+cL/<DWR8VCX.AEcH1,U"6d_f_Pze=B<PA]vGP#XuG>OgQShiWxQ2GV5B_T6bME:Kh<#;l'/6'.yLBO;qFvlU"_BA6vl12CC(:1F<ftk;5uKQb.Ev82'DpihR7Z3AxXWhEgWlS/8)L+-IQh7S>4ndU"P+-d<DLAB$9n;0)2,?GKpV73q,8?:Z\0YcZ\npHJk$RW-Z-[CA[&A_sbc%63b$FU"v%GMb(ZP:SLwbwRYWZpK%IBtMTaJcQQq:7C?RvEnm,wOY)r'2XxSlrels<(<bcJU"fcB>Jnp:[3a?bIKlto)lqoc)XMuNm2vf=E'sc-\*YMX?:VVp\HHkYYM>L^6>o;dU"zNRB;<]R)P:HzbA+_x;\Lw]O0\,,m[YFWc$_hVisLV:VW6uui/$K7ta>lY*hNiYU"h<MfIJ%lPO(;'O&N2DNkr$<-8Q^92zG?,kKGk\BwIT$3Y8dOf+_WdQ;:W]OJInTU"\32terK:4T(3g2#BY2FO#R+i9hS4a2NuaPCKgqZ6oxNh;kFRMJMk&a7AG'69=KPU"K&M/1iapPp8bVZu'TQ_/St4y?CCE3B]O[pRB,Z[Z:.w?IeMh[^'pR+X6pl5lDr5U"-1l,w:,Xr+1h>7bH^132Xoj%RBM;s>+4nitc_7vxK]:b3L4NbBwBtWEb<kbMZmjU"q+NuwSil/y$LzSDljlCiD[[&xTh6bFp#fEqmpJf6kT/jHuvgHg1FXcTWvK&xDAQU"3bDB^SlW8>GzsQn2nlvx$__3I&w.9g0L=7\g4o(i#p.Roj,8ck:uy$&=F8jn[]$U"q=E^Y9F:>tuuYU)JQjTid;7n)Xv8o',L<FDA'GA[P<$]XsXP;<&CNNubljZM)s+U"f/yQAbM[)'&G#,[v73\Srv2)(rveBJAvu(W&;X71D3<Ij%.]J'I.uI'2A^gl3c/U"u3'AHlthGKh2y%EyJ$*KB,h%vo/?FfLLNGDS5J\ksX]xd$pvG'3KFifqD/5t'%5U"z1lQA:6)U^Z$D3]fQn\yF7Y5R+$91.t2P[$LncMAg$#XY$tJm_y,462-x3<(tjrU"oVM&/7nV0rHqOZIL_+bGdqY5N/0q%Um*?P:6Y,y(taBAi;#QgMGX-6PM_s6iXhsU"Wn$6*l\A7cnNoXm0[Lh6B#ME)>fN=J;kL51+T:VUJF0b*3Pf^GQ([ut#-iBDcJiU"^.U7'6Gm559c:?-YDa_F7jexNwL^QAa7Ap1RX*y>?s6VnqebfJum-bsn=:fV/3mU"q32C.W:R,'4ibc]7G)0rDQ2f'RXP3^xYDa$&#mu_*'nvbt0=\1>nAt7Fpyz.3G-U"&ZzGI*z:4;Hzjs^O/?dZAF]?a%OQhl&jNA)nTm60Sdoo.7F%DrERiPX\7-SLX(]U"clSR&&'P;XPjSouJpGwmm\eO+QEo]ZVgG3X45NHM'$?UHr6%p_gEJvnr+hHVO1JU"HoWKmEvAXy2wda$W(b?+4m:3's:?Ch-#7Aic.1^c*pY:00.6---4$-#EUY4AW/[U"aDrFuB^[vRdcg3PDxInhVDK2&&zABYF]q6A&EyX.3bAAVlJ]'1fq/qYQV;YiwKoU"U6rYn_TKNlEU)n4dEOHCse-GxfFnc/3UloiEsiJc56^VN&%up()%9%%%[-%5%/FU"J8aITDlY[%%[w%%%+%%%%rj%SgruG;5.[4IZH;&+.K]iWhltrghbtu7hc'ug'c4U"YzhtiV:6hJMFEEEM64(eM4(e4M(e4(&S5g-mF)D+=QD+QcD+QD#W;FS%5g-F&S5U"g-(FS5gm5'xXrlMN,X8d(iH(GcyqmIWptLWpttI+naKx87Y\Me5eS;RxgjEu2/TU"wVZRE;;WIDH2,Hk2L^x*q^0DHq9,SPnqXnm5cq:[4/DsiIVS2o2^Z_rFj;[r[q)U"5o5Q%'o'/ddud;__tu)664RaC_20>>tZIdnQ$J79Ek5,/.n)*4V.S]ls6:fE0k-U"(&i-tvgM#97G$eW5Z>#)v9TA3WNs#wNFbKB-Yq4-2+s%M9/g&xy7O_dYu&h%TI6U".SYjr5pV=0iV=&aZpt;?m]9?\0*Uls>T<<hZZqq'W1DdeY?to<ZZW6J*;R,4/SlU"^C..tmaC6mbJjK5Gj%g]$$s8GHH2TZZ0uZfT0l;4FheS4Nq-<;lcTk6ZrjDvwi3U"*^Lq?qq#d:SK[8\n5crBBt/nQsMvSptNsL$;6clX>Z,nuv%i2$HLsq-u$dTGKZ0U".U5McvnMoqbknw8ZV6M_6qSnvRen:Mg$$MsqWrnxHfZ<MZg<S.uE>.9M3bfMncqU"[<8:MKbpn.77uB^T0.QrC&SW(Mnzu;P7oXZZd.Zx3i\_>Khq9_\8NkKd*Xs77vfU"n>0XriGFShtMp4;?p7pbuZtXx67iRDoueq^k.w4ZV&M^&qS.vNe.:Mf$PMrqWn.U"xDfZ\M\p\SXuHFX9M6d0MpuqfXwP<ZFMi$FSX?vVX:YMhpMstqvX<xLZ4HwY4S=U"du<dX9wa^owmq\jdw2Z=tw]tnSdvLmd:wecHwqqTldxBoZTw[pTS8uHD89SRD/hU"jnobx8Q?S.6rf>)oYb%V/;<m.*NOe'*h0<\.X2O/'NT0<f<.LO1i%h',i)52F3:U"iZZ^4:cOO'%T'GZ);2^r3RB;)Y.1/:/:^TO/%dV'z)%Y4&G)Gb.[:t,Os%^2'#*U"U[0fO9.HOse'$4fU3:p'>J9SHrOm)ob[.<%kl*EGKS*:>q(J#S;V(t-e:D4fP2%U"Lko.t)oanOc>iSv(tL1:n4WfB%Lbm.T)fo\(tY*%v<HOw3:qNf.8Z#SX6ofD)o:U"4(tli%L$.XT*o4uO7;S;&(t?h:.6fO#%Lbr.>*ot<O7<iSF(tUC:X6of,%v=8OwU"Nk:x[.tNGS8k/f.+lo('t?P%v#HOwR:Wx].NQHSN/ofd+oqn'tHc%v<OfwP:xt\U".xGlSx/ftN+o8t'tX%ovDOwo(Eui&Vd9WAxyOl_[Ua/i6\jlcll\$&>SSSr(<e3U"l^wrPY>X5LutokfV*<rUZ/W5Lul[bL5vHmb5JGv<rH.5MA5q]A_E#nhQ1=z6uh;U"w^b*f]Gh+96qgclKtu_[F>udP$(k-6KwumZ6TGv0s>,lU_a%]_aa%a_^^#c_=\(U"4]t3XLvW/DI?Ul.AA[LrLr<B>?Ih4F,<6:5RJ3a%C4+h]/\?+s<otvUCjsL)EEUU"=_^V(/-Vd4+36%ZBcg-$6V-zJ;Q*2uy9nk0vezzznOk&yya:.w?Q*3y1)v+O:2YU"t1ctfD$+Qru^4+wBywF1rAU6&^T^u90)1Z-3/4g-&=6tsT[0qYj4=tS&DP$Hn(5U"[<T%RIp[llGl6a2Hdp5mc6?0j$gFX9cquC9-ptAas't[nZ>dl&/6T.aqJKhmuqaU"qO%Ne$]>5DbF)ju8[#r4Kb(V*CA%CCqL9\(/A('_F&'M#q+D;JUk_[(#oU,rj?uU"Qd-3%]/],rv-0PQfoVRt=4JgQnt,EB/.%jTFk.%k>M:nS)z&yV9r'%myz&Oa?./U"o<NA2y[Q;/^dgcnD0^9L_)da7vu8D54N7GBM+3iRSW(;e'Gb6,kFhq$N]rk(k;aU"B_Js]pk^(>O$$;JTb?JSTXRXTHX+pfsjpBkby>jTX7#]bacpu[F>>u>dllD&6TmU"gdLGpuoBjJuZJjj9j.t$q0*YYuZ::Z\Co5+)X<BCIq4ub*b3]=j1#rZ\od?nYJ6U"w7dUA\?Srcj;gm_D3B-C1VhS&vP;8FSRR[ZSlV=v>0P:-)'TO#NyVy%N9E&)&K3U"ny)O/&%4NJ.OfY\/F=1Jnnvb51A2\Y;(Ukbn8VHur02$fGsn6Q8:ZZiD:[2()oTU"%WVz,&u$$$ekeH.*04+Set_,iRH,$T-W7MlmM6f&Ki4K>;sXlN9kRZm6tKo]:ZVU"L\b&*%5M1B/H]/l7/8W9T\/EYgrb*jgE?sr?<Z/7Yk1X,VWo-Xd2l1hE/U:E'RaU"XEW*fO1Sl=64V:\kj&E0s*On35<9%zDz\krpseD_S9j&%.OO*[?c=7o$*q;k2T1U"pusQ_*W)fanVg??*og[f>GcHHRUM+''),-VY)RyWX:_UE^\+6/S%lWrzluP$(.(U"#N2-A6Q)O*HndLs-:;DiDFibb.:]\XE:qUZEo.5o1tgX%^^_ci2DIdQqq/A>?AZU"H^=v,L*jGW>Z*fbgA'\A\<#Rw5\+#t?+H9.XsC:bnMJLk0[l+%)6X$5bp?E4VVEU"j.%Q0L2zgKu)6TW)p)J\kr%Vz$RAf\zz^kA6-(_xdo2[uO<kDt1FnsT]kr*[MGFU"K?GMVM06L8)=M3&M3##4G<D=<fWb60?o_3&e-^IOs%XdlcP(TW^5V%9=^1l/WilU"6K,pZlfu_^RrE>dN.R*5F[=T1#H9q.5l(4=DB%CBCA2mkmCCC[l2l12RB-mi-;.U"$C^M#Qq4um,8/B9G4#))2N;a-)e4kqR-0X*hD,(uS<TQ?3PgF_cC$VY=4L;8F_&U"sAN%X=EOyZ/dyz:Nh9ruOh:dA2\+xP^=o&C[#zg4ue*NeQ\hwsB'_9jTkXj'Qe6U"\;(jRE:ZM2#H<0TQECc7JG]eD;-fqPJeOQ.P+-V9]xkL=GE\/PtnctLkmbc,$TGU"QGj]zYG'>(jWx&$kSVZ$[tDd1tF$Oj0Z6j3I3t]]F%Y5gjr?rBtSt0bS3aa\uYlU"Qw87ae2SU-1r4F*?]^=^&V\o\=mI$E)ntlJQPX#mR$YM8P=7Z$VsVjlhC-t6S%\U"k*3.*%%#zW.-^M3(q%OSdW_a\)Q;CMtAt'dO;Y>XQ[#M(oYl(P-40JhD0]ad,(-U"XT/Kt^ix9S5DKJb)]7(=YCCfF3DSkj6#X%^MCtncHHkq6j7Chja$$-8LfrP=iEiU"FT.W7/(KtCxwVL$vF=DPLl/cTZ&1j\c^#'\6fZOC*8ARUCnJ;3evcR\q)>eWHrZU";SKW-;/\#-N/r=vTXDoWh[LG9R[&P87Z$vsl,N<NO#F5v6L'&zIC]9d^OqTQ/%NU"f&Y.2%e$Ctw2n+Q9jSdP>+E7_T35BRkc16ZT'LCjM:h<$jhu;;;K*S]r?sa2G3ZU"0P/7j45Hl0_bo?)Oi0I^mODQupqJ<p,FhUr2Jx:Q<#^X)Z+XcLLOXq[tCb1GJt;U"8aaOKLPR\rRBb=?4%WC4Kml,\:eGYO((#\KU3P=NUGi;iJ9<f8\.I=6%o\m(XY6U"ha^*slC\rRM0L[jIK.[\i%JL%;QBRzWV936)x'W5I&%E'co/b,*u%OyC9xk'EfkU"3r1x)%8S90E2+SjUzcv37G?o$LRJ*:.0\>'XcA$DAlZZGF_lvfoPfK_PF(.B9qSU"Xl.u'_X1/kI&qOOF\2VWul7,l0s?hU20I=DP$f%bKq6YwR,s4gW2#2xbQ.eckgKU"Lfq_*:]NeRq]xU8rf(dgAQF6)EN_>#Gi1U-Vo%mMRtLYE.s'VEIIr7r7=4LQh*FU"CPJ&5v$Nq=Ut80SV^sv0ZNK9%zT.?5.\rzLB1wt'vUNxNyJ)Sz9'*yO;+p^g[WHU"eNA1F./,AA^j%/E81]3aDi2C$:piix*Ox9,ovLXX&prUO]/-SbT4k*B_\XiwlBqU"?GG'-s-wV4\DYjE%aaca[_^b6YDClYZ\\\rN\bbrq274\W\R<rVrRbC[/M4#e+KU"^)AUyC$b<o,vDhy#\LF)/a0f[G*=TPbG]73UnH4Vszq->ns]fk:ZYqVeCD*lsr$U"N5X-;ArVB8C$vsu4T%<V?*F5)vX%wE(xa'.yE0OpJ=)2F'rbg&#S4tb'AOC''=2U",Ib3Z0q6Lr_.aJ?0SZpd*t5*pqPiWJJ4rcA]h..+undQ[k]xDe[EXr,F2>$I$MOU"PQ8plVL<K\H?;%a^a^[a]e58l5n3o?8=REB3/DGVl,sYTB&\AV)4qUgvDdI0Y,vU"iD)N=Q/S;z;V2<CSJ6]#u(Tc-\i)?5A-#n)5zN9g]$Z?Fe%,*Ad$ElbjM-A*>q;U"bv'QM9oStg7'?A$k*5w7Kcu(]lR1gx_z<o1*m?Ad)?_CjmX+m8QRN&<jq-Ft<X5U"''T45;6Pja8xS(IwY\V-(X#UhT_:uC$kq^[m-x_M?KKCnC1'*FR/K7H:+NaR.=\U"7LWT]jX'0:/UYq50_Wo%,=BmSB'COEi(_;ga9f4tU[k=JZrTt\fpKGP]u_ShpLNU"]C*X%+W7e12NP/;yzZSO,h&aj=zZT$oAM^0Hc$W,A/_rH4,2Yk%A;>dHB$]jiIeU"kBS[4MjzZ_cHl0A=d/mFunor^Q.]mO,Jh0TM-:1Shbbjkt^kh^PJxFAMGGKCC)CU"3_%$qL,%8A]a:_u5'#ewcPE5EYQ^YhEC'oLH9^(_$mDW(bmhM0jDj4/=0F$&3sYU"?0P8*/)BAY8.TK*R;Gjs(x3fn5,7)EP:[)o&[QRY7[6\D9\G=W.yO_qF_L\E+tyU"p^]kl+qz3,+aG$/>&K;=OqYkF$ACnn[[*bsluWOsk?[uF*X]9^diFL>wcY^q[E7U"lJ,Z,ooa>sl>ZeHhokEu:;S.N4M+?ugX&3#urV9rXS_)Qx'K+o#Kx<sRJ3ZB\JhU"XV]j_&]v**D/D+re#DURe=HRa<oI6371;#E6sAc&CFCCTAV[%;I\%0zV\4,%J<EU"sCZT=0%hz(>/ejZmfqy9&J2wydOP[1+5DNtwmdq\fDEDA[*i%cY2e;czI$5bm?eU"r&^Lk9I<%jSVk8Ons>DFh$oDXD82et9Ju_QCLlB=VuW$$7pQr=_xY%/ndNkuk^oU"J&c'-ZOo+_YdBqG-^I.,WX&%Z_'<\?tZ#I>_\AyPbXhs+\$j3-g&D.KYug$Y4QYU"nWt9eB&[TC(UCj$&5,-J_uGOiMiGI%U/EQ/J;y9N_]X^W+z&?McnOMQ?tq8e/2gU";xgHHQPF44V($^;=c(AoU[jB379^,NpKqZ)cHfUg&>(e/]9pPdg$5=9lhdChLPFU">HTo&vKmz01]T_$DQi2SHjt1?8Ll<BSklNjS[NbG[;g;J?nnbV$VS7i298n7R&HU"MU=tR%M/=;^a%3fq+LPjKl<0Nb'f[Q,J;CtI91LidD)&YI,N;s\c)Y\e;CQRLYQU"zG9eyrNNSv:1Yw;*?fU'zP0-9xmy&9&MEzyaKZ;YH[[<vk6DC8^gP6B+B%M>(J$U"Xxl&GaKkhR-v>PoT+*>(12eL/?LB*Xj>cJL$zj-5r6CK;m..RE)HK=HY4]uPq#DU"Y(]xmHji&u=2#\.dN$Y%Sbhi;%UA4+>3=\V5&DbF6>QM4]^^-X%F:d$A<WqWlYJU"oL'c'u%WTq8EC#gZ*WV-(zA#0l*Oz.]rORC9:WF%,-J<Y9d[ojXNm[q1WM=P?wNU"mPPt=o6:cU(d81(FjP9suiD_TY',YPq]BYYaBAh\C?Ec(71Y;43q,[MbM6BMDH8U"0S$'AUBG;z>Z63uz*JF+H:T)F7j]FO.VCe1FlFx#pUl8N/%]A(cI/723e68c[VUU"rZG^WhsR-2j5^_:N]cVF$qF>p$Q[^e;\TrV-(Vfc2U6n%(J-c<ouwoeYR2Xs8P=U"<O*fC/$60&aO(v(W.)FE,j&Ni(YiMs(vl4o32):[5$_%NMHze$](zP^XOcIDB.yU"Qp^oiz9o;QXCB_:j$LXhcc1ot4j9Wn?jR67?2O\bD*e:PSYZ[kse<JfgcZ115kJU"T5<P,L+vsIeCRHqHmEp8kWY>YO,i#39byf\N]BnJJ(yaA[LH-#:F4G4eZ3]%=4+U"b79tQDLj[E6mmkUd^egE=B/$-y=m8S5S=Roi;-vNkC:yv>SC4s\X_qPwO\d?:#yU"xfS1J8[ggzz-(Lw_wyAdWf((hp/of2yyi3PztgAxuMe^oHjBY5l>Ks[DoQD)$X8U":jeLnINNt3;4b&uJP.G,j3,-0u2/3+u111-u5+2dPW]V^Y-86-=gIQlpJOll?P(U"B,h-oG>_5-qZnTyFx\pAjcAHWAA%&WeT*>Wi.5t/,oH/syUC'we=qWs.P[D%ci\U"?aBk/a8snSv.FU6IT7[SPD+*8s?f?AKc._J)Bm^AY&ry+p:Q#]&+tK7uK&yA:2eU"%OJJqABjwfP*2)j.Dp+eoRRgn4(66vQ0Ax^lq%$LbRyO<u]-InWAsIK1$jG]YDBU"(rJ$4j#d,zDppjPD:T4K('AUcKFbo1>tY3t-9Zm9WZPk)ZbH1y&h:Zl2wJuuiWfU"[H/(58m^a4i?Ls*(yr#ET[gN\GGW_i=CiWCoCOYS1M3C_lMFREepvzNAXjrwB0[U"j(%-dWv6MiyOP/\5)G<-vf3(pyq/T'-*b4(xD=Ji(y(Oey:8Up6hl54WC(RT')4U"YBeAa9,12ea(gb.qoaW-b-IJE>/GhkW#2jmmMYpoQr?Vn<E1+u5+32\:0o^QwffU"&1&QQQF/pT.^7Ky4^(CA7-P$X-rH5r#Zl$HnRa+vIu<w)P[Bub11\m[uAn#GR-fU"pllJb6DY3nxQ'CxTYP6OdEn,1m+I;f*fC*B^_'gfrUUhzVrIDBS;[F7*:5C1e6sU"-aBeb+*U(\$Jjv&WO_Va/'fLjZ^2'YCSqoP1rtK&HS(m4T_w2+6C$c18cp*e4ECU"Ak'GmnnUoH=G%QSkG_$?MYeD$<?ALB5+h*,*XLVI1hswtYg40kQechFPcA-(&H[U"*4%7'[k$Xt-gxAAKvcLZkawl9<6KK*ixrw1<PSO4L-kC=34VCdo(R:')\=v.z3hU"*aQ.v(:\J=e'q$-6DQ^EyuPTvJW:sFJTG?f%FBqf$(Y9O:1hxi'kj%#Ondp=)M9U"r(TS'NlQUeTCpDta/ED%Y^CItwmZPK0'xgZy4M9sWaYNC641Mpq3sdiwae*j'yiU"YZ?;ptOHf)s?n4T)**##tjTtodeGv/hVVvpmDd$2=)Cj%Ei;+om;WG.O_k;qmWcU"+Xr#^gXd^Cr4YzVco3LuRoIKWXMB0d?o;&e;n[4EvgQIgE$UTCsLaIuraR_I1c'U":7irfo>,cDvwfi:Yj&3C&u7/D\%8oqx96?(;4M7?m^OO9=Xi4GL3]oo+B]0=%*EU"r,fE_4N<t-](gmBf/wwZmRcWR;1;h>kGe^q)(stIN<bY?j*E1aFB?gfn<P2,?QpU"pEFVEC3L/Z$iSfM_rbuj&T0lhVNioa.(=Z85kOF?\]MP+sl,*HM6a7sLV;bXVs,U"rG=/Pt8-R+-T\.)ma=Yf.g1Fu,Cc4_J\kzRRi;r:66R7FTLg'.fP7K/f%Z9NC?fU"FwL\p%v*OzUy[m7[P#z9eH^>mB'&q1zKC[yuIT^WcJ[:%,\hTHzMf(vsEGfmFj>U"H^)vOfi_dW-kFs(XAoo/vX(^hlaa'%m1+1=%\JmRI9mHfU[zFt7Ihd125&u5cD\U"Cp&GpW_RV%iERB?<qodZH5H7J238hCf>>?Lld9a).O?8N-^k9YSelsVKCVaIl>EU"0<s>F4&3D4sIO'4UmA#FNq,lQi7akd^)'+nq&>m_'5Cu]ZIP[x,iY(y\_J.POfMU"4*m3ycDa*(R9/^15x%a>&fz9uYX0er_*DojBc9uyYW;rkRGx:(6GAxYf=0*+RRNU"Z]*>2VV]:&9\'JuM=3mJk[kzF;/WQk7Wqcz/sVrR\*nF%Y\4LUS&ZYD,zq-[pw2U">%J^rL1hvKTLb-N,-T,DpcyzLZ$APPPaR<-OdyBTbeqAKNki]2yCG:$T>x?q)>OU"Z]Um)PNN9l9JkOX.W.+Z/%fCh)&RbZAmTzYL75CM/V;avd$k4:v<YD.qCxx-[e9U"Zdw$Qd'_)1tywcDRg2mez85D[[\&C%[>h<k]-G[H1Lu*J'I;hZXW:A1GC\\/3*uU"sc(DbtC35:GG3u<0pLVLqvFgWl4xWpP.5gh:UfCXcJkH?spK^Oc1XG82S1*#IW(U"DAaIkr]SrU?E-0V&&<dDKIR)GKHXor*,CH(,U-McZ7(=OmRJ&o4d1_IGtLR-TIOU"x.[mRD=-)mS;DNIO1cI7R-)'A?i5uC1rmV_YHyo\A5Q2i%a%+^/3p7P[9p?ERQ(U"_%W%TR,6KwGAhoKa'*m]?eZkr*%iAwKg/B]*1H$?MX=itQi*S+%\DY%h.d)OabSU"5%Dk-6VirNDg6cYib1nBWf0&jMt[(M9GTnyhW/Qc&Ir.hnN2Kr'AYR;Jl\Lkr)vU"Ze,OsSC0hUG.\hGUO4k3i-tttp:a7^,A*'p[i,4nQkI'd,K7y'.qJkR-)Ly3]>5U"Em,0)ZY[oVt+OiB?LqV(G_hx+^51\jT'J3Rro2S_dX)YasJ:^OJm.Y;^i(H#VC1U",?#6&eA<8&XiQ;JZk1q8cRP$u<BJB-fp%7GQP]G>d+FkpD?\6&J_B%a_C.Y?uZ[U"#^z[V:C=XkZoM>GN)ydk8Uv0IVDH9W'qj05.LKSB<g[kvCZF/ER;7TsJ*9tg>VwU"dCWYwMV\7f;^7Fk&9X)<dG:2rYOJ,&A</E2;3/4;R)fDfiqtB6yo5ih/jrk+7gFU"1;w1OJ6Wh;(keXo([bsnDxsIX)$?15.k&-)'2U%9l>1Sa#GJ8;Xs$C\NW?IGbAtU"3nGl:,A=)Hq%bqpUkR&iaehKQyXZb-Xq$%okgI#_QABJ_wx[?Q;gi%%z\DGl1cEU"CgapB[H'yh)EyKL^;&WAT]+OBMocVdsB[&+e#GWtY+?AOWE$GVcflT%g&Bf6a.TU"1;%A2gb]-CCa(>'E79aDOI%Mla;X#bApJ?258ag:OYdG9IJ4^dc+wBig^qShZ87U"1Y&03M6EBaLJPJ?_deAan^*M8CXP,F((mjH&-Gpeknsb96CiSLLL=g8gx^LW\5yU"%w3%Z5pO:O'>x/2R9J2FUh;&c=ygkP?]P)zB%EYAa=Djkb5My.:iL,MKIFf/.PWU"3I5/i]:\gNs_ABo[^S$xr;)][6*L:'9p+e\-m,mA/e1yAhqD%$xW49R['RoG^o/U"ID5s+QM25VER:?IY7XSQ9:7k8Z>/qAW.Nl%qPNw5Xb;.[K1+W]\%c^1gi6HRT^hU"-V92xmgbT;7kJt3U8xg:g0tx-.B[ynb.zZevO_(99nzw&<+Q*2lD^#L;N4[O(B;U"(EBE>7%E3'S3DDn(Q_b$;MR/)&d-\-/<a#hh:yG'E:GD^F;l]W--2;;UuAFOCy(U">%YR%L6[blWBsK;GjcR8'o?J2[eXUS#yOjEnh5\J)GS'j.U9]ibQZ=%[\Cp=3RcU"/TCe$paCw1OlsRNSv?jZjQ_W?FAX(B.$AvTUmlYbb#s4gX2eD];:*Nf^D+OMNh'U"\^pj%?vwhT7nVTHin)]7o*EOJ\9zyBNc+\3N9wP^:Yan7OxM*1U?S:*.gT9$N9.U"6M1W\(ao3U+i*'Q$lCJ/,OaT/*Jo#_qom0I*+*rY^)Z[gkCy4Xo51dC_(JtJJ)lU"ex7$ft8B)scmIE\1oa#I5Q$_WUGZ[u]9[.%kqV165kq?9+>iaw=_B2EbawGK((PU"Dou)8jE?Zd'YfYdW1F$GNKV?Te%M0EOw*s#O5bHh;Ub9KmVC/Odup9&nklZ5gq)U"]5M*T6z-9(wNbrxDI^H]wM.J4&R%<]i*KqRTy3=TQGl$k(cnzJ<=KJa\e0C;YoIU"_jl_F/JQf/&WAO#JP^(*GswMXqBbC(_bnJ(JytnAxIIB,UcRn1ncaA%>Nf[C?.-U"V)Qpu)EiTHi8Gfir'+j/T7qIQlT)nC3WD\g/;AGd9>xU<l)cZ%g#c/?jm=Pm]rjU"rtp*gkA1BSZ]y#/GDh.5=ScN&;mz4S1J?DabT&#&M,'dR(9AX1m7%R6zDdCQ9E/END SUBSUB V2U"F?63U_)qA.1i4ug765Bo.sfeu+u+>^8bjVSbF>oK&<Usi#s>hN%e_J2L)x_fLG0U"[$EYaQR&NNNJ24O.w/[p;$CFtW;[dFJ=/3W$q4K\1I793s<%g%5A.1lo'Yx>[1.U"Q;^L.iNX<E\27wT/;M58>Y^o6i:RliU[nkGp]tnUaLk'd#OCd>/M&f=yIi#([0QU".Cn[o$9mO/O%=5vSW]o#Y(YysJ6f?:GDs:.CG70Wt6rM\h+zZGV&]1zF%V'c:6YU"S3^=2qk)M)%%AuMdFo6,R[GMvdK]La+]g/UgOg.N>g,lIa=RPi-,aF,Iy)*B57yU"5>?HVCFt7XkG9<TuXVWi+)<6%.=3:f#)WKY8aOcWSq-+Y&1W&GYvK2A-&NDr2^=U"lwLEHWP(e^Ddg+?^rD?o,FD>nA]:_DUK*?8w2ewi,I7^1v'H2CI5fDO_F&0QL>^U"Y3R(,TY]u=gn0mYr.RY'sEuoLL?Z40=r32S(9OBiukkB/_4bX'Rqkv(EZ6bb0)/U"K4Sk9eR)jIC^?pf?94Iq$JQLX?CNtwkIUnQcCBf6NTRfQ2Ra;kJuE3FNrNt^>'>U"u-&a)GTEiOkN*A'a;X%fsLE\:77UCE;_dY%k^)0,$kAg7SFh>0mMh\iDa1tNhgVU"g$vVL504-N$^BMr)_6GzIkXU-A2]=Q1oPFp^xM.$)m&5h'R$/J[)p]xFa$T[48jU"$/NaT+mnL[>UN%adH'/ez^RCnL;kl_UCBO/\'GCNG:%%q>^LJrAa6C9.O.wOjn^U"HeoM;$P-&KGOduqtg]w#sqn?2b/.IZ]QX)M*,,(M))'-&+/+he$-a.J?IsT8_]kU"3b-Oo=Pw1nO&osKj'o:>^q*wMTQ6Z3Ynn;U7YL$glr4FhWr2L$olb&r<rboL=C%U":7q8TAKE]I*K#V>.B$*Mo3>2t_b&(XqJ)8<k_f&oiO;8Y(Y:F/=QE&Q)T*SR'[7U"&]a#=g-.fFbs^Y>mw1,A6Ce+KAr%kO*BEvVte+R-%qqqn(]YYh[nL8A*vbwOl:/U"qe\=8.MteZv\,sjElOI]:1UM/T*M.),(M---06lKAI+5IM=dfFP52.[V681GN;gU"%0aABDcSh2aBtou&RbL#u11wH;(/ur\0(Tf%gRZI;m04'L>>IIIc$/G/$Y2bbLoU"'L%[B(&-?gfs(h[KM1eBqW8d$rTA&+)<o_H9SZUCkE;Zo8%*CTH:P+8Nmo6):GJU"J]d2cqsXPi/b6JmsQ'GPKmW1)$u^q1CtUJDFpWdLG#K6>*'Y49-;SsR'%+MH4<HU"F:VAM\NEe[[JAKr[AlO#+#W'HIk[[^VZXm,%-LN^J&Mp+,SgBq2wzcp*eyZ;b3AU"uQ\t7(Y?CZ9^:Ms7U\W.qE.O?nERy:mBG4LE&p[z]RdcmfPO/_([ZTB$B/AS.u[U"Euo>\kwN:[mv>GKC^mj#G1PT/;Olkng%LYKTw?<mNnBIfnp8]2&X3_&$9JW0RIgU"k.5GX*F0\axR:H*'%I72lnQ&tOu[;[SuSCCS?SSc?^;z3(?H$p*d(Ip<\_UvC8VU"Hj=Z/[a-&^x5n/vw1W1&(RTbSDj[Gb$HQ^pTQ-:^5AL[OSGp+pBNnPeL(I*wOhSU"0i1cU1Int%=3cN,b72AH[2e9k_%Y[<NCP:P.9UaRb7W1Tdg5_.Di+KbM$wBjeM;U"cB,vA1817Axy=g=nJ#%IJv8'hJF8ygVJ&WEnVISo3D%6Cqv_)Xk<tMTWCuUu[s?U"ccSON9*.*6XQ'\PI6=^-#d3),QwuUI5/bkDXSHkbZ=coVpc)W&1WCF&#RJwa9IJU"3^)3[,gun00#&\R._4XNgTEFi$(bQp>:jpjHiR+UqdgfO=1)16_)b4$%%kKGHC1U"sxYXGL9XCa-.NbWlNC%CMmMcUtNMgTUzBpeO)d/]LauM?8X<&#-&=*;T'F%lc38U"\-><ZQl[3D%9)%Dl2.WXH52UFD2#*,J:e=BMBB2BS:xhEPJ5-_uIdlt_XV&KPReU"<$GWAcT(A7W&?4^wt+o[Tn&8.CR44j&R0:ZOia<B;b.yKhFhH$T;X,F1hD4WXk)U"2h1EL&)/&gKd$lDcWFUCw4s%[Ww?UGu1na#\JPaPcGocMcews\hsL^;CY9n)OP)U"y%wi,R'H?7UJ%Vx415s<N(nWxcGPED-%DfYA=.#[e1SQo?F.12zNlBBZi9=lIuTU"SWSuSSW*K4b=^ZP\pH?RK$4$qLc8]XD-:Yg<Y0#I;jTJ.)_1:gbLMuVY3)AfiCgU"b_)2U]QP-7dIz=Y0%n,FX.HCi)7T/h[B(q>ThdbC_UB4q1vTwie296_8jg><.SDU"kt,vBrM/c53m,9YVg'_(S-2.$[VXRK*G%qqGmRIM0^CuX3us?#.\S'1V69JM*R)U"YA/GjO4N-%eU9/L]F&=tMa?FpZ]V_uO_Oo6oO]sev0H54S0^=[=-+YI0(MNZ9(*U"_mXVu7?=C7L.sFZd]0)nGh[5y=]#I4xR%;K$K-MdKGwX/a[Y25qOVm2$/vouJ.eU"2^N.FVT6/vw_FCa=o/S-7v-581]98T%qU,$5>J/gNQReboAP)Q:mG-R[F&E%RaPU"]758iZlM\b)om0OpGZ]f2q#QV)[c[Au=]ptletzl:\=ERt<fgfQgf;<k>h/SHTLU"#Qq=^T^WnGRZouc(H$#)EYfp*Kw%eU=-[*hA?4M;BI7OoYG%_oiIbFUyR3N5O&gU">FaO+yWFL#2gw'7n6T%1eaJoFsK9deS5]94A]nnBaYN$p+yQKqaFmOAsxW$sT:vU"')S:5xXNgjsm)Tp+DXl)?&sq7V61.Ga4&<]l_2+s=0;u6M&KkH9IMh/4:yS0(*\U"Q=t[5/+J8l;i$F2d0B4D3#x\f?A0J2sr=hF>&0E,>U*feFfDc^]+Eh5NOEYfO9$U"8g]\F54#$MnDY*D$9bpk%WG*<2yVXnBiWs]46pRqO6WaC06)EJfLNhA%GJvGAriU"BA%ZntgM1Fh%5/uGI=y5YLQ2*vbmmpLq17XynhG3cI,vj5ib$5Z7g00]$+r*=:)U"U0XnPG-GQIi?Dc*jDa+Yr^T0-3TEQJf1f<lteUF,t2#DQ3*mHum_V4rl-Q+u080U"(j\T,wXuF^#H224SQxlbk3jHp/,(l,n.B+R94uQv,UF#q5GSpAB)ZdiRMwW)HmlU"o=ici\VU%wWn'2+iD-XI[ih-Kem/'[Gr*;#G+1J\QpA%64naL=XoA)km(an+?aJU"GR[QZ-?=).GLcls05B&eI7IUidw1G\A+a7V02kRFSE<e5bw#VEJpHFTB8UA'[E-U")Ut5VCu\\#\_kk#>i=PKDhEJ1Yi1RE.Ute'4U\=\5m&?5b-.IE0%'J]5/;-H<e&U"Sc<N\-I9;(\THVmV7ZoK9jEkFPr9qg0<86sN]52<7YJR$<l8Yd.2Ne)_.pK_w:uU"[EGcC^.9t9z+\m]uty>lKLI\j_Y_0?r<]rBI)21W;\Zi8*g-f/,&[Okc1t[P'0JU"=?'&CElIm7/9NN:3XLraJ=ElgW:LS>RGN?a?Uw's^DeGIJ2).Q[vPCMupDYfDfCU"#_acvQDf#BsV\jr6uY1EAO4hDbiQ=M%uhe._0j/xLv_nF(f8<o=U*Tp0*zkP(P=U"y7(\BU:Aag)-t?d*15G>*v+g.,s[FFJ\OM^q[-D/-qrss1=30G#\aFCN))jV+OAU"OimU)+45VoWFD'dV6rGBgm]]\)x=ugh[WIY,+T3oTF],4I[?%a53R4Wq8^\E2\KU"MuBugk?f4#^u0<fjsj]c)rg?SfVEVD\nhqR\cj;:;8[(wu%=+1EB:ewVRFsl?IUU"7Xo<mY#-/B+iA9A]$#2ugurJb9)a]55fKa&*4o0G8C/%cG,-&$UnqDupr?L&cm9U"UQZkQ[+C%BFx=p<imSWq#.umQNi:PiJj.a7%UA3vIw;Za.c0R+e$EEY0\^3cm'TU"a$j5[v6nz\$$6__E+-(GDC$Y.=5<bSUceNEed?V(TBVEV<5;F/-&e:sg*)jJiRCU"C2/A.=(Gg6qO/IL9oa:.Imf6*NG>Frl]=aE;8yR1mT=%I/tng_hH70>nYbZ99+aU"9*S2AYT),:Y4$o'I'GPHVO=b[0K)kK,A[ge3Pe.bU&ZjgUsv/Ff)T,K&;sH1E4:U"eQ&JqF]?'<*fm^)BEvX&(P2pX;&GuHFHF?fngcN2GGPaDhs\(SFEQW_UH9t%4FgU"H)TAE2vR5<M5?$Jphn#dNn:#'BDsMsdi6fb/'=Ergn.cKCca(0A=omrbr=Ig'G8U")>:q^mc%^Ue<)^_/H?9226n_vq(%mI?4Ybr*^8^jr(&ql:*PZRj1-5e6.7lv^E2U"Jo9.'NY&#IymWV.fmbM&VQ?2G76d0HgjY]Q)Bz8e0[H%$mnF_Z__ojtDnkfMjFfU">MNGi#SJGB[g_H),lR%;/ZTe)2YjFZ?1_XZS%2iQbsc8Pd7HzaLGH\hKp3SA%nRU"ck5':uY/TL3)z?#<^ZE>?]s^.R=nRPL>g#;omdh8mX[np=LsV.15?L;XWG;6[q;U"^J.:Z\DGo(RG6F<H=1CW;A'<vI/03e,0F+^uhYT1$j_t$/=-w*6v=OeI53ZQIJKU"E^V=E(-u0N16'/]ddX\8&ms1h7;Om_FF0,SVTJeOC>3P<E0j%-)f.[P7-GB_qC1U"_p<A7C[2npBIvWp%/mtN5-AYuSPrrVrjnrL)G>-)'2I*0c-1A#Y+TZ->-]n0o#hU"^qH=oJq7gp;#%Us5B9<0V;2kZ]%.^DKI6:Y_3Qt>HA#:K[o;aa*Rphp;1=?_C(.U"bX,_OC/PXDml'6d\EkrcR58uH$n1lVq4OuKuFri2t)lu]meVuTD0h3g3k[c4DT_U"m?z,Nk9*(%g[o6,S$T=;c0<D3.A3v#Xqm1Gt3o31A.I39F/T,hF8[%q8i2N3fQGU"GkGGSf=7gFG19G8kum66'xabdGM/Tjxf=Q;v=\N)6F?*;NkKi^'001G66J&.c7DU"aA0SLMUU0UE0makTQTs5K)iu^%Xf9.p4kZ^D7ebF;Q,>t^4m2]aCb)^cjv0B2'%U">\3CdPJMaMgE)*RE/6EhRbhE;,r>1*Sff[z>D5TNR,NSwXV4v#T^Y^RQa7nS/TiU"+i_Bu&wWRcS1RoYCY]GMK4n#8/,H7)4kEi=J);aFGng-F[m&(GK=V^tBYwO7]OYU"\2<GYLgiS10DEN]Xfk=OkV%ctD7+tS>]KR%irm/9-D'a-ebfMYgLhujXTYpINUOU"^5-g7aSQ4Bo*V.(5HrlUrwce#Afk_>3/KRbp'EN7WhdR;z>[gk1qH%],X5\Yp(-U"[?*[t1^K-g[3]#l$nH5E1SE$AnCH,(K,uERipk$SC4a8:3_p.a+:G[#N>=odEBxU"r7hoaZ\oHf[4Dhp.+fUwU&o1Fm.fFwbX#8_dUNBib2(U((->5)HB:*rPruY51h^U"bO'MME*-[2gLT;FHUsnV*8E;))1^V.Mv];MUiQ'$[?rpKj<\W(iQUE>;WRAS;XKU"hpT;Rq=DiA<EiL.>na[7-#fG=gN.#lr(2P\af%KKf8\>k_]cmtp'Pp*<t9rHIX)U"H[B;h9[CHB);:Ih;a-ALH-G+L'kYHUXB9B6Y4ha5nx9c_uc;1sH<(iM/vbP)mOZU"co[ysNlk9sv2BGh/>=Qkn<9;L4ZefV>=Vu\n5FxoI#op/\[zr#Z=r5Pb>35F8TUU"*NESsd8KFQ,4[S<3[<g/>q5V<ZYqaeCF8>Zxr<T0PQ#'U:(l;x/DSwBonjEQu-UU"-'cj7rM8LKW/Ij&wi)_e#xb4QE4,aZ'TuKU#?^VOR=JpTP\N,57*YRv?:UhfClTU"/zb1TOq#RzXJqQ]j0]BJ1b8F,C9lSv*V5Z?ioDjdS:P?RqZFhGr30TwuWWwwl7JU"1'L#[So..Mir[kXFBVe+MOkZYsV?gYI^CZpr.6]3u;c6q_(U,&Zu,GfK)5L1/TgU"1T,7rPv>1YzA&HhnO%'fi*5r&EEe:<1huj\M53H*uiTUcl(XHHdjh1gfzIAa/9MU"0p#[k;WJGuMp3vPhE^t_+#<\y^J%a#r75%O6(:+E1Ep&sV*F1V#Zm43lTFZ(aToU"=pD:$;W*VOy:oL\1qt[.X,L>;*+>Q:>9PsT-S%1I<;[FS,BOg3.0$A:UvR%7J.aU"do<*Y0;5;aIc4hW'H0lhJl*kh3U&a4XgilG&x-9-*qQa[Rw[9B)R_;+D5UnmJZcU"WoC%%c/7*]5)GRD.6NfqaWk*DwuT13uHtH7H(cQdF0r]E[G)+kI-\ouEebu&[,$U"Bo\en>TGvu][?O?OOG[qjDt?QC7M&H(P#[f%>[YAq+GFJW;ZdnQ/;.iF=T=3/APU"((UlY^]UAcg+FZ?B1s^V#*0R,#t?:hjG-Fcnd+K/<+2l/]b&uIOZ6]]P72dg2O)U"upzW-mEg%7HWlt^_4q;vJ6SRe.o$P^o9P=%Xd+&cCL,&&p5alia-e?Jf1mg(B6^U"Vo/coh?9tqPoT'.cTQeh6#o]su00(gEfp=7LY/x#R6KFeB]4&rR>KE%X[iJ1<,*U"B$3+^D]<eEsHPp\gtkN-El$;gpTS1\$C8p^Bjj873e23-&p1r4aLino2:c#x]5.U"C46OGdP')IeJ2sFqDh%'Dc>3?EdKWYH/#N4pYsPH;n]WJ,EiE_T=e$&/8Q1qFZTU"[-'D+2jg/7.Mi<%bM=2LL2LbFCrbC3KN'=F>n>t80p0V18q^nFad2krWb/[U;YwU"Fi\/+LiR>%,No+De%X_<ES4]fa2-rLn<Zl+<D1(ME$nGY,ps9A2P.0x.#sVQWXiU"MZj^ZKQ/O,A-DVW9tT(;G_9Z=nsc'R'5&3FXfgn.7:dUCCL8zf-oB3<%\32KW4bU"9q+bK9saA\CXb;*fEP(AHP=^eWq*-6[>V[uV\uNnFfnlR[YM%<F62>&v(qKJ4tqU"JI<7\-4=:UiRW/'QL[w2WhhZ1vaKH&m.I\2&])CUr?k/Ch:$H:n=d)j90IU^K^iU"SOD:F\B0COx-25s<B*-m_5+k?[q:#Nh[l,j9hZ;ZYmJ.;8?#>84UiFk:S0p0R9dU"/e(gkO70cHMSgW?1[FDvx6z*R5\#.RkbnnZ2tTrd:d5ipFB,tqXTWuWWUSuSRRVU"QLdCIj/EJteIb?M?dpY#F2=kb-jCd'.qC3mBe5\pFAF[zJRhxT+A[ISY[EU8hVPU"2DE<n$$kbuw<P8$PX0f7KItb)h7,%AEnB:fF]lr1y\ouhJPK\*-G5+U\]TeSFtjU"]2jJmCU'Gm3X.RsAe3fA%s+zgzrURC'wQ5DEzE\u:9gQ&O.pbu-ESsu?_SskIFqU"TNS',*h-),X#Viq:s$3V6*v,Cu7%Iv3A]#Z^dTkbJRgD%PImUavgY8k-HQ%XNOfU"w2erP?LOSmY23^$1_A8/h3r1#Cj%C>5+w%B3C2KVSfVotUg.6eYUF:NVjEi1d-*U"TOjHUWt64RTd+4T]4=#r7A08K.9r;;3U^TPS.XTP'4GR,9?=E+/r&p<LIi$9nNtU"0.u27/7l33ySW/FOfMffefWPC?[MML>J;^uR#d1?G]7:2u>laRVcFr=lbG5U;r%U"nH]\V>jR3,t-uX/B099&EmvP'8*o9tH:;;_,OKQg^.H_M2B9u/ErG7l,euVsb,FU"^OZVMD1tY'r_woxILGm#l:o[0^D5+Hn1ru8JY::NphP#Gu+k+Ma=8F;Ymf,Io]nU"9#ormJtsNV,AD#_BE+D.<=FQ/Pe&g;fePo0rK?u[ssO$Oes08:WcN*W91X.5qs8U"X2?R;fM?o\QtS&joBxkD1V#n.%-Rs,%EZ(S^06Jmp^=A?hZ7k2LSfbl-)TY\Y/4U"kt^3V89G)m#*(+vT=t]s]P_vxs:i8>p+s,58<M=nLaEF[,xMx'm./0GzYq#iZaIU":6?fqih+tAP?V_ufbppnXx4tr4J44DJW;_rH;WRP=g>>'&STTRST&=9eJO<2e%%U"\Bn[LK>_PhH,vfGXgE5'&MEI)kbD=luU>67P*<8W>b6w6P\Upju^WBE*K-f(9V5U"=/a:4tTIT2nIiS6FB9l*RlW5/I0KLF:F'g2*:T\%T_5g8XOuZqJV&D^rKzQRe[4U"]]q9%/B^<+JbjJW'uouJ=V:n=cFeGrmB=17*9eC&Db=+m'Xe_)Su/]ogqExDb+0U"0QaUme0-6,h7Su&u%,eiTHNOCuTAjpP*M%^^z(PcVEe#b)'g&p[a]?BX*EL7G^bU"w8'I>/K\=BXX62Bb_&yTJYlg;5AIA.s0HwbAQk,+n\SAVPda:=Zb&Ff*\<rKF['U"jM8>2D-D[2j%U7VNtXWC6S&TCJutTWOuBBfLA0Yyj5mWm9meK6_9i2U>9JcT+tjU"oZ=Tom)$O^g;<G;<U#s-ESP)P7_sm^[*FG<V3GH0<,>k;h;(2>=<\3pDjY7A:xXU"uT,1-N3=pYL*YYwGz2F2-VATAAcyx]i]D1Eeo#=W\8lA,P(2PgcWti\VJ2PEoA&U"Y'Ba:kQ6P9.c>2,_I7q;g/oQw8(eFn1s6YJ<Z/a3g2K?REt-tguq_cs1vJoo3fJU"2Y=UjK#v0Y^3R?uli:\Q4\qT'tQb7/RbOi)MnP0]GV75/J$*#9dPDp/Z0Zpbj4$U"TnJ)$WgCV_H343y_1Bt;)Ml=6:AZ4H9rbFQTI<<fe\%[[E9lpd_)^%X3=);ZE.JU"l=L<[h<3jBH5(0Ht(J4j4hWZl+4?M?V<U.p+h1/czB-3n/O6:&[#V'W]TMdIvw[U"QmY:IlvoeXY.GBT-Wl$Z>xXCjbLTPDG*/e'f=='u=<K%G5X*_ZqAGxmlO<*^jufU"?K1DCZfL':>>)&^FdVc2b8DN.tJkJ3lfH&nzE6$qFf40lB\hMAH<8k;06OGoWCFU")S3vm#&0.u,>w/u0/-:q:;6RQUR-2tn+ixZ*nW.q\,ROWa^0y[-oL$hkCc,CISiU"U2qOQ/ssVg/uV'/4Zf7\]uh67XYNxG+_Jn(gBjI5WnqeE,ik):g25PnV\z\Z0mdU"A+7O:^iWBdN=Os&HZ\VasV8eb^>l1=Z43/H$p_2:U1<^>#;6(i0ioFni]3q_#0iU",72[0D^;;DswQB%X47_7_\3[uucja[ruv8WA=dd+3feMpYC+Z;k(9FnQw4VjZlVU"JAjVG58Zuo^jt^$B>qnNuoQodZ$,T-%[>z9:WHDH27_tuNYW1xP9Y[fd/Y>('4iU",F^Br#Nwwtdh:I-:=fj.Zev7e'?NM1=KigJnb7Au,R9&5tQrhN:Wwj^\s;O8gGtU"39ZlWTOpS4Ie,%XYVfV8<F=fQve1dT?pV^f4&c0E6S^'X#\kOA+n(m9M\X')C)PU";SR%Qm54ULjB&tN3Rfug747?ql0t.\lXElrr37iSk-5ltkNxu$lFb$o7^bp3Mv$U"fXcm(sS7vjoD4pdS]*UgKBlwPbF<Mw)/(90TY3d/7>SY$C];m1tMwb#>.xndlxtU"gwlk0Nwp[^bxZcEK8*^rk\%+GIup&G>fT:KCuCkzJwLf+>7lfj;.n/H%,s.n&3:U"Q*F]FwMyqC)k((C+6*sLBey$8JNwRrGa5F4HZcQdJA<CR(/+aIe4y4Aj1Yb.'*aU"#lLMTvu^Rqs1TNI]pdL4vQqL^N,M3=-E&o\-dQ\v0;^Nvd?868ciT=%LQGkfnW7U"L1KHuLtNZtrtjGX(hS+MAU-I%z$tn5BIN:%,6eH)W5C08b)CBx(a-uxwpxrvoxkU"Y^8xLs:<b[$.g_l<.s;*eG)sG/M?(dF>kLY+=#<)#nVa,Vckw;2JQpk_ivg$2NSU"yR^/3Mj%Enl7,d^1e8eA>qR)Xodr5b*UVQa/c]%G0]ea1<K\[W5C8dxCHWIOj0NU"l;Q$A-$NjaSg4't%Dl#Wpf$fpDMv#rXNswW\hV?W4rR1o,$45u4835:%$FQu6v^U"tg4&n7lxZf8>Nt/xRe+<t3:/P1kwN9M*d\h]U.OP7]-y$gS[<TzMjFF>Txru,ZxU"wpNqv68vQwPP6-:O>+MJo^)1JL_d93N]eP3^-7$O#rcmRnH;'3=r;+l#P?$1t6iU"E>9cl')&,?p>1N0pcI:6c5ewj^w9^:b_<++&9FnGC/7.02goIxbUCy^FmBq5'f]U"kHL:-V1CUf>NS,wH>mS\,^ubt8unQB48lxi0S+w,F9s=4H$V6vTr$NKAx<rfhCpU"CMuTMf.NMQX\%yI%3uX7A)W?Q>$\eZ%2B/tM-tq;P'wCnmSwnu8xtxowdx$qNMxU"k*Fo$-UNgJDnb)(1(53+Q2jH/KWNu>+U0KlR#IYFN_qsl#$$Y9FR;xEPV1uv3ZDU"ou&eg$0FG?E;oeT]3lmGhmQ'IwRc?hl':gZ-G+Smw*Wqs^$6[Ql4R1$yXm;rwmeU"L**%#%1MqIWX;=fs4h'(ohC8rrj>8xNw^.N-wDxKWtlZCK*_1Jn=lDru1,sT\ndU"cwubD(8?wuNiq$4*942+Emh>\I6iR;Y+h9VlZ-kqAw1,E-UsfX66scxw$BhDtv_U"x4+7-\['G.K2L;GlKb16HQz1%E+y2sRwZB$pC&7\wF$lPb3wGY84Vp1W?f_m6h7U"SL_tP,d?/rG%[#Cgq2Vs+EMpMJD;rFdqew2>^O=uSVc&(bWI6N+53>#AE=cV&(TU"fWQF)RSzoi]oquq[o<qFNr^f$DNvcfPDhj_dPN+CG;PZ/V6kmt$<htNsobiT.NtU"<$f(KWF),-%$I$,O[KI,p54Vol,WC6=b<GV;w6hCOC99DbE5Ap6T>TW(RnS]G:YU"wX;g6G=q;Xbn9[BxC:icBxSHZ5+q.=$l<>GIr33ZtD2^frc&D+uvDQBrG)iTg55U"U/UYf>XlJ4eR[2k*lPd(cDNE)fLcfslf/wMo&%fhZn$)o][^nhg_d>Ahp.nT(]HU"qsBHl>YRaf&tNrkTtf8v\1D.n3uLn#8WeQ)^RRv5UcB1bufDdNqumwD8>Mxk^;JU"B9G]3'e%M)xufYD?,r<,Z,Pu?(iguwwos5A0m22JHkJ2<-yeNSfscVdrXR]=as<U"<+uBI/^SI9Tqy^qV*o*4DD;u/$X3h0\2U)'E:='8bj):x[&:LZLMwy[J9B9=VgdU"YJVAZRgfoJ77G8maQI]EJX/q$:GRGIcrcFRH0AbK.-A5en#6=lgE.iK^qEI$44uU"$aLXtMwr$aDgsPZlfV&pdMrlK;nIg[eA4ktCt^pXTXVMQl^fnT7>6xBNN]x90INU"/kaWG*.^FIKq_%56bK1aVN'vRE_QiJF]t5]5MvR^s.;6h>5y.VA(cyQvZ>?$DJGU"IgMrvgQ=?/#-5i>%Y05;.B,/yt;+ZJP*B-*_PY)B[DG*>RTk&;lT%V<0%_,/)2xU"F<\Nu9SVjw8Ks<t4bO;iVR79i:;,O,3\D1O8jwABikYX$lr'?YtSc]Zu4h8x;KLU"/$tJtmrmtdusuDPDE+h2[dlsg.xZsfP>uh7wgqj^dS5-6-<+IVt_PRj;LPKCoJhU"JJD*9TCFL'vA7t:jnijHV5Qw3*i49Vd<Tg]CA%M?$^'o(lwM<$sA.Xuj/S#:Km\U"BcZ#d\kJS';p_un9aH/=<sk?$=e%i\+$M#YV3)+nOmO9W)9g*?Y_7U-,6?-eWC=U"c8+H%Ff,NQ=VfoqNu?lXbJKSpBT%M6BLNqH#viHgZXGRvDXLulDphY>XWLll^n8U"?xoHDmf\5j44diBl-tbRb96$2'1Gg%KeG>e0LfmkeKqT]Bv^/WFgWz3pZ8OmOeRU"[9XgUp#EVok)r=9fme+O4'k)M2p?[rgA'IV>I>_0^ka?1')^qDi0<nZtGNM)a1GU"pUBT6'\Gf:etJ%]B#zT4gc=VV/8/R8u3qM1<5G_>LOAkr([e(kAav*MXG<HtIlrU"g?w<#t7t4pDtNtvDmtdviov4Y+?qb<I]02baPp'?A5E>7]'(Ts\QdrS':2z'q4kU"VqWVE4N9qY4b+cJl[dY5,[,lG_1q5&TlaAt&*9JQ:.$T/A7<4.Te;=njR^Xx\VeU"eG*7j8Y6A5/l,bf:'_/^/725;\8rv*%Vx(TG5Q&b=g5YU[[:jJs1O^l\wee.+f+U"Ry3)Y2/-ARUm&j9$pk[3\x'VB1$?dLp4oQawicgoDx?vdHd?vm\4WXMwGSF[h0)U"kEjJATXUuVkn%fFE>RJpr_f+H$UR6DC'l^kio+sZbX3Km-)XW,vxlBrcknaPZh3U"l5;O_:8-MgD4fU<t(nDn'HDfn;f&BBRD2*i+QwO[3;1aa2Ov*+^*ndyTO3\k10;U"Q]q'FyIrkvKO^*)h,,=COjb4<n/OGOjfu<I6Fx?X0ckYin4=MN_C=q=WNmukctxU"cwPd7uur\fV=YrSQrkG*/<>>/'akbS1jgLe\otD4o5vX(.k]Ib-7hw'TC#uL8E.U"tbfu)i.[eqgl^V8$$[BgI*E&2K#4A52+R=(i;A*NU&S,wU2*_p\#?/BFRjFfj&:U"l$WQiiBKk*mu6K1Vjdn9L5&NA(YRcSuA#FlV926+8CnG*O9/hTO+cE9+%FdQ#MiU"D.JnV0[\q_Jumg\LuL<VV<LvHtZPTR7(Y,CBDbP^uXr3rC*M<lyMo\G[j6qgXBBU"_nS'X8)C3eY\o)UT&Eg9=,8L/hKyD*J&:Y*q'ptV-aY$,E?C<JcT>a[NIEjKTT]U"=3[R3L;nnk;>mpD<0*7zpsF9/':_;FRmO5uj:7M%R[IRCU6t#P]c,.d2lt$,*>DU"Yf>rE;PIh(5JDA9:t=9FmUN^^C#fI3,DZO=S0fVtID&(7,nuI2vucNPDgC[os)JU"Q)a.6KN;WTeJ/Ya7:f6PMQw0P5w/>?xiYr%_Brl;j^6U.nD]bWT;M9R]Ld?Ex\&U"6MaumnndhD%,xC?uo>Pk=tLp<#ptn7cAH3PQ7F$OY5(*+p7zY&z:Wn):=dKD2nJU"n4L2r6ZmCTBpJ5u]Lp*T&?eqQ>.gDv9xc#1)D#HeafcH.4y9&?Z=jTX5mWm?5MFEND SUBSUB V3U";6<G],3\F9fV,M45V2]'YAXKSb%,zX%$au6Fo0I(?J%1\?>/q+]Q6LI&KcB2f4nU";Nro.h61+7V]C-_BT$3.at6(nK96r_Fd,L3YSB(yx<*O?ulZ6/86b/CVFB;MRV)U"H',_D:Be,lj9H=\HnbXo/rL+[qxlvajMq#S%y<?=O$*R>29VVeF;+kc1LbW?)NuU"ot4j?PEY82BW.)'J5hO_i=(6(McI&]:p5(4TDD\EW5K(bMjOC%/[hj'1t68q3-HU",2O*.qA#Qr/QyISODV4,>rIgNen]?a2Fu*3.8*E=KWuj9**9.<=JJD7C,]-QS]aU"Zq(VKtaqw[,VhDl3vFaF3-9\(CIG,>1QerL7ST9zqB&^VI84Lk6Vnx<I]y*r*KyU"Go_Up;(-B-+e_v[%26-f]P[lw'DcO]No/2%%FrDYhw?K[aW*fw2v9KVk5d,o_-]U"4(y84aLZh%L>l2=jOIw5uri'[fD5k7Kd)1M$Zy1N,#'26nZIxBKRd9rpJvJC=;=U"'p?hHa*ARQsR+-^J=Mqq*;MJt,%1Wa;ODpZ^qJVx.t,n*eupgLF?BPhzc.RQilTU"XJ.?pc.8l,[s>%kbo5'Tq10;7,jEE9HGnf4cdxJx_rxDQ9eHbD<Al3uRPzp'&S6U"fKP&gSfNiUk*6aoAWR&2R2ZdzmRvMv(IXwtg2b=(cLBW#Zi;An+A66:1zp%6iCLU"m\3qPRGn95I-Y&aRefU%7>H6J74?Vm;INhRrUfo(82n0We^ayMnL<:A4AD^I*_tU"8]bt*tJ)CA;#&Hf)t>(Q3'8J\(Lt.Hn\i$O#&I2lxn'-&[\3DXOjQwt3t>U:1RJU"8%4hA:BuzT?OBcpg2euzWAKl&tM4\^.pI>T\'\<&1Ft]=IF#ga]p>dTJ6,h4&F1U"\h'Suh,(BY<E/OZ&wGlJ>D-%YT1hf(bepRzj.z#c#rd[uD#Z3.xXRj=x)6mNO3^U"p+8Ob-,6K?oAl;Q?h-LUJ/&GNFYTR6]a5kfIM1+RMs>^Op$OuZp&*\(R(zLDcT.U"QNqX32NSw\cJhV\Lj?Y.#[111vrU%ECh8)c]y%%PCiDS.d?8Hx:gGDJYDHmaQBrU";c+mZ9##+3SE4okFukUjVX*RE9D..Z2P4'i'a]OAaiRORhuUg+9:vB7IiWaBwA0U"Ye1$3x/;/15UeJ/p=o&s&goka%N2Mktk<=4=8V)YU;T]:1*MN;8P9f^6%lEO=-oU"3^7K6UCCgKBs-C%_N#cjq+V%kYKvQiMc%l,OwfBP3*tQn?v4SpQk';ZqDXhZk\NU"R:<Bb-oL4DUdLqyO#1e0k(/8QqiuaMJXghK$98#apYnfj]gjK5mRfUe)-SSqfw[U"4wW?<YiWho#XIOoaY6iHb(J38#o?S>D1ukj[dM.%JY/9^KQ*;U1_nuG9K%Z*jXUU"A;NE[o[?e4NI3ztU%WnDa;UnNH^ub^^W2)9X[aH1Y^bUR.b#yXXvVV'l]MDUFQaU"oMp];7>y'BgkzqLt$aPA773-7Yd3WmCY#qStX/4K0uwZ\#Utn4$/:#7IiT]xBEMU"&fZ=xH1wmc,AU&hA8<BDV,fBDB4jZ2s'z*E2zS7]L*KC.q':eu>#KcBLm.T;MB^U"sTlT,#Ds44E>](^q)h/'CYZdqZ:MNZK,s]C^=ZZ\8MD2e<OuKvWcG)n+vSB3Y6lU"BA+o-G-]+VhQdsuwl5<D_F;?'n$U%CEhuefhhON>\Y*j7eodRyupEJJ$G4Bk4Z2U"rl5BOwTk^5(/(Er\Wt6#4DdLYSv,CA9C$Uku9X)<'-CA^'r3ZG/6y'Ww#<g&;-aU";0AyppR*EoK5bM_iR.[Gf8k-fFiL?qZcF#80IdV]c/iI*f3YIuG.Y4:2afO1Tb^U"[QDk829EeIPwWCK0=wdKr2^S=erCtk-4L3nAY._6c=3'qk?g40ZIq<D7gXTNbYyU"OpWGnfHP:MR\HX-3TR^cnG8*v_y]:,0jqab%c7eEc3Kf$4He.CSG=bOa0JZN#gDU")l.vb2*uL\V_,(KmCZR$H.lTuVnU$y;=#;ahv(;zMSfi84L8#rRhsDQLUZF\$<1U"[Hjk,z*L;$Y9w,V->ByA0^fW+>]3V$poyVChpHXm(4Flo[7QMF/f)M^;Hm7Ku)XU",_iv^FOg]8UES+7TNaI*Un0O.<ZCh[0[4DVcO-a3(Uzc_0u\i)?Y1<v_3hiU;h\U"xe,9(^(jt5IXW-L#tt\n_&R+tm,2jj,w>&SKw/_(1*KCw#\+.+\taLCfY*?[#6SU"\FCqsXKvJKB2-(,(7T'd.lvQIRr'N-Jm#rzh^^fBh?wQ,%q5:(fY)#S1kY]>,ISU"yf#B_/+4t07c(FW7lS^8EQS6f4n<2M],lMLZTSw#L[L(YFWh4K^H(?7,,>Jte+AU"&go+9Y,ie)Lro2([Be#]6,VDs$S2B[[dUOXsY^(gNNJ\X4>fB'g$[rGYT*M33XeU"_*B.'ip5seCsm(m7iEH;DW9hJH4z>RO\OFL+&i2'$.=Q&f59BqE^:&n)&rYpYBLU"$_LZsMXf%8z_5&D($LP#;EeJ7lrG?:%*9\Iy=0D,\7D-M\Gb(o8hH:sI\[a:>7EU"S8*)d;<[ukX*9>VjUi(D'Ty^YrtdxVHX(Z)EFeEO0np7A-5RdaesI>xBYEnHj:IU"ZT5;t\+VSH>w91$[cuitA]NH3B*N349;cwHErW\0DB*9+_68-XYqq74w:bt*wYEU">w8JkebS<T>am3[f9iV]K*LEdw0pD?r1*T2:i0^gIB,/bV??i%Vr?vED\/zY0YSU"yK^_-i>FJ3OdSg6I6FT0[C=uYkL>JMgG1,^6>BNf9.2badO1v7S#p*E3t#hFdj\U"(.8$RJhG6]Fjbc]>)l+&[m/5i\WR.zy4x7?kBW4lSjapbLuidN4<<K9Ua<#^Y]xU"5*M+tMw-?+T^>4<I>VfpNY]pG]EB0H#eO^+D\2q3^;&Kg*/Zd4Mb?Q9poad2e90U"lQT<(BCouU:CNdoZ94AkVM7kic]d&2&k#W8APPxQmb;00A2BSk=Dus>xAZ;g)f/U"1qg/*&#ebS2ow2*CiB[N//xV:QOWH+%p5suhf6WaPIPYYJ,0&DKK(tYUvTz(LKgU"d;^K7PGal^997JYm3tbv4p*Of9[[21iO?34j'MaL%sx;(]ZRT6Gl$+'CQ\o(dC\U"4^p01TV&iFy'>U4Fu=pL&dFA%pEei?5rR;aC#l74:Tb6*$UYn)9s'/4$=egJDysU"OvpkIM-muJD=SG5'T20-p(9ApiSMFI58#KtO4&kgiw>a)?c.<lS;Z=LVJs/J5VEU"LAK5&KJrto9RdH5p<GsQ.^*tAdGW0*3^a[DeKWEeouC*MDm-+9V2Lw-G0+(T/Y$U"YeuRO/G2ZR_b,Sr=#w[ro+xt/^UIbBh]Ym28T(L>ZT,j0Q)K=^m>Z>Ju-*5DiyIU"X(grNM)5OWkZjT*KEU<8y#>kbG&jU3h-0qKTufo+-id1kR8Zxc$pL00X3^L'4]cU"C,a?c)KL];<ch8&Ld+u)ooXr5Hnsgr#JvZcNd&0(nVns3ppX__]\qi]MeT)(jTlU"9]T^TtD=6RAV4*O-f9VEJN_Y':;ZwuLm\^'k(cgB6Po(/Rp10*TWcs2RUh/>NRvU"HCKDnVZE:w$+);Dv'$*yMA+/[Rj77f-O0-)(X,<Tu:ruZ%Qp^DSk:SnOo>'t)%9U"Kz%E9G$6Y+o6UB+1vUr$+K]ehT0NI1tbg+JKhnD1qK%n3m+i[mJ#aioJl&q#HB8U"J1gY0G>8mR_R*#_vpz+7liM=FE,kJ,z'd$Af5*UjdMLGIIsou[$o[\1milZnGeMU"pK=\gH&F[6*T%g?,TJbjf02brG_pW3z^sL0r)+%.\BDuF_<B,AP<v#;xU,.MP9&U"Y*,N7IZ*XU%205J(n7N%<I1DUNQ_324B-G%%nyB)s[V/h3q#N]lkuwq4l%8j6fgU"/a83PFV)53gT<i,c7E,pqsSv[6*b;[Ya<-ndNPK<XmW$<7r\S,e$9^17QVNh7tSU"hJ6-7afwwqnsT)mB,9b%=QgBLd5ktplj$e<[g$?sz1+V1av<)sBJ#F.$;\<=?3XU"Cr'elFtC*TaIQud3o?5S;h/ayd[opO7S%TWZZ(*B0m$hR,Z<?[_(k0QBVl%<X:vU"XDXmXeNHH06E[(xA_^Nf+^Wr'qX^=HeQo_2*R5LfPhHhi6D;?u>;=%RRh^pxm_/U"5z/LLO4lE4?vK+/shohn=/m1D+xXWVVA=LuMox8udrX'Bm6TV,59CiJ;6jFX_sjU"WStz36a5&'e(JV4q:<gG,Ai%%ZF0BgaZO*i0GCq9nYEZqI9U.1j+0%NqGJZRijdU"x9SuEA_$<E7wjjMr#7IG0Os+Z8$q(Z(TG7r(SO<[wY[4TvFX)aDo_fsIkQmsYTKU"YH,F[5:W<#2hn4x=-%<(;t=$1PKai+L*THz(8sG7J*7-bc.bcLmjaL/LJlY+x_xU"ur<5;jYWeWOrQhcL_++frAI]lo0n;H&DjHX;'vbqck+0Q25lulNbrl5J;.;)Q%mU"7wpJ&D-aIMREX><#E*5jF*1iQ/xLlY&56dJud>D?N/d2rgud'6$IXf[C5J%q&O9U"VsOA#<).(iP[L/8Qd3YruWmZkRQ#b2+V]%.tDfWq*l'$/0tHLQRKEw9zJ\PjV>?U"Pdpt'hDdIM]p*uh8*cqhiiQr?M[hteW^c0KJ[4%J%c2OQ'P4tYTPsw&'_.yZF/JU"\e9Tf<tr\JJuBRq)TOyvEe5O9jp0k9#U0XeuhwWQQJ;GXaR?qwOA/u%WidmuA(bU"8kbD]KX9PF3HcbEVMh_EaQl#BdmAV)9F_Qv/8v-GHgym7V'hW1%R-UQ&&7.6\1SU"(F2VC:h^B=o\]YG>qqV&ejRG/_cKQR)a-Bbmcb7x:5*3fL6uu8MU59yJ]sa8dYMU"N^m%B&P/d_r^l2[n,1AfLDC$$&b)(bQq(YteI^disOulJJoQ1L7xQ<>A9M8a0q.U"a4P/RIGvdMiQ[*=B-B%1u%3LIrG=#B)Ztb(Np>9jM^<8,f1.QUva#mp4_;)%%:#U"M^=n/L.fy%7&z2Z+mF,J*Jr<h;:J#fw)dzgfqvltEHNiOMXo<A'n4Y>P+lhdadbU"cUaW7#Hze29,0JwI5d-)).'_%]OTehYg:n)id+Fv=%+XW+lX*P9/oeJXh(pLrNjU"#G;I<f3^iTMY5)m.<I(?%)ghMNib3pO*c.xF&YmT705F'_Y=$dcnS>^6,QaYj0QU"Yxl$_l91pAcmRv.E1P)bR<aqI?Hs,6)S:J0D4,tUV2aS7C:Pz+9-0G0s5]#/a7\U"(1>MtHIEhM[8sGjR[zFrtv#p:4p<+rTDDMCziMvCV.r+k#B)j#gai_ujT'2W6z9U"2C,VUa5,)5Ss;\AII01]U5Zf1]PjHaeestFdB.R:NS]pNapEw.9'NRNrYGX[RI-U"Ncc'[>>f6(Fwh03B%m%maL'q+-MFmad<-j.qc9)n_wBj5biT4>mJf9.>C<OEeAVU"sCh'dr=+[+PEB>'Ugf0n*&.#ia'OD;:Au7Nu]hNouv\\\Kt%edi_op0a_\dIXY6U"2+Twf7mFJ*YCSzJd>gQf+gAwwoCGVlvs29ihStJl\^J7cnuU7kB5i&9u^>GMan-U";<;*CXAxs?.\3)#+&naI0)4(lJvW%g?\;))L,HmN+=eIJ8\D2skhVbW^lw/iIuOU">,FV-8%Qf.BHrWoHDn8-1J--<&2$.-N\#>*kJJet6ke-dT(S87#r[zV\<tVp4;PU"To,&z$#+K&X/p%p<Ew;d1KH<0FH-u'rt+B5TELko/l-[2zXK>(7QR<#Z^aq&RZsU"Em3Eh>u\ri\H7k.&eEe'>:QQ;&T+nH#VvxohrG'C?Z4^YV753#.&ye+rfMa:9:5U",&:]f3><TDpx-E*+3G*=&O^y'O02g;9sX&8Cuc^N#*>#uJ,,FSBT6^j/^nTe\h9U"*N5cVHK5NGNh6M4+/]5<-xM5#Mu9en+NPN^Hbh_LP'6<n,'#%.CVH85b];5;9yWU"CZ_DVAC]*SI%s_dc-TSY&DWQyeUk-6Tgu);Nf^;%/L#QSL.8Kb%#uh:l/YllQQ<U"av<bTVs[<#MMsAkEqW;=SA21uju7['vTr>]<R?Ee6*E\y*f#^n'Br:^3Z*<s[$>U"*H.h&(F28zE%FsrJVnqXA>sFN&FCPA_7ao+Mvw;$^k>R1pr2-'<m#nQ;Z4)grF\U"^+[)5):YC%Ash::IK]dR[L;#PXYrG^/T)]QvFHMbU*\1Z-7.'dxJ2/dtn^>A(4DU"mOvaT&]\p:)q5I]-RPdj24$$f?VidGwkxy&fKM9pk#a.pf3[*pVyxiB6AswhE+xU"hmpz^In4iOM*_nlF?\*Y8^-gb9a]7SgGlV8Ma=4gU.lNRoRwmo>Z:fSy/s1-Vn^U"gMt8[X0)K'w+)$h1)(tbMIE53)+sj/q%,&=]^?LO'1S*rR:.K^Kld7FYdI5FFIxU"/9[iZc:f44N>:[;^rC5xhDB)P:41HVrUwLhS^W#uI-^CRPW&xVcQL,Fa-RdAtntU";s-*U%p&X3&mHk#x^q6DfupFGZrV=mq<Gm^v#(F0)U9*S7^l64NxHmGZw,3(m_gU"x.d5N(yXZXo/9$MZ6dte*V*0NY^;,8/vjbp8:]-<$x3$5+[ov'%finq*&I:P?<_U"5OQU5zLJqG-e>>uMGOYn\Hs7^-%CB:d>8*alheg?G/\'gEBkR$W1Hq#/eW<Xf27U"JMi83y>tTfiwo?Pf2)FDT7FA-]5Z=6)1m,sTqNHTf<eJ_n3%KRe1y8#=biZ2J#gU"nPG.2qFExiWiGdiGs)u+'e&X'=Lmm-I;+%x8qPwkRbZgFl2VR^P2[&m8aVG1TN-U":Z*1grkZV%de*iP^HanF?SI3gz(s<-5p8yvYLd[4Qb#62b=M^Fj#'e=IN_8mL*dU"D_u$Auv'^'T0.-TSokZuhbnS)$^n;U420K*JdRk^$;B3:1.)s\;Lzqjws-+;LtKU"w$^Y:dQ,M<6kdbr61N9l?Z&vLV<tVp\O18AT+5qVD5;lrA,yp*,V$zn13:4>&b(U"Za\]euD?oabbtDi5)#kipU<=af0:=h,IJM1k<Xq)VN<WEXUgGKa[*I=2Y5ZdFJ1U"l7S,WDk><H>q4a\pe%[I9prXr$K_;./J.oEb%1)2=ij(V417*e*R01*j3HID*ERU"$6L%nc<boe4w9/'ijN7jSKV5a>LD;tK]syZYuuwwwvW.R=\9%DdHb:E1cWSkjz;U"b8\%CSnF2#D<:K],/_G/l$l1[GzzJp?Q3_/hv+>+1?WG0IY=ZL=K\i$Qa<7[GY/U"q=KL^)odZvgYoXh58PPruO==PP+DRCKiBrsLO*xA7-,[L#.+.Q9Q<9-Vu]HZ')RU"ySz]igE;10v4kP$j8HMeM?8^I'xw1B0gc^tlWcp8c#M-O:>s5X6?rC']y&QNI_VU".Y;NP>P<Wp^AhRuCH_0EAwMQ%bt3)YkshP6F-JC5\hQ:,o:s9/XQKQ>^Y*g,$O7U"[d_1rvuJ1f7H/;&#W_n[L>(Thr$h$x/4(:Nq7LImf/]>PnI1_9FxZH/6O0/]rQUU"sb[^RsA%YkGHzP(;v=N3j2(nt)sX$3+K-b3t20Zui2V\LY1[TdKuT<uD4tt<#B#U"G&Ff%OhiqwmhhuF_.A[1-&.SOMbhmbxp#k?%/abE(ZN_12YqWeJ(F7cb^>hF.SUU"=J^q,:-9jSLwPT=k6p8iw<?+q:VarT;$\6rJCYPi$0/R]VlM[5bLdi>0e=$MzPYU"_Y?f;.I-1kJd<V=?(TF^K<-zi[_KlH,3^(9LAaE%&uDzCIw7edapZQ[4p\O*mRiU"E#09hVte8B-WQ88NN\8#?f/ohD:=r?w^E%o[2]I5$q51*GN)XB+Fddxpm04IDqMU"$XkHp5p[%^L0)le^R<<cku5t*_G>ol6R9O4V+'<[#Z9+IQG[lmTu)VMm,l-5-W-U"tVJXdv+^*bk4v]5b^yfX?<WV]R$=q(SK$.AJcXlV,BYyvn/<bVTfUHbu)dd<kG,U"pQ#PKC^rLlR9MN;B]cG#V5DCho[:b&p4ps4$/Br]\&fCxZ'2P,suYQ^15%qO$'KU"n\vnHUpf:sJ^3)iOr#,&gRMgL6FKKU_CXP99jgi[LKgm9Xw=K;FZcZp7SYc2]6\U"CnslLNoue[sVuvf44Wp&$FuTr1$P1JUwAVg,[J$faFn$y>-ijmo=\&egR$(2KVeU"=TN'uPT5gM;d%_i*EtfdOI5K\%jXmXa^Yp,HYk1L_)*410\wVpO\<dZ4ttVI8,EU"l%-IUpCHb'2p4L#uCNF0ZiRkzcl5;D*BYo$6WY#2275s?B%,GB42I(>]_owAFbAU"51-H/v_4j?&56V%KO;EMc37p]6DFuJNvvHtp*Ks4h/$6Dw7W0mHq'sr;9D+_fs?U"_4lYf$q/?=&aN?&+=VesIhQalkyS;R5dv2%a_e+Cbn%yQf5w+3Cq8^qLk><R[;>U"]p#;L=W1g.=Cq+0^n<=15,bs:y4[ihqJEM<:aF9iQ6-lk.u2J%+%Z1qxPS>okv;U"y50%FWhj+DLR-[Pp1i%-&NeP*1GMc1Y91[o;_Cuh7F#plqjzH>nWXbTWT$z$b7aU"DJKkakL)0a6AH4)EfV3rx+RwYD*MGC;7q,\:>e&kO>+_qbiP.7lr?4k#_X/PY/GU"],K89=X2l<9s6'k]n]dz:2IrkcOZQn4FF$p*#OptdBx)9YINb[xjVI59tK[b,L,U"=jnNj,x/x/,'a6A-F-_bZeQ+qp=lZ1cXGr[^)?a/WTg9N*:De'mf5N%ZN\Z;[a>U"TOr4bDttv(7t3D.><dlljlZTdf/:cum1#aBfcN]8vb\svTh*^(gAGL%n8tt<V>3U"ja77Cp5FuW04Taa,Juo%IRBk1.,HpfD&#mD,q5b766%Pf$+[r-K1L\;:&h/g%^gU"u*B[bljKuo?Zc5-6oEFE_ANyxu?Q,>9>*tmbg:Wbb&G_>4aX-QnN5V<=>\skY$)U"$wb$Cf?Fk%6(#_2zz(ZT6BKUWl&^]HTSWr7JsmlF\A6NTm-NWlHPl:QBE?1EWXuU">4g^nC;R7huqg;9XjnF_)5f<<Rl0IIH_Hw6))t2QFPIyR(nnp'lEat5>h=Sh65EU"QcAY:*0Lwa+_fdEi4u[nP(t>XVWo(r)#ewWrH;$w#2Z4(m5tN5F$=xk(JV[d4/pU"O*;#bfo0umw(oHuHtVMGTnX;<(3a2T<%=)8\k6JBO#g,k_,Mjl8$z\ufbb>uFNFU"VNVE]<PblvV:rJ7A1L/Mh7Kg'LfB$7d%IcvsH1-dt[\<<$(*Mi+69dLK_2[N&=DU"(95DM8N458o+A$^ZWej2hP\eG..-N^S^kj4GbcuFdTTQT4dx+Xa9g(r3(&i>vLaU"EZK_2P9Es;X_&;c\H*A7._Pp(JA=\n\[,V.9EZTt81x>i5W\P:='Djv<aaLe+x,U"KY;iyT&YJ;k7MBIEMunockucfRe<qG,$MJJJkW&u,m'h7By#3L76EV-;6bHa6R;U"]RN:^x:RH?HHP0\CSW,joTo57Ag#QUp'/\rf]-FF<+]+fHcr5/vF5AW)eHh7(FgU"i8y<1wr6Dvo?ffv7NZZUhd/z4qP8]TdNNcc#iCs=C54&C75tudo'D&I54.7#d0]U"q3*MUQYpjg$h-:X?cI\NR&GmhXLweG]i'LfLBLuvo_[Qu[AF]-^c4YI1T5PZ^AcU"f4fQIa,Rp4lVfD\gM^WK<I0\8>i)3]$8+R*LsideH(3zOFW_ZveC5kUbvv,Q.-qU"1uP1KU$XI7G.CvV$AP,1HJqBJ0)<maroJbZcLUzlw=A?UU4hk%yr6%)bw\4LJEOU")USR>&5p(HOCz3M(w:7=U4=Epe&KP:FNF+F[G?qq:6Y^tg(PTMZzzz90\P*qOvTU"Vuougl]\[BHF<Lf3F(uQ5MR\lE49$#e&3_K[mDr&.#cd$.7Tugt'RYeN\JKR-Z5U"i;]#p)xdJqcRf&A[ps0qAAS)\a'\f%%C>i3GLluof4288UCFYu=+s/9?X2'AB=YU"B,.^T^.fk_1G-Mk?Ha4&7C=S_.n9g)#D+[)d2qGRRC:gXjv<%cr&%,J7767=?7LU"g4rsr>JU+*[/=L16_sd:SlNVnn]oKc]8rdHY>%EJKK*aEL0I>,sT&$Br_R_$8'QU"H)ph*+PZS2H54(RP.-..gk1mR^k?XqLa+C8f5h&A#HU)%.k8&73y*FZX56H&J\XU"o$tvP+IOp18]x_xi;3cIr+K,o7D$,U/_(slA#V&)O\?B;xjF%nTG;bKii_M[Kn8U"7?7JtEK=I/g,7qY0a_iV-N5U]Qqlh.,.VlU6N1L)OF.iV>bWP;*+\cL9Tw^QGh%U"\>2$68=/HfMlN[<$Dj'sTnQhC$lcTmedEiH4S=1;RUn,6b-mokJ-9x'?'DLZkA3U"[?W13\D3=iA2U%v]N=Zk8WKeD#/CNY;a(HgqoMz%LkCc*_UjC78E>d6q]^?uKl4U"lYpjaD&FICM/5u\CBVKo&YIhI5?DpY=?*n+:qr;jl4zT/F4^4f0\f0Lt^f6Z4,tU">Qg0(F;P5v]()OVDlM>s'Z$Q/0Mp(7g&iOChNwu7K<#+wO-3<o+n(f?/4og-s=JU">s?2((.N(&39^?=<nqjS>EJ$f%r2u3722LB*[DQ&-Nq41q3jHn?JGdASIC3Wu_kU"Zs5+IGd^#^8ICrG]VYI-9=J2Fi[tJQJ,JM/c#+yA+D*p0#v?+(kvTn&e]s>gZXXU"X,tm%$Duf\\fZRR4v3Tr;UYj92CeY<]'n#5s=(f\+JiO=8_>'N=RN]>Q5,6k1=)U"jPZQ'LYpd\Qc-[XuKJY)5^dRUdae#p_<_kbWI][6%%PJ1Ayf\KP\>V[_NUr&.QhU"E)MU:y&D34;LAX0\Ynt;?(A&W\'_[4i)&o5#%48)SMY='/')9JvJwnu<^$Mqe[vU".r=\z2&\3]\5pFT77s)HF]lr1Apg>I0TCi(ebr*TF<Lef\>$ZfZ)jP6j/Q4zYg&U"NA:r]D<ik#&p5g-Z4,LZKN)R;g6vE>b%1&qaqGXB_,W:IB2JnaCymGxTCxJNCO=U"AP4i23xE$*&eP'YFL)LLXU_w7T,&/hR<AAIzrerEWEI+R8EB_pJ6X:1^BI'4>r)U"mZ_G?&^bo,zW9iaj*qTFjml&9IRwS4B\;rkpW9s*YMs$BYx_Rof$X7utst4l0h%U"TrDZ\^-JjM#T'tH]6#bOXEH2qRS1^90F=1wic'c']n>Z:+1f3hJ$J1nk#/UrmlBU"ReH'^TrOJ:<fyHDHbwFI(/*+]JWH50/)Zuvkc_EcutDV6TZvOMQ71)B]F;quaIpU"m/=M-3Ds:W]_O$'rMfadEQ\BySb>]\d1qV0()eq<_&lR:qONU*aBLEq)S)xs9kQU"?=NgC#Cs/G7b?cc\r#$d^(gRvR:AKVDE$XM\B+kv17cYR3T/>M/UUQ[Dq;0'5g-U"6.$P]i#Hx,Wq/N(4,13^Hbd]jJYmZnES\)1J46Hb0>'C/D^Z\*'IAU#%h+o'N_YU"SXS((>isUu*3Ih9TSaIJ;W0qm*4W.ayCfcZ?MI^gig7W[3^3cpe%H.CHX,dr37sU"2<yR*jLhY6;I_3hByH1<#he6FDIpdjyk_klZ;2ZWeOr>-4T#0/H3#<6K1]3Wl<<U"iL]p4H'ZiwO:Q]^/de'b)\(C8kcN)dZmme1.bg,_%Y]pS8==$[Xor,7<K$]T&xaU"Q?S9T92EE9ID6UdU:'Z.NTtghF_MpDH#VLDVTftu/s)OnGEF&?Ur3M0bH,e\k]CU"C7Y5=7AWl(%A_G8x#J#Z1waGIL?$S]l5Jk5ZMhOf'a2Gg&O]b:_UU9.jf9-$w?%U"Wkrw37W9qx1l*?Wd89cAgRdAEE/v<f<K4qeCrDZ\=.\%.&#EG;iJCOMf8t:Po7<U"sHscHOHA;.7KeY(BK;d=k8x6Cj#ygyyYM:Dd/w*TWMA1>SCU.lnl,i?/r.M>.+-U"Y,W]ikU8&_^6VEK(%rMnqhTaWaQ7b=88T]gakEv)*Ljk1oAwo?[he]eU,i%y2ypU"X/Tlqi]ViP>K*Gb<uI0g80Yld)B_ELagPF3o\2sxTJGu^kH2WTiv>N5TCq.+V%:U"9(jzcNn(V$-ZlPl,YBJAyvFNkU'9[uRbbrD9Ss)HA;;r$-LJR^ZH9q,li4Z.:_VU"LDH(I/Wj->W/(vOxoag%NpkBH77Q%5s,(qGX$W'*\eGWujW=m(WRohnr%Mn$blaU"hWZB=Cn*anaket#=A.jv.Vn=PY\XAhU'7FY3&6$jBR#6.muMqYD$]<w00?qEJ\BU"JK^n\;I7(j,#KC*3W/_>l+N*hmsT03CH\L-Op9acHbQ*YUYy&9bU%m%eLRl:Bx3U"VENZB1D?/Au'dgw/Qad%c5i-FtCSA?JWj#6W^;>MAB.,#$(ub4WQ&FSSTgT>a+fU"eqbT+W//=YMV9%D+b3sjm3lW0)i^MM2n03kyDgBLloDFZBsbq)QHg(Uh#>.hV7\U"v]sE36R'dT;jE-hhpc+WeQ?6=>LYhqm#bB4UtbRgf-<Nu7B6IYsugJB>\X6m60nU"i8M([Tj=XZ?'ODy8g#<*/x/'ustT/f([a*sUz'0?Qov3s0Z^j6C7xL-.+xM=d<?U"RsdCNcb9&?N6YjrZNp5ZX'9dgX6/lx&(j;JDTu=Tk]bh'k0ciZc^V[A44b[dYu?U"u$r:Ui)F_pTF-i\qjF9),pZ:Edya+;_HS2Q3PM6)m2.[jp>Vl;Wn1a,]8.\=[L6U"LrC_P.'&Zs]VW7H4VJi9L#QkY6*Twq]kGSFg6K7O=JuG/.T_vR:vZRs8KbBQbRyU"^X3'H(A?.aRNV-I0:KN5E<CY)zJ_1b&hA?eUbz-o;5HpXHr=#.?s#pekH[[G59cU"P,q(p$i18#hwa9VS9x+YTt$hlkl*CkFkFcAYA+R\Mg_ab_SU'2FpR=2M73.rHhsEND SUBSUB V4U"AD=DQXtTmKC#rhbkbLjD?p$2S,wR-9tnLN5-$tops04#h4S##WZb2W?VB;aAZU0U"*/BX9Vy2Rju>%+/k?$n=YrZem];s^9I&$#l+:;6ei>TE);F;VMAt5:Zal(5eJO(U"w-kX'?421kg\?re#A]\,wn\CP+T4osHe<5CG\BZqqwYm.9nYR\'T,%anfah.4=CU"JVS2?2Y)K;]R]Re/'I2F#)U%ege4Hw)G=J6AB=L)M.<,5fI7)DDtMnfV9Ju&\+)U"(tj>Y*U]'%\#RLfDIjkrF/IXn[W;K_#9e%o2GUJtyXH.bhfy-OiTe%bd^$Y*L2)U"]'vSj6vj$7a^U0u3CY-yWB,q+_mqu(ncdG7K?tGqr:CTOq9>uLrlZlDq_f&QWb>U">rYOi2O$*Z6?mkhO.:ERu2U^+eLXY[k%LC*&m+fRp1+>JD970)vq,VCxdDKIfe?U"bs'QsY%ngZmLtHo4z(0+Y8\SKi#8o*.yZ?qahm3KvvvOc6L#-8<X+eSqxuz1e_8U"/X*&M=aErxH#tts&W-;Yec5o_69,$BDQp;p&7zGDMC49o>Gt=VnCvhbEllR+8WfU"wn&u:RRriRT^_a6uS:_V<;1%4f;$jRZ/(OK/iqS1krOoL3lTBDxs.rU$d.P<AnXU"16IR/Pg>n/rjz#'Pv$*=]Y?R:Y,'0v)6L(8Dvy:E++\vT;%WToM_kEvD,KTe12aU"s8H2*4Q9x':+1h[tr+'krmMnulnqkk&a83yPMU&KwwQ8-Op2.Adklj,zYQM-+0=U"paQ&mT9-q-ea[YZYN?zuqe59]HP>F&8fr:j0agvfDr<x)oxm,hV\eT20X?.*[W0U"B.$Een+Cj^4=+6MgHq%/w)P0V:WC22C;Q_HFQm9'6U?i0iqnM1h/O*+yAD42Mq&U"Ba9p7d?<Cx*X,#$1B1iqbj.25P.r$Mg)[\T0USK-Yo-2kkkSBbISVi]]4YrU$aAU"#hoH7JS3rKf&9fu%QT4y#7=yY1pE^65Z+dA:px8s:EN$SdZSp)^Moo&:K50Vj:SU"FNJiub:W(-hZj&Z&Bg>CdDp#f3c5.tlmjlnZ].gZH:s3g<$]#n*A20L;kk9:A/jU"$TStho6QFi=W$%PjFus4,6MCC:g#yZ\470H#>Drr-S_ZB:fh5]v+oU/45^vpG&YU"0^$(7b)z,NRiVDr-/NqLRLbC.'1$%e/u)4GZtzg^Rt0Ed3DKr.rXmCZz?mm%e?IU"?ASCR--W>p*HQf:ZY<i[^9NT^\(-ffP0Wn6%w$bJx4Cg0YjU_tibF%FN_:FaYagU"3lvLn/SuG^_P<r##Xd;9<nI6JCNaEYEFeQ:Dqo_8]88=%Vy52mkqQU\)yY-?'*;U"P6*juFS+9kAj'8]^F?u+/j#fL,^P=H-grW/x;<aTu*ttc+c;-4q':\OTJ0iaMs+U"313q-2w_(_M6EF+fmLf()D818OWY8L+VVyS<o(.36xz6r/KqbH4^$m+8&Ud2xfnU"_R>#-S,tAIHjyltY;TsXF*hZp-M<E[s-TP&Dm63.a1ASuErCy^$tlAN=SuEAU59U"T%p/aQ*:tTsw:_0\zQ(=KOoRjYjx5RMJfC#ji1Xx7dtg1%%IIUhvsN35gT;Mx1qU"B[MqLDH58x#R*S;FBJy9H(SLW(]<rLNdVJ##NRBa#M-r0Q38&+uTOww;p9?^1hxU"y-q%n,0Of8K;eJO^=%Z/XQtV_f9AW--#9Kzj:a#.=HNJ3,88Yw&z\zp7AZ4aO;(U".Y:L\e+PSO5)]6I[?a0]Ag0]^GDO-16GO5aPe=XaSi$RLRxj:XVj\E44cz8<0:^U"g(gV>a%3ETp9jMHT>dO\_H\+p.5lrUs<+KqO.d&O;<3dQGL%KgN+f:=Lk&E.8tMU"680/&$_2[6p(vA6-FGQe<o.uWad6_-5wHA\N=E>AQ5$+[an.)++jDFLr*m.(+S'U"WeI,pKA*KkVpyOO*#^bM8uN:W0CwrSY7>$D?ITM),%de);wo[f%<o[sYF4fYBSfU"KfX_'6cnR#H'B=Y(f#*MvxB/uzE9GEHXAQ7cMBq?dq6*U5WPtsz-YPXbXc'BWffU"M8O+deP8>q2:1pZcF:jbuK/uD%kX5A37\M:WCj9)v><DG?C]=hgK^-:Wh_LT+=^U"P>B'H3%,hCqFCQX#LYnq:^grFIK2-oe=$%N*7jZvU9-2TYKn'1x*RwB[I2x<QpfU"2x)+fkLv/FtdIIfRMv4KRowA-wLR;g?buRVokm\,m>FG_u*45MZf\0[Asu,ZRa+U"5kDpH#C*c$h3YVxOZQlkVmkay,Qf:eYU^,5Dbe/Y\&b_Q$(Z2>-n;eo%_)4Ufd6U"[m^NNkIU6w6MsLIAsAX/Zcb0OR/<=+uwGVQIX>&K*ek]Q9C;i=R/+QY&w)ZeuT'U")yqL^sZdF#YBxf1U/($L];8emwHs-=(S/k'+i%Oa7D%UZLx(zLP*;*$R$TpXI/=U"t2j3BLhx,a._G\B#):ADKY67xVSUzauN]$1H_\8;J%%?e:#dddn2(a>otz89^Y*U"3.;Qf(xjCj6xdjx5lJNo5qN,86C(lVM#b1K=q0=6Uq<i0NMxQrl(p<S6&S'DU9eU"WdZ[J.:i,BH.vf9F9)Q3rPQ].=a]vvZ%,x/4d#]YB\=<ELzH-r,3WuKq3P3RkSZU"sx1#ubGjntB('cqN2K8,8lXu#^3N*)<&g8cvC+YNG_r%ZG=\pdCtHC)N>T=2oNmU"cL#KX>ehh,BCzJ8TX*eK+VUO.gP+q'Gw:<FU_hHn/_v+Y;ZnS5U<C1c>f_jOTgMU"N?wrlfmz,A)-=?e'^YY7-:KCmuP8V%0UZhFvbj<vYo36I9[%',<-7WA.Y3xR=;-U"_50djXhD_;i+/:d2Z,'cgW+\^8Yvk^oV(9kYKEN8t)VKIJ)>t&LR+2re<?+Ncv*U"RvbbPQ?k\(obmRbp'KExrlCwXlHHFS9X+mv/QKs;qPB)88y;x\n'DP&4p)539=>U"\C,,GE&OUmdJZu7vOF7G$q9(QYCB89Xpa+O<>[4OqkMwyYEXWTe^EP.Q=SGAr^^U"eQ+2GnTo'$xY8A6Rrgqm6b_55m5Qy0EQ1[t*K3;BwVWH/(<HA5tfKXNfNoO'UGWU"c)'n<I-n%V&)sduFV1\&_22#+V(XzdDqn>H%T?$dzey8WO0sIOe+\Z)D5kWcEgoU"WjSJD$lm6*QT-sKin87G.7duwwuvc$6iDBAI.TX-9XZlbvCmQ\K^b-1&qxGF)d_U",d(4;(MZBd7_5=(VM/8jRF<Hw)yfzM>?KmL^2q-YKduGVdcjh$FO?WVdKl-NA(xU"sjFWd4+6MlHxJDzag[]vFmDyKd[Dz882%JPh,r:r)_HDGr9;eNWd2.NqV325P:iU"DeBj6Ni7otXCFEg:B,Iu)DN6P)Qu6umPOGoSUx'tzAxwuqrjt]p#XIT==So,P^JU"W,du]?.Hcu_ZF4FmHO>jIFa,^PI84HNT1gsff^WXG/Lf:>7d]q9b\D/sNA?(4>wU"\%M7271n\&tLd#KrYEl;fsfCVXrqndz]lQ<-hf4na\(+J.[O_l339.aXjdenbM;U"Lr2>X1ao0.%p7H[t7fH?V+X1+o/Xdl>w;c=-eKk8cuQ9&XVf^NhNQsNa0'CceLqU",icpL<;Hw-/2)rK:kHN_%[X3u#?J#EG_$5_,7>]GP:0e4:oj%%Y5PPfp-\^W'EeU"n'*etfo82C,zdEPc0D%_DZ+G^\>;d)zH?L/X'KGuucd%WgAfJ(H.>0Y/C+tPsd(U"=l/8JuMm%/0*Se3wA(.DdYrpB]Dshr5iU8WPR$RUx*QmP8mq+g_sUB>?2K,f6uiU"tvj*jZXcdN[;eEA1MY$D&dq))\l_NBd.=m4=D?[dekD1HgGC]fPCtrvqEIO%AUPU"V%?,#:J*_7]mBW()h6v51K4lLAhWzX%y+0^^T:ia:'r^&m<TMO((lTLO+[sm)U3U"6?nSN(5cq9CFlVh^p]Pl;^Xp=fShe_q.eMor>s0/lB(N71naW&sClDVhXa$Ft0EU"/z,nMyRZnIu&Je>a6eemGHo#lBSVj?ak;tY[j69&J5B1GH.;F%5zu0gR<?8]XqpU"B*Fk9nCv%I_H/ME4M,x_-JB;T02+%xs'aKu-(mj365i]LBjOXBoGViv1U^J\WRJU"oo7k;Rk#=VtXD%DTtpF1R9DDmhAIdlv)B4W'+_gxeDNImf2McOJ]:r#;Hk$$U>wU"e]X?KWNR73a6r<HRu&th2#3rm?2d9eLt3O.\sD'xV1kc?tKJ\0K0?oRgBYs^?ZmU")?GpTzfNl&u1#<=lyccOoEcMmqeK/I_z'O_P8/a=qe.l>'90vtDr6%)EF]$?ulXU"ZIRC&aJn]<oKFiJPR9qRMlCbu<$t#]D4u,\f*[j1>aWMK.fscPE4g0s$fG/k6QbU"HhuR1E#ebA;E(dW+-LS[MufH4uU.LBvGc<?w%$hxSrJ)#-jd6%:r^7mflt^tPe;U"iNok?QXNK2\P?14Teb^J.4tezj4&K;_Ec[_6WsUpW]pXQ+M%hJCw\6-8AO'=+)7U"Kf.97Ev8K)Iv0&xV?[Tlhww-/)4]*AjEGpTGd+u=k^Mn9uF###o(De\51#kgRpfU"#htR(+[R[JjjoG)4,n<?,6?g]pQfjzs:feMae(%pW9hHr6YZpAKLdo>[Q#iVo#-U"[x;<fXbG=YG]N*8WBfjj.H)TiWYQ[j0tRLs-f8)S=WJ#)0$)Bm/Q[3J9K,RhxZQU"vA4yNC)orY\3iR$/GJ)G\'8FR/[8+&<,UkbjchPrS7Wpue%FvrwjC:3vjjAshq_U"tPhho<A7mZTjV1=Qf>rLgC7a;k6/hc=fjgZ+K*XbD4$YoJ1]L/L7pu5J(03p^^,U"*Q.Gzj<?,&m^=(N6d0ZE[fe>tfFkGS8qgd%cUftC2G1n),CLn(mERem?1.>'EfCU"i-A;tupC2pCkY5*BL%Qyt,+F/FO;U_3<j+WGe':/by5+c=wMt8wrFQBBMK)b2AYU"X?_uLdlvJ[UI;)1dw,kCncpBhxaK?W_TvtN-J*f*dlf\SwJ-EF-Q2P]1lJq_\nFU"]2FVe6Oz5[P9Nj]:4%9n<fXTCK6xUT4F6lPpf/xdesm4Tf*HcO=^nw*+\4/R^6=U"ElKSOQ2$CTspddiopK2QW49T[O],7(w2Y=j9vE%=*1G&p[r\_:yS>9&dKOplxAiU"Bp##Lot(VoPvlCV?/q5MC&7A2Wv)YS][Qu[n]0Gk=_48*;/bG6<'<7L^NZRtH\[U"4ji:+HWu(00p<p*/Q'LYsFQ]I2vGkvb+GM4A,h-+[?t-0*C^9%P9#&\-.;)TIb8U"s/';bt.-J[w8MbB]0On9+oODIGypx)Br9ODNm<U99u*n?btW]sUC\FAmg:v'5pgU"8hBnh^gVNvnAP>S&P^],Np_^0ikN,q=O6ZVq$%_y3tChiCk[MDK)u67$/vVB>lwU">SZ=<d,>q3hnq[bhmf5eNfY)TM2(JpGI$7/<XSr#rhvj:pIuo'A2VCS&,psx(9KU"ADw1zb%+X9\U34p/ya,>?*b8)NP]:3-3woOBJ(lA2QST$^3>aOESr6U#Oun)fOjU"\vLJM^Xm17'wX<[CBV-vAautPppc#4J2W2;a/]r?;JH%^2elQSqgBMsvn\8JY'HU"=pJ3OeJY#B<JgHkNBN6u576XiA)2kR'(MYf=Yt<Z[KLPXD>BG^a,0F8b;1$gnM'U"bPTVo0Ifr_DUPzO5%k-=NY5vI1C;i.y/3bOoMt,*7nWV\bU,2^(L&D>;l>OJuB;U"Ei'D=zyYtc?mP[$p=^C2Brcs7E<TuTT\fkA6QvN*p7;F60AmMTOW1N1:4'>uxRCU"kR(leIYI,8k+Qoff:*3ZL]GMH_LL$SG=(n_._Pk9.1hxU?51MMhy.]5Wb)qXq&eU"a7cTfBZbG4#][<Q*wA9XRg>f^+dNYnkvZGws^[F'2qc-CK9b>efwtJe:f%*/^o^U"4vTh_L[AaOC%9i3#U4G:Q0]deOT$Fh+^0ku\nfvT#2e>&9N=A)b$O]GPDBSG<LrU"uH''l\4Gcr[*$s,$g$,*ttbm4/p&wA;Iv%4kE0RIpQ1-7M1N<noiVMV-Em7A[,LU"C;/^xE\abqe+wo/zj2T+[3,Z.2*JF5e3Zf;wj)KbM#j[Aik+PNLH&UJp$^&x(CeU"n*bCf+2g'D<2BxLUN<kq)leV\Xm*fD=J[x]:[0+G;^n96W2(%%Az.vb%JpvTl*6U"A)l9'#6l-b(-8<sOLU-)8F9O+.*WRqEQe#%H8-0613S4.RsGc<%GZvdx+MGm]1:U"8\;.QRD]A#L7&]XN4T<5l^(oWaE4idf3*/)>kj<d[7hR4NC2Ekm\OrtAWoq50r]U"kGmPhgCI89A:^ZIdp$i1.FyBCR50'ToC#B=MCi*T/)N>4l3mCvW8/Yqa)z]vm0HU"=hyGJ'l8aLr$#^8$^:i38UbDhp%02boqq8Rvq1OV)lP/iUarLJevD_[H/&-wNv=U"3mvD^k%ld):IET8shjcx66Xmc$S;[Dpnd[U&'HsX5b^]<+&K6XV*;(y3vuRTAP*U"G7b/mopWi\)s%v^-uY<:67gW[*;ut>vX+O79^m1*iab:\lQ'X&xQ+B:O0[\KxSWU"HsbXnH*mJ=I0,z]^Tp0o/%SAiZ;^I:z1?Ko1yH88I%(qSii1so)_q71myNo?xn#U"<Q7?\C_uZ*r_Y6)H3fho;<XE$Q=kApT_I/qER)H<U#:Xnx:V'/mFU:cYtbco1PmU"MiFF*mb>mAK*kkRjG]Ejm-m(Di1rtCAe=&;0Gv(*7NpRU92Rim6m>at(T()FJq8U"<-R##3;UDFB2UgZ*3DJvg?+:RRGSPzA*$T79:$0bNr\xNMpnnN3vI,L(KQpn(ywU"ZKeFIHObps<6#X1bQQv3DKo*XA735((p7llReLL/%#SPV52mdo*)Xm>Q469s1xaU"dUBSI?>K^O#/:i_zFQwG?e,Ppg2L$gie0q;_N?Udbo'qhtI>uul^n^U3Ff(c/2QU"NNk3HSlIr/3/dgS[G:4^:5iLcEjF%i,p&_sM;Ya*Ji\,9WWj?N.,+/Q6.aUWgL\U"wCo?wCvY8w:-;ltTkQu*<tF'i>f9M)T?HM%ZH*t/221m>j+.\U2g9]VY4pU\&L=U"*O/5M-[v*hF*ua;-WY((#4ZeTo2xb*21b=i<obw4(tc87<1rtPimCj;oF)+EJ,3U"M^TrLDbTRuU_=vYKs(-m'kSH+V(3Y_Lq,mq<Vg)?-_&;;f(<Kf)F&q=_yeN^1F1U"N0hy4<3Xek5X>GUNFuki[=*DpqP1<5kKyJ=pSi3G)BKjj\G8hih=>o6tV5ck(G?U"pXxURa3/VjpY?xD]o(:oe.Vt34N;6i(ExV54YM7uI62TpNXSeHbu^^gB$'lPw-DU"?t[2Nh<_Om&IgeiN:T7f>3NkT^i#rWTrrPz#>eA/VjX[3adM/KUX.N<N8Je:lu,U"h;bP,UH5/ERYMrPZnom,Z#^ZWK=q2.Mz4Rrf2n[tRlLLg#\\l%#3Vl8*<VlPQmJU"'^rkK*F+^Li0H=x)g6Ow;2g5Ar(i0&o3.YWlZs%$s=8(S:?BTb0mnRX.9&uW+c<U"QsT^NLcTYN?:a[dTWwY05sa-P6=Qj47dR>rmnv(9^iYS\9PpMW*E1-JL&bY)9jXU"$-.-90dFN*11GAH)4djOBi_'FTNb9JFMBLJke3j*>%_=,FeqYYnfSyj\20FjL]OU"2iO.'8=.B\FDSt+_DFp;LjslUw_=+$q1\R0L);GpAc[j9>7J-[0J&6,<i[F)B*XU"=lx]5iJGh)BupWG+Mbp)adQdxs3e<.$v6,w(\e>PZ<xg2t0l%OF(E%DB^Idu%Q<U"MNfiMX8gvkCp^='b-8:3#BX;lfI4\(Z9sO6,>p7QW,Qnj?JopH<[24>P0(ddOEoU"evGQ\smL'?P=h1+aTm57s+:W0O+t+LKJBPLP4)]SWipO5?#^7TTAHk0-pml5fXAU"mZ2uc30X6lJEG[H0HipYnE7EpH:JE.**Z8bu[sse'UBg<61A>.S5IuQuuDOI_]bU"_o[/%+$3dl3v(l43zcJ2xFzXB8KRPJQ<Gf,uc5[7U[R,0>gsDhEnK%,ImL,=O=.U"hyY019F:0qW_5m[o*J.eQE_+m$9,XV%)3Lc:\#tJkJbg+udJ0cujbb$)BZ$_%N#U";hm.EOwVee;3oR]dF9K3txYREj2dR*4.;(N^x2;SLQ*DFc2%z5MRX>3K1SRvU/>U"AdOsQ*WCbi'kfLh;)1_qCF.Wb,pMWebMj3Yb:b_Q3Ba4-EpQtdEA-(#UrzY/dmNU"]<.iU'[8&7QaW0&-A&egac,0iiD2ijt=IOmGu40Nwo^d9hlb2X>B,(e34TMRy<iU"Ux_*i%;[b]sTb[6RYdK.:e(m4[cWjHx*(VkMCq70YZx3C=B=r]boo3s)u/AJ%4,U"jXD]RFaV#33vZ8XihEZ^u_oim<qR?eEU?_7CPsqw22(9K\p$d[g[+Bq/xqcd1WZU"\*fCfG+f7)H10.$x7*R0Ya(8=XH8$o+0:94XUomkx-1d/OZ)yMFOaTkbe>o%vR7U"+oBe&8GD6]q21>BnnB/2B1]2,e$)dRKMaSC)^0'MZz<=b]PWsfO(WRPi\<NPsT9U"-u0L3&c_VITs<fmjBZf;aV5dFT15R*u#Jwc^5Ba#B2&gvOmFI;_5IckH%doRmQOU"]+oS_TQsYW#Zt*[$)eeUbJn(V;A+lWa*pu\jjbA6:n%_p(th*8vI75VZ.$jy6ajU"h%P$qU^IVA$6CE&-Gqapb(q(q&'wxY'<.E4o<\&\)eREW(bG[/\KaC/F,IYjd[bU"eRZjZZ-m',0F=AJbf.h9#u'?n&n-6\7rEBQ(/cGXJOB/5A[q,sbRnzaaPYa=&*SU"Pt/i*/nFP.L1tX>GrH)6Etv'WNQIL-##s._my,kOT$b3:gB2ApMDD^n);+9o0;5U"G9QaD:%z3e^n-2URh8wK2I[oYZ)1NX>YK4*-]I6FetOsnjY?.5,30oYJ=[kKGq+U"+-o/fE\Nep%F=4US[r5R=U'%.Vk;r2,e<YA^%AhisR#j8awF.EJ]muY\[.i/TQ'U"tFrHm1&Kxak55tnoZAvw26?ufEiFcVrOYEB[^'$9q'=U9K88b#pfUB+CuH;]#jKU"HYU8tu_$P],;dk2lK;E\B]^gWvwCTC-0khi:p,F-d-m;ji^/=Da>kMAb(to?.#iU"*uxQ^x;8g]Q]#\=X/Y2>P;Qm)ZDP&IOGGq6gAo&llK=^<mN6dZ7uHc0K*HAkXv(U"4aiD_itJuu8CWpY?e#)awEldM_gRe6i1.7z&EQ0U*N]55bmU9u1Oj<p//UuV&pjU"#6V+DU)d.^JFLj-:E36882x(?*JrcuKIcePm\q%OexhZ]b9$%10#P42*z]g-xTGU"rfcVj(0vLw7q+VXu4,O#+6R%XX6eI[,IuCe5L?;[8FCkBJce?ynP4td3:i(3$eKU"SmPu^K#B+ca%8%#Y0lvB#h[+;t#88'K8F+t0hF\>y+gMy=*07_+8o=Xqgb>h.Y$U"&<qD.nVd[H*.#(tIFH#/vDJsIS4OgQZF'*kc==)jjtNHpE[%V.jLDq$&<i^3gk%U";S[Tx(cUXdUfxm_7+)OP+rmNeYs)wXx%(up&%'9%9%%%%-R%](FgJqyE)]B-%+%U"k:%%%0%%%%%%%%%&%E%%%%%%%%%l%tllq%jxSg%fxup%&'9%%9%%%[-%5%/FJ8aU"ITDlY[%%[w%%%+%%%%%%%%%&%%E%%%&k-%%%rjSg%ruup%*+%%%%%'%.'%<%I%%U",b%%%%%END SUBV2V3V4CLOSE:IF S=69AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBSam Thursfield                 DEMO OF BOMBER GAME            sam.thursfield@btinternet.com  12-17-98 (17:19)       QB, QBasic, PDS        71   4664     BOMBER.BAS  DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"BOMBER.ZIP",4^6:Z&=3222:?STRING$(50,177);U"%up()%9%%%.-%g3SYJ+Q.hDy+.%%k6%%%/%%%%gt%rgjw%SgfxN^'.;+9N<cY6xU".t>*4?K/qJIV^I1ws5V=syP2STtKOw))B%0i39aqTrf0$jVPpfa'ReEJg^=r4?&U"gDdmhL7H+#NKc<aUjf;eRkH:(LacMK=)nKYo=jkL$F56]0RQHk=3FGcvG^X=bpUU"X;6Es515q?3Fd9-/[E=/Po?3Ros3)fN?9$i6)+OJ)]Ag5H39Lg'QwaGRB)ZNn2UU"^#Lt=#4)11f/&.Y=TT&#3dh6QYB,GVZ[C'PAUZi6FNkO8a][O=O_e7KBoJ'*$gWU"FFl-3(n'T4J#CIi%.$owQF:Pm[(,+p]WIU2+m<6'0<h8R\29&cesUo^;v%Vn/+#U"jOq17D7&k[$W/eX[q^#UG65UN>9BAZUgA+f?^r5PV.7A=T8gCYjL#L#69QrCSSpU"nhn(&alanCm?Umou?r;80)]=V]:3-Kalwb5QkDKiek5KQ-baUt'w8;6M[Pi9kG,U"KqaAkGr(A;]W:S,aMk/QV'<Yi]c+:1$.LVfz0EQuriV/LS$EvqO'Pnurlwdn'D)U"OToSPIGn/$8rBu&f9Q_Z[:=&W[R3ptmC^B#xk)7<bvb1G$mn?^tsYB//megTon?U"i<bx5Yo8bQm=t^kVegIu/\;$\E>sv7#6>x3#1h<e4N+5OS2.lcaJ%nFd7NZVRk+U">'XsD/Y=cBQg4H&lrg#)m6cQ)tE9_qD5hisE)A(X\dlXg^^nD?XG/bzuE<E#+G0U"kVy'P$CWQ\HOLErR[A_3EXk[)l>68&x>h5F#V>I3C94+u7dU.A[>H&:E]E)J<Q>U"s*#*jT/T^h?oD0VEC=1[4^rY)X5+[3fEm3K['-N+qTDWL)beR)*4.Zur-eSJ_F_U"=c2$E_.hQQ,vb-\W,6e9UO'4acbZLtMP)16/W#[vEmFGV#XAB5ElOh59,XuT/FoU"ZH<tGOB/QP^pP=^e6v00tKQ+;6wi0jSTbm0J:/Z0I.0qRQfi0\X/dm0c3;3q<)sU";suq)-;.QD%yEQVc;Cj5H^m+[9hHkU^TPi3]yrdLN%\rUlo\I]/MCwWhvDUN.+nU"8fRE,J3ztMFfsIH+&Lz\BwWib4CdHg2sq<cli99KRG+b_eB9J::8B7Y*kU>8hk/U"aX+M50UdSY9NF<OgE978le791np9V<ZD'N0CPu*yhVttUZkccH#cGw:#_%K4X,TU"X'QdVCp5H)#j4bp\=bTx3amN/sJ+1)\-)AtBI8a,13N..*XSApC3q=+T;ENcp\5U"^A>#kn;$>8F8HN=Ah.gj+n8BB9dMbBD[6A*aX3LMkUd1lA(W;C_1zeP+e?KAPUDU"?kckJ9[&KQvcL[Z9dpYFNgPYYqfDk97+4T+iiuNN],_3;>UY'vaqR<PhOOshd(=U"_XK1faY$+]4Z1fi5nIst8[S14XPuN=1VGS,p4aH4PG8zAojLJ9fh-c)L2hsBvwBU"*KIov8n/XMZ):3V'k>NOI0*3v6GpxJ_+Mhi4<Hq5<qlh%6Zr)g/Gm#eh+,qa1VKU"%OBaVEw2iPjmPhQ)6:5lBDCEAD;K.Ch4C?YlY_<YD3G.Q^-+a/.d7dlM:fTGN0pU"g8*c+i>ayPkE(-T>z(PS\1d+ULFUx&HQorHEH;u:XV(O1Y-&>yK'Znt-(OOu1z:U"?7m3w<&2R)g4WwQmoN*BSu(EOu(*cFRg9$[md2Y5K4f-.SDgpCl?%R5DAJWLU*OU"l\L.9B[5I^llw<EZA.lM&Z.b(rHL]K3fn=P(bUc;=U7rOo0uC8BopdJnSW]rgYKU"vXeX$c:s&3#4opvtSfy3JRo<<ai'wCHnwbejib%sgJ_ql<rl#So=xk*6JWwIkBpU"%O^\fgs73UVMbjbeD[_8s1S0ovHU=x5'aFsKbl4jG(Ledm%RM^b4?blhzHMfMa_U"slBtj]74aXkEb*kuWA0KeJ=,h;=.Mtl+wq#mUy/h[ljvGWi^#?qq;pN[XA21F1RU"2EojIrqEG2_*fBy&3IccqutoDlb\56z>D2Haf1\XVtK'?u*+CL\:Rq3<rq1y]SpU"BA2'n&kNisI4t=l\rH,[QZy<tBH\2*,(azHj5:E>HwSa^ljU2uv<reK_\0v8N]xU"]5ow#AW1Nq-79e7M)OKv%Wrq9^=1c<d:+hrLaNXEr]-tc\\bTm2GAf?MZn_.:?:U"v(&c&WzoR/W\JnxNnvq)WperfF4w?[3'=D$z*q'x'up%()9%%%%-%.>3YJ+fLo&U"&C(%%&VO%%%/%%%%gtrg#jwS%Rgnfh;:ASU=5#>n?u6Xn.2+B(KpCl09mFF5EuOU"Ct[LeLeXu&uW.CP88fM;)xhX2^jjcmj.]5WdRX4?7NJ1i,XaofT*B<$t>T_\lj<U"r$6zoiTD[iW'>t6TLJ=AM%rWIo-HcX.2lH>R<w1RC+GD%RRbo2a[wPUz]^9(rB=U"Q8f1)z#zJWD#I4rU?:jQ3dt)O<6.PgQi,f-ZRAY4g$<K*;s-KUb-u+q'^AE\j#$U"8%]*P-HWfYBI6NAR>P+AEI(d3&.*ER=UO*1$Tb(V##JiYc:#;?huA2O<:(qlKRbU"2SUJ]t]+jZ'^7?Ve2tnlY+[\4SX&ms_OJx).OhyERBX_$c>H'Q)O+(L[HIhLWc'U"pI'nL5Nkgbj^XwjT;uDV'U03%LH6oizQS4D_F1_lds&gY(;DaVDzPj3=i529O_0U"xRf7:D&qI99#rz/]qKVtM3<gnCcni#_iR\uX]KZQP/DlPOX'Lp$HtgVEK4qZ>#rU"H3i8\q1=n#jaLB&8r(JQ3ssT]X%]87_#84d(8Q.qbX2,XeilA&kIr/Mf0Dj<'^cU"y#uRMdImqFlUS:b>#2)E<d8#w_$cnny3sA*<#HL,f*-HUC4mUCfZrcQ:H1N3TnEU"ut/3]0q>\DshqnkqUN#u.\%cJtWZlFV'w0pVJhc>K[L4gE*OYMG>Y%lu5$]'nx:U"4*nMmuUSzylakqwU$3h1d<^0-9w]wJA#iamvsd#c>q0WzNh$B\zPF%8+E>rc\PeU"$DB'SI*Jeh*GFG^1Oj:p^.(V6klC%kw0;]=,npjbjxOD2]HTltj_u'k<%JGRdWHU"?SvCs?[-K5au>fw2Q(9T+B9*BU>qaqAO.D_HI:=>98M.XD#e*oQ/HC#=R-7YvgbU"Lru<w/vJYLxksrSg1<Y'G)O],?eZWkr'N(BMSceNSpZ?Whtd8B&PTUcwu[8h+rCU"OP8N\HXQg6-Q[RWu:>K<WiHrHC8K]Mj+9/uD'IiMrPV$pHogy'X%<j2Tb6r0[R,U"HcIoz)Vd+dpjbR$Wc^2X8^H#U*fgLlVviv<K\Mk8Z]kF8\vqnN8%\UsU?4tNWd=U"mSmC>WXIn[hH8p3_^$[W6V\vug]10kMSjr3VJIX$8hDa0rTt\<ljrnPIHCM'8%uU"p%()9%%%%-%/r5XJ'Wj6-%k&%%+,s%%%-%%%%gfhp(S%gnHfPf9B\e5UUvn$6dEU"Lw4'G^,'Y(=<3pX#UNTVWKJI$pwwlw%TvkMtL4-Vw9%%%%%%%%%%%%%%%%#%AR.U":9rbI\kvt:\=b*4on9eO*L?gc=.4nIce?x)S,t9-ma&Tr:);_8LU<D0)hpSPGbMU"J4km3oEgy&bR'OSzTaKlRXDv-l%cQ,p6YQ%*4Jd_-%-R,oBORD;)Js3dT\ERw#9U"BwT;hxr3*;,:Mf?+U'J29'6k?OT-gt\cEAC;J;w+F&F^MfI)>OkGum[XYH$oF\^U"fPHqcMrXnwJ7xLG\Z^p_tHtvE/t:;8tg^v-4eVhAobMxdveS6.s<6T*TTZXXX6XU"8d**x-4ha.h<<sm>t#[U9Us7&UEdX4YcM%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%U"%%%%%#%%%O&]4up%&'9%%9%%%.-%g3SYJ+Q.hDy+.%%k6%%%/%%%%%%%%%%%%E%U"%%%%%%%%gtrg%jwSg%fxup%&'9%%9%%%%-%>3\YJfL.o&C(.%%VO%%%/%%%%%%%U"%%%%%E%%%'K+%%%gtrg#jwS%%gnup%&'9%%9%%%.-%r58XJWj%6-k&[%%,s%%%-U"%%%%%%%%%&%%E%%%&=/%%%gfhp(S%gn%up*+%%%%%%(%(%&u%%%'S0%%%%%END SUBCLOSE:IF S=136AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBViktor Rootselainen            XMAS '98 INTRO                 viktor.rootselainen@pp.inet.fi 12-24-98 (10:36)       QB, PDS                515  34019    X-MAS.BAS   DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"X-MAS.ZIP",4^6:Z&=25272:?STRING$(50,177);U"%up()%/%%%%+%%%If=QJ'*;((7%%;)%%%,%.%%'r%xStg%o4%7%(I:[#L]^9JJqU"l=%D.+&m8Y^o,ep&LC)G5>HT2SRgs<iIr+O$J%GC-5V77Ce#D'iWu.bM(LyZ1t:U"o?axAqjV2[c-5b):P',I+9:hOF9Q./X+t?8c%*/6<OX%[.;1ABXWgOC+XCdcs-OU"M*>i.MWx.Y%%mk4U4%K)ybYnw.kK6-Ap2qVYEJqyw:BYkYdFhGo+)XbL6GbWTF6U"+)8h.W4S\ZWRSE-wxy]]('u#erCp4k4pc^Y3,MkMIwMpG4Nm_HedO[YBIb2R5dFU"3fuid#UsLDJiI=x_9OO?LN5f#]G:A6XM'bz(mb3jn19f?Aw#H1UDwaOn$fJrO%BU"&,HEWE=eOhj8o].1'FqU5_3V414BmXC5k;dzUB/bgfixo,ZHo38Jm=tPZ,1(+8XU"DuhO*d\#M)rV_38I)IDNey;8acQ,m6xd=Ecp><q%Z&dl+Yea(j-bdK#<0h.4%3)U"n\v$S/&:5be2POLQ*fDFS8uU(/l_J-QUFx)^=5vm%cemvXd(&g&.,<.:hgyJ3(&U"$KKhggy9K\ic3]PPqE:jJ(1SYlYdM\ngw+'e>ArJXIBH?O*2'<G=#8aFs\\2(7OU"FK.77&I(wP('1z-.%nkPYR62Ro*&NEQQ3/;aWD6n=9S?JmxpGO&Rm<'f(P?6t^6U"nZKq#83kHlsp?<j&4I8X8]EholO7\F0X&3y\eK&1o=^%c:Z#>rvU,1FrV-hc+CQU"pxNC-DMLy3-JCe,oDfFpTbu+]JhH9[G<jVoa0g8:uIV(V#zaD$06lDKM$gi?pACU".jed?k,k4(I2-$9ef[AUVZ=)\s#=uE#FC=/S_'r5dDg:dR3%JW:O6*-aTorAY2YU"':6fdS1VYFfx_B6](19Fe%D;W4L3_'K1+9;FOcK=oW'YgO[ukW.)1J6h%BK=_^'U"0n6zdS1\GPM'fS>Tu.+=^F%V=i3U'd#5PE1SDi%ftWnL3;8tBfi:9w[qOS8'?aQU"b'%up()%/%+%%+%%%[f=Rj8Vh%7I%%H&%%%,%.%%'r%xSfxCr0/J%,+#+'41p(%U".,0.%0.,;%,-+*%+,+*%[,;<%0/+-%/0*+%:)+<%*/-*%+:+/%J+-,%=/,/%-0,U"0%)J)J%)/+)%*9*.%Y,+<[.?Puuuutt't10Q%0Q0a[0QP%%1&GH%9:[\h7XiT%aU"*+7mH9^o>ep:MJ%QPrm-j>:iaVmUTG#0buxm8ZkftwXrn.7DTt;g.i#A>.qv#xSU"H7v5l](kgc]1b=vlK/&0tv5_rYL;0?FyilJ4NUEz4PDniV^mlj<ZMt3$RKDDrnkU"86WPeq6u4lwqmadL,lwf-hOR;,&PKxG-aOt;fYFo_DQuZ+ztTL6-HhtTdWt&gv_U"M>P?eAd\CsTFFlP9u<ntfd1xYMu?BbmPvvP:12HZ;x$wQx6C>>^H(wu7#7UG:WtU"+r.MfXKWh;/9twRd9CErriG:VOZwDwj7\i8S<+.clT1C#F6Mft1\q/b?ZhlLBPBU"K2KDgLc5Rbu0#u(d7^iv&9jYGdlE-xk8s9m#726Jt(-YN18+o^$xXX6g\.:ZvFwU"HvPoN-;4:_ct3Mw1kTK0r.[PndS\$Wiq:xuHO5ZFYcloBfkWd7D*q1H<BJvckNkU",8<_Awt5LOzvXyekVcHke5tp8T_uJxxdLrSnm5**G*d3B[S-D7bzl\m<oZ'rx(-U"P21vF$-VNbA4z2Qrs.^X\t2cp,^rNf3tS$m_Drvb:$x>aa]CZE_IUn>Cf5yF=[*U"gAVszWclnUdN,<?D=>g^sP,.f$=g(6I<0VT:jfdjwF5H4#qoPbhlgn.F+l)XD%OU"Q5Tlf_0H6Pg_nHUJ7N_?+0^5QZp4dnu$^r\\CV[mU?^V]KjNFzxPsW0K5EZ#4=LU"Z<'Z%mjQgLPyre6Pz1.gg_984mQdeDf]PK%eRd:eG]i\vCe8b=jpsXojl\MXJLwU"7$s.?rstH2&)hR#PMQT2fHO$O7%UBptvM(4JgT:QB'E(>hucvbicaU%H=pT'XZWU"N*2bGar^MYgqgZlY%_Y?;9dfrvm?G:ZzBJX94u_6WTmLP*aR:Gd(*/m(](xt<$TU"XiJaefslW03t7,ARIG/('$Z^hHZHCGdHm:I<5FbppEPF^&iel0e^w5Nhc:*MuqkU"i[:FvWgEt(+^rY+'KHbV#U6$Ftjj(CdpE\:dDO:(rq,\c[Sb_?W0WLFEScaWa#wU"\))4'i#6lxtzp;hm9[gJ.u8^+:8dfH$'D>H]=cKJPgc$rAEYs^]lxhpeAE#StJ&U"/C9%ZShOpWxpl$8<S2R\c8byg6:;7[d4lt'F.4qs44>r5TXYwVMM_M9D)pez3'QU"h09Cl\5nFuBdcPkWUCHGk-yvWwNAmlvw(%ZZ'$cHDTMH\/gB7c[>Zh6'RrY$YV1U"wlH:=rrh\?50ZIohr4xEP&lLbTTI$WweTLyhLk]oG3[Zy>U,v$,k*%lEGz:Is-OU"/%jX5N-Hb-u8u/1r.z&]lo2=bMuVb9;^HYl4->>9JArCvj3>)Nz?_[Zaikf,JGmU"+#861Z(%GThky%p<6-YV&knXx&R2kHZ0MTwXY;,,OW/ZYM4)q$LKQ6QfJ-b<.M?U"W;T_+gz*\YTkui?/_/Bf#+i+xgZGia$Mh^IaAcD%($Z$&%r+4A_1dbqq7Iu+7ZbU"'qS/jelMc3VG5<d$S1P#TFq<Rc?;Ecl8fUq*fsVm]F%dp;.jX:Y^4=?U10e2,DXU"'2yLI?*Jm0f8D/K7h>lP3;;F\;*ju06I\wPHt3r'FhjrefVUb8^X+L4*OC0*iB[U"$f*[EI\[ov0D,>eYlou1x)Tuw.D]QLU:P*ifaSeEJAGO:dn2GTmM85z))hgXml5U"3HrG2K0SF(9k]P#f8wjEXX(mK#Rd,c*-3D3trES<3Qjc%\x-?NSfrTFZ6&8\5RrU"w-'Qi<%$DSVSY)#^L[c;n&EK$zkliqaH*[\;EK1Rt)a#4Dt;2eer:AT*R]vnAItU"73lIlHQMrKv^5b&bd1bkn9z[?:cb7Du38T&)U3_po0=QO/e#E64J(rSEZF9.'d-U"8=EqCC&I^2H>AMJ):<[St%)Bl?R?a>=p/s%Uh_EfArHY\P'98?jKaRRU<40SBl-U"7hc4SeylUuf?L<tp'(QOhFtlu?.dLRGs7VwP)]Gz97\0/6u,ER$aUi4H+jWJ*[bU"V\fCIP$-P5065'9j$[i/G'SEsP;p\8nrETfk45)S3Ismr]25UL^g.l^RBu'mBc^U"K=>-(cFR8qKEtE2+H;6,l]%)#osURbL?2+)pR[sa)ecYtliCHFdmuLj1b)k^a=LU"E&nHuRDsGEO>]$g;oTM2-FWhuQ=&>WdW%_rRQpDfHJ:PLLWhRXca0i=^[;nhJ_>U"W6C9P.j_aPtHDG(-fIfy%LvWL+QNFWd1xe*gj'H'(3,O5Vr&Mkk3%)H=HbEEPBiU"'./e[(aAN.]OUQKgy/-:T(*m0qKbS^P3,]kMa15Ug>(ZtqTO,;VkD09WrtK1(B'U"#%Qct29#F&#2MwJ.<hZyRw)ug,^QAW%7?GiWA2]y5s.tMrT-omLUzf?$.$:?N*ZU"R$&\0xhp02e]nCT0hJy_H^'LS%H<:gD<kWXjD,x1oh6ga/'GVU\pc\]l-EXw?F$U"ZsepWAughTh]GS&Ty$+/,zl#5QB)lTKr:MV&$G-C,:IoBWgO>Ch$BFS7ktV3Su]U"(PN5Tx31_ZT3cwIZ7=E[4e,:^kPPaT__.<cq_B&k=F]J,f\1I#JZ/gfWSsRRBSkU"5SW'u5k/NYd7#<b1T)]?,3<dg#'6[L=;9)LE#1\iXsg;c+(8UW&(78()J'%1dqTU"FI-*;Y(Fdi1VIy;.g0wfar>vA5N9:F>79Iac/)6_*AU&Z4Np*01f0)a8RO<xRxcU";U8<7*ZgJ9+,?d+F2)66b&WNKQGWL3]/0:aj1)<f*^)O2V60Wa_BrJ\,\GN5fsCU"s+7Et]U:4BV:wWNZm.wEY&0bHc6:Gh]*OU(*%2C'A&+TMJlPV=A%(/G3*^oXV5?U"-\N\q.[P7N'I9U[GWVtV9;NJ(km+xXY,KEkP#7>yNgl:qX\DM)^:6W6Dm4Q^&UAU"2RQA$me\=BX%u&pHG=6.j;8O*C<13Gu<8F&_;EgEQ'cn[[^Y=VqI:Ub+=(Bme&rU"YdmiC9K#n-\74YcN.=j.U,9)_FnbHcQpZb+0TOY)>4VQIj,4$:XmQP+$^'kF[mWU"1i4m&y>+BaKR(Q7D_*>TzPB-=pO(Zc%CdBp(bGQ]-p=)aM,OgW;:E7Ow1N(HHH2U"k%'2FoA)qHMHVJL5h7V;pSBnpV)R9.O?onAh5u21yugn-KS*J?5.tn0EKp**U6dU".KBKPPJd&U?hEe_wO&#b/WCZ,SKm_WAd7eHD1MR.VI/(SK>[/#V#'.8f#&HOr.5U"^qW7/qIE(j4YjrXP*CIM1Df/%+?7O:\d0Q1<\4F%Gfe#f*H].U+p=Rx7Q6O%tv9U"1h'cGT_W9?ZDFje.&-&+:q^ehj[hV,.%?(*Ae#o_==1-/fQQ7N.iOg=Sm7;'O*1U"C1#:Luo)AP4D(G'ip7)7P.gpP3.\?W65)s+X6qU7#n_OV8:4.Dd8O.*+0=>.D6,U"eJ)m8R/De\V3(L6l_<PE:qBsf1a_?qMUglHs.&Y_7zIA=4T+SR$Q2f7PdOWj)SwU"7jg<G/Nd8mFrwvrv9t-?5=4%3S=Q<;G,vm/55,H/dj'>t)U:)KjIT*CG3/^=R;pU"lx.K:P3z]pO6[DGqW46u$Ly5d&F1iVw6hc&#w.dH.&.;NRH]quW/0*dEVP*MP?\U"CIJKHTbSgHC.&'Q,9\SRo+)4trM>Gt+((j5*SMTPQE3Jx:aZV=o$yL'.ce&-*seU"%N_(fE7ksv+7i^o+4d[EB6a.s93HEozVXe+0OsSr8O,KBx0WaiVk8?#OqGNS)U[U"S2Ys9Y6Al(*306i-Hf\3=x<F1'x*i#iiVqE71%oIiicc)oP<6C&VUH%WQRmgm:vU"ao8_2J]5jj9BmZjSm]\F2,%4:T]3%eJIhut^$Rb'mO<gJ8#2J/m47aQ:p2Hi9Q;U"kXpAAFESYO*MrhxUk;A/G%6)RXEv&?iZw[H6M/[303RlnNZ-'^3O=O2%.KeoWFbU"?8RCDFU(&YQfo]<e&u[Z7G=ot;*ahx)b9j+V,%a;n(FE2Y[ef+mEUQ[Cy&*4?]AU"0ePo&[77pg%6:cs[&m]S8SP&?lj+4'y001<G%N#G?$\>.PVOU8$b<Xoa\Ui.No/U"--4+'_(j6WM2LB8Ok$(dDj\<S)+>yu_rA;47bWJSQU'V8_].o_.0xs%V\pV8ht9U"(DjABD^9P?q?O]\'%,_=2gh^UOt&o,7lwekXXYjDHM?s+oga5,pJd2X:%L9I<VYU"IYQ(6u8c%pu;Y^,Fh[fu*]A.B7mG(4RggAp<UM>En'SUAO9S>V?Z=T36m)fV/;MU"U#yQ2RHmEY&\;dk4AiQ[Y7n;$)x?43p[;Dl69\Lj;]1?3$T9AM1kZR'ui3/[4%-U"KPo+)f=%6N3-A<N39gG,4[Jo(1r[qAYbA-?ckPcGv#0drp]S7luE4R+,Ma3c4>3U":?b_n#u9/%8,*K57Yl]&wNUwB.]M0Ae;,<fl?/-:]?7-)%Z(W1pZR+NI)c[=(9qU"&AGW39,z>f$1rG';R.4:=>^=:^&GMp1.2C'3:CoLZDG/^G.u[IFItq(w7-'4G4.U"Wc*AGYsP('Gx;A7aVi(,n*9?9c+ECB^pA=u4/I%,2u55$[_e\LVN(*458F&ye3.U"cb?N-)Er&EF:(cnDD#*]Gwm+xjKhvWM\6->aB7.wu\qO_tr:l_Y:lx4b'0KG6n4U"#cE_k[>&t?ftq(V8E)nX*ol9?Qj(trC,h2kzwnU%pchBjJpgr%^*EOs[nW7+eJuU"V?;6G]):nKH*Q41r(tTFRJzAeqL<<fd>><kz,L5CIzE8h+#bgW^rrXEi+L_\*XCU"S(5Z+I#?BTm/lbsyC=_40mKwX*mbDCU;OjAZ8,V#Y+W_C0E*dz?CYQOx'n;77=,U"JH<s4O*:br/Vm,iMgWQ'\TGiY^?u]rvzki4(\+cA.?acIgZX%]/sH1+Vr)nau[#U"RdL-ye$bEcFvlP\%,i:4tXOW$&tYH^\P9;7A?F4WJ$P&rI7_aV.k=H-#ekbKU&AU"SgZ0FK<PS$k>+U(+XSa,eTo]&GL%PB2f'roQ5uMktdltOpgZ^HSz*57YK]f?Q.jU"0#gML4r3whxPZq1H:J\E(orQ'*X>(Z304#Vr)(?,+>DwAou,Z.6_iu8G-X%I;^_U"#S._F9FWYZC*.FAJ&NA*QJQCXD9?v]r39C_W9oK?]C);)q/fV:iLJ+2)K5I[QBMU"bCYNoT*BED,;/B(]qDbj+8bX3(.P1g[akBPaxA1V1:G+t2aD7<%VPh.KX8g.GfpU"EsKwL[&Q]b94uZx26c#m/d08-;KydJ0P7Nsh5uG55#Gzs>+qKh70lt(7Y843XfgU"$HEPd.ye=GTW^/QwD$I*r76*YiMGSn=R,/SN?#6Elm?oj0)[O?jEJWmH4.Y;7m:U"X:;zZ[a1,Mxh?pDhi.qkht5G7=s;ZMxORsCGpiKd1JQl2v)d>3Wx]-#eGj#\KV4U"a#(BCn9cpAj)]+tlZ(s.SNLR^7N$fK?^8(#l,kpxa$5G3*ugacCqS&>1d6dHfcIU"Smut>janZ7DE>1h/DcY+lII=][rB(gX'hV*8GZ\+U>c:uMVu6]P?*4W&HIatu_5U"ODMZBnWU,KOtr8?qyZrURb)c4.0<\<RdxHPR325#mUgL<=Y-W.[j;0XRNH<N'6gU"o'5j6#b$q1R%2wlpkKvpvcOFW.<L-H#$t:wXfkd?.A$sqk)(7LMOAEkHg65mwDnU"pe^)0Dx9A9:KF0[)/$9jc*S<q2P#8G9pgc2IIQp7*/VvEN72zm4W>W711ke=Zh?U"1phmPWKU;]q.ZklJ[49AL8TkI=41^L0b&9>\Zg+hOHe/Qu$1ZtQFH?KCun?*4WLU"0aOqSh*9Z]xc=(>ufe-]IEE.uM\X*iX/zJ]hz1QUQ92CbYg>VRR].VvTPqq1xNHU"[6:iu3r/'9G+a0CS#$?CN9G<1%_9):AHhuV/t&Rh2TIi$8^PWNSg+GRm%ck\AR-U"Qbm_?EY?P+:EDBX-*EExMO6o&97#:4k4bY<,L%4up(%)/%+%%+%%%%f=$#S:]3%U"8%%4%^%%,#%%%'%rxSw.jk0/&J,+#++41p%(.,0%.0.,%;,-+%*+,+%*[,;%<0/U"+%-/0*%+:)+%<*/-%*+:+%/J+-%,=/,%/-0,%0)J)%J)/+%)*9*%.Y,+%<.?PuuU"uut-tt10%Q0Q0%a0QP'%1&G%H9:[L\7Xi'Ta*+[7H9^roepx$x.y%]i/AqWIbTHU"r\E+NZ:8ZfrtwXnhnKfpFRUD=h&SJt<.LtFL_.\S3M#JUis(H2t0tV[(,&]OrqbU"aJ_BMXUG>XFjWh22mul0pSO7x;FBwDA\Fa&&ltcPFtVxJqn5h&D5rSJrWrOJBxqU"0Uo,PA+ABYu227s,gxMWME-.%=H\k6:H[Vhh55=eWfEYc?lwRr078,=\(\4*$)RU"AOj<IJou40HH8jANP-hNz$/czT;T&fdU6mdKki$,ik:T-o8I\;#f3n8TGzTx->NU"u.ynM-Fdikn.4Q\xIdap$2urHBFtu&C.wHKLmG>y0Z2fpH+ntJ^sT>+8C%Z.t8]U"6^W9tu\wDwer1aXQ]5E7k<VQufHvf5OrwwjWu2]X<hH23WLF4PpTDBpm_SWc7:wU"Q?P3h\6Y$qTLcWHokUw-ot;A>j<Lm.M]/zYnsJnHetMtM<FS2^<PdY*7BLH='A$U"1.7(EpRZ.jOH$)lwc]*T7?h^F1.\glgvF9Z1Cw\Wv7Utu^hov1FHJYFJao[]=dPU"G\.pE4n==dTXRXiDklh44n+lNj67<fC?X;.O8qrl]6/Vn<W#v2,$$Hb#?k\pR]ZU"4=wSK/.%8m-pdb=ku)30)(mb&P]#kvtBb<<;WR?)3m0*r6T:;93$2cJ=f$grMJ&U"SEY4U.rQ:9YNUfb=rHFnY^jvF3l-+\kH0#(jPAfeuB/qpDZ18_oQxAAu8)3XsyJU"Od$sS(c+0a/_,Vx)Fsw$V5Hx2d]oV-PljlV-CUEyFjfpFzdrFN]?m6JW,W0;4F9U")(U_Zpb0d;BMc+b#BHao8qupNp4-2:37tXt5kNQ<odDbu_1Vs,FaO3<+,3#P&fAU"]P.t0HM3p1-Ti&ddT_xh+iR=D4+DSSw]'ZDt7G[[7$;GI[E99[CN/5b0u0fjBP^U"TGIgfG03aR5O?WKFM^Nm(8%Plhl(r6;Fl)>b\RXdZ-y3u-\[K[/HGU][>p+Zx\fU"5Ar4dYKvbfhZ/Y,N+f#Vp2IfOc1XD0j+V--fHcg%S.U8DXELw=(j+F/EWjFS6bvU":<jqUq(SVXoBLB\B-$NY*fYh6MmO-tE8N1n&BPJ/?H#dYcJbykrsrtRM5F\m<woU"LDm;r=GQkqUA#k+c(H&pa=mQZt:5-W0_V,=c(T#3buU=ZVdw?G.*QPZ5>%I6=OEU"pr$GK0$*f&k%_hh.da_*<mdA_x_0VT(9:-a?RTBdAr6%K$YGC0=cNOvLKSGVj*QU"^,e?H(h=;(bJzUbeTh)DktZZ'X.6Rc<H#VWu_$)DxKY#+S#6/:JX$%Z3y;eLz9MU"Zp',)Z4etWq?<tZ%;0$j(04Mc3(SjP_Uvfp-;uVhU;B6r<^3?%P8$pCu&suuS2cU"ljIF$j(32?nc3NN5[_:d0e%5rjVuGExdNU+f:PhfE9bWox,aWB;6k*?V_;XDh41U"1<OmVLFW>=TH/=OT+nFLiEEHb2oFh+z]\OSu>8Q0ZZaY[Td7vr.WQ=*IkIq2HB.U"y3tLrNsiM0ptE?vX6d/-UI0arfr?-82FB[y9U]3W^H+#0iTFlecQFM8,>Gb5?5fU",-G#r:D75&F-*gH_iMnH919STkLn3suC$ohD-wKT#)(hB;q>/A(nvqI\iZuiWZ(U"\42J^5$QMnKV'xc$U7x&msMfOZ?Kj4t2KGx?pKA8U[(Rln3Un7cefd-#06NZ,FnU"RJ6)N=QKYt$,->enq\SmxEkT?W7]u1NuAsmhUh=FBXC<1(kWX>WYE31$B6=X<H5U"W(dbtmABFlj_2R2$\D7WQ0ADh=/7&rFAoW6CY5in5a('%DmrmNh<&\TX\k(cjAxU"X^1&+;6&U96QC4X1M:JmK%5vxGk2Q,RG2ag&/RYY&V.C4^1eG(sGngv4+YY;wjCU";TlYRRV^m-=53Un05Xd1O%^R:Sbe'jm4(H3lu4Hlv<TP<t\T/rSqO,=R-pEXGz2U"qTqmCgP6%rc4ujF2kGt3Ix+Yb[Uycgd$+BdE\]x&*_rsL-7CRWj#)NO^jvFcEPiU"eGneqa%'5dct<kz83q.nSFlaHobeMu5CgtrQm+dU+4lPA^5%eJD$P5:\4S:oL5VU"9A_)eQZy$XxNi<#B5(C-wS^TIdW+>fpW>]FThpcj/(%<X6[$)1>^Cwb11f2UVd8U"pa1XZDQSD64,-%rPe3<CG[w2bIq?[?hhT(QeW0;YFTP]J6uvfv.Z,70ik5Xx.GMU"bc%QbYiQXE0vRC5ruG;mjD1r3ebNRg^L(lCZ.4pa;UK*5#x;dAR*TA=8k<Li9*&U"/=9mm3tfEm/:uzEpPA.wScb=&)j&P1T1/r#p?G?4ihs>de3Ezbu(GH/:f?8*RQHU"=654$?ggAVbj$+dFSH1+U#9n[i$t'a1OM)nN+3/j3#-]0f;TX/.>[.jjWocsBNCU"0*v4=[gddh>YnRE%>fvTW?ka.g&Y'sy;R5NGta+uG?/mmHISl._c,^.KumRJ\D\U"xi+dKBmHIv9atJd[bf'o?t)Wi*,m'T$*&gQI)>OJCaL*d*mn)c4OSdxIb7bFaP>U"<>aCK5lk(4ns*&]/%0b3I'mG^oxnEn9-g[j;eRTmE&aY)IrsE-,$;I-z%D)(TRKU"8>hW=U24F%^KT?6*UC5k=95BbLN;#5;R#7+i4<CSH:1eVm,NmxcM=N1k%R/%qIHU"9fHwb)YOBF;DHXd*1/kc[k&+C(7CI'MvWu1fw,smfm&ucyMqjx:?^-Jq2NxCa>]U"M;>?RDwW6:>Em4ONQ?CX+Zt0t1#6m.0EjWDZDa3PZw;tF9i$);$XJUc\'+IrK4#U"W*gXKu0Wg9$;l=#b&t[D27k+>tc1G*P7wADMSYo4y\z38P'%/NQq2Vk_9*pLTh?U"Vz>SWO5,*MccZuv)(//l<2tY_B5GX1Hl?NTG5*KJM=7dSM9)tQMh?KrEaAQTM?mU"ls5O3-v7_8aNi1X(vNqO7aJ*\3[6%z3_/+mCBpRH],v4?mdrbM$a/U[Ud&cZGDmU"l(qI2BoP'i'0?+<UR64gZv=yl<gHl#OMqz4ZGRBD.__#,tgoi]qMmITO7(O*&8NU"G;xhR8m+yC.RHSZ?6.:VBk;k*.yuk,H.e-OgY*WNpU*?=&O_iCIvo$-=a,OmC?hU"*?Fi*yO<:-_fhbSl$d;pu18=dw)SOT1P-&ht$sTrN%y1QfB87$d9oER*kLGDxJ$U"P&rj7sZCSFa?zj;)v*uEa;>(TD>YHglSod0r'a\C*We0NDD)X&ljj6#[p4(v.18U"OljO/]=7r'\XAiL0_LW]5gpwp$DrFuew$%D(X&tnSZ#*9YsIUyfGoM^p:J^._('U"R\o>fNNL56,C3N.NTK%O4OJbWd++[qGbH+3]I7%ra&5;MjX#Y=<]5d&_>7uv-<aU"l(y0'MFG#'=kx$*Mc_V6s/.$XtU4K7dWXZ,L*:pAVW1uSM*v,$K)2/-rwm/bTO:U"O6Qq99cpZl:(-n0FA2=Qqd5NlpK^xOQ$r/1*)o)u<J.O2*>b0Rz\?N_upfyO&8CU"*FPRYjB4auIS5NPzI'LDRDYf:6JgG5;n/+PU$r+QRfFax(.5Lq0dQ(_tFxUc(]6U"%X,VTR$K8K=w^B13+OVco[1.,LT.VsT&MmW*Jp]v3?_:h5jkf.Vd&Iu,[&Nk9o;U"5o?fs&\pkU?r-fQ,V#6Blh9K]E91oH*xIGq^;'0'fS\aGe;UG_\M#[sY06Ub[h'U"DvseOZoa<5]hY.i4O\N-%F6)%yAJ;G$1bJNFxX5kxE\gCNSxSl5=W&.L)qO$Fy*U"2U?ve'>j^Zo2Cnkb+,0;_0hJjNoSp#Mn?Q;<a8+2w/&4+]W[+;-Z#5H1)k=m>]vU"4ajgnev)m4R]iMx:.%>JMp64o>UhMV[8%ig=0t2\y#,B\gPCkQ*x7t>IuXPjDxwU"J-h-/.*)k(%&<cGaZ-U?W-MpAQt'qMk^L=&:;[.4F/;+vdZIn,+VCar7%(:Qr^CU"cHPG&(#O)OUWjgaP.MTVuihwLP=6^Y+0e6uAEXUQQ;%A$u)$Q6>$>09$V)+&D\dU"-E4l9/V;G$Jvykp&T+0Y:p\Sma39mOgx/A4#Yc5$FS_DIOu,hVw61KCF7F^](-aU"nofg7d5,.R47Hc.?De(=mgRriKaQW+R%-GJT=LUZUO6\H7/Sul(9a*H(.]=wHY+U"AZb:c'>8I(Ysio&$2#=3s?=O5Z&1b1H0&+Hpr'<ljYA^<r<9t_uH\UhyqOf<f1;U"C,:x=]f]cWNS8KZ'qe51.9f&zClXB-gBoVe?dHkUFMIAZ/ut&r>.9N<REh=j[4LU"g&2j,KudUciYN[rM_U2\\rsPW5Xrwjuo&)acmmg._?l/7X<7,VLViYyX8H]j-3'U"9PEq'Z0pQg/w,8aLi6qfT),&VGS$kV>BX]]#iaU'u+O=e9Uan&Z&Vf0F?7==-LuU"t?ltp6A[FCn%]XD)m18-k[[2y?4)<M&Ku968(V\#/m\$?-sBJh7jE.i.Bqj]Gf/U"nqS(y\hthDPsBc<YEP7j>7wI2x7DBR(6.k([\f&9Wi^*hro'B-Yn>cHoo$#.GwKU"\0-F:OKF_2BEOK*W)g>POS0>qMF-Xp^5eW(f?-i\.OHhu'GW&v(/'zaFAQxy5]^U"[Lgu;eP&DS0g0O[=$=)e9fPfZ.:#dA%4$68#KmZpTD.Z6E**81Che,ywDoaOwZ?U"Y9.OZo]#X_6T>Paxk5uc?iAQ3g7zN87^+Sra)LXM'9oX+]HP^cueuSfMtg^=5t:U">4;_%&^]SC-DGsy#1E'+>(CvRiE7QL1sy'h,fZprVi1%I(?spc4D0-&DX-+w#?tU"p4bXMvo>gjHNx0fj<j?:54N[It=\iG/kSkNxovTXUWmAIeUVJ1ey57%^)./%$b*U"kTuJ6cwf6KCyUtRYLL#WG%Ff9Rg0(\Ok-H<#Ev9?d_exTN*Y2&NCq-8=A'SV?1GU"Kz;4=Z)fdY.;.:R;5SaPt(k.:)>22XDN)lAuZP[Jp6$E<*3nZfCCY+Z#E1j(otkU"cnm_G+c.8K:.<r15$r1%kvgL/S,O=_'g[6:Yp$j9E0[B;4_uKH$.h:Bxgr_QkHaU".#?N*H^yufGG+Y'Q6l,i'jp^u9sNq,_RPZ[&X>EbO8RXiw2GCT6=r5ZF.lC*.;.U"u\mO,$:wqGR&WJV2qs\;x\Dmo*]*1Fh?h[7*eo(ki#.CN\y<I1sNlN]sj'o#nJ3U"C-JZ#1]]&imFI5.1GaP(8[\Got?[]TLl4zm*7X><_+jfRB$NyGI]O=G0)gv96'AU"G']*'DSA9qM0M4^98TWotI_r'Rh)Q9Yc_L=-BuAg^r-1iV[^JNTjL?cNHZ(H$<]U"e>Jibipxe>Ol9]C8jXQ%Cs:g,_\M%jJS%)\Wlc=Mgk.wLNo+=ADD=jk_ZgtV)OBU"vI%zU>XvXNVUk4.7kU&<_R_o,RIDk:9V74\]GV33Z&w*5w<-dp*.v)Xpe4zT^M-U"dcaoD8HB6EERZ=zk_v*29C,SUWI5?s3=42Lv%w*pG\s]-IV4k014DL2owS7,KBBEND SUBSUB V2U"V240qK:E$\7gB1LQY(;OfC%X:HboUd^.$L;tMNJm*O5RRF$k1UO<:W21AvQ)OR_U"R0JT<h0Oqcz'6&br5[',Per$^3<H0v$>XP*LJ_VA&C0M<+mGjs]GPv7,[HY^:TBU"Ev?V:N>:8OKr,qn[y,4c/I:QiKv$i:yHc&DNJR,]T*uN$i([eanR))^(a]\*DTZU"VT?qlONR.XJ;L>E1)p3qPkP/4BP30HHs71w*c<&kh>+SNB,to#3:>;krf#/Zhm0U"t5J/g\6k'%on9=^hS'HqvESPCnS%cO?Vf)Mg)4)CXSE;KG&.=dW?#asI+G;8E'YU"Qn\^B/Az*^eucf%RA=)d<Ek?8Yv4IsW1Oca7R3X*fce62/9L^^HtTOij6oD:r23U"[U*5ItJ\MJ>^lkdBBTi^,fT3FEBHJaV&k(SqUIC[M<RSV%Fb^tbo<2)ZHD/b=b%U"4SlAIq&1;g4^0J#43x>2&Nv#o_G8TBA]hbWm13LCS(c6=N'%iYV,hpC,T]-ek3ZU"ZqCs$:M3'\A9izW#GZvG\Aan1yLcH6\n&C6lupqTrDcWSChHajiCJksQ9H5fx7.U"-_MG*5_vC8l8h1HB3S%-t(A-%mtrZIWaQuSpJ*1FEe$QnX,=f4oc:U.nEHM1Ay%U"GU;;xnZeXTYDWQketeVtP>4&XCMU2&,3<*3R>PONq#X*j45*1:%:,up%()/%%%%U"+%%%%f=eOfAC'K+%%%<5%%%0%%%&'rxi%jrtS%gfx2%'&7H%9:[\h7XiT%a*+7mU"8i>oGepty%y6Az9QuZn2_'jspJ)-bCxfgR7s*R7Z]M-<-Z+R0s7'U0P6^U<U0agU"*q_3D/5LdESbl_r0HEs)hTO2keS:[egr_<o&_+_vd8uB4kExb3(/eEQHELC.B/tU"p_r-<_*NqULD&od;=*7+>Orrl=<8]J9PbH^xin^e:$G_I=?fTf'QU4^CpN.f3L0U"s\(U->6JK*.>X6sO>xZM[tR#0J=>Ll[[Q#^cvOQVW40^ecROwDl%V0$AeJhDksVU"CJZYv31KRi,CKp#Al^kibdVoD)fu3O:7NXY$-Zj3'(r,H'hgmwRYCjs[iKMNdEBU"VwpB1bc8u&xjf?6&cCMENstlfa^ZC8xwDRfjzviF3roc5ZC\JLaW^eetX;U)^5mU"r-?'SVPM:b9n%M]4D<-W-TeUEZjs\1\_pBNZCxxo#33^QyOv=U#*6Z_Jd/'L9C4U":bTnGhZ7E.*Id/Ib6279?[1hI]a5]gAVWTEA5\HoD>1fXrB6<[Otx:,4Dk2LYOkU"<NxNy,0Ios(*U>PXWgpgsXOs+>2Ql^VxzSl,]Iy:rcIX2jhLpW_=u6n<Y-Ha]pZU"Aph3QhY$&=pWt8ovE3jE:\jr.ETk5oF*8[>hHH(TzT2Q+*[jt5yX,B%xz/MuuqIU"fKDje5qX[HQ5\Zf3',d(RRKtA99iD6T4$U5xI3g];i[Lb1H:2o\cTL52;cn9L)mU";Bj$jtt/K<S3*k5#\%Q#>fm5&8Rm84WOXE5f'Y$T0p_05V$f*_rqXu[vGs)PwN%U"Fj?T:&pSjDxEE2t6gHZ%d35T:&qX[c\m.qDk)>oqAReF$HoDaYAC5#HviX7b(u$U"ZsDdE^#qtoe*1W=:7ic8=XMm=(hbn7ACBvq$d]B,;Uj&X,%$fPE[AW5XI5qt4E9U"7t0-M(AT;=5b5vcyAZ<'YkSBc.C4lY5i$/GsFXV<u%6-VCwc05Y+_Z_/+fBV^.'U"iz_Kur82v11Hw8ifDZvDr\o&>K'sbA5:4QQ0/MF4-XP.V-G4XgU\EZBY%[h(T9YU"xRp5k\.[\Cn62DafJbjb+\UsD=O4LSk'E>iLT,]6jR2wZUL.,89+Y.HhsIJVOk8U"W;$5?61(FHG_t(3fLqRR\Jsar+ZC8gE9U0o_TImlN,Y5<mxy2_GOR1a]fZFo5N,U"p)apAI1FK+P1$F?G*'m_%P[NnVs.d#rqxbf0-M%O)NOa*sUc%RbMgyfnFrG*,K5U"+f61ZwW_Wgw?J<,-L$]xqBI7i38(;+o:Y**HUH+RU,]79EPCN7_'Uhu;SHJ''s?U"CUTF<R05q*oMrqWCMOykf,xe_'loelq6lg19FMtSB-dv1X>p\t9/N<PCwF-CT-VU"]P+GnelG\O,IlR6^pE8RS'31T$%/MXVAvAVj\e&3\$:_oDoB'EUju/s^n3.sLJtU"QC#D:DCVUxpYHpYmJMF%+FciA+E6Jcz9cbvWqN<V5j]\klRdOE.x3nA&ChW9%AkU"ivkuD:GX+-Pi[jVMD2\<S>PNrDlws/gP:3J8xhk$9WYX90;7_7L)PG&hm/Ja%ZmU">rD[5)4,X:H>=B93-,G]^d<J_Pr>y=F=nV4>;jeN2Rh/9v.+XZZB0U1j6K>O<k$U"A-b33gkTS.cH%>ZL55+Ay1+tlRxU\]1-&'A7&im^jL9.#Z\tz+cuAyXTFx$0,zKU"6kKSi=Nf.DWODo7D$8f;F:oQKYELvtpJ+T3lkcBGZPFV)h*ggpPHEjh$jQc4WOEU"beNu',dB0L,E/o_7WL+NMOq[3SFxbOWQ-?EILkTQqlG?LUF^cpjpe.?+o6C(tuIU"+j;KxTDUa#7i.b97SW^]T_k^5CW/P)nD^_#2C2=qWWMob:*&AsKYYhz>*sAO0_=U"PF*Gzex:5qb=A(1?dCcMbi1qv?W-'Ie5Z75?*fj?pk0=$$$0tKCL$$GTa8tZ[6-U"&J+n#8okY(8TKzPv1,7;lZJJP8=)fhhG$.7s6jF*jGATko^sI.Wi3u%%4l=cDr8U"m,bJ6G/'%IagOd$Nl39Yd')r-jR[T&P3:X8VYx#Od=(d<Mm<(6bum+1?nE17E'%U"5%iP^&2uO1<?qIw2n$JkRNjlc?.N.Kx#g)tQjx8#X1-R]8W5&Y,2<(<mgaVaiYkU"5P#N)Lm[ql-A4]q#IW5II3k5IN?YSamUz<T';yn1CV>*88fS3QK(G#K7<*ZN7/\U"ErJLJi<PnD9y^zta)%,up(%)9%%AO-%P)*gJI$.v1o%>%%o&)%%-#%%%'%rfxS[U"gfxfga<BSUmbX,u^xIZ\a=7[DaS%hVZB#Zq?w>Yi#_,$P9dy34=TI1Aap7X8HcUU"4]Xt\VIX?\St?eVUfNx&$QVQrhNgmMjPm0e]mCd%64=Eb8F,uEXsg1W;6(wL7CkU"?>UOnE%msD)YiiY7M$H#i5TW0$0U3h0CDmh=9X)I/D\udIdG:kL1=NEoL;\Q<QZU"6PW/_i\GfEe*gA#F]v]X:[Z=4_Rgd9ZNreGeMZV4'i$IF?%uYCjCPkc?nXRG7^kU"Mrg%Z?v?Y(Q7c7*M_kw(Gv,W\aUNQUjroN/OW[b(4';(a)-N[ObZlvn5^J#F]p%U"x$a]ma=1<$J33Vs4x:J8.47s63$rct%p#VIp<5.YI)]qh=piq>ZtqrsRXO8ilQ*U"O14&0)TN>4,0,EHx>VbFrcE)5'2eZ?:ojw97%xnHUouWbHalL.m9/.,k7f'NzrqU"l<Wlr0F>2m5ZMt+&_e4c_/.JJq-Bd]T''d=lG]ux/uXtkPx_CTb$-R;-,Sabi,GU"_6C6?<5Ct5TgmjGX6rQJ\X%N^=ih)q;U#aRAVFlUDy10nkVwY6mShqfWG.U,'2vU"9k^Av1[<cKoy'l>p]p)>e'o<2h1dEy>^Z>B>UPZ.[d,+DU:FQGO2=zrqe4_SYdKU"wG+daw^b82WyXYQjPrT^JzmmW;*>j8:SA'Sdqwerq:MYPR01X''c)d$l>uTOun-U"v^5DM*rV?^V6gQI97I;s#jy8VJSahfF+^G;yiJF>rW8:w>gvSg)BhXA%<N/,S*pU";WgNab.ci2fuiCwKDdsb_APhk63<9H>3%,G2<uHR'dmqdA+HZOvi0j0NjEo'\C'U"gn%hABCwD[WRm*d-l/7+LkPn[iv:Axr<RrPC0-BS?X$T,)EG%%k^Il:e7WFHfUpU"yQ9gy=.bJAz3&b&EJXjjcK,U\y6]>uViR74*5ulDJ]a1WfDjUkwvZbrrCX',HkTU"P&E=av%_xh:0Px][yrsA<FYVg>lv9?6FF2kZE9<IWqr%hV:I/Z]lZP^+YV4A9>kU"\hg$qPo:hHM<R:0AU1MdV_aUA:%l9:FpYxdaOa$-KV.<$JD.Sp5S%r4%_vqz.1qU"(;yOtKq,k<03*mzZT+6Q')rM(Cyu3bsB2p1RDB,O?p2=_kb9LkbZ9uD':rSC%5xU"1(w93=s3dss+LlJ,N1UDDlr*v(8?TT2vf?[elt8[J4vCGXU4^SkMf-GQU,9yh1rU"%d-9mkYb+ETn=+=)W,cM/7l>C?-L;a1YV=AbE[,YNY*<7mj8]wrT$GH*_,nV.Q<U"<OjOs8UjE+r$T&Sub5fsy?Lbg*KhE^l2g=;m5vp,fLV_6iT7U'x13TuZi^8_v2SU"8k8PpVDPZpk$:6<Vu7t3cJo,\v?vgU*K,3%rG]q'sVADWlQ:JXR#fU/0NHauaiKU">BUN<RMFLau$G/DczKJFQ1DkWvN)-05H9gA:S9_yf>q:VSp::FH7_m-8i7tHwC4U"5-*&:#WZ/Z[(+s^2s%<=K.3\mJ+:Dg3GYqtnXRtqHFl^DD'V=9S]Pxyn#do(edCU"w^ui9\=<L84OU+;^Uhf^>v&joR4Lbk-QHHZ2gFt:W[;]YvcOT3&BCIg'h(-3\NJU"k%#?N>T?&41RabTJm%2M/xR.L8oW^2ZsciIpyRW1o9pJ(beMAPvZy%OtvDvRCnOU"p42hxI/7/eX$w5^w<%,w5#fx.Y5z_bQ0e>V,eAVdNM(kQ8Nl.dBI;j*GV+Jjz[oU"?A^iU.X62>[&?gO]DKn4f^?P*+?bWi%,xGi.&1L[Ed>W:;g-RehAWs?fGsuNlJYU"/D:rLDfXxzXn6Xe4Y<JAmd/]3=A=KeFUokD?1&<ZO[w]lsp&fA]an.+_Oar/th_U"=-8QU;\AC,q,gHj1L(nWK2W8EugO:0)$S5iGH>*I>D#A-9YDz\?K7%X&D^2#(=AU":9WK.Q5qfbg(_FL-3Gv5)rLCIF*-?;o;6y6FMo)3[gmKRnr\BIFyrB3lwDo;wh9U"A:F:r)42l3<Md&eQnNQd#mM&V;8vxKDjfdESO6%]?n4[K;4q?Lsc)-7v;2jslhxU"MnIc)gO59Xq,wB0Mf%^J9DJ#xui2u0rB7L5>NNFd+Mp>F96?9Fv_A+G'?k$<,kXU"&BkdgE<IVvHhx?vWhNA8?'+Ej)YeNM7t#E?jFF6CCzbs'SInX/P6dbCsJt:+*d/U"wIB(H,ZAVU;j<b1i7sfaf$*'Px,US-3r1^N=133D?50sCfeY.sVhHt3_iQu[MLMU",bzwdwX/(^rrK$,JMKkjq21slfl7eC/Y:iDcEL\nbQUg<'w]/A0=VU\Z19/NOP1U"l#zxp[%Pa;_6s:xupjP,.c$(_i2\/]H=2_XDpC]rXu]q?(-IW'>2cz(ZoJ36=n*U"&<n+3'gkUh+sAh(j\U_az(b]3*KL:^NQ)rD&2^I<lbl<9.t^da=C$q,wuj9#Di#U"8*R;Zf<hyn:;=uM:sOmh*3H*Hsmgii]CtEWsQg\\3\2_,k1J5>-wj/_#Z%s7bM$U"*pUVvLx5smp#7QHoBu?#IV9+M_gFjI#Fk6l&)-k(HT?SOZW-5o(=h;==/iM]:EFU"MUIM'9%O>)z?;V5e=?#+Wc*+VMK8XHdiJ5mvBG6VWm_-u-ohd$izDV)JEBk$009U"Xc,d_mU^pH,-GcD>/R%fQjs5Wp,EDJx+2-*5Q47BGgbjF$hGq%U3KZ\_QfL8*,$U")Zs5lb%q1y^U'413b&(ESA*mN2.4'AO1I_UrbfY_uwh34NOH9s*v:BlG_kA[<62U"bG1MTA?8\B6H+\8ZfuWWNV$SpuZLfFGu\TBu0StsV:F%liHW6N*.Gi+'M/[H8(PU"oP&nveSUy-/fAmyM8CLp=1Q)12ZnJd1>e\/<X*Ix7aNXd-Ti#)?Fb/Zjek5,QhDU"FG)[=Y/Z+gUCrG2=q?ral6nANd=8(dBxTa(aU4)B8-\z%JQGT'7xiG2'JZ$uWNjU"j?*?[-6g5>1SFtwQ4RjO^V-TXhGQ_A=eQ%(xlT?.UeZfeUMHap?N>pHzsE/;jbPU"qV.tq321iXR2aMV:3%KAq/+P=i>Wb,J^q]BV1<Lm_Y#TulEZQbAjIi^gj9Q420ZU"JSR^0T'mZuLU'<0[8XwFVQb?=,H&Ik97+jB'lG9jMA^6PF5Wm-4D/Dw&tD,l..)U"[Ra^.r)_1#Q10]ZQA?;(<]oZq'umJQvqm&t+6D/J<M$Hx<pi*xZ9qxk5=XuDF-&U"IEa'NS<qV_K2v[pT?rH5aA*UJLE#MeNUGE[D4CFDx4jgIDciRBD/*on\Nl>P2c6U"kKmcBg_,$z8B;G1r/tDG.bZd5iU+;mQFRA32%fqDr)MOX5;*VJ;Ev\j[-\)__(?U"\y?&u]_8dZ)G0ClX=Iorvp-c&eDTjoLe%aMQoL,k%M%A_;j#Aj:nru+OCTQNW6&U"iFsNojmsnEeI]wPp=S0Z6_2eaB;HIY7+4wH;*4<6gLlClu/X_f98a2nndo\bg4yU"jN2ji%LI1pDi,hTt3k.A(o;cSLkkEbAYn4llxUL+Z1::esgtxb&xsfLh%,G%<liU"$nA4WpN9ykt/:ur(Sc6l_nFeWTG'LuDh>>7BJf:ci_7\J%,3XKgW8bZiol?;'RbU"J^yz-'ZN6\N4r<wB2\Qgj[.v(Sh+_Lq:TEDG%jat73(o_MB$hHh*&TIrA;SFxB]U"]JUcpfuCSa.Kg&sw.y.K&8'%#^z&FhtJX[,Ddb]D]y+B_K7Wb9j,r^cT0PNvtYsU"/9BpBT&/HAl+,n#Nhg3OBTZNh_5osORO08ZV2^+mlieu5o0kOTro]joGs5$,.WOU":OrZ3e<F(UEYldKc(2U4CYhy%I2dNssIMO>HDANa^z7/AmC_IcmcC_>lleCq\QEU"?*aW=9-klBCIJV\HtaOa]%Y&jaKgwN[Q9%H_G3z5c)xD_80vH+zZqC>01Z9aCj%U"[s?\RX7\VW5H&uI([V.sT8s>fbc=7<0I5V1n3tzdD',j=Q=J%U,Mus8:QkFZKQ5U"FQT=<Y_5VrpmL?W/S5LY-=01Q,6I<j7DUY36etP0.*<UW$%XA^44u_.?0K4WdCvU"2Yt)_O/t8zcV9h0km&mju]%NK4DfAoMGbg-8o)b*^/8uUSpmTXS:/jrGFb=(SLGU"hAo*db8KSNl9ePt/v)KqDt8$Os-d)$]j+yGm;J2M2sYeVQ.Xie?N?%S?.<W5H[XU"\SLCGbE7>k#()hNujS&S%Bw?VPJl()G2zrnbSh#lLBh1k+xIfT>Q&yN<>0CcX#2U"1d'7eiZK,uE%lH2DH9<623:NQLRSCj-LHV/i=B&xWJ?/cr3B;MnEcwA&b9R6/2VU"6xCe-q&apGc;eVT79M1kbZTYB]o.Oq5]m<G+Zc._q>Y3b-M:(eV,iavWt0A9B]BU"?$573\D3s%M?O^n)oA[?U_<(aj$RkY/DVW;l1j&ea]6WGtwE<=V*,bCbx_P(VhaU"f(qQPlik/+(LBe7pdCyzC\hrE\;\J,KZF*3kQupo+Fi-kiQOH]WDbo$RgA>Ha8:U"jLfYDr'Mde$8v$FRLx]aJ\*x1&^Txe$]]GePiLI$Mfni%3?^zFc5s>^7pM/>[4aU"E</,1'sv$bm:Um2N*X\k&7woiJo14iE&UbKQ-95hm0/4hz)YF2J0%1u*$<Cepa5U"hr:dj_o^gkGA<8Uz34>+FiIn%lu3CxBZ5N:<Af#(7zVg,&[esMA9tO1oz7Eqi[KU"Rzikak$Ws<o]qWpG?rOA^'0:[+VJ'rc1oC[cEkf;2qdVl2JvaslD?Z\g]m;O]PQU"7DLbKmXg$%vY)#V,Y&FvMvj(WlGn3jOq:CVd5HHcpiOQ5?K^q*9MKZ&X^<>hx4mU"kaK^Me%bRn_-$WGr?ud;_9[':T:KF=N&9t'[vE)ug&;>H6eELAsBS8SS0kwk[OpU"d?HMcGrCmk3YF1UH<46:w$3/if9D(nOKF-D7J4&akD'46aHX5(VTk->a/[%7:\bU"sP5VxrPWGJ>W'/$wOc0Pn:sK,K*.)ud+0/qLu\AHH+(]c%re02-ap8aM_naa5s,U"jIYFeY);]a#J-ktXo]YA#>8Nkf.0VPhMH40B^Rl((gTiwXGC;JWaN7KM,\98ib%U"d'M:I&xl.lV5_JI7d9Fq^J^6%]&[Is3vEjb?E0r%i'faH=pjc3Kqob5t#Sk3.>,U"KbUJ(wws[88M:dIB=J('5u:<DGSG:lkaCfZ7xClt+s&g3SG(s)2E,yq\]0n-%LaU"yHB6d7s\i=EJx=y3A=F\9YI/iQ=V&$:r&C0-n&:-ciDQ_/swN&ujN,3wc[31qRYU"45rg(\VMF54U9CfyX'AbMJ)3<nQQu2#pRQ'fXsI*Sb+DXvaM?Sd2teAN&PGaCsmU"f>0HFmPr'\ND8Zt^ipspq=PnHlYYNFu>lQbemFv#141aUZ==ip(ixd7<uT;<p:oU"U<jPjO+k#w&?DIi/r)vUNN<NWu-r/#KSsH&m%s91o]C-dS-+)WX[*.he:Opv+6$U"ob/u*1Yvx]>lU&ZvoKv[9zQfROd,sMtF/d_Rf>%c%'U457J'(XsDS=&/5+1I<2GU"UsFj^U_JGE/tu1xEQf^\;pH>a4GGESu%=R42m34k4eb/5RH]0Jmk+ZG(S:B1C$$U".SbmMxp.^36Bp?SRkcOX;eeYvhNq&-RHMk#i:c]:o>2WFOo_?LuEBH4v^/DAd+rU"2:jiqW*)/ZD*Y'g=J9%Abg6(O15/536EC*v:U%QEM5b<y%19jZrdZt[5Q7b>#DPU"d0.+Ji_i.Q+NhCc%,)<TC=]iJaj.w%*/_:bTWhHw3(_b0n^kw\iLs1ipeeOkOP3U"K\=_gXu2cMbsfxK_^+3WI)hyX]6EO*X8,d^^%M6%U:j;EWvWXa.)1]F(]<fc>7VU"?Mwd4u0tB#WaHa#1=tSoS1DjYl+RSSuNLUM9eoeEGtf+eC?[W*=P/5+]6pdI3&TU"[S$=$IUHMH>uTK;.sKR.f4?^x(p(boS#Hu_vb>uP\ge>+4-/Mf[Q^fb[jGPXTCIU"5ED?BbFY]6tEDaLkBP#tg+NErT(8<7L4U\=B,^UV?v'Z=ak^jbOL-(KSr7F4=3mU"k2LF\zd*0F:SgMxW1SzH-kO%c/xh3GkLcnM8eYS<qD_'ulrUABh,0ovEf4R.BVtU"B$HI_]8MfhCJuJR?YUeeBW;ii+T4<aA1s(0b?LzqAxM.;*U\]\URZP<vp_/l0<HU"FNR\nsF^J0yg3>GX05iH#Yp4g;>Mj^^93XsrghGcqYzbKD;IUVXk\?oZX_QSCDVU"=jvXIw7V;Y0o#TG./B4?/0nla7yhg$\MDE)l8qtjSF:-7CNGp,5Db=?/VgsQ,NaU"gGF<4=Van1ZwLYCXr4V>gYx3j>aJdZ2UU(s+v;4RtvPd0XJ7>nqX&,HbHbv(k%JU"VCQbbm4WSyMt5a<4jU.<T?asiTbQ1NoA$4(s*&:/A0b0&1HB-I:ZbwQi>J9\lb8U"uHx#\cxI(qENaNqTJl5h&j]ntbU3jYvVs[FN0cJ\%mmV$R?wppKt3/Y$OLB^dL[U"&+D1Gf=246CkUP0T\<]LahiEZc4BnCgH)=jBEH/V,<^9ox?ZCEogG?Dp.1c*])mU"qoFXrk[_8CRbeFRF2*$f%^6SMhY7G=QO#D5*_BbzTpV3)km-r'Ghr#(\Q3oS:U)U"Qr,qzrvvV)Ldmt=WAZHY?'REIlUG#ss[GQ<+S31jjjD81ULUN=13*AC,9vuztTeU"d58y?otoKydH9Hh1cRwXJs1U3^;YtL1d1RAm\)\jwti^zQ$VaBp$'DkQ3mcx&5RU"Iz##ZE7-'Jnu.cUyg0(-Lqn[P:x8j-Z_zSQ5?rXotQp/P7B_^f*rr$g=u0Yb.TUU"E_uprq(Y([s0oqxs$TdVClcnUqgh$e[75j'g$&Wp&pL1&N4]Jw?p*K:0h,wtq3/U"Vm?rI5dB?Qf]<4)t5;mFhL>M7YK)Xh*1#Oss52qOtoI,7psInNKO\E+D4FI+kMrU"EJ=>e0JEym?4Ng#(RyZQGI/tk<?_/2?'fo?_%>t](;k15f3lkmirbb$,u$5y(<VU"43=-JHCJI2iL4m$YLtZ5?O5HCeZ<H+9]1t=7?$fCpq?[J.$E7k<\Z(V=]im<nk1U"I\l2>sw^76f;$7D%3/hXmTt,Q_sx+(bo<;0UlKbRftvr#\zym\mmsDaJwfw1LrpU"wcvkICm8>L0leL>\f]d\,9hrkYS6l:Ys<rmHS;=>F3sL#H_bJ#OY$#ReYls<2l/U"8<bb<cREH,UpgUTLZ-97]3:1JKB7G^/QD_LXqsok'6qNoLyoc+h(Im6owtd,gIfU"A*gBg;\,pg+p#EQdDcPVlM'q]U#x[Y^XL0-[QPxxB?2>Z8-c>,,ID:dHYjs3C95U"2**N/>_jgsQ1%i7LK^$]S7i4b-#gS98Sq)rhiZ#ebsm3vgbO[pC,=k1e$OhS6U:U"m2s>)yKr:%VwHAntTkL1$uMEX0m+81J1#7jkQG6Tk;p',hVR5u>C%t_zg'k4\RdU"om,wg>\f\e4kxB-ve>[pmf$-LoFf](3H1[s.aIBZsaL.3VuXdHP$26BlWH,+:0(U"96WF44(FdYntO](fV:9urj?pZf*I8=^>aJTQ,_\Cj\oh)[i*si]QY_*56lSe^=WU"Xv]H3'G56;?TL-r+2d[/Ym=3tks',5?dN_n=aWGoiI]/Go[i7k)Ua5mV[-4W#MwU"uQBw2);Z:[QZH/#*K+y;O1=D+myg3\]4jq6S7H>[,g_VnlGVvPA34nvR>)txEN>U"+ZD>,tbE?H%w.\KegZ[Km63c/bKrd[9[x(HBX^#7aWLl9G>ZnPrJnv-jAqD1^fSU"LJ\kNm<9r-66/%2,DDSSuMx7n(P$vwo+H86i4n>ywqQ9b&;q2EH[Q#wL=Tl+VlnU"F^vKdz#'s:<AwiJcnj$xNYf##r0$pmT()W=X8);tYHHYvW%ALfD>uS+]F-9^3&uU";DVwF#ONpp9ccvYh9h*xgif%vVeHnt($jtT?.rj^bB:X\oN0;N:0qN82(9txq0>U"Uf$xq2U%D1qIt>M^x\h>YCusfcGVa6x6=XbTGP*fjh]sLXN7<X>\+c=</u]0D=)U"Tjgh56;D%L6fXXh^GRv&pFwN*LC6QG>>,2FijH'nuMDG5c,YY4ku]9'omk5FDYyU"+5xgTRP]M&vH=$l?iV\[DGT1UkLEgMGa/lkC&$mRNK)uem.*mCtF*r4iTGMrSG9U"NLQLIw4FMcWvyRI<8g:(u=D048ay/5e5m1kX<0SnRF-e25UN(d(o+DKsah<;f+yU">^;.;H[G>L/.SLZEfZFdYI8qr(Te6^?$e&K2E#1eeMop($F9::_5\T%G1PDob4$U"mQg3lW..0I[4FLtn?4Avj]IGlp$Dv_7IIzgu$:l<ff-v0Wy1LV9Z8\wMd.ou<H+U"T1v,cTUj&H_PoiEY)GWDo/h8u$n+GU#HM%L^9M5MbwHR1ZB8IdNq#L>AMBF3f3,U"oh<m303m(WPivy-RW7(e'B,tP<PaV&MY-50fSRPtcem=%-rL>_0fKY%x%#up(%)U"/%%[%%%4$2fJJDJ_<n#;%%n%;%%-#%%%52>=CS2685l%nk]\A0e&3+%,%%%%%%VU"(Vtwwi.BBOqcc$.u.$OOupppp\tVV.RwwOBPB$ccu$..puOOxxuxxxx%Q%%%#%eU"&3[%%)wF5Anzo6]dF64x/MM]38m_7).?mv)UJi/V;U/FFG&b#D)909eOvt3.]E&U"%==R(m)9l1R%qoj#n5V*mMiFTjN:9K2%saq)(K/E:\>MXvPa8>Kw72AB/\N%+*HU"&%R*)).s#R*MWX_X)O2?'I*[_OIS_<]2$nbrJ37\n)u$$9MtvvxL=egaMVky]2WU"^_$SR)1hp:O/5Gn'>\c0<<4l62sAts:D=d<&O5[+?h;_r-W6m(#5/3D$c<j(Vu9U"T-8[mo%^KfN%$W3Qkla,X;$4o>\KZa-nS6s&'Kg9\=fh>FFYV5.;/]p+Z9>%&V+U"8nr,?BVo.0wN7IFe5T9*6I8dA/0u?dT78=P>6__5N_InlRW*N+^xhOOY[bC?i]WU"lv<\(g/3J03'2S#='IY\s>z_#x3z(,9U+E\zfl=MSXi_6NV%kA%V503rpno/f>EU"+9vNlj1*Mm+#9BE=*JYn^qWe>2T'PYNmk'In+i?7:E)X<rDsO<$M-nK<WrtY'DuU"OLlMR]Qy6GL64JprBd\_?Q$2oN\6/,rp,*D^9yos)ZL4Kf6]/+(_bVbBYhloYxfU"2BI?Z(WL1mCx[x)HmbZtI#TDiPlk3t#044^m9]e/Z]JCEaZ=;KsfdTCkUTDL.I7U"^Z+XSgp)E0'SZUw)hI)cc2[&=m)\60:m=FQ;kbYreX)?=A%\0y+I+,YI(Y-=>9WU"uX0T+1^v=VkGtl&'GNy&_mE:W^T11=##Z[ICsPW,/A&*X+lTD9HQaoIn]'7#frJU"%ewB:iOboSammNOV[)us\]L8iwf)6a>HEiBdD=o-u1;1EnE_[3A)AX2nMIhbKHfU"Mw/&]F%M3VkRq'Q+;p8=GY8kEG?ZSc,W$7)VJR1^kpZRui=Y&>AOfa[^*c\1*wKU"D%tO5XIB$[PJ3P5Avw=(L1ruE1E//.LZpS]IK*?]+;sAM[j0cq0rKgY#9LgxPf+U"W/\ydI:_2$S-t8e*>iwYX%B(F9j^)mjKduKTDkQC8/*txFB465o.Q%/s'QAYs+.U"9NQ4/kiti^8v?tpk?KQ1uR-HL%*'To:3+el8By.FK9nob7h&qFs9,N\J71ig=mAU"TJena9FucSnZBsTGL7z9=G?;3K%e-JF%,%ZQBUvPvkevJ'f;w+rZd+I19t+-i1]U";;AI,'wBR2a<K<acK*t/mJ+rgXAHoB?fbiK\QI5CCr'Y$jJYjU[B>#BY?7tUu]cEND SUBSUB V3U"/B-]M>u)Jcq6W:MSf9.UuS^OitQRJWVi?UF8+k^5Ro9^bhlIa;fpBM4=0p/Sm]rU"^NOsxCTC3Yb'GG1mfj]nRwdw$#m]V'XWf1JPhSLP28]azw:8QKW'I-JL%//2j(9U"F:;l10/y#\R=V)3_kz_J?tWZjgp?gBCrqu\9:DiX)AxaO)hxo>+4Elh7=Ch3-&mU"f6oPbcOAKY:Q96cMg4$skfPC7olOLe=I$-4R#4cdPR#%w=DZ1f$ojs(E*RO-8-MU"i;J65iLTS4>kmov5Q4F1E/Ad6o[v>sM9.A9t:d$<.W]H$6(_K(M[gEW6/6+c.isU"m+2UW)=IEPGNb'8gD7lu.]]hHJ_TKFDYh)w.vYvzd)Nc+]ZtW_I/;G]\7cAZ7P1U"mbN>g]+4a5iv[wFBE4YIRj:V/w>(cwfM3U?OADwq:6SSj8,]hW=[0C)V-Fk+=w\U"Y$iSjG)7-#4%'\bTt.Ki+ET;lJFR+3CdQiWAfF/dm6W[]Y)7Jd]R))JE;7p3WwsU"mO4iT_>qI:t(+?jdKOP^e*l31R]=nsOB%3IS#oNrx7MoWT/ahgIfjw$>C_uFZ.aU"e'/;jW.vPWJ>4P/U5'lA>YU.o6uxN>dKW#Saw^49Dcw/<Ar<HGv7S%aMgV,*+nsU"P=]i,kk^-Gbf#4q2/baeEL-]8qS=+K=_JeG/D7G\L]Et??I=_+P'YW,M%#^o#&#U"?BATkREStLd+B^O.4f=aAA>Y+e/4]w,Wmtr+Lq\tUD0?]RuXu'kc1Q'wC:VyI3IU"fjof]b5+G/Ps<yU'tWSGP%9YX-\]$qql*[&b7[x8>/gW4#\6U*mceX*oOnJB6NSU"j4wFaS0-V/(&4gH?(w6_KI,rT%dzjyKT1EKx&ty)ynb_K&GemS5-n_mX0I(S>.JU"Aph\yxtLpx.ANYp:B976pRsN7E4pM,4V'LqrY[DeB]$C%:k&22c^K/euWzKayB0U"(B3?;#XhYtM'xc'6BkuG7Jr%Ta$4u=MaebFC&&GaQCO97$/ndsqS6xCD_5mEqk(U"Ve:tLN(h.Pz-E>7j04:T[x+In\sl%A2Niww'^o';+<D#yGu(P*i>WPv%:NbAJ5hU"Y[iOr1x6g4S8j.2b(;CVFZC(qMyIb[_<7ObSAj3ho)3'Vwr9+SsyjVM.x=C;VMMU"ePNvZPX&hphm<^)png,CN.==S4/unSp,SA%\W=yr4^2QP%8/X_K]<?A)[/kq[p7U"jq=RMs*Ye&q1T0ZE7UKLh<Att+NiSx4bj1+.5UJe_+[pdP>MHYkioV$+9ERxmMZU"6B9^T(JT.m+fYkx[kJ4K^m\H\HEkG(s2aS'[qaY(kef_]+c9=x:BH=E'1$:q*^yU"DB^vxVKJ0R<L.&Bqb]IhsJWHLSX7C^YHjmcZwj4r-;s93\JRL?L$>C?^5/X%Oe9U"AWbsF)fAzoVkBYED3jzkCLhwC*p0L6CSSL^6:sA(nCW(p_>2A&%Vj0H[CIb,W=XU":G_Ca9-3Kh<g_?.O#/cuAM]4?q*QuMG8mJ::4<\Q*&_U'5C=8A\o)kJOlw>yBbQU"fwpRg]P].Zc7BCC^=hj?$x.T)jk90$-*8>#vkflSZ3(Ca1N6m[1/jC-cl;,sUVVU":/;_Ag5,WTL:y4Xbm]2X3.'Ueg*PZfAqR&z\gy\e4uq7U9gBH9f>QpOqO<gZSVBU"36]Ep6#E''8b)9yazY)7pQeqxgO\'YUY6WZUgs3YwE-M)cW6b07I/2*d-FlaLn4U"%KbspJ+1_.Mg?muL<Jm/EQ+Kpt)BNkL=<H[%oP]:_[C#^)WF2Ebzh0;1bwF:v#1U"EDa?kJDq9*nWlW6%[h%<5UGhLSa=\Ywep*DC1CsC,'5NOTL^(K=qTlq:uj(Z.R5U"3XXm#5<$rb=3^-vgCK):,cim]6ZD*)H'jQ:5RH>h)az2Uh*^^\Il6ZA-Io%;R.mU"AZY.0rrmf;:H+eh*;_p'V^?x;u=$%x401#Y%7A6('UaI3mypH5Uu?V\_7wjG<T]U"n4rQ/#:;$P-p'HhI1OMs?Gg7B)Xtq\b6T#_PS47m$K=Ow7raho.?JoUT/9U(1$FU"W;PNR<nMq&GTwh,G+mTnu/.;='rZP/&:4FL'Pb?>5F<aP-;Cyq1HOI1G#oJBa7*U"*/A=QwD4qgI1LwC3oPo%Z%)=g]CKw+x(e5-h1>PVz*x4PxR%Nd&(S^&iQNK=b_?U"Hj[4MX0i3to3U][eo12OEC+\J\VSD$Fp/#I:XJi95J=SAP0RX$ONPE9%$Q.YKD;U"%q$;Z)c51]h%9[i%N;XT_YAPM:\218(YNk+&<*)F_wVC;F:uu5DB73Ooq(-oL76U"_>D<7O>[;*$K.DS/qDEPN+U=VDq.[-S)G$Q1OKZdha.izuW0wT7b&PY/yC=S\b5U"Rr2M,_kT-#LTQw)C3k0Q)iYRJR5f/1RU0H,F:LUKA&N'CFTMX2>RY/'L[K\UU-[U"Q*F_VJSCIkV=^^KW.aGNoIUF:$&KPup0<x6XK]hie,F5M*1^%4ug(BTK4Vi0Q'^U"f2*'l\)g12k7a+QPM)\#y3]XU:q3B%-ddN1/*s4z&u^\:i/pS2p.P7[YY/,;\UPU"$,EeiV\5mJ&mXbh')?6'FQxW]]\VgIB1AS7;[*m81.H^.eCkIM1k4/_^tcbeRYHU"Ss7aMM&cMAZ7SgF8RCD)y$ImX_a%[hmVO\)o_$O2$)&/QMWj.kqw78eYqI/HY+.U"y:-u4:hQmas-v\1X-Wz($Y'm^<(G=.Il_8,'SIPJBXeu0l#iIMU>_^HwK\w[FkcU"92U,ri_c$fQm)yL,72;[YHo\oH1.M;]:PFI)I.hc*Jtt^CRJImY[l;xk_Rd)r+oU"TXd^-&n(1Ucg::skJ]]qgisnc1GM=dkA-(N2ZILva_S1DnHWhiB'+Ug/Uu,gmvkU"jiMQIV4AV/(b%Ekban)-f2qbL)fNV?Fdm^A%NiwI1clwf+;;]P*ki\:53>CWK^8U"&^Lg&Gh=WwL+Bl)aN&Ou+J=vTR+_zHtN&(iwzSga[0#/Hoe^Y$vJsu%wN5m^ro+U"N^(qLJkuU%kd9([k*NxBBI&)O.GS,#3Ysb_QoEJC8''mi+1]cUHhQo7n>/h3*shU",(wmgU1zXPukUn5o7:sYiR_bYk\>*x3\dt_N/QD4H/eEaP82-a953mXtI>eg(T-U"(I5Uz-9n,u-VNo^<pB::zN$/fzd;#8rM8RAlC/\FYitm9zXQJ-j3(NF4oA3>nw=U"YnJR-gZb%B0MxtISHbYAK^eeiI*OVXF>-vsAfvEe[zcX[1soT:P0.GtMC3SHFvEU"8v-.2i*.o#UUSn:.q,^oylE['_0Mt]4.22D*Y'Cyx:G%.*uOVn&i9>0xxFrwBWOU"zCDj.q/x;p.)K>YwvB%,].vXC:8;)U69]uI1zsYg.wf.V%I?wbGK)a/SKc?;giNU"$Hg=/_^z.sn;(ushBl+(Sg[*>NAJQ/%cH.v=^_*l?U/IZucd^ziJT?zd=#%C6_lU"DaCDt%VA;)'3m0\%'RC:x>1^6F6&PKp-kne1[.G/BjxOWN>Z:U9izPtRYvng6'xU"?>(W:=<k3-*cD:bNCB-_&qv<_..pdg(KzEwH(mo9G^N5o[9<-?/N;E&(8%-D&SJU"p:r+3J*41oNp]N&KDn%Dt*dv.y(%U?W$#iMpl%P#6/F++BeXl=A17e#-gF$-i*cU"w-kdD[:%NJdu1wKQg>oV$M_3GI3UH_aRjr/Rvi*PRA'?X-.%xU.P//a3AiRDCYlU"JRWE3<cF1B1p%hE<=\poLP'J9hae/E9OSlIr'/K0P/V&F[89Yc;\s[?0$aC^).VU"RsWel?xU*o*W0Cp_+UCdj'<nt1??#*f8LcT?&em]39i7#So3Ah-drJ%GpJU/ETvU"fa%A#^^#=du%eA(KeGw8[X3w4%Ah*jG\_4rND1d:F8^J7.3MB??a07K*3igA^,#U"]aCF+=?W5K/]8E'5WjP1sobKoF3O>i6KSU8\x,Lsl7fIP:6Mz1d0=>6*13mPHPmU"&OfwiZ>j]:6#N3aD0EX,J*\v=C<dCGJ:9Q(]6c#C<je(gj#:MqE<UJK%gA3QLo+U"aQZ603nL?r7R?689De^N_.Wh4)'wVF9LYBP743b%;gc/$Z^%O0[N.PfH*20D>VQU"V0x6:>Z;Bu0B%8f5oVUIg#g#%G7j$:K\).V]uRhg&tIFU2_aJ5t)D'P<6b^MALuU"R0O$dEM2-j[mSP5K9lQBM[ZjL$*t^e+pk%B]?Uqm\j1307Tt%;569g)r1Lm_/^GU"Oe^h7)>.+=4''/.g7hixUEf4&tq?;7,9dFQ8rhfzuDb2T,AAWfH6*EHrAmDuiA/U"z\a;=h.wuQM#9W9:KiZ?]P?DJa1='1'\Ozb>2*SM1KPPL(*QB(P#-i6S?RXni_OU"*B0==IgwO2:L);7KDyOQ=EUCn8:'2DFpQED%2+#XG[KYM#:qQ.20dK_8o:(0?C:U"vPX\a]AJ'?IM$tFT?roo*J*:U,n;hW2i[]<c5sU&t23+Q_K'B+M^O<BqUV-8+*YU"[?FY<l1f*B8P]/rp]:$q:[L9H%^]Ps0k/BgW.e#'_XF=lN0sZ2HHeabN(e1AL=IU"VqHGd18#Y.',rt.M*RQYC#aK;,KiI3Hkt#1L4[=nU12AiKg,:/&Uao44V;+XAfLU"kHWU-5*;n>Xw=X],Q(,s(,0GYf,G0e3MTeRzIFS,qPGYLxAU_(8G=NIBn_KfjagU"jn2#>JupDJ<WE%Mq3LN)1ZseLE*]QcXfFeJMC:BPidy,qa?/$1)Nw'i=%zCI]sGU"k+L3LS4t&\f-.GB\7ta<,GHew<t[*OM09J\R%x/X2uY1WW7V8cNMHRU8?3RQ9>2U"8brQ<[YV9Fj(1AO9Gh.iVLeZhsa0ARB]NlWDaj=im5DbF%PJ*fY_OA02_MjlD^sU"=WgPY^4^wHn-jLrQ1;#p.X:$.Mf1kr]$diLy[8k/vU1y8hFCIp:V8f(mMYp6>d)U"Rd_U\UKlUaF9'U?wf+^7#hfR6-;,$L-P=nRxCFh2r<#i6LflPUeLcl,k8Rz\2NgU"vTVoc,(^r5S39XP>ns&3cL^g<acNp^%[(;ime.%\=:3G8PMuz'Ro/jnW1O)p3*gU"cHiRN2-r'S6w^>Y=89Am2JZ3d8rq\)c_07ku3id#P/9:.P5n,q$uuES1$)kiWJVU"K>K%E$^22vgjz9>T1/'db+IyT[etyQE]Baq-7]\zm%v0B(<T(=[co#v2C'-:Q_6U"1w:/\HUp#+d-k/PH'S>B[&F?<UdCwoppTtJ$a]OyG>Lk(M*B/Os,niqL9LrJ]dpU"UD,2_E/*t^/Fi'njyUwtZl_J,1bip^tCO(no_&9-n5=+:vKs<i#Ix8p'.0.tnFnU"1T6z$73bursHO'cpl)7'_\cu0O^8^3X\j:FBG%6;*#1I)%8-^'GFJM)JN'j]wp0U"*c>=B*G/->GCyrW/dgZFeP=ic6z+4Gw0,c?\bD02&+'4RD/2qe,$G?#eB(obSg\U"RsWd]rgc7frm-hoYMhqm0hgJzF\,b,?dEsC]i'difsCLJL5+Oeo3)8is1Ximrg;U"NN,uFO0?#bi;,Nj=dY1:/,kkT>^+*i>DfkGnjLJpD1&::d<ri2DZ=HXkS:T8wv3U"j##4;k+-iB'vTnTl_HLnO&wisOZ)rhMlg.]lidk<eaII-i7(Mui8=$=jxm)-XPZU"4bFu&k4O_psj4n)HY1.&RCp7'oG;nNEr(U7nn54-/BL:Cb/QJ/T7J]iHkJoAH<nU"NNZsq&MkepdB8EpKtoHx^W%h.T9VipS.q>y+NDsbM?,mGP(R>Uxq<0x']VTqI<2U"RtI9G6]q(CrC_XrXMOTKGR]EZYi&6[Y2-hJjbam8'sM5:/dH7G#ue<gqpgGG-gUU";Bt4P%8't?Pj:WnTwhSd'(ltP%]sCIm=?HtCtGO.9ngF?p\MS+Cy+e2t_o<ToDQU"8s+yPg5oyO$_rcIsf(nj1$hfiS9mv?aH&cU/vw]4VQ]28gEs.?_^kclhbNxp;)dU"\GD$eD*uH0&Ies)R1=HWuBv,h#7IpliLxD4*GF3)HI;gQmi4BbnXYg6SUh1JG.iU"KdpY5LrSCktx9WNI>5i.*=Pft*V>,2+X'%%$up%&'9%%/%%%%+%%%If=QJ'*;((U"7%%;)%%%,%%%%%%%%%%%%E%%%%%%%%&'rxS%tgou%p&'9%%/%+%%+%%%%f=R$jVU"h%#7%%H&&%%,%%%%%%%%%&%%E%%%%M(%(%'rx%Sfxr%up&'%9%/%%+%+%%%%f=%U"$S:]&38%%%4^%%%,%%%%%%%%%&%E%7%%r:.%%'r%xSwj%kup&%'9%/%%%%+%%%%U"fC=OfA-CK+%%%<5%%%0%%%%%%%%%&%E#%%%Q#N%%'%rxij%rtSg%fxup%&'9%%9U"%%%I-%P*\gJI.8v1o>#%%o)%%%-%%%%%%%%%&%%E%%%&LU%%&'rfx%Sgfx%up&'U"%9%/%%%%%%642fJ3JJ_<&n;%%&n;%%%-%%%%%%%%%%%E%3/PhoI%%5>D=CS6)85U"up%*+%%%%%+%%+%i&I%%-0%%%%%END SUBV2V3CLOSE:IF S=53AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBRichard Peacock                TUJURE RPG (TEXT-ONLY) GAME    rjp1@bayou.com                 04-04-99 (16:10)       QB, QBasic, PDS        4280 121190   TUJURE.BAS  DECLARE SUB DoSpell ()DECLARE SUB HexINV (k$)DECLARE SUB DoINV (K1$, k2$)DECLARE SUB DoClass ()DECLARE SUB Fini ()DECLARE SUB Waita ()DECLARE FUNCTION DoWait7! (WTill7!)DECLARE FUNCTION DoWait6! (WTill6!)DECLARE SUB DoNPC ()DECLARE FUNCTION DoWait4! (WTill4!)DECLARE SUB DoMap ()DECLARE SUB Hexit (k$)DECLARE FUNCTION DoWait3 (WTill3!)DECLARE FUNCTION PerOf (N1, N2)DECLARE SUB DoHelp ()DECLARE FUNCTION DoWait2 (WTill2!)DECLARE FUNCTION DoWait (WTill!)DECLARE SUB DoRandom ()DECLARE SUB DoKill ()DECLARE SUB PlaceNouns ()DECLARE SUB DoNouns ()4 DECLARE FUNCTION Words (Text$, WS$)DECLARE SUB WordWrap (Text$, x1, x2, y1)DECLARE SUB DoRoom ()DECLARE SUB DoCommand ()'  Here's the basic idea:its something of a local Moongate ( a MUD)... except'  you don't have to wait days to work your way up into the social ladder...'  And there are no other human players but you (yet).  I want to be able'  to join with animals... and YOU choose when you want to attack an animal'  Not the other way around!'  I want nearly everything to be done by variables...'  This game is done by a data file...  I want this to automaticly make'  a new data file if it can't find one.'  The name of this game is:'  Tujure  (until I can think of something better)'  IMPORTANT:  IF THIS IS YOUR FIRST TIME TO PLAY, ALWAYS START A NEW GAME.'  Please send me your comments!!  This game is far from finished!!'  rjp1@bayou.comDECLARE FUNCTION InputLine$ (Text$, ViewWidth%, KeyCode%)DECLARE FUNCTION Lesser% (Var1%, Var2%)DIM SHARED CursSize%, CAM$, work$, EHP, WEP$, STRi$, Bang, AKILLDIM SHARED WORD$(100), Enemy$, WTill!, TFlag3, TFlag4, WTill2!, TFlag5, WTill3!, TFlag6, WTill4!           'stat/name  |what roomDIM SHARED NPC$(50), NPCr(50), NPCn, Player.Class$, Player.mScroll, Player.KillDIM SHARED Player.HpRate, Player.SpRate, Player.Ag, Player.Scroll, Magic$(10)DIM SHARED OldArm, Armcount, CaryCOMMON SHARED LCol%, RCol%, View$, LnLen%, CCol%, AChar%, IsSleep, IsFight'Where it does the roomsDIM SHARED Player.Code$DIM SHARED INV$(40), HeyHey$(100)COMMON SHARED Enemy.Hp, Enemy.Attack$, Enemy.Gold, Enemy.Exp, Enemy.Att, LCMD$LCMD$ = "Tujure!"'ON ERROR GOTO ErrHandleDIM SHARED Room.num(100), Room.N(100), Room.S(100)DIM SHARED Room.W(100), Room.E(100), Room.Des$(100), RRANDOMIZE TIMERREAD RFOR t = 1 TO RREAD Room.num(t)     IF Room.num(t) = 999 THEN Room.num(t) = 0: EXIT FORREAD Room.N(t)READ Room.S(t)READ Room.W(t)READ Room.E(t)READ Room.Des$(t)NEXT tDIM SHARED InRoom(R, 50) 'The codes of the objects in the roomDIM SHARED NounDesc$(500), BOP$, BOP2$, Pet.Att$, Pet.Str, Pet.Xhp, Pet.MHpDIM SHARED NounStat$(500), EnemynoCALL DoNounsCONST ColLimit = 60        'Chars per line'All the player.* variablesDIM SHARED Player.Arm$, Player.Hp, Player.Gold, Player.Exp, Player.Level, Player.NeededDIM SHARED Player.Attack, Player.Wep$, Player.Room, Player.MaxHp, Player.Sp, Player.MaxSpDIM SHARED Player.pet$, Tempx2, TempQQQ, Dely, Pet, TFlag7, WTill6!, WTill7!, TFlag8DIM SHARED Waitam, Waitamt!, WORK2$, NPCf(50), Maper$(21)Dely = 1.5TYPE Header                  'File header  Verify AS STRING * 4  Filename AS STRING * 12END TYPEDIM SHARED Byte AS STRING * 1       '1 byteDIM SHARED Hex AS STRING * 2        '2 bytesDIM SHARED Hdr AS Header            'HeaderDIM SHARED SeekS AS STRING * 4      'Seek bufferPlayer.Arm$ = "TEE-SHIRT;a tee-shirt;3"Player.pet$ = "MOUSE;a mouse;Your pet mouse is here.;bite;8;30"Pet.MHp = 30RANDOMIZE TIMER'Do NPC shuffle & pick names...' NPC names & statsNPC$(1) = "Quark;The warrior"NPC$(2) = "Kirk;The maniac"NPC$(3) = "Yon;The ogre"NPC$(4) = "Gwen;The Xena fan"NPC$(5) = "Jarek;The archer"NPC$(6) = "James;The ninja"NPC$(7) = "Ylla;The martian"NPC$(8) = "Mozart;The rock-star"NPC$(9) = "Hojo;The explorer"NPC$(10) = "Oliver;The tall guy"NPC$(11) = "McDunn;The psychic"NPC$(12) = "Henry;The author"NPC$(13) = "Ray;The deejay"NPC$(14) = "Marry;The gypsy"NPC$(15) = "Cathy;The home owner"NPC$(16) = "Sfven;The dutch guy"NPC$(17) = "Barbie;The doll"NPC$(18) = "Kenith;The nice mutant"NPC$(19) = "Richard;The programmer"NPC$(20) = "Magnavox;The tv set"CursSize% = 7CLS'  [COLORS]'0 = black      4 = red          8 = grey            12 = light red'1 = blue       5 = magenta      9 = light blue      13 = light magenta'2 = green      6 = brown       10 = light green     14 = yellow'3 = cyan       7 = white       11 = light cyan      15 = bright white'This normally would be read from the data fileCONST BCLR = 0   'Background colorCONST YCOM = 2   'Text color of your commandsDIM SHARED GENC    'General text colorGENC = 7CONST SPEC = 15  'Special colorCONST STAT = 14  'Status colorCONST CBTX = 15  'The text color of the command barCONST CBBA = 1   'The background of the command barCONST ACTI = 9   'The color of actions (get/drop/wear status)CONST CAMBAR = 25 'Location of the command barCONST BOUNDRY = 23 'Location of southern most boundry of screen'[KEYS]CONST false = 0, true = NOT falseCONST ESC = 27, ENTER = 13, BkSpc = 8, TabKey = 9CONST InsertKey = -82, DeleteKey = -83CONST HomeKey = -71, CtrlHome = -119CONST EndKey = -79, CtrlEnd = -117CONST PgUpKey = -73, PgDnKey = -81CONST UpArrow = -72, DnArrow = -80, LArrow = -75, RArrow = -77' [SCREEN]' This is basicly setting up the screen and fixing the way it scroll, etc.SCREEN 0WIDTH 80VIEW PRINT 2 TO BOUNDRYReStartDraw:CLSLOCATE BOUNDRY, 1COLOR 15, 0PRINT "                                                             ^"PRINT "         ____________________________                  ^   _|.|_   ^"PRINT " _______|                            |_______        _|I|  |I .|  |.|_"PRINT " \      |           Tujure           |      /        \II||~~| |~~||  /"PRINT "  \     |   The legend of Kelnore!   |     /          ~\~|~~~~~~~|~/~"PRINT "  /     |____________________________|     \            \|II I ..|/"PRINT " /________)                        (________\      /\    |II.    |    /\"PRINT "                                                  /  \  _|III .  |_  /  \"PRINT "    Tujure (c) 1998 Richard Peacock               |-~| /(|I.I I  |)\ |~-|"PRINT "    http://www.bayou.com/~rjp1/qbasic.html      _/(I | +-----------+ |. )\_"PRINT "    rjp1@bayou.com                              \~-----/____-~-____\-----~/"PRINT "                                                 |I.III|  /(===)\  |  .. |"PRINT "                                                 /~~~-----_________---~~~\"PRINT "    1) Start Tujure                             `##########!\-#####%!!!!!| |\"PRINT "    2) Start new game                          _/###########!!\~~-_##%!!!\_/|"PRINT "    3) Quit                                    \##############!!!!!/~~-_%!!!!\"PRINT "                                    "PRINT " Press the key of your selection."nothing = 0TempNot$ = INPUT$(1)SELECT CASE TempNot$CASE "0": CALL Hexit("1"): ENDCASE "3": CLS : ENDCASE "2"      PRINT "This will create a new data file, thus erasing any old saved game."      PRINT "Are you sure you want to continue (Y/N)?"      TempTT$ = INPUT$(1)      TempTT$ = UCASE$(TempTT$)      IF TempTT$ = "N" THEN GOTO ReStartDrawReask:COLOR SPEC, BCLRPRINTPRINT " You are about enter the strange and magical world of Tujure."PRINT "You are in The Great Library of Knowledge."PRINT "Choose one profession to follow..."PRINTCOLOR STAT, BCLRPRINT "A) Paladin       A man of the cloth gifted in healing."PRINT "B) Barbarian     Enhanced strength and a keen knowledge of weapons."PRINT "C) Sorcerer      Trusts words of magic more than swords of steel."PRINT "D) Ninja         Agile masters of martial arts."PRINT "E) Monk          A student of magic and weapons."COLOR SPEC, BCLRxx$ = INPUT$(1)xx$ = UCASE$(xx$)IF xx$ <> "A" AND xx$ <> "B" AND xx$ <> "C" AND xx$ <> "D" AND xx$ <> "E" THEN GOTO ReaskSELECT CASE xx$   CASE "A"      Player.Class$ = "Paladin"      nmSp$ = "19": nSp$ = "17": nmHp$ = "20": nHp$ = "20"      nArm$ = "leather;shield;a leather shield;2;50;X;1;4"      nWep$ = "Practice;knife;slash;8;50;X;1;5"      Player.Scroll = 2         CASE "B"      Player.Class$ = "Barbarian"      nmSp$ = "5": nSp$ = "5": nmHp$ = "50": nHp$ = "50"      nArm$ = "iron;shield;a shield of iron;14;50;X;1;4"      nWep$ = "Practice;mace;whack;17;50;PSMN;1;6"      Player.Scroll = 1       CASE "C"      Player.Class$ = "Sorcerer"      nmSp$ = "30": nSp$ = "30": nmHp$ = "10": nHp$ = "10"      nArm$ = "simple;cloak;a cloak of protection;5;50;X;1;3"      nWep$ = "Practice;staff;shock;8;50;BMN;1;3"      Player.Scroll = 4         CASE "D"      Player.Class$ = "Ninja"      nmSp$ = "12": nSp$ = "12": nmHp$ = "35": nHp$ = "35"      nArm$ = "leather;shield;a shield of leather;2;35;X;1;3"      nWep$ = "Practice;sword;slash;8;50;S;1;3"      Player.Scroll = 2         CASE "E"      Player.Class$ = "Monk"      nmSp$ = "16": nSp$ = "16": nmHp$ = "25": nHp$ = "25"      nArm$ = "brown;robe;a brown robe;3;35;X;1;3"      nWep$ = "Practice;dagger;pierce;8;45;B;1;2"      Player.Scroll = 3      END SELECT'Make a Temp Data fileF = FREEFILEOPEN "data.da1" FOR OUTPUT AS #FPRINT #F, "1"PRINT #F, nHp$PRINT #F, nArm$PRINT #F, nmHp$PRINT #F, nmSp$PRINT #F, nSp$PRINT #F, nWep$PRINT #F, "1"PRINT #F, "500"PRINT #F, "1"PRINT #F, "1"PRINT #F, "MOUSE;a mouse;Your pet mouse is here.;bite;8;30"PRINT #F, "30"PRINT #F, "2"PRINT #F, "dummy"PRINT #F, Player.Class$ + ";0"PRINT #F, Player.ScrollCLOSE #F'Read from data fileF = FREEFILEOPEN "data.da1" FOR INPUT AS #FINPUT #F, Player.RoomINPUT #F, Player.HpLINE INPUT #F, Player.Arm$INPUT #F, Player.MaxHpINPUT #F, Player.MaxSpINPUT #F, Player.SpLINE INPUT #F, Player.Wep$INPUT #F, Player.ExpINPUT #F, Player.NeededINPUT #F, Player.LevelINPUT #F, Player.GoldINPUT #F, Player.pet$INPUT #F, Pet.MHpINPUT #F, Dely    IF Dely < .5 THEN Dely = 2INPUT #F, NPCn       IF NPCn < 1 THEN NPCn = 1INPUT #F, Player.Class$nottyboy = Words(Player.Class$, ";")Player.Kill = VAL(WORD$(2))Player.Class$ = WORD$(1)INPUT #F, Player.ScrollCLOSE #F'Show Temp StatusLOCATE BOUNDRY, 1COLOR SPEC, BCLRPRINTPRINT "Status for: "; Player.Class$; "."   PRINT "Hp : "; LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; LTRIM$(RTRIM$(STR$(Player.MaxHp)))PRINT "Sp : "; LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; LTRIM$(RTRIM$(STR$(Player.MaxSp)))   TempX = Words(Player.Wep$, ";")PRINT "Your weapon is a "; WORD$(2); ", with an attack power ~ "; WORD$(4); "."TempX = Words(Player.Arm$, ";")PRINT "Your armour is "; WORD$(2); ", with a protective power ~ "; WORD$(4); "."PRINTPRINT "Are you sure you want "; Player.Class$; " (Y/N)?"TempTT$ = INPUT$(1)TempTT$ = UCASE$(TempTT$)IF TempTT$ <> "Y" THEN GOTO ReaskKILL "Data.da1"F = FREEFILEOPEN "inv.dat" FOR OUTPUT AS #FPRINT #F, nWep$PRINT #F, nArm$CLOSE #FCOLOR SPEC, BCLRPRINTPRINT "      You pick up a book about "; Player.Class$; "s, and are fascinated.  You"PRINT "decide to make it your profession.  But before you enter the world of Tujure,"PRINT "you must know a few things..."PRINTCOLOR STAT, BCLRPRINT "Learning magic is always important, no matter what profession you are.  You"PRINT "begin with a few spells, but, as you fight, you learn new ones."PRINTCOLOR SPEC, BCLRPRINT "When refering to an enemy (KILL LADY) or a noun (READ NOTE) use the"PRINT "adjective to be more specific.  EX: KILL OLD LADY     READ SMALL NOTE."PRINTCOLOR STAT, BCLRPRINT "The enemys of the forest are unlike those in town.  Be sure to always type"PRINT "CON enemy to see how strong they are."PRINTCOLOR SPEC, BCLRPRINT "Many things are possible in Tujure.  You can change the general delay speed, and"PRINT "the number of NPC's  (Non-Player Characters or Computer Controlled Characters)."PRINT "So be sure to type HELP when you first start the game, to see what you can do."PRINTPRINT "With these tips in mind, press ENTER to begin your journey into Tujure."a$ = INPUT$(1)'Make New Data FIleF = FREEFILEOPEN "data.dat" FOR OUTPUT AS #FPRINT #F, "1"PRINT #F, nHp$PRINT #F, nArm$PRINT #F, nmHp$PRINT #F, nmSp$PRINT #F, nSp$PRINT #F, nWep$PRINT #F, "1"PRINT #F, "500"PRINT #F, "1"PRINT #F, "1"PRINT #F, "MOUSE;a mouse;Your pet mouse is here.;bite;8;30"PRINT #F, "30"PRINT #F, "1"PRINT #F, "dummy"PRINT #F, Player.Class$ + ";0"PRINT #F, Player.ScrollCLOSE #F'Read from data fileF = FREEFILEOPEN "data.dat" FOR INPUT AS #FINPUT #F, Player.RoomINPUT #F, Player.HpLINE INPUT #F, Player.Arm$INPUT #F, Player.MaxHpINPUT #F, Player.MaxSpINPUT #F, Player.SpLINE INPUT #F, Player.Wep$INPUT #F, Player.ExpINPUT #F, Player.NeededINPUT #F, Player.LevelINPUT #F, Player.GoldINPUT #F, Player.pet$INPUT #F, Pet.MHpINPUT #F, Dely    IF Dely < .5 THEN Dely = 1INPUT #F, NPCn        IF NPCn < 1 THEN NPCn = 1INPUT #F, Player.Class$nottyboy = Words(Player.Class$, ";")Player.Kill = VAL(WORD$(2))Player.Class$ = WORD$(1)INPUT #F, Player.ScrollCLOSE #Fnothing = 1CASE ELSECALL Hexit("2")F = FREEFILEOPEN "data.dat" FOR INPUT AS #FINPUT #F, Player.RoomINPUT #F, Player.HpLINE INPUT #F, Player.Arm$INPUT #F, Player.MaxHpINPUT #F, Player.MaxSpINPUT #F, Player.SpLINE INPUT #F, Player.Wep$INPUT #F, Player.ExpINPUT #F, Player.NeededINPUT #F, Player.LevelINPUT #F, Player.GoldINPUT #F, Player.pet$INPUT #F, Pet.MHpINPUT #F, Dely    IF Dely < .5 THEN Dely = 1INPUT #F, NPCn    IF NPCn < 1 THEN NPCn = 1INPUT #F, Player.Class$nottyboy = Words(Player.Class$, ";")Player.Kill = VAL(WORD$(2))Player.Class$ = WORD$(1)INPUT #F, Player.ScrollCLOSE #FEND SELECTCALL DoClassCALL DoINV("LOAD", "x")CLSLOCATE BOUNDRY, 1PRINT : PRINT : PRINTPRINT "Type HELP for help."IF nothing = 0 THENPRINT "Picking up where you left off. . ."PRINTEND IF  IF Player.Hp < 50 THEN GENC = 7  IF Player.Hp < 40 THEN GENC = 14  IF Player.Hp < 30 THEN GENC = 12  IF Player.Hp < 20 THEN GENC = 4  TempX = PerOf(Player.Hp, Player.MaxHp)  IF TempX > 90 THEN GENC = 9CALL DoRoom' [MAIN GAME LOOP]FOR t = 1 TO 20x = INT(RND * 20) + 1SWAP NPC$(t), NPC$(x)NEXT tNPCr(1) = INT(RND * 20) + 1  'What room #1 (Quark) is inFOR t = 2 TO NPCnNPCr(t) = INT(RND * R) + 1NEXT tMainGameLoop:LOCATE CAMBAR, 1CAM$ = LTRIM$(RTRIM$(InputLine$("", 78, KeyCode%)))LCMD$ = CAM$    CALL DoCommandGOTO MainGameLoopErrHandle:IF ERR = 53 THEN   'Make a new data fileLOCATE BOUNDRY, 1COLOR SPEC, BCLRPRINT "No data file exists, or there are errors in it.  Rerun the program,"PRINT "and select the option to create a new game.  You will be asked if you"PRINT "are sure.  Answer the yes option.  If this error continues, delete the"PRINT "data file, data.dat and the program, tujure.exe and re-install it."PRINT "If the error continues, please inform the author, Richard Peacock."PRINT "rjp1@bayou.com"ELSE LOCATE BOUNDRY, 1: COLOR SPEC, BCLR: PRINT "Error#"; ERR; "!  Rerun the program.  If error continues, delete data.dat."END IFEND' [DATA STATEMENTS]''                      |                                                                               |                                                                                           '    #, n, s, w, e,    descripDATA 87DATA 1, 2, 3, 4, 5,   "You are in the middle of town.  You can go in all directions."DATA 2, 11,1,13, 0,   "You are on city street.  People of all types are wondering about."DATA 3, 1,18, 0, 0,   "You are on a city street.  People and animals are wondering about.": REM        |DATA 4, 0, 6, 7, 1,   "You are on a buzy city street.  Merchants are selling their goods, while        theives are stealing them."DATA 5, 8, 9, 1, 21,  "You are on a buzy city street.  People from all over are wondering about,       buying and selling.  To the east is the Tujure forest."DATA 6, 4, 0, 0, 0,   "You are in the town pet shop.  Here, you can buy animals that will help you on  your journey.  Type BUY for a list/order form."DATA 7,14, 0,17, 4,   "You are on a buzy city street.  People wonder by you, casualy greeting you.     The city park is to the north."DATA 8,16, 5, 0,15,   "You are in an alley way.  Cats lazyly lounge in the street as you walk by.": REM|DATA 9, 5, 10,0, 0,   "You are in an alley way.  An acrid smell of garbage wrinkles your nose.  It     seems to be comming from the south."DATA 10,9, 0, 0,19,   "This is the city dump.  Piles of garbage collect flys, while animals fight for  scraps of food."DATA 11,0, 2,12, 0,   "You are in the city's park.  The smell of freshly cut grass and the colorful    flowers fills your senses."DATA 12,0, 13,0,11,   "You are in the city's park.  Bees buzz by as a light wind plays with your hair."'    #, n, s, w, eDATA 13,12, 0,14,2,   "You are in the city's park.  As you admire the selection of flowers, you wonder how anything could be more breath-taking."DATA 14,0, 7, 0, 13,  "This is the city park.  The green grass and friendly animals give you a feeling of safty here."DATA 15,0, 0, 8, 0,   "You are in a weapon's shop.  Type LIST for a list of things you can buy.  When  you are ready to make a purchase, type BUY."DATA 16,0, 8, 0, 0,   "You are at the end of an alley way.  The surrounding buildings cast huge        shadows into the street, preventing you from seeing fine details."DATA 17,0, 0, 0, 7,   "You are in an armour shop.  Type LIST for a list of armour to buy.  Type BUY to make a purchase."DATA 18,3, 0,20, 0,   "You are on a city street.  Buildings and street lamps and sidewalks...yep, it's a city street."DATA 19,0, 0,10, 0,   "This is the city dump.  You can feel vomit in the back of your throat as you    look at the piles of decaying trash."DATA 20,0, 0, 0,18,   "This is a vacant building.  People say that it is some sort of shop, but you    don't know for sure."'The Forest!'    #, n, s, w, eDATA 21,0 ,0 ,5 ,22,  "To the east is the forest.  To the west is the town.  Be careful!  strange      animals dwell in the forest!"DATA 22,0 ,23,21,0,   "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 23,22,24, 0 ,0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 24,23,28, 0 ,25, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 25,0 ,26, 24,0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 26,25,27, 35,0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 27,26,0 , 28,0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 28,24,29, 0,27,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 29,28,0 , 30,0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 30,0 ,0 ,31 ,29, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 31,32,0 , 0 ,30, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 32,33,31, 36,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 33,0,32 , 0 ,34, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 34,0 ,0 , 33,35, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 35,0 ,0 , 34,26, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."'The Forest!'    #, n, s, w, eDATA 36,0 ,0 , 37,32, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 37,39,38, 0 ,36, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 38,37,0 , 0, 0,  "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 39,0 ,37, 40, 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 40,0 ,0 , 41,39, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 41,48,42, 0 ,40, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 42,41,43, 0 ,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 43,42,0 , 0 ,44, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 44,0 ,45 , 43,0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 45,44,46, 0 ,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 46,45 ,0 , 0,47, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 47,0 ,0 , 46,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 48,49,41, 50,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 49,0 ,48, 0 ,0 , "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 50,51,0 , 0 ,48, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."'The Forest!'    #, n, s, w, eDATA 51,52,50, 0 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 52,53,51, 0 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 53,0 ,52, 0 ,54, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 54,55,0 , 53, 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 55,0 ,54, 0 ,56, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 56,57,0 ,55 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 57,0 ,56, 0 ,58, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 58,0 ,0 , 57,59, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 59,0 ,0 , 58,60, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 60,0 ,0 , 59,61, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."'The Forest!'    #, n, s, w, eDATA 61,0 ,62, 60, 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 62,61, 0, 0 ,63, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 63,0 , 0, 62,64, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 64,0 ,65,63 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 65,64,66, 0 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 66,65,67, 0 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 67,66,68, 0 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 68,67,0 ,69 , 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 69,0 ,70,  0,68, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 70,69,71,  0, 0, "This is like any other forest.  Towering trees and tall grass.  Small animals   scury about under your feet."DATA 71,70,0 ,  0, 72,"You are just beyond the gates to the lost city of Kelnore.  A sign reads: You   must be level 10 to enter."'Kelnore!'    #, n, s, w, eDATA 72, 0,0 ,71, 73, "You are in the lost city of Kelnore.  What buildings are still standing are     of an odd design.  Mutants are everywhere."DATA 73, 0,0 ,72, 74, "You are standing in an alley, from what you can tell.  The mutants that exist   don't seem to notice you."DATA 74,77,0 ,73, 75, "You are standing in an alley, from what you can tell."DATA 75, 0,76 ,74, 0, "You are standing in an alley, from what you can tell."DATA 76,75,0 ,  0, 0, "You think this may have been a shop, but you aren't sure."DATA 77,80,74 ,78, 0, "This must be the center of Kelnore, you think.  There are poor mutant beggars   asking you for food."DATA 78, 0,0 ,79,77 , "You are on a nameless street.  There are deformed skeletons strewn about."DATA 79, 0,0 , 0, 78, "You are in a graveyard.  The stench of the open graves is almost unbearable."DATA 80, 81,77, 0,83, "You see a dried up fountain here, and dead trees."DATA 81, 0,80,82, 0 , "At one time, this may have been a church for the ancient Christian God."DATA 82, 0,0 , 0, 81, "You are outside of the `church.'  The tall, dead trees cast eerie shadows."DATA 83,84,0 ,80, 0 , "You are on a long coblestone road."DATA 84,85,83, 0, 0 , "You are on a long coblestone road."DATA 85,86,84, 0, 0 , "You are on a long coblestone road."DATA 86, 0,85,87, 0 , "You are on a long coblestone road."DATA 87, 0,0 ,0, 86 , "This is a strange place... You feel a great evil is here."DATA 999SUB DoClass'H, heal   D, Damage  A,Armour P,heal pet'Magic$(x) = "NAME;H/D/A/P;descrip;SP needed;Damage/Heal points;Descrip of result"SELECT CASE Player.Class$ CASE "Paladin"   Player.SpRate = 4   Player.HpPate = 0   Player.Ag = 2   Player.mScroll = 10   Player.Code$ = "P"   Cary = 12   Magic$(1) = "HEAL;H; spell of Heal;10;10;Clouds of life envelope you.  You feel better.;This heals you."   Magic$(2) = "HEALPET;P; spell of HealPet;10;10;Your pet fades out of reality.  It is more healthy when it returns.;This heals your pet."   Magic$(3) = "HEALMORE;H; spell of HealMore;15;20;Clouds form all around you.  When they pass, you feel much better.;This heals you."   Magic$(4) = "LIGHTNING;D; spell of Lightning;21;25;A blast of lightning strikes your foe!;This hurts your enemy."   Magic$(5) = "HEALFULL;H; spell of HealFull;31;9999;You are covered with a blue mist.  Your health is restored!;This heals you."   Magic$(6) = "ICE;D; spell of Ice;34;51;An blizzard descends on your enemy!;This hurts your enemy."   Magic$(7) = "ARMOUR;A; spell of Armour;50;15;Your armour glows bright white!;This adds armour for a while."   Magic$(8) = "MOREARMOUR;A; spell of MoreArmour;58;22;Lighning strikes your armour!  It glows bright green!.;This adds armour for a while."   Magic$(9) = "DEATH;D; spell of Death;60;9999;Death appears, and touches your enemy!;This kills your enemy."   Magic$(10) = "FULLARMOUR;A; spell of FullArmour;70;9999;Your armour becomes indestructible!  It glows red!;This makes you invincible." CASE "Barbarian"   Player.SpRate = 0   Player.HpRate = 6   Player.Ag = 0   Player.mScroll = 2   Player.Code$ = "B"   Cary = 17   Magic$(1) = "HEAL;H; spell of Heal;6;7;Clouds of life envelope you.  You feel better.;This heals you."   Magic$(2) = "ARMOUR;A; spell of Armour;7;7;Your armour glows bright white!;This adds armour for a while."   CASE "Sorcerer"   Player.SpRate = 6   Player.HpRate = 0   Player.Ag = 1   Player.mScroll = 10   Player.Code$ = "S"   Cary = 7   Magic$(1) = "HEAL;H; spell of Heal;10;10;Clouds of life envelope you.  You feel better.;This heals you."   Magic$(2) = "HEALPET;P; spell of HealPet;10;10;Your pet fades out of reality.  It is more healthy when it returns.;This heals your pet."   Magic$(3) = "SOULSTRIKE;D; spell of SoulStrike;21;25;A blast of energy from your eyes strikes the enemy's soul!;This hurts your enemy."   Magic$(4) = "HEALMORE;H; spell of HealMore;15;20;Clouds form all around you.  When they pass, you feel much better.;This heals you."   Magic$(5) = "CATSCRATCH;D; spell of CatScratch;34;51;You reach out and slice open your victom!;This hurts your enemy."   Magic$(6) = "HEALFULL;H; spell of HealFull;31;9999;You are covered with a blue mist.  Your health is restored!;This heals you."   Magic$(7) = "PROTECTION;A; spell of Protection;50;15;Your armour glows bright white!;This adds armour for a while."   Magic$(8) = "MOREPROTECTION;A; spell of MoreProtection;58;22;Lighning strikes your armour!  It glows bright green!.;This adds armour for a while."   Magic$(9) = "DEATH;D; spell of Death;60;9999;Death appears, and touches your enemy!;This kills your enemy."   Magic$(10) = "IRON;A; spell of Iron;70;9999;Your armour becomes indestructible!  It glows red!;This makes you invincible for a while." CASE "Ninja"   Player.SpRate = 1   Player.HpRate = 4   Player.Ag = 6   Player.mScroll = 5   Player.Code$ = "N"   Cary = 12     Magic$(1) = "HEAL;H; spell of Heal;10;10;Clouds of life envelope you.  You feel better.;This heals you."   Magic$(2) = "HEALPET;P; spell of HealPet;10;6;Your pet fades out of reality.  It is more healthy when it returns.;This heals your pet."   Magic$(3) = "SHADOW;D; spell of Shadow;21;25;Your shadow envelops the foe, and attacks!;This hurts your enemy."   Magic$(4) = "SLASH;D; spell of Slash;30;35;You leap and slash through your enemy with just your hands!;This hurts your enemy."   Magic$(5) = "TORNADOE;D; spell of Tornadoe;38;40;Lighning strikes!  Wind and rain envelop your enemy!;This hurts your enemy." CASE "Monk"   Player.SpRate = 3   Player.HpRate = 3   Player.Ag = 2   Player.mScroll = 7   Player.Code$ = "M"   Cary = 10     Magic$(1) = "HEAL;H; spell of Heal;10;10;Clouds of life envelope you.  You feel better.;This heals you."   Magic$(2) = "HEALPET;P; spell of HealPet;10;10;Your pet fades out of reality.  It is more healthy when it returns.;This heals your pet."   Magic$(3) = "HEALMORE;H; spell of HealMore;15;20;Clouds form all around you.  When they pass, you feel much better.;This heals you."   Magic$(4) = "LIGHTNING;D; spell of Lightning;21;25;A blast of lightning strikes your foe!;This hurts your enemy."   Magic$(5) = "HEALFULL;H; spell of HealFull;31;9999;You are covered with a blue mist.  Your health is restored!;This heals you."   Magic$(6) = "ICE;D; spell of Ice;34;51;An blizzard descends on your enemy!;This hurts your enemy."   Magic$(7) = "ARMOUR;A; spell of Armour;50;15;Your armour glows bright white!;This adds armour for a while."END SELECTEND SUBSUB DoCommandCOLOR GENC, BCLRLOCATE BOUNDRY, 1PRINT "<Hp"; PRINT LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxHp)));PRINT " Exp"; PRINT LTRIM$(RTRIM$(STR$(Player.Exp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.Needed)));PRINT " Sp"; PRINT LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxSp)));PRINT ">"; COLOR YCOM, BCLR PRINT CAM$' TRYS TO FIGURE OUT WHAT THE COMMAND ISTempFlag = 0W = Words(CAM$, " ")IF CAM$ = "" THEN TempFlag = 1: GOTO ExitSelectIF W = 1 THENSELECT CASE UCASE$(CAM$)CASE "Q", "QUIT", "END"      TempFlag = 1      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "About to quit.  Ok? (y/n)"      LOCATE CAMBAR, 1      C$ = LTRIM$(RTRIM$(InputLine$("", 78, KeyCode%))) COLOR YCOM, BCLR LOCATE BOUNDRY, 1 PRINT C$      IF UCASE$(C$) = "Y" THENF = FREEFILEOPEN "data.dat" FOR OUTPUT AS #FPRINT #F, STR$(Player.Room)PRINT #F, STR$(Player.Hp)PRINT #F, Player.Arm$PRINT #F, STR$(Player.MaxHp)PRINT #F, STR$(Player.MaxSp)PRINT #F, STR$(Player.Sp)PRINT #F, Player.Wep$PRINT #F, STR$(Player.Exp)PRINT #F, STR$(Player.Needed)PRINT #F, STR$(Player.Level)PRINT #F, STR$(Player.Gold)PRINT #F, Player.pet$PRINT #F, Pet.MHpPRINT #F, STR$(Dely)PRINT #F, STR$(NPCn)PRINT #F, Player.Class$ + ";" + STR$(Player.Kill)PRINT #F, STR$(Player.Scroll)CLOSE #F    CALL Hexit("1")F = FREEFILEOPEN "inv.dat" FOR OUTPUT AS #FFOR t = 1 TO CaryPRINT #F, INV$(t)'PRINT INV$(t)NEXT tCLS    CLOSE #FEND      END IF           LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "Quit aborted."CASE "N", "NORTH"      TempFlag = 1      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect      IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect      IF Room.N(Player.Room) = 0 THEN      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "You can't go that way!"      GOTO ExitSelect      END IF      Player.Room = Room.N(Player.Room)      CALL DoRoomCASE "S", "SOUTH"      TempFlag = 1      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect      IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect      IF Room.S(Player.Room) = 0 THEN      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "You can't go that way!"      GOTO ExitSelect      END IF      Player.Room = Room.S(Player.Room)      CALL DoRoomCASE "E", "EAST"      TempFlag = 1      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect      IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect      IF Room.E(Player.Room) = 0 THEN      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "You can't go that way!"      GOTO ExitSelect      END IF      IF Room.E(Player.Room) = 72 THEN        IF Player.Level < 10 THEN      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "You must be level 10 to enter Kelnore!"      GOTO ExitSelect      END IF      END IF      Player.Room = Room.E(Player.Room)      CALL DoRoomCASE "W", "WEST"      TempFlag = 1      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect      IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect      IF Room.W(Player.Room) = 0 THEN      LOCATE BOUNDRY, 1      COLOR SPEC, BCLR      PRINT "You can't go that way!"      GOTO ExitSelect      END IF      Player.Room = Room.W(Player.Room)      CALL DoRoomCASE "L", "LOOK"      TempFlag = 1      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect           CALL DoRoomCASE "SPELL", "SPELLS"      TempFlag = 1      COLOR STAT, BCLR      PRINT "You have studied the scrolls of the following:"      COLOR SPEC, BCLR      FOR t = 1 TO Player.Scroll      nottyboy = Words(Magic$(t), ";")      PRINT "  The " + WORD$(3) + ".  It costs "; WORD$(4); " Sp.  " + WORD$(7)      NEXT tCASE "HELP", "?"      TempFlag = 1      CALL DoHelpCASE "INV", "INVENTORY"      TempFlag = 1      CALL DoINV("LIST", "x")CASE "RS232"      TempFlag = 1      Player.Sp = 100      Player.Hp = 100CASE "RECALL"      TempFlag = 1      IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect      IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect      Player.Room = 1      COLOR STAT, BCLR: LOCATE BOUNDRY, 1      PRINT "A huge cloud of green smoke closes around you.  You feel dizzy, and pass out."      COLOR STAT, BCLR: LOCATE BOUNDRY, 1      PRINT "When you awake, you find that you are now in the center of town..."      CALL DoRoomCASE "SLEEP"     TempFlag = 1     IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect     COLOR STAT, BCLR     LOCATE BOUNDRY, 1     IF IsSleep <> 1 THEN PRINT "You fall asleep."     IsSleep = 1CASE "WAKE"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     IF IsSleep <> 0 THEN PRINT "You wake up."     IsSleep = 0CASE "DELAY"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     PRINT "Battle delay is set to"; STR$(Dely); " seconds."CASE "NPC"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     FOR t = 1 TO NPCn     Temp = Words(NPC$(t), ";")     PRINT WORD$(1); ", "; WORD$(2); ", is in area:"; NPCr(t);     IF NPCf(t) <> 0 THEN PRINT "... is fighting." ELSE PRINT " "     NEXT t     GOTO ExitSelectCASE "CALL"     TempFlag = 1     Temp = INT(RND * NPCn) + 1     NPCr(Temp) = Player.Room     CALL DoRoom     GOTO ExitSelectCASE "FLEE", "RUN"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     IF IsFight = 0 THEN PRINT "Flee from what?": GOTO ExitSelect     IsFight = 0     PRINT "You flee like the coward you are!"     PRINT "You loose 100 exp!"     Player.Exp = Player.Exp - 100     IF Player.Exp < 0 THEN Player.Exp = 0     AKILL = 0     CALL DoRoomCASE "CASH", "$", "MONEY", "GOLD"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     PRINT "You have "; LTRIM$(RTRIM$(STR$(Player.Gold))); " gold in your pocket."CASE "ST", "STATUS", "STAT"     TempFlag = 1     LOCATE BOUNDRY, 1     COLOR STAT, BCLR     PRINT "You are a "; Player.Class$; "."         PRINT "You have "; LTRIM$(RTRIM$(STR$(Player.Gold))); " gold in your pocket."PRINT "Hp : "; LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; LTRIM$(RTRIM$(STR$(Player.MaxHp)))PRINT "Exp : "; LTRIM$(RTRIM$(STR$(Player.Exp)));PRINT "/"; LTRIM$(RTRIM$(STR$(Player.Needed)))PRINT "Sp : "; LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; LTRIM$(RTRIM$(STR$(Player.MaxSp)))    TempX = Words(Player.Wep$, ";")PRINT "Your weapon is a "; WORD$(1); " "; WORD$(2); ", with an attack power ~ "; WORD$(3); "."TempX = Words(Player.Arm$, ";")PRINT "Your armour is "; WORD$(3); ", with a protective power ~ "; WORD$(3); "."PRINT "You are on level : "; Player.LevelCASE "LIST"   TempFlag = 1   IF Player.Room <> 15 AND Player.Room <> 17 AND Player.Room <> 6 THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "Not in a shop!": GOTO ExitSelect   IF Player.Room = 15 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "[#] --- [Item] ---------- [Cost] -- [~Power]"      PRINT "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-"      PRINT "[1] --- [Short sword] --- [$100] -- [ 9]"      PRINT "[2] --- [Long sword] ---- [$150] -- [11]"      PRINT "[3] --- [Mace] ---------- [$200] -- [13]"      PRINT "[4] --- [Whip of Fire] -- [$300] -- [15]"      PRINT "[5] --- [Whip of Acid] -- [$400] -- [18]"      PRINT "[6] --- [Sword of Fire] - [$700] -- [25]"      PRINT "[7] --- [Sword of Acid] - [$890] -- [29]"      PRINT "[8] --- [Whip of Death] - [$999] -- [35]"      PRINT      PRINT "You have"; STR$(Player.Gold); " gold on hand."   END IF   IF Player.Room = 17 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "[#] --- [Item] ---------- [Cost] -- [~Power]"      PRINT "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-"      PRINT "[1] --- [Leather vest] -- [$100] -- [ 5]"      PRINT "[2] --- [Leather shield]  [$125] -- [ 6]"      PRINT "[3] --- [Iron vest] ----- [$200] -- [ 8]"      PRINT "[4] --- [Magic shield] -- [$300] -- [10]"      PRINT "[5] --- [Shield of Fire]  [$400] -- [12]"      PRINT      PRINT "You have"; STR$(Player.Gold); " gold on hand."   END IF     IF Player.Room = 6 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "Just type BUY for a list/order form."   END IFCASE "BUY"   TempFlag = 1   IF Player.Room <> 15 AND Player.Room <> 17 AND Player.Room <> 6 THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "Not in a shop!": GOTO ExitSelect   IF Player.Room = 15 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "[#] --- [Item] ---------- [Cost] -- [~Power]"      PRINT "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-"      PRINT "[1] --- [Short sword] --- [$100] -- [ 9]"      PRINT "[2] --- [Long sword] ---- [$150] -- [11]"      PRINT "[3] --- [Mace] ---------- [$200] -- [13]"      PRINT "[4] --- [Whip of Fire] -- [$300] -- [15]"      PRINT "[5] --- [Whip of Acid] -- [$400] -- [18]"      PRINT "[6] --- [Sword of Fire] - [$700] -- [25]"      PRINT "[7] --- [Sword of Acid] - [$890] -- [29]"      PRINT "[8] --- [Whip of Death] - [$999] -- [35]"      PRINT "[9] --- CANCEL"      PRINT      PRINT "You have"; STR$(Player.Gold); " gold on hand."      PRINT "What is the number of the weapon you wish to buy?"      LOCATE CAMBAR, 1      C$ = LTRIM$(RTRIM$(InputLine$("", 78, KeyCode%)))      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      SELECT CASE C$      CASE "9": PRINT "You cancel.": GOTO ExitSelect      CASE "1"           IF Player.Gold >= 100 THEN           PRINT "You bought the Short sword!"           Player.Gold = Player.Gold - 100           Player.Wep$ = "Short sword;slash;9"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "2"           IF Player.Gold >= 150 THEN           PRINT "You bought the Long sword!"           Player.Gold = Player.Gold - 150           Player.Wep$ = "Long sword;slash;11"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "3"           IF Player.Gold >= 200 THEN           PRINT "You bought the Mace!"           Player.Gold = Player.Gold - 200           Player.Wep$ = "Mace;whack;13"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "4"           IF Player.Gold >= 300 THEN           PRINT "You bought the Whip of Fire!"           Player.Gold = Player.Gold - 300           Player.Wep$ = "Whip of Fire;burn;15"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "5"           IF Player.Gold >= 400 THEN           PRINT "You bought the Whip of Acid!"           Player.Gold = Player.Gold - 400           Player.Wep$ = "Whip of Acid;chemical burn;18"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "6"           IF Player.Gold >= 700 THEN           PRINT "You bought the Sword of Fire!"           Player.Gold = Player.Gold - 700           Player.Wep$ = "Sword of Fire;blazing slash;25"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "7"           IF Player.Gold >= 890 THEN           PRINT "You bought the Sword of Acid!"           Player.Gold = Player.Gold - 890           Player.Wep$ = "Sword of Acid;chemical slash;29"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "8"           IF Player.Gold >= 999 THEN           PRINT "You bought the Whip of Death!"           Player.Gold = Player.Gold - 999           Player.Wep$ = "Whip of Death;deadly sting;35"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect                     END SELECT   END IF      IF Player.Room = 17 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "[#] --- [Item] ---------- [Cost] -- [~Power]"      PRINT "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-"      PRINT "[1] --- [Leather vest] -- [$100] -- [ 5]"      PRINT "[2] --- [Leather shield]  [$125] -- [ 6]"      PRINT "[3] --- [Iron vest] ----- [$200] -- [ 8]"      PRINT "[4] --- [Magic shield] -- [$300] -- [10]"      PRINT "[5] --- [Shield of Fire]  [$400] -- [12]"      PRINT "[6] --- [Cancel]"      PRINT      PRINT "You have"; STR$(Player.Gold); " gold on hand."      PRINT "What is the number of the armour you wish to buy?"      LOCATE CAMBAR, 1      C$ = LTRIM$(RTRIM$(InputLine$("", 78, KeyCode%)))      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      SELECT CASE C$      CASE "6": PRINT "You cancel.": GOTO ExitSelect      CASE "1"           IF Player.Gold >= 100 THEN           PRINT "You bought the Leather vest!"           Player.Gold = Player.Gold - 100           Player.Arm$ = "LEATHER VEST;a leather vest;5"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "2"           IF Player.Gold >= 125 THEN           PRINT "You bought the Leather shield!"           Player.Gold = Player.Gold - 125           Player.Arm$ = "LEATHER SHIELD;a leather shield;6"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "3"           IF Player.Gold >= 200 THEN           PRINT "You bought the Iron vest"           Player.Gold = Player.Gold - 200           Player.Arm$ = "IRON VEST;an Iron vest;8"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "4"           IF Player.Gold >= 300 THEN           PRINT "You bought the Magic Shield!"           Player.Gold = Player.Gold - 300           Player.Arm$ = "MAGIC SHIELD;a Magic shield;10"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "5"           IF Player.Gold >= 400 THEN           PRINT "You bought the Shield of Fire!"           Player.Gold = Player.Gold - 400           Player.Arm$ = "SHIELD OF FIRE;a Shield of Fire;12"           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect   END SELECT   END IF   IF Player.Room = 6 THEN      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "[#] --- [Item] ---------- [Cost] -- [~Power] - [ Hp]"      PRINT "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-"      PRINT "[1] --- [Mouse] --------- [$ 75] -- [ 8] ----- [ 30]"      PRINT "[2] --- [Rat] ----------- [$125] -- [13] ----- [ 40]"      PRINT "[3] --- [Snake] --------- [$200] -- [15] ----- [ 55]"      PRINT "[4] --- [Falcon] -------- [$300] -- [17] ----- [ 70]"      PRINT "[5] --- [Wolf] ---------- [$400] -- [19] ----- [ 80]"      PRINT "[6] --- [Tiger] --------- [$510] -- [23] ----- [ 95]"      PRINT "[7] --- [Lion] ---------- [$620] -- [25] ----- [120]"      PRINT "[8] --- [Martian] ------- [$830] -- [29] ----- [150]"      PRINT "[9] --- [Cancel]"      PRINT      PRINT "You have"; STR$(Player.Gold); " gold on hand."      PRINT "What is the number of the animal you wish to buy?"      LOCATE CAMBAR, 1      C$ = LTRIM$(RTRIM$(InputLine$("", 78, KeyCode%)))      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      SELECT CASE C$      CASE "9": PRINT "You cancel.": GOTO ExitSelect      CASE "1"           IF Player.Gold >= 75 THEN           PRINT "You bought the mouse.  It is now your pet."           Player.Gold = Player.Gold - 75           Player.pet$ = "MOUSE;a mouse;Your pet mouse is here.;bite;8;30"           Pet.MHp = 30           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "2"           IF Player.Gold >= 125 THEN           PRINT "You bought the rat.  It is now your pet."           Player.Gold = Player.Gold - 125           Player.pet$ = "RAT;a rat;Your pet rat is here.;bite;13;40"           Pet.MHp = 40           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "3"           IF Player.Gold >= 200 THEN           PRINT "You bought the snake.  It is now your pet."           Player.Gold = Player.Gold - 200           Player.pet$ = "SNAKE;a snake;Your pet snake is here.;strike;15;55"           Pet.MHp = 55           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "4"           IF Player.Gold >= 300 THEN           PRINT "You bought the falcon.  It is now your pet."           Player.Gold = Player.Gold - 300           Player.pet$ = "FALCON;a falcon;Your pet falcon is here.;peck;17;70"           Pet.MHp = 70           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "5"           IF Player.Gold >= 400 THEN           PRINT "You bought the wolf.  It is now your pet."           Player.Gold = Player.Gold - 400           Player.pet$ = "WOLF;a wolf;Your pet wolf is here.;bite;19;80"           Pet.MHp = 80           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "6"           IF Player.Gold >= 510 THEN           PRINT "You bought the tiger.  It is now your pet."           Player.Gold = Player.Gold - 510           Player.pet$ = "TIGER;a tiger;Your pet tiger is here.;bite;23;95"           Pet.MHp = 95           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "7"           IF Player.Gold >= 620 THEN           PRINT "You bought the lion.  It is now your pet."           Player.Gold = Player.Gold - 620           Player.pet$ = "LION;a lion;Your pet lion is here.;slash;25;120"           Pet.MHp = 120           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect      CASE "8"           IF Player.Gold >= 830 THEN           PRINT "You bought the Martian.  It is now your pet."           Player.Gold = Player.Gold - 830           Player.pet$ = "MARTIAN;a martian;Your pet Martian is here.;ray gun;29;150"           Pet.MHp = 150           GOTO ExitSelect           END IF           PRINT "Not enough gold!"           GOTO ExitSelect           END SELECT    END IFCASE "MAP"   TempFlag = 1   CALL DoMapEND SELECTEND IFIF W >= 2 THENTCAM$ = WORD$(1)  TTCAM$ = ""  IF W > 2 THEN TTCAM$ = WORD$(3)SELECT CASE UCASE$(TCAM$)CASE "K", "KILL", "ATTACK"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect    Enemy$ = WORD$(2)        TempFlag2 = 0    Temp = 1          FOR Temp = 1 TO NPCn    TempX = Words(NPC$(Temp), ";")    IF LCASE$(Enemy$) = LCASE$(WORD$(1)) THEN TempFlag2 = 2    NEXT Temp       Temp = 1    FOR Temp = 1 TO 100    TempX = Words(NounDesc$(Temp), ";")             IF WORD$(1) = UCASE$(TTCAM$) THEN          IF WORD$(2) = UCASE$(Enemy$) THEN               SWAP Enemy$, TTCAM$           END IF        END IF       IF WORD$(1) = UCASE$(Enemy$) AND Temp < 20 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       PRINT "You can't attack that!"       GOTO ExitSelect       END IF       IF WORD$(1) = UCASE$(Enemy$) AND Temp = 90 AND Player.Level < 13 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       PRINT "The dark being looks at you and laughs.  You must be level 13 to attack it."       GOTO ExitSelect       END IF       IF WORD$(1) = UCASE$(Enemy$) AND Temp > 19 THEN       FOR TempN = 1 TO 50          IF InRoom(Player.Room, TempN) = Temp THEN TempFlag2 = 1: Enemyno = Temp          NEXT TempN       END IF    NEXT Temp          IF TempFlag2 = 2 THEN    LOCATE BOUNDRY, 1    COLOR SPEC, BCLR    PRINT "You can't attack an NPC!  They are your friends!  Shame on you!"    GOTO ExitSelect    END IF             IF TempFlag2 = 1 THEN    TempX = Words(NounStat$(Enemyno), ";")    Enemy.Hp = VAL(WORD$(1))       IF Player.Level > 3 THEN    Enemy.Hp = Enemy.Hp + (Player.Level + 2)    END IF    EHP = Enemy.Hp '' (Enemy's max Hp is starting Hp)    TFlag = 1: IsFight = 1: GOTO ExitSelect    END IF          IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN SWAP TTCAM$, Enemy$: TTCAM$ = TTCAM$ + " "       PRINT "There is no "; TTCAM$; Enemy$; " here."    END IFCASE "CAST", "C"    TempFlag = 1    IF IsSleep = 1 THEN LOCATE BOUNDRY, 1: COLOR STAT, BCLR: PRINT "Zzzz Zzzz": GOTO ExitSelect    Spell$ = UCASE$(WORD$(2))    'Check is Spell is Valid...         IsValid = 0         FOR t = 1 TO Player.Scroll         nottyboy = Words(Magic$(t), ";")         IF Spell$ = WORD$(1) THEN IsValid = t         NEXT t         IF IsValid = 0 THEN COLOR STAT, BCLR: PRINT "You do not know that spell.": GOTO ExitSelect       'What is the spell?  (Hurt, Damage, etc)         nottyboy = Words(Magic$(IsValid), ";")         WK$ = WORD$(2)         nSp = VAL(WORD$(4))         Hdm = VAL(WORD$(5))   COLOR STAT, BCLR   LOCATE BOUNDRY, 1   SELECT CASE WK$CASE "H"   IF Player.Sp < nSp THEN PRINT "You don't have enough Sp!  You need:"; STR$(nSp); "!": GOTO ExitSelect   Player.Sp = Player.Sp - nSp   Player.Hp = Player.Hp + Hdm     IF Player.Hp > Player.MaxHp THEN Player.Hp = Player.MaxHp     COLOR SPEC, BCLR     PRINT "You cast the "; WORD$(3); "!  "; WORD$(6)     CALL Waita     GOTO ExitSelectCASE "D"   IF IsFight = 0 THEN PRINT "You are not in a fight!": GOTO ExitSelect   IF Player.Sp < nSp THEN PRINT "You don't have enough Sp!  You need:"; STR$(nSp); "!": GOTO ExitSelect   Player.Sp = Player.Sp - nSp   Enemy.Hp = Enemy.Hp - Hdm     IF Enemy.Hp < 1 THEN IsFight = 99     COLOR SPEC, BCLR     PRINT "You cast the "; WORD$(3); "!  "; WORD$(6)     CALL Waita     GOTO ExitSelectCASE "P"   IF Player.Sp < nSp THEN PRINT "You don't have enough Sp!  You need:"; STR$(nSp); "!": GOTO ExitSelect   Player.Sp = Player.Sp - nSp   Pet.MHp = Pet.MHp + Hdm     COLOR SPEC, BCLR     PRINT "You cast the "; WORD$(3); "!  "; WORD$(6)     CALL Waita     GOTO ExitSelectCASE "A"   IF Player.Sp < nSp THEN PRINT "You don't have enough Sp!  You need:"; STR$(nSp); "!": GOTO ExitSelect   Player.Sp = Player.Sp - nSp   OldArm = Hdm   Armcount = 24     COLOR SPEC, BCLR     PRINT "You cast the "; WORD$(3); "!  "; WORD$(6)     CALL Waita     GOTO ExitSelectEND SELECTCASE "L", "LOOK", "CON", "CONTRAST"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect    Enemy$ = WORD$(2)    TempFlag2 = 0    Temp = 1      FOR Temp = 1 TO 100    TempX = Words(NounDesc$(Temp), ";")            IF WORD$(1) = UCASE$(TTCAM$) THEN          IF WORD$(2) = UCASE$(Enemy$) THEN                 SWAP Enemy$, TTCAM$           END IF        END IF                               IF WORD$(1) = UCASE$(Enemy$) AND Temp < 20 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       PRINT "You can't attack that!"       GOTO ExitSelect       END IF       IF WORD$(1) = UCASE$(Enemy$) AND Temp > 19 THEN       FOR TempN = 1 TO 50          IF InRoom(Player.Room, TempN) = Temp THEN TempFlag2 = 1: Enemyno = Temp          NEXT TempN       END IF    NEXT Temp            IF TempFlag2 = 1 THEN    TempX = Words(NounStat$(Enemyno), ";")    Enemy.Hp = VAL(WORD$(1))       IF Player.Level > 3 THEN    Enemy.Hp = Enemy.Hp + Player.Level + 2    END IF    Enemy.Att = VAL(WORD$(5))    IF Player.Level > 3 THEN    Enemy.Att = Enemy.Att + Player.Level + 2    END IF    TempX = Words(NounDesc$(Enemyno), ";")    DE$ = LCASE$(WORD$(2))    COLOR STAT, BCLR    LOCATE BOUNDRY, 1    PRINT "The "; DE$; " "; Enemy$; " has ~"; STR$(Enemy.Hp); "hp and ~"; STR$(Enemy.Att); " attack strength."TempX = Words(Player.Wep$, ";")Bang = VAL(WORD$(3))       PRINT "You have"; STR$(Player.Hp); "hp and ~"; STR$(Bang); " attack strength."    END IF        IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN SWAP TTCAM$, Enemy$: TTCAM$ = TTCAM$ + " "       PRINT "There is no "; TTCAM$; Enemy$; " here."    END IF   CASE "READ"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    IF IsFight <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Ugg!  Ouch!  You are in a fight!": GOTO ExitSelect    Item$ = WORD$(2)    TempFlag2 = 0    Temp = 1     IF UCASE$(Item$) = "TOWN" AND UCASE$(TTCAM$) = "MAP" THEN CALL DoMap: GOTO ExitSelect    IF UCASE$(Item$) = "SPELL" AND UCASE$(TTCAM$) = "BOOK" THEN CALL DoSpell: GOTO ExitSelect    IF UCASE$(Item$) = "MAP" THEN CALL DoMap: GOTO ExitSelect    IF UCASE$(Item$) = "BOOK" THEN CALL DoSpell: GOTO ExitSelect       FOR Temp = 1 TO Cary    TempX = Words(INV$(Temp), ";")             IF UCASE$(WORD$(1)) = UCASE$(Item$) THEN          IF UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN               'SWAP Item$, TTCAM$               TempFlag2 = 1               nottyboy = Temp           END IF        END IF       IF UCASE$(Item$) = UCASE$(WORD$(2)) THEN TempFlag2 = 1: nottyboy = Temp       NEXT Temp    TempX = Words(INV$(nottyboy), ";")    IF TempFlag2 = 1 THEN       IF WORD$(3) <> "READ" THEN COLOR STAT, BCLR: PRINT "Not readable!": GOTO ExitSelect       COLOR SPEC, BCLR       PRINT "The "; WORD$(1); " "; WORD$(2); " reads as follows:"       PRINT : PRINT WORD$(9)    END IF             IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN Item$ = Item$ + " "       PRINT "There is no "; Item$; TTCAM$; " in your inventory."    END IF  CASE "DROP"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    Item$ = WORD$(2)       'Can't drop some items       IF UCASE$(Item$) = "TOWN" AND UCASE$(TTCAM$) = "MAP" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't drop your town map!": GOTO ExitSelect    IF UCASE$(Item$) = "SPELL" AND UCASE$(TTCAM$) = "BOOK" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't drop your spell book!": GOTO ExitSelect    IF UCASE$(Item$) = "MAP" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't drop your town map!": GOTO ExitSelect    IF UCASE$(Item$) = "BOOK" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't drop your spell book!": GOTO ExitSelect       TempFlag2 = 0    Temp = 1    FOR Temp = 1 TO Cary    TempX = Words(INV$(Temp), ";")            IF UCASE$(WORD$(1)) = UCASE$(Item$) THEN          IF UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN               'SWAP Item$, TTCAM$               TempFlag2 = 1               nottyboy = Temp           END IF        END IF    IF UCASE$(Item$) = UCASE$(WORD$(2)) THEN TempFlag2 = 1: nottyboy = Temp      NEXT Temp      TempX = Words(INV$(nottyboy), ";")       IF TempFlag2 = 1 THEN    COLOR ACTI, BCLR    LOCATE BOUNDRY, 1    Tw1$ = WORD$(1): Tw2$ = WORD$(2)    PRINT "You drop the "; WORD$(1); " "; WORD$(2); "."    CALL DoINV("SORT", "x")           FOR TempN = 1 TO 500    IF TempN > 19 AND TempN < 100 THEN GOTO BlaCycl    IF UCASE$(INV$(nottyboy)) = UCASE$(NounDesc$(TempN)) THEN heHaw = TempN: EXIT FORBlaCycl:    NEXT TempN    INV$(nottyboy) = ""       FOR TempN = 1 TO 50       IF InRoom(Player.Room, TempN) = 0 THEN Rroomy = TempN: EXIT FOR    NEXT TempN          InRoom(Player.Room, Rroomy) = heHaw       'Are you dropping your weapon?    nottyboy = Words(Player.Wep$, ";")    IF UCASE$(Tw1$) = UCASE$(WORD$(1)) AND UCASE$(Tw2$) = UCASE$(WORD$(2)) THEN    COLOR 4, BCLR    PRINT "You have no weapon!"    Player.Wep$ = "Your;hand;punch;2"    END IF       'Are you dropping your armour?       nottyboy = Words(Player.Arm$, ";")    IF UCASE$(Tw1$) = UCASE$(WORD$(1)) AND UCASE$(Tw2$) = UCASE$(WORD$(2)) THEN    COLOR 4, BCLR    PRINT "You have no armour!"    Player.Arm$ = "Tee;shirt;a tee shirt;1"    END IF     END IF      IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN SWAP TTCAM$, Item$: TTCAM$ = TTCAM$ + " "       PRINT "There is no "; TTCAM$; Item$; " in your inventory."    END IFCASE "GET", "TAKE"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    Item$ = WORD$(2)    TempFlag2 = 0    Temp = 1     FOR Temp = 1 TO 500           TempX = Words(NounDesc$(Temp), ";")              IF UCASE$(WORD$(2)) = UCASE$(Item$) THEN       IF Temp > 19 AND Temp < 100 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       TempFlag2 = 3       'GOTO HeyGirl2       END IF       END IF       IF UCASE$(WORD$(1)) = UCASE$(Item$) THEN       IF Temp > 19 AND Temp < 100 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       TempFlag2 = 3       'GOTO HeyGirl2       END IF       END IF       IF UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN       IF Temp > 19 AND Temp < 100 THEN       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR       TempFlag2 = 3       'GOTO HeyGirl2       END IF       END IFIF UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN   IF UCASE$(WORD$(1)) = UCASE$(Item$) THEN       FOR TempN = 1 TO 50       IF InRoom(Player.Room, TempN) = Temp THEN TempFlag2 = 1: Iitem = Temp: Eitem = TempN: GOTO HeyGirl2       NEXT TempN     END IFEND IF       IF UCASE$(WORD$(2)) = UCASE$(Item$) THEN 'AND UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN          FOR TempN = 1 TO 50          IF InRoom(Player.Room, TempN) = Temp THEN TempFlag2 = 1: Iitem = Temp: Eitem = TempN: GOTO HeyGirl2          NEXT TempN          END IF          HeyGirl:    NEXT TempHeyGirl2:        IF TempFlag2 = 1 THEN    BillyBill = 0    FOR t = 1 TO Cary    IF INV$(t) = "" THEN INV$(t) = NounDesc$(Iitem): BillyBill = 1: EXIT FOR    NEXT t    TempX = Words(NounDesc$(Iitem), ";")    IF BillyBill = 0 THEN    COLOR STAT, BCLR    LOCATE BOUNDRY, 1    PRINT "You can't carry anymore!"    GOTO ExitSelect    END IF    IF Iitem > 19 AND Iitem < 100 THEN       COLOR STAT, BCLR       LOCATE BOUNDRY, 1       PRINT "You can't get that!"       GOTO ExitSelect    END IF       COLOR ACTI, BCLR    LOCATE BOUNDRY, 1    PRINT "You now carry the "; WORD$(1); " "; WORD$(2); "."    InRoom(Player.Room, Eitem) = 0    END IF    IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN Item$ = Item$ + " "       PRINT "There is no "; Item$; TTCAM$; " here."    END IF    IF TempFlag2 = 3 THEN       COLOR STAT, BCLR       LOCATE BOUNDRY, 1       PRINT "You can't get that!"       END IFCASE "WEAR", "WIELD"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    Item$ = WORD$(2)      'Can't wear some items      IF UCASE$(Item$) = "TOWN" AND UCASE$(TTCAM$) = "MAP" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't wear your town map!": GOTO ExitSelect    IF UCASE$(Item$) = "SPELL" AND UCASE$(TTCAM$) = "BOOK" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't wear your spell book!": GOTO ExitSelect    IF UCASE$(Item$) = "MAP" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't wear your town map!": GOTO ExitSelect    IF UCASE$(Item$) = "BOOK" THEN COLOR SPEC, BCLR: LOCATE BOUNDRY, 1: PRINT "You can't wear your spell book!": GOTO ExitSelect               TempFlag2 = 0    Temp = 1    FOR Temp = 1 TO Cary    TempX = Words(INV$(Temp), ";")           IF UCASE$(WORD$(1)) = UCASE$(Item$) THEN          IF UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN               'SWAP Item$, TTCAM$               TempFlag2 = 1               nottyboy = Temp           END IF        END IF    IF UCASE$(Item$) = UCASE$(WORD$(2)) THEN TempFlag2 = 1: nottyboy = Temp     NEXT Temp     TempX = Words(INV$(nottyboy), ";")      IF TempFlag2 = 1 THEN    COLOR ACTI, BCLR    LOCATE BOUNDRY, 1    Tw1$ = WORD$(1): Tw2$ = WORD$(2)    PRINT "You wear the "; WORD$(1); " "; WORD$(2); "."    CALL DoINV("SORT", "x")          FOR TempN = 1 TO 500    IF TempN > 19 AND TempN < 100 THEN GOTO BlaCycl3    IF UCASE$(INV$(nottyboy)) = UCASE$(NounDesc$(TempN)) THEN heHaw = TempN: EXIT FORBlaCycl3:    NEXT TempN       'INV$(Nottyboy) = ""         'FOR TempN = 1 TO 50    '   IF InRoom(Player.Room, TempN) = 0 THEN Rroomy = TempN: EXIT FOR    'NEXT TempN         'InRoom(Player.Room, Rroomy) = heHaw            'Are you wearing a weapon or armour?    IF heHaw < 200 THEN       Player.Wep$ = NounDesc$(heHaw)       COLOR STAT, BCLR       LOCATE BOUNDRY, 1       PRINT "You now wear the "; WORD$(1); " "; WORD$(2); " as a weapon."       ELSE       Player.Arm$ = NounDesc$(heHaw)       COLOR STAT, BCLR       LOCATE BOUNDRY, 1       PRINT "You now wear the "; WORD$(1); " "; WORD$(2); " as armour."    END IF    END IF     IF TempFlag2 = 0 THEN       COLOR SPEC, BCLR       LOCATE BOUNDRY, 1       IF W > 2 THEN SWAP TTCAM$, Item$: TTCAM$ = TTCAM$ + " "       PRINT "There is no "; TTCAM$; Item$; " in your inventory."    END IFCASE "REMOVE", "REM", "UNWEAR", "DISROBE", "UNWIELD"    TempFlag = 1    IF IsSleep <> 0 THEN COLOR STAT, BCLR: LOCATE BOUNDRY, 1: PRINT "Zzzz Zzzz You are asleep Zzzz": GOTO ExitSelect    Item$ = WORD$(2)    TempFlag2 = 0           nottyboy = Words(Player.Wep$, ";")    IF UCASE$(WORD$(2)) = UCASE$(Item$) THEN TempFlag2 = 1 'Weapon    IF UCASE$(WORD$(1)) = UCASE$(Item$) AND UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN TempFlag2 = 1    nottyboy = Words(Player.Arm$, ";")    IF UCASE$(WORD$(2)) = UCASE$(Item$) THEN TempFlag2 = 2 'Armour    IF UCASE$(WORD$(1)) = UCASE$(Item$) AND UCASE$(WORD$(2)) = UCASE$(TTCAM$) THEN TempFlag2 = 2    IF TempFlag2 = 1 THEN nottyboy = Words(Player.Wep$, ";") ELSE nottyboy = Words(Player.Arm$, ";")       LOCATE BOUNDRY, 1       'If Weapon...    IF TempFlag2 = 1 THEN       IF UCASE$(WORD$(2)) = "HAND" AND UCASE$(WORD$(1)) = "YOUR" THEN         COLOR STAT, BCLR         PRINT "You can't remove your hand!"         GOTO ExitSelect       END IF       COLOR ACTI, BCLR       PRINT "You stop using the "; WORD$(1); " "; WORD$(2); " as your weapon."       COLOR STAT, BCLR       PRINT "Your weapon is now your hand."       Player.Wep$ = "Your;hand;punch;2"       GOTO ExitSelect    END IF    'If Armour...    IF TempFlag2 = 2 THEN       IF UCASE$(WORD$(2)) = "SHIRT" AND UCASE$(WORD$(1)) = "TEE" THEN         COLOR STAT, BCLR         PRINT "You can't remove the tee shirt!  (You'll be... naked!)"         GOTO ExitSelect       END IF       COLOR ACTI, BCLR       PRINT "You stop using the "; WORD$(1); " "; WORD$(2); " as your armour."       COLOR STAT, BCLR       PRINT "Your armour is now a tee shirt."       Player.Arm$ = "Tee;shirt;a tee shirt;1"       GOTO ExitSelect     END IF     IF TempFlag2 = 0 THEN        COLOR STAT, BCLR        IF W > 2 THEN Item$ = Item$ + " "        PRINT "You aren't wearing a "; Item$; TTCAM$; "."        GOTO ExitSelect     END IFEND SELECTEND IFIF W = 3 THENTCAM$ = WORD$(1)SELECT CASE UCASE$(TCAM$)CASE "SET"    TempFlag = 1    Funct$ = UCASE$(LTRIM$(RTRIM$(WORD$(2))))       IF Funct$ = "DELAY" THEN       COLOR STAT, BCLR             FunT$ = WORD$(3)       Dely = VAL(FunT$)          IF Dely < .5 THEN          Dely = .5          PRINT "Delay set to .5 seconds (can't be less than .5 seconds)"          GOTO ExitSelect          END IF          IF Dely > 5 THEN          Dely = 5          PRINT "Delay set to  5 seconds (can't be more than 5 seconds)"          GOTO ExitSelect          END IF       PRINT "Battle delay set to"; STR$(Dely); " seconds."       GOTO ExitSelect     END IF    IF Funct$ = "NPC" THEN       ONPCn = NPCn       COLOR STAT, BCLR            FunT$ = WORD$(3)       NPCn = VAL(FunT$)          IF NPCn < 1 THEN          NPCn = 1          PRINT "(must have at least one NPC)"                    END IF          IF NPCn > 10 THEN          NPCn = 10          PRINT "(Can have no more than 10 NPCs)"                    END IF       PRINT "# of NPCs set to"; STR$(NPCn); "."             IF ONPCn < NPCn THEN          FOR t = (ONPCn + 1) TO NPCn          NPCr(t) = INT(RND * R) + 1             Temp = Words(NPC$(t), ";")             WORD$(2) = LCASE$(WORD$(2))             LOCATE BOUNDRY, 1             COLOR SPEC, BCLR             PRINT WORD$(1); ", "; WORD$(2); ", enters the game in area:"; STR$(NPCr(t)); "."          NEXT t       END IF       GOTO ExitSelect             END IFEND SELECTEND IFExitSelect:IF TempFlag = 0 THEN   LOCATE BOUNDRY, 1   COLOR SPEC, BCLR   PRINT "Command not understood!"END IFEND SUBSUB DoHelpCOLOR SPEC, BCLRLOCATE BOUNDRY, 1PRINTPRINT "Online Help for a "; Player.Class$; ":"COLOR GENC, BCLRPRINT "LOOK,L; LOOK,CON monster      Shows the area's info; Shows monster's info."PRINT "N, S, E, W                    Go north, south, east, west."PRINT "KILL,K monster                Attacks the monster."PRINT "SLEEP, WAKE                   Go to sleep, wake up."PRINT "RECALL                        Transport to the center of town."PRINT "FLEE,RUN                      Flee from battle.  It'll cost you 100 exp."PRINT "CASH,$,MONEY,GOLD             Shows how much money you have on hand."PRINT "ST,STATUS; MAP                Shows your status; Shows a map of the town."PRINT "SET DELAY n, NPC n            Set the # of seconds in a delay, the # NPC's."PRINT "DELAY, NPC                    Shows the battle delay, Shows stats of NPCs."PRINT "SPELL, CAST spell             List of spells you know, Cast a spell."PRINT "QUIT,Q,END                    Quits the game"COLOR SPEC, BCLRPRINT "Sp and Hp recharge faster when asleep.  Your status is auto-saved when you quit."PRINT "Read the TUJURE.TXT file for more help & tips.  NPC's are the computer players."PRINTPRINT "Notes on "; Player.Class$; "s:"IF Player.Class$ = "Paladin" THEN PRINT "  You are best at healing spells.  Sp recharges faster than most."IF Player.Class$ = "Barbarian" THEN PRINT "  You are best at weapons.  You have quick Hp recharge, but few spells."IF Player.Class$ = "Sorcerer" THEN PRINT "  You have more spells.  Sp recharge is the fastest, but slow Hp recharge."IF Player.Class$ = "Ninja" THEN PRINT "  You are agile with moderate spells.  You can dodge attacks better than most."IF Player.Class$ = "Monk" THEN PRINT "  You have a moderate combination of magical and physical abilities."COLOR GENC, BCLRPRINT "<Hp"; PRINT LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxHp)));PRINT " Exp"; PRINT LTRIM$(RTRIM$(STR$(Player.Exp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.Needed)));PRINT " Sp"; PRINT LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxSp)));PRINT ">"END SUBSUB DoINV (K1$, k2$)SELECT CASE K1$CASE "LOAD"   t = 1   OPEN "inv.dat" FOR INPUT AS #1   DO WHILE NOT EOF(1)   INPUT #1, INV$(t)   PRINT t; "  "; INV$(t)   t = t + 1   LOOP   CLOSE #1   'CALL Hexit("1")   'ENDCASE "LIST"   COLOR STAT, BCLR   LOCATE BOUNDRY, 1   PRINT "You are carrying the following:"   COLOR SPEC, BCLR   PRINT "A town map"   PRINT "A spell book"   Tpound = 0   FOR t = 1 TO Cary     IF INV$(t) = "" THEN EXIT FOR   nottyboy = Words(INV$(t), ";")   Nadj$ = WORD$(1)   Nnam$ = WORD$(2)   Tpound = Tpound + VAL(WORD$(8))   PRINT "A "; Nadj$; " "; Nnam$NextSpaceAh:   NEXT t   COLOR STAT, BCLR   PRINT "You are carrying"; t + 1; "/"; Cary + 1; " items and"; Tpound + 2; "/"; (Cary * 7) + 2; " pounds."CASE "SORT"   FOR t = 1 TO 40   HeyHey$(t) = ""   SWAP INV$(t), HeyHey$(t)   NEXT t   agy = 1   FOR t = 1 TO 40   IF HeyHey$(t) = "" THEN GOTO gWizzy   SWAP INV$(agy), HeyHey$(t)   agy = agy + 1gWizzy:   NEXT tEND SELECTEND SUBSUB DoKillCOLOR SPEC, BCLRLOCATE BOUNDRY, 1Pet = 0Tempzz = Words(Player.pet$, ";")IF Tempzz > 1 THEN   Pet = 1   Pet.Name$ = LCASE$(WORD$(1))   Pet.Att$ = WORD$(4)   Pet.Str = VAL(WORD$(5))   Pet.Xhp = VAL(WORD$(6))END IFTempX = Words(NounStat$(Enemyno), ";")Enemy.Attack$ = WORD$(2)Enemy.Gold = VAL(WORD$(3))Enemy.Exp = VAL(WORD$(4))TempX = INT(RND * 100) + 20Enemy.Exp = Enemy.Exp + TempXTempX = INT(RND * 10) + 1IF Player.Level > 3 THEN Enemy.Gold = Enemy.Gold + Player.Level + 4Enemy.Gold = Enemy.Gold + TempXEnemy.Att = VAL(WORD$(5))IF Player.Level > 3 THENEnemy.Att = Enemy.Att + Player.Level + 2END IFTempX = Words(Player.Wep$, ";")WEP$ = WORD$(2)STRi$ = WORD$(3)Bang = VAL(WORD$(4))TempX = Words(Player.Arm$, ";")AHelp = VAL(WORD$(4))IF Armcount > 0 THEN AHelp = AHelp + OldArmBGS = INT(AHelp / 2)AHelp = INT(RND * AHelp) + BGS'ETE = Enemy.Att - 5'IF AHelp >= ETE THEN Enemy.Att = Enemy.Att + 5SELECT CASE IsFightCASE 2: GOTO NextStep0CASE 2.5: GOTO Ok2.5CASE 3: GOTO NextStep1CASE 3.5: GOTO Ok3.5CASE 4: GOTO NextStepBCASE 4.5: GOTO Ok4.5CASE 5: GOTO NextStep2CASE 5.5: GOTO Ok5.5CASE 6: GOTO NextStepCCASE 6.5: GOTO Ok6.5CASE 7: GOTO NextStep3CASE 7.5: GOTO Ok7.5CASE 8: GOTO NextStepECASE 99: Enemy.Hp = 0: AKILL = 1: GOTO 4567654CASE 0: EXIT SUBEND SELECTIF IsFight = 0 THEN EXIT SUBPRINT "You attack the "; Enemy$; "!"RANDOMIZE TIMERLOCATE BOUNDRYCALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 2: GOTO EndDaSub'   IF TempY2 = 1 THEN'   TFlag6 = 0'END IFNextStep0:LOCATE BOUNDRY, 1   RANDOMIZE TIMER   BGS = INT(Bang / 2)TempX = INT(RND * Bang) + BGSBOP$ = "misses"IF TempX > 0 THEN BOP$ = "hits"IF TempX > 2 THEN BOP$ = "nails"IF TempX > 4 THEN BOP$ = "demolishes"IF TempX > 6 THEN BOP$ = "destroys"IF TempX > 8 THEN BOP$ = "anihalates"IF TempX > 10 THEN BOP$ = "disembowls"IF TempX > 15 THEN BOP$ = "chops up"IF TempX > 20 THEN BOP$ = "slices up"IF TempX > 30 THEN BOP$ = "knocks bits of brain out of"TempQQQ = TempXIF Pet = 1 THEN   RANDOMIZE TIMERTempx2 = INT(RND * Pet.Str)BOP2$ = "misses"IF Tempx2 > 0 THEN BOP2$ = "hits"IF Tempx2 > 2 THEN BOP2$ = "nails"IF Tempx2 > 4 THEN BOP2$ = "demolishes"IF Tempx2 > 6 THEN BOP2$ = "destroys"IF Tempx2 > 8 THEN BOP2$ = "anihalates"IF Tempx2 > 10 THEN BOP2$ = "disembowls"IF Tempx2 > 15 THEN BOP$ = "chops up"IF Tempx2 > 20 THEN BOP$ = "slices up"IF Tempx2 > 30 THEN BOP$ = "knocks bits of brain out of"TempQQQ = TempQQQ + Tempx2END IFCOLOR 14, BCLRPRINT "  Your "; STRi$; " "; BOP$; " the "; Enemy$; "!"Ok2.5:'LOCATE BOUNDRY, 1CALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag8 = 0 THEN WTill7! = TIMER + dely: TFlag8 = 1'   TempY2 = DoWait7(WTill7!)'   IF TempY2 <> 1 THEN IsFight = 2.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 3'   TFlag8 = 0'END IFNextStep1:COLOR STAT, BCLRLOCATE BOUNDRY, 1IF Pet = 1 THENPRINT "    Your "; Pet.Name$; "'s "; Pet.Att$; " "; BOP2$; " the "; Enemy$; "!"Ok3.5:CALL WaitaIF IsFight = 0 THEN EXIT SUBLOCATE BOUNDRY, 1COLOR 12, BCLR'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 3.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 4'   TFlag6 = 0'END IFEND IFNextStepB:'PRINT TempQQQEnemy.Hp = Enemy.Hp - TempQQQIF Enemy.Hp < 1 THEN AKILL = 1: GOTO 4567654TempX = INT(RND * Enemy.Att)BOP$ = "misses"TempX = TempX - AHelpIF TempX < 1 THEN BOP$ = "(via your armour) doesn't hurt": TempX = 0TempX = TempX - (INT(RND * Player.Ag))IF TempX < 1 THEN BOP$ = "AGILE": TempX = 0IF TempX > 0 THEN BOP$ = "hits"IF TempX > 2 THEN BOP$ = "nails"IF TempX > 4 THEN BOP$ = "demolishes"IF TempX > 6 THEN BOP$ = "destroys"IF TempX > 8 THEN BOP$ = "anihalates"IF TempX > 10 THEN BOP$ = "disembowls"IF TempX > 15 THEN BOP$ = "chops up"IF TempX > 20 THEN BOP$ = "slices up"IF TempX > 30 THEN BOP$ = "knocks bits of brain out of"IF Pet = 1 AND Player.Level > 3 THENETEMPY = (Enemy.Att - 5) - Player.Level - 5IF ETEMPY < 5 THEN ETEMPY = 5Tempx2 = INT(RND * ETEMPY)BOP2$ = "misses"IF Tempx2 > 0 THEN BOP2$ = "hits"IF Tempx2 > 2 THEN BOP2$ = "nails"IF Tempx2 > 4 THEN BOP2$ = "demolishes"IF Tempx2 > 6 THEN BOP2$ = "destroys"IF Tempx2 > 8 THEN BOP2$ = "anihalates"IF Tempx2 > 10 THEN BOP2$ = "disembowls"IF Tempx2 > 15 THEN BOP$ = "chops up"IF Tempx2 > 20 THEN BOP$ = "slices up"IF Tempx2 > 30 THEN BOP$ = "knocks bits of brain out of"END IFLOCATE BOUNDRY, 1COLOR 12, BCLRIF BOP$ = "AGILE" THEN   COLOR SPEC, BCLR   xx3 = INT(RND * 3) + 1   IF xx3 = 1 THEN PRINT "You nimbly backflip out of the way of the attack!"   IF xx3 = 2 THEN PRINT "You duck beneath the "; Enemy$; "'s "; Enemy.Attack$; "!"   IF xx3 = 3 THEN PRINT "You execute a perfect cartwheel, narrowly dodging harm!"GOTO AfterTheThangEND IFPRINT "The "; Enemy$; "'s "; Enemy.Attack$; " "; BOP$; " you!"Player.Hp = Player.Hp - TempXAfterTheThang:IF Player.Hp < 1 THEN AKILL = 2: GOTO 4567654Ok4.5:LOCATE BOUNDRY, 1CALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 4.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 5'   TFlag6 = 0'END IFNextStep2:LOCATE BOUNDRY, 1IF Pet = 1 THENCOLOR 12, BCLRPRINT "The "; Enemy$; "'s "; Enemy.Attack$; " "; BOP2$; " your pet "; Pet.Name$; "!"Pet.MHp = Pet.MHp - Tempx2IF Pet.MHp < 1 AND Pet = 1 THEN   COLOR 4, BCLR   LOCATE BOUNDRY, 1   PRINT "   The "; Enemy$; " has killed your pet "; Pet.Name$; "!!"   Pet = 0   Player.pet$ = "none"   Pet.MHp = 0   Pet.Name$ = "none" Ok5.5:CALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 5.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 6'   TFlag6 = 0'   GOTO NextStepC'END IFEND IFEND IFNextStepC:BOP$ = "is in perfect health."TempX = PerOf(Enemy.Hp, EHP)IF TempX < 90 THEN BOP$ = "is in great health."IF TempX < 80 THEN BOP$ = "has minor cuts and bruises."IF TempX < 70 THEN BOP$ = "has large cuts and bruises."IF TempX < 60 THEN BOP$ = "is bleeding bad!"IF TempX < 50 THEN BOP$ = "is in awful shape!"IF TempX < 40 THEN BOP$ = "is bleeding terribly!"IF TempX < 30 THEN BOP$ = "is vomiting blood!"IF TempX < 20 THEN BOP$ = "pales as he nears death!"IF TempX < 10 THEN BOP$ = "is almost gone!"LOCATE BOUNDRY, 1COLOR SPEC, BCLRPRINT "<Hp"; LTRIM$(STR$(Enemy.Hp)); ">";PRINT " The "; Enemy$; " "; BOP$Ok6.5:CALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 6.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 7'   TFlag6 = 0'END IFNextStep3:COLOR SPEC, BCLRLOCATE BOUNDRY, 1IF Pet = 1 THENBOP$ = "is in perfect health."TempX = PerOf(Pet.MHp, Pet.Xhp)IF TempX < 90 THEN BOP$ = "is in great health."IF TempX < 80 THEN BOP$ = "has tiny cuts and bruises."IF TempX < 70 THEN BOP$ = "has fair sized cuts and bruises."IF TempX < 60 THEN BOP$ = "is bleeding a bit."IF TempX < 50 THEN BOP$ = "is not in good shape."IF TempX < 40 THEN BOP$ = "is bleeding quite a lot!"IF TempX < 30 THEN BOP$ = "is vomiting blood!"IF TempX < 20 THEN BOP$ = "pales as he nears death!"IF TempX < 10 THEN BOP$ = "is almost gone!"COLOR SPEC, BCLRPRINT "<Hp"; LTRIM$(STR$(Pet.MHp)); ">";PRINT " Your pet "; Pet.Name$; " "; BOP$Ok7.5:CALL WaitaIF IsFight = 0 THEN EXIT SUB'IF TFlag6 = 0 THEN WTill4! = TIMER + dely: TFlag6 = 1'   TempY2 = DoWait4(WTill4!)'   IF TempY2 <> 1 THEN IsFight = 7.5: GOTO EndDaSub'   IF TempY2 = 1 THEN'   IsFight = 8'   TFlag6 = 0'   EXIT SUB'END IFEND IFNextStepE:IsFight = 1TempX = PerOf(Player.Hp, Player.MaxHp)BOP$ = "are in perfect health."IF TempX < 90 THEN BOP$ = "are in great health."IF TempX < 80 THEN BOP$ = "have tiny cuts and bruises."IF TempX < 70 THEN BOP$ = "have fair sized cuts and bruises."IF TempX < 60 THEN BOP$ = "are bleeding a bit."IF TempX < 50 THEN BOP$ = "are not feeling so good..."IF TempX < 40 THEN BOP$ = "are bleeding a lot, actually."IF TempX < 35 THEN BOP$ = "are coughing and choking."IF TempX < 30 THEN BOP$ = "are feeling quite ill!"IF TempX < 25 THEN BOP$ = "are vomiting!"IF TempX < 20 THEN BOP$ = "are vomiting blood!"IF TempX < 15 THEN BOP$ = "pale as you near death..."IF TempX < 10 THEN BOP$ = "turning a nice shade of red."IF TempX < 5 THEN BOP$ = "are almost gone.  Better use a spell soon!"IF TempX < 3 THEN BOP$ = "are just about dead.  I would flee if I were you!"LOCATE BOUNDRY, 1COLOR GENC, BCLRPRINT "<Hp"; PRINT LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT " Sp"; PRINT LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT ">";PRINT "You "; BOP$'CALL Waita'IF TFlag5 = 0 THEN WTill3! = TIMER + 1: TFlag5 = 1'   TempY2 = DoWait3(WTill3!)'   IF TempY2 = 1 THEN'   TFlag5 = 0'END IFPRINT4567654COLOR SPEC, BCLRLOCATE BOUNDRY, 1IF AKILL = 1 THEN      IF Enemyno = 90 THEN CALL Fini     PRINT "You killed the "; Enemy$; "!"CALL Waita   TempX = Words(NounDesc$(Enemyno), ";")   IF WORD$(5) <> "0" THEN      TempX = INT(RND * 50) + 1      IF TempX > 0 THEN         TempX = INT(RND * 3) + 1         TempX = TempX + 4         nottyboy = Words(NounDesc$(VAL(WORD$(TempX))), ";")         IF WORD$(TempX) = "0" THEN GOTO Isa0dude         COLOR SPEC, BCLR         PRINT "As the "; Enemy$; " falls, it drops a ";         COLOR STAT, BCLR         PRINT WORD$(1); " "; WORD$(2); "";         COLOR SPEC, BLCR         PRINT "!"         FOR t = 1 TO 100         IF InRoom(Player.Room, t) = 0 THEN nottyboy = t: EXIT FOR         NEXT t                 InRoom(Player.Room, nottyboy) = VAL(WORD$(TempX))         CALL Waita           END IF    END IFIsa0dude:COLOR SPEC, BCLRLOCATE BOUNDRY, 1   Player.Kill = Player.Kill + 1   Player.Gold = Player.Gold + Enemy.Gold   Player.Exp = Player.Exp + Enemy.Exp   PRINT "You gain"; Enemy.Exp; " experience."   PRINT "You gain"; Enemy.Gold; " gold."CALL Waita   nottyboy = Player.Level   IF Playerl.Level < 6 THEN nottyboy = nottyboy + 6   IF Player.Kill > 10 + nottyboy THEN   Player.Kill = 0   Player.Scroll = Player.Scroll + 1   IF Player.Scroll > Player.mScroll THEN Player.Scroll = Player.mScroll: GOTO NoScrollDo   COLOR SPEC, BCLR   LOCATE BOUNDRY, 1   nottyboy = Words(Magic$(Player.Scroll), ";")   PRINT "You have learned a new spell!  It is the "; WORD$(3); "."   CALL Waita   END IF   NoScrollDo:COLOR SPEC, BCLRLOCATE BOUNDRY, 1     IsFight = 0   AKILL = 0   FOR t = 1 TO 50   IF InRoom(Player.Room, t) = Enemyno THEN InRoom(Player.Room, t) = 0: EXIT FOR   NEXT t     IF Player.Exp >= Player.Needed THEN      Player.Needed = Player.Needed + 500      TempX = INT(RND * 300) + 100      Player.Needed = Player.Needed + TempX      Player.Exp = 1      Player.MaxHp = Player.MaxHp + 4      Player.Level = Player.Level + 1      Player.Gold = Player.Gold + 50      Player.MaxSp = Player.MaxSp + 2      COLOR SPEC, BCLR      LOCATE BOUNDRY, 1      PRINT "You have raised a level!"    CALL Waita           COLOR STAT, BCLR      PRINT "Max Hp raises by 4!"      PRINT "Gold raises by 50!"      PRINT "Max spell power raises by 2!"  CALL Waita    END IF   CALL DoRoom  END IFIF AKILL = 2 THEN      COLOR SPEC, BCLR   PRINT "You have been killed!  Your gold drops by 1/2, and your EXP drops by 300."CALL Waita   LOCATE CAMBAR, CCol%   COLOR CBTX, CBBA     IsFight = 0   AKILL = 0   Ti! = TIMER + 2   WHILE Ti! > TIMER: WEND   Player.Gold = INT(Player.Gold / 2)   Player.Exp = Player.Exp - 300   IF Player.Exp < 0 THEN Player.Exp = 0   Player.Hp = Player.MaxHp   CALL DoRoomEND IFEndDaSub:LOCATE CAMBAR, CCol%COLOR CBTX, CBBAEND SUBSUB DoMapLOCATE BOUNDRY, 1COLOR SPEC, BCLRPRINT "Map of Tujure:"COLOR GENC, BCLRPRINTPRINT "                    [ 12] - [11]   [16]"PRINT "                      |      |      |"PRINT "             [14] - [13] - [ 2]   [ 8] - [15]*"PRINT "      *        |             |      |"PRINT "      [ 17] - [ 7] - [ 4] - [ 1] - [ 5] - To the forest ->"PRINT "                      |      |      |"PRINT "                   *[ 6]   [ 3]   [ 9]"PRINT "                             |      |"PRINT "                    [20] - [18]   [10] - [19]"PRINTPRINT " * = Shops"COLOR STAT, BCLRPRINT " You're in area:"; Player.RoomCOLOR GENC, BCLRPRINT "<Hp"; PRINT LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxHp)));PRINT " Exp"; PRINT LTRIM$(RTRIM$(STR$(Player.Exp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.Needed)));PRINT " Sp"; PRINT LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxSp)));PRINT ">"END SUBSUB DoNouns'This assigns the code and description to the InRoom and NounDesc$ vars.'CODES:'0 = nothing'1 - 19 = Simple Nouns.  (Probably won't use most...)'20 - 29 = City dwelling enemys'30 - 39 = Forest dwelling enemys'100-199 = weapons'200-299 = Armour'How Inventory nouns work: '999 shows it's a regular noun.' noun adj;noun name;xxx;999;xxx;NONaplicable class;level;pounds;message(optional)NounDesc$(1) = "beer;bottle;READ;999;xxx;X;1;1;Brewed cold, to taste bold!  $1.23"NounDesc$(2) = "wine;bottle;READ;999;xxx;X;1;1;Tujure's best, for you and your love nest.  $1.50"NounDesc$(3) = "flea;collar;xxx;999;xxx;X;1;1;Flea-B-Gone"NounDesc$(20) = "CAT;ALLEY;There is a small alley cat here, purring loudly.;An;205;111;3"NounDesc$(21) = "RAT;STREET;You see a street rat here, gnawing on some food.;A;111;3"NounDesc$(22) = "DOG;STRAY;You see a stray dog that is scratching itself.;A;205;111;3"NounDesc$(23) = "ROACH;BIG;You see a big roach.  Ewww!;A;114"NounDesc$(24) = "DRUNK;CRAZY;A crazy drunk is here, saying something about green beans.;A;1;2;0"NounDesc$(25) = "CHILD;EVIL;There is an evil child here, playing quietly...;An;0"NounDesc$(26) = "LADY;OLD;There is an old lady here, trying to cross the street.;An;0"NounDesc$(27) = "FLY;HUGE;You see a huge fly buzzing around.  Ewww!;A;114"NounDesc$(28) = "MAN;YOUNG;A young man is here, pretending not to be afraid of you.;A;0"NounDesc$(29) = "THIEF;SHIFTY; A shifty thief is here, trying to pick your pocket...;A;0"NounDesc$(30) = "DEER;BROWN;A brown deer is grazing quietly.;A;205;0;0"NounDesc$(31) = "MOUSE;FIELD;A field mouse is searching for food here.;A;0"NounDesc$(32) = "BEAR;LARGE;You see a large bear here, who is growling at you!;A;205;0;0"NounDesc$(33) = "CHILD;LOST;There is a lost child here.;A;0"NounDesc$(34) = "SNAKE;GREEN;There is a green snake here, slithering around.;A;0"NounDesc$(35) = "BIRD;SONG;You see a friendly song bird hopping to and fro.;A;0"NounDesc$(36) = "WIND;STRONG;A strong wind is here, playing with some leaves.;A;0"NounDesc$(37) = "ANT;TINY;There is a tiny ant here, carrying some food on it's back.;A;0"NounDesc$(38) = "GRASS;BLADE OF;You see a blade of grass, flapping in the wind.;A;0"NounDesc$(39) = "WOLF;FIERCE;There is a fierce wolf here, about to attack!;A;0"NounDesc$(40) = "OGRE;HUGE;A huge ogre is grunting at you.;A;0"NounDesc$(41) = "FLAME;BRIGHT;A bright flame glows here.;A;0"NounDesc$(42) = "VINE;FLESH-EATING;You see a flesh-eating vine here!;A;0"NounDesc$(43) = "FORM;INVISIBLE;You sense an invisible form here.;An;0"NounDesc$(44) = "SHADOW;EVIL;There is an evil shadow on the trees here.;An;0"NounDesc$(45) = "SQUIRE;SMALL;A small squire is practicing here.;A;0"NounDesc$(46) = "KNIGHT;WEAK;A week knight glares at you.;A;0"NounDesc$(47) = "GUARD;ROYAL;You see a royal guard here, smelling flowers.;A;0"NounDesc$(48) = "MONK;ANGRY;There is an angry monk here, being angry.;An;0"NounDesc$(49) = "PRINCE;YOUNG;There is a young prince here.;A;0"'More monsters'50-59NounDesc$(50) = "TOAD;HUGE;A huge toad is grunting at you.;A;0"NounDesc$(51) = "GYPSY;MUTANT;A mutant gypsy dances here.;A;0"NounDesc$(52) = "TURTLE;MUTANT;You see a mutant turtle here!;A;0"NounDesc$(53) = "TOE;SEVERED;You see a severed toe here.;A;0"NounDesc$(54) = "TREE;EVIL;There is an evil tree here.;An;0"NounDesc$(55) = "QUEEN;MUTANT;A mutant queen is belching here.;A;0"NounDesc$(56) = "BEETLE;STRONG;A strong beetle glares at you.;A;0"'Big Boss in KelnoreNounDesc$(90) = "BEING;DARK;The dark being glares at you.;The;0"'Does the stats on the monsters'NounStat$(xx)= "Hp;attack;gold;exp;attack strength"NounStat$(20) = "10;scratch;7;100;4"NounStat$(21) = "5;bite;8;50;2"NounStat$(22) = "13;bite;7;110;6"NounStat$(23) = "15;ability to gross you out;9;120;6"NounStat$(24) = "10;stinky breath;10;100;7"NounStat$(25) = "15;evil eye;9;110;5"NounStat$(26) = "14;kick;10;115;8"NounStat$(27) = "10;slap;7;100;5"NounStat$(28) = "20;punch;12;130;9"NounStat$(29) = "21;slap;19;135;8"NounStat$(30) = "27;bite;17;150;11"NounStat$(31) = "21;slap;14;130;9"NounStat$(32) = "35;bite;23;170;16"NounStat$(33) = "18;bad attitude;20;120;9"NounStat$(34) = "20;strike;22;163;13"NounStat$(35) = "26;happy chirpping;20;145;12"NounStat$(36) = "21;gust;13;115;11"NounStat$(37) = "30;sting;15;180;15"NounStat$(38) = "40;slap;29;230;20"NounStat$(39) = "38;slash;29;225;19"NounStat$(40) = "43;punch;25;240;22"NounStat$(41) = "41;burn;33;253;25"NounStat$(42) = "46;bite;33;270;28"NounStat$(43) = "48;sucker-punch;30;290;31"NounStat$(44) = "47;unseen force;32;263;29"NounStat$(45) = "47;slash;25;280;30"NounStat$(46) = "49;slash;37;293;35"NounStat$(47) = "52;whack;39;299;39"NounStat$(48) = "55;stab;40;310;42"NounStat$(49) = "57;kick;45;313;45"NounStat$(50) = "60;lick;48;340;49"NounStat$(51) = "62;shifty feet;50;353;51"NounStat$(52) = "63;bite;52;370;58"NounStat$(53) = "65;sucker-punch;55;390;61"NounStat$(54) = "66;whack;59;393;63"NounStat$(55) = "69;slash;65;410;68"NounStat$(56) = "72;slash;73;423;70"NounStat$(90) = "200;piercing eyes;150;1000;80"'weap adj;weap noun;action;damage;$;NONaplicable class;level;poundsNounDesc$(100) = "Practice;staff;shock;8;50;BMN;1;3"NounDesc$(101) = "Practice;mace;whack;17;50;PSMN;1;6"NounDesc$(102) = "Practice;knife;slash;8;50;X;1;5"NounDesc$(103) = "Practice;sword;slash;8;50;S;1;3"NounDesc$(104) = "Practice;dagger;pierce;8;45;B;1;2"NounDesc$(105) = "Short;sword;slash;9;100;S;1;10"NounDesc$(106) = "Iron;mace;bash;13;200;S;3;10"NounDesc$(107) = "Leather;whip;lash;13;200;X;3;3"NounDesc$(108) = "Devil's;dagger;pierce;50;800;B;15;4"NounDesc$(109) = "Thorned;whip;lash;15;400;B;3;3"NounDesc$(110) = "Hellfire;sword;slash;30;600;X;9;5"NounDesc$(111) = "Silver;claw;slash;10;45;X;1;1"NounDesc$(112) = "Brown;cain;whack;9;25;X;1;1"NounDesc$(113) = "Silver;horn;stab;15;50;X;1;1"NounDesc$(114) = "Sharp;antenna;pierce;15;45;X;1;1"'Armour:NounDesc$(200) = "brown;robe;a brown robe;3;35;X;1;3"NounDesc$(201) = "leather;shield;a shield of leather;2;35;X;1;3"NounDesc$(202) = "leather;shield;a leather shield;2;50;X;1;4"NounDesc$(203) = "iron;shield;a shield of iron;14;50;X;1;4"NounDesc$(204) = "simple;cloak;a cloak of protection;5;50;X;1;3"NounDesc$(205) = "fur;coat;a fur coat;4;35;X;1;3"CALL PlaceNounsEND SUBSUB DoNPCRANDOMIZE TIMER'Select an NPCSelNPC:Temp = INT(RND * NPCn) + 1IF NPC$(Temp) = "" THEN GOTO SelNPCNPCno = TempNPCt = NPCr(NPCno)'Do what with NPC?TempX = Words(NPC$(NPCno), ";")NPCde$ = WORD$(2)NPCna$ = WORD$(1)Temp = INT(RND * 6) + 1LOCATE BOUNDRY, 1COLOR STAT, BCLRTempxx = 0SELECT CASE Temp   CASE 1, 2    'Move   IF NPCf(NPCno) <> 0 THEN GOTO ExititMovNPC:   Tempxx = Tempxx + 1   IF Tempxx > 50 THEN PRINT "No NPC move for:"; NPCna$: EXIT SUB   Temped = INT(RND * 4) + 1   IF Room.N(NPCt) = 0 AND Temped = 1 THEN GOTO MovNPC 'Go north?   IF Room.S(NPCt) = 0 AND Temped = 2 THEN GOTO MovNPC 'Go south?   IF Room.W(NPCt) = 0 AND Temped = 3 THEN GOTO MovNPC 'Go west?   IF Room.E(NPCt) = 0 AND Temped = 4 THEN GOTO MovNPC 'Go east?   IF Temped = 1 THEN      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", goes north."      NPCr(NPCno) = Room.N(NPCt)      NPCt = NPCr(NPCno)      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", enters from the south."   END IF   IF Temped = 2 THEN      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", goes south."      NPCr(NPCno) = Room.S(NPCt)      NPCt = NPCr(NPCno)      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", enters from the north."   END IF   IF Temped = 3 THEN      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", goes west."      NPCr(NPCno) = Room.W(NPCt)      NPCt = NPCr(NPCno)      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", enters from the east."   END IF   IF Temped = 4 THEN      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", goes east."      NPCr(NPCno) = Room.E(NPCt)      NPCt = NPCr(NPCno)      IF Player.Room = NPCt AND IsSleep = 0 THEN PRINT NPCde$; ", "; NPCna$; ", enters from the west."   END IFCASE 3, 4, 5, 6'Attack monster        IF NPCf(NPCno) <> 0 THEN    Temp = Words(NounDesc$(NPCf(NPCno)), ";")    LOCATE BOUNDRY, 1    COLOR SPEC, BCLR    WORD$(1) = LCASE$(WORD$(1))    WORD$(2) = LCASE$(WORD$(2))    WORD$(4) = LCASE$(WORD$(4))       IF Player.Room = NPCt THEN PRINT NPCna$; ", "; LCASE$(NPCde$); ", just killed "; WORD$(4); " "; WORD$(2); " "; WORD$(1); "!"    NPCf(NPCno) = 0    GOTO Exitit    END IF    IF NPCf(NPCno) = 0 THEN       ttt = 0       KKK = 0       FOR t = 1 TO 50       IF InRoom(NPCt, t) <> 0 THEN KKK = InRoom(NPCt, t): ttt = t: EXIT FOR       NEXT t       IF KKK = 0 THEN GOTO MovNPC       IF KKK > 99 THEN GOTO MovNPC       IF KKK < 20 THEN GOTO MovNPC       IF KKK = 90 THEN GOTO MovNPC             IF Player.Room = NPCt AND IsFight <> 0 THEN GOTO Exitit       Temp = Words(NounDesc$(KKK), ";")       WORD$(1) = LCASE$(WORD$(1))       WORD$(2) = LCASE$(WORD$(2))       WORD$(4) = LCASE$(WORD$(4))       LOCATE BOUNDRY, 1       COLOR SPEC, BCLR             IF Player.Room = NPCt THEN PRINT NPCna$; ", "; LCASE$(NPCde$); ", attacks "; WORD$(4); " "; WORD$(2); " "; WORD$(1); "!"       NPCf(NPCno) = KKK       InRoom(NPCt, ttt) = 0       GOTO Exitit       END IFEND SELECTExitit:END SUBSUB DoRandomRANDOMIZE TIMER'Do Hp restoreTTYUU = 10TTYMM = 5TempZ = INT(RND * 2) + 1TempZ = TempZ + Player.HpRateIF IsSleep = 1 THEN TempZ = TempZ + 3: TTYUU = 5: TTYMM = 3IF TFlag3 = 0 THEN WTill! = TIMER + TTYUU: TFlag3 = 1TempYq = DoWait(WTill!)IF TempYq = 1 THENPlayer.Hp = Player.Hp + TempZIF Armcount <> 0 THENArmcount = Armcount - 1  IF Armcount = 0 THEN  COLOR STAT, BCLR  LOCATE BOUNDRY, 1  PRINT "The spell wears off, and your armour returns to normal."  END IFEND IFIF IsSleep = 1 THEN Player.Sp = Player.Sp + 2Player.Sp = Player.Sp + 1 + Player.SpRate IF Player.Sp > Player.MaxSp THEN Player.Sp = Player.MaxSpIF Player.Hp > Player.MaxHp THEN Player.Hp = Player.MaxHpTFlag3 = 0END IFIF TFlag7 = 0 THEN WTill6! = TIMER + 7: TFlag7 = 1TempYq6 = DoWait6(WTill6!)IF TempYq6 = 1 THENCALL DoNPCTFlag7 = 0END IF'Do when monsters enter the roomTempX = INT(RND * 25) + 1TempZ = INT(RND * 4) + 189087Tpl = INT(RND * R) + 1IF Tpl < 21 THEN Tp1 = 29: Tp2 = 20IF Tpl < 72 AND Tpl > 20 THEN Tp1 = 49: Tp2 = 30   'ForestIF Tpl < 88 AND Tpl > 71 THEN Tp1 = 49: Tp2 = 30   'KelnoreTx = Tpl'Tx = INT(RND * 20) + 1Tz = INT(RND * 50) + 1IF InRoom(Tx, Tz) < 19 THEN EXIT SUB'InRoom(1, 1) = 20'GOTO 89087TDir$ = "a hole in the ground"IF TempZ = 1 AND Room.N(Tx) <> 0 THEN TDir$ = "the north"IF TempZ = 2 AND Room.S(Tx) <> 0 THEN TDir$ = "the south"IF TempZ = 3 AND Room.E(Tx) <> 0 THEN TDir$ = "the east"IF TempZ = 4 AND Room.W(Tx) <> 0 THEN TDir$ = "the west"          Crap = Words(NounDesc$(InRoom(Tx, Tz)), ";")Enemy$ = LCASE$(WORD$(2)) + " " + LCASE$(WORD$(1))TU$ = WORD$(4)Enemy2$ = "creature of some sort"89187Tempityo = INT(RND * 3) + 1IF Tempityo = 1 OR Tempityo = 3 THEN Tx2 = TplIF Tempityo = 2 THEN Tx2 = INT(RND * 20) + 1: Tp2 = 2: Tp1 = 29Tz2 = INT(RND * 50) + 1IF InRoom(Tx2, Tz2) <> 0 THEN GOTO 8918744322Enemyno = INT(RND * 50) + 1IF Enemyno < Tp2 OR Enemyno > Tp1 THEN GOTO 44322 'an in town animalCrap = Words(NounDesc$(Enemyno), ";")Enemy2$ = LCASE$(WORD$(2)) + " " + LCASE$(WORD$(1))'Tx = Player.Room'Tx2 = TxEnemy2$ = LTRIM$(RTRIM$(Enemy2$))IF Enemy2$ = "" THEN GOTO 44322TU2$ = WORD$(4)IF IsSleep = 1 THEN TTYMM = 4IF TFlag4 = 0 THEN WTill2! = TIMER + TTYMM: TFlag4 = 1TempY = DoWait2(WTill2!)    IF TempY = 1 THEN          SELECT CASE TempX    CASE 4, 8, 12         IF Player.Room = Tx THEN         COLOR SPEC, BCLR         LOCATE BOUNDRY, 1         PRINT TU$; " "; Enemy$; " just commited suiside!"         InRoom(Tx, Tz) = 0         END IF         InRoom(Tx, Tz) = 0    CASE 1, 3, 5, 6, 7, 9, 10, 11, 13, 15, 20, 21, 22, 25                 'Debug:         'LOCATE BOUNDRY, 1         'COLOR 2, 0         'PRINT "A "; Enemy2$; " entered room"; STR$(Tx2)         'Fini                  IF Player.Room = Tx2 AND Enemy2$ <> " " THEN         COLOR SPEC, BCLR         LOCATE BOUNDRY, 1         PRINT TU2$; " "; Enemy2$; " enters from "; TDir$; "."         InRoom(Tx2, Tz2) = Enemyno         END IF         InRoom(Tx2, Tz2) = Enemyno       END SELECT    TFlag4 = 0       END IFLOCATE CAMBAR, CCol%COLOR CBTX, CBBAEND SUBSUB DoRoomEndy$ = "."LOCATE BOUNDRY, 1PRINTCOLOR SPEC, BCLRPRINT "You can go:  ";COLOR STAT, BCLR'IF LEN(Room.Des$(Player.Room)) > 80 THEN'        WordWrap Room.Des$(Player.Room), 1, I, BOUNDRYIF Room.W(Player.Room) <> 0 THEN   PRINT "  W -";ELSE PRINT "    -";END IFIF Room.N(Player.Room) <> 0 THEN   PRINT " N/";ELSE PRINT "  /";END IFIF Room.S(Player.Room) <> 0 THEN   PRINT "S -";ELSE PRINT "  -";END IFIF Room.E(Player.Room) <> 0 THEN   PRINT " E";ELSE PRINT "  ";END IFCOLOR SPEC, BCLRPRINT "      Area#:"; LTRIM$(RTRIM$(STR$(Player.Room)))COLOR GENC, BCLRPRINT Room.Des$(Player.Room)'END IFLOCATE BOUNDRY, 1COLOR STAT, BCLRTempX = Words(Player.pet$, ";")IF TempX > 1 THEN   PRINT "<Hp"; LTRIM$(STR$(Pet.MHp)); "  Str"; LTRIM$(WORD$(5)); ">";   PRINT " " + WORD$(3)END IFLOCATE BOUNDRY, 1COLOR SPEC, BCLRFOR t = 1 TO 50IF NPCr(t) = Player.Room THEN    IF NPCf(t) <> 0 THEN    Temp = Words(NounDesc$(NPCf(t)), ";")    LOCATE BOUNDRY, 1    COLOR SPEC, BCLR    WORD$(1) = LCASE$(WORD$(1))    WORD$(2) = LCASE$(WORD$(2))    WORD$(4) = LCASE$(WORD$(4))    Endy$ = ", fighting " + WORD$(4) + " " + WORD$(2) + " " + WORD$(1) + "!"    END IFTempX = Words(NPC$(t), ";")COLOR SPEC, BCLRIF TempX > 1 THEN PRINT ">>"; : COLOR YCOM, BCLR: PRINT WORD$(1); ", "; LCASE$(WORD$(2)); ", is here"; Endy$Endy$ = "."END IFNEXT tLOCATE BOUNDRY, 1COLOR SPEC, BCLRFOR t = 1 TO 50IF InRoom(Player.Room, t) <> 0 THEN     Temp = Words(NounDesc$(InRoom(Player.Room, t)), ";")         IF VAL(WORD$(4)) <> 0 THEN        PRINT "A "; WORD$(1); " "; WORD$(2); " has been left here."     ELSE PRINT "    "; WORD$(3)     END IFEND IFNEXT tPRINTCOLOR GENC, BCLRPRINT "<Hp"; PRINT LTRIM$(RTRIM$(STR$(Player.Hp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxHp)));PRINT " Exp"; PRINT LTRIM$(RTRIM$(STR$(Player.Exp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.Needed)));PRINT " Sp"; PRINT LTRIM$(RTRIM$(STR$(Player.Sp)));PRINT "/"; PRINT LTRIM$(RTRIM$(STR$(Player.MaxSp)));PRINT ">"END SUBSUB DoSpell      COLOR STAT, BCLR      PRINT "You have studied the scrolls of the following:"      COLOR SPEC, BCLR      FOR t = 1 TO Player.Scroll      nottyboy = Words(Magic$(t), ";")      PRINT "  The " + WORD$(3) + ".  It costs "; WORD$(4); " Sp.  " + WORD$(7)      NEXT tEND SUBFUNCTION DoWait (WTill!)TempW! = TIMERIF TempW! > WTill! THEN DoWait = 1END FUNCTIONFUNCTION DoWait2 (WTill2!)TempW! = TIMERIF TempW! > WTill2! THEN DoWait2 = 1END FUNCTIONFUNCTION DoWait3 (WTill3!)TempW! = TIMERIF TempW! > WTill3! THEN DoWait3 = 1END FUNCTIONFUNCTION DoWait4 (WTill4!)TempW! = TIMERIF TempW! > WTill4! THEN DoWait4 = 1END FUNCTIONFUNCTION DoWait6 (WTill6!)TempW! = TIMERIF TempW! > WTill6! THEN DoWait6 = 1END FUNCTIONFUNCTION DoWait7 (WTill7!)TempW! = TIMERIF TempW! > WTill7! THEN DoWait7 = 1END FUNCTIONSUB FiniCLSTDely = DelyDely = 2LOCATE BOUNDRY, 1COLOR SPEC, BCLRPRINTPRINT "The Dark Being, in a last attempt effort, tryes to lunge toward you."CALL WaitaPRINTCALL WaitaCOLOR 14, BCLRPRINT "You jump to the left, and attack it from behind."CALL WaitaPRINTCALL WaitaCOLOR SPEC, BCLRPRINT "It's back snaps, and fragments of bone scatter through Kelnore."CALL WaitaPRINTCALL WaitaCOLOR SPEC, BCLRPRINT "As it dies, the mutants morph into humans, the monsters vanish, and the"PRINT "darkness is lifted from Kelnore, the forest, and Tujure."CALL WaitaPRINTCALL WaitaCOLOR STAT, BCLRPRINT "You have won the battle!  You are the champion!  You are the victor of..."CALL WaitaCOLOR SPEC, BCLRPRINT "Tujure: The Legend of Kelnore!"PRINTPRINT "Press any key to end the game."SLEEPx$ = INKEY$KILL "data.dat"PRINTPRINTPRINT "Thankyou for playing this game!  "PRINT "rjp1@bayou.com"PRINT "http://www.bayou.com/~rjp1/qbasic.html"PRINT "-- Watch for a Tujure 2!"ENDDely = TDelyEND SUBSUB HexINV (k$)IF k$ = "1" THEN GOTO Encode1IF k$ = "2" THEN GOTO Decode1'PRINT "Quit"'ENDEncode1:COLOR 7, 0PRINTInp$ = "inv.dat"IF Inp$ = "" THEN END'INPUT " Output file: ", Out$'IF Out$ = "" THEN ENDOPEN Inp$ FOR BINARY AS #1OPEN "tt.z" FOR OUTPUT AS #2FOR I = LEN(Inp$) TO 1 STEP -1        'Remove path  IF MID$(Inp$, I, 1) = "" THEN    Inp$ = MID$(Inp$, I + 1, 255)  END IFNEXTInp$ = UCASE$(Inp$)Inp$ = LEFT$(Inp$, 12)Inp$ = Inp$ + STRING$(12 - LEN(Inp$), "<")'PRINT " Encoding..."'PRINT " - Writing header..."Hdr.Verify = "Code"                  'Write headerHdr.Filename = Inp$PRINT #2, Hdr.Verify;PRINT #2, Hdr.Filename'PRINT " - Encoding"; LOF(1); "bytes..."Col = 0                              'EncodeAvg& = 0lines& = 0FOR I& = 1 TO LOF(1)  GET #1, , Byte  Avg& = Avg& + ASC(Byte)  Hx$ = HEX$(ASC(Byte))  IF LEN(Hx$) = 1 THEN Hx$ = "0" + Hx$  PRINT #2, Hx$;  Col = Col + 2  IF Col = ColLimit THEN    Col = 0    Chk$ = HEX$(Avg& MOD 255)    IF LEN(Chk$) = 1 THEN Chk$ = "0" + Chk$    PRINT #2, "::"; Chk$    lines& = lines& + 1    Avg& = 0  END IFNEXTPRINT #2, "XX"'PRINT " - Output file size: "; LOF(2); "bytes -";'PRINT lines&; "lines"CLOSE #1CLOSE #2Inp$ = LEFT$(Inp$, LEN(Inp$) - 3)'KILL Inp$KILL "inv.dat"NAME "tt.z" AS "inv.dat"'NAME "t.z" AS Inp$'PRINT "Hi willy!"EXIT SUBDecode1:COLOR 7, 0PRINTF = FREEFILEOPEN "tt.z" FOR OUTPUT AS FCLOSE FInp$ = "inv.dat"'PRINT " Decoding..."'PRINT " - Seeking..."OPEN Inp$ FOR BINARY AS #1IF LOF(1) = 0 THEN                   'Check if file'  PRINT " File not found!"           'exists  CLOSE  KILL Inp$  EXIT SUBEND IFStart& = -1FOR I& = 1 TO LOF(1)                 'Seek start of  GET #1, I&, SeekS                  'file data  IF SeekS = "Code" THEN    Start& = I&    EXIT FOR  END IFNEXTIF Start& = -1 THEN'  PRINT " - File data not found!"  ENDEND IF                                     'Read header'PRINT " - Reading header..."SEEK #1, Start&GET #1, , HdrIF Hdr.Verify <> "Code" THEN'  PRINT " First 4 bytes must be Code"  CLOSE  ENDEND IFOut$ = LEFT$(Hdr.Filename, INSTR(Hdr.Filename, "<") - 1)Out$ = "inv.dat"F = FREEFILEOPEN "tt.z" FOR OUTPUT AS FCLOSE FOPEN "tt.z" FOR BINARY AS #2'PRINT " - Writing output file "; Out$; "..."IF LOF(2) > 0 THEN'  PRINT " Output file exists!"  CLOSE  ENDEND IFCol = 0                              'DecodeAvg& = 0FOR I& = 1 TO LOF(1)  DO    GET #1, , Hex    IF Hex = "XX" THEN EXIT FOR    IF Hex = "::" THEN      GET #1, , Hex      IF VAL("&H" + Hex) <> Avg& MOD 255 THEN'        COLOR 12'        PRINT " Checksum error at"; SEEK(1)'        PRINT VAL("&H" + Hex); "<>"; Avg& MOD 255'        COLOR 7        CLOSE        END      END IF      Avg& = 0      Hex = CHR$(13) + CHR$(0)    END IF  LOOP UNTIL INSTR(Hex, CHR$(13)) = 0  Byte = CHR$(VAL("&H" + Hex))  Avg& = Avg& + ASC(Byte)  PUT #2, , ByteNEXT'PRINT " - Input file size: ", LOF(1)'PRINT " - Output file size: ", LOF(2)CLOSE #1CLOSE #2KILL "inv.dat"NAME "tt.z" AS "inv.dat"EXIT SUBEND SUBSUB Hexit (k$)'CLS'COLOR 15, 4'PRINT "                    ";'PRINT "Hex Encoder/Decoder for QBasic - Sami Ky";'PRINT CHR$(148); "stil";'PRINT CHR$(132);'PRINT "              "'VIEW PRINT 2 TO 25'PRINT'COLOR 10, 0'PRINT "          1 - Encode"'PRINT "          2 - Decode"'COLOR 2'PRINT'PRINT " Choose one: ";'k$ = INPUT$(1)'COLOR 9'k$ = LTRIM$(RTRIM$(COMMAND$))IF k$ = "1" THEN GOTO EncodeIF k$ = "2" THEN GOTO Decode'PRINT "Quit"'ENDEncode:COLOR 7, 0PRINTInp$ = "data.dat"IF Inp$ = "" THEN END'INPUT " Output file: ", Out$'IF Out$ = "" THEN ENDOPEN Inp$ FOR BINARY AS #1OPEN "t.z" FOR OUTPUT AS #2FOR I = LEN(Inp$) TO 1 STEP -1        'Remove path  IF MID$(Inp$, I, 1) = "" THEN    Inp$ = MID$(Inp$, I + 1, 255)  END IFNEXTInp$ = UCASE$(Inp$)Inp$ = LEFT$(Inp$, 12)Inp$ = Inp$ + STRING$(12 - LEN(Inp$), "<")'PRINT " Encoding..."'PRINT " - Writing header..."Hdr.Verify = "Code"                  'Write headerHdr.Filename = Inp$PRINT #2, Hdr.Verify;PRINT #2, Hdr.Filename'PRINT " - Encoding"; LOF(1); "bytes..."Col = 0                              'EncodeAvg& = 0lines& = 0FOR I& = 1 TO LOF(1)  GET #1, , Byte  Avg& = Avg& + ASC(Byte)  Hx$ = HEX$(ASC(Byte))  IF LEN(Hx$) = 1 THEN Hx$ = "0" + Hx$  PRINT #2, Hx$;  Col = Col + 2  IF Col = ColLimit THEN    Col = 0    Chk$ = HEX$(Avg& MOD 255)    IF LEN(Chk$) = 1 THEN Chk$ = "0" + Chk$    PRINT #2, "::"; Chk$    lines& = lines& + 1    Avg& = 0  END IFNEXTPRINT #2, "XX"'PRINT " - Output file size: "; LOF(2); "bytes -";'PRINT lines&; "lines"CLOSE #1CLOSE #2Inp$ = LEFT$(Inp$, LEN(Inp$) - 3)'KILL Inp$KILL "data.dat"NAME "t.z" AS "data.dat"'NAME "t.z" AS Inp$'PRINT "Hi willy!"EXIT SUBDecode:COLOR 7, 0PRINTF = FREEFILEOPEN "t.z" FOR OUTPUT AS FCLOSE FInp$ = "data.dat"'PRINT " Decoding..."'PRINT " - Seeking..."OPEN Inp$ FOR BINARY AS #1IF LOF(1) = 0 THEN                   'Check if file'  PRINT " File not found!"           'exists  CLOSE  KILL Inp$  EXIT SUBEND IFStart& = -1FOR I& = 1 TO LOF(1)                 'Seek start of  GET #1, I&, SeekS                  'file data  IF SeekS = "Code" THEN    Start& = I&    EXIT FOR  END IFNEXTIF Start& = -1 THEN'  PRINT " - File data not found!"  ENDEND IF                                     'Read header'PRINT " - Reading header..."SEEK #1, Start&GET #1, , HdrIF Hdr.Verify <> "Code" THEN'  PRINT " First 4 bytes must be Code"  CLOSE  ENDEND IFOut$ = LEFT$(Hdr.Filename, INSTR(Hdr.Filename, "<") - 1)F = FREEFILEOPEN "t.z" FOR OUTPUT AS FCLOSE FOPEN "t.z" FOR BINARY AS #2'PRINT " - Writing output file "; Out$; "..."IF LOF(2) > 0 THEN'  PRINT " Output file exists!"  CLOSE  ENDEND IFCol = 0                              'DecodeAvg& = 0FOR I& = 1 TO LOF(1)  DO    GET #1, , Hex    IF Hex = "XX" THEN EXIT FOR    IF Hex = "::" THEN      GET #1, , Hex      IF VAL("&H" + Hex) <> Avg& MOD 255 THEN'        COLOR 12'        PRINT " Checksum error at"; SEEK(1)'        PRINT VAL("&H" + Hex); "<>"; Avg& MOD 255'        COLOR 7        CLOSE        END      END IF      Avg& = 0      Hex = CHR$(13) + CHR$(0)    END IF  LOOP UNTIL INSTR(Hex, CHR$(13)) = 0  Byte = CHR$(VAL("&H" + Hex))  Avg& = Avg& + ASC(Byte)  PUT #2, , ByteNEXT'PRINT " - Input file size: ", LOF(1)'PRINT " - Output file size: ", LOF(2)CLOSE #1CLOSE #2KILL Out$NAME "t.z" AS Out$EXIT SUBEND SUBFUNCTION InputLine$ (Text$, ViewWidth%, KeyCode%)COLOR CBTX, CBBAIF Waitam = 1 THEN Waitamt! = TIMER + DelyMaxLnLen% = 128LCol% = POS(0)RCol% = LCol% + ViewWidth% - 1View$ = SPACE$(ViewWidth%)work$ = LEFT$(Text$, MaxLnLen%)LnLen% = LEN(work$)CCol% = Lesser(LCol% + LnLen%, RCol%)AChar% = LnLen% + 1'LOCATE , , 0, CursSize% - 1, CursSize%Insert% = trueDO   GENC = 9  IF Player.Hp < 50 THEN GENC = 7  IF Player.Hp < 40 THEN GENC = 14  IF Player.Hp < 30 THEN GENC = 12  IF Player.Hp < 20 THEN GENC = 4   TempX = PerOf(Player.Hp, Player.MaxHp)  IF TempX > 90 THEN GENC = 9       LOCATE , LCol%  LSET View$ = MID$(work$, AChar% - (CCol% - LCol%), ViewWidth%)  PRINT View$;  LOCATE , CCol%, 1  LnLen% = LEN(work$)  DO          DO: Ky$ = INKEY$      IF Waitam = 1 THEN      IF TIMER > Waitamt! THEN KeyCode% = 999: EXIT FUNCTION   END IF   IF Waitam = 1 THEN GOTO Loopy     IF IsFight >= 1 AND AKILL = 0 AND TFlag5 = 0 THEN       CALL DoKill   END IF   IF TFlag5 = 0 THEN WTill3! = TIMER + Dely: TFlag5 = 1   TempY2 = DoWait3(WTill3!)    IF TempY2 = 1 THEN   TFlag5 = 0   END IF         IF TFlag6 = 0 THEN WTill4! = TIMER + Dely: TFlag6 = 1   TempY2 = DoWait4(WTill4!)   IF TempY2 = 1 THEN   TFlag6 = 0   IF IsFight > 1 THEN   IsFight = INT(IsFight + 1)   IF IsFight > 8 THEN IsFight = 1   END IF   END IF   IF TFlag8 = 0 THEN WTill7! = TIMER + Dely: TFlag8 = 1   TempY2 = DoWait7(WTill7!)   IF TempY2 = 1 THEN   TFlag8 = 0   IF IsFight > 1 THEN   IsFight = INT(IsFight + 1)   IF IsFight > 8 THEN IsFight = 1   END IF   END IF   IF IsFight > 1 AND AKILL = 0 AND TFlag6 = 0 THEN       CALL DoKill   END IF   IF IsFight = 0 THEN CALL DoRandom    Loopy:LOCATE CAMBAR, CCol%COLOR CBTX, CBBALOOP UNTIL LEN(Ky$)       KeyCode% = ASC(Ky$): IF KeyCode% = 0 THEN KeyCode% = -ASC(MID$(Ky$, 2))  LOOP UNTIL KeyCode% <> BadKey%: BadKey% = 0  LOCATE , , 0  SELECT CASE KeyCode%    CASE BkSpc         IF AChar% = 1 THEN           BEEP: BadKey% = KeyCode%         ELSE           IF AChar% <= LnLen% + 1 THEN                work$ = LEFT$(work$, AChar% - 2) + MID$(work$, AChar%)           END IF           AChar% = AChar% - 1           IF CCol% <> LCol% THEN CCol% = CCol% - 1         END IF         CASE ENTER         Text$ = work$         EXIT DO    CASE ESC         EXIT DO    CASE 32 TO 255      ' letter keys         IF AChar% > MaxLnLen% THEN           BEEP: BadKey% = KeyCode%         ELSE           IF AChar% <= LnLen% THEN                IF Insert% THEN                  IF LnLen% = MaxLnLen% THEN                    BEEP: BadKey% = KeyCode%                  ELSE                    work$ = LEFT$(work$, AChar% - 1) + Ky$ + MID$(work$, AChar%)                    AChar% = AChar% + 1                    IF CCol% <> RCol% THEN CCol% = CCol% + 1                  END IF                ELSE 'IF NOT Insert% THEN (in overstrike mode)                  MID$(work$, AChar%, 1) = Ky$                  AChar% = AChar% + 1                  IF CCol% <> RCol% THEN CCol% = CCol% + 1                END IF           ELSE 'IF AChar% > LnLen% THEN                work$ = work$ + SPACE$(AChar% - LnLen% - 1) + Ky$                AChar% = AChar% + 1                IF CCol% <> RCol% THEN CCol% = CCol% + 1           END IF         END IF         CASE LArrow         IF AChar% = 1 THEN           BEEP: BadKey% = KeyCode%         ELSE 'IF AChar% > 1 THEN           AChar% = AChar% - 1           IF CCol% <> LCol% THEN CCol% = CCol% - 1         END IF    CASE RArrow         IF AChar% > MaxLnLen% THEN           BEEP: BadKey% = KeyCode%         ELSE           AChar% = AChar% + 1           IF CCol% <> RCol% THEN CCol% = CCol% + 1         END IF    CASE HomeKey         AChar% = 1         CCol% = LCol%    CASE UpArrow         work$ = LCMD$    CASE DnArrow         work$ = ""    CASE EndKey         AChar% = LnLen% + 1         CCol% = Lesser(LCol% + LnLen%, RCol%)         CASE InsertKey         Insert% = NOT Insert%         IF Insert% THEN         LOCATE , , , CursSize% - 1, CursSize%         ELSE         LOCATE , , , CursSize% / 2, CursSize%         END IF         CASE DeleteKey         IF AChar% <= LnLen% THEN           work$ = LEFT$(work$, AChar% - 1) + MID$(work$, AChar% + 1)         END IF         CASE ELSE         BEEP: BadKey% = KeyCode%  END SELECT LOOP LOCATE , , , CursSize% - 1, CursSize%InputLine$ = Text$END FUNCTION FUNCTION Lesser% (Var1%, Var2%) STATIC ' This simply finds the lesser or 2 variables. Lesser% = Var1%: IF Var2% < Var1% THEN Lesser% = Var2%END FUNCTIONFUNCTION PerOf (N1, N2)'5 = x*10      x=.5;  x * 100 is 50'devide both sides by 10....TempX = N1 / N2TempX = TempX * 100PerOf = TempXEND FUNCTIONSUB PlaceNounsRANDOMIZE TIMERInRoom(87, 1) = 90InRoom(1, 1) = 1FOR t = 1 TO 25887766                      'find a room in TOWNTempX = INT(RND * R) + 1IF TempX > 20 THEN GOTO 887766  FOR Temp = 1 TO 100  IF InRoom(TempX, Temp) = 0 THEN TEMPR = Temp: EXIT FOR  NEXT Temp32123        'Find an in TOWN monster  TempY = INT(RND * 50) + 1IF TempY > 29 OR TempY < 19 THEN GOTO 32123IF NounDesc$(TempY) = "" THEN GOTO 32123InRoom(TempX, TEMPR) = TempYNEXT tFOR t = 1 TO 50667788                        ' Find a room out of TOWN  TempX = INT(RND * R) + 1IF TempX < 21 THEN GOTO 667788  FOR Temp = 1 TO 100  IF InRoom(TempX, Temp) = 0 THEN TEMPR = Temp: EXIT FOR  NEXT Temp321230                              'Find an out of town monster  TempY = INT(RND * 50) + 1IF TempY < 30 THEN GOTO 321230IF NounDesc$(TempY) = "" THEN GOTO 321230InRoom(TempX, TEMPR) = TempYNEXT tFOR t = 1 TO 106677881                        ' Find a room in Kelnore  TempX = INT(RND * R) + 1IF TempX < 72 THEN GOTO 6677881  FOR Temp = 1 TO 100  IF InRoom(TempX, Temp) = 0 THEN TEMPR = Temp: EXIT FOR  NEXT Temp3212301                       'Find a Kelnore  monster  TempY = INT(RND * 56) + 1IF TempY < 50 THEN GOTO 3212301IF NounDesc$(TempY) = "" THEN GOTO 3212301IF TempY >= 90 THEN GOTO 3212301InRoom(TempX, TEMPR) = TempYNEXT tEND SUBSUB WaitaWaitam = 1KeyCode% = 0DOLOCATE CAMBAR, 1COLOR CBTX, CBBACAM$ = LTRIM$(RTRIM$(InputLine$(work$, 78, KeyCode%)))IF KeyCode% = ENTER THENCCol% = 1LCMD$ = CAM$work$ = ""    CALL DoCommandEND IFLOOP UNTIL KeyCode% = 999Waitam = 0LOCATE BOUNDRY, 1COLOR STAT, BCLREND SUBFUNCTION Words (Text$, WS$)Wrds = 1Text$ = LTRIM$(RTRIM$(Text$))FOR t = 1 TO LEN(Text$)IF MID$(Text$, t, 1) = WS$ THEN Wrds = Wrds + 1NEXT tFOR t = 1 TO 100WORD$(t) = ""NEXT tTempFlag2 = 1FOR t = 1 TO LEN(Text$)IF MID$(Text$, t, 1) = WS$ THEN TempFlag2 = TempFlag2 + 1: GOTO 11223344WORD$(TempFlag2) = WORD$(TempFlag2) + MID$(Text$, t, 1)11223344NEXT tFOR t = 1 TO WrdsWORD$(t) = LTRIM$(RTRIM$(WORD$(t)))NEXT tWords = WrdsEND FUNCTIONSUB WordWrap (Text$, x1, x2, y1)    savetext$ = Text$    s = x2 - x1    y = y1    'LOCATE y, x1    IF LEN(Text$) > s THEN       DO         IF LEN(Text$) = 0 THEN EXIT DO         Text$ = LTRIM$(Text$)         IF LEN(Text$) >= s THEN            tmp$ = LEFT$(Text$, s)         ELSE            tmp$ = Text$         END IF         stmp$ = tmp$         GOSUB ReverseTmp         IF MID$(Text$, s + 1, 1) = " " THEN            PRINT stmp$            Text$ = MID$(Text$, s + 1)         ELSE         a = INSTR(tmp$, " ")         IF a = 0 THEN            PRINT stmp$            Text$ = MID$(Text$, s + 1)         ELSE            PRINT LEFT$(Text$, s - a)            Text$ = MID$(Text$, s - a + 1)         END IF         END IF         y = y + 1         LOCATE 1, BOUNDRY       LOOP    ELSE       PRINT s    END IF    Text$ = savetext$    EXIT SUBReverseTmp:    t$ = ""    FOR I = LEN(tmp$) TO 1 STEP -1        t$ = t$ + MID$(tmp$, I, 1)    NEXT I    tmp$ = t$    RETURNEND SUBRoss Harper                    SPACE SHIP THINGY (STAR TREK)  t.r.harper@btinternet.com      04-18-99 (21:56)       QB, QBasic, PDS        406  13055    WARPSIM.BAS '' Hya!!'' This was a little program I put together after watching Star Trek: First'' Contact.  In Zefram Cochrane's ship, there was a little computer simulation'' running showing his ship and all sorts of warp fields around it.  This'' program was just a bit of fun at having a go. '''' I might integrate it into a game someday...'''' Press 'H' whilst running to see the instructions'''' A challenge:  When you exceed Spatial Distortion Factor 7, the stars seem'' to arrange themselves into horizontal lines whilst passing.  If anyone out'' there in BASIC-land can sort this out, I'd love to hear from you!!'''' Lot's of love,'' Wish you were here,'' Ross!'''' Peachy512@yahoo.com'' ICQ: 15844814'' The Zax Bypass: http://members.xoom.com/Peachy512/Asylum/home.htm''DECLARE SUB box (q1!, a1!, q2!, a2!, col!)DECLARE SUB xwing (col!)DECLARE SUB definestars ()DECLARE SUB drawstars (col!)DECLARE SUB movestars ()DECLARE SUB help ()DECLARE SUB reinit ()DECLARE SUB probe (col!)DECLARE SUB vessel (col!)DECLARE SUB cross (x!, y!, l!, col!)DECLARE SUB ship (col!)DECLARE SUB mainloop ()DECLARE SUB pause (time!)DECLARE SUB checkroutine ()DECLARE SUB lfield (col!)COMMON SHARED scx, scy, pfield, pfr, sp, fr, simr, defaultr, ves, warpcx1, warpcx2, warpcy, starx(), stary(), strs, wx1, wx2, wy, colSCREEN 9scx = 320: scy = 125: defaultr = 100: sp = 0: ves = 3: strs = 50'warpcx1 = scx - 37: warpcx2 = scx + 37warpcx1 = 320: warpcx2 = 320warpcy = scy + 40DIM starx(strs), stary(strs)vessel (15)definestarsdrawstars (15)mainloopSUB allshipsIF pfield = 1 AND col <> 0 THEN        COLOR 2: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        COLOR 10: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (4)END IFIF pfield = 1 AND col = 0 THEN        COLOR 0: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (0)END IFEND SUBSUB box (q1, a1, q2, a2, col)COLOR colLINE (q1, a1)-(q2, a1)LINE (q2, a1)-(q2, a2)LINE (q2, a2)-(q1, a2)LINE (q1, a2)-(q1, a1)END SUBSUB checkroutineIF sp < 0 THEN sp = 0IF sp > 9 THEN sp = 9IF simr >= pfr THEN simr = 0END SUBSUB cross (x, y, l, col)COLOR colLINE (x - l, y - l)-(x + l, y + l)LINE (x + l, y - l)-(x - l, y + l)END SUBSUB definestarsFOR n = 1 TO strs        starx(n) = INT(RND * 640) + 1        stary(n) = INT(RND * 350) + 1NEXT nEND SUBSUB drawstars (col)FOR n = 1 TO strs        ''IF col <> 0 THEN col = INT(RND * 7) + 8        COLOR col               PSET (starx(n), stary(n))NEXT nEND SUBSUB helpSCREEN 11CLSPRINT "Keys:"PRINTPRINT "Q        Move vessel up"PRINT "A        Move vessel down"PRINT "O        Move vessel left"PRINT "P        Move vessel right"PRINT "(This has no effect other than user preferences!)"PRINTPRINT "W        Generates / Disengages Physical Warp Field"PRINT "(Logical warp field is generated also.)"PRINTPRINT "UP       Increase Logical Spatial Disturbance "PRINT "DOWN     Decrease Logical Spatial Disturbance "PRINTPRINT "<        Move Logical Warp Field Generation Centre Outwards"PRINT ">        Move Logical Warp Field Generation Centre Inwards"PRINT "@        Move Logical Warp Field Generation Centre Up"PRINT "/        Move Logical Warp Field Generation Centre Down"PRINTPRINT "C        Re-initialises screen"PRINT "H        This help screen"PRINTPRINT "F1       Change vessel shape (type in number)"PRINTLOCATE 29, 1: PRINT "Press a key to continue": SLEEP: reinitEND SUBSUB lfield (col)COLOR 0CIRCLE (scx, warpcy), defaultr + 101CIRCLE (scx, warpcy), defaultr - 9'CIRCLE (scx, warpcy), pfr + 1COLOR colfr = (sp * 10) + pfr + 1LOCATE 2, 1: PRINT frCIRCLE (scx, warpcy), frEND SUBSUB mainloopDOCOLOR 15LOCATE 1, 1: PRINT "Spatial Distortian Factor "; spLOCATE 21, 1: PRINT "Physical: ": COLOR 2: LINE (170, 285)-(200, 285): COLOR 15LOCATE 22, 1: PRINT "Logical:": COLOR 4: LINE (170, 300)-(200, 300): COLOR 15LOCATE 23, 1: PRINT "Generation Centre:": CALL cross(185, 315, 5, 10): COLOR 15a$ = LCASE$(INKEY$)IF a$ = "h" THEN help: a$ = ""IF a$ = "q" THEN vessel (0): scy = scy - 5: vessel (15)IF a$ = "a" THEN vessel (0): scy = scy + 5: vessel (15)IF a$ = "o" THEN vessel (0): scx = scx - 5: vessel (15)IF a$ = "p" THEN vessel (0): scx = scx + 5: vessel (15)IF a$ = "c" THEN reinitIF a$ = CHR$(0) + ";" THEN        LOCATE 1, 1: PRINT STRING$(80, " ")        LOCATE 1, 1: INPUT "Vessel Number"; ves        reinitEND IFIF a$ = "," THEN        COLOR 0: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr                 CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CALL cross(warpcx1, warpcy, 5, 0)                 CALL cross(warpcx2, warpcy, 5, 0)                 warpcx1 = warpcx1 - 1: warpcx2 = warpcx2 + 1                 CALL cross(warpcx1, warpcy, 5, 2)                 CALL cross(warpcx2, warpcy, 5, 2)END IFIF a$ = "." THEN        COLOR 0: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr                 CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CALL cross(warpcx1, warpcy, 5, 0)                 CALL cross(warpcx2, warpcy, 5, 0)                 warpcx1 = warpcx1 + 1: warpcx2 = warpcx2 - 1        CALL cross(warpcx1, warpcy, 5, 2)        CALL cross(warpcx2, warpcy, 5, 2)END IFIF a$ = "'" THEN        COLOR 0: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr                 CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CALL cross(warpcx1, warpcy, 5, 0)                 CALL cross(warpcx2, warpcy, 5, 0)                 CIRCLE (scx, warpcy), fr                 warpcy = warpcy - 1                 CALL cross(warpcx1, warpcy, 5, 2)                 CALL cross(warpcx2, warpcy, 5, 2)END IFIF a$ = "/" THEN        COLOR 0: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr                 CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr                 CALL cross(warpcx1, warpcy, 5, 0)                 CALL cross(warpcx2, warpcy, 5, 0)                 CIRCLE (scx, warpcy), fr                 warpcy = warpcy + 1                 CALL cross(warpcx1, warpcy, 5, 2)                 CALL cross(warpcx2, warpcy, 5, 2)END IFIF a$ = "w" AND pfield = 0 THEN        LOCATE 1, 1: PRINT "Physical Warp Field Generating"        pause (1)        LOCATE 1, 1: PRINT STRING$(80, " ")        pfr = defaultr        COLOR 2        CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        lfield (4)        COLOR 15: pfield = 1: a$ = "": simr = 0END IFIF a$ = "w" AND pfield = 1 THEN        LOCATE 1, 1: PRINT "Physical Warp Field Disengaging"        pause (1)        LOCATE 1, 1: PRINT STRING$(80, " ")        COLOR 0        CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (0)        COLOR 15: pfield = 0: vessel (15): a$ = "": pfr = defaultrEND IFIF pfield = 1 THEN        COLOR 0: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        simr = simr + 5        COLOR 2: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        vessel (15)        movestars        IF a$ = CHR$(0) + "h" THEN                lfield (0)                sp = sp + 1                lfield (4)        END IF        IF a$ = CHR$(0) + "p" THEN                lfield (0)                sp = sp - 1                lfield (4)        END IFEND IFcheckroutineLOOPEND SUBSUB movestarsplus = sp ^ 2drawstars (0)FOR n = 1 TO strs        stary(n) = stary(n) + plus        IF stary(n) > 350 THEN stary(n) = -5: starx(n) = INT(RND * 640) + 1NEXT ndrawstars (15)END SUBSUB pause (time)starttime = INT(TIMER) + timeDOLOOP UNTIL INT(TIMER) > starttimeEND SUBSUB probe (col)IF col <> 0 THEN        CALL cross(warpcx1, warpcy, 5, 10)        CALL cross(warpcx2, warpcy, 5, 10)END IFIF col = 0 THEN        CALL cross(warpcx1, warpcy, 5, 0)        CALL cross(warpcx2, warpcy, 5, 0)END IFCOLOR col''probe hullCIRCLE (scx, scy + 40), 35CIRCLE (scx, scy + 40), 10'' left nacelle'LINE (scx - 35, scy + 55)-(scx - 35, scy + 25)'LINE (scx - 40, scy + 55)-(scx - 40, scy + 25)'LINE (scx - 36, scy + 56)-(scx - 39, scy + 56)'LINE (scx - 36, scy + 24)-(scx - 39, scy + 24)'' right nacelle'LINE (scx + 35, scy + 55)-(scx + 35, scy + 25)'LINE (scx + 40, scy + 55)-(scx + 40, scy + 25)'LINE (scx + 36, scy + 56)-(scx + 39, scy + 56)'LINE (scx + 36, scy + 24)-(scx + 39, scy + 24)IF pfield = 1 AND col <> 0 THEN        COLOR 2: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        COLOR 10: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (4)END IFIF pfield = 1 AND col = 0 THEN        COLOR 0: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (0)END IFEND SUBSUB reinitSCREEN 9CLSvessel (15)CALL cross(warpcx1, warpcy, 5, 2)CALL cross(warpcx2, warpcy, 5, 2)definestarsdrawstars (15)END SUBSUB ship (col)''warp centresIF col <> 0 THEN        CALL cross(warpcx1, warpcy, 5, 10)        CALL cross(warpcx2, warpcy, 5, 10)END IFIF col = 0 THEN        CALL cross(warpcx1, warpcy, 5, 0)        CALL cross(warpcx2, warpcy, 5, 0)END IFCOLOR col''saucer sectionCIRCLE (scx, scy), 30CIRCLE (scx, scy), 5'' middleLINE (scx, scy + 22)-(scx, scy + 55)'' bottomLINE (scx - 5, scy + 55)-(scx + 5, scy + 55)'' bottom to circle leftLINE (scx - 5, scy + 55)-(scx - 10, scy + 22)'' bottom to circle rightLINE (scx + 5, scy + 55)-(scx + 10, scy + 22)'' left nacelle pylonLINE (scx - 6, scy + 50)-(scx - 35, scy + 47)LINE (scx - 6, scy + 45)-(scx - 35, scy + 43)'' right nacelle pylonLINE (scx + 6, scy + 50)-(scx + 35, scy + 47)LINE (scx + 6, scy + 45)-(scx + 35, scy + 43)'' left nacelleLINE (scx - 35, scy + 55)-(scx - 35, scy + 25)LINE (scx - 40, scy + 55)-(scx - 40, scy + 25)LINE (scx - 36, scy + 56)-(scx - 39, scy + 56)LINE (scx - 36, scy + 24)-(scx - 39, scy + 24)'' right nacelleLINE (scx + 35, scy + 55)-(scx + 35, scy + 25)LINE (scx + 40, scy + 55)-(scx + 40, scy + 25)LINE (scx + 36, scy + 56)-(scx + 39, scy + 56)LINE (scx + 36, scy + 24)-(scx + 39, scy + 24)IF pfield = 1 AND col <> 0 THEN        COLOR 2: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        COLOR 10: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (4)END IFIF pfield = 1 AND col = 0 THEN        COLOR 0: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (0)END IFEND SUBSUB vessel (col)IF ves = 1 THEN ship (col)IF ves = 2 THEN probe (col)IF ves = 3 THEN xwing (col)END SUBSUB xwing (col)IF col <> 0 THEN        CALL cross(warpcx1, warpcy, 5, 10)        CALL cross(warpcx2, warpcy, 5, 10)END IFIF col = 0 THEN        CALL cross(warpcx1, warpcy, 5, 0)        CALL cross(warpcx2, warpcy, 5, 0)END IF''fuselageCALL box(scx - 5, scy + 50, scx + 5, scy + 30, col)''noseLINE (scx - 5, scy + 30)-(scx - 2, scy)LINE (scx + 5, scy + 30)-(scx + 2, scy)CIRCLE (scx, scy), 10, , , , 10 / 5''left wingLINE (scx - 5, scy + 50)-(scx - 50, scy + 45)LINE (scx - 5, scy + 37)-(scx - 50, scy + 40)''left gunCALL box(scx - 50, scy + 45, scx - 51, scy + 20, col)''right wingLINE (scx + 5, scy + 50)-(scx + 50, scy + 45)LINE (scx + 5, scy + 37)-(scx + 50, scy + 40)''right gunCALL box(scx + 50, scy + 45, scx + 51, scy + 20, col)''fusial thrust enginesCALL box(scx - 5, scy + 45, scx - 8, scy + 55, col)CALL box(scx + 5, scy + 45, scx + 8, scy + 55, col)IF pfield = 1 AND col <> 0 THEN        COLOR 2: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        COLOR 10: CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (4)END IFIF pfield = 1 AND col = 0 THEN        COLOR 0: CIRCLE (warpcx1, warpcy), pfr: CIRCLE (warpcx2, warpcy), pfr        CIRCLE (warpcx1, warpcy), simr: CIRCLE (warpcx2, warpcy), simr        lfield (0)END IFEND SUBAlexander Podkolzin            PB CHESS GAME 06/99            APP@nw.sbank.e-burg.su         06-21-99 (13:45)       PB                     1434 42446    CH0699.BAS  '---------------------------------------------------------------------------' This project is not finished (some "axception" moves and main EVALUATE' ("thinking") function), as I'm lazy and work under it about one half an' hour a week. I'm sending this stuff to ABC-archives because I've promiced' it to you friends. Maybe in the future I'll return to it...' So, SEE YOU LATER!!'' Copyright status - FREEWARE.'---------------------------------------------------------------------------' IMPORTANT NOTES:'' A. Any move is represented by one byte variable:'    bits 7 - 4 for X-coordinate, bits 3 - 0 for Y-coordinate.'    For instance, coordinates of a piece E1 (white king) are represented'    by &H51 (01010001). I think it's very handy (e.g. see procedures/'    functions "fPack", "UnPack").'' B. Lists of moves format.''    All lists are strings, but I avoid to use (as far as it's possible)'    any string procedures/functions in the program, as they are slow.'    ASC/ASCII, are about 5 times faster then MID$ and at last using'    pointers we achive speed about 20 times faster then MID$.'    Example:'    mList is a string, but we count it as an array of bytes, then'    mList(1) contains number of moves (or zero) for a piece,'    mList(2) contains coordinates of a piece having been moved,'    elements from mList(3) to 29 contain all possible moves'    (or zeros) for that piece.'    All lists of moves in the program have the same structure or'    consist of such structures.'' C. Lists of pieces format.'    pList(1) contains number of pieces in the list,'    elements from pList(2) to 17 contain coordinates of pieces.''--------------------------------------------------------------------------- $DIM ALL $LIB GRAPH $COMPILE MEMORY' $COMPILE EXE $DYNAMIC'--------------------------------------------------------------------------- %FLAGS = 0: %AX = 1: %BX = 2: %CX = 3: %DX = 4 %SI    = 5: %DI = 6: %BP = 7: %DS = 8: %ES = 9 %True = -1 %False = 0 %Debug = %True %ESC_key = &H001B %Mouse_Click_Left = 1 %Mouse_Click_Right = 2 %Mark = 1 %Unmark = 0 %Opposite = -1 %Own = 1 %Absent = 0 %OutOfBoard = 99 %Pawn = 1 %Knight = 2 %Bishop = 3 %Rook = 4 %Queen = 5 %King = 6 %WhiteSide = 0 %BlackSide = 1 %White = 1 %Black = -1 %LegalMoves = 0 %CaptureFields = 1'--------------------------------------------------------------------------- Type PieceInfo   TotalMoves As Integer               'Total moves for the piece X,Y   Moves As String * 29                'List of possible moves   Attacked As Integer                 'Attacked (total number)   Defended As Integer                 'Defended (total number)   Attackers As String * 17            'List of attackers (coordinates)   Defenders As String * 17            'List of defenders (coordinates)   AttWeight As Integer                'Total weight of attackers   DefWeight As Integer                'Total weight of defenders End Type'--------------------------------------------------------------------------- Type Position   WhiteMoves As String * 128          'List of possible moves   BlackMoves As String * 128          'List of possible moves   WhiteKingAt As Byte                 'Coordinates   BlackKingAt As Byte                 'Coordinates   WhiteKingUnderCheck As Integer      'True/False   BlackKingUnderCheck As Integer      'True/False   WhiteKingCastlings As String * 4    'List of possible castlings   BlackKingCastlings As String * 4    'List of possible castlings   XY_PieceList As String * 29         'List of moves for an X,Y piece End Type'---------------------------------------------------------------------------'Procedures declarations list of CH.BAS :' Declare Function MsThere()  As Integer Declare Function fAllPossibleMoves( _         ChBoard() As Integer, _         Byval Owner As Integer, _         Byval TypeOfMoves As Integer _         ) As String Declare Function fColorOfBox( _         Byval X As Integer, _         Byval Y As Integer _         ) As Integer Declare Function fColorOfPiece( _         Byval X As Integer, _         Byval Y As Integer _         ) As Integer Declare Function fFindKing( _         ChBoard() As Integer, _         Byval WhichKing As Integer _         ) As Byte Declare Function fGetKey( _         Col As Integer, _         Row As Integer _         ) As Integer Declare Function fHumanPiece( _         Byval X As Integer, _         Byval Y As Integer _         ) As Integer Declare Function fInBoard( _         Byval X As Integer, _         Byval Y As Integer _         ) As Integer Declare Function fLegalMove( _         ChBoard() As Integer, _         Byval FromX As Integer, _         Byval FromY As Integer, _         Byval ToX As Integer, _         Byval ToY As Integer, _         ListOfMoves As String _         ) As Integer Declare Function fPack( _         Byval X As Integer, _         Byval Y As Integer _         ) As Byte Declare Function fPiece( _         ChBoard() As Integer, _         Byval X As Integer, _         Byval Y As Integer, _         Byval xl As Integer, _         Byval yl As Integer _         ) As Integer Declare Function fPieceName( _         Byval X As Integer, _         Byval Y As Integer _         ) As String Declare Sub DoMove( _         Byval X1 As Integer, _         Byval Y1 As Integer, _         Byval X2 As Integer, _         Byval Y2 As Integer _         ) Declare Sub ErrMessage( _         Byval Mess As String _         ) Declare Sub GenMoves( _         ChBoard() As Integer, _         Byval X As Integer, _         Byval Y As Integer, _         ListOfMoves As String, _         Byval What As Integer _         ) Declare Sub GetFieldInfo( _         ChBoard() As Integer, _         Byval X As Integer, _         Byval Y As Integer, _         Info As PieceInfo, _         Byval Mover As Integer _         ) Declare Sub GetPosition( _         ChBoard() As Integer, _         Byval X As Integer, _         Byval Y As Integer, _         PosInfo As Position _         ) Declare Sub GetScrXY( _         Byval X As Integer, _         Byval Y As Integer, _         sX As Integer, _         sY As Integer _         ) Declare Sub InitGame() Declare Sub MarkIt( _         Byval X As Integer, _         Byval Y As Integer, _         Byval State As Integer _         ) Declare Sub MkBoard() Declare Sub MkField( _         Byval X As Integer, _         Byval Y As Integer, _         Byval C As Integer _         ) Declare Sub MsCursorOff() Declare Sub MsCursorOn() Declare Sub MsLocate( _         Byval Row As Integer, _         Byval Column As Integer _         ) Declare Sub MsSetWindow( _         Byval Row As Integer, _         Byval Col As Integer, _         Byval Rows As Integer, _         Byval Cols As Integer _         ) Declare Sub MsStatus( _         Button As Integer, _         Row As Integer, _         Column As Integer _         ) Declare Sub PrepareGame() Declare Sub Show( _         Byval Num As Integer, _         Byval Xx As Integer, _         Byval Yy As Integer, _         Byval Colr As Integer _         ) Declare Sub ShowList( _         Byval ListOfMoves As String _         ) Declare Sub UnPack( _         Byval Move As Byte, _         X As Integer, _         Y As Integer _         )'--------------------------------------------------------------------------- Dim ChessBoard(8, 8) As Shared Integer Dim Piece(%Pawn To %King) As Shared String Dim WhiteBox As Shared Integer Dim BlackBox As Shared Integer Dim WhiteC As Shared Integer Dim BlackC As Shared Integer Dim HumanPiece As Shared Integer Dim ComputerPiece As Shared Integer Dim HumanSide As Shared Integer Dim HumanMovesFirst As Shared Integer Dim CurX As Shared Integer Dim CurY As Shared Integer Dim OldX As Shared Integer Dim OldY As Shared Integer Dim MarkerColor As Shared Integer Dim i As Integer Dim MouseX As Integer Dim MouseY As Integer Dim ReadyToMove As Shared Integer Dim mList As String Dim Pinfo As PieceInfo Dim PosInfo As Position Dim PosInfo0 As Position Dim WhiteKingMoved As Shared Integer Dim BlackKingMoved As Shared Integer Dim RookA1Moved As Shared Integer Dim RookH1Moved As Shared Integer Dim RookA8Moved As Shared Integer Dim RookH8Moved As Shared Integer Dim WhiteLongCastlingPossible As Shared Integer Dim WhiteShortCastlingPossible As Shared Integer Dim BlackLongCastlingPossible As Shared Integer Dim BlackShortCastlingPossible As Shared Integer'--------------------------------------------------------------------------- If Not MsThere() Then   Print "Mouse not presents!"   End End If On Timer(1) Gosub ShowTime                           'Every second InitGame Do   PosInfo = PosInfo0                                 'Clear position info   GetPosition ChessBoard(), 1, 1, PosInfo   If HumanMovesFirst Then     Gosub HumanMove     Gosub ComputerMove   Else     Gosub ComputerMove     Gosub HumanMove   End If Loop Finish: Cls Screen 0,0,0,0 End'--------------------------------------------------------------------------- HumanMove: Color 10 Locate 1, 54 Print "YOUR MOVE    " Do   i = fGetKey(MouseX, MouseY)   Select Case i   Case %Mouse_Click_Left     CurX = MouseX : CurY = MouseY                    '     If ReadyToMove Then                              'Marked field       If (OldX = CurX) And (OldY = CurY) Then        'At the same place         ReadyToMove = %False                         '         OldX = 0: OldY = 0                           '         MarkIt CurX, CurY, %Unmark                   'Remove marker         Exit Select                                  '       Else                                           'Another place         If fLegalMove(ChessBoard(), _                '                       OldX, OldY, _                  '                       CurX, CurY, mList) Then        '                                                      '           DoMove OldX, OldY, CurX, CurY              'Replace piece           MarkIt OldX, OldY, %Unmark                 'Remove marker           ReadyToMove = %False                       '                                                      '           RETURN                                     'Move is done!                                                      '         Else                                         'Illegal move           ErrMessage "         Illegal move!"        '           Iterate Loop                               '         End If                                       '       End If                                         '     End If                                           '     If ChessBoard(CurX, CurY) = 0 Then               'Can not mark       Exit Select                                    'empty field     End If                                           '     If Not fHumanPiece(CurX, CurY) Then              'Can not mark       Exit Select                                    'computer's piece     End If                                           '     ReadyToMove = %True                              '     OldX = CurX: OldY = CurY                         '     MarkIt CurX, CurY, %Mark                         'Make marker     GetPosition ChessBoard(), CurX, CurY, PosInfo    '     mList = PosInfo.XY_PieceList                     '     ShowList mList                                   '   Case %ESC_key, %Mouse_Click_Right                  'Exit program     Goto Finish                                      '   End Select Loop Return'--------------------------------------------------------------------------- ComputerMove: Color 10 Locate 1, 54 Print "COMPUTER MOVE" Timer On'=======================================' "Mirror" moves for debugging:  DoMove OldX, 9 - OldY, CurX, 9 - CurY'======================================= Timer Off Return'--------------------------------------------------------------------------- ShowTime: Color 14 Locate 1, 70: Print Time$ Return'--------------------------------------------------------------------------- Sub GetPosition(ChBoard() As Integer, _                 Byval X As Integer, _                 Byval Y As Integer, _                 PosInfo As Position)   Dim s As String   Dim n As Integer   PosInfo.WhiteMoves = fAllPossibleMoves(ChBoard(), %White, %LegalMoves)   PosInfo.BlackMoves = fAllPossibleMoves(ChBoard(), %Black, %LegalMoves)   PosInfo.WhiteKingAt = fFindKing(ChBoard(), %White)   PosInfo.BlackKingAt = fFindKing(ChBoard(), %Black)   PosInfo.WhiteKingUnderCheck = (Instr(PosInfo.BlackMoves, _                                  Chr$(PosInfo.WhiteKingAt)) <> 0)   PosInfo.BlackKingUnderCheck = (Instr(PosInfo.WhiteMoves, _                                  Chr$(PosInfo.BlackKingAt)) <> 0)   GenMoves ChBoard(), X, Y, s, %LegalMoves   PosInfo.XY_PieceList = s   '   'Test castlings:   '   n = 0   If (Not PosInfo.WhiteKingUnderCheck)  And (Not WhiteKingMoved) Then     '     'White long castling     '     If Not RookA1Moved Then       If ChBoard(2, 1) + ChBoard(3, 1) + ChBoard(4, 1) = 0 Then         If Instr(PosInfo.BlackMoves, Any Chr$(&H21, &H31, &H41)) = 0 Then           Incr n           Asc(PosInfo.WhiteKingCastlings, n + 2) = &H31         End If       End If     End If     '     'White short castling     '     If Not RookH1Moved Then       If ChBoard(6, 1) + ChBoard(7, 1) = 0 Then         If Instr(PosInfo.BlackMoves, Any Chr$(&H61, &H71)) = 0 Then           Incr n           Asc(PosInfo.WhiteKingCastlings, n + 2) = &H71         End If       End If     End If     Asc(PosInfo.WhiteKingCastlings, 1) = n     Asc(PosInfo.WhiteKingCastlings, 2) = PosInfo.WhiteKingAt   End If   n = 0   If (Not PosInfo.BlackKingUnderCheck)  And (Not BlackKingMoved) Then     '     'Black long castling     '     If Not RookA8Moved Then       If ChBoard(2, 8) + ChBoard(3, 8) + ChBoard(4, 8) = 0 Then         If Instr(PosInfo.WhiteMoves, Any Chr$(&H28, &H38, &H48)) = 0 Then           Incr n           Asc(PosInfo.BlackKingCastlings, n + 2) = &H38         End If       End If     End If     '     'Black short castling     '     If Not RookH8Moved Then       If ChBoard(6, 8) + ChBoard(7, 8) = 0 Then         If Instr(PosInfo.WhiteMoves, Any Chr$(&H68, &H78)) = 0 Then           Incr n           Asc(PosInfo.BlackKingCastlings, n + 2) = &H78         End If       End If     End If     Asc(PosInfo.BlackKingCastlings, 1) = n     Asc(PosInfo.BlackKingCastlings, 2) = PosInfo.BlackKingAt   End If$IF %Debug   Color 14, 0   Locate 3, 54   If PosInfo.WhiteKingUnderCheck Then     ? "White king under check!"   Else     ? "                       "   End If   Locate 4, 54   If PosInfo.BlackKingUnderCheck Then     ? "Black king under check!"   Else     ? "                       "   End If   Color 2   Locate 5, 54   If Ascii(PosInfo.WhiteKingCastlings, 1) <> 0 Then     ? "White castling possible."   Else     ? "                        "   End If   Locate 6, 54   If Ascii(PosInfo.BlackKingCastlings, 1) <> 0 Then     ? "Black castling possible."   Else     ? "                        "   End If$ENDIF End Sub'---------------------------------------------------------------------------' This procedure is reserved for future needs...' Sub GetFieldInfo(ChBoard() As Integer, _                  Byval X As Integer, _                  Byval Y As Integer, _                  Info As PieceInfo, _                  Byval Mover As Integer)   Dim s As String   Dim i as Integer   Dim k as Integer   Dim l as Integer   Dim m as Integer   Dim n as Integer   Dim Temp As Integer   GenMoves ChBoard(), X, Y, s, %LegalMoves   Info.Moves = s   Info.TotalMoves = Asc(s, 1)   '   '  Temporary change, for defenders counting   '   Temp = ChBoard(X, Y)   If Mover > 0 Then     ChBoard(X, Y) = - %Pawn                          'If white move   Else     ChBoard(X, Y) = + %Pawn                          'If black move   End If   s = fAllPossibleMoves(ChBoard(), Mover, %CaptureFields)   ChBoard(X, Y) = Temp                               'Restore change   '   '  Selecting all pieces-defenders for the field X,Y:   '   k = 1   l = 2   m = fPack(X, Y)   Do While k <= Len(s)     n = Asc(s, k)     For i = k + 2 To k + 2 + n - 1       If Asc(s, i) = m Then         Asc(Info.Defenders, l) = Asc(s, k + 1)       'Update defenders list         Incr l       End If     Next     Incr k, n + 2   Loop   Decr l, 2   Asc(Info.Defenders, 1) = l                         'Length of list   Info.Defended = l                                  'Number of defenders   s = fAllPossibleMoves(ChBoard(), -Mover, %LegalMoves) '-Mover for enemy   '   '  Selecting all pieces-attackers for the field X,Y:   '   k = 1   l = 2   m = fPack(X, Y)   Do While k <= Len(s)     n = Asc(s, k)     For i = k + 2 To k + 2 + n - 1       If Asc(s, i) = m Then         Asc(Info.Attackers, l) = Asc(s, k + 1)       'Update attackers list         Incr l       End If     Next     Incr k, n + 2   Loop   Decr l, 2   Asc(Info.Attackers, 1) = l                         'Length of list   Info.Attacked = l                                  'Number of attackers   Info.DefWeight = 0   For i = 1 To Asc(Info.Defenders, 1)     UnPack Asc(Info.Defenders, i + 1), m, n     Incr Info.DefWeight, Abs(ChBoard(m, n))          'Weight of defenders   Next   Info.AttWeight = 0   For i = 1 To Asc(Info.Attackers, 1)     UnPack Asc(Info.Attackers, i + 1), m, n     Incr Info.DefWeight, Abs(ChBoard(m, n))          'Weight of attackers   Next End Sub'--------------------------------------------------------------------------- Function fFindKing(ChBoard() As Integer, _                    Byval WhichKing As Integer) As Byte   Dim x As Integer   Dim y As Integer   For x = 1 To 8     For y = 1 To 8       If ChBoard(x, y) = WhichKing * %King Then         Function = fPack(x, y) : Exit Function       End If     Next   Next End Function'--------------------------------------------------------------------------- Function fPack(Byval X As Integer, Byval Y As Integer) As Byte   ! mov cl, 4                   ;Assembler (need speed)   ! mov ax, X   ! shl ax, cl   ! add ax, Y   ! mov Function, al$IF 0   Shift Left X, 4               'BASIC   Function = X + Y$ENDIF End Function'--------------------------------------------------------------------------- Sub UnPack(Byval Move As Byte, X As Integer, Y As Integer)   Y = Move And &HF              'BASIC, we do not need speed here...   Shift Right Move, 4   X = Move End Sub'--------------------------------------------------------------------------- Function fLegalMove(ChBoard() As Integer, _                     Byval FromX As Integer, _                     Byval FromY As Integer, _                     Byval ToX As Integer, _                     Byval ToY As Integer, _                     ListOfMoves As String) As Integer   Dim kInfo As PieceInfo   Dim TempF As Integer   Dim TempT As Integer   Dim k As Byte   Dim x As Integer   Dim y As Integer   TempF = ChBoard(FromX, FromY)   TempT = ChBoard(ToX, ToY)   ChBoard(FromX, FromY) = 0   ChBoard(ToX, ToY) = TempF   If Abs(TempF) = %King Then     GetFieldInfo ChBoard(), ToX, ToY, kInfo, Sgn(TempF)     If kInfo.Attacked Then       Gosub RestoreBoard       Function = %False       Exit Function     End If   Else     k = fFindKing(ChBoard(), Sgn(TempF))     UnPack k, x, y     GetFieldInfo ChBoard(), x, y, kInfo, Sgn(TempF)     If kInfo.Attacked Then       Gosub RestoreBoard       Function = %False       Exit Function     End If   End If   Gosub RestoreBoard   Function = (Instr(3, ListOfMoves, Chr$(fPack(ToX, ToY))) <> 0)   Exit Function   RestoreBoard:   ChBoard(FromX, FromY) = TempF   ChBoard(ToX, ToY) = TempT   Return End Function'---------------------------------------------------------------------------'Generates "theoretically" possible moves for a piece. Sub GenMoves(ChBoard() As Integer, _              Byval X As Integer, _              Byval Y As Integer, _              ListOfMoves As String, _              Byval What As Integer)   Dim It As Integer   Dim n As Byte '''Integer   Dim Sign As Integer   Dim xl As Integer   Dim yl As Integer   Dim ListPtr As Byte Ptr   Dim Work As Byte Ptr   '   '  Max moves for one piece is 27 (queen).   '   ListOfMoves = String$(29, 0)   ListPtr = Strptr32(ListOfMoves)   It = ChBoard(X, Y)   If It > 0 Then     Sign = +1   Else     Sign = -1   End If   n = 3   Select Case Abs(It)   Case %Pawn     '     '    Pawn moves:     '     If What = %LegalMoves Then       xl = X: yl = Y + Sign       If fPiece(ChBoard(), X, Y, xl, yl) = %Absent Then     'Up         Gosub SetXY         If Y = 7 Or Y = 2 Then           yl = Y + Sign + Sign           If fPiece(ChBoard(), X, Y, xl, yl) = %Absent Then 'Up             Gosub SetXY           End If         End If       End If       '       '      Pawn captures:       '       yl = Y + Sign: xl = X - 1       If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then   'Up and left         Gosub SetXY       End If       xl = X + 1       If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then   'Up and right         Gosub SetXY       End If     Elseif What = %CaptureFields Then       '       '      Pawn attacks/supports fields:       '       yl = Y + Sign: xl = X - 1       Gosub SetXY                                           'Up and left       xl = X + 1       Gosub SetXY                                           'Up and right     End If   Case %Knight     If fPiece(ChBoard(), X, Y, X+1, Y-2) <> %Own Then xl=X+1: yl=Y-2: Gosub SetXY     If fPiece(ChBoard(), X, Y, X+2, Y-1) <> %Own Then xl=X+2: yl=Y-1: Gosub SetXY     If fPiece(ChBoard(), X, Y, X+2, Y+1) <> %Own Then xl=X+2: yl=Y+1: Gosub SetXY     If fPiece(ChBoard(), X, Y, X+1, Y+2) <> %Own Then xl=X+1: yl=Y+2: Gosub SetXY     If fPiece(ChBoard(), X, Y, X-1, Y+2) <> %Own Then xl=X-1: yl=Y+2: Gosub SetXY     If fPiece(ChBoard(), X, Y, X-2, Y+1) <> %Own Then xl=X-2: yl=Y+1: Gosub SetXY     If fPiece(ChBoard(), X, Y, X-2, Y-1) <> %Own Then xl=X-2: yl=Y-1: Gosub SetXY     If fPiece(ChBoard(), X, Y, X-1, Y-2) <> %Own Then xl=X-1: yl=Y-2: Gosub SetXY   Case %Bishop     Gosub CheckDiagonals   Case %Rook     Gosub CheckLines   Case %Queen     Gosub CheckLines     Gosub CheckDiagonals   Case %King     xl = X: yl = Y - 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X - 1: yl = Y - 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X + 1: yl = Y - 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X - 1: yl = Y     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X + 1: yl = Y     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X - 1: yl = Y + 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X: yl = Y + 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY     xl = X + 1: yl = Y + 1     If fPiece(ChBoard(), X, Y, xl, yl) <> %Own Then Gosub SetXY   End Select   Work = ListPtr   @Work = n - 3                                      'Number of moves   Incr Work   @Work = fPack(X, Y)                                'Moves from that field   Exit Sub   '   '  Checking lines:   '   CheckLines:   xl = X: yl = Y - 1   Do While yl > 0                                    'Up     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Decr yl   Loop   xl = X - 1: yl = Y   Do While xl > 0                                    'Left     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Decr xl   Loop   xl = X + 1: yl = Y   Do While xl < 9                                    'Right     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Incr xl   Loop   xl = X: yl = Y + 1   Do While yl < 9                                    'Down     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Incr yl   Loop   Return   '   '  Checking diagonals:   '   CheckDiagonals:   xl = X - 1: yl = Y - 1   Do While yl = > 1 And xl > 0                       'Up and left     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Decr xl     Decr yl   Loop   xl = X + 1: yl = Y - 1   Do While yl > 0 And xl < 9                         'Up and right     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Incr xl     Decr yl   Loop   xl = X - 1: yl = Y + 1   Do While yl < 9 And xl > 0                         'Down and left     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Decr xl     Incr yl   Loop   xl = X + 1: yl = Y + 1   Do While yl < 9 And xl < 9                         'Down and right     If fPiece(ChBoard(), X, Y, xl, yl) = %Own Then Exit Loop     Gosub SetXY     If fPiece(ChBoard(), X, Y, xl, yl) = %Opposite Then Exit Loop     Incr xl     Incr yl   Loop   Return   '   '  Writting to list:   '   SetXY:     If fInBoard(xl, yl) Then       Work = ListPtr + n - 1       @Work = fPack(xl, yl)       Incr n     End If   Return End Sub'--------------------------------------------------------------------------- Function fAllPossibleMoves(ChBoard() As Integer, _                            Byval Owner As Integer, _                            Byval TypeOfMoves As Integer) As String   Dim x As Integer   Dim y As Integer   Dim mL As String        'List of all posiible moves for Owner   Dim Temp As String''  Owner > 0 - white side,'  Owner < 0 - black side.'   mL = ""   For y = 1 To 8     For x = 1 To 8       If ChBoard(x, y) = 0 Then Iterate For       If Sgn(ChBoard(x, y)) = Sgn(Owner) Then         GenMoves ChBoard(), x, y, Temp, TypeOfMoves         If Ascii(Temp, 1) <> 0 Then           mL = mL + Rtrim$(Temp, Chr$(0))         End If       End If     Next   Next   Function = mL End Function'--------------------------------------------------------------------------- Sub ErrMessage(Byval Mess As String)   Locate 27, 28   Print Mess   Delay 1   Locate 27, 28   Print Space$(Len(Mess)) End Sub'--------------------------------------------------------------------------- Sub ShowList(Byval ListOfMoves As String)   Dim i As Integer   Dim n As Integer   Dim x As Integer   Dim y As Integer   Dim pn As String   n = Ascii(ListOfMoves, 1)                          'Number of moves   x = Ascii(ListOfMoves, 2)                          'X, Y   UnPack x, x, y                                     'coordinates of a piece   pn = fPieceName(x, y)                              'Piece name   Color 2   Locate 27, 1   If n > 0 Then     Print "List of moves "; Chr$(34); pn; Chr$(34);   Else     Print "No moves for the "; pn     Exit Sub   End If   Color 10   Locate 29, 1   For i = 1 To n     x = Ascii(ListOfMoves, i + 2)     UnPack x, x, y     Print Mid$("ABCDEFGH", x, 1); Ltrim$(Str$(y)); " ";   Next   Color 2   Locate 28, 1   Print "Length of list ="; Str$(n);  End Sub'--------------------------------------------------------------------------- Function fPieceName(Byval X As Integer, Byval Y As Integer) As String   Select Case Abs(ChessBoard(X, Y))   Case %Pawn   : Function = "Pawn"   Case %Knight : Function = "Knight"   Case %Bishop : Function = "Bishop"   Case %Rook   : Function = "Rook"   Case %Queen  : Function = "Queen"   Case %King   : Function = "King"   End Select End Function'--------------------------------------------------------------------------- Function fPiece(ChBoard() As Integer, _                 Byval X As Integer, _                 Byval Y As Integer, _                 Byval xl As Integer, _                 Byval yl As Integer) As Integer   If Not fInBoard(xl, yl) Then     Function = %OutOfBoard     Exit Function   End If   If ChBoard(xl, yl) = 0 Then     Function = %Absent   Elseif Sgn(ChBoard(X, Y))  = Sgn(ChBoard(xl, yl)) Then     Function = %Own   Else     Function = %Opposite   End If End Function'--------------------------------------------------------------------------- Function fInBoard(Byval X As Integer, Byval Y As Integer) As Integer   Function = (X > 0) And (X < 9) And (Y > 0) And (Y < 9) End Function'--------------------------------------------------------------------------- Function fHumanPiece(Byval X As Integer, Byval Y As Integer) As Integer   Function = (fColorOfPiece(X, Y) <> ComputerPiece) End Function'--------------------------------------------------------------------------- Function fColorOfPiece(Byval X As Integer, Byval Y As Integer) As Integer   If ChessBoard(X, Y) < 0 Then     Function = BlackC   Elseif ChessBoard(X, Y) > 0 Then     Function = WhiteC   Else     Function = 0   End If End Function'--------------------------------------------------------------------------- Function fGetKey(Col As Integer, Row As Integer) As Integer   Dim s As String   Dim Button As Integer   Dim x As Integer   Dim y As Integer   Do     s = Inkey$     MsStatus Button, y, x     x = (x - 3) \ 48 + 1     y = (y - 3) \ 48 + 1     If HumanSide Then                                'Calculating       Col = 9 - x : Row = y                          'chess board     Else                                             'coordinates       Col = x     : Row = 9 - y                      'of a piece     End If                                           '     Color 14     Locate 1, 70: Print Time$     Locate 27, 25     Print Mid$("ABCDEFGH", Col, 1); Ltrim$(Str$(Row))     If Button Then       Function = Button       Do         MsStatus Button, y, x       Loop Until Button = 0       CurX = Col       CurY = Row       Exit Function     End If   Loop Until Len(s)   Function = Cvi(s + Chr$(0)) End Function'--------------------------------------------------------------------------- Sub DoMove(Byval X1 As Integer, _            Byval Y1 As Integer, _            Byval X2 As Integer, _            Byval Y2 As Integer)   Dim Man As Integer   Dim cp As Integer   Dim cba As Integer   Dim cbb As Integer   Dim k As Integer   Dim i As Integer   Dim x As Integer   Dim y As Integer   Man = ChessBoard(X1, Y1)   Select Case Abs(Man)                               'Update castling info   Case %King     If Man > 0 Then       WhiteKingMoved = %True       WhiteLongCastlingPossible = %False       WhiteShortCastlingPossible = %False     Else       BlackKingMoved = %True       BlackLongCastlingPossible = %False       BlackShortCastlingPossible = %False     End If   Case %Rook     If Man > 0 Then       If X1 = 1 Then         RookA1Moved = %True         WhiteLongCastlingPossible = %False       End If       If X1 = 8 Then         RookH1Moved = %True         WhiteShortCastlingPossible = %False       End If     Else       If X1 = 1 Then         RookA8Moved = %True         BlackLongCastlingPossible = %False       End If       If X1 = 8 Then         RookH8Moved = %True         BlackShortCastlingPossible = %False       End If     End If   End Select   ChessBoard(X1, Y1) = 0   ChessBoard(X2, Y2) = Man   x = X2   y = Y2   If Man > 0 Then     cp = WhiteC   Elseif Man < 0 Then     cp = BlackC   Else     Exit Sub   End If   cba = fColorOfBox(X1, Y1)   cbb = fColorOfBox(X2, Y2)   GetScrXY X1, Y1, X1, Y1   GetScrXY X2, Y2, X2, Y2   MsCursorOff   k = (X1 - 1) * 48 + 3   i = (Y1 - 1) * 48 + 3   Line(k, i) - (k + 47, i + 47), cba, BF   k = (X2 - 1) * 48 + 3   i = (Y2 - 1) * 48 + 3   Line(k, i) - (k + 47, i + 47), cbb, BF   Show Abs(Man), x, y, cp   MsCursorOn End Sub'--------------------------------------------------------------------------- Sub GetScrXY(Byval X As Integer, _              Byval Y As Integer, _              sX As Integer, _              sY As Integer)   If HumanSide Then     sX = 9 - X : sY = Y   Else     sX = X     : sY = 9 - Y   End If End Sub'--------------------------------------------------------------------------- Sub MarkIt(Byval X As Integer, Byval Y As Integer, Byval State As Integer)   Dim k As Integer   Dim i As Integer   Dim c As Integer   If State Then     c = MarkerColor   Else     c = fColorOfBox(X, Y)   End If   GetScrXY X, Y, X, Y   k = (X - 1) * 48 + 4   i = (Y - 1) * 48 + 4   MsCursorOff   Color 2   Locate 27, 1: Print Space$(240);   Line(k, i) - (k + 45, i + 45), c, B   Line(k + 1, i + 1) - (k + 44, i + 44), c, B   MsCursorOn End Sub'--------------------------------------------------------------------------- Function fColorOfBox(Byval X As Integer, Byval Y As Integer) As Integer   GetScrXY X, Y, X, Y   If (X + Y) Mod 2 Then     Function = BlackBox   Else     Function = WhiteBox   End If End Function'--------------------------------------------------------------------------- Sub MkBoard()   Dim X As Integer   Dim Y As Integer   Dim CBlack As Integer   Dim CWhite As Integer   CBlack = BlackBox   CWhite = WhiteBox   For X = 1 To 8     For Y = 1 To 8       Swap CBlack, CWhite       MkField X, Y, CBlack     Next     Swap CBlack, CWhite   Next   Line (0, 0) - (389, 389), 2, B   Line (1, 1) - (388, 388), 2, B   Color 2   Locate 26, 4   If HumanSide Then     Print "H     G     F     E     D     C     B     A"     For Y = 1 To 8       Locate 2 + (Y - 1) * 3, 51: Print Mid$("12345678", Y, 1)     Next   Else     Print "A     B     C     D     E     F     G     H"     For Y = 1 To 8       Locate 2 + (Y - 1) * 3, 51: Print Mid$("12345678", 9 - Y, 1)     Next   End If   Color 7 End Sub'--------------------------------------------------------------------------- Sub PrepareGame()   Dim i As Integer   Dim k As Integer   Dim c As Integer   For i = 1 To 8     ChessBoard(i, 2) = %Pawn     ChessBoard(i, 7) = -%Pawn   next   ChessBoard(1, 1) = %Rook   ChessBoard(8, 1) = %Rook   ChessBoard(1, 8) = -%Rook   ChessBoard(8, 8) = -%Rook   ChessBoard(2, 1) = %Knight   ChessBoard(7, 1) = %Knight   ChessBoard(2, 8) = -%Knight   ChessBoard(7, 8) = -%Knight   ChessBoard(3, 1) = %Bishop   ChessBoard(6, 1) = %Bishop   ChessBoard(3, 8) = -%Bishop   ChessBoard(6, 8) = -%Bishop   If HumanSide Then     ChessBoard(5, 1) = %Queen     ChessBoard(5, 8) = -%Queen     ChessBoard(4, 1) = %King     ChessBoard(4, 8) = -%King   Else     ChessBoard(4, 1) = %Queen     ChessBoard(4, 8) = -%Queen     ChessBoard(5, 1) = %King     ChessBoard(5, 8) = -%King   End If   For i = 1 To 8     For k = 1 To 8       If ChessBoard(i, k) > 0 Then         c = WhiteC       Elseif ChessBoard(i, k) < 0 Then         c = BlackC       Else         Iterate For       End If       Show Abs(ChessBoard(i, k)), i, k, c     Next   Next End Sub'--------------------------------------------------------------------------- Sub MkField(Byval X As Integer, _             Byval Y As Integer, _             Byval C As Integer)   Dim Xb As Integer   Dim Yb As Integer   Dim Xe As Integer   Dim Ye As Integer   Xb = 3 + (X - 1) * 48   Yb = 3 + (Y - 1) * 48   Xe = Xb + 47   Ye = Yb + 47   Line (Xb, Yb) - (Xe, Ye), C, BF End Sub'--------------------------------------------------------------------------- Sub Show(Byval Num As Integer, _          Byval Xx As Integer, _          Byval Yy As Integer, _          Byval Colr As Integer)   Dim x As Integer   Dim y As Integer   GetScrXY Xx, Yy, Xx, Yy   x = (Xx - 1) * 48 + 10   y = (Yy - 1) * 48 + 46   Draw "C8BM" + Str$(x) + "," + Str$(y)   Draw Piece(Num)   '   '  Drawing some additional stuff   '   Select Case Num   Case %Knight     Draw "C8BM" + Str$(x + 12) + "," + Str$(y - 31)     Draw "URG"   Case %Bishop   Case %Rook   Case %Queen     Draw "C8BM" + Str$(x + 1) + "," + Str$(y - 24)     Draw "UFL"     Draw "C8BM" + Str$(x + 32) + "," + Str$(y - 24)     Draw "UGR"     Draw "C8BM" + Str$(x + 8) + "," + Str$(y - 29)     Draw "HEFG"     Draw "C8BM" + Str$(x + 25) + "," + Str$(y - 29)     Draw "HEFG"     Draw "C8BM" + Str$(x + 16) + "," + Str$(y - 33)     Draw "HERFGL"   Case %King     Draw "C8BM" + Str$(x + 6) + "," + Str$(y - 21)     Draw "UEHURFERDGFDLHGL"     Draw "C8BM" + Str$(x + 23) + "," + Str$(y - 21)     Draw "UEHURFERDGFDLHGL"     Draw "C8BM" + Str$(x + 16) + "," + Str$(y - 32)     Draw "HUERFDG"   End Select   If Num <> %Pawn Then     Draw "C8BM" + Str$(x + 16) + "," + Str$(y - 10)     Draw "U4L3UR3U4RD4R3DL3D4L"   End If   Draw "BM" + _                                      'Filling area        Str$(x + 17) + "," + _        Str$(y - 2) + "P" + _        Str$(Colr) + ",8" End Sub'--------------------------------------------------------------------------- Function MsThere() Public As Integer   Reg %AX, 0   Call Interrupt &H33   If Reg(%AX) Then     Function = %True   End If End Function'--------------------------------------------------------------------------- Sub MsCursorOn() Public   Reg %AX, 1 : Call Interrupt &H33 End Sub'--------------------------------------------------------------------------- Sub MsCursorOff() Public   Reg %AX, 2 : Call Interrupt &H33 End Sub'--------------------------------------------------------------------------- Sub MsStatus(Button As Integer, Row As Integer, Column As Integer) Public   Reg %AX, 3 : Call Interrupt &H33   Button = Reg(%BX) : Row = Reg(%DX) : Column = Reg(%CX)   If (Pbvscrnmode = 7) Or (Pbvscrnmode = 0) Then     Row = (Row \ 8) + 1     Column = (Column \ 8) + 1   End If End Sub'--------------------------------------------------------------------------- Sub MsLocate(Byval Row As Integer, Byval Column As Integer) Public   If (Pbvscrnmode = 7) Or (Pbvscrnmode = 0) Then     Row = (Row - 1) * 8     Column = (Column - 1) * 8   End If   Reg %AX, 4 : Reg %CX, Column : Reg %DX, Row : Call Interrupt &H33 End Sub'--------------------------------------------------------------------------- Sub MsSetWindow(Byval Row As Integer, Byval Col As Integer, _                 Byval Rows As Integer, Byval Cols As Integer) Public   Rows = Row + Rows - 1   If (Pbvscrnmode = 7) Or (Pbvscrnmode = 0) Then     Row = Row * 8 : Rows = Rows * 8     Col = Col * 8 : Cols = Cols * 8   End If   Reg %AX, 8 : Reg %CX, Row : Reg %DX, Rows : Call Interrupt &H33   Reg %AX, 7 : Reg %CX, Col : Reg %DX, Cols : Call Interrupt &H33   MsLocate Row, Col End Sub'--------------------------------------------------------------------------- Sub InitGame()   Dim s As String   Piece(%Pawn)   = "E2REHERE8U5HLHER2EH4U3E4R3F4D3G4FR2FGL2D6F8RFGFRF2L32"   Piece(%Rook)   = "E2REHER2U6R3U12HL2U7R3D3R3U3R3D3R3U3R3D3R3U3R3D7L2GD1" + _                    "2R3D6R2FGFRF2L32"   Piece(%Knight) = "E2REHER3U4EREH2U4E3REREREREU2HL2GLGL2G3LHLU3E5UE4R3EU" + _                    "E2FERD4FRF4DFDFD6GDGDG2LG3DFRFD4R3FGFRF2L32"   Piece(%Bishop) = "E2R2U1H1E1R3U5E1U6E1U5E1U4E5U3R3D3F5D4F1D5F1D6F1D4F1R" + _                    "3F1G1F1R1F2L33"   Piece(%Queen)  = "E2REHER2EU3ER2EH13UE3F4G2F2RFRFRFRU2HUHUHUH5E4F4G2DF5" + _                    "U8H3UE4RF4DG3D8E5UH2E4F4G5DGDGDGD2RERERERE2H2E4F3DG13" + _                    "FR2FD3FR2FGFRF2L32"   Piece(%King)   = "E3H1E2R2U3E2R2H11U4E6R5F3R1U2H2U1E4R1F4D1G2D2R1E3R5F6" + _                    "D4G11R2F2D3R2F2G1F3L32"   WhiteBox = 7   BlackBox = 0   WhiteC = 10   BlackC =  9   MarkerColor = 12   Do     Cls     Print "What side do you want, (B)lack  or (W)hite?"     s = Input$(1)     If Instr("Bb", s) Then       HumanSide = %BlackSide                         'Human side is black       HumanMovesFirst = %False       HumanPiece = BlackC       ComputerPiece = WhiteC       Exit Loop     Elseif Instr("Ww", s) Then       HumanSide = %WhiteSide                         'Human side is white       HumanMovesFirst = %True       HumanPiece = WhiteC       ComputerPiece = BlackC       Exit Loop     End If     Sound 880, .5   Loop   Screen 12   MkBoard   PrepareGame   MsCursorOn   MsSetWindow 4, 4, 383, 386   MsLocate 194, 194 End Sub'---------------------------------------------------------------------------The ABC Programmer             OLD FILM STRIP LIKE INTRO      voxel@edmc.net                 07-12-99 (19:58)       QB, QBasic, PDS        56   1282     FILM.BAS    ' Old film strip like introCLSSCREEN 13SLEEP 1CIRCLE (160, 100), 127, 27, , , 1 / 1.3PAINT (1, 1), 25, 27PAINT (160, 100), 27CIRCLE (160, 65), 45, 17, 5.1, 2.3CIRCLE (160, 135), 45, 17, 4, 1.2CIRCLE (160, 68), 30, 17, 4.7, 2.3CIRCLE (160, 132), 30, 17, 4, 1.55LINE (160, 94)-(160, 107), 17LINE (130, 37)-(139, 51), 17LINE (130, 162)-(139, 151), 17PAINT (135, 40), 22, 17SOUND 600, 1SLEEP 1PAINT (135, 40), 27CIRCLE (160, 70), 45, 17, 5.3, 3CIRCLE (160, 70), 30, 17, 5.2, 3LINE (173, 93)-(122, 144), 17LINE (184, 102)-(140, 144), 17LINE (140, 144)-(205, 144), 17LINE (205, 144)-(205, 155), 17LINE (205, 155)-(122, 155), 17LINE (122, 144)-(122, 155), 17LINE (115, 66)-(130, 68), 17PAINT (180, 150), 22, 17SOUND 600, 1SLEEP 1PAINT (180, 150), 27LINE (150, 30)-(175, 30), 17LINE (175, 30)-(175, 140), 17LINE (150, 30)-(130, 50), 17LINE (130, 50)-(130, 60), 17LINE (130, 60)-(150, 60), 17LINE (150, 60)-(150, 140), 17LINE (150, 140)-(120, 140), 17LINE (175, 140)-(205, 140), 17LINE (120, 140)-(120, 153), 17LINE (205, 140)-(205, 153), 17LINE (120, 153)-(205, 153), 17PAINT (160, 100), 22, 17SOUND 600, 1FOR X = 1 TO 200  CIRCLE (160, 100), X, 0  CIRCLE (161, 100), X, 0NEXT XNeil Marshall                  GNOME WALK                     santa@tir.com                  07-25-99 (11:59)       QB, QBasic, PDS        421  14580    WALK.BAS              '*********************************************          '* Gnome Walk                                *          '* Programmed by Neil Marshall               *          '*********************************************                    DECLARE SUB drawlevel ()          DEFINT A-Z          'Change to screen 9 (640x480x16 Colors, 2 Flip Screens)          SCREEN 9          'Define the Graphical arrays          DIM gnome4(900), gnome3(900), gnome2(900), gnome1(900) 'Gnome          DIM mask4(900), mask3(900), mask2(900), mask1(900)     'Masks          GOSUB getgnomes 'Draw and Grab the gnomes and masks from the end of this file          LOCATE 25, 1: PRINT "Press a key to start...";          WHILE INKEY$ = "": WEND 'Wait for a key press          y = 100 'Set the Y Co-ord          x = 10  'Set the X Co-ord          d$ = "Right" 'Set the direction     DO  'The main loop      a$ = INKEY$ 'Get any key presses      IF a$ = "6" THEN d$ = "Right" 'If they pressed 6 then change the direction      IF a$ = "4" THEN d$ = "Left"  'If they pressed 4 then change the direction      IF UCASE$(a$) = "Q" THEN END  'End the program      IF d$ = "Right" THEN x = x + 10 'if the direction is Right than move the character 10 pixels to the right      IF d$ = "Left" THEN x = x - 10 'if the direction is Left than move the character 10 pixels to the Left      IF x < 1 THEN x = 1 'If they hit the wall then keep them there      IF x > 600 THEN x = 600 'If they hit the wall then keep them there      fm = 1 - fm 'Change the frame (0 or 1)      IF d$ = "Right" THEN       IF fm = 1 THEN        pg = 1 - pg            'Change the screen #        SCREEN 9, , pg, 1 - pg 'Flip the screens        WAIT &H3DA, 8 'Wait for the electron beam :)        CLS        drawlevel 'Draw the bars for the background        PUT (x, y), mask4, AND  'paint the mask        PUT (x, y), gnome4, XOR 'paint paint the gnome onto the mask        GOSUB waitt           'Wait for .1 of a second       ELSE        pg = 1 - pg        SCREEN 9, , pg, 1 - pg        WAIT &H3DA, 8        CLS        drawlevel        PUT (x + 1, y), mask3, AND        PUT (x + 1, y), gnome3, XOR        GOSUB waitt       END IF      ELSE       IF fm = 1 THEN        pg = 1 - pg        SCREEN 9, , pg, 1 - pg        WAIT &H3DA, 8        CLS        drawlevel        PUT (x, y), mask2, AND        PUT (x, y), gnome2, XOR        GOSUB waitt       ELSE        pg = 1 - pg        SCREEN 9, , pg, 1 - pg        WAIT &H3DA, 8        CLS        drawlevel        PUT (x + 1, y), mask1, AND        PUT (x + 1, y), gnome1, XOR        GOSUB waitt       END IF      END IF     LOOP     END     ''''''''''''''''''''''''getgnomes:     'GOSUB background     'gnome1       x = 100: y = 200       CIRCLE (x + 5, y + 3), 5, 7: PAINT (x + 5, y + 3), 7, 7       PSET (x + 2, y + 3), 0       LINE (x + 12, y + 2)-(x + 3, y - 2), 12       LINE -(x + 12, y - 10), 12: LINE -(x + 12, y + 2), 12       PAINT (x + 8, y - 2), 12, 12       CIRCLE (x + 5, y + 16), 9, 14, , , 5 / 3       PAINT (x + 5, y + 16), 14, 14       LINE (x + 9, y + 10)-(x + 14, y + 14), 14       LINE -(x + 15, y + 19), 14       LINE -(x + 13, y + 19), 14       LINE -(x + 11, y + 14), 14       PAINT (x + 13, y + 17), 14, 14       LINE (x + 2, y + 11)-(x - 1, y + 15), 14       LINE -(x - 5, y + 19), 14       LINE -(x - 6, y + 17), 14       LINE -(x - 4, y + 15), 14       LINE -(x, y + 11), 14       PAINT (x - 2, y + 14), 14, 14       LINE (x + 11, y + 19)-(x, y + 19), 9       LINE -(x - 3, y + 30), 9       LINE -(x - 4, y + 33), 9       LINE -(x - 2, y + 33), 9       LINE -(x + 3, y + 28), 9       LINE -(x, y + 25), 9       LINE -(x + 7, y + 28), 9       LINE -(x + 12, y + 33), 9       LINE -(x + 14, y + 30), 9       LINE -(x + 9, y + 25), 9       LINE -(x + 11, y + 19), 9       PAINT (x + 2, y + 21), 9, 9       PAINT (x, y + 28), 9, 9       LINE (x - 3, y + 33)-(x - 5, y + 35), 6, BF       LINE (x - 5, y + 33)-(x - 7, y + 31), 6, BF       LINE (x + 17, y + 31)-(x + 15, y + 33), 6, BF       LINE (x + 15, y + 34)-(x + 9, y + 35), 6, BF       GET (x - 8, y - 10)-(x + 17, y + 37), gnome1       'LINE (x - 9, y - 11)-(x + 18, y + 38), 7, B     'gnome2       x = 200       CIRCLE (x + 5, y + 3), 5, 7: PAINT (x + 5, y + 3), 7, 7       PSET (x + 2, y + 3), 0       LINE (x + 12, y + 2)-(x + 3, y - 2), 12       LINE -(x + 12, y - 10), 12: LINE -(x + 12, y + 2), 12       PAINT (x + 8, y - 2), 12, 12       CIRCLE (x + 5, y + 16), 9, 14, , , 5 / 3       PAINT (x + 5, y + 16), 14, 14       LINE (x + 10, y + 19)-(x - 1, y + 19), 9       LINE -(x + 1, y + 25), 9: LINE -(x + 4, y + 25), 9       LINE -(x + 3, y + 30), 9       LINE -(x + 4, y + 35), 9       LINE -(x + 6, y + 35), 9       LINE -(x + 6, y + 30), 9       LINE -(x + 7, y + 25), 9       LINE -(x + 10, y + 22), 9       LINE -(x + 10, y + 19), 9       PAINT (x + 5, y + 21), 9, 9       LINE (x + 5, y + 11)-(x + 7, y + 21), 14, BF       LINE (x + 7, y + 35)-(x + 2, y + 37), 6, BF       GET (x - 7, y - 10)-(x + 17, y + 37), gnome2     '  LINE (x - 8, y - 11)-(x + 18, y + 38), 7, B     'third gnome       x = 300: y = 200       CIRCLE (x + 5, y + 3), 5, 7: PAINT (x + 5, y + 3), 7, 7       PSET (x + 8, y + 3), 0       LINE (x - 2, y + 2)-(x + 7, y - 2), 12       LINE -(x - 2, y - 10), 12: LINE -(x - 2, y + 2), 12       PAINT (x + 2, y - 2), 12, 12       CIRCLE (x + 5, y + 16), 9, 14, , , 5 / 3       PAINT (x + 5, y + 16), 14, 14       LINE (x, y + 19)-(x + 10, y + 19), 9       LINE -(x + 8, y + 25), 9: LINE -(x + 7, y + 25), 9       LINE -(x + 8, y + 30), 9       LINE -(x + 7, y + 35), 9       LINE -(x + 4, y + 35), 9       LINE -(x + 5, y + 30), 9       LINE -(x + 3, y + 25), 9       LINE -(x + 0, y + 22), 9       LINE -(x + 0, y + 19), 9       PAINT (x + 5, y + 21), 9, 9       LINE (x + 5, y + 11)-(x + 7, y + 21), 14, BF       LINE (x + 3, y + 35)-(x + 8, y + 37), 6, BF       GET (x - 7, y - 10)-(x + 17, y + 37), gnome3     'gnome4       x = 400: y = 200       CIRCLE (x + 5, y + 3), 5, 7: PAINT (x + 5, y + 3), 7, 7       PSET (x + 8, y + 3), 0       LINE (x - 2, y + 2)-(x + 7, y - 2), 12       LINE -(x - 2, y - 10), 12: LINE -(x - 2, y + 2), 12       PAINT (x + 2, y - 2), 12, 12       CIRCLE (x + 5, y + 16), 9, 14, , , 5 / 3       PAINT (x + 5, y + 16), 14, 14       LINE (x + 1, y + 10)-(x - 4, y + 14), 14       LINE -(x - 5, y + 19), 14       LINE -(x - 3, y + 19), 14       LINE -(x - 1, y + 14), 14       PAINT (x - 1, y + 12), 14, 14       LINE (x + 8, y + 11)-(x + 11, y + 15), 14       LINE -(x + 15, y + 19), 14       LINE -(x + 16, y + 17), 14       LINE -(x + 14, y + 15), 14       LINE -(x + 10, y + 11), 14       PAINT (x + 12, y + 14), 14, 14       LINE (x - 1, y + 19)-(x + 10, y + 19), 9       LINE -(x + 13, y + 30), 9       LINE -(x + 14, y + 33), 9       LINE -(x + 12, y + 33), 9       LINE -(x + 7, y + 28), 9       LINE -(x + 5, y + 25), 9       LINE -(x + 3, y + 28), 9       LINE -(x - 2, y + 33), 9       LINE -(x - 4, y + 30), 9       LINE -(x + 1, y + 25), 9       LINE -(x - 1, y + 19), 9       PAINT (x + 5, y + 21), 9, 9       LINE (x + 13, y + 33)-(x + 15, y + 35), 6, BF       LINE (x + 15, y + 33)-(x + 17, y + 31), 6, BF       LINE (x - 7, y + 31)-(x - 5, y + 33), 6, BF       LINE (x - 5, y + 34)-(x + 1, y + 35), 6, BF       GET (x - 8, y - 10)-(x + 17, y + 37), gnome4     'fifth gnome       x = 500: y = 200       CIRCLE (x + 5, y + 3), 5, 7: PAINT (x + 5, y + 3), 7, 7       PSET (x + 4, y + 3), 0: PSET (x + 8, y + 3), 0       LINE (x + 2, y + 0)-(x + 8, y), 12       LINE -(x + 5, y - 10), 12: LINE -(x + 0, y), 12       PAINT (x + 5, y - 2), 12, 12       CIRCLE (x + 5, y + 16), 9, 14, , , 3 / 2       PAINT (x + 5, y + 16), 14, 14       LINE (x, y + 19)-(x + 10, y + 19), 9       LINE -(x + 12, y + 35), 9: LINE -(x + 6, y + 25), 9       LINE -(x + 4, y + 25), 9: LINE -(x - 2, y + 35), 9       LINE -(x, y + 19), 9: PAINT (x + 5, y + 20), 9, 9       LINE (x + 11, y + 35)-(x + 16, y + 37), 6, BF       LINE (x - 1, y + 35)-(x - 6, y + 37), 6, BF       LINE (x - 1, y + 8)-(x + 11, y + 8), 14       LINE -(x + 16, y + 14), 14: LINE -(x + 12, y + 20), 14       LINE (x + 11, y + 11)-(x + 13, y + 14), 14       LINE -(x + 12, y + 20), 14       PAINT (x + 15, y + 14), 14       LINE (x - 2, y + 8)-(x - 7, y + 14), 14: LINE -(x - 3, y + 20), 14       LINE -(x - 2, y + 18), 14       LINE -(x - 4, y + 14), 14' LINE -(x-3, y+14), 14       LINE -(x + 1, y + 12), 14: LINE -(x - 2, y + 8), 14       PAINT (x - 3, y + 11), 14, 14       LINE (x - 5, y + 14)-(x - 2, y + 20), 14       LINE (x - 6, y + 14)-(x - 3, y + 20), 14       PSET (x - 5, y + 13), 14       LINE (x + 2, y + 19)-(x + 1, y + 8), 9: LINE (x + 8, y + 19)-(x + 9, y + 8), 9     ' GET (x - 7, y - 10)-(x + 17, y + 37), gnome5     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       x = 100: y = 100       LINE (x - 8, y - 10)-(x + 17, y + 37), 15, BF       CIRCLE (x + 5, y + 3), 5, 0: PAINT (x + 7, y + 5), 0, 0       PSET (x + 2, y + 3), 0       LINE (x + 12, y + 2)-(x + 3, y - 2), 0       LINE -(x + 12, y - 10), 0: LINE -(x + 12, y + 2), 0       PAINT (x + 8, y - 2), 0, 0       CIRCLE (x + 5, y + 16), 9, 0, , , 5 / 3       PAINT (x + 5, y + 16), 0, 0       LINE (x + 9, y + 10)-(x + 14, y + 14), 0       LINE -(x + 15, y + 19), 0       LINE -(x + 13, y + 19), 0       LINE -(x + 11, y + 14), 0       PAINT (x + 13, y + 17), 0, 0       LINE (x + 2, y + 11)-(x - 1, y + 15), 0       LINE -(x - 5, y + 19), 0       LINE -(x - 6, y + 17), 0       LINE -(x - 4, y + 15), 0       LINE -(x, y + 11), 0       PAINT (x - 2, y + 14), 0, 0       LINE (x + 11, y + 19)-(x, y + 19), 0       LINE -(x - 3, y + 30), 0       LINE -(x - 4, y + 33), 0       LINE -(x - 2, y + 33), 0       LINE -(x + 3, y + 28), 0       LINE -(x, y + 25), 0       LINE -(x + 7, y + 28), 0       LINE -(x + 12, y + 33), 0       LINE -(x + 14, y + 30), 0       LINE -(x + 9, y + 25), 0       LINE -(x + 11, y + 19), 0       PAINT (x + 3, y + 25), 0, 0       PAINT (x, y + 26), 0, 0       LINE (x - 3, y + 33)-(x - 5, y + 35), 0, BF       LINE (x - 5, y + 33)-(x - 7, y + 31), 0, BF       LINE (x + 17, y + 31)-(x + 15, y + 33), 0, BF       LINE (x + 15, y + 34)-(x + 9, y + 35), 0, BF       GET (x - 8, y - 10)-(x + 17, y + 37), mask1     'gnome2       x = 200       LINE (x - 7, y - 10)-(x + 17, y + 37), 15, BF       CIRCLE (x + 5, y + 3), 5, 0: PAINT (x + 5, y + 3), 0, 0       PSET (x + 2, y + 3), 0       LINE (x + 12, y + 2)-(x + 3, y - 2), 0       LINE -(x + 12, y - 10), 0: LINE -(x + 12, y + 2), 0       PAINT (x + 8, y - 2), 0, 0       CIRCLE (x + 5, y + 16), 9, 0, , , 5 / 3       PAINT (x + 5, y + 16), 0, 0       LINE (x + 10, y + 19)-(x - 1, y + 19), 0       LINE -(x + 1, y + 25), 0: LINE -(x + 4, y + 25), 0       LINE -(x + 3, y + 30), 0       LINE -(x + 4, y + 35), 0       LINE -(x + 6, y + 35), 0       LINE -(x + 6, y + 30), 0       LINE -(x + 7, y + 25), 0       LINE -(x + 10, y + 22), 0       LINE -(x + 10, y + 19), 0       PAINT (x + 4, y + 30), 0, 0       LINE (x + 5, y + 11)-(x + 7, y + 21), 0, BF       LINE (x + 7, y + 35)-(x + 2, y + 37), 0, BF       GET (x - 7, y - 10)-(x + 17, y + 37), mask2     'third gnome       x = 300       LINE (x - 7, y - 10)-(x + 17, y + 37), 15, BF       CIRCLE (x + 5, y + 3), 5, 0: PAINT (x + 5, y + 3), 0, 0       PSET (x + 8, y + 3), 0       LINE (x - 2, y + 2)-(x + 7, y - 2), 0       LINE -(x - 2, y - 10), 0: LINE -(x - 2, y + 2), 0       PAINT (x + 2, y - 2), 0, 0       CIRCLE (x + 5, y + 16), 9, 0, , , 5 / 3       PAINT (x + 5, y + 16), 0, 0       LINE (x, y + 19)-(x + 10, y + 19), 0       LINE -(x + 8, y + 25), 0: LINE -(x + 7, y + 25), 0       LINE -(x + 8, y + 30), 0       LINE -(x + 7, y + 35), 0       LINE -(x + 4, y + 35), 0       LINE -(x + 5, y + 30), 0       LINE -(x + 3, y + 25), 0       LINE -(x + 0, y + 22), 0       LINE -(x + 0, y + 19), 0       PAINT (x + 6, y + 30), 0, 0       LINE (x + 5, y + 11)-(x + 7, y + 21), 0, BF       LINE (x + 3, y + 35)-(x + 8, y + 37), 0, BF       GET (x - 7, y - 10)-(x + 17, y + 37), mask3     'gnome4       x = 400       LINE (x - 8, y - 10)-(x + 17, y + 37), 15, BF       CIRCLE (x + 5, y + 3), 5, 0: PAINT (x + 5, y + 3), 0, 0       PSET (x + 8, y + 3), 0       LINE (x - 2, y + 2)-(x + 7, y - 2), 0       LINE -(x - 2, y - 10), 0: LINE -(x - 2, y + 2), 0       PAINT (x + 2, y - 2), 0, 0       CIRCLE (x + 5, y + 16), 9, 0, , , 5 / 3       PAINT (x + 5, y + 16), 0, 0       LINE (x + 1, y + 10)-(x - 4, y + 14), 0       LINE -(x - 5, y + 19), 0       LINE -(x - 3, y + 19), 0       LINE -(x - 1, y + 14), 0       PAINT (x - 1, y + 12), 0, 0       LINE (x + 8, y + 11)-(x + 11, y + 15), 0       LINE -(x + 15, y + 19), 0       LINE -(x + 16, y + 17), 0       LINE -(x + 14, y + 15), 0       LINE -(x + 10, y + 11), 0       PAINT (x + 12, y + 14), 0, 0       LINE (x - 1, y + 19)-(x + 10, y + 19), 0       LINE -(x + 13, y + 30), 0       LINE -(x + 14, y + 33), 0       LINE -(x + 12, y + 33), 0       LINE -(x + 7, y + 28), 0       LINE -(x + 5, y + 25), 0       LINE -(x + 3, y + 28), 0       LINE -(x - 2, y + 33), 0       LINE -(x - 4, y + 30), 0       LINE -(x + 1, y + 25), 0       LINE -(x - 1, y + 19), 0       PAINT (x + 8, y + 24), 0, 0       PAINT (x + 2, y + 24), 0, 0       LINE (x + 13, y + 33)-(x + 15, y + 35), 0, BF       LINE (x + 15, y + 33)-(x + 17, y + 31), 0, BF       LINE (x - 7, y + 31)-(x - 5, y + 33), 0, BF       LINE (x - 5, y + 34)-(x + 1, y + 35), 0, BF       GET (x - 8, y - 10)-(x + 17, y + 37), mask4     RETURNwaitt:       T! = TIMER       DO UNTIL TIMER > T! + .1       LOOP       RETURN'[Image]'| Back |     SUB drawlevel       LINE (1, 100)-(649, 100), 2       LINE (1, 147)-(649, 147), 2       FOR i = 1 TO 640 STEP 25         LINE (i, 1)-(i + 2, 200), 3, BF       NEXT     END SUBMarc Santa                     3D-LIKE GAME (DEMO ONLY)       santa@tir.com                  07-25-99 (11:59)       QB, QBasic, PDS        105  4599     3DGAME.BAS  '  Here's the 3D corridor.  See if you can make it into a proper maze.''                            '                           Ŀ     '                                      '                                      '                              Ŀ       '                                     '       TH                  '                                  HiT <F5> NOW'         DiGiTiZ                     '                                               KS'                                              Q = Quit'                                             Arrow keys = Move'                                    \                 A = Look up'                                                      Z = Look down'                                                         C = Center view'                                Q  A S I C              + = run faster'                                                         - = run slower                     '   *** initilize variables ***SCREEN 13 'screen mode  j = -10  speed = 5   'start speed  sector = 1  'start sector  '             *** start position ***                      x = 141   ' facing right/left                      y = 75    ' looking up/down                      B = 22    ' distance along corridoor  VIEW (0, 0)-(300, 150)   ' setup screen coordinates        '                   *************GO:     '                   *** start ***        '                   *************  vario = INT(speed / 2)  IF a$ <> "" THEN CLS 'clear screen.   smaller = faster  a$ = INKEY$                                      '********** keys ********  IF a$ = CHR$(0) + "K" THEN x = x + speed         '** left               **  IF a$ = CHR$(0) + "M" THEN x = x - speed         '** right              **  IF a$ = "a" OR a$ = "A" THEN y = y + speed       '** look up            **  IF a$ = "z" OR a$ = "Z" THEN y = y - speed       '** look down          **  IF a$ = "s" OR a$ = "S" THEN j = j + 1           '** look up            **  IF a$ = "x" OR a$ = "X" THEN j = j - 1           '** look down          **  IF a$ = "=" THEN speed = speed + 1               '** run faster         **  IF a$ = "-" THEN speed = speed - 1               '** run slower         **  IF a$ = "c" OR a$ = "C" THEN y = 75              '** center view        **  IF a$ = CHR$(0) + "H" THEN B = B + vario         '** walk forward       **  IF a$ = CHR$(0) + "P" THEN B = B - vario         '** walk backward      **  IF a$ = "q" OR a$ = "Q" THEN END                 '** quit               **  t = y - B             'debug line                '************************  IF t < 1 THEN t = 1   'ditto  IF B < 1 THEN B = 1   'ditto  IF B > 60 THEN B = 60  ' distance of corridoor   IF speed < 2 THEN speed = 2   'debug line  IF speed > 100 THEN speed = 100  IF vario < 1 THEN vario = 1  IF x > 410 AND sector = 1 THEN x = -52: B = 60 - B: sector = 2 'code to make  IF x > 410 AND sector = 2 THEN x = -52: B = 60 - B: sector = 1 'you turn                                                                 'round +  IF x < -53 AND sector = 1 THEN x = 409: B = 60 - B: sector = 2 'change  IF x < -53 AND sector = 2 THEN x = 409: B = 60 - B: sector = 1 'sector.  IF j > 15 THEN j = 15  IF j < -14 THEN j = -14 GOSUB DR       'goto draw screen and come back afterGOTO GO        'goto start        '                 *******************DR:     '                 *** draw screen ***        '                 *******************  IF sector = 1 THEN endwall = 6  IF sector = 2 THEN endwall = 1  LINE (x - B + 1, y - B + 1)-(x + B - 1, y + B - 1), endwall, BF'draw end wall  LINE (x - B, y - B)-(x + B, y + B), 15, B  'draw end wall  LINE (1, j)-(x - B, y - B), 15             'draw walls  LINE (1, 149 + j)-(x - B, y + B), 15  LINE (299, j)-(x + B, y - B), 15  LINE (299, 149 + j)-(x + B, y + B), 15                                                 LINE (0, 0)-(300, 150), 15, B            'draw border                                                  '  IF y <= 127 THEN PAINT (148, 149), 25, 15  'floor colour'  IF y >= 26 THEN PAINT (148, 1), 8, 15      'ceiling colour  LOCATE 20, 2                   ' print variables  COLOR 32  PRINT "x"; x; "y"; y; "dist"; B; "SECTOR"; sector; "speed"; speed  LOCATE 21, 2  PRINT " j"; j  RETURN  ' go backMarc Santa                     3D (WORMHOLE) RACING DEMO      santa@tir.com                  07-25-99 (12:02)       QB, QBasic, PDS        230  27455    3DRACE.BAS  '''  3-d Racing''DIM SHARED size(1 TO 2000) AS INTEGERDIM SHARED col(1 TO 2000) AS INTEGERDIM SHARED row(1 TO 2000) AS INTEGERDIM SHARED over AS INTEGER, up AS INTEGERDIM SHARED o AS INTEGER, u AS INTEGERDIM SHARED speed AS INTEGER, dir AS INTEGERDIM SHARED a, bRANDOMIZE TIMERCLS : SCREEN 13a = .0104 * b - 14.11over = 90: up = 90: o = 0: u = 0: speed = 0: b = 301FOR i = 1 TO 2000 T! = TIMER DO LOOP UNTIL TIMER-T! > .3 LOCATE 1, 1: PRINT speed; o; i READ col(i), row(i): size(i) = 25 IF i > 15 THEN  FOR w = 1 TO speed: NEXT w  FOR g = 0 TO 13  CIRCLE (col(i - g), row(i - g)), size(i - g), 0    size(i - g) = size(i - g) + 15    CIRCLE (col(i - g), row(i - g)), size(i - g), 1  NEXT g  CIRCLE (col(i - 13), row(i - 13)), size(i - 13), 0  LINE (over + (65) * COS(a + .104), up + (65 / 1.2 * SIN(a + .104)))-(over + (68) * COS(a + .312), up + (68 / 1.2 * SIN(a + .312))), 0  LINE (over + (68) * COS(a + .312), up + (68 / 1.2 * SIN(a + .312)))-(over + (87) * COS(a + .238), up + (87 / 1.2 * SIN(a + .238))), 0  LINE (over + (87) * COS(a + .238), up + (87 / 1.2 * SIN(a + .238)))-(over + (84) * COS(a + .078), up + (84 / 1.2 * SIN(a + .078))), 0  LINE (over + (84) * COS(a + .078), up + (84 / 1.2 * SIN(a + .078)))-(over + (65) * COS(a + .104), up + (65 / 1.2 * SIN(a + .104))), 0  LINE (over + (65) * COS(a - .104), up + (65 / 1.2 * SIN(a - .104)))-(over + (68) * COS(a - .312), up + (68 / 1.2 * SIN(a - .312))), 0  LINE (over + (68) * COS(a - .312), up + (68 / 1.2 * SIN(a - .312)))-(over + (86) * COS(a - .248), up + (86 / 1.2 * SIN(a - .248))), 0  LINE (over + (86) * COS(a - .248), up + (86 / 1.2 * SIN(a - .248)))-(over + (84) * COS(a - .088), up + (84 / 1.2 * SIN(a - .088))), 0  LINE (over + (84) * COS(a - .088), up + (84 / 1.2 * SIN(a - .088)))-(over + (65) * COS(a - .104), up + (65 / 1.2 * SIN(a - .104))), 0  LINE (over + (75) * COS(a + .097), up + (75 / 1.2 * SIN(a + .097)))-(over + (75) * COS(a - .102), up + (75 / 1.2 * SIN(a - .102))), 0  LINE (over + (66.5) * COS(a + .208), up + (66.5 / 1.2 * SIN(a + .208)))-(over + (40) * COS(a + .208), up + (40 / 1.2 * SIN(a + .208))), 0  LINE (over + (66.5) * COS(a - .208), up + (66.5 / 1.2 * SIN(a - .208)))-(over + (40) * COS(a - .208), up + (40 / 1.2 * SIN(a - .208))), 0  LINE (over + (40) * COS(a + .208), up + (40 / 1.2 * SIN(a + .208)))-(over + (40) * COS(a - .208), up + (40 / 1.2 * SIN(a - .208))), 0  LINE (over + (55) * COS(a + .097), up + (55 / 1.2 * SIN(a + .097)))-(over + (55) * COS(a - .097), up + (55 / 1.2 * SIN(a - .097))), 0  LINE (over + (45) * COS(a + .097), up + (45 / 1.2 * SIN(a + .097)))-(over + (45) * COS(a - .097), up + (45 / 1.2 * SIN(a - .097))), 0  LINE (over + (55) * COS(a + .097), up + (55 / 1.2 * SIN(a + .097)))-(over + (45) * COS(a + .097), up + (45 / 1.2 * SIN(a + .097))), 0  LINE (over + (55) * COS(a - .097), up + (55 / 1.2 * SIN(a - .097)))-(over + (45) * COS(a - .097), up + (45 / 1.2 * SIN(a - .097))), 0'  PAINT (over + (50) * COS(a - .01), up + (50 / 1.2 * SIN(a - .01))), 0  LINE (over + (40) * COS(a + .148), up + (40 / 1.2 * SIN(a + .148)))-(over + (35) * COS(a + .168), up + (35 / 1.2 * SIN(a + .168))), 0  LINE (over + (35) * COS(a + .168), up + (35 / 1.2 * SIN(a + .168)))-(over + (37) * COS(a + .358), up + (37 / 1.2 * SIN(a + .358))), 0  LINE (over + (37) * COS(a + .358), up + (37 / 1.2 * SIN(a + .358)))-(over + (57) * COS(a + .228), up + (57 / 1.2 * SIN(a + .228))), 0  LINE (over + (40) * COS(a - .148), up + (40 / 1.2 * SIN(a - .148)))-(over + (35) * COS(a - .168), up + (35 / 1.2 * SIN(a - .168))), 0  LINE (over + (35) * COS(a - .168), up + (35 / 1.2 * SIN(a - .168)))-(over + (37) * COS(a - .358), up + (37 / 1.2 * SIN(a - .358))), 0  LINE (over + (37) * COS(a - .358), up + (37 / 1.2 * SIN(a - .358)))-(over + (57) * COS(a - .228), up + (57 / 1.2 * SIN(a - .228))), 0  a = .0104 * b - 14.11: up = ((row(i))) - u: over = ((col(i)))  LINE (over + (65) * COS(a + .104), up + (65 / 1.2 * SIN(a + .104)))-(over + (68) * COS(a + .312), up + (68 / 1.2 * SIN(a + .312))), 15  LINE (over + (68) * COS(a + .312), up + (68 / 1.2 * SIN(a + .312)))-(over + (87) * COS(a + .238), up + (87 / 1.2 * SIN(a + .238))), 15  LINE (over + (87) * COS(a + .238), up + (87 / 1.2 * SIN(a + .238)))-(over + (84) * COS(a + .078), up + (84 / 1.2 * SIN(a + .078))), 15  LINE (over + (84) * COS(a + .078), up + (84 / 1.2 * SIN(a + .078)))-(over + (65) * COS(a + .104), up + (65 / 1.2 * SIN(a + .104))), 15  LINE (over + (65) * COS(a - .104), up + (65 / 1.2 * SIN(a - .104)))-(over + (68) * COS(a - .312), up + (68 / 1.2 * SIN(a - .312))), 15  LINE (over + (68) * COS(a - .312), up + (68 / 1.2 * SIN(a - .312)))-(over + (86) * COS(a - .248), up + (86 / 1.2 * SIN(a - .248))), 15  LINE (over + (86) * COS(a - .248), up + (86 / 1.2 * SIN(a - .248)))-(over + (84) * COS(a - .088), up + (84 / 1.2 * SIN(a - .088))), 15  LINE (over + (84) * COS(a - .088), up + (84 / 1.2 * SIN(a - .088)))-(over + (65) * COS(a - .104), up + (65 / 1.2 * SIN(a - .104))), 15  LINE (over + (75) * COS(a + .097), up + (75 / 1.2 * SIN(a + .097)))-(over + (75) * COS(a - .102), up + (75 / 1.2 * SIN(a - .102))), 15  LINE (over + (66.5) * COS(a + .208), up + (66.5 / 1.2 * SIN(a + .208)))-(over + (40) * COS(a + .208), up + (40 / 1.2 * SIN(a + .208))), 15  LINE (over + (66.5) * COS(a - .208), up + (66.5 / 1.2 * SIN(a - .208)))-(over + (40) * COS(a - .208), up + (40 / 1.2 * SIN(a - .208))), 15  LINE (over + (40) * COS(a + .208), up + (40 / 1.2 * SIN(a + .208)))-(over + (40) * COS(a - .208), up + (40 / 1.2 * SIN(a - .208))), 15  LINE (over + (55) * COS(a + .097), up + (55 / 1.2 * SIN(a + .097)))-(over + (55) * COS(a - .097), up + (55 / 1.2 * SIN(a - .097))), 15  LINE (over + (45) * COS(a + .097), up + (45 / 1.2 * SIN(a + .097)))-(over + (45) * COS(a - .097), up + (45 / 1.2 * SIN(a - .097))), 15  LINE (over + (55) * COS(a + .097), up + (55 / 1.2 * SIN(a + .097)))-(over + (45) * COS(a + .097), up + (45 / 1.2 * SIN(a + .097))), 15  LINE (over + (55) * COS(a - .097), up + (55 / 1.2 * SIN(a - .097)))-(over + (45) * COS(a - .097), up + (45 / 1.2 * SIN(a - .097))), 15'  PAINT (over + (50) * COS(a - .01), up + (50 / 1.2 * SIN(a - .01))), 15  LINE (over + (40) * COS(a + .148), up + (40 / 1.2 * SIN(a + .148)))-(over + (35) * COS(a + .168), up + (35 / 1.2 * SIN(a + .168))), 15  LINE (over + (35) * COS(a + .168), up + (35 / 1.2 * SIN(a + .168)))-(over + (37) * COS(a + .358), up + (37 / 1.2 * SIN(a + .358))), 15  LINE (over + (37) * COS(a + .358), up + (37 / 1.2 * SIN(a + .358)))-(over + (57) * COS(a + .228), up + (57 / 1.2 * SIN(a + .228))), 15  LINE (over + (40) * COS(a - .148), up + (40 / 1.2 * SIN(a - .148)))-(over + (35) * COS(a - .168), up + (35 / 1.2 * SIN(a - .168))), 15  LINE (over + (35) * COS(a - .168), up + (35 / 1.2 * SIN(a - .168)))-(over + (37) * COS(a - .358), up + (37 / 1.2 * SIN(a - .358))), 15  LINE (over + (37) * COS(a - .358), up + (37 / 1.2 * SIN(a - .358)))-(over + (57) * COS(a - .228), up + (57 / 1.2 * SIN(a - .228))), 15   key$ = INKEY$  SELECT CASE key$   CASE CHR$(0) + "H"    IF speed > 0 THEN speed = speed - 50   CASE CHR$(0) + "P"    IF speed < 2000 THEN speed = speed + 50   CASE CHR$(0) + "M"     b = b - 25   CASE CHR$(0) + "K"     b = b + 25  END SELECT END IFNEXT iDATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100,159,99,158,100DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106Steve Nunnally                 ACID FLUX: SCREEN SAVER        santa@tir.com                  07-25-99 (12:02)       QB, QBasic, PDS        541  12496    ACIDFLUX.BAS''  Acid Flux''     by Steve Nunnally, Acid Works Software'''  This is a cool screen saver that uses the palette command to'  do nifty things. Press <Enter> to quit.''' NOTE: there is a variable below called secs%, change it for the amount'       of time between each design to change'DECLARE SUB NewPalette ()DECLARE SUB NewPattern ()DECLARE SUB TitleScreen ()DECLARE SUB Center (strctr$)DECLARE SUB FigureLast ()DECLARE SUB Fadeout ()DECLARE SUB Fadein ()DECLARE SUB SetItUp ()DECLARE SUB Pat1 ()DECLARE SUB Pat2 ()DECLARE SUB Pat3 ()DECLARE SUB Pat4 ()DECLARE SUB Pat5 ()DECLARE SUB Pat6 ()DECLARE SUB Pat7 ()DECLARE SUB Pat8 ()DECLARE SUB Pat9 ()DECLARE SUB Pat10 ()DECLARE SUB Pat11 ()DECLARE SUB Pat12 ()DECLARE SUB Pat13 ()DECLARE SUB Pat14 ()DECLARE SUB Pat15 ()DECLARE SUB Pat16 ()CONST pi = 3.141592654#DIM SHARED palhold(0 TO 255, 1 TO 3) AS INTEGERDIM SHARED currentpal(1 TO 3) AS INTEGERDIM SHARED palettereach(1 TO 3) AS INTEGERDIM SHARED currentone AS INTEGERRANDOMIZE TIMERDEFINT A-ZCALL TitleScreen'*************************secs% = 10                   'Seconds variable'*************************currentone = 0: totaltime! = 0: timeit! = 0DEF SEG = &HA000SCREEN 13CALL SetItUpDO timeit! = TIMER WAIT &H3DA, 8 FOR x = 0 TO 253	OUT &H3C7, x + 1: r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9)	OUT &H3C8, x: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b NEXT x CALL FigureLast totaltime! = totaltime! + (TIMER - timeit!) IF totaltime! > secs THEN	CALL Fadeout	CALL NewPattern: totaltime! = 0	CALL Fadein END IF j$ = INKEY$LOOP WHILE j$ <> CHR$(13)ENDSUB Center (strctr$) strlen = LEN(strctr$) LOCATE , (80 - strlen) / 2 PRINT strctr$END SUBSUB Fadein FOR a = 1 TO 62	FOR c = 0 TO 255	 OUT &H3C7, c: r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9)	 IF r < palhold(c, 1) THEN r = r + 1	 IF g < palhold(c, 2) THEN g = g + 1	 IF b < palhold(c, 3) THEN b = b + 1	 OUT &H3C8, c: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b	NEXT c	WAIT &H3DA, 8 NEXT aEND SUBSUB Fadeout FOR i = 0 TO 255	OUT &H3C7, i: r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9)	palhold(i, 1) = r	palhold(i, 2) = g	palhold(i, 3) = b NEXT i FOR a = 1 TO 62	FOR c = 0 TO 255	 OUT &H3C7, c: r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9)	 IF r > 0 THEN r = r - 1	 IF g > 0 THEN g = g - 1	 IF b > 0 THEN b = b - 1	 OUT &H3C8, c: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b	NEXT c	WAIT &H3DA, 8 NEXT aEND SUBSUB FigureLast IF currentpal(1) < palettereach(1) THEN currentpal(1) = currentpal(1) + 1 IF currentpal(1) > palettereach(1) THEN currentpal(1) = currentpal(1) - 1 IF currentpal(2) < palettereach(2) THEN currentpal(2) = currentpal(2) + 1 IF currentpal(2) > palettereach(2) THEN currentpal(2) = currentpal(2) - 1 IF currentpal(3) < palettereach(3) THEN currentpal(3) = currentpal(3) + 1 IF currentpal(3) > palettereach(3) THEN currentpal(3) = currentpal(3) - 1 r = currentpal(1) g = currentpal(2) b = currentpal(3) OUT &H3C8, 254: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b OUT &H3C8, 255: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b IF currentpal(1) = palettereach(1) THEN	IF currentpal(2) = palettereach(2) THEN	 IF currentpal(3) = palettereach(3) THEN CALL NewPalette	END IF END IFEND SUBSUB NewPalette howmany = INT(RND * 3) + 1 FOR i = 1 TO howmany	palettereach(i) = INT(RND * 62) NEXT iEND SUBSUB NewPattern currentone = currentone + 1 IF currentone > 16 THEN currentone = 1 whichone = currentone	IF whichone = 1 THEN CALL Pat1	IF whichone = 2 THEN CALL Pat2	IF whichone = 3 THEN CALL Pat3	IF whichone = 4 THEN CALL Pat4	IF whichone = 5 THEN CALL Pat5	IF whichone = 6 THEN CALL Pat6	IF whichone = 7 THEN CALL Pat7	IF whichone = 8 THEN CALL Pat8	IF whichone = 9 THEN CALL Pat9 IF whichone = 10 THEN CALL Pat10 IF whichone = 11 THEN CALL Pat11 IF whichone = 12 THEN CALL Pat12 IF whichone = 13 THEN CALL Pat13 IF whichone = 14 THEN CALL Pat14 IF whichone = 15 THEN CALL Pat15 IF whichone = 16 THEN CALL Pat16END SUBSUB Pat1 FOR a = 0 TO 200	CIRCLE (160, 100), a, a	CIRCLE (161, 100), a, a	CIRCLE (159, 100), a, a NEXT a FOR a = 19 TO 320 STEP 40	FOR b = 10 TO 200 STEP 30	 startwhere = INT(RND * 223) + 1	 FOR c = 0 TO 19		CIRCLE (a, b), c, startwhere + c		CIRCLE (a + 1, b), c, startwhere + c		CIRCLE (a - 1, b), c, startwhere + c	 NEXT c	NEXT b NEXT aEND SUBSUB Pat10 FOR y = 0 TO 199	q = (TAN(y * 3.1347197554#) * 50)	FOR x = 0 TO 319	 POKE z& + x, (COS(x * .51047197554#) * 50) - q + 100	NEXT x	z& = z& + 320& NEXT yEND SUBSUB Pat11 FOR x = 0 TO 319	q = (COS(x * .05847197554#) * 50)	z& = 0	FOR y = 0 TO 199	 POKE z& + x, (TAN(y * 3.51047197554#) * 50) - q + 100	 z& = z& + 320&	NEXT y NEXT xEND SUBSUB Pat12 FOR a = 0 TO 200	CIRCLE (160, 100), a, a	CIRCLE (161, 100), a, a	CIRCLE (159, 100), a, a NEXT a c = 1: d = 1 FOR a = -10 TO 210 STEP 7	FOR b = -10 TO 330 STEP 7	 CIRCLE (b, a), 15, c, , , .8	 IF d = 1 THEN c = c + 2	 IF d = 2 THEN c = c - 2	 IF c < 3 THEN d = 1	 IF c > 252 THEN d = 2	NEXT b NEXT aEND SUBSUB Pat13 f = 0 FOR a = 0 TO 319 STEP 40	FOR b = 0 TO 199 STEP 20	 f = f + 50: e = 0	 IF f = 250 THEN f = 0	 FOR c = 0 TO 49		e = e + 1		LINE (a, b)-(a + c, b + 20), f + e NEXT c: NEXT b: NEXT a f = 0 FOR a = 0 TO 319 STEP 40	FOR b = 0 TO 199 STEP 20	 f = f + 50: e = 0	 IF f = 250 THEN f = 0	 FOR c = 0 TO 49		e = e + 1		LINE (a, b)-(a + 40, b + (c / 2)), f + e NEXT c: NEXT b: NEXT aEND SUBSUB Pat14 sr = 16: r = 16: n = 1 FOR a = 1 TO 4	FOR y = 0 TO 199 STEP r	 FOR x = 0 TO 319 STEP r		rn = RND * (2 * n) - n		Col = (POINT(x, y) + POINT(x + r, y + r) + POINT(x, y + r) + POINT(x + r, y)) / 4 + rn		IF y + r >= 200 THEN Col = POINT(x, 0) + rn		IF x + r >= 320 THEN Col = POINT(0, y) + rn		IF r = sr THEN Col = RND * (2 * 254) - 254		IF Col < 1 THEN Col = 1		IF Col > 254 THEN Col = 254		IF r > 1 THEN LINE (x, y)-(x + r, y + r), Col, BF		IF r <= 1 THEN PSET (x, y), Col	 NEXT x	NEXT y	r = r / 2 NEXT aEND SUBSUB Pat15 FOR a = 0 TO 200	CIRCLE (160, 100), a, a	CIRCLE (161, 100), a, a	CIRCLE (159, 100), a, a NEXT a FOR r = 0 TO 150 STEP 3	CIRCLE (160, 100), r, 0	CIRCLE (160, 17 + r), r, r + 1	CIRCLE (160, 183 - r), r, r + 2	CIRCLE (64 + r, 100), r, r + 3	CIRCLE (256 - r, 100), r, r + 4	o1 = 160 - (5000 ^ .5) + (.5 ^ .5) * (r)	o2 = 160 + (5000 ^ .5) - (.5 ^ .5) * (r)	u1 = 100 + (5000 ^ .5) - (.5 ^ .5) * (r)	u2 = 100 - (5000 ^ .5) + (.5 ^ .5) * (r)	CIRCLE (o1, u1), r, r + 5	CIRCLE (o2, u1), r, r + 6	CIRCLE (o1, u2), r, r + 7	CIRCLE (o2, u2), r, r + 8 NEXT rEND SUBSUB Pat16a1 = 40: b1 = 30: a2 = 240: b2 = 145k = 1: x = 1: e = 1: f = 1: g = 1: h = 1max = INT(RND * 250) + 75FOR j = 1 TO 5 FOR i = 1 TO max	a3 = 320 - a1: a4 = 320 - a2: b3 = 200 - b1: b4 = 200 - b2	LINE (a1, b1)-(a2, b2), k: LINE (a1, b1 + 1)-(a2, b2 + 1), k	LINE (a1, b1 - 1)-(a2, b2 - 1), k: LINE (a3, b1)-(a4, b2), k	LINE (a3, b1 + 1)-(a4, b2 + 1), k: LINE (a3, b1 - 1)-(a4, b2 - 1), k	LINE (a1, b3)-(a2, b4), k: LINE (a1, b3 + 1)-(a2, b4 + 1), k	LINE (a1, b3 - 1)-(a2, b4 - 1), k: LINE (a3, b3)-(a4, b4), k	LINE (a3, b3 + 1)-(a4, b4 + 1), k: LINE (a3, b3 - 1)-(a4, b4 - 1), k	a1 = a1 + g: b1 = b1 + e: a2 = a2 - h: b2 = b2 - f	IF a1 > 320 THEN g = -1	IF a1 < 6 THEN g = 1	IF a2 > 320 THEN h = -1	IF a2 < 6 THEN h = 1	IF b1 > 200 THEN e = -1	IF b1 < 6 THEN e = 1	IF b2 > 200 THEN f = -1	IF b2 < 6 THEN f = 1	k = k + x	IF k = 255 THEN x = -1	IF k = 1 THEN x = 1 NEXT i a1 = INT(RND * 320): b1 = INT(RND * 200) a2 = INT(RND * 320): b2 = INT(RND * 200) max = INT(RND * 250) + 75 IF j > 5 THEN e = 1: f = 1: g = -1: h = 1 IF j > 10 THEN e = 1: f = 1: g = -1: h = -1 IF j > 15 THEN e = -1: f = 1: g = 1: h = -1 IF j > 20 THEN e = 1: f = 1: g = -1: h = -1NEXT jEND SUBSUB Pat2 u! = 190: t! = 1.5 FOR i = 1 TO 254	u! = u! - t!	t! = t! - .009	CIRCLE (160, u!), i, i, , , .5	CIRCLE (160, u! + 1), i, i, , , .5	CIRCLE (160, u! - 1), i, i, , , .5 NEXT iEND SUBSUB Pat3 c = 30: u = 100: t! = 1.5 FOR i = 1 TO 260	c = c + 10	IF c > 320 THEN c = 30	t! = t! - .009	u! = u! - t!	CIRCLE (160, u), i, c, , , .5	CIRCLE (160, u + 1), i, c, , , .5	CIRCLE (160, u + 2), i, c, , , .5 NEXT iEND SUBSUB Pat4 f = 0 FOR a = 0 TO 319 STEP 40	FOR b = 0 TO 199 STEP 25	 f = f + 50	 IF f = 250 THEN f = 0	 FOR c = 0 TO 39 STEP 4		FOR d = 0 TO 24 STEP 5		 e = INT(RND * 20) + 1		 LINE (a + c, b + d)-((a + c) + 3, (b + d) + 4), f + e, BF		NEXT d	 NEXT c	NEXT b NEXT aEND SUBSUB Pat5 FOR a = 0 TO 200	CIRCLE (160, 100), a, a: CIRCLE (161, 100), a, a: CIRCLE (159, 100), a, a NEXT a FOR e = 1 TO 5	IF e = 1 THEN x = 160: y = 100: m = 200: l! = 1	IF e = 2 THEN x = 80: y = 50: m = 60: l! = 1	IF e = 3 THEN x = 80: y = 150: m = 60: l! = 91	IF e = 4 THEN x = 240: y = 50: m = 60: l! = 181	IF e = 5 THEN x = 240: y = 150: m = 60: l! = 241	FOR a = 1 TO 254	 LINE (x + m * (COS(l! * (pi / 180))), y + (m / 1.2 * SIN(l! * (pi / 180))))-(x, y), a	 IF e = 1 THEN l! = l! + 1.417323 ELSE l! = l! - 1.417323	NEXT a NEXT eEND SUBSUB Pat6 FOR y = 0 TO 199	q = (SIN(y * .1047197554#) * 50)	FOR x = 0 TO 319	 POKE z& + x, (SIN(x * .1047197554#) * 50) - q + 127	NEXT x	z& = z& + 320& NEXT yEND SUBSUB Pat7 c = 1: b = 1: d = -5 FOR e = 1 TO 2	FOR a = -5 TO 205	 LINE (d, a)-(160, 100), b	 LINE (d - 1, a)-(160, 100), b	 LINE (d - 2, a)-(160, 100), b	 IF c = 1 THEN b = b + 1 ELSE b = b - 1	 IF a = 100 THEN c = 0	NEXT a	c = 1: b = 1: d = 327 NEXT e c = 1: b = 85: d = 200 FOR e = 1 TO 2	FOR a = 0 TO 319	 LINE (a, d)-(160, 100), b	 LINE (a, d - 1)-(160, 100), b	 LINE (a, d - 2)-(160, 100), b	 IF c = 1 THEN b = b + 1 ELSE b = b - 1	 IF a = 160 THEN c = 0	NEXT a	c = 1: b = 85: d = -1 NEXT eEND SUBSUB Pat8 FOR y = 0 TO 199	q = (TAN(y * 4.1047197554#) * 50)	FOR x = 0 TO 319	 POKE z& + x, (SIN(x * .51047197554#) * 50) - q + 100	NEXT x	z& = z& + 320& NEXT yEND SUBSUB Pat9 FOR i = 0 TO 160	LINE (160 - i, 100 - (i / 1.2))-(160 + i, 100 + (i / 1.2)), i, B NEXT iEND SUBSUB SetItUp OUT &H3C8, 255: OUT &H3C9, 50: OUT &H3C9, 50: OUT &H3C9, 50 COLOR 255: LOCATE 10, 9: PRINT "Loading, Please Wait...." currentpal(1) = INT(RND * 62) + 30 currentpal(2) = INT(RND * 62) + 30 currentpal(3) = INT(RND * 62) + 30 FOR a = 1 TO 254: FOR x = 1 TO 253	OUT &H3C7, x + 1: r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9)	OUT &H3C8, x: OUT &H3C9, r: OUT &H3C9, g: OUT &H3C9, b	NEXT x	CALL FigureLast NEXT a CALL NewPalette CALL Fadeout CALL NewPattern CALL Fadein END SUBSUB TitleScreen SCREEN 0 CLS PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" COLOR 4: Center "Thanks for trying Acid Flux Screen Saver" COLOR 13: Center "by" COLOR 3: Center "Acid Works Software" COLOR 0: Center "" COLOR 10: Center "Press Any Key to Continue" 'COLOR 7: Center "Use the following things for the command line:" 'COLOR 0: Center "" 'COLOR 5: Center "acidflux [t(#)] [s(#)] [r] [h or ?]" 'COLOR 0: Center "" 'COLOR 6: Center "t#  Where the number following is the number of seconds   " 'COLOR 6: Center "    between each different design.                        " 'COLOR 6: Center "" 'COLOR 6: Center "s#  Where the number following is used to tell the program" 'COLOR 6: Center "    which design (1-16) to start on.                      " 'COLOR 6: Center "" 'COLOR 6: Center "r   Is used to tell the program you want the order of the " 'COLOR 6: Center "    designs to be random." 'COLOR 6: Center "" 'COLOR 6: Center "?   Gets you this message                                 " 'COLOR 6: Center "" 'COLOR 6: Center "" 'COLOR 11: Center "example usage:" 'COLOR 6: Center "" 'COLOR 10: Center "acidflux t5 s3" SLEEP aaa$ = INKEY$ bbb$ = INKEY$ ccc$ = INKEY$ ddd$ = INKEY$ eee$ = INKEY$ fff$ = INKEY$END SUBMarc Santa                     FLOATING/ROTATING LINES        santa@tir.com                  07-25-99 (12:02)       QB, QBasic, PDS        61   1824     FLINES.BAS  CLSDODOSCREEN 13WINDOW (-25, -8)-(25, 25)c = c + 1COLOR 0        PRINT c        IF c < 45 THEN                LINE (0, 0)-(9, 9), 0        ELSE                FOR r = 0 TO 8.3 STEP .1                COLOR 0                        PRINT r                        y = r * COS(r)                        x = r * SIN(r)                                LINE (-x, y)-(x, -y), r * 10 + 16                                LINE (-x - 15, y)-(x - 15, -y), r * 10 + 16                                LINE (-x + 15, y)-(x + 15, -y), r * 10 + 16                NEXT r        END IFLOOP UNTIL c > 44FOR u = 8.3 TO 0 STEP -.1                a = u * COS(u)                B = u * SIN(u)COLOR 0PRINT u                LINE (-B, a)-(B, -a), u * 10 + 16                LINE (-B - 15, a)-(B - 15, -a), u * 10 + 16                LINE (-B + 15, a)-(B + 15, -a), u * 10 + 16NEXT uDOSCREEN 13WINDOW (-25, -8)-(25, 25)c = c + 1COLOR 0        PRINT c        IF c < 45 THEN                LINE (0, 0)-(9, 9), 0        ELSE                FOR r = 0 TO 8.3 STEP .1                COLOR 0                        PRINT r                        y = r * COS(r)                        x = r * SIN(r)                                LINE (-x, y)-(x, -y), r * 10 + 16                                LINE (-x - 15, y)-(x - 15, -y), r * 10 + 16                                LINE (-x + 15, y)-(x + 15, -y), r * 10 + 16                NEXT r        END IFLOOP UNTIL c > 44COLOR 15FOR u = 8.3 TO 0 STEP -.1                a = u * COS(u)                B = u * SIN(u)                LINE (-B, a)-(B, -a), u * 10 + 16                LINE (-B - 15, a)-(B - 15, -a), u * 10 + 16                LINE (-B + 15, a)-(B + 15, -a), u * 10 + 16NEXT uCLSLOOPAlexander Schrab               SNUGGLE OS ALPHA!              santa@tir.com                  07-25-99 (12:02)       QB, QBasic, PDS        1145 32995    SNUGGLE.BAS 'SNUGGLE OS ALPHA!'Copyright 1999 Alexander Schrab'Thanks to:'UPA for help and ideas'Mark K. Kim for the Vmouse routine (Couldn't have done it without you!!)DECLARE FUNCTION CheckIfWinBtn% (who%)DECLARE FUNCTION CheckIfWinBttn% (who%)DECLARE SUB mouse.setgcr (data$)DECLARE SUB refresh ()DECLARE SUB StartXYDrag (what%, who%)DECLARE FUNCTION CheckIfBorder% (what%, who%)DECLARE SUB StartXDrag (who%)DECLARE SUB WinPutTop (who%)DECLARE FUNCTION CheckIfWinArea% (who%)DECLARE FUNCTION CheckWinArea% (who%)DECLARE SUB WinMakeHighest (num%)DECLARE SUB WinUnDrw (who%)DECLARE SUB StartDrag (who%)DECLARE SUB mouse.getpos (x%, y%)DECLARE FUNCTION CheckIfTitle% (who%)DECLARE SUB NewWin (text$, x%, y%, w%, h%)DECLARE SUB DrwBtn (x%, y%, w%, h%, up%)DECLARE SUB GetStats (who%, text$, x%, y%, w%, h%, state%)DECLARE SUB WinDrwMng (who%)DECLARE SUB WinDrw (text$, x%, y%, w%, h%, state%, btnA%, btnB%, ctnC%)DECLARE SUB MaxButton (x%, y%)DECLARE SUB MinButton (x%, y%)DECLARE SUB QuitButton (x%, y%)DECLARE SUB cout (text$, sx%, sy%, colo%, Lengh%, break%)DECLARE SUB Init ()DECLARE SUB CoutSetup ()DECLARE FUNCTION StringFind% (Strng$, start%, what$)DECLARE SUB mouse.show ()DECLARE SUB mouse.hide ()DECLARE FUNCTION mouse.enable% ()DECLARE FUNCTION mouse.getbutton% ()DECLARE FUNCTION mouse.loadgcr$ (filename$)DECLARE FUNCTION mouse.loadTCR$ (filename$)DECLARE FUNCTION shift.getstate% ()DECLARE SUB WinDrwBrd (x1%, y1%, x2%, y2%)DECLARE SUB WinDrwTtl (x1%, y1%, x2%, y2%)'***************CONST LB = &H1      'constant for left buttonCONST RB = &H2      'constant for right buttonCONST CB = &H4      'constant for center buttonCONST DC = &H8      'constant for double click (reserved for next release)CONST shift = &H3CONST CTRL = &H4CONST ALT = &H8'***************CONST TtlHeight = 18DIM SHARED font(100, 8, 16) AS INTEGERDIM SHARED font2(155, 8, 16) AS INTEGERDIM SHARED WNMax AS INTEGERWNMax = 10DIM SHARED WNumber AS INTEGERDIM SHARED WGData(WNMax, 6) AS INTEGERDIM SHARED WTData(WNMax) AS STRINGDIM SHARED WOrder(WNMax) AS INTEGERDIM SHARED move AS STRINGmove = mouse.loadgcr("move")DIM SHARED pointer AS STRINGpointer = mouse.loadgcr("pointer")DIM SHARED vertical AS STRINGvertical = mouse.loadgcr("vertical")DIM SHARED horizont AS STRINGhorizont = mouse.loadgcr("horizont")DIM SHARED diagonal AS STRINGdiagonal = mouse.loadgcr("diagonal")DIM SHARED SnuggleFolder AS STRING'SnuggleFolder = "c:\develop\qbasic\snuggle\"'CHDIR (SnuggleFolder)DEFINT A-ZSCREEN 12enabled% = mouse.enablemouse.setgcr pointermouse.showInitNewWin "Alfa", 90, 90, 300, 70NewWin "Beta", 100, 100, 300, 70NewWin "Ceta", 110, 110, 300, 70refreshDOIF mouse.getbutton = LB THENFOR Cyc = 1 TO WNumberCW = WOrder(Cyc)GetStats CW, crap$, wx, wy, ww, wh, wstate        IF CheckIfWinBtn(CW) > 0 THEN                LOCATE 1, 1                DO: LOOP WHILE mouse.getbutton = LB                WinPutTop CW                SELECT CASE CheckIfWinBtn(CW)                CASE 1                CASE 2                mouse.hide                        WinUnDrw CW                        IF WGData(CW, 5) <> 2 THEN WGData(CW, 5) = 2 ELSE WGData(CW, 5) = 1                        WinDrwMng CW                mouse.show                CASE 3                mouse.hide                        WinUnDrw CW                        IF WGData(CW, 5) <> 0 THEN WGData(CW, 5) = 0 ELSE WGData(CW, 5) = 1                        WinDrwMng CW                mouse.show                CASE ELSE                END SELECT                EXIT FOR        END IF        IF CheckIfTitle(CW) THEN                WinPutTop CW                IF wstate <> 2 THEN StartDrag CW                EXIT FOR        END IF        Ext = 0        FOR temp = 3 TO 1 STEP -1        IF CheckIfBorder(temp, CW) THEN                WinPutTop CW                IF wstate <> 2 THEN StartXYDrag temp, CW                Ext = 1        END IF        NEXT        IF Ext = 1 THEN EXIT FOR        IF CheckIfWinArea(CW) THEN                DO: LOOP WHILE mouse.getbutton = LB                WinPutTop CW                EXIT FOR        END IFNEXTEND IFIF UCASE$(INKEY$) = "R" THEN refreshLOOP UNTIL UCASE$(INKEY$) = "Q"FUNCTION CheckIfBorder (what, who)GetStats who, crap$, wx, wy, ww, wh, wstatemouse.getpos x, ySELECT CASE whatCASE 1MinX = wx + ww - 3MaxX = wx + wwMinY = wy + 19MaxY = wy + whCASE 2MinX = wxMaxX = wx + wwMinY = wy + wh - 3MaxY = wy + whCASE 3MinX = wx + ww - 3MaxX = wx + wwMinY = wy + wh - 3MaxY = wy + whCASE ELSEEND SELECTIF x >= MinX AND x <= MaxX AND y >= MinY AND y <= MaxY THENCheckIfBorder = 1END IFEND FUNCTIONFUNCTION CheckIfTitle (who)mouse.getpos mx, myGetStats who, crap$, x, y, w, h, stateIF mx >= x AND mx <= x + w AND my >= y AND my <= y + TtlHeight THEN CheckIfTitle = 1END FUNCTIONFUNCTION CheckIfWinArea (who)mouse.getpos mx, myGetStats who, crap$, x, y, w, h, stateIF state = 0 THENCheckIfWinArea = 0ELSEIF mx >= x AND mx <= x + w AND my >= y AND my <= y + h THEN CheckIfWinArea = 1END IFEND FUNCTIONFUNCTION CheckIfWinBtn (who)mouse.getpos mx, myGetStats who, crap$, x, y, w, h, stateFOR CW = 1 TO 3MinX = x + w - TtlHeight * CWMinY = y + 3MaxX = MinX + TtlHeight - 6MaxY = MinY + TtlHeight - 6IF mx >= MinX AND mx <= MaxX AND my >= MinY AND my <= MaxY THEN        CheckIfWinBtn = CW        EXIT FOREND IFNEXTEND FUNCTIONSUB cout (text$, sx, sy, colo, Lengh, break)DIM charlengh AS INTEGERcharlengh = (Lengh - (Lengh MOD 8)) / 8RowChar = 0FOR Char = 1 TO LEN(text$)        RowChar = RowChar + 1        IF RowChar > charlengh THEN        IF break = 1 THEN sy = sy + 16: RowChar = 1 ELSE GOTO stopthis        END IF        num = ASC(MID$(text$, Char, 1))        FOR y = 1 TO 16                FOR x = 1 TO 8                        IF num > 100 THEN col = font2(num - 100, x, y) ELSE col = font(num, x, y)                        IF col = 1 THEN PSET (sx + (x - 1) + (RowChar - 1) * 8, sy + y), colo                NEXT        NEXTNEXTstopthis:END SUBSUB CoutSetupCOLOR 1OUT &H3C8, 1OUT &H3C9, 0OUT &H3C9, 0OUT &H3C9, 0FOR a = 15 TO 255LOCATE 1, 1PRINT CHR$(a)FOR y = 0 TO 15FOR x = 0 TO 7pnt = POINT(x, y)IF pnt <> 0 THEN pnt = 1IF a <= 100 THENfont(a, x + 1, y + 1) = pntELSEfont2(a - 100, x + 1, y + 1) = pntEND IFNEXTNEXTNEXTEND SUBSUB DrwBtn (x, y, w, h, up)IF up = 1 THEN Col1 = 1: Col2 = 3 ELSE Col2 = 1: Col1 = 3LINE (x, y)-(x + w, y + h), 2, BFLINE (x, y)-(x, y + h - 1), Col2LINE (x, y)-(x + h - 1, y), Col2LINE (x + w, y + h)-(x + 1, y + h), Col1LINE (x + w, y + h)-(x + w, y + 1), Col1END SUBSUB GetStats (who, text$, x, y, w, h, state)text$ = WTData(who)x = WGData(who, 1)y = WGData(who, 2)        IF WGData(who, 3) < 90 THEN WGData(who, 3) = 90        IF WGData(who, 4) < TtlHeight + 6 THEN WGData(who, 4) = TtlHeight + 6w = WGData(who, 3)h = WGData(who, 4)state = WGData(who, 5)IF state = 0 THEN h = TtlHeightIF state = 1 THENEND IFIF state = 2 THEN w = 640: h = 480: x = 0: y = 0END SUBSUB InitCoutSetupOUT &H3C8, 0OUT &H3C9, 0OUT &H3C9, 0OUT &H3C9, 0OUT &H3C8, 1OUT &H3C9, 22OUT &H3C9, 22OUT &H3C9, 22OUT &H3C8, 2OUT &H3C9, 32OUT &H3C9, 32OUT &H3C9, 32OUT &H3C8, 3OUT &H3C9, 42OUT &H3C9, 42OUT &H3C9, 42OUT &H3C8, 4OUT &H3C9, 0OUT &H3C9, 40OUT &H3C9, 40OUT &H3C8, 5OUT &H3C9, 0OUT &H3C9, 0OUT &H3C9, 22OUT &H3C8, 6OUT &H3C9, 0OUT &H3C9, 0OUT &H3C9, 32OUT &H3C8, 7OUT &H3C9, 0OUT &H3C9, 0OUT &H3C9, 42END SUBSUB MaxButton (x, y)LINE (x + 2, y + 4)-(x + 10, y + 4), 1LINE (x + 3, y + 3)-(x + 9, y + 3), 6LINE (x + 2, y + 2)-(x + 10, y + 10), 1, BLINE (x + 3, y + 5)-(x + 9, y + 9), 15, BFEND SUBSUB MinButton (x, y)LINE (x + 3, y + 6)-(x + 9, y + 6), 6LINE (x + 2, y + 5)-(x + 10, y + 7), 1, BEND SUB'Disable mouse.'EXAMPLE:'  enabled% = mouse.enable  'enable mouse'  mouse.show               'show mouse'  a$ = INPUT$(1)           'pause'  mouse.disable            'disable mouseSUB mouse.disable  SHARED mouse.exist AS INTEGER  IF mouse.exist THEN    mouse.hide    mouse.exist = 0  END IFEND SUB'Enable mouse for usage. Must be run before any mouse functions (other than'cursor-loading functions) or none will work.'RETURN:'  -1 (&hFFFF) if mouse found, else 0.'EXAMPLE:'  IF NOT mouse.enable THEN PRINT "No mouse" ELSE PRINT "Mouse found"FUNCTION mouse.enable%  SHARED mouse.exist AS INTEGER  'store machine language data  SHARED mouse.asm$  mouse.asm$ = ""  mouse.asm$ = mouse.asm$ + CHR$(&H55)                            'push bp  mouse.asm$ = mouse.asm$ + CHR$(&H89) + CHR$(&HE5)               'mov  bp, sp  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HE)   'mov  bx, [bp+0e]  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H7)                'mov  ax, [bx]  mouse.asm$ = mouse.asm$ + CHR$(&H50)                            'push ax  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC)   'mov  bx, [bp+0c]  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H7)                'mov  cx, [ax]  mouse.asm$ = mouse.asm$ + CHR$(&H50)                            'push ax  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA)   'mov  bx, [bp+0a]  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&HF)                'mov  cx, [bx]  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8)   'mov  bx, [bp+08]  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H17)               'mov  dx, [bx]'  mouse.asm$ = mouse.asm$ + CHR$(&H1E)                            'push ds'  mouse.asm$ = mouse.asm$ + CHR$(&H7)                             'pop  es  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6)   'mov  bx, [bp+06]  mouse.asm$ = mouse.asm$ + CHR$(&H8E) + CHR$(&H7)                'mov  es, [bx]  mouse.asm$ = mouse.asm$ + CHR$(&H5B)                            'pop  bx  mouse.asm$ = mouse.asm$ + CHR$(&H58)                            'pop  ax  mouse.asm$ = mouse.asm$ + CHR$(&HCD) + CHR$(&H33)               'int  33h  mouse.asm$ = mouse.asm$ + CHR$(&H53)                            'push bx  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HE)   'mov  bx, [bp+0e]  mouse.asm$ = mouse.asm$ + CHR$(&H89) + CHR$(&H7)                'mov  [bx], ax  mouse.asm$ = mouse.asm$ + CHR$(&H58)                            'pop  ax  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC)   'mov  bx, [bp+0c]  mouse.asm$ = mouse.asm$ + CHR$(&H89) + CHR$(&H7)                'mov  [bx], ax  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA)   'mov  bx, [bp+0a]  mouse.asm$ = mouse.asm$ + CHR$(&H89) + CHR$(&HF)                'mov  [bx], cx  mouse.asm$ = mouse.asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8)   'mov  bx, [bp+08]  mouse.asm$ = mouse.asm$ + CHR$(&H89) + CHR$(&H17)               'mov  [bx], dx  mouse.asm$ = mouse.asm$ + CHR$(&H5D)                            'pop  bp  mouse.asm$ = mouse.asm$ + CHR$(&HCA) + CHR$(&H12) + CHR$(&H0)   'retf 12  'initialize and check mouse existance  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  ax% = 0  DEF SEG = mouse.asmseg%  CALL absolute(dummy%, dummy%, dummy%, dummy%, ax%, 0, 0, 0, 0, mouse.asmoff%)  DEF SEG  mouse.exist = ax%  mouse.enable = mouse.existEND FUNCTION'Gets mouse status (coordinates and button status.)'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'INPUT:'* x% = integer variable to store x coordinate'* y% = integer variable to store y coordinate'* buttons% = integer variable to store buttons status where:'  * buttons% becomes LB if left button is pressed'  * buttons% becomes RB if right button is pressed'  * buttons% becomes CB if center buttons is pressed'  * or combination (left button and right button makes buttons% = LB + RB)'    including double clicks (ie - LB + DC).'* LB, RB, and CB are mouse constants found in the main module.'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.get x%, y%, buttons%'    LOCATE 1, 1: PRINT USING "####  ####  ####"; x%; y%; buttons%'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.get (x%, y%, buttons%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H3, bx%, x%, y%, 0, mouse.asmoff%)    DEF SEG  END IF  buttons% = 0  IF bx% AND &H1 THEN buttons% = buttons% OR LB  IF bx% AND &H2 THEN buttons% = buttons% OR RB  IF bx% AND &H4 THEN buttons% = buttons% OR CBEND SUB'Gets the status of mouse buttons.'COMMENT:'* Using mouse.get() function is recommended instead when using both'  mouse.getbutton() and mouse.getpos() functions.'RETURN:'* An integer value:'  * LB for Left Button'  * RB for Right Button'  * CB for Center Button (if any)'  * or combination (left button and right button makes buttons% = LB + RB)'    including double clicks (ie - LB + DC).'* LB, RB, and CB are mouse constants found in the main module.'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    buttons% = mouse.getbutton'    LOCATE 1, 1: PRINT USING "####"; buttons%'  LOOP WHILE INKEY$ = ""'  mouse.disableFUNCTION mouse.getbutton%  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H3, bx%, 0, 0, 0, mouse.asmoff%)       DEF SEG  END IF  ret% = 0   IF bx% AND &H1 THEN ret% = ret% OR LB  IF bx% AND &H2 THEN ret% = ret% OR RB  IF bx% AND &H4 THEN ret% = ret% OR CB  mouse.getbutton% = ret%END FUNCTION'Gets the last coordinate where a mouse button was pressed'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'INPUT:'* mouse.constant% is a mouse constant of LB (left button), RB (right'  button), or CB (center button) for button press check. No combination'  allowed. Any values other than LB, RB, and CB will default to LB.'* x% and y% are the variables to store x and y corrdinates where the mouse'  button was pressed.'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.getlastdown LB, x%, y%'    LOCATE 1, 1: PRINT USING "####  ####"; x%; y%'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.getlastdown (mouse.constant%, x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    SELECT CASE mouse.constant%      CASE LB: Button% = 0      CASE RB: Button% = 1      CASE CB: Button% = 2      CASE ELSE: Button% = 0    END SELECT    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H5, Button%, cx%, dx%, 0, mouse.asmoff%)    DEF SEG    x% = cx%    y% = dx%  END IFEND SUB'Gets the last coordinate where a mouse button was released'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'INPUT:'* mouse.constant% is a mouse constant of LB (left button), RB (right'  button), or CB (center button) for button release check. No combination'  allowed.'* x% and y% are the variables to store x and y corrdinates where the mouse'  button was released.'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.getlastup LB, x%, y%'    LOCATE 1, 1: PRINT USING "####  ####"; x%; y%'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.getlastup (mouse.constant%, x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    SELECT CASE mouse.constant%      CASE LB: Button% = 0      CASE RB: Button% = 1      CASE CB: Button% = 2      CASE ELSE: Button% = 0    END SELECT    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H6, Button%, cx%, dx%, 0, mouse.asmoff%)    DEF SEG    x% = cx%    y% = dx%  END IFEND SUB'Gets the movement of the mouse since last call'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'INPUT:'* x% and y% are variables to store the horizontal and vertical movements,'  respectively.'* Right and Down are positives, Left and Up are negatives'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.getmovement x%, y%'    LOCATE 1, 1: PRINT USING "####  ####"; x%; y%'    SLEEP 1'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.getmovement (x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &HB, 0, cx%, dx%, 0, mouse.asmoff%)    DEF SEG    x% = cx%    y% = dx%  END IFEND SUB'Gets mouse coordinates.'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'COMMENT:'* Using mouse.get() function is recommended instead when using both'  mouse.getpos() and mouse.getbutton() functions.'INPUT:'* x% = integer variable to store x coordinate'* y% = integer variable to store y coordinate'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.getpos x%, y%'    LOCATE 1, 1: PRINT USING "####  ####"; x%; y%'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.getpos (x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H3, 0, x%, y%, 0, mouse.asmoff%)    DEF SEG  END IFEND SUB'Hides mouse cursor'EXAMPLE:'  enabled% = mouse.enable  'enable mouse'  mouse.show               'show mouse'  a$ = INPUT$(1)           'pause'  mouse.hide               'hide mouse'  a$ = INPUT$(1)           'pause'  mouse.disable            'disable mouseSUB mouse.hide  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  SHARED mouse.visible AS INTEGER  IF mouse.exist AND mouse.visible THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H2, 0, 0, 0, 0, mouse.asmoff%)    DEF SEG    mouse.visible = 0  END IFEND SUB'Loads the graphics cursor'COMMENT:'* Requies MS Mouse driver version 3.0 or compatible'INPUT:'* filename$ is the file name to input the graphics cursor's data from.'* If filename$ has no extention, it defaults to .GCR (Graphics CuRsor)'  extention.'RETURN:'* Returns the graphics cursor data in the string form.'EXAMPLE:'  SCREEN 9   'requires EGA or better'  enabled% = mouse.enable'  mouse.show'  data$ = mouse.loadGCR$("cursor.gcr")'  mouse.setGCR data$FUNCTION mouse.loadgcr$ (filename$)  IF INSTR(filename$, ".") = 0 THEN filename$ = filename$ + ".GCR"  filenumber% = FREEFILE  OPEN filename$ FOR BINARY AS filenumber%    strn$ = SPACE$(3)    GET #filenumber%, 1, strn$    IF strn$ = "GCR" THEN      strn$ = SPACE$(69)      GET #filenumber%, 1, strn$    ELSE strn$ = ""    END IF  CLOSE filenumber%  mouse.loadgcr$ = strn$END FUNCTION'Loads the text cursor'COMMENT:'* Requies MS Mouse driver version 3.0 or compatible'INPUT:'* filename$ is the file name to input the graphics cursor's data from.'* If filename$ has no extention, it defaults to .TCR (Text CuRsor) extention.'RETURN:'* Returns the text cursor data in the string form.'EXAMPLE:'  enabled% = mouse.enable'  mouse.show'  data$ = mouse.loadTCR$("cursor.tcr")'  mouse.setTCR data$FUNCTION mouse.loadTCR$ (filename$)  IF INSTR(filename$, ".") = 0 THEN filename$ = filename$ + ".TCR"   filenumber% = FREEFILE  OPEN filename$ FOR BINARY AS filenumber%    strn$ = SPACE$(3)    GET #filenumber%, 1, strn$    IF strn$ = "TCR" THEN      strn$ = SPACE$(8)      GET #filenumber%, 1, strn$    ELSE strn$ = ""    END IF  CLOSE filenumber%  mouse.loadTCR$ = strn$END FUNCTION'Changes the graphics cursor'COMMENT:'* Requies MS Mouse driver version 3.0 or compatible'INPUT:'* data$ is the graphics cursor data gotten from a file using the function'  mouse.loadGCR().'EXAMPLE:'  SCREEN 9   'requires EGA or better'  enabled% = mouse.enable'  mouse.show'  data$ = mouse.loadGCR$("cursor.gcr")'  mouse.setGCR data$SUB mouse.setgcr (data$)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist AND LEN(data$) = 69 AND LEFT$(data$, 3) = "GCR" THEN    'get hotx value    hotxstr$ = MID$(data$, 68, 1)    DEF SEG = VARSEG(hotxstr$)    bx% = PEEK(SADD(hotxstr$))    DEF SEG    'get hoty value    hotystr$ = MID$(data$, 69, 1)    DEF SEG = VARSEG(hotystr$)    cx% = PEEK(SADD(hotystr$))    DEF SEG    'get image shape values    dx% = SADD(data$) + 3    es% = VARSEG(data$)    'execute    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H9, bx%, cx%, dx%, es%, mouse.asmoff%)    DEF SEG  END IFEND SUB'Sets a "boxed" area for the mouse to move around. It cannot go beyond.'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'INPUT:'* (x1%, y1%) is the top-left coordinate of the box.'* (x2%, y2%) is the bottom-right coordinate of the box.'EXAMPLE:'  enabled% = mouse.enable'  mouse.show'  mouse.setlimit 50, 50, 300, 100'  a$ = INPUT$(1)  'wait for a key'  mouse.disableSUB mouse.setlimit (x1%, y1%, x2%, y2%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    cx% = x1%    dx% = x2%    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H7, 0, cx%, dx%, 0, mouse.asmoff%)    DEF SEG    cx% = y1%    dx% = y2%    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H8, 0, cx%, dx%, 0, mouse.asmoff%)    DEF SEG  END IFEND SUB'Moves the mouse position to (x%, y%)'COMMENT:'* Coordinates are in pixels, even if the screen is in text mode.'NOTES:'* The inputted values, x% and y%, must be in "pixels", not in "blocks", even'  in text mode.'EXAMPLE:'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.setpos 100, 100'    SLEEP 1'  LOOP WHILE INKEY$ = ""'  mouse.disableSUB mouse.setpos (x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    cx% = x%    dx% = y%    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H4, 0, cx%, dx%, 0, mouse.asmoff%)    DEF SEG  END IFEND SUB'Changes the mouse speed'COMMENT:'* This interrupt service actually sets the ratio between mickey (the small-'  est movement the mouse can detect) and the pixels.  This function does'  some calculations to make it simulate a speed setting interrupt service.'   There is aactually a speed setting interrupt service, but it is available'  to MS Mouse Driver version 6.0 and compatibles so I didn't want to do'  that.  All the functions in this QBASIC functions are MS Mouse Driver ver-'  sion 1.0 and compatible with the exception of graphics cursor setting'  functions and text cursor setting functions.'INPUT:'* x% is the new horizontal mouse speed'* y% is the new vertical mouse speed'* The minimum value is -32,768 (go backwards) and the maximum value is'  32,767, same as the minimum and the maximum value limit of integers.'EXAMPLE:'  enabled% = mouse.enable'  mouse.show'  mouse.setspeed &H7FFF, &H7FFF'  a$ = INPUT$(1)  'wait for a key'  mouse.disableSUB mouse.setspeed (x%, y%)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  IF mouse.exist THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &HF, 0, (x% XOR &H7FFF), (y% XOR &H7FFF), 0, mouse.asmoff%)    DEF SEG  END IFEND SUB'Changes the text cursor'COMMENT:'* Requies MS Mouse driver version 3.0 or compatible'INPUT:'* data$ is the text cursor data gotten from a file using the function'  mouse.loadTCR().'EXAMPLE:'  enabled% = mouse.enable'  mouse.show'  data$ = mouse.loadTCR$("cursor.tcr")'  mouse.setTCR data$SUB mouse.setTCR (data$)  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$   IF NOT (mouse.exist AND LEN(data$) = 8 AND LEFT$(data$, 3) = "TCR") THEN EXIT SUB   'get cursor type value  cursortype$ = MID$(data$, 4, 1)  DEF SEG = VARSEG(cursortype$)  bx% = PEEK(SADD(cursortype$))  DEF SEG  'get arg1 value  arg1h$ = MID$(data$, 5, 1)  DEF SEG = VARSEG(arg1h$)  argh% = PEEK(SADD(arg1h$))  DEF SEG  arg1l$ = MID$(data$, 6, 1)  DEF SEG = VARSEG(arg1l$)  argl% = PEEK(SADD(arg1l$))  DEF SEG  cx% = (argh% AND &H7F) * &H100 + argl%   IF argh% AND &H80 THEN cx% = cx% OR &H8000  'get arg2 value  arg2h$ = MID$(data$, 7, 1)  DEF SEG = VARSEG(arg2h$)  argh% = PEEK(SADD(arg2h$))  DEF SEG  arg2l$ = MID$(data$, 8, 1)  DEF SEG = VARSEG(arg2l$)  argl% = PEEK(SADD(arg2l$))  DEF SEG  dx% = (argh% AND &H7F) * &H100 + argl%   IF argh% AND &H80 THEN dx% = dx% OR &H8000  'execute  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  DEF SEG = mouse.asmseg%  CALL absolute(dummy%, dummy%, dummy%, dummy%, &HA, bx%, cx%, dx%, 0, mouse.asmoff%)  DEF SEGEND SUB'Shows the mouse. Must have been enabled first.'EXAMPLE:'  enabled% = mouse.enable  'enable mouse'  mouse.show               'show mouse'  a$ = INPUT$(1)           'pause'  mouse.disable            'disable mouseSUB mouse.show  SHARED mouse.exist AS INTEGER  SHARED mouse.asm$  mouse.asmseg% = VARSEG(mouse.asm$)  mouse.asmoff% = SADD(mouse.asm$)  SHARED mouse.visible AS INTEGER  IF mouse.exist AND NOT mouse.visible THEN    DEF SEG = mouse.asmseg%    CALL absolute(dummy%, dummy%, dummy%, dummy%, &H1, 0, 0, 0, 0, mouse.asmoff%)    DEF SEG    mouse.visible = 1  END IFEND SUBSUB NewWin (text$, x, y, w, h)WNumber = WNumber + 1WGData(WNumber, 1) = xWGData(WNumber, 2) = yWGData(WNumber, 3) = wWGData(WNumber, 4) = hWGData(WNumber, 5) = 1WGData(WNumber, 0) = 0WTData(WNumber) = text$WOrder(WNumber) = WNumberWinMakeHighest WNumberEND SUBSUB QuitButton (x, y)LINE (x + 5, y + 2)-(x + 7, y + 6), 1, BLINE (x + 5, y + 8)-(x + 7, y + 10), 1, BLINE (x + 6, y + 3)-(x + 6, y + 5), 6PSET (x + 6, y + 9), 6END SUBSUB refreshmouse.hideCLSLINE (0, 0)-(640, 480), 4, BFFOR Cyc = WNumber TO 1 STEP -1CW = WOrder(Cyc)WinDrwMng CWNEXTmouse.showEND SUB'Gets shift state.'RETURN:'* 0 if no shift key pressed'* ALT if Alt key pressed'* CTRL if Ctrl key pressed'* SHIFT if Shift key pressed'* These may be in combination.  For example, if Ctrl-Alt is pressed, then'  return is CTRL + ALT.'* ALT, CTRL, and SHIFT are shift constants defined in the main module.'EXAMPLE:'  CLS'  enabled% = mouse.enable'  mouse.show'  DO'    mouse.get x%, y%, buttons%'    shiftstate% = shift.getstate%'    IF buttons% THEN'      LOCATE 1, 1: PRINT SPACE$(79); : LOCATE 1, 1'      SELECT CASE shiftstate%'        CASE 0: PRINT "Mouse button was pressed without any shift keys."'        CASE ALT: PRINT "Mouse button and Alt key pressed."'        CASE CTRL: PRINT "Mouse button and Ctrl key pressed."'        CASE SHIFT: PRINT "Mouse button and Shift key pressed."'      END SELECT'    END IF'  LOOP WHILE INKEY$ = ""FUNCTION shift.getstate%  DEF SEG = 0  state% = PEEK(&H417) AND &HF  DEF SEG  IF (state% AND &H3) THEN state% = (state% OR &H3)  shift.getstate% = state%END FUNCTIONSUB StartDrag (who)mouse.setgcr movemouse.getpos ox, oy        x = ox: y = oy        GetStats who, crap$, wx, wy, ww, wh, wstateDO        lx = x: ly = y        mouse.getpos x, y        IF lx = x AND ly = y THEN        ELSE        mouse.hide        WinUnDrw (who)                WGData(who, 1) = wx + (x - ox)                WGData(who, 2) = wy + (y - oy)        WinDrwMng (who)        ELSE        mouse.show        END IFLOOP UNTIL mouse.getbutton <> LBmouse.hidemouse.setgcr pointermouse.showEND SUBSUB StartXYDrag (what, who)mouse.hideIF what = 1 THEN mouse.setgcr horizontIF what = 2 THEN mouse.setgcr verticalIF what = 3 THEN mouse.setgcr diagonalmouse.getpos ox, oy        x = ox: y = oy        GetStats who, crap$, wx, wy, ww, wh, wstateDO        lx = x: ly = y        mouse.getpos x, y        IF lx = x AND ly = y THEN        ELSE        mouse.hide        WinUnDrw (who)                IF what <> 2 THEN WGData(who, 3) = ww + (x - ox)        IF what <> 1 THEN WGData(who, 4) = wh + (y - oy)        WinDrwMng (who)        mouse.show        END IFLOOP UNTIL mouse.getbutton <> LBmouse.hidemouse.setgcr pointermouse.showEND SUBFUNCTION StringFind (Strng$, start, what$)FOR a = start TO LEN(Strng$) + 1IF a <= LEN(Strng$) THEN        IF MID$(Strng$, a, 1) = LTRIM$(RTRIM$(what$)) THEN                EXIT FOR        END IFEND IFNEXTStringFind = aEND FUNCTIONSUB WinDrw (text$, x, y, w, h, state, btnA, btnB, btnC)               WinDrwTtl x, y, x + w, y + TtlHeight                Lengh = w - TtlHeight * 3 - 2 - 5                CharsVis = (Lengh - (Lenght MOD 8)) / 8                print$ = MID$(text$, 1, CharsVis)                IF LEN(text$) <> LEN(print$) AND LEN(print$) >= 3 THEN MID$(print$, LEN(print$) - 2, 3) = "..."                cout print$, x + 5, y, 2, Lengh + 8, 0                DrwBtn x + w - TtlHeight * 3, y + 3, TtlHeight - 6, TtlHeight - 6, btnA                DrwBtn x + w - TtlHeight * 2, y + 3, TtlHeight - 6, TtlHeight - 6, btnB                DrwBtn x + w - TtlHeight * 1, y + 3, TtlHeight - 6, TtlHeight - 6, btnC                MinButton x + w - TtlHeight * 3, y + 3                MaxButton x + w - TtlHeight * 2, y + 3                QuitButton x + w - TtlHeight * 1, y + 3        IF state <> 0 THEN WinDrwBrd x, y + TtlHeight + 1, x + w, y + h       END SUBSUB WinDrwBrd (x1, y1, x2, y2)LINE (x1, y1)-(x2, y2), 15, BFLINE (x1, y1)-(x2, y2), 3, BLINE (x1 + 1, y1 + 1)-(x2 - 1, y2 - 1), 2, BLINE (x1 + 2, y1 + 2)-(x2 - 2, y2 - 2), 1, BLINE (x2 - 2, y2 - 2)-(x2 - 2, y1 + 3), 3LINE (x2 - 2, y2 - 2)-(x1 + 3, y2 - 2), 3LINE (x2, y2)-(x2, y1 + 1), 1LINE (x2, y2)-(x1 + 1, y2), 1LINE (x2, y1)-(x2 - 2, y1 + 2), 2LINE (x1, y2)-(x1 + 2, y2 - 2), 2END SUBSUB WinDrwMng (who)GetStats who, text$, x, y, w, h, stateWinDrw text$, x, y, w, h, state, 1, 1, 1END SUBSUB WinDrwTtl (x1, y1, x2, y2)LINE (x1, y1)-(x2, y2), 6, BFLINE (x1, y1)-(x2 - 1, y1), 7LINE (x1, y1)-(x1, y2 - 1), 7LINE (x2, y2)-(x1 + 1, y2), 5LINE (x2, y2)-(x2, y1 + 1), 5END SUBSUB WinMakeHighest (num)FOR a = 1 TO WNumberIF WOrder(a) = num THENwhere = aEND IFNEXTFOR a = where - 1 TO 1 STEP -1WOrder(a + 1) = WOrder(a)NEXTWOrder(1) = numEND SUBSUB WinPutTop (who)mouse.hideIF WOrder(1) <> who THEN        WinMakeHighest who        WinUnDrw who        WinDrwMng whoEND IFmouse.showEND SUBSUB WinUnDrw (who)GetStats who, crap$, x, y, w, h, stateIF state <> 0 THEN height = h ELSE height = TtlHeightLINE (x, y)-(x + w, y + height), 4, BFDIM ReDrawn(WNumber) AS INTEGERReDrawn(who) = 1FOR Cyc = WNumber TO 1 STEP -1        CW = WOrder(Cyc)        IF CW <> who THEN        GetStats CW, crap$, x, y, w, h, state        FOR TCW = 1 TO WNumber                                       GetStats TCW, crap$, tx, ty, tw, th, tstate                IF x + w >= tx AND x <= tx + tw AND y + h >= ty AND y <= ty + th AND TCW <> CW AND ReDrawn(TCW) THEN                ReDrawn(CW) = 1                WinDrwMng CW                EXIT FOR                END IF        NEXT        END IFNEXTEND SUBDevin Garner                   MOVING IN 3D: DEMO             santa@tir.com                  07-25-99 (14:37)       QB, QBasic, PDS        163  4015     RAY.BAS     DECLARE SUB getdata ()DECLARE SUB getkey ()DECLARE SUB morph ()DECLARE SUB instruct () '********************************VARIABLES************************************COMMON SHARED vx, vy, vz, srx, sry, x, y, z, xspeed, yspeed, zspeed, past, sx, syvx = 320 ' viewers X coordinatevy = 175 ' viewers Y coordinatevz = 0 ' viewers Z coordinatesrx = 639 ' screens X-resolutionsry = 349 ' screens Y-resolutionxspeed = 25   ' Speed of X axisyspeed = 25    ' Speed of Y axiszspeed = .5    ' Speed of Z axis'*****************************END OF VARIABLES********************************'****************************OBJECT+COORDINATES*******************************'rect = rectangle'rect=DATA rect,col,col2,x,y,z,x,y,z  closest-top-left, farthest-bottom-rightDATA rect,7,40,40,20,80,310,25DATA rect,7,40,40,0,80,310,15DATA rect,7,560,40,0,600,310,5DATA rect,7,560,40,10,600,310,15DATA done'******************************END COORDINATES********************************instruct ' sub: show instructions10 CLSgetdata ' reads data, and draws itPCOPY 1, 0getkey ' gets a key from keyboardGOTO 10SUB getdataRESTORE20 past = 0READ comand$IF comand$ = "done" THEN EXIT SUBIF comand$ = "rect" THENREAD col, x1, y1, z1, x2, y2, z2x = x1y = y1z = z1morphpx1 = sxpy1 = syz = z2morphpx2 = sxpy2 = syx = x2y = y2morphpx4 = sxpy4 = syz = z1morphpx3 = sxpy3 = syIF vx >= x1 AND vx <= x2 AND vz < z2 THENIF past = 0 THEN LINE (px1, py1)-(px3, py3), col, BIF vy < y1 THEN LINE (px1, py1)-(px2, py2), col: LINE (px2, py2)-(px4, py2), col: LINE (px3, py1)-(px4, py2), colIF vy > y2 THEN LINE (px1, py3)-(px2, py4), col: LINE (px2, py4)-(px4, py4), col: LINE (px3, py3)-(px4, py4), colGOTO 20END IFIF vx > x2 AND vz < z2 THENIF vy < y1 THEN LINE (px1, py1)-(px2, py2), col: LINE (px2, py2)-(px4, py2), colIF vy > y2 THEN LINE (px1, py3)-(px2, py4), col: LINE (px2, py4)-(px4, py4), colIF past = 0 THEN LINE (px1, py1)-(px3, py3), col, BLINE (px3, py3)-(px4, py4), colLINE (px3, py1)-(px4, py2), colLINE (px4, py2)-(px4, py4), colGOTO 20END IFIF vx < x2 AND vz < z2 THENIF vy < y1 THEN LINE (px3, py1)-(px4, py2), col: LINE (px2, py2)-(px4, py2), colIF vy > y2 THEN LINE (px3, py3)-(px4, py4), col: LINE (px2, py4)-(px4, py4), colIF past = 0 THEN LINE (px1, py1)-(px3, py3), col, BLINE (px1, py3)-(px2, py4), colLINE (px1, py1)-(px2, py2), colLINE (px2, py4)-(px2, py2), colGOTO 20END IFGOTO 20END IFEND SUBSUB getkeyDOkey$ = INKEY$LOOP UNTIL key$ <> ""SELECT CASE ASC(RIGHT$(key$, 1))        CASE 27                SYSTEM               CASE 75                IF left = 0 THEN vx = vx - xspeed: left = 0        CASE 77                IF right = 0 THEN vx = vx + xspeed: right = 0               CASE 97                                vy = vy - yspeed        CASE 122                vy = vy + yspeed               CASE 72                IF forward = 0 THEN vz = vz + zspeed: forward = 0          CASE 80                vz = vz - zspeed        CASE 97 ' a               vy = vy - yspeed        CASE 122 ' z               vy = vy + yspeed        CASE 72 ' up                IF forward = 0 THEN vz = vz + zspeed: forward = 0        CASE 80 ' down                vz = vz - zspeed        CASE ELSE              getkeyEND SELECTEND SUBSUB instructSCREEN 0CLSPRINT "3D Demo In QB BY: Devin Garner"PRINT CHR$(27); " Sidesteps left"PRINT CHR$(26); " Sidesteps right"PRINT CHR$(24); " Steps Forward"PRINT CHR$(25); " Steps Backward"PRINTPRINT "press any key to continue"SLEEPSCREEN 9, 0, 1, 0END SUBSUB morphIF vz >= z THEN z = vz + zspeed: past = 1  'fix error and make it look right if ur pastitsx = (x - vx) / (z - vz) + srx / 2' changes the 3D variables to 2Dsy = (y - vy) / (z - vz) + sry / 2' changes the 3D variables to 2DEND SUBDavid Karlov                   CONVERT GRAPHICS IMAGE TO ASCIIdavidk@aurema.com              09-30-99 (09:26)       QB, QBasic, PDS        1483 38972    PIC2TXT.BAS ' PIC2BMP.BAS (incomplete)' David Karlov    dkarlov@rocketmail.com'                 dkarlov@acacia.itd.uts.edu.au'                 davidk@softway.com.au'' (BmpLoad() and GifLoad() were not coded by me).'------------------------------------------' Converts graphical images to ascii art.' This is a real hodge-podge of routines... It's currently not really' usable unless you're a programmer.  If u r, feel free to examine the' source code in detail... it's the only way you'll understand it ;)'' The core routine is ConvertPic().  It converts a rectangular area of' the screen (in mode 8) to the "best fit" ascii text it can find.' Functions GIF2TXT() and BMP2TXT() convert straight from a .GIF or .BMP' to ascii art.' Pics with a lot of contrast work best.'' There are also various routines for ascii animation... eg, for use in' text email: "hold down the page down key..."' Only 5 so far:' name:     description:' Hello     draws an animated wavy "hello" in big letters' Spiral    a turning spiral, to hypnotize ppl via email' Net       an attempt to draw 3d animation in a text file (a bit sad)' Bloom     a lovely flower growing out of the ground' Trail     a comet zipping all around the screen with fragmented tail'' If u want any more, it's basically code your own (for now..).. possibly' a (limited) user-friendly interface on the way...' Extended length animations can be made from those that cycle (eg Net, Hello,' Spiral) by copying to append the first file u create. ("copy /?" for help)TYPE FlowerType   Tallness AS SINGLE   LeafSpread AS SINGLE   HeadSize AS SINGLE   PetalSpread AS SINGLEEND TYPETYPE Pnt   x AS INTEGER   y AS INTEGEREND TYPEDEFINT A-Z' These 2 functions convert straight from a graphics format to ascii art.DECLARE SUB BMP2TXT (FileName$)DECLARE SUB GIF2TXT (FileName$)DECLARE SUB Init ()DECLARE SUB ConvertPic (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)DECLARE FUNCTION GetRatio! (Char() AS INTEGER, Num AS INTEGER)DECLARE SUB Col2BW (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)DECLARE SUB GifLoad (A$)DECLARE SUB BmpLoad (A$)DECLARE SUB DrawNet (d AS INTEGER)DECLARE SUB DrawSpiral (deg AS INTEGER)DECLARE SUB DrawHello ()DECLARE SUB RippleHello (d AS INTEGER)DECLARE SUB DrawTrail ()DECLARE SUB DrawLightning ()DECLARE SUB InitFlower ()DECLARE SUB GrowFlower (n AS INTEGER)CONST PI = 3.141593CONST NumWeight = 1  ' extra weight for each mismatched pixel.CONST Index = 2   ' index of weight for increased distance.CONST Scaling = 0 ' +ve means be relaxed about adding extra pixels,                  ' -ve means be relaxed about leaving out some.                  ' Range: -20 to 20.CONST Density = 1   ' proportion of solid colour to plot when converting                     ' colour images' Intensities for different colour components.CONST I.Red = .299CONST I.Green = .587CONST I.Blue = .144' $DYNAMICDIM SHARED RA1 AS SINGLEDIM SHARED RA2 AS SINGLEDIM SHARED p(80, 80) AS SINGLEDIM SHARED Flower(30) AS FlowerTypeDIM SHARED Ground(16000) AS INTEGERDIM SHARED Bloom AS INTEGERDIM SHARED Grounds$CONST TrailLen = 20CONST sp1 = 35DIM SHARED Trail(1 TO TrailLen, 1 TO 2) AS SINGLEDIM SHARED cc AS INTEGER, cd AS INTEGERFOR t = 1 TO TrailLen: Trail(t, 1) = -15 - 3 * t: Trail(t, 2) = 50 - 3 * t: NEXT tcd = 1DEF FNX1 (x, y) = 250 + RA1 * (y - x)DEF FNY1 (x, y) = 130 - RA2 * (x + y) - p(x, y)'$DYNAMICDIM SHARED Pic(20002) AS INTEGERDIM SHARED Pal(0 TO 255, 0 TO 2) AS INTEGERDIM SHARED CharImg(0 TO 64 * 96 - 1) AS INTEGERDIM SHARED PlusW AS SINGLE, SubW AS SINGLEDIM SHARED f$DIM SHARED hello(0 TO 10241) AS INTEGERDIM SHARED SetNumLinesSetNumLines = 0   ' Set this to n if the outputted text must contain                  ' exactly n lines. (Useful for scrolling animations).ON KEY(10) GOSUB quit1KEY(10) ONInit' pick your GOTO.....'GOTO hello'GOTO spiral'GOTO net'GOTO BloomGOTO Trail' .... or Hack in this space:SCREEN 13: CLS'GIF2TXT "\pics\perr.gif"BMP2TXT "\qb\qbpaint\jinx.bmp"ENDhello:SetNumLines = 17  ' the right amount for sending to ppl who use pine (i think)SCREEN 8: CLSDrawHelloFOR d = 0 TO 359 STEP 20   CLS   RippleHello d   ConvertPic 0, 0, 383, 150   OPEN "hello" + LTRIM$(RTRIM$(STR$(d \ 20))) + ".txt" FOR OUTPUT AS #1   PRINT #1, f$   CLOSE #1NEXT dSHELL "copy hello0.txt hello.txt"FOR t = 1 TO 17   c$ = "copy /A hello.txt + " + "hello" + LTRIM$(RTRIM$(STR$(t))) + ".txt" + " hello.txt"   PRINT c$   SHELL c$NEXT tPRINT "hello.txt is complete."ENDspiral:SetNumLines = 17SCREEN 8: CLSFOR d = 0 TO 359 STEP 20   CLS   DrawSpiral d   ConvertPic 0, 0, 631, 199   OPEN "spiral" + LTRIM$(RTRIM$(STR$(d \ 20))) + ".txt" FOR OUTPUT AS #1   PRINT #1, f$   CLOSE #1NEXT dSHELL "copy spiral0.txt spiral.txt"FOR t = 1 TO 17   c$ = "copy /A spiral.txt + " + "spiral" + LTRIM$(RTRIM$(STR$(t))) + ".txt" + " spiral.txt"   PRINT c$   SHELL c$NEXT tPRINT "spiral.txt is complete."ENDnet:SetNumLines = 17SCREEN 8: CLSFOR d = 0 TO 359 STEP 20   OPEN "net" + LTRIM$(RTRIM$(STR$(d \ 20))) + ".txt" FOR BINARY AS #1   IF LOF(1) = 0 THEN      CLOSE #1      CLS      DrawNet d      ConvertPic 0, 0, 600, 199      OPEN "net" + LTRIM$(RTRIM$(STR$(d \ 20))) + ".txt" FOR OUTPUT AS #1      PRINT #1, f$   END IF   CLOSE #1NEXT dSHELL "copy net0.txt net.txt"FOR t = 1 TO 17   c$ = "copy /A net.txt + " + "net" + LTRIM$(RTRIM$(STR$(t))) + ".txt" + " net.txt"   PRINT c$   SHELL c$NEXT tPRINT "net.txt is complete."ENDBloom:Bloom = 1InitFlowerFOR t = 1 TO 27   OPEN "bloom" + LTRIM$(RTRIM$(STR$(t))) + ".txt" FOR BINARY AS #1   IF LOF(1) = 0 THEN      CLOSE #1      CLS      GrowFlower t      ConvertPic 0, 0, 400, 149      OPEN "bloom" + LTRIM$(RTRIM$(STR$(t))) + ".txt" FOR OUTPUT AS #1      PRINT #1, f$   END IF   CLOSE #1NEXT t'STOPSHELL "copy bloom1.txt bloom.txt"FOR t = 2 TO 27   c$ = "copy /A bloom.txt + " + "bloom" + LTRIM$(RTRIM$(STR$(t))) + ".txt" + " bloom.txt"   PRINT c$   SHELL c$NEXT tPRINT "bloom.txt is complete."ENDTrail:' Continues generating until a key is pressed.'SetNumLines = 17SCREEN 8t = 0DO   t = t + 1   CLS   LOCATE 25, 1: PRINT t;   DrawTrail   ConvertPic 0, 0, 600, 136   OPEN "trail" + LTRIM$(RTRIM$(STR$(t))) + ".txt" FOR OUTPUT AS #1   PRINT #1, f$   CLOSE #1   IF t = 1 THEN      SHELL "copy trail1.txt trail.txt"   ELSE      SHELL "copy /A trail.txt + " + "trail" + LTRIM$(RTRIM$(STR$(t))) + ".txt" + " trail.txt"   END IFLOOPSTOPENDquit1:ENDREM $STATICSUB BMP2TXT (A$)SCREEN 13: CLSBmpLoad A$Col2BW 0, 0, 319, 199ConvertPic 0, 0, 631, 199t = INSTR(A$, ".")IF t THEN A$ = LEFT$(A$, t - 1)OPEN A$ + ".TXT" FOR OUTPUT AS #1PRINT #1, f$CLOSE #1END SUBSUB BmpLoad (A$)DIM imagesize AS LONGFileName$ = A$IF INSTR(FileName$, ".") = 0 THEN FileName$ = FileName$ + ".BMP"OPEN FileName$ FOR BINARY AS #1header$ = SPACE$(14)sizing$ = SPACE$(4)GET #1, 1, header$GET #1, 15, sizing$bmpinfosize = CVI(sizing$)'bmpinfosize - Is the size of the information header for the bitmap.'              Different bitmap versions have variations in filetypes.'              40 is a standard windows 3.1 bitmap.'              12 is for OS/2 bitmaps'The next routine reads in the appropriate headers and colour tables.'nbits is the number of bits per pixel - i.e. number of colours'1 bit = 2 colours, 4 bits = 16 colours, 8 bits = 256 colours, etc.'the 24 bit mode does not have a palette, its colours are expressed as'image data'Design of a windows 3.1 bitmap - Taken from bmp.zip on the'x2ftp.oulu.fi ftp site under /pub/msdos/programming/formats'Specifications for a Windows 3.1 bitmap. (.BMP)'Email any questions/responses to me at zabudsk@ecf.utoronto.ca'or post to alt.lang.basic or comp.lang.basic.misc.'       | # of   |'Offset | bytes  | Function (value)'-------+--------+--- General Picture information starts here---------'  0    |   2    | (BM) - Tells us that the picture is in bmp format'  2    |   4    | Size of the file (without header?)'  6    |   2    | (0) Reserved1 - Must be zero'  8    |   2    | (0) Reserved2 - Must be zero'  10   |   4    | Number of bytes offset of the picture data'-------+--------+--- Information Header starts here -----------------'  14   |   4    | (40/12) Size of information header (Win3.1/OS2)'  18   |   4    | Picture width in pixels'  22   |   4    | Picture Height in pixels'  26   |   2    | (1) Number of planes, must be 1'  28   |   2    | Number of bits per pixel (bpp), must be 1,4,8 or 24'  30   |   4    | (0) Compression - 0 means no compression, 1,2 are RLEs'  34   |   4    | Image size in bytes'  38   |   4    | picture width in pels per metre'  42   |   4    | picture height in pels per metre'  46   |   4    | (0) Number of colours used in the picture, 0 means all'  50   |   4    | (0) Number of important colours, 0 means all'-------+--------+--- Palette data starts here -----------------------'  54   |   1    | (b) - blue intensity component, color 0 - range 0 to 255'  55   |   1    | (g) - green intensity component, color 0 - range 0 to 255'  56   |   1    | (r) - red intensity component, color 0 - range 0 to 255'  57   |   1    | (0) - unused'  58   |   1    | (b) - blue intensity component, color 0 - range 0 to 255'  ...  | ...    |'  54   | 4*2^bpp| total range of palette'-------+--------+--- Image data starts here -------------------------'54+    | width* | Bitmap data starting at lower left portion of the'(4*2^n)| height*| image moving from left towards right. Moving up 1'       | (8/bpp)| pixel when at the right hand side of the image, starting'       |        | from the left side again, until the top right of the'       |        | image is reached'Note that this format is slightly different for a OS/2 Bitmap.'The header is the same up to (but not including) bit 30-'The palette colour values follow at bit 30, with the form...'1 byte blue intensity'1 byte green intensity'1 byte red intensity'For each colour of the picture.'Bitmapped image data follows the colour tables'Special note: When storing 1 bit (2 colour) pictures.'8 horizontal pixels are packed into 1 byte. Each bit determines'the colour of one pixel (colour 0 or colour 1)'4 bit pictures (16 colours) use 2 nibbles (4 bits) for each pixel'thus there are 2 pixels for each byte of image data.'8 bit pictures use 1 byte per pixel. Each byte of image data'represents one of 256 colours.'24 bit pictures express colour values by using 3 bytes and each has a'value between 0 and 255. The first byte is for red, the second is for'green and the third is for blue. Thus (256)^3 or 2^24 of 16777216 different'colours.IF bmpinfosize = 12 THEN   infoheader$ = SPACE$(12)   GET #1, 15, infoheader$   nbits = CVI(MID$(infoheader$, 15, 4))    IF nbits = 1 THEN      palet$ = SPACE$(6)      GET #1, bmpinfosize + 15, palet$   ELSEIF nbits = 4 THEN      palet$ = SPACE$(48)      GET #1, bmpinfosize + 15, palet$   ELSEIF nbits = 8 THEN      palet$ = SPACE$(768)      GET #1, bmpinfosize + 15, palet$   END IFELSEIF bmpinfosize = 40 THEN   infoheader$ = SPACE$(40)   GET #1, 15, infoheader$   nbits = CVI(MID$(infoheader$, 15, 4))   IF nbits = 1 THEN      palet$ = SPACE$(8)      GET #1, bmpinfosize + 15, palet$   ELSEIF nbits = 4 THEN      palet$ = SPACE$(64)      GET #1, bmpinfosize + 15, palet$   ELSEIF nbits = 8 THEN      palet$ = SPACE$(1024)      GET #1, bmpinfosize + 15, palet$   END IFEND IF    FT$ = MID$(header$, 1, 2)'PRINT "Type of file (Should be BM): "; ft$filesize = CVL(MID$(header$, 3, 4))'PRINT "Size of file: "; filesizer1 = CVI(MID$(header$, 7, 2))'PRINT "Reserved 1: "; r1r2 = CVI(MID$(header$, 9, 2))'PRINT "Reserved 2: "; r2offset = CVL(MID$(header$, 11, 4))'PRINT "Number of bytes offset from beginning: "; offset'PRINTheadersize = CVL(MID$(infoheader$, 1, 4))'PRINT "Size of header: "; headersizepicwidth = CVL(MID$(infoheader$, 5, 4))'PRINT "Width: "; picwidth'picheight = CVL(MID$(infoheader$, 9, 4))'PRINT "Height: "; picheightnplanes = CVI(MID$(infoheader$, 13, 4))'PRINT "Planes: "; nplanes'PRINT "Bits per plane: "; nbits'PRINTIF headersize = 40 THEN'   PRINT "Compression: ";   comptype = CVL(MID$(infoheader$, 17, 4))'   IF comptype = 0 THEN PRINT "None"'   IF comptype = 1 THEN PRINT "Run Length - 8 Bits"'   IF comptype = 2 THEN PRINT "Run Length - 4 Bits"    imagesize = CVL(MID$(infoheader$, 21, 4))'   PRINT "Image Size (bytes): "; imagesize    xsize = CVL(MID$(infoheader$, 25, 4))'   PRINT "X size (pixels per metre): "; xsize    ysize = CVL(MID$(infoheader$, 29, 4))'   PRINT "Y size (pixels per metre): "; ysize    colorsused = CVL(MID$(infoheader$, 33, 4))'   PRINT "Number of colours used: "; colorsused    neededcolours = CVL(MID$(infoheader$, 37, 4))'   PRINT "Number of important colours: "; neededcoloursEND IF'PRINT'PRINT "Press Any key to continue."'WHILE INKEY$ = ""'WENDIF nbits = 1 THEN   SCREEN 11ELSEIF nbits = 4 THEN   SCREEN 12ELSEIF nbits = 8 OR nbits = 24 THEN   SCREEN 13END IFIF bmpinfosize = 40 THEN ngroups = 4IF bmpinfosize = 12 THEN ngroups = 3IF nbits = 24 THEN   IF ngroups = 3 THEN      FOR c = 0 TO 63         d = c * 4         palet$ = palet$ + CHR$(d) + CHR$(d) + CHR$(d)         palet$ = palet$ + CHR$(d) + CHR$(d) + CHR$(d + 1)         palet$ = palet$ + CHR$(d) + CHR$(d + 1) + CHR$(d)         palet$ = palet$ + CHR$(d + 1) + CHR$(d) + CHR$(d)      NEXT c   ELSEIF ngroups = 4 THEN      FOR c = 0 TO 63         d = c * 4         palet$ = palet$ + CHR$(d) + CHR$(d) + CHR$(d) + CHR$(0)         palet$ = palet$ + CHR$(d) + CHR$(d) + CHR$(d + 1) + CHR$(0)         palet$ = palet$ + CHR$(d) + CHR$(d + 1) + CHR$(d) + CHR$(0)         palet$ = palet$ + CHR$(d + 1) + CHR$(d) + CHR$(d) + CHR$(0)      NEXT c   END IFEND IFFOR x = 1 TO LEN(palet$) STEP ngroups   zb# = INT((ASC(MID$(palet$, x, 1))) / 4)   zg# = INT((ASC(MID$(palet$, x + 1, 1))) / 4)   zr# = INT((ASC(MID$(palet$, x + 2, 1))) / 4)   Pal(x \ ngroups, 0) = zr#   Pal(x \ ngroups, 1) = zg#   Pal(x \ ngroups, 2) = zb#   zc# = zb# * 65536# + zg# * 256# + zr#   cres = ASC(MID$(palet$, x + 3, 1))   PALETTE ((x - 1) / ngroups), zc#NEXT xIF nbits = 24 THEN   y = picheight - 1   x = 0   dat$ = "   "   WHILE y >= 0      WHILE x < picwidth         GET 1, , dat$         P1 = INT((ASC(MID$(dat$, 1, 1)) + ASC(MID$(dat$, 1, 1)) + ASC(MID$(dat$, 1, 1))) / 3)         PSET (x, y), P1         x = x + 1      WEND      y = y - 1      x = 0   WENDELSEIF nbits = 8 THEN   y = picheight - 1   x = 0   dat$ = " "   WHILE y >= 0      WHILE x < picwidth         GET 1, , dat$         PSET (x, y), ASC(dat$)         x = x + 1      WEND      y = y - 1      x = 0   WENDELSEIF nbits = 4 THEN   y = picheight - 1   x = 0   dat$ = " "   WHILE y >= 0      WHILE x < picwidth        GET 1, , dat$        LOCATE 1, 1        P1 = ASC(dat$) AND 15        p2 = ASC(dat$) AND 240 / 16        PSET (x, y), P1        PSET (x + 1, y), p2        x = x + 2      WEND      y = y - 1      x = 0   WENDELSEIF nbits = 1 THEN   y = picheight - 1   x = 0   dat$ = " "   WHILE y >= 0      WHILE x < picwidth        GET 1, , dat$        P1 = ASC(dat$)        FOR p = 0 TO 7           PSET (x + (7 - p), y), (P1 AND 2 ^ p) / 2 ^ p        NEXT p        x = x + 8      WEND      y = y - 1      x = 0   WENDEND IFCLOSE #1END SUBSUB Col2BW (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)' Transforms a screen 13 colour image into a screen 8 monochrome image.' Each pixel of the colour image is processed into 2 pixels side by side' in the monochrome image.' The final screen 8 image will be twice as wide in pixels as the original' screen 13 image, but the same "screen width".' Assumption: The image is already on the screen when Col2BW is called.'             The palette used is stored in Pal().DIM Intensities(0 TO 255) AS SINGLEDIM TempImg(0 TO (x2 - x1 + 3) \ 4, 0 TO y2 - y1) AS INTEGERDIM Powers2(0 TO 7)Powers2(0) = 1: Powers2(1) = 2: Powers2(2) = 4: Powers2(3) = 8Powers2(4) = 16: Powers2(5) = 32: Powers2(6) = 64: Powers2(7) = 128FOR t = 0 TO 255   Intensities(t) = (Pal(t, 0) * I.Red + Pal(t, 1) * I.Green + Pal(t, 2) * I.Blue) / 64 * DensityNEXT tFOR x = x1 TO x2   FOR y = y1 TO y2      IF RND <= Intensities(POINT(x, y)) THEN         TempImg((x - x1) \ 4, y - y1) = TempImg((x - x1) \ 4, y - y1) + Powers2(2 * ((x - x1) MOD 4))      END IF      IF RND <= Intensities(POINT(x, y)) THEN         TempImg((x - x1) \ 4, y - y1) = TempImg((x - x1) \ 4, y - y1) + Powers2(2 * ((x - x1) MOD 4) + 1)      END IF   NEXT yNEXT xSCREEN 8: CLSFOR x = x1 TO x2   FOR y = y1 TO y2      PSET (2 * (x - x1) + x1, y - y1), SGN(TempImg((x - x1) \ 4, y - y1) AND Powers2(2 * ((x - x1) MOD 4))) * 15      PSET (2 * (x - x1) + x1 + 1, y - y1), SGN(TempImg((x - x1) \ 4, y - y1) AND Powers2(2 * ((x - x1) MOD 4) + 1)) * 15   NEXT yNEXT xEND SUBSUB ConvertPic (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)DIM TempChar(0 TO 63) AS INTEGERDIM Ratios(32 TO 126) AS SINGLEDIM BestRat AS SINGLEf$ = ""pn = 1COLOR 15FOR y = y1 \ 8 TO y2 \ 8     IF y = 16 AND Bloom = 1 AND Grounds$ <> "" THEN      LOCATE 17, 1: PRINT Grounds$;      f$ = f$ + Grounds$   ELSE      IF y = 16 THEN G2$ = ""      FOR x = x1 \ 8 TO x2 \ 8'        LOCATE 25, 1: PRINT x; y; "   ";         pn = pn + 1         Nump = 0         FOR XX = 0 TO 7: FOR YY = 0 TO 7            TempChar(XX + YY * 8) = SGN(POINT(XX + x * 8, YY + y * 8))            IF TempChar(XX + YY * 8) = 1 THEN Nump = Nump + 1         NEXT YY: NEXT XX         IF Nump > 1 THEN            BestRat = 9E+30: BestNum = 32            FOR t = 32 TO 126               Ratios(t) = GetRatio!(TempChar(), t)               IF Ratios(t) <= BestRat THEN BestRat = Ratios(t): BestNum = t               IF BestRat = 0 THEN EXIT FOR            NEXT t         ELSE            BestNum = 32         END IF         LOCATE y + 1, x + 1: PRINT CHR$(BestNum);'        LOCATE 24, 1: PRINT BestRat;         f$ = f$ + CHR$(BestNum)         IF y = 16 THEN G2$ = G2$ + CHR$(BestNum)         IF BestNum = 32 THEN NumSpac = NumSpac + 1 ELSE NumSpac = 0      NEXT x      IF y = 16 AND Grounds$ = "" THEN Grounds$ = G2$   END IF   ' remove trailing space characters   IF NumSpac THEN f$ = LEFT$(f$, LEN(f$) - NumSpac): NumSpac = 0   f$ = f$ + CHR$(10) + CHR$(13)NEXT yEXIT SUB' remove all trailing blank lines except 1DO UNTIL RIGHT$(f$, 4) <> CHR$(10) + CHR$(13) + CHR$(10) + CHR$(13)   f$ = LEFT$(f$, LEN(f$) - 2)LOOP'***DON'T***  remove all leading blank lines'DO UNTIL LEFT$(f$, 2) <> CHR$(10) + CHR$(13)'   f$ = RIGHT$(f$, LEN(f$) - 2)'LOOPNL = 0FOR t = 1 TO LEN(f$)   IF MID$(f$, t, 1) = CHR$(13) THEN NL = NL + 1NEXT tIF SetNumLines THEN   FOR t = 1 TO SetNumLines - NL - 1      f$ = f$ + CHR$(10) + CHR$(13)   NEXT tEND IFEND SUBSUB DrawHelloDIM Temp(47, 7) AS INTEGERSCREEN 8: CLSPRINT "HELLO!"FOR x = 0 TO 47: FOR y = 0 TO 7   Temp(x, y) = SGN(POINT(x, y))NEXT y: NEXT xCLSFOR x = 0 TO 47: FOR y = 0 TO 7   IF Temp(x, y) THEN LINE (x * 8, y * 8)-(x * 8 + 7, y * 8 + 7), 15, BFNEXT y, xGET (0, 0)-(383, 63), hello(0)CLSEND SUBSUB DrawLightning''''''''''''''''''''''under construction' If not the first frame, then load the previous frame from file.SCREEN 8: CLS'PALETTE 0, 0'PALETTE 1, 0'PALETTE 3, (65536 + 256 + 1) * 12DIM H(639)LR1 = .4BM1 = 1.5R7 = .6R6 = .3R9 = .9995NS1 = 35: NS = NS1DIM L(2, NS * 2)R8 = .75DE1 = 1: DE2 = 0F1 = 20: F2 = 5FAN = (F1 + F2) / 2LINE (0, 0)-(639, 479), 1, BFy1 = 360IF DE2 = 0 THEN   PSET (0, y1), 0   FOR t = 1 TO 639      DO UNTIL RND < LR1: y1 = y1 + RND * BM1 - RND * BM1: LOOP      H(t) = y1      LINE -(t, y1), 0   NEXT tELSE   FOR t = 0 TO 639      H(t) = y1   NEXT t: LINE (0, y1)-(639, y1), 0END IFPAINT (0, 479), 0'PALETTE 1, 65793'PALETTE 2, 4144959'PSET ((639 / .025) * (1 - R9), 479), 3DO   IF RND > R9 THEN GOSUB L1   IF LB > 1 THEN      LB = LB - 1      PALETTE 1, INT((LB * R8) / FAN * 63) * (65536 + 256 + 1)      PALETTE 2, INT((LB + R8 - 1) / FAN * 63) * (65536 + 256 + 1)   END IF   IF LB > FAN / 2 AND SW8 = 1 AND RND > R7 THEN SW8 = 0: GOSUB L2   IF LB = 1 THEN PALETTE 1, 65793: PALETTE 2, 65793: PAINT (0, 0), 1, 0: LB = 0LOOPL1:NS = INT(NS1 * (.5 + RND))x1 = INT(RND * 600) + 20: x2 = x1YY = H(x1)FOR t = NS - 1 TO 0 STEP -1   y1 = YY / (NS - 1) * t   x1 = x1 + RND * 10 - RND * 10   L(1, t + 1) = x1   L(2, t + 1) = y1NEXT tPSET (L(1, 1), 0), 2x1 = x2FOR t = 1 TO NS - 1   LINE -(L(1, t + 1), L(2, t + 1)), 2NEXT tIF DE1 THEN GOSUB HOLE1FAN = INT(RND * (F1 - F2) + F2)IF LB > 0 THEN FAN = INT(FAN * 2 / 3)LB = FANR8 = RND / 2 + .5IF RND > R7 THEN SW8 = 1RETURNL2:PSET (L(1, 1), 0), 1IF RND > R6 THEN   FOR t = 1 TO NS - 1      LINE -(L(1, t + 1), L(2, t + 1)), 1   NEXT tEND IFCIP = INT(RND * NS * 3 / 4) + 1x1 = L(1, CIP + 1)FOR t = CIP - 1 TO NS - 1   y1 = YY / (NS - 1) * t   x1 = x1 + RND * 10 - RND * 10   IF t = NS - 1 AND x1 >= 0 AND x1 <= 639 THEN y1 = H(x1)   L(1, t + 1) = x1   L(2, t + 1) = y1NEXT t   PSET (L(1, 1), 0), 2FOR t = 1 TO NS - 1   LINE -(L(1, t + 1), L(2, t + 1)), 2NEXT tIF DE1 THEN GOSUB HOLE1FAN = INT(RND * (F1 - F2) + F2)LB = FANR8 = RND / 2 + .5IF RND > R7 THEN SW8 = 1RETURNHOLE1:   IF x1 >= 0 AND x1 <= 639 THEN PSET (x1, H(x1)), 1: H(x1) = H(x1) - 1RETURNEND SUBSUB DrawNet (deg AS INTEGER)SCREEN 8: CLSDIM I1 AS LONG, I2 AS LONGDIM XA AS SINGLE, XB AS SINGLE, XC AS SINGLE, XD AS SINGLEDIM YA AS SINGLE, YB AS SINGLE, YC AS SINGLE, YD AS SINGLEDIM D1 AS SINGLE'I1 = 2 ^ (8 * INT(RND * 3))'DO'I2 = 2 ^ (8 * INT(RND * 3))'LOOP UNTIL I2 <> I1'65536 = blue, 256 = green, 1 = redI1 = 0: I2 = 1 + 256 + 65536' $DYNAMIC'FOR T = 1 TO 14'   PALETTE T, I1 * INT(4.5 * T) + I2 * (63 - INT(4.5 * T))'NEXT TSW1 = 1B = 0   ' Draw tile borders = 80  ' Size of array (S x S)'DIM P(S, S)'ON ERROR GOTO ER1RA1 = 220 / s: RA2 = 50 / sH = 18: n = 3FOR x = 0 TO s: LOCATE 1, 1: PRINT USING "##"; (100 * x / s); : PRINT " %";   FOR y = 0 TO s      D1 = SQR((s / 2 - x) ^ 2 + (s / 2 - y) ^ 2) / s * SQR(2)      p(x, y) = SIN(D1 * 16 + deg * PI / 180) * H   NEXT yNEXT xCLS'STOPPLOT:FOR t = 2 * s TO 2 STEP -1   IF t > s THEN x1 = s ELSE x1 = t - 1   x2 = t - x1: IF x2 < 1 THEN x2 = 1   FOR x = x1 TO x2 STEP -1      y = t - x      IF p(x, y) = 0 AND p(x - 1, y) = 0 AND p(x - 1, y - 1) = 0 AND p(x, y - 1) = 0 THEN GOTO NB1      XA = FNX1(x, y): XB = FNX1(x - 1, y): XC = FNX1(x - 1, y - 1): XD = FNX1(x, y - 1)      YA = FNY1(x, y): YB = FNY1(x - 1, y): YC = FNY1(x - 1, y - 1): YD = FNY1(x, y - 1)      IF SW1 = 1 AND B = 0 THEN XB = XB + 1: XD = XD - 1: YA = YA - 1: YC = YC + 1      PSET (XA, YA), 15      LINE -(XB, YB), 15      LINE -(XC, YC), 15      LINE -(XD, YD), 15      LINE -(XA, YA), 15      XX = (XB + XD) / 2      YY = (YA + YC) / 2      C91 = 0: GOSUB CHECK1      IF FT = 2 THEN         PAINT (XX, YY), 15, 15                H1 = ABS(YC - YA)         D1 = YD - YB         C1 = H1 * 7 * s / 800         C2 = (D1 * s) / 120 + 7         c = (C1 + C2) / 2                IF c < 1 THEN c = 1         IF c > 14 THEN c = 14      END IF           PSET (XA, YA), c * (1 - B)      LINE -(XB, YB), c * (1 - B)      LINE -(XC, YC), c * (1 - B)      LINE -(XD, YD), c * (1 - B)      LINE -(XA, YA), c * (1 - B)      IF FT = 2 THEN         PAINT (XX, YY), c, c * (1 - B)      END IF'      WHILE INKEY$ = "": WENDNB1:   NEXT xNEXT tFOR x1 = 0 TO 500   FOR y1 = 0 TO 199      IF RND * 12 < POINT(x1, y1) - 2 THEN PSET (x1, y1), 7 ELSE PRESET (x1, y1)   NEXT y1NEXT x1EXIT SUBCHECK1:   IF POINT(XX, YY) = 15 THEN FT = 0: RETURN '   FOR TT1 = YY - 1 TO YY - 200 STEP -1'     IF POINT(XX, TT1) = 15 THEN FT1 = TT1: EXIT FOR'   NEXT TT1'   FOR TT2 = YY + 1 TO YY + 200'      IF POINT(XX, TT2) = 15 THEN FT2 = TT2: EXIT FOR'   NEXT TT2'   L9 = ABS(FT2 - FT1)FT = 2RETURN'ER1:'STOPPAL1:DOI1 = 2 ^ (8 * INT(RND * 3))I2 = 2 ^ (8 * INT(RND * 3))K = 0DOK = K + 1PALETTE K, I1 * INT(4.5 * K) + I2 * (63 - INT(4.5 * K))LOOP UNTIL K = 14PALETTE 0, INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)'PALETTE INT(RND * 14 + 1), INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)'WHILE INKEY$ = "": WENDLOOP UNTIL INKEY$ <> ""LL = 0DODOLL = LL + 1PALETTE LL, INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)KK = 0: DO: KK = KK + 1: LOOP UNTIL KK = 20PALETTE LL, 0PALETTE 0, INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)LOOP UNTIL LL = 14IF INKEY$ <> "" THEN GOTO PAL1DOLL = LL - 1PALETTE LL, INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)KK = 0: DO: KK = KK + 1: LOOP UNTIL KK = 20PALETTE LL, 0PALETTE 0, INT(RND * 64) * 65536 + INT(RND * 64) * 256 + INT(RND * 64)LOOP UNTIL LL = 1LOOP UNTIL INKEY$ <> ""GOTO PAL1WRECK:DOLINE -(INT(RND * 840 - 100), INT(RND * 680 - 100)), INT(RND * 16)LOOPEND SUBREM $STATICSUB DrawSpiral (deg AS INTEGER)NumTurns! = 1.5FOR r = 0 TO 360   th! = (NumTurns! * r + deg)   thr! = th! * PI / 180   r2! = r * .8   FOR t = 1 TO 12      x2! = RND * 4 - 2: y2! = RND * 4 - 2      PSET (x2! + .6 * (320 + r2! * COS(thr!)), y2! + .8 * (100 + (r2! * SIN(thr!)) * 5 / 16)), 15   NEXT t   thr! = 2 * th! * PI / 180   FOR t = 1 TO 20      x2! = RND * 4 - 2: y2! = RND * 4 - 2      PSET (x2! + .6 * (320 - r2! * COS(thr!)), y2! + .8 * (100 + (r2! * SIN(thr!)) * 5 / 16)), 15   NEXT tNEXT rEND SUBSUB DrawTrail' draws one further frame in the animation.' shift trail by 1FOR t = TrailLen - 1 TO 1 STEP -1   Trail(t + 1, 1) = Trail(t, 1)   Trail(t + 1, 2) = Trail(t, 2)NEXT tcc = (cc + 20 + cd) MOD 20IF RND > .94 THEN cc = INT(RND * 20)IF RND > .94 THEN cd = -cdXX = 250 * COS(PI * cc / 10)YY = 60 * SIN(PI * cc / 10)x! = Trail(2, 1): y! = Trail(2, 2)GOSUB MoveTrailTrail(1, 1) = x! + x1! + .9 * (Trail(2, 1) - Trail(3, 1))Trail(1, 2) = y! + y1! + .9 * (Trail(2, 2) - Trail(3, 2))' draw trailCLSFOR t = TrailLen - 1 TO 1 STEP -1   r! = t * 1.5 + 5   IF t > 1 THEN      x1 = Trail(t - 1, 1): x2 = Trail(t, 1)      y1 = Trail(t - 1, 2): y2 = Trail(t, 2)      FOR n! = 1 TO 50 + (TrailLen - t) * 10         r1! = RND         x0 = x1 + (x2 - x1) * r1!         y0 = y1 + (y2 - y1) * r1!         r1! = RND * r! * 1.5         th! = RND * 2 * PI         CIRCLE (x0 + r1! * COS(th!), y0 + r1! * SIN(th!)), RND, 0      NEXT n!   END IF   x1 = Trail(t, 1): x2 = Trail(t + 1, 1)   y1 = Trail(t, 2): y2 = Trail(t + 1, 2)   FOR n! = 1 TO 15 + (TrailLen - t) * 3      r1! = RND      x0 = x1 + (x2 - x1) * r1!      y0 = y1 + (y2 - y1) * r1!      r1! = RND * r!      th! = RND * 2 * PI      CIRCLE (x0 + r1! * COS(th!), y0 + r1! * SIN(th!)), RND   NEXT n!NEXT tEXIT SUBMoveTrail:x1! = (300 + XX - x!) / sp1y1! = (68 + YY - y!) / sp1RETURNEND SUBFUNCTION GetRatio! (Char() AS INTEGER, Num AS INTEGER)   ' Char() is 64 bit array of an 8x8 section of screen to convert to ascii.   ' Num is the actual character we are comparing it with.   m = 0 ' num. of bit matches   t1 = 0 ' total num. of (non-black) pixels in 8x8 square   t2 = 0 ' total num. of (non-black) pixels in real ascii char.   n! = 0 ' no. of mismatches. (distance-scaled).   N1 = (Num - 32) * 64   FOR B = 0 TO 63      ci! = CharImg(N1 + B)      IF Char(B) <> ci! THEN         Found = 0: Dist = 8         x1 = B MOD 8         y1 = B \ 8         IF Char(B) = 1 THEN            FOR r = 1 TO 7               FOR XX = -r TO r                  FOR YY = -r TO r                     x2 = x1 + XX                     y2 = y1 + YY                     IF (XX <> 0 OR YY <> 0) AND (x2 >= 0 AND x2 <= 7 AND y2 >= 0 AND y2 <= 7) THEN                        IF CharImg(N1 + x2 + y2 * 8) = 1 THEN Dist = PlusW * (XX * XX + YY * YY): EXIT FOR                     END IF                  NEXT YY                  IF Dist THEN EXIT FOR               NEXT XX               IF Dist THEN EXIT FOR            NEXT r            IF Dist = 0 THEN Dist = 8 * PlusW         ELSE            FOR r = 1 TO 7               FOR XX = -r TO r                  FOR YY = -r TO r                     x2 = x1 + XX                     y2 = y1 + YY                     IF (XX <> 0 OR YY <> 0) AND (x2 >= 0 AND x2 <= 7 AND y2 >= 0 AND y2 <= 7) THEN                        IF Char(x2 + y2 * 8) = 1 THEN Dist = SubW * (XX * XX + YY * YY): EXIT FOR                     END IF                  NEXT YY                  IF Dist THEN EXIT FOR               NEXT XX               IF Dist THEN EXIT FOR            NEXT r            IF Dist = 0 THEN Dist = 8 * SubW         END IF         n! = n! + Dist ^ (Index / 2) + NumWeight      END IF   NEXT B   GetRatio! = n!END FUNCTIONSUB GIF2TXT (A$)SCREEN 13: CLSGifLoad (A$)Col2BW 0, 0, 319, 199ConvertPic 0, 0, 631, 199t = INSTR(A$, ".")IF t THEN A$ = LEFT$(A$, t - 1)OPEN A$ + ".TXT" FOR OUTPUT AS #1PRINT #1, f$CLOSE #1END SUBSUB GifLoad (A$)DIM Prefix(4095), Suffix(4095), OutStack(4095), shiftout%(8)DIM Ybase AS LONG, powersof2(11) AS LONG, WorkCode AS LONGFOR A% = 0 TO 7: shiftout%(8 - A%) = 2 ^ A%: NEXT A%FOR A% = 0 TO 11: powersof2(A%) = 2 ^ A%: NEXT A%IF INSTR(A$, ".") = 0 THEN A$ = A$ + ".gif"OPEN A$ FOR BINARY AS #9A$ = "      ": GET #9, , A$IF A$ <> "GIF87a" THEN PRINT "Not a GIF87a file.": ENDGET #9, , TotalX: GET #9, , TotalY: GOSUB GetByteNumColors = 2 ^ ((A% AND 7) + 1): NoPalette = (A% AND 128) = 0GOSUB GetByte: Background = A%GOSUB GetByte: IF A% <> 0 THEN PRINT "Bad screen descriptor.": ENDIF NoPalette = 0 THEN P1$ = SPACE$(NumColors * 3): GET #9, , P1$DO    GOSUB GetByte    IF A% = 44 THEN        EXIT DO    ELSEIF A% <> 33 THEN        PRINT "Unknown extension type.": END    END IF    GOSUB GetByte    DO: GOSUB GetByte: A$ = SPACE$(A%): GET #9, , A$: LOOP UNTIL A% = 0LOOPGET #9, , XStart: GET #9, , YStart: GET #9, , XLength: GET #9, , YLengthXEnd = XStart + XLength: YEnd = YStart + YLength: GOSUB GetByteIF A% AND 128 THEN PRINT "Can't handle local colormaps.": ENDInterlaced = A% AND 64: PassNumber = 0: PassStep = 8GOSUB GetByteClearCode = 2 ^ A%EOSCode = ClearCode + 1FirstCode = ClearCode + 2: NextCode = FirstCodeStartCodeSize = A% + 1: CodeSize = StartCodeSizeStartMaxCode = 2 ^ (A% + 1) - 1: MaxCode = StartMaxCodeBitsIn = 0: BlockSize = 0: BlockPointer = 1x% = XStart: y% = YStart: Ybase = y% * 320&SCREEN 13: DEF SEG = &HA000IF NoPalette = 0 THEN    OUT &H3C7, 0: OUT &H3C8, 0    FOR A% = 1 TO NumColors * 3      z = ASC(MID$(P1$, A%, 1)) \ 4      OUT &H3C9, z      Pal((A% - 1) \ 3, (A% - 1) MOD 3) = z    NEXT A%END IFLINE (0, 0)-(383, 199), Background, BFDO    GOSUB GetCode    IF Code <> EOSCode THEN        IF Code = ClearCode THEN            NextCode = FirstCode            CodeSize = StartCodeSize            MaxCode = StartMaxCode            GOSUB GetCode            CurCode = Code: LastCode = Code: LastPixel = Code            IF x% < 320 THEN               IF LastPixel = 178 THEN LastPixel = 0               POKE x% + Ybase, LastPixel            END IF            x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine        ELSE            CurCode = Code: StackPointer = 0            IF Code > NextCode THEN EXIT DO            IF Code = NextCode THEN                CurCode = LastCode                OutStack(StackPointer) = LastPixel                StackPointer = StackPointer + 1            END IF            DO WHILE CurCode >= FirstCode                OutStack(StackPointer) = Suffix(CurCode)                StackPointer = StackPointer + 1                CurCode = Prefix(CurCode)            LOOP            LastPixel = CurCode            IF x% < 320 THEN               IF LastPixel = 178 THEN LastPixel = 0               POKE x% + Ybase, LastPixel            END IF            x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine            FOR A% = StackPointer - 1 TO 0 STEP -1                IF OutStack(A%) = 178 THEN OutStack(A%) = 0                IF x% < 320 THEN POKE x% + Ybase, OutStack(A%)                x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine            NEXT A%            IF NextCode < 4096 THEN                Prefix(NextCode) = LastCode                Suffix(NextCode) = LastPixel                NextCode = NextCode + 1                IF NextCode > MaxCode AND CodeSize < 12 THEN                    CodeSize = CodeSize + 1                    MaxCode = MaxCode * 2 + 1                END IF            END IF            LastCode = Code        END IF    END IFLOOP UNTIL DoneFlag OR Code = EOSCodeCLOSE #9EXIT SUBGetByte: A$ = " ": GET #9, , A$: A% = ASC(A$): RETURNNextScanLine:    IF Interlaced THEN        y% = y% + PassStep        IF y% >= YEnd THEN            PassNumber = PassNumber + 1            SELECT CASE PassNumber            CASE 1: y% = 4: PassStep = 8            CASE 2: y% = 2: PassStep = 4            CASE 3: y% = 1: PassStep = 2            END SELECT        END IF    ELSE        y% = y% + 1    END IF    x% = XStart: Ybase = y% * 320&: DoneFlag = y% > 199RETURNGetCode:    IF BitsIn = 0 THEN GOSUB ReadBufferedByte: LastChar = A%: BitsIn = 8    WorkCode = LastChar \ shiftout%(BitsIn)    DO WHILE CodeSize > BitsIn        GOSUB ReadBufferedByte: LastChar = A%        WorkCode = WorkCode OR LastChar * powersof2(BitsIn)        BitsIn = BitsIn + 8    LOOP    BitsIn = BitsIn - CodeSize    Code = WorkCode AND MaxCodeRETURNReadBufferedByte:    IF BlockPointer > BlockSize THEN        GOSUB GetByte: BlockSize = A%        A$ = SPACE$(BlockSize): GET #9, , A$        BlockPointer = 1    END IF    A% = ASC(MID$(A$, BlockPointer, 1)): BlockPointer = BlockPointer + 1RETURNEND SUBSUB GrowFlower (n AS INTEGER)' draw frame n in flower animation'' head, with 8 points' 8 petals, each with 6 points (joined 1 from head)' 2 leaves, each with 6 points (joined 1 from stem)' stem, with 8 points'' frame 0: All points at (0, 0)'' frame 25:' STEM: (0, 0) -> (0, 100)' LEAVES: (0, 40) -> ((+/-)40, 40)' HEAD: circular (r = 20) about (0, 100)' PETALS: radial from HEAD (r = 40)'SCREEN 8: CLS : WINDOW SCREEN (-2, -20)-(398, 250): RANDOMIZE TIMERPUT (0, 150), Ground(0), PSET' draw stem:FOR H = -10 TO Flower(n).Tallness   FOR t = 1 TO 10      PSET ((RND - .5) * Flower(n).Tallness / 15 + 100, 150 - H)   NEXT tNEXT H' draw leavesFOR s = -1 TO 1 STEP 2   FOR H = 0 TO Flower(n).LeafSpread      y1 = H * (Flower(n).LeafSpread - H) / 50      FOR t! = 0 TO y1 STEP .7         PSET (100 + s * H, 150 - Flower(n).Tallness * .25 + INT(RND * 2 * y1 + 1 - y1) - H * (1 - Flower(n).LeafSpread / 46.5))      NEXT t!   NEXT HNEXT s' draw headFOR H = 1 TO Flower(n).HeadSize   FOR r! = 0 TO 2 * PI STEP 2 * PI / H / 14      PSET (100 + H * SIN(r!) + RND * 4 - 2, 150 - Flower(n).Tallness + H * COS(r!) + RND * 4 - 2)   NEXT r!NEXT H' draw petalsFOR H = 1 TO Flower(n).PetalSpread   FOR r! = 0 TO 2 * PI STEP 2 * PI / 9      x1 = 100 + (H + Flower(n).HeadSize) * SIN(r!)      y1 = 150 - Flower(n).Tallness + (H + Flower(n).HeadSize) * -COS(r!)      dd = H * (Flower(n).PetalSpread - H) / 25      FOR t = 1 TO dd * .9         PSET (x1 + RND * dd - dd / 2, y1 + RND * dd - dd / 2)      NEXT t   NEXT r!NEXT HWINDOWEND SUBSUB InitIF Scaling < -1 THEN   PlusW = -Scaling: SubW = 1ELSEIF Scaling > 1 THEN   PlusW = 1: SubW = ScalingELSE   PlusW = 1: SubW = 1END IFSCREEN 8: CLSFOR t = 32 TO 126   LOCATE 1, 1: PRINT CHR$(t)   FOR y = 0 TO 7: FOR x = 0 TO 7      CharImg((t - 32) * 64 + y * 8 + x) = SGN(POINT(x, y))   NEXT x: NEXT yNEXT tEND SUBSUB InitFlowerDIM F1 AS FlowerType, F2 AS FlowerTypeSCREEN 8: CLS : WINDOW SCREEN (0, -20)-(400, 250): RANDOMIZE TIMERFOR x = 0 TO 200   LINE (x, 160)-(x + RND * 4 - 2, 160 - RND * 10)NEXT xGET (0, 150)-(200, 160), Ground(0)CLSFOR f = 1 TO 25   Flower(f).Tallness = f * 4   Flower(f).LeafSpread = 1.7 * f * (f / 25)   Flower(f).PetalSpread = (f / 25) ^ 3 * f * 8 / 5   Flower(f).HeadSize = (f / 25) * f * 8 / 15NEXT fFOR f = 26 TO 27   Flower(f).Tallness = Flower(f - 1).Tallness - 1   Flower(f).LeafSpread = Flower(f - 1).LeafSpread + 2   Flower(f).PetalSpread = Flower(f - 1).PetalSpread + 2   Flower(f).HeadSize = Flower(f - 1).HeadSize + 1NEXT fEXIT SUBSCREEN 13FOR f = 2 TO 27   F1 = Flower(f - 1)   F2 = Flower(f)   LINE ((f - 1) * 10, 200 - F1.Tallness * 2)-(f * 10, 200 - F2.Tallness * 2), 15   LINE ((f - 1) * 10, 200 - F1.LeafSpread * 2)-(f * 10, 200 - F2.LeafSpread * 2), 2   LINE ((f - 1) * 10, 200 - F1.PetalSpread * 2)-(f * 10, 200 - F2.PetalSpread * 2), 4NEXT fWHILE INKEY$ = "": WENDSTOPEND SUBSUB RippleHello (d AS INTEGER)   DIM Temp(300) AS INTEGER   CLS   PUT (0, 50), hello(0), PSET   FOR x1 = 0 TO 383      ys = 15 * SIN((x1 + d) * PI / 180)      GET (x1, 50)-(x1, 113), Temp(0)      LINE (x1, 50)-(x1, 113), 0      PUT (x1, 50 + ys), Temp(0), PSET   NEXT x1END SUBThomas Ally                    THE SERPENTS DOMAIN            Thomas_Ally@freenet.richland.oh01-25-00 (18:33)       QB, QBasic, PDS        292  19215    SERPVGA.BAS ' The Serpents Domain (RPG game) - BETA A2 -DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"SERPVGA.ZIP",4^6:Z&=14113:?STRING$(50,177);U"%up()%9%%%[-%a-%bGsR*jZd&7%%%(%%%1%.%%%n(j&if%yfSyA'yja4v'SUR1(U"x&KS$?OBv-r)cCrtoR=$a8p605;m.sHq8#rg,=t$hqWgQJf+Ettfj.Co0?Hnva5U"tO\eL^SjFXM?DG.ZSKMi?8kxmm>XHI?hm:QUo-r3]90HjQr)145/kR3%&gR#q)CU"y_TspJ%6K4Q2nHSLJG6U??Qgr;S0[SZS+yVz>bB4uCMVUH_^1A?WJGKbe11r0_cU"*(_-WGaw;hV&O%oFlZ4s_t=hlHC_/#>JHi*dHUgsR8r%+rrCEE:Fld-8*apqgR;U"9r/JgL]f6==044U$2e5R;Z[Wobc4U6PTRZ[WW;5jP\WL+u6RaL#6tohCpXRl0pHU"BPNHxA3Zb)$+NS;e&IXz[4OQIJkQH;ulIn,:tSS\b/3'c?L4Bed7MUsRr+w+5RVU"SJ)3AiMJM&Nup(%)9%%[%-%M_iBGe^*u/,%*%%;%7%%.%%%%i%fyfV.Sy'yN&f<U"=#KN1S9xlCBos%u9VKBwbW&zC_fGq5-+P&i_[2S#tVPutL_AIon*8S$Z0h?>odtU"tJR*5*ddD7hA7Pa&fBuRb2vWcNWn_AyCN-kDQPFQnbL*P,]2qF9P_<liTra3NhRU"2foIYnrg7F]xQIaP1w_o3dDdu&o0/y&SXO4X.3CYj/hH=5A,9xT%/aGbg_6D2fqU"<&AR)R_XfZ&jAo:uA7zT[+5X0-*d37>6>,)r0MlJi:634&<NM>zXl^mP79H-Y2mU"8q330DMqnWUm]w9;nYmB-.LXutQa[&(f0)'#5vWGF#VT%9GEA[pmnVc#?;L:+5YU"aVR4LUSkK'(C=66%GQh<:I(YOkgr/XWEV5<(?+p*^=i/#;elx74P0B1JW0ohM=8U"%4YHQ+U^_ZN*e_]\+910pfYr)&j_SQMT$VtO.X8N,4Oa4iD*H:P5Ni'$+?A(Ga,U"apq,As&pS;KHZAnMlTn:T]sTSSnp]#8F6w&YGY6ziiB\s'RKh#q5FJHAFbKfRltU"BmY1Hn$a(IhKg:5mNQZLnTAM'A'S*+e'Po46vOK++TCc:VQjao;8SASFKs^pprmU"WgMhDPa*GI*vC6C-Kkm7tPOER;#EP89m,h^Wc'aZ'QiUIl.GFlIEQ4%f0a2-HK3U"63$j&YYDag*,hZ^'0Y2)x:$#(P%Val$4YZahg'kU$DWO\E3ST)g'#5bU/:FEm,)U"aMfV0(3Z-Ik-B%JMRDTVv%_RRCQ+bMb9>&?q6]ntPK,CHs)X?QJ&=o>&_3C85)GU"a/*A?UxZhX\Gv=H[R$oY+[7RqRo4.([psurE.('N:RWp0FQdmEs7u^;H_pJ$C&\U"sl7kU/[c5L]qAo$8_Z#C1&Bl-jiNieQ;$JdB7]V]n%1,byyM_RDnB/ogo#U<oWHU"L3t*btJqGp[e96K3t*t+-dmf-8+P$<jp4wt?heg=9E>sI/+qdfhLuM+oCVhqzsEU"U&RHsP?),g&_*v+oI6I#'b$hU*E=8*En(ITIke/PQSj?sJfeS\_#+pA&B]$aAdTU"yS.+wj%Cr3\o)YDS2J2<1/uMP85O$]:&mT]Vq]rng,)FW%-yelrdZB9gJ(tDZ>:U"&9L/NWM7gp9CDO_(LVe1\ds9K=*P_sPys0tg0lH:F4NAl4rT(PUA)%#OZOR+OvZU"1IDbn0lIP^z[ek/ta(J0PWN#HT;\0ByIPyEpGY'HSpqG_hB]vfR/-^FT]j4*l><U"+*?O]%1v0at8O&;0:-dq+p&u)pGy8I:M4A0C:;1]HXW=3b^kW<lRvf]O*tmJ%:iU"6[#:4+LSGm$H\_lt*ed?<5fUcL:sM]+h:vQO/pa#/1FJ'L1:64[]06x.B64*t#)U"g)(c+J?/FgtH_pJ&S<NO7N_j%3lo9)2SDjq(Pwfrv?7bf5^k2w6uFN8:F[gDGcYU"P*EGxckRA>^Ljy^ew9rW)Zl=[BhBt]n1yo(=1qrm]DuC1gTELtO.C^H8tXg=OSuU"5cB1V?=#>7,oOGiR,av0G]F8+im6r=b173zRZ.n>$Cb,K$IrazMrW:+_&]*qglMU"^*;42WLsAuCK^aiDYScBKiVZ6X,;a<ET8R$Q6K3&zNMU,hSxc=NilBLLNx$#SBKU"4HjTun-id/6trj$JJe[na_Hxpbchl4*n$?$[JTdu'pWvL>9G)sViO=ElEEv0N,/U"M:yVszP<PM8j6gd7;bsg#rrSP\^zY\8mM&9C%Dj/(%8TgpSxMulMd)K:dkp]<3pU"lk8l_?0jpQ2N]Q8(a(tbt(ktui#8qFW8%l>QTs.qru+Jhthxelq%C/TCBN.NqtNU"E]mdQ9T_%)Oni05x]q&&p^mYhPos>pdmV#^^U<?Mwz>\d42u/wrj-rj4u%p()9%U"%%%-.%M#^:M)%$&1$%%(%.%%%%-%%%%xjw%uSifsy\^;8S/?e2;39&#IrRP/S>[U"m[oQNB7nr%m.*WZ7JbxZY&P7;kFe;5W72e->Im$_dLwm'c-?D*%%up()%9%%%#-U"%EA.^MHA8+W5-.%%#8%%%/%%%%wj%firj.Sy'yDD'pbcU1278zox&idRLb3b)vOU"&fy_zZ\Pe;CzEBJ17.AfUp_=9SYyqg=CrP,d%JDHYGp[8%wICDeO4o8#3cIGHh#U"6,I0DKbClA.b'j3_DKYPTX.\GN?QJ1L,-NNLGC0,EQ$]0/?IJmRX/?[8%]$8rQaU"'XbtcICtLc:eX]pmK=.'wAzq8,^Ob7Akxmmvta3r'qHHN/D,&eSV,fuC+'GEm;xU"eDDd'jPIINfifPkw09e/AaEal\SI=I)sV/H?T/QH_8<4irBwicF(Kk=/brP(xDLU"3YK2gFO[PIoV>BLxXood.W'o#>23LgU1oI%\Aj2m?kQ&x62_%ubQd+Ke_5WebQGU"6E,;/PA3(]Ph-zz=*>O<Q)NkA)*\]7P.<8q5%\%cnZA7Smx_)62e$&>R7[LkREtU"iW4[\$2:XX?-EOk-)MRrF<KU&tUW.0K*OB#],)0G,7[B1Z5nU[,$]WnmTWYv<BXU"Z+>]VwCaQ[DT-C)6$9aohSY+Y_ftpC\:y$if147t*%MLC2UUB=)rGe2E)]XqGiJU"+f>;*S%nk'kla6>^l(a;v%x67-D*ev&m7D\abOIQ.(EMl.Vl+a#%I3sw\0^wD\)U"t1tOfw0t)[&q9io&pW)PM#bsDX<8gHxoGX)o=X4]o.tiAE,vVPS.?1gEOroivU\U"gj1'*Ep=,8_mw-2WWeM:oNwv-.CS(v'+jc7.(2Rn.1OJ8g=UR3:KUB/,]=L<I%UU"_2k;ve9ASf1l.M=C2E::+'j/ag$.<^o^#BkDESt_[=jE-qYIZq-gD5R>vXNqB/7U"G.\9.><Dvjii$^FcXxHc^Es8K'GH&neT]of]Mo&MzgKoH6I+U?<c%Q-mQH+c<ZwU"b<2oNx1OH*ecIvjfNRVb'&wZx/bDBBJYRB=3hiG_\R0=uR/dVwPO:.-;u7C*VCZU"s8N5dCf=3b>%OD$\NF&,NznOwOU^6^spik&P*S(O^19/7xZ?>?;oOQY5Q7VI]GDU"U+=Tqe3c;b).;[6%CNiH9RJ>VB[QaCm^eI^/c(#=$Jm[9AJYgxnl4\Kn8)Za*R'U"\Z$j(2ALj]=7W+tA%1UKjA)(O<CiNCG6.Jmp;C8Mmw,T/<&:j+U-KhgBQ>h+pO\U":rFI.1wYRfrsg'h/hX<7fSJJ34CtG&i7;q,TpS:p0L?I.kFPla_55o,3Kj;7T[?U":T;ZgQty'OE'$%D^_Gv<KpKn<,(Rx*9hBnn,=CT<E;;HoAjhPwIJjzdK=SB>]EaU"1yQB[dRd:^/=8jR4D^Mllnl5*(x1mNIov>AZ_^2P/c1pQSvbQ&eC>_NU8FsvquNU"REi#Z/&?d3ATk0#LmFO>,:hdwu(&XJ62adM9)a708UjRXl+=&8h_l-jlv3I(_,,U"n]dBJS8=EU9bC)aU8N<U2]r<H9_:ID5u\GQV?#vc/o:c>V$CKkp#MGvsY<e]YN&U"ecmfkhKpwqBF4OYem64(1JHfBPfqw2'wjF-HF%xhoc[-,^t\HD*7.r_gsZ3P3icU"^0OY)%O$aW;D,<hk6>2SrZlM0t'Rnp*^+y.M>Y+DAG6KC=MtaEKOfKTPCOSNqJEU"O5cFgR?E\0KR'*l/Q.*J(DYFi0*Itp&3KgU:KQDRU=?gp,)r53;_/$7*DL23(BjU";It+.N3H:yK*1OK)N-LeA$:jX/]DwKpWG><[f/:&NP$R4uI5L?X+A1lE(jpR?*IU"cmfmh(,Catil].Y7c2%m'=0B%t<BGk.QE8I3G)0:Ds.Ex6O)swmW0QLq.NGgiprU"=eJs$P$(V=m_$vZlXJh/tQxxj+fF2\^d7o9h'';1iXVnk:lgDho8)o(iIt.8uGBU"]QEm;vh+9\m;hh<MIsTpMmO?&iI01Mq:S*D,uCix+Z3W7Rs#Y1w:k7ZxjeplU\jU"-^mH[ebcj>4cVYlXS5;,dJiAGgLeKKH4>u]L\%,8.UrBi^>vD'93XWHm6;Z5d%8U"']bFjmEK)caNqcYY'SbD0)JV]6GsM],I7ENW4kW5j3bg%0+ZP?Vh6p:*vkvCOqSU"SepV,G*&J&#fXoLpw8_EAh/QU'h)4'zmQpi:]58j#>=P&m<t:RLpW8KRN*1L5:eU".dMrsQ8PEf'P4ijW7xE)d2y[B<L8YoG/;+jw%Z-fvDUel/'=TJeJM-#ogv<ma#pU"P2npnY.9Wi:./]q92Q.9Z;#k(k.#3s5go6m=Rg]_<+Usu?hmi?xZHH8NtH1vfnPU"24v?fg\tC,<^)XND4/F(Ki?fetXx(gQr3#1#,IJZ0:XXn5p,s^j0xn-,fwE#oVKU"LWC;Y2Et#p:x:uY$x8e/%^wz)XFP>y&ZVJmZg4JfYkIw*6UlYt8e5Qqh#t;\<sjU"kA8Jf9<Hw>N<jN4Umu<s7\]tcRHQ5.ieVVl7OQuR8^uS<#xb4/fi_\3$FMmzU#BU"M#T5OUJ)&Bky]56?jImJ./0tn1z<sSm2gfLH*rw%Pyl^+=l*q92S6x^A5XE4]r_U"Y5)CaKXgdVj(ymY_*BH6ZO;wd'I/656.N;rtD=8L1I$D7dUAFe4/R7Mb5Nvn.)DU"triQZQmQc4D%7\DOpb*ko8LlIF1#<'ClMGqSqE7p0;Yb7QDQV]b50-^LZh4O$^QU"U,1gJh]R(_J.BvcDN&?bGkh_a9mTabUEJ/3'v,1LWq572J70PY)+;)0ap&wi>wWU"+i/hfmiE#n-_V7w2Z1#Q6p7_j;BM);as<:xuT(n>CjJGS2^h0f>YtPes[re_VB9U"GIs.<wMp4nG+=(4CW$rV[S7H9.OhyaY#N%l^pD9iOnFc,$O*sLv,Cu%pXU[EL/?U"0IZ3*Vs2NN6s-Q<f10'tJn^1$\neoCUGa[)$7/hAu35EOTSu>%wKs9Wk=sTx,%uU"p()%9%%%.-%T0#cGIT'xrP%%%%\%%%%.%%%%rf%hwtS(y'yPHCEp&=mHHpu$^CGU"uEBZ^-CBtq[vmtE=r^^O#sQpT%W0pX:pG25%5%up%()9%%%%-%)9A^Mn0'69'2IU"%%*CM%%%0%%%%xjwu%RuiS[gfxfhL:FTU]aaFVlrxO?O3#w>VjiFcc:IVN#Xl]\U"F7$#_E>t_0Db_-RnAlp[FNpC*(.y&IEfYcqlCXV66p;sK0qOw(gpuM[9/*icok8U"r.AWiVT[Lj8ssw2j;f[]PCkeY1t3/#$mQqOd4bBarL_63mNq[GRe=,o(QkL[3JHU"5US2a<ac\_EKd1Y(uQ]D1WTl]]Y\7m[D:SN_^_=FDBc9R5Cf5%m$6%OUvWk.Jg\U"9H8+3$bm)rt(0Lfq++7t2GMJn3gMJpUGiw:Q<Qi=s]>vrfcl-<]<aqrcXrouCrbU"RsVa_x=:(njd)z/.Jil3bxc9Bcv9LVc-ivc=,5HC'qZsnCGkM;*V>Nt^dKGdaZjU"%)Z$pT%j1mPD8Qu>\XD?#X[EWHYMH_mvdO^Pi,d[:pnx>mfk8kRu\f\Ntwxn3%uU"ekEWL57HC2bu871r5Cn^pqANnbZkOdE>GdB#aW-bBU'm)U5m]Rqm%Xq\)cfsgZEU"]>$XPuRDab:?wFaj)JqoWTfPK5HF)MNnQTDE/2F5LHnt>('hgn^_44:nbRN2[BeU"0_YWHX;$]B9CWw\NddoE+BmOKi$(eE((i,n^qM4k[:^4<[b,suBFAWDtG$)cMBAU"jS_[K3bgcWf];&_r0ZoA;3WFKkE'(f44Sp.2.7J6Fi_tNFx;m_0Q]Ex?p957IRmU"%ZAt.:HFQ\,h8B[*l7=t6]^TQDtBAt=8e6EcEOQKrbAx?srP#+F$4Q>1It;j6rFU"h\=TT(l*xM8?31xe(KufkbkEkj$aEo:NgE5c05F]l55Ma4sXqTfH]B[U+Cp-rnrU"8wMidH3D)wI1DZ>TVilx^D>d0&n(pE2.o^]LK2H1siQAkjLL]DA=q[]TD,\+ad%U"lsoSxPllA]9>DuYscbT\O&)u>44Z,?E<RfUKu^hlSW)5'eB=fx8LPxk#%/Tq*N)U"cQ$NRDBVV;fZbv(LvWZGY#TmEn2Fs-j=XThg>\=Tbklw_eeqoh]wVU'5$<0f$<TU"+b4q#^$3MYLrpJ6+dES?GhHnW?7/1;071W82>KQRHX3hkTEgAWEH+-$,c)jaWB2U"Daw)fq,'_;-baILjk5232$ZgWlPnM63+B)^X.Az?6Ms[3HI7X2wEkqIXgjez+Y'U"A_H33X3b:Hdh,dYo1X')qxMj=YO(O]Y'aa(It7t9.XfI]KEX.XYWZ=%r10qe#H<U"Cq_j$NreTpWECeU;aeCx6udD$hWpxi$-wPVo=^acq4qWR<_g5E\Evg/poq,FhXIU"$(F'/MO5G/,N6(6??45225W9Q'=N$>f.C->i^?L7g&Ep=c.D-BMiaxdQXB^b9wtU"zdH8<Vbl$ik>%0#XVnT6>o?wj84pP'fqrGu:wF;G$Y#s>c3+D\uSfY.j*l+,hm<U"/P;ZP)?224iC_yu2-RH]1+&[yOpadJf%-AoiFoI.g[%AY;)Q15Sf]=+A+F1uH')U"gq*7tVQeBrE%N-Akyb9GZQ[Iuu%'&mdMu0w]&4iT4-:#WBzhbv15(o$'HG+WA<pU"LmTGU<Wf(f+(kda226d]aRLI3*3TApOOk(glExEgHb%rb&M?4+4uC<Q?N4U*eHkU"7CIa'BZM4hD#:F&hfFiK=3YS5whtg]w<c^.iiujkvv(nNS:/gZGj/I7$z\Wxh>LU"uoTqI4Q47:+5%Ee9iaR=d>5u)p='To#eZ#cDdcigv_xL%NEREU(ILij'EsI])a(U"Y^JM&KOmPDaN(QGHHO\UEA\peV&<.aLg?zI6hES4Bk&;39>uSoVo/6Jw](Ex'R(U"Z42e^mJ[cd;E/pOGpr?uV^nnNaZQktqK>$Z4^'[Kf*)]d=UTYY*VJAfi6\-vWPgU"[ta7:P+?N-%%<<pGmYdgu9Rt\H4l$-[:b>i'EC&0+LflM9DN(Ed'hOxR%e0BNn-U"3'>aNQAOp)-[dZF?v0(7PMa;F&B5+MY-^qtY7S)'dk9uqU?+wJ^*JSe2IJIlXISU"yBnX+c)tUZB*-OrJ9<s/_4y:AgUzfdrqggJOK/k^R*5d.jkym&.=ec]b6s-mqITU"1m\E$PO<;[g7/1qaVED)\j3/(dLe2&R,iceVZZ^ildqL87ccbJ+_)XQRTMo))O.U"IWdO'T)PFR<'eRX'_ZN5N<QSkm?._-.-6,Jj4JU1]dP:VEj4BJfwYFTw&'3?36nU"\:7uj.DFIIEXQi-)-R]g0:.oUC,g.ihYmOB1,>uMFK-5bPKDBVpK_pbKcgcs&T2U"fOC'12V1u'y]S9f;e+/?ZFr^_4t>jHiYI)/EWFj<0a[QN>3\qV$E_S[62u65xf$U"oid4agL)>+5Rf.^<D2#R#M<R7N'DqP/0:&X0KQ>=NaM/i_stYLuw*/MuGr'.9AcU"4'[l+U(x&UO4%SvH#gpz-k:QC%_$pNI00LL/+M>#4mVuB'9bi#c[R1E=FoBp_77U"3$(ru*VIom)X*Om02jPe)vC;Q;L;Zq+K7MT+&a\H*mJkKFs1EX+h0.NKu.uOcZ(U"bT8[wa_q$=/.<Nloq$?Xa.wsZ0Pk'#h0<S.F6Ok'L#0<S9.6Ok/'#0B_SD5OCf'U",01BSD5KOf'6g1iXP1Ghc>N]Yv<^xY\5DT%5NO&Ejk+kBH8LhFv8J+q*t[>Ly87U"[$7f8b3?*K+r/R,.e1V^,)+E]IAsOpJYkSpRArj*gad22#,pkd0w5N#1=Y$)?'0U"PRjmJdLwdVU_\4_Q+kTa_X:pg&IYLM_FWmL_IEH#a[8?8/F0kDILCxh$N'('vZ^U"q_DS$]>h[swGPM]#yf1?i<YIU7Xhg/e8d.1Rvj\iiatF6F:gBx0i/Xd;mY/EFa+U"t+Q&B3H>/*Bw8U&MAPbU^%e+i3s67qVzXmTfPbvY+REx?<=3>wU+[IyB0n$we?YU"q$>^>Y<+IdI%.\mm-JSZ+wi+e:kCw$sYXc]2>W=z7K(\_S+*wRkia?j)(N3NJL'U":01F#</.Ns(u7Y\4aGVR4W^DU$\]n9tc*)02e<dF#]NZ5frYI=Nbt(6/D(?Q]t.U"IfF;f8AXs]=lq<ztCr'y_9[9Bq)pAF&./<<=3ruFLi.3ela9xf6Yw68_$hL+<1'U"M$*2Qd<rqIf=D5c_j5ML7hP5a.sf*EKgnX-7))bN-=mcI.V\.uvaW*ZIuB_IuH)U"Lrbk=R(;sgN)yYK\YR3[plxBNrE/R/GX^0dC1\P5J*./WNR%Pg)2xe9Wi'Q[*SiU"4>eWM?Vcp.ej(kzi3U*O)0BW<Kq_)9m]t%DQ>huQB*Tp/Peo(m(;(u*NE'8j&JGU"#1LW=*YPnnkzrb2is5/M*5\Zhq<%:a=POe]U78[[gZuqKdu<3^^w22fkR_AaW+3U"(EK4*6IQxCOLq]uV7Xm&\O6F=o;(Z>/D]Rh8=sGd(P9SeAXo<UxD#iLa)d/p.;EU"%2^b=bk/5RVXJ;CsO0<NDFySW8/pu3YI+;O#W89ex]9,LMm7&[yd*DNotQ05LlFU"o7z^';i[v/=fNU/%r_&w7WRfJCU8_<8vmE1bYBY(O-42i4ajXQh(]xS#Q30;W#mU"OTsga=KnyM#1#5Q,\P##H1dKTx\$NbExepoi-N:FZa5NQl,0C+,\]4jzTRYPPquU"/dHhjs,IHEgs892&#SZ^zXkMc0NMfPTeVue)R6e3O'NUp9n]s2G[WkX*P^)GW8]U"ufMZJXSAKQB?\BlP[TlorC;#qz)Evuhm2QCb:(zS=;kY\O#]smiXIYpU3c(kL6bU"7q[;U5bO77r?q*0+inN>E;=U>Q\mixe1%X4mK9L/y2YnRz6:gUYU/S(>udN2CWeU"QhIEn-Pcaf^ZBu(cmX<q8486g8XDb),x0OqJCrtJf$FrbaqfObdMC53i:$eVNZ$U"m=WZ7^M%*x)\RaWku$pYQPh'f*d])wkT)kIJsBNwZq:Oba-d1A?_6<,<[:8N8/(U"W'pu<+ql,Kk<aTLY*$K]8;$h*aNA^=RI$v#7Tne(i[I0GkC;[N_jc46Y_5)_PVRU"9:N\vIFGpNr/h%Pr8IYt7^U:6Q/<&-)jVGlJj>2RcQ$;TW$74we2/'rv=05j5hSU"p$Lci:M3rGO_$(YV>:b/#R)$hRY\1)QJ;&4W&+fG[JifeL8H5:bNO(M]jvaZb8)U"\&nPI[;'?IJk*ZP'Jyy'ts[MO=/q4W433lw4O7z^fxHo&3JC)KT?ES;ClrE5/_aU"5,;3[:op>zAOn;CI)FWSLdsZcd;&z$zcCxL_wO^_iy'TgjY-#Je(K62D+FXQIKHU"Os;S#:6'WgsL4F,NMs]bg-fLCtYzS9+%_l#Q%VP&o.UdDgTL50ZlhPi4J143A/ZU"aeZst=2:sAY^*d/l\C_jEW;,/W]cp3*&H;:k)4dwlMpZ/V:fGd6nlHJR1ZC1#=TU";vzJ[LwoSj9a;#t'0Cn7rmL:jSa]k5j7DhUt0N%L%#?P9,^bKWW2P+y%'F&.b3vU"eA2lKnZIf6i[w.:EG<ifKa6H'pffjSH]<p-09H9ruM-hL_%DoOLnaUJi;E;7NB0U"#m0$UBi(feVYckwt0XhwUN)Q<sFV%eBz^5hZo_(dWOB=i#MT.K(^-h/&xP0_OPcU"?TI<WFyed105+1MAsad](0dW()qEo3.1hiidMverw06t8p&v.n_4TDIANC_fSU]U"etPi7i<[T8n2HXoD$TJ6V&D2GGf3/5S3,1Xa:VvVssP6a4ZMcxe3SSKmLt0R?-;U"EuuD?;Pcl%aIF-[Cg'bgwrMpQ8/G%-=bF*FAWpj>F&9[+1)[#dTY$)A/5OHXW0QU"dV%v^A:-/W:MYVeT=yAYk]Qj$O0ilYhHXulYdIcX38V?A0[,(kcPujOR+D=SkanU"5*1%R:;Z;ADqE]Pzv4YT;B^Cvg#mTUO*'+U<?+'M$YLox-*.)j%kDYgw$$6y]iuU"o9xCnp0j+sVV[,Z<YFz,g?fiil)*U85lA6WfwFh$6&O9I&k>Ti1xkp-:tbVXv=8U"8&EcTa0ZEeY?FC:YpZ,VX[IKPA5[]%9'wzhDQu>e_FGw-Pq:w)8(kRo,IgMYa^[U"]&^BN*$D^ORM7+kF3<VPwg?s62+tOeC4Tpwwd7MnwD&,qU6mG(7n2Nmn>&I1G7RU"5kE8yp:YbMH=X;bcfP)VE./at^Qu)%9_9FhY8wuo/Z,;wCzE=USVB21c-em)D;?U"#V(h):m;v)=b%j890NSdQEDto0-M30:2G($NA'OnCyoB>Z'C7VBy[A5=4\D<kCLU"]I&oP#EfYFZ#N0<.M>#4B]A$6\%[BK&k,KFm/IqNjmc4]:%,VT-2+d%i2f>_.T6U"m(zjjz=,aJfN5[qOr5U[#E_YEMmE9utcQ<Q?APiw-^LX\JD[tdw9ZIsp?f6m^NWU"nOdE(n/ndvc&.7*%ff.tEX[]lz26*/RHPQIp1O7(lf+f:P,G&T4/)*bW>l%D>_'U"8-z6(pF*Y7js/5*qN%XSZ<IOnG?e\13gBc0;]#I8'JvO-%2wfKFX_G2T2cddNZ-U"\1;A\6&'L23-qo:/R2R1t,BVDxAmEF>'a>O?LVvI'H&:3_v\6T^_pZxr4PFC;V<U"S^bVR=x:rUU\YN-2Q+;PdkpiOvp5I)\J/Z)&/z,UdV)+I7+]yaqcj*(YM+nr#K,U"1<C]^oYj=B%>6(gYmeBpX+R<W?3+c0>=/r&WmQyn0^0#F>>'hLwQ%bn.Wxwa1QTU"8(C0DrtwRu9jN,eecfWRpe=>(+?er$6ImjAZdVM(b-,SElHcrV44eu/Aa$1)FyvU"-x4KYkU03NA%?BHoI^;tT0kY.?S__T)kYIJHPBToQ'\b=kVx7:J^VSjI:cLm#yvU"vJ9Rr/^^[jp=N6y7:%k-%:kQGjm7rxe4=Z0M\C-Gt?\rG;'VH3ClhX2+)HRqax'U"2S\sKo:FL+zb&0G]r7dmH;6HMc3z3,,*kR1x'RN#cdXs69/;6X'nu_L'-'Um999U"#Ig/?YeHOs9'/3g/X9kO_+'Ww>[v%zM[G/%s#^6*T=x4Co0Pym\D\&WHb;0DBgRU"&./m*(Z4bFt&52hG<H<7ow$6/ZpjoW8fsl(WU(?IM52>.5=f/2b2HsC32714>25U"=3e2M?&r%B*0^52o]:g:'WP7c$/;UUTK^l90gi?f6jeb;d5:rJ:%e^R[U<O[Sy&U"A6g$;xNrUgDVSih;A$Rb%4DD2RW*=<kw*R*iIrDDlG%up(c4)2''MIY;+akwz%:U"O^gV%z_gi/?Y>;9;MjOK%6Qu.A_TyC]1v.S([<5Js9%#dSN2blsEvkY'KF>?p>2U"I\t-AL1j3<CsgQ\E2/\PlV[07&_XYK[Y7AbPiFEyG]/;#cXbD+I*^(_zg4k+;mWU"KeLOC])\i2E2'ELg$;EED#Bpl\2\H?Un2<gCYBlGhqFJvt?S2S^oX6gg>t-sZHAU"(:e%ann<WKU1cO=n,9S&BJXzsMf_-dKb:s07Nv]enQHG.dg^eks\j+AnQ)]*;,hU">ES/EDZS[Q$G0K7B?m4UqAR_N[c/7?0/5s1;1)v.Zk>XAkUY:.Oio%elNS0f%a;U"6]Vv_hXZliEp2dNik+mT2-p41n;Fb(8(KX1p7/l363e<,(Vs_kVOqc[aRoisqRJU"V[sNOZi\XmUT&PB44Z2yKnP03Q7F,m'<QI6))>F*&7YtHe#KyWGFxnY>Vum]<[OU"t</6E/wXCe0y1+l3B->^(2014+O>OA1ceXA?9?bo3Xk+]Iu%'Rt^#7Pe'%nA/00U"^$M/;/drio\d_iH6]I80V_xQ(T>G8#sc9.\aseA5.v0Iatlod$(g8YqX3<Zndu^U")=>)^afSHs^<W'_0j[b_&:OAuZ+*V4,$FG9vHW%,;L2q:?p*9i)M3g0hvS#g8&ZU"ESS0Qx/NmiHjgNmR5[Fq/,cn_mT(C-0][G-i=/A6gW'JP:htf0^N2^JN%rgT0/,U"X?Cw<iGcOhPZB<'-NKk4Iivgjv/:(VrWD;q&#PHEzMcH<s_G\1j,?('5^gg^A]9U"AbS2'#Q)'U,Vb'FE3BD;&*)D/_f39aI2,kyg_k^X-2qN#.qf;0m=VhjBS1W#a]wU"_NbIC-GiC,^t:i/4nL3(.&vOV&u6]9LiWeS31QbHLY)V[[mGn=+MqX-OKHS8CdkU"scmx'';uAIfkH9oeP6QiPLl-G-:L.O7NXwUUo4N>v<I-NrM+R-43U>$L[?gZ*2=U"hU7$);2-AU)HN&8OR*R1r#mA2XzJ<.e2]ua2k<]TmU%6u>Kr*&\hu:\1XPD:pnsU"_^rA[#Hq0Y2?Z[emTYu/qQw,:_&jxu,M=XyG*U2:Q?;vJebvsKVM.y*Cf#uvBkAU"l3IFx+.LpW.*r%(n[W/cOm,&?D01n,7=&Ff.5Rqgs5ZE#W-b[Ick=r$OP52(Z*cEND SUBSUB V2U"Fi]'GMK5;]W0oi[6/sr%7AxaL^/A7K_ktZt>/mmu(%X:10'RfVKgR20bWHlosT#U"^wt4dO^WQ#DlEDyBpJf?hv.p;4mltQM;MjY]D9aDbBB<z:vq&?++?%[ND&SO\3IU"ob1(t[AjIYK;X&/=GPSj2k9FmhxqY?v?)VcxIJ=IfyCj$X55;Hr5xD(M>TGG7D2U"V+Pk5LD*mvr*=y*NGfJK7X4r&0t/Cd8N;w&_^B4hrG%2PqlBVGqlvuEx==8V[_MU"r>OrA>PvCsM0TlS;=PD<4\)YOXA=U*B9=m=ZXFWe$tVJgbA*\gRSwt8]oQ0us=(U"Os*vM%*##z4o?5P?0>Nh?XAg'Swv5n&8Dym)k/AVnGDfBNL9h0(y>rJptZ,BT_NU"SK-HXoP74F8M.4F&zK*J%7nd(B1YC,f$KU%gQnHG(41WTr(+%DuiaMjy)VcW8OoU"?zqL(?txWA4Fgbhz+Pl]XiCNVE]gwcY5O4_wQ&0OwY7BA\Fx3(m.Z8:xyn(Kv3YU"p1/?DQH)OmHgHgS&Pl^EmHZ=+I.3;D3=_*vY&WD3Rm2RS#(N]F_#[u)_D%,r7e*U"+d&CV<oElC,n4YeF?1^_]8.F;&wKe;lN2O.P7A[.m'p5RYX-SDy2M$)uiT]?f::U"JXLGQ*qpg1)GJtF+5l&7(tF';[b9^iW4k'07>Jxf\-#[5&'7<mb/MJ)F_SWcrvTU"5,Pt9Z:S_R>$?f-'g3CpSjC4U7VFBBXV/0gLq\),sg>WGLoD&^E[eh<D7TND',HU"L^N+\oM5T*iWhA\w83j%I:.E=OJH1^'uh*WfECjE3Y8'fFS0*?NCJ9OloC/0mBeU"nfmBeBS4Z2yOKJFwS6m$0JhFlV3sL3zO1;H'S5m$pqePG<:W\GhU2nQ)k9m<xcHU"m6dcgYk#lj,L=ATx=GCuC[-bSiD$sDtZ\qX?4D^Y/h(04qBqF(Q%_?BVsiE>.hAU"5XBdoc'OL;oLTL9F=2BoMAo,ROgX2\fIOCe*D[9poAh>A3#1>8.>Mq?c^uG_n1ZU"lYNQJ]f[=kvN4ruLug]3)m,^5a\,N_5+(yeNZj,7<5-Z(C<2Se3FWbna+;[A1^MU"?vtd*n)[xqzFU)r2vb6YRsS>14z-bZ_[N2IrJIn;oP]bY;&C?4WN[LGiI7lAB,xU"zcYbTkcK+WKB_E9vt$BNvECRkf&J6,9.ZVD-Jb9-P4.0:>2?Pe&^,X11F,D%v/sU"&v*/\CS10p1W7392^+_kcY972MGhnQ<#aCfSw^YRKMOE&H(Ed^1?Hj>6[;%Pa[.U"3DIr,:[#H%HlJ%BG^\/A4(_G(_u8(_/2(5iX(]IOWD.^,hl.aFk8CcD-,_\bR$MU"-4c*8dFC/>;UKWYqqjN3r>s_)6QGa>QtkpmD/_/1V&$6a,tQIL-J;d;kQli>tN;U"t22>l._k'82fP.C_w#yWOlASok[Epsriaj5>'(_f#?OuFEFniFux5_/2)fAOOtcU"#TK^VD<G/*J(rL;\K6nb[(BHb<Q*7?66j5p$t7Nx0Uqb#q-M7Q:m<M9MMswz(iKU"'07_X2;/_$a[9EE&YZY?6<K;Cq0&=\^('tn05n.Z[N0'pkx7$KVLDks:2LRM&BpU"b83TTMOvF-=[w45]EFcD<_8)+t*x^J,N[Iu,#U([p:[NS,''2dmOSdV53E?25jxU">>(Nl*cNjbt0Aha0Nf_Pe&<YiX^*F\.T0_?]'Yu+)2;gU^?Lh2jS10Gi=EOg<SlU"T(WA[#([w:$a)X</+K9uJ2?QUmbR[Dt'HqI?#G(%Sa_-bv'VoTLruO61qN[i(7eU"K/<-oSBw\[uN?eu8h_s_)C6GOPpD1io(guHO7W2f_G.A>yqKh>LRSTf9R\K(RUYU"O4aU2&M7F>DzaH^Q];qv<9*<^kLI=u:(Rbp\Ew7LJ,r+Ah6=HB,A2=*v)2R;1++U";hH:#f+%?JC/:M$<m'1Ejb<iM;.WZo*+gcUAs5uxEDeDRB.En_u&+$B1Qt_b:'SU"^:KI&\BGXBNiCV%qO;K?q%):Oel/JL=LX,7:L8A%%_G>4/A#k;F,1?e0#?,Fu&'U"33JRkZY-xe;*V]8P;>V/h(sfP.H(i4FT+Hjt/oY<=JDO1N'R#;.m4,?[?^b3M^?U"uak7&J.W2NpIxbF;L]E#dKnc.tdfM.2.E0u=my]7]EUu+jIE\vZC*>B_273zIQFU",<a6s5\E8Ak=#8/]9Z:ZW;I)-YGSBMUY5+YHhk&FM/HZ,1NJL+y-cW]\$\.WyJxU"]33iPUgRC$I'7kT/C4+7si1I1S1]E7f5t1n5=;xWmp^pZ2otKL;)-oH3eg<gSe>U"g'6-KvV=aTu>Q']V69Nc*\R*^<qK>.eEO2Q*1I^a^[CUX>yC/m?RFC]Zi(i,gksU"W*CHo]WYoccP4pULL10FCf\#o];W3>I--;8&/a5hxzv4jB19.E_NBJ>Se7CHWx[U"OEKeaT$Q^<Y0SYGn<vE96lUQV.\]q-?)T.%5Gt.P:C#&*?7g8HdLg(WD7mNUAVRU"B\eMUGri/C4[rUFZ;s3=9HJBI+vd'5GD.$._o(.IG%\b/h?G:EYkvY#R-.%.$CfU"PSwx&=TRd:)fiiC3Ir=jP9%oS<Kh:vo4CeI.OaIp+VC<P4d%(vo_G<:;p-&kFZ<U"H.5F;$]>QAr_GL>Bc2V_QqtSw3LQV8$OHs3Pfng?J5[?17$3(Zz6RlKU,[yNYrsU"(-Yv;tD';oMN[-<S0h%IOS2R3DDX9OlrlU7>R'/Q=m?s]p;klRut5AVYdP[4?iDU",'VxPh,Hq()6win'Hd%>:#6Hy1Sl>5o/]y%Ti=G]]NZLmr('5s&>u/eAL_R&ap$U"BSfGkCTzl9FuqrX?=xnFUkW+a&CZgwD^ZjIck[[Ltaw,/vMmc^r[Rq0SZ4F40LLU"3jl[cLT8/xm&1b?1\w++AW&BVm'n(1V1f$^-if5cCEPH'*uL&j3j\z-5$q;Ah<gU"GFm#yY*6*mW9+as6I3a?Hcu-m^rS0V%nJfeC2*&+POo:Vq>5BfyF(UK:4aJFmkeU"'L(heUVwYSiAEC1^?mH%,sz3F97.=PSq;lJ3&+V=+ta8rY=3%0E,eNP^$v#0n*KU"bsiAp=N%.e.l2^ER\Gsp^>Y689)q-43ZEa#.\umT?hXka?QA27ppcGkx-r^]x9lU"t4AD69C-\]XZ:gQkiX&N^3]mHHrJC+8RwJsz%A;GVJXcIR:[Y*'XhkiXBvg3V97U"JM,-K-tn$A>yrsBtGj8Plhu.12M69c5Lv]M7XZx0?(XZz&9k'5uixInj$9xx6WdU"F)j*XIvR3UvNQ(Xx,]8(/,V<GY*-UpRy?.aKg+j9ZTHuBPD0*L)Srh5Zh-7b/DbU"-XD10;,o0a6.Vv<F&qqcTg4qVr&qC4$sfxZC:X=OIN;sONG2Dd$-A>qAwe7B7asU"/+2N*aa,X;q^/jYID\y<HXk0Lqb4q$I1PvDrYBs-yQ:ltbW/ZZP_,a?Q3ca&880U"1r/4c6CI,Cnub7eTc)RELjA&fL:v_TY:FMc9f)j4.G0PrSq'[Tc3a/D$1tG'4F8U"1/kj;H4#r>7uxaKQ.)x0mnQ[J,&d(DD[<3YP_rFzmI6:6=Nqsx7/cP1up+.9MI'U"4K]QiYO-+e&fiXye^O1A4w\61,]mb2K65e^Aq$B;;]5)W7ejc+DC#]&#wMqAPTsU"a1SfWU+\RC=hPoB?EcI\F.0r0H'9W9A/*#%IQUob<(c;hWo?+=0odVqE,/%H1W,U"_fc*KRpsDpxLtoncD[/gP/AgCetmeb6%,td6-dE*zqfo,E(KN*PbraK=+-h+J+fU"QWB:T5m/7A;#V9mojf%76lHi[5YC'c),P#A7b%GxIc%Gp[pBBLzj44<bdf.S:quU"K('p^Q\eEyWXPfELc-,.5a785>Bi+dDAu+h%31WV?ATpC^N-3#u>dZ1CMof*TiCU"W]F39l]8ITYl=?5Q-8N1Q;o7NQkInf+EFP^byK=#W^oO>]hO[x:zj?^ve,-oj[[U"yL\D*$4)gkXPh3*1m\0I);vG73)Tx>GIYz2blp0ZXBZ4UAfP5t\d&?j'G3%do]bU"BD0$6KA.,pO)F7WOL>BHL:&.DzFboLKp/gUVknX.6rdEWV2KSUp(UP+co)pL;-(U"=P5q:Hjn<UnZ[4aj8*orZVjQ-k)'OQV]IBV<4N=J'mypeB'W/Rq6>;M\PHZq&WpU"n]+7?IP6xA%T^Q;&CpAUQZYVKSNK/C$>z4tBS'DMj-1GT-fA4(-lmpv$-Q1XW7wU"\K7/ojp[>3js;v-BqljpTkL-<PzbH++-bOVH,4IHbm&t::gjY(cA^HJ5)2]&4nkU"Z^y%$2K8[]F*dCM^a0ura*n[e6WeXJFPZ]^LdG(Rz6JC?q3k0CBMG.cChSpbH?pU"n7CI9N;(v*u'(sWvr9*5*If1n6>eXpz;.:?I'/#dG_K#x,ceU_Y9hD'ccC()l=kU"Y4<-]EYL+CrB2X3b9RdsvR##yxTIUj=h>0(clm'7>55mYV:(8F%A6=p*x.-=wJ>U"M8wIs0pA_nC0W9b\6v][AG/OPL$>dC-VXMioV3a6^c;X5(B_t\+<=;bG*%cY,yXU"Cy7Od1.uN:7QOP67.KnNCN;e0$d[.3[et$s=$4a8x3(&qi2?#?TWjcsPf]NRKkZU"jcs>Df.i/Mn_dno^,;>ffTN8B3LE:1D>=c%8FwJ^3tu#Y'x4^PF;<y=Nix)%up&U"'%>%9%%%%-%+a-bGRsRjZ%d&%%'%(%%%1%%%%%%%%%&%E%%%%%%.%%%n(j&if%yU"fSy&'yup%&'>%%9%%%R-%Mi8BGe*8u/,*%%%;7%%%.%%%%%%%%%&%%E%%%&8&%%U"%ifyf#VSy'%yup&%'>%9%%%%-.%M#^:M)%$&1$%%(%.%%%%-%%%%%%%%%&%E%%%U"%h%,%%x%jwuS%ifyu%p&'>%%9%%%%-%EAA^MH^A+W5#-%%#%8%%/%%%%%%%%%&%U"%E%%(%s,%%%wjf%irjS(y'yu%p&'>%%9%%#%-%T%0cGI,TxrP%%%%\%%%%.%%%%U"%%%%%&%%E%%(%W5%%%rfh%wtSy&'yup%&'>%%9%%%I-%9A.^M0'?692IR%%CM%%U"%0%%%%%%%%%&%%E%%%'S5%%%xjwu%RuiS%gfxu%p*+%%%%%+%%+%t[&%%5%Z%%%U"%%END SUBV2CLOSE:IF S=199AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBSam Thursfield                 RPG ARADINA                    sam.thursfield@btinternet.com  04-08-00 (12:40)       QB                     1158 76547    ARASRC.BAS  ' RPG Aradina, basic engine demoDEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2SUB V1:OPEN "O",1,"ARASRC.ZIP",4^6:Z&=57190:?STRING$(50,177);U"%up()#9%%OR-%BPJMM?/'*m1&%%%*)%%%.%%%%fw%fqng[Sgn.bbXo<mU9?hL0LU"V+R-OaTos)r,go05>>C+gSmm_<3_3sNa*Tj7?+XTF:qEfl^>kXpJ><'(mFjZp]$U"LSQ+_ke%Wk>Ls(9i77Sje/u1*E&9eB<0RdI*\wIeRpO3K3;UXKVBWT^z,4;_5'yU"07da/k%b/Zw0f(yTYg^/:mL_n$g8h0sU5+<9ol=-)Z;3Jl7fkgcW%7fcDKyv<a3U"5^Nm-\t*i[?b#KASDY=n0kw\=hzipKQ3Ca6#n)gcMH<IF4B[,FZk4^gT$o8qH-GU"P7=,sayUo&)MDl$qM3edfkaZi?,s%V-;$b\-Cw$?42GHEVNLHq2jP4l4H&W_W5?U"g4,uB\u%p()9.%%O-L%yPMIM&]W(9f+%%%F1%%%/%%%%fwf%qngS[qngfD%,q+BU"#:cBZhV4jP4R,<Se2.;DMke*gF($V*1$QLJ-1RX*bA0<VQN1%Awfr3I(WGd,wj2U"9gd?FieIP(AM#?dsJA:tLGoc0#RD?Pwa]1v^SVog^_YRN;++JZkd0*cf8h$40<oU":twkxp0$fE^6GnKXXE<0bE,\?(5ADKLC?SV#;Dr.d4;,\X#B?=QHyHZQ['nQ.TnU"r,6S3+o;bb<fvTs*.nNN_8=dLNl5&6iBm,4]XD19eP,nm>jXSw-]Lf>;lD<7o94U"2r<JtZ%<]Xq.H63j&43O&zgt,E;ApNna6Bg04#]syTZn);N,M#(%VYRqUh,o%NFU"YM\8EeY'9e)_ei^FE<Oky%>RLxTlQ\SDbH\ol0P:Z%dD45Q$-AqPD,=,d.HJdrcU"%4\uOeP8;Z=sLH=5md8aGX:Lc:4Hs>-l5+(70'[A=\&DqY8M67F;)b7kuYKObV9U"ynBL)9AD768v^?9(/_fmJOP[,:]iXVrBVopJUp+K/UKNthpMNb>lc\G\s00*mWZU"7,OgY9)*TQ3Ul]>8p#pz9B1BkMp;;ZUvNroNl/4[PIfE.>BiVyq[I)LGNl%x1UoU"q>6;Rw->W%#VHc/$hl5<gq2)G.IcigBT66.k0.$l*LK6'%Osj5%RMlPTutn<kSuU")5+Z2f\O=l;#JE]Mx81WFhF)qT#<<RGf%$LNV5Wnf0S^>Q+:<EsL1d$#KQcCCdxU".6BBgG.z6xoGYV?DPu7a7-Ya6q[58+E[$tra1\N:t5'=6YT5QcX#x\X,tn:2#3PU")ZLJ,'Y:?H$PLK]j5yhnPKvp0HZLuS,d&Jbo5k=#<0UgADXidT<H1X=\o7m4,&SU"SozR?<BU4ar_;FOlokwDP]k_;)G1yjQ9&b=OQXp861m7E&=)$=nQP5j=eg)G&a:U"&kTv(8&Ho8oK(<N2PtFpViG(8evbFx)q:SM=bOyj(fPHWMO2FQX)Q44A&#[I^8IU">ewNLcg_xnS*WGRpI??V.wXqo91h9F_5x_Xm%udrV+2xJ<h$b[89ta&Kfg[>cwnU".OUrO*7uf6;1zm5]<=w;q2/N[*b8X?md_7Xkc:$3Oc7pt7ErAyy2gy'^-mWypRlU"0g$p,E=i-WpgsM.mRQl\XHbuqBoLY,#X7Hdb_Dl/0LP.#bvtC3Iu92+(&#7OjXtU"/.DM6*+&cdP+R'.iPs&T/iF&[X[Sk/2ZVA']4gXS31+GeD%XQSH<^EH*;AOI*xYU"/wn)oD#VU+YwqKp*3L+E5=DHuaQ0u<-urqgUrlIHT*?^a*++R6<EZvVT>_\wUgRU"16kr?E+s/ZYRUI?WeebZLVD&.xSSxp]-A%StQ0eFr]'CFCcrRGuTPJ2mRD7IzFyU"O3f_XDK^30ndm9#.Z:]cU&UKrlPwg+vp*dbN+QiaGMc4/KqIQ'2\/cTPD#R:l?*U"EbF;22]Gfv?^n1*Bej]O[gGl#Piitu*fg>C(u%lP/-O6da*TFddBB&P[Kr_92(\U"lS5BHZ$SQsYy>g^hMxH#+%-5#2FwoV<3+oLmD[,EMg2$VT%>HE)ahp(3_iz\iQ>U"uKJ']=scsFzTVqz%BQjc<S'?_J)N,k]MkLNq,/eV6jCC)]kQwVqZJ%Y8h#phk9YU"W'?\n\0JRIGL-%>]rjZg;l0_aYtldAs/-MIgnvTI0XTFbM=,$&.&gC*:G,[,n9DU"[cH]8$O6bIHP>Pxbtk:T[La5,.n3]u_W_H=lMNH>L;,dq4VJYJ*,k4GGa$AH:sGU"kbFQ+1ln60e?)ij[<0&/,^aPl^?65]<J88CZ#FEh?3v4RlmE^ul()\i\Q3MU3q,U"+9x0pJ-U6'b3NK.Kqd3Dan)_<#1aLBH%rFZ)q'K,fEzjNY4:cAMe.i1Jl0*'n,7U"%G>'?%:5h,?]*vjj<Q%aq4gKV[^(Fi/:q.WG=]b+XPp]7Gc7YXh.9wg>^/-\lq2U"fgAXab+(GJfHvTl]u=JY7QA3iu<;'l<Mb[PRXrKu+.txchI^4^NJ.9$Injdm#6aU"WP.r1#7*A*HiJb>v.]L]Z;G',7_,)(2Jv6=9Kg:UEconh+nesYBg,gWYj0)c9H_U"lN6^\A$pa9DyMq;>_jW>6E-Dp=idi6wtVk*'b)STcc*f.7tL=N=2yrx>f]?x]0yU"m)/wB(*p+gAohFC-</L7'w2up%()9%(%O-%2wPMMp(c=V%O4%%*k.%%%/%%%%fwU"fq%ngSfRxrf+<d>T]O7x-oTx(8,YJdq;aL$rL]f&rVog+Qfc^c'$A/v9IcI/[+gU"MWCf3e.NA#cIwadnN\T6ggtm,2dVGR^X8HFw<2X)#Y[]4s/jf+=IIgWnn#^#Cd?U"mnmt>Xg]/Pqa5j#Z+h72x>MLDGf1qbe]O_eokv,PsKmkNGRdU(Hsjk4D3fAX0QlU"aD_<wWReMLk25AlInuZGNH;m>1br_Zb,uu#bbBq,opTCGrMS7Tn/gm6nB/MoW3WU"C9WQf>70?>moW=i>m:S3U#ZrKNGQWb7?rJ.(736dQ;/cndw<\GiYc/?=$EqH9JAU"([:]2?JbbsJx&-SN[9(=::9P48An^DbnCeHfqW#^Y8<re'v,gDT#3kXNC]IASO:U",Qv%e\lrL*.#2dNm:gN1\iMe3k7aVkMJ)X;fb5Iq)//]KL[m]',]d?08fETHI%-U"ER9*aC_EaK01=T34EUt^]ha4Q\.w'e*WRo>GA?Xk[Po>3?dX>%5)mk(TDSg\(1^U"h%LKdqkOmIQ??X&Yt\nH%Q5;go_t,DF=C&NXV3K9H.X;prDGG(&>uT?x#6unL?2U":nDgR#N[f9\k#z$J5f#:X-\2Li?IkM=)01\^YqFgR8RguBuTuY0,:*D%p0eoMi)U"OKsdH$:+LEl$l%bZh'/DVh3l:_e2#>D\/uwbKoL4g4.hN6y(T?jGFwC]hm]mE0IU"FPQWPp>'XTu)]L9>N,ZW'W>Y?QqUf>[x?.A4f;0#9i*p(9W-B40+'7,rTu5tZoAU"6(Y?RH%*;I/+q0N(2'U>95cI/uieptAd*1Tr*$?-*8zEBQgcD)]8&0-K/8Q&H]SU";*G+=3f^&p.pm^[7Slu]E6EIf;r(+#Nj^'3bNuT1Ci.0]6,cQ<DnOBdHffl;pnZU"B4J&0iS0uulp_iIUFi(b[JL(cQCxUFq7yQ8LsTdgRGd8mfiF;/mNpkmd3JaCHRLU"FI.>P(/$['q*QD)/$M/7/$4-Ef7[=CL:I4VR-&&3ufQghbN+sJ8fWdTqM%_>bBiU"/_BbCVn5)l9Q/rGT?mt%K'7R&H09<f?SI9NJfiR=MMoecR/?Gb+u?g[d1]ZZ<m9U"7d/w[]hapH+E#xC=eurL=DvZ_x(GNYkHu0eP_qdmN0'mDu&9.7vMP#UA/?GPCjDU"LQHnC0XStfG>R$/tXPOrTW^ThnwBYaZ0G]H;<7>DDqzM9m3xe&w]%'d4qZB^4AqU"Edc-?&%)P+PC_vRj&v(Rc3w?Sus,,GN27b&Jw]A?Ng9XE*q>*k^>0%nB)g]Z#,MU"/Y][s7t7Rj&1\;#-*5P7cC=<GuM'FKD'Bqvo=h/4R-Q8OdKO+&bQ%M]zw6KqA_mU">F$+Tw'E]3B]^hfA5[ANY&4gC:)BmPp?GRCruvV/JPelJJp2MC.a1%lt_O3/c?rU"+;x[vKGX\9r#U^%S(S<S:CuO;])&oY]3;7h9YcnPi(I:egetSu%90su5[s-;j&:U"uom5Mp^YL-#IV$Q,37:ta&C8)3tpD0/%M\TAI4L,+'7D>2lL4&tzd:/cwh']S%%U"\'SF0AX%J.?UA/G,1WV&:Dsb&Je1#\''9iNCbUI5S3\YBKgTZ#4uUE6-<Hg/+h8U"hp382+bVzxv?%[[k7k(u[3'=7:d7NpK9TIek2;O%]U^T>3%\%=i0\7n/-)P_G-0U"09N+1GVSV<+x2g,nZ*>j1%0#2tGa8IbY7))itlMVHGXHW/76&lOg6)gRT\r)SiQU"[,e[eqIi]TE;n>]70._*2M*:S5l?ChRf%sMF[$QhRiR17_W:IU(\u;iOq;K_8BlU"7Imd6IA9RhH4#T]QTj=OB/q9K9#_W#u%_do?HkA:HlM_<;IXEc(H$R-Xl:jGn4_U"oPi7D_f.#N$k:k3fdta_GIlR4N2keo;*eDBZNnFA<2?dT5k^ASGAxQfUXXjDW,+U"GhGM6Qfh>'L,_+-3m$DA^n0qC(S>vR/xjZ;+Lq5y_FmltaNXXwsehRu==0e1\X-U"Z[1W.$l+=t(%i$\aA6P*vBCe%Vycv+^1cnJ^OVoqAGC(UNXBgF-V\:%+I<r+8KRU"D(x6LBWoY=+?ogN?+l0MN-2&^RH6^fNCSBwhlm1tC<N'u,<myXANTxM.=^N%-1WU"i=H*)Ro'I(Ymmam]$ZV6&;F%M=YYg->vgf1GnpS<9)j-NfXl_DJw(q=^cW$pH,hU"VJ)(=kn.GX<;^83WKeq/GsGYKrfB8<?Wib#=iGc3.$13[cx[Cu3t>ys$fAqS=aqU"K<Mstx8W&z3_kx0*hrjEw+$>:LuKpT-Jjo*.,bGf.er7%jSsX%W>A:D,Ij;(,CZU"V:&&PGnOmH1IAn1;eG<$ftd2*0C5bZRZwIDg0QuK2fHP[NScZiq8..)KVt91kx$U"Mj\I%GMCoR\'cEroPVF]eXsNP<<C>%]F-P,J6tKg8ktBVcYqcYF?\o<8$\8U'FEU".nMuXwm+pYAwZlWG,>g$P.[mpFO(+GQf57oZ+;%Ab6im#1ud:+KVo[WB(7cpx4qU"l7NOH9^.n1lqu+wfl*Kh8^;iBpLS%3]kT5xMk/Yu;6rJ-DTF1zb5$2Wb_[3_aoBU"+h?O19-JvyCZEABkW7Mg+^BR;6=a.9KN0BkP+DQr>u+QB'Fc8F5e*5EjHp'J)3.U"pH9$pkJ6.6ungRJuBLg<RKq5SpCkHaLnuH3pgem6GP.\Sj0qj>.bURVdqKWI2p>U"vIhep7Om(Bo3FXoCD;[moIQ^H+G=a:G[R,_4aOZ_'l=Kg1U?u<E[o8E$:LW.If6U"H8^7kH]EWlees/>6sNVimVUpwFNeX>JaeK<zCVWuUBg;aTAbt#.=mX7Jvan<EsUU"i3.olVHvtTeAXQw_B(w)4:g^*iMArMs*[xB'Q]4wKE=e$).OMP\3Ayg#__dc[+8U"URni+toSFHB4k7T]]ZmMDyD$hlOnLo:Wo555%lLaJ.M#X;hR]wnDAgobibi*48uU"etb21r8C?gb**\-wqXFrrTo:J3EtJJt=ppSM3q9S$_j*9o$+.FAUXD85SJVO8HAU"zfW*iP/Tv/sJZUehiPErWUO[#:nq5OvFmK^>^o6q4DZ9q\F]WTy]$svNS5wALdDU"vlT2qia=Y3,woE<a_F(myY&&<w$d,qMCn.4E7X1U(DW_$t3rdr:g1g_f[/tuO[=U")qu=ks$\Ji)*-eTjyKp%AoDlD\/ND%Y?JTjG<j(LkLMEZR'M6m%Dbtb]kyO7:wmU"S\Q%7H9;6N#b0St+c>LHo8tdolpuQP-_#f78LP,Xpp/*lD-eS$?6A4yH..RH?5BU"q1y;fF-g9_FM5qq[,G#4i=r%q.Z#iUz#(.c:opZ\m,57O;gHUuN4fGVbKaZAJS#U"Etn/4gJjpj<qFn*LWYpYBOacA6d(c^bJgcf>RXN:bo_j;)>;_B(MwMv5kIN;+bhU"\z&$<u'KV)vF+=w.g5RB\cSMDV;dT8K?Jpo3,5MLwPj4,5)LW-mPbl&LI97+tw.U"6T(u5>gvXI(;,YK1oZ2%(nBvzI^;3>_*1amt4K.[I[AGz4GHN.J=VqH(%j?n&PcU"*jC7SNuQ3M<_Blxx\IPfC:Yxk$(ekWZd5:k&_%v'xb2'EEnd=)cB-+JmyW77[yEU"%hYEY);;Scj#x)X]paIRwz89+iKq:jWRZufEmgSn]9Wj'd>f6TBcZQf:.lfeT6XU"J8K=9aklm361l'1&Jku>tG)#11(DKrss_h'h?'-J[CN,/]Tl_l0hq1Z''.0p\OYU"qyEfH8((C9%Tpt4v+S)J(:ih0Kv\D6-cwX/)[vMw318#tzw3ktW&n]jZde+Ng<IU"gwq_Z7z<.9W.FjKB2o.'KUrm1++vVUCdJk,ZsLe<ZJOuCMmVEi/bG%S8W^8;Lf?U"x[Gi^r\Y#+i;pt#uehBgU7sj':kg]%v]a?54Ym0XFp^;qoVaWmwm7YeJdq0KGodU"Alw<n:S)eu6EqN9[46r/A9bI&*ZK^i$v-?Nj1KW^=*LMC1miUBNX+w=CbbU?bBlU".)4G:U<EvPxm-EQQ3&b72#'%y*P*e+KI,<-QK%A\[j-=$h.;^p+sbRi^Kl>oO91U"I>SsM[+BjmAw*awK-1ET*)A6<V1QP&R+8I?f9?6N9c=I^lv<*Cu[cPyfY/owKPEU")n$1DKc$$t%wF^E+'k:QBsJ7DcZ2U4;\QWQ\xnasZPbq(&N8x88DvZ:j?'Daj\SU"8[HKGLuI,:C8SoO4xCp4;4sC1Hc+vc)/kqU<AFk^CW\5?HmVfA_eG(b.hB%8P?JU"0^x,U1[?yI#D%Tcv)Oa&Pz\cW%yitUxBR*/Xpf0'mIH$JC'BJb)*ql0Xlzy#c$NU"aUUYLt+G.r$?p4f7iI\ytn,Qo)eaG8e6U<yi&ARGhCN_/]GzpCDf?bDfoD*AYHuU"Cu_IBN1c',gpuj#ln09[tT04LM:>Eq(N;3ia^;ZU2*#=Le['+%g%rK.EdD89<ZSU",-K4TEYyoGkj1b&?3F1:SFKGU(;lu7(QPpj)71Gvj0iCQAjPjT.4+88<.%B*^X1U"_l(E^uo(mC*2ui22qTx;]>S#0+BKdhn+?av-vd>9/f<eyJr?[fdzY(N/WP)BmylU"PTTwd]fMJ/JJC1[kz74>Ua3fRVs6xkaCac06$5>dqM.NAQqbrZ,Sl4&wI5R$\b<U".&VwbiqzISFCWzqQ6fWqPT,vvFfLWZ.5?5esK7gZ)>E7;maP\B4HXUI-+x,pM^kU"HXv\,DvB>hGT,l'EDLKDe9<<d,0q$i::*S&0*I9(;)-ad5=NFHawe0U3=p<xF$;U"\Nu\1L-)ct1Tx5L#7vK'ibkrL/V,cY$,Le/dJ*x041qdqYj&Rdi^xw(#:Z=l8f?U"x:mSo>,ssJ_%)3'bO>8ZRfJE^H%=/bdQ'7Up[8l+q3>Zi'opyz]._72ZoIkgarkU"2?)-2y:n5jAGAdCJc=I(:ci._8du6+l<I+g*[-VB&+VzsaN/v0reLopQZCF2waSU"Spv0ii7DdsD%up()#9%%OI-%#ZACM*X8?)Kc7%%qF%&%0%%%%fw%fins%fSufjpU"eLbV^4#D0X:<KI9nX<BoQbvlc5tX\Wy=SC?XAi%=S2*8X&<XB-6SO(rXecg*k$lU"HVIgMsW\HrMVB>lNfFyy_V3iRCko\3YFX&=NNxBMP6&INfpdmuZmW6Jt>vu8uxuU"8w]n,dxtZ8trc<<btQu^*>sTT$.unXkSt:(.8t-42vVHBt+Q&x=-q,,.8u'SxDZU"ke+KhN(M1[QTTD$f4NDi+.e4ZDk\4lrl4rub+5.IQ4mLuo:lH?8lKpihkn8;J#jU"SQl4ffuh6sctJ(8wlw6JhlX8NnuY:N,9HSHdu85mKVAM7+n+QEDu^^kctzDd(=TU"pgRHphT>H86aGcie$h?5iG$Y6h7JllVFbc6p3hl6prprXNfvNpNADYDxc9tLJ,XU"Zxwp.tKj>,u,,llZlT0>j8J=0.$C^dQsJ^Mcu\D8?wsddcrBtWkG\\0rWId:eR,U"*pMn.efte^?+&+Q0TuD^+5o3Q(0l7X.tf7Q&D<,&Hc>NnupJ&Tl.Ml.+,Ki:.-kU",7Inlcd&(ZX43FZxcwR?nNHQuHxbkiKN+Gl88+5H1i4fKDd*-gb.-8Z.U4'<gf^U"&[T43Hi7BIZ;l&GCNuvj>cuY,pq.Ib&Z,,0.YMr:\s#hW3unWfTV&FgG5^GVCcVU",C&3\Kv6$m,HahJ\ohp\Qwel)5HrZEvLnQu^^mkLtdxuiY#Hu6tSl?hv$<?'wu,U"Qn?\Iodk61avbk&p\wW1Jw\=<G6$<eH^etfl,$e,p<f,,cf8<HYe$Ge7dbD<uYeU"u;5BHlbZxURZrHlviu2,,f08DmbZp[RB$HF<Y?eu;0pTk6qH;R4-U]JbTu,,f8kU"fG-q-:R0TnE<Yelu;AFM6dZnlw>r8ltR0vqg'umrfn76V*EDNY'xvnZ^<^hr^JdU"xixenhurxXlT8<q\VN,x;K78N.rpC5hbJx4Howchf3#jNTlil8fiu:Mw>6pht?7U":8dtMwqr?xjlr,Gx4J(0W5>aX7^Gr_nXg?6je\YNs4Mq>/oeuxXhL+Y_l4tb?5pU"qf>XtAAZ*MNjZ.KrsZq-o8dveRxds;uvhLHpc*xuT-B'n7tdvq$h9<OrHIDoo=TU"n2ln$Ek=<8mkfSRn.tVfJfM?:LJMM:?:9LSxgt=ue,G.ww)5c0=tW-z&jWfk5yGU"lxq*A$+d:a,KTb++w>dm\?52YLgD^QNeK2Zv2vH5NtJ$MH.M;O<g>n6fi\\ZnLgU"(Xt6*lfSC=Po00dJtjpf/cnm#ktYfev2EJJeh>f5SZrf-EZb7uD98ZmkrdmUVj_U"SILrWJ8nKerNhlVpu-f.ZBxpcklduf,JYn>dqYnRlw\&RlDaYImaprxGmi6J<V4U"Wxuv_k22:vEr7$886diPbAov3k.S^t4D;t4KeJIxf6Oisbj1.sj,vPtpDut*GLhU"I[mll.C-AH+>Z2x,JAX[_Q?7&($9wb3^gbm$bEJ[q^QwojFnA_PkDu\+n=alEXkU"N8Mw50v;'ioXmIZ<nqblw1lI<<Eu.pANu*Vk_<NiqV^0fHLn--\fBDQD$bEE)McU"aiHVnur6KS:eVDMmojLHa$jVDC<*CehX^ua2+^j1C;N1#D5<#AGUDNk[pCMm*_mU"7=sb0o_WtKdwT_.=3YF\saM]k]DwgOlGu;z.vO?Vi4T2MZV<R<<0>QrJ\*?fq_2U"m^ap\SB^5HiT].w^s]d8u.sbduZ$fquP82r6qjbL%tCdcQxf>)U,=cDufH[HtN\U"\TrbGJ\O=xb.,<xrdNx9B?i4jRM$$BdwYL$Y4>HWS$ZP\H>o'yW_6YHe[[,\cXLU"K0lR\Nw?W?1*W&)B?hDt'[s0U^-mGu:H8r%Aaz3P=uMAr)kp#a\/NQK_e].t-^YU"O*&jK,9DdV=3^/J=3]oX*ukr&wNq5NK9\+Cf=$ws.Nq%B_sn7/ri]dCuc>h7FnfU"T89Dr]P%4S2B61b-^Tu7L\HRDd2BQjqBKNXf.sTt8PMZ$#vGt&kv\Pb^^BNiDB?U",#4d+l2ve#ppN5;l?.bi$h537QfjlZjq<Ku-r\$<FtKAKur>Lr$qE_WYCmhB?5-U"\JkX:bHuZq4Js,(uoDds4Mup^hKs28rVE(bcG6qTVnFD%;:<+Z]]Zm:FVm\8wXqU"Mgn:gx^>a<jHQj[<4T;sSSm:M.4L?]jT<B4S3L3u,3n$$u5_wQcuz3s<vlrmdL4U"a?jkq4e=<Lda^q2Ei:<p2tDko><&d_4pr%O<Uzv'ftd0mqN[ENKh#JI5;m7#<Z<U"j$AQu>f^RDdwzdzN.QsA%Pxo^3V2=%TlaXDXe]o8_8N^BN:#Td#8)NiGjOi#C6:U"oHdw(bN^^1?viPn^3=\7o8:/b<<\h*dg#.X;9KVsSWBm<A]\X8=$/ocst#8w6F>U"9;-vN_4).KNBr1B$GH>8%i,;]ctN#CPA9)CX_uxXbqdPa-O6\^zI:,^,AKQ)KZ:U"^GU.0KPzcu9\XwWgZ%Aq;CPb)RZ$>P^8:l_K#LdnRT7uFhSf.\><bri#:\L4dGPU"AfXs-g,Ad$^J-;kQ8[Hxcl$Yx#^<FWFu7_ql8D/KAtKj^PukjfwR=_u<G^>uY?<U"^lLTP0;ffDlNvuJ<xos<x^<\njIb]&Z]tU;BZ)oOt^nsh-w.d;k;8Uo0[Et44GUU"kM-.dD89DHbc0l];ikVCZ(dbE90YOChr7qIuo(V%d4::,NV3,7qFIpSZLfr)T2bU"3,DwIpJ/5#SbNRI-*?pB3v?v[OwqdzTa$Q-L&rSJ&l7fDbkG:(o.</NWXIAl:)LU"C6JvjZUMD>oAb<^<zb6V-25wY3>pGUDDIk*av2z7Sew?M3y?b#x+s-rlxiCAG7sU"EgB7Sl'rZwOX&0OSd;[&WMNKZF.d8f-#?XkZt=a.m&o85]bt=9BOJ\YEGYLuHWeU"*jXu:LfnFYUOrf_>t3+fq1$2ZZO9[A:Px;xcK]9xir./vCWME08Mck.bC#:FWU,U"R4JsxW)Z9ek#OqZtyU#W7Boh:J#I/?2dI/[/gjlR#H$aPO7R=BV8_24/cQG,?I(U"Y8BP/jI.\H.Id''c2.-Ov?+:YbX0c6x52A9NKnN)5R0n:GO:X#)DX2mI*Pic/f.U"535NtL8B)_Yv)]S-1m]]SnbYj8iJ#%wr4NRNBtO^QwQi)<Xj7m,J_9OcO$K%&nOU"))4gf9\u/oF_=ti<Ea]Fh#./fR=*BOs'1m+Jd]bOh/s=#1_bJsJG=-\>U\>6/_1U"OqkO,S\;4heXukjSMS/VgZG]/x\[BC>c;*/g$seC7w;EbCYw&IJgeU?PV2H&N.wU"mJFb]eT6[%6N;MIW)jq>JrDR;UJ%3eSG:AVTCD1p>&QI^8LyG6^e%kxi?tXx)?YU"#&,:iDmSi[H8(3Ju#mdcrMCxxEsfY);Ku;UZ%SyOg_,)-u,mJO4%ZSTi\aWr9'LU"0?a)m3*FC/SCoQYd4J3:Y/(V6#VWr=:FMg,wJ&raf?88Ry*L-n6-rI;37#:W:C]U"t#YQC01Z^r[Bq-$1F)/.GYw*?05t,0r%?G(l0$<60['A+YEZ:1O+E+suH&n?b/OU"2JfALF]dZIF.R.2/mHWna)FN>;Sd:7cJ&(lZ_wJM8OS8mVwPQBmxl42SBEi+or-U"^#qXdUD_#U[uz=E2dwt<N=u8O\z5'<JhhNtJNTf3u9]/R?68]png^ei(vOP%MM:U"iDo]ygAhuNg*P:6xR)wYLyh5YTUig5H0<*nLq;($:[)mCt=^s[\\<8QsN9t^eajU".q=L_m_1m13JjO1B;O0LY9-oX[Tgy73#.nb4(sTCRX*U=^0JL/B%pH>I?Q3gv#BU"3hV\$x0ejYh&dL),^uS.'Xf8WMj>u+cRF5e$h1YjeGmcXnN#cTpoo/4<06>]2I9U"C=qiu+A.aYiU-M[9tjLJ]zrP,MVTeuCats%CqQ[ex;CS=k\3bRl)mVILY\V%FW3U"XOIanGN9MDies_'VmQ.6NZ/liB6nay3:8//_51&%5\U\R+4(K+,c(Qx,kvu<5qKU"Bu&qt*$4V8q(hq3&1I6cweM:7s$Ioob)*V]m9a;2ghX=N#3sGE7.[kuD3<ftJl0U".c$mF:Y(mjn?;:#KX\R>j[8erFVOAn^OI_F<P[bh7C4P=EB[kCc%dt'db#WD)>MU"hIH-wk'YVi.49/Xn$l9Z)D+QQrXP]YXu+^:J0]=d3)Nhf>C;US3<3bX#Z)d+v&BU"qS$(io/5%pxeG^#;;+jr0FS%ejEpJF.U4J/Eh?7V6k][+JuN%.ykqZpMG-LfHo3U":o/#[%S*Dl?h&960Bc1#()rOp;pL$w.077aFcLLGd,(hQOkbQ?Xb>t'$ESdYbXiU"I>'(64*^?w*.BJ%Lx6n9NC,,sU+<JjaAB7E6HH\eF_^A>z,-)1iueAY5Sad^.c0U"EsA&1'?1sBQY>zESPRWpzQ$r[?t1Q)N7v%erZ_r<(20);oc&n3I(O('e.T$MOgVU"FnU8p9,Sbxzr*bFr'b=hg'k_kVZ&RE9iIT0OsJgoJI(gt/9oE8xH,He8hCYv0;jU"LCeCe&UPrFx0iL\4+P4M2SCdW,u)+(aR+?tT-%6o8Qj#Qk-IL<p+z5RkgyD0-<_U"JJO5WmH9Hv>75.E5XJFC+91ebAA4-5Ba'yLh[K&::%SIs*&ugQ6jO2,e_bt<)_EU"]q]pf$6%Cm;c%NaMIuTfPH#of]jp=UEqbQq*><\r9H9)KIUI<9K$fMSY5^2zke9U"0G?NC4Yq#7jbZiC-$p#hfH[,d?&$rd[YXG^$OJW'TDST(T^$%>(?Pv+&sJBs]$8U"Ud\kDDQvmE'h_>SIh4a;Fp$Zx.CZegXLK6;h#:,zK:_*PS_u,[:l[+wq%-,pou6U"DDvLSblPXyk1g%;ZgFd>IAO#Q1Tk5F_[tMu\I-8/k72nb5hJ%%p/J,&,2$(0aRnU"%*&xghc4V^uSR^4BqML_85)/^3QwF_&lST4<t-$eR%>2rR?)N;C(Dv:ju_hB[IsU"1ECj/]2nq+4Y.8&OT]Hzqt<4hJV*2aTGU.LKYu:7nIq+rVWdc/A4J__-x?085akU"<UFQeb/)/&y81ko2*,SDgLGq]m6l,4=IqspQ2U$4ym[bTTi3hB9ve1K[5<x-)/$U"&U2J^00cE,t%60Zs#jRY7*,^5wZX4V?iI:jmBki87I:h+wQO,kKubIDr8^Vcn&$U":0P&I%gW%LTtCS3IN/#xtjI:zxnN&=N-T2[c3u2<t2y:X]16Q$QO<9^RvY%oB32END SUBSUB V2U"0b?HjSC:u50Jg_GFm&1m0KZ#R^mIu)+E3x.PA$%F:LUcaMBDMEowX,F[$2sVmUGU"7?QFKh:lMT/fMo1:q?Ua2nq#27L=oIDho\c<XOCI_t#)]=q?7<uJ]/v5#]A3FUGU"sIj=MU+(26LYA,7RYo;1^Rk$8g=g5f4#>RL?'H<l^&\l&E$*y7wx^Eg9;c5YCZFU"-&#jk&Rih68(K4WQ-AUBV]lg010+(mm\_^UCA_WmPg?3nCVYNG*\qhLM<DoIyD2U"\1O_0]ON=:g)_-'B5#p*&_4aag4t6nPMtO32'b&&0;lKIi#Xd5VsW.Q]%]oNmGlU"kY_=_thbk7S_hhmS&jD%bd9Sj1V>2S_0_=GDXag9(4>]l#(I.DP&k=C8b#pqk%5U"('BvUGBFsWy&J(X8jB-9;w6=/g+9=D)HtGOL91#rj/Jw>E9oi>>4,qIH6es0#eTU"ok68bFO#p9#z/tej5rZ)k_2Q^bkZ]Xd82)*r)SU=?fqIB)rHZ2qu=inl?dfNdcOU"5+[78S\lI^_Nl1ImtRxSRKVKaV?6:Wq,Rh4LX6hvy_0%F#):DAcK2U8j8x%,g+mU"''5sw1d9.2&wN:Hc=RiIqC_-I=nVH:ANdB7y:J/kw=Nk%,lU^0qVp-ml6YC/n?^U"c'8\80<ls[t$#B9,G,E)gs#ZH1Hf-#bMfgGRecc'a7cb;<rnT)aU?vM)_i9v1-WU"G5MtX2v/\o3,t%%BwWfe<8XJYo>+*8Bh'FSy3D_&^Ci*R;EK3<a5I^Y%3dhlX?WU"+:F/gE/'xK(XxyhT-ZNX4FAV'Ep-j0,e6h7Yf7EDnvEikV/$ho+NZ4g^9o.p0h>U")%dB&U'kN?F/I/kt=)\je2]^+N]UjQ*QxlGGB:Q.VqhhhM_-$,cA$Nl#?$V::kVU"]fU#POw;T;g7u^_%J+L_Bk2;9b+'=w)hK>cJ;:u3)rP)0I=7/U?C4[<Sy$VHEr6U"pE+CVEI/0r6:Kb_7.W:REAf[s9Ne/6dm>[Fo4b,XYZ4*:j_qAH*BY0'pK(AnDe7U"G/680<ug\.6Y?V'_\J?Lq1GHKe*LL9o=4hiqe0Us&8-=oa=N_zT+)lP?(%aqJH(U"o.FD3juItbv<SK'[Z/?D)61^$/Gd+Lgcks4<KU1:lW<35h[gp*LDsdpk3^Ia#jaU"3)PE?j8t'848Ya$MRh5?BBlOSz<ECkZ^##JYSML..:Zu:-]A:wI)+U3<hzlEk9fU"j&Pm(7n5DOkX(W42MS]>y*a_Pb'U.WN<D#W\15J-;*WV]E+diO48O&Wz^PQrS'rU"39&l'gkxs)CIIddhbn3]:$hoGeG$[XjDig8iXa'&J&Kq,_R#yo<9ac8,vNzQ]2gU"He'E+l6OBV6Fbrs-U1T+(pcB#G6nF\wL03v6z<GYN28uS-vgqljQH)qWf/f7-AKU"MZSe:7#Mkj/t_9%cHU,K4-:&h[&:H8tEe9cLg+0&TlZU$S1Ovk;9ZSKQ\>FT4p?U"IZpkgYeN;B-%6XLR%AQ.2HZC64[KIDLI)uKPgw]N]pU,&BJzuXw]6V3FVJk2fA.U"QLr$a825Y8G8UDc*Uy/TvqK;)sS*KAq:=PKQ[6\tDk$%IZ9)es'bP$#kgcMGvHOU"[Z2E,?ORLtFR;#OYdLmjGBVT<<Fh,'ZP#=U:tPN_LY59$J4.\=H*_rCsmE5FYaQU"oyETV^2GmBkHs>eVLl*j.KGavo].y$$+d>h5bb\Rh,TqpHJoR]:I+'U*PY]>-nNU"_=HypdAeE[xoz%^7Ue+3a$<)eQbeJ*V1)?nVF\7]6]EFVB:oZkv,?JiQ/]o-KTGU"ScYoZbUbT\gg/E2>'#yp7GtZ'Cm5&aGK1PcP;'FvbLYh==Di2H.rD216'Gke28nU"/viLFaH<_jCNrh%]DtIT<$uDTCvpU+&F#/qE.0^moXQMqi[d<:_'=ts)3+.,6&(U"0&W^*i](MV'Q+Sr/sq4*6e]2/;ZfpG9;/^PBdB4zh18#K^$JXusyi0Q28r.>FmOU"TPC=b8(=70gA2TKJ/_jQj*'PYXZ=j5M3'j)kiml=nfCuybX*bGi/p/BLVZUc>PtU"Kt6:_is]cFk0ZuS6uWoo(*d0h7P?XG%lEfHP)prRDUADpO=/WA4)dFI+jD(A(trU"ai#w5:j3BQF+.JMG<qlknVLOKqhA,sDY[Z?L=$FiClo#R=go8tA<C24Kc5t;58fU"I^?f]$4kt<0f0+-c1xRGGY/k%I+A<UVYln%t,p_K7S#s.j^Gj:aAG2LDV^1k0WyU"CUBYDZR#2o9n-pm;N*.*M:qrD>E65$W/okt5V)Yyk7%io_w$;S5<5Aau'%2?;o^U"4yWUbv(mXr?38IB49pjC]TJ]\:CfH50[;mN*Uh9a^KDg-=uN7GhZ=</Za9'BbqWU"chwd+kN36bZ=gnH&ZkaW<0l:<p]2#HY.X\qK;e#u;%U[sZaP,c]j(6;J)S=n[D/U"g9->4Hi[0P*#'+n.q++'pM'0,hV(ogS1;E>I6Pb(n+8>UOca0'/PSc(XN],Yo\9U",#v)],R:OPvEs#uJN^FrC#'o';qG'^m;x/Xl65s[g\ZXhZ)Ue%Bt/YbFIsLUr[iU"&Bsd1B2i)PRx<=-*jOl3+0)RaQ[u38:(>>c]45yN8?#v[A5]B_/KWohf,'FAkMdU"<K:k29yoLOra-?h:'^6[-Xl+/ae>:3<UXo=0Z['33<)34twTs:PsI]D4Zms>DaDU"&C538?<dB^h?ygp/aHWl+K>.Sf#,#<*abr6Uh=Ijlk$?Zr0B'Pj4bRmmZu$VA\8U"s-g+]Zc[o?D0eYg&R.2;/9Ia>NM7$rFk-lW/JWkqp3[OL&&tiS/SU>kyC?%H4ldU"2HdiJR\-o#5O[bufv&3a57Y,-RmRrr.JN+;x'nE/Yf]B;fxiR?VL+gNwzot_-?JU"#o$EYo8$w\7Mt-_e;J+nn;qE)9&HgZJWun+'Vu<eGc4i<goqwBjV%TTUmJUndIQU"tYoW18F95be=JACqRH/?sFmJ+*\,/.A=QlQgPVm,U(EMoNvrFqQbWV9HYFNLOz9U"ntAZ[$\2hm/wBS:S]5xGSUH0(HaCqClX4Kbu=-SLZz&cJyn\-^;3yscBU-rfo&EU"[-HV6Bu-,s.$4*E#?;?[%joRou=4.Jg06;x_Ro7(hOS3lPlS_e3efeTYW&G]1\:U"&d)&Uc?#ut4A:$Gp)m-)dx;AZkEju9a\ID%;rxR]\q:3)lqB>s[TGV(jw7NotH<U"1$rn4/ujiIL3B&Qd.CEP?Y<?z;jZU7'fod#ug*2HG<ILZEQjf?n9\TeV<#+%=+OU"WB3JLZ?cS43bA,6&j0bE?$2[c+>R&alGFvuE#ow#uf[[[$eJ;k).:3NVQ&azKJ,U"cc6PYE<3\V4v$FC??dxInH$kbW].X_mkg>X2oLp_\FH6=+eR9uvs*Kk$fT#Z<VLU",uZ%<bHgbIkK%Ki&[4D4s0'i0g\eg'Om's>LflD8Pbd.BnR?[slgs12*X$jG*bfU"&K<HB0bDPFfrJ8=s7:O?h=PtK2&F.t0tYFWLBxbb2)POg^D>#ZY+MY+QZ0(Td3wU"OmKwA30#'(^0#>BNc.^ffsS9fGh^8ilSMF8BUj(%5;wB*Z8($+u.<0x^?FZnJpUU"VEnp+$N[eI\-BR2hxAka[di4dngVlw%]t:4dMaoXGD*->gFN96F>6\6:E3;ULF-U"FF^_;;idIo]$C5j-xhv;9m3^Rk;<X'm&55'^wPrjO=vk;->q5j$vJsh#Pq.OH+lU"_LtYREgw>DR'cK4so7p^B-FVxb_Gx&(G5*m]K1vW3St(9lU-z?;b&K\uR/vP?l&U"VDQldL1Snbm085zQp1ePHnQeBwAR+EQ70lU4v[PXfFqb.1>FF4,%WO;17ctpj?jU"YCp'c70B>$'IGft1^avUa1IUB1nQZLH&3IcV%\Qy/uuNm;TFhai2FAfVY%:UB-#U"Ww+;\[?(D*M2:'J(IFhKO-o<oY]prJrtgsRm[PNf<PGa38;W1KRCr]pN^SY,U30U"F5:0l+'SUZcPU*0/)i;i88w:Zl2C>'fOv-S.0B9Z=O9^)kK,<svLbFsaO#n8GXjU"qeI*=/;vF9Z\S--$N((Q+Z92dY3'cM_*\Vb#(5.k23vUKr[\C:pJ*):ruVo<;KwU"$xL$o1fN7,l\ETDW.gCdrNvtM#BV;-t&nUT$O4qUWWjE?)S5=D;Xk^o9wg/46^'U"30[(Ab(C?rYifS?02;2-]J0NM-v)n_9-=,k-]T#P+HvQ^l$2__5z.Q;7\Co?Ro9U"sg%er)yR8i?iSeTK+9O.muQ<[LwSjUV*h=GV]=0<JCs,YOC>XkMMZ=)']R2LBl#U"_HJ:lMQ-3\^JB*tO<]0M4VF9(+nSZ\wTC.cL#G*;f18?<rOX1*G[\2L>\BFZ+wIU"C;V4se,*hgauvFscc[&HrJqMeZG>a*q,jP&yBjdWFE+3-CmxDpda[Ux4Ity7*l8U"Z(Wjw;8,]c)6'_d,3/3?f055)Hp\'b5xVVZZ++RQn*wRGZjBikP>E9es?;jJJvLU"B4St%q(qI2u.eq>Wgf>Ij'G8d>),$fn=3CB2WYw&.R)ClEWRhmVx[.RM=(7or3gU"2a5GOb4_Tf$eI8'x(oQAj&O7=1uqeuXhd'cp.MU\lyj3_;wQbW:7km+DMpuz*kRU"D2tK4MPPN'7>oRG=E52oKA3=1TF%E<BAQAG%<O,2=+$e#;g[.3;QqGS/y%+Dpp<U"b<d]Fy=8G6P=S-iO,a(na47A;ot#loZjI49JB=Q)zS/^^D%ZUgd%x\ZO0Sb5(</U"o_Rhoh'W:LENV[Rn5)#dkvCQ<Alw;cROHaAhOtj*7j.7FS(h)pbt*ox5]T[PZ9jU"dAUjs#/sdl#9]=i;:f>i(d7.wcSx+,Ya%ja*=MZ;96g^zT3x,RqV/95Na',S*5qU"hW;=/V9TFfrggqD;u6/B\%TQ.AFGAT(G4ZZ5XnZ]ks$AA$Dsl,OFjBn,'5gi,M3U"4$HPsuW#*ru^4sR'stG1rE8&idW$:lBB6rN1G3>W]R^%+o8RNK+<4LA9v)VF\DWU"hoe/8ai*Xj&EuF'GJ(iO.oLyCSF2t[fk'Wt]:$X<B2%;[O0kSkVc(TND4[]Go:MU"UVS,;\8;eR1T'\I$*rZMnWJa9?<G2%#WJG^M_L(]WYpt4Fj]q$i/C6)*6pZKhTyU"C,^G=>mm^FATm4J7sQ0jVKdVS?6OHntQY>A=,hSp.CodK^+$PQhO-(M<&IoRLRVU"TK.AP*1bqLW5Z/WpCjiedpEe;b\;<a-jn%JuN(gK']:#^U:[K]m7,3DI\]FHv_)U"\M_h7lF.UEX-<0dD31?043Pef<6+1BN:6M[a-U'lhSoPuX.PkW55,sQsXYp?[]AU":EcFUl.QSZO4].k455.WT2pzt#3rQMsNd0DDDB54VX(YNudwR=X+ieM&,F6MF,cU"\f;,>/ljW=&K>HJ>bwA/Xmitp7jhWjwp>'WWY,3h9T9r]W>gZ2oT=-anu&$+zEeU"hH/ho*Q29[<$cq)BOs/V#mAWdR,l:Gh&GzgQQJc\9>d%K6lKQ2+,L%R>QP=tCWIU"RqlUq)A2p5KpCWJZe8i)oSHj5nj[$ALhrcew^fV'9]kP3\9b<#fHJ,gX#X_ONihU"aTOSV,**i?K/+G[(I__E=qR)6a<Mg-D/SZ8'Q1>p<rgZeGuJU9CVF.9S%HIqPZLU"D=/gAs?-gh=9X*?ip<n;vm28t*BhH&-(o70uaawi*S/LM]00o,3kzTRK'#;a+dHU"l5=;KfVs+oo=tfAgq<Q:kem>KM6%[aPN+K[tujGF+?&BaJ\?i0;o6e+p\pAH*+HU"'REUyKSIos%2go2,lbv=bK;K=6N2FGkD7zUV:PUaRcq3cV5v29RZ6MhmFV[v3+XU"_AcT+*FT%<ANnBQ+JW]IBZUyg<Uci_/$>z/o']mP4m5jf39Nder.TM;6g3GUtoRU":,^ZV6OrxS7*I;YL%j66H&8$LZjT3TDW;Esd8)1[-A,TB:VUZAbgmdoZZfM(V=bU"%Z(en<Uz7ldZw]Or^udgqTjJ*9hr[b>IkgKDItUO2>]T6#oiS-9Q$tj3:kX9TeRU"2qV]jm+\63n04^?s8g1=dIu(0;&f\k1jx)Qa&'XK4Us<PV:XA.c;5,MWAj^;18KU"V\LURVT>)afaLN'gd<:Vc*41&s#vYT[bMRjoLSPERLMj+21.)oOh.(KsOv[0Vr3U"0#^#.#==J1AAapR,I[>;$?r=O%Q0_P<QT/[%bE0iJp$_Txe9iVm%Fj8,bb0$Rf;U"efi(5,t%,3qi=hHuMTf9jrF$t?jV(I7/6I(ix8<'(>hch?8\FfIWC9:73&dYt[[U"&Xe0_yij9:'i2JrhOceAT4mMDD+L>Nr(U.AqZ')GY#Ib3F)zlx.fLe)U1oojTUwU"3oFr/ma6TUH*Apn\Ckj6r;]SYK3oq-X6f^DjP2480wY%eT0Et-#Ns?ob'cUJet3U"5+COr7-EE%2zl#*Si&rk9KtuWsV_QBI(p+AJg9Ui5EI%pDZLXi^Kg?Rs,l1d+g'U"DA2%aC74/XDZZUQfVDf4DE7YD7JPyx-kBQ&Bu/AW,S%4A^DG\(q=<'o-wL#O<pRU";>/\Jy9L/fMewJ2YB#Ef<%?)$3hWrGuoLKTvpxdC(RP)ZLL/vG>S?8>)]ES7XZhU"OfI1]QC7#gNJHQ%R#7MMV=KRrT27:F3,ohUUD'*nS\l^kBdAgY>(oXX['HyqQW+U"y/7qhLX&95.V]bx;T7]J7^23AyN%TlMFbhF[QSN2zdDs$xQN-Wp-q=RO227aFEQU"X/DA/aKZrb)$0#&l3\rj[BFEn\RhU$aeQqT9RH&sHMiaR89+s^Xx^(Ys%7Y/oxIU"ZP4[>5yp][ST\T8hO6Q(OS%eCY/fRcgs/'USr5ExL78'ED;+T$'kS.UI[,iUpf;U"6:J1YZQ8lto,7E]SYlN:IrSA$EP20pLz'O7(/sT[h>OIE23.:E,3VS^yT(X7d\'U"<HhDc#NT.X*ntTlBGL90/]XJSlEF5]0^0T%sO%/f&D0k;ut><(G.+8NnfrtRwP;U"Thr&t4sWWr(Mv7m>=(F+hOS%2BE'L[zR;g]j6r:tGF-=i1d8'/&;t<S&SCs(H+BU"1TK#?'e+jN*rhaVb.O1D^qUR7\S[c,Cmu_7H$bo%gJoN#7<20ap2[$XLc*bVDdyU"W1AZhK*0ff5AK2:6uk[D*c^g]S99_K7tFyk,:)TR=#hV2T6%r$?vTq>b:8V%.nBU".XJFky\UkR2ccbH]Q9CY8Q'LXeE1h#73'+%f>q5HP0ww+K6J9LF?Nqq._Hu:qF&U"7_xJHJn.C]D+ha'becsLf^<*1p+J(?e?Fp+j=yejqZj,;u]SUdr3TjKs.5Vk3N]U"#o'34)w8_k'?CHRFK;n%*Ao7\p0(0.M[v)gPVe(&'YJ.Xi0uslEvt05pvX5sB7[U">k*Pv6_TRkS0UYuuwli&POBq1Yj>i#AW7GoLN_SD3?C?(l:oVVGc$mePQ=3(bI&U"5oPjeuync-sF_:Kn<<Tdlc+9,TRMUpI.3Q3RXi1ChbWgzZ+:*uF=:(Jse/5XQ,FU"]ey&.WxyV;$y]a;cg//N,lrdp-Ob618$w+B3*[$HhiY>$Nei+=%+^2gDRH2O0tcU"s7pwIK8O_,lSuDnu7E,+tu7RK/^jtIsg+UhqhYbLJ(5Fkf1[t;EPH0/308I;*hLU"PsuX_WbTM3on6*>5g$tKjS1>FQ.VNT=XeVb^iEB?S&GD(WB5cXNVF9_X#%I>gd?U"*Fxp-7;>aL+j>Jxsg</]TJ35vQTGozolnpN8gA0GhV,-\$0ybxHVhzQ:74TZf=oU"s)&SuIvhQ6+CXXDJ(CtBEyM5$UO]=jB#b=+-Bf?ndm%x/+Ai[:Tu))ud&KX6)2JU"1\_Z8NT0.<;(#&>xIR+(acjXn(W2n9WCO^GRW3jXM\7P),xLGgvg41]L*<IdrJOU"2cSwpZgg#ajN%Y3=EA-$oO;Kz&9CAsE#tvKhU7qm7<;WwBI0nZLCaZF<.D)kjN6U"1U20dFRxI+C5ZYIP5w1T>mZh*<.ETugRS;-EG&:<W2'_0k:U*Q_0=WoT'wHFTF%U"ESPWxm/s4_g3*sZ]1$XAN-#\E_A8GaAhyy*s>vS:8iVT2HnUQU+#e2O>N+4_a<aU"%,N>C/%I]m$T4#/=Q+V<*:m=)?%bl=>NPnm\0=.obo4HD0sU8,)9%pU0Wd8:Sl.U"kc#tDni/SYx*7Bfje.*m2]+)CGplZDzvD;XnSfd#'S-*0C'JXQ-\*<CKZ1'=#xeU"hcE98P>>t[3u^ec-,<(OfIKlteGJ#*_.d5$%EgGwVkaJB+cb/7?M,*$AXy#,(FxU"\LG1Sx/oNEj5*i]bPc.S]3'2U\C-V[rOE.,fWOJnWjtFs*3[dwfn:&r*QcI13'oU"'iN[-WKi222W)Kdb&bW$3CZSe$at(TDU^4yRaeOZRr-ZfGo%H22SBSpjLClhW_dU"<m#/f1O.r9'h_/J1nV8<Dw)M$iOp:q:$H-:pCb+:A1-VvL,DV#PDDW-gGl;F8+mU"%L1\62[-/^<vGX\#b)hC%MRltQqEB2NBuPg+$,Al,;Q5=S(T0m8^BKtl/I;'oXyU"bO9l06QLMtZh8*3g.Ut(c?<a]0=W?V6#h$usK#+ta7ZD4JF[JKSX7]T[DFUNDikU"[;RT9fo1HdKiy5D5ET5Hh+o>1,d:AS3aC^OS.s;v5Mp7/IXxHNnAFIgr=T5\UqoU"7nO:c><Bg?Kah(9Rp\bH6x'gooXp3$Ao63I?o\5zLN]*$^[RW1207,I\+V%oV=OU"sSUeLCjevR?FQ%eQ]mEIYQkJiN+-vmY%D2./REaqHuXI%,KR8:k)QS2]Q4>)KWiU"9NJ^iA#,agF/2iK(Ke(-h-Ww/nMcePN0xRDY?nh3AHvwK+RCVDs(?'MIuBib\x1U">6$?o[+\MXpUoEc_=g:.(e7jc*8sni9(hk$:s[t[<][koc(1Yf)dL)4A)I0ZUe/U"1H9(D,(3(v#p-,wBmcV&+7/Q9Ah8p&LfYnrPa+7NtK8Wtnou/?*-Sp*r;<8%Wo:U"U%%mfU?QQ*:NOKo+fHhh-v9Z>TV/_o2eA*L0I/<U<ZslNk4Q4.(TW#>8bhAoI&PU"rCE/\l=H[T'UECW')AK;DU.E%VK7l\-3Q:F=ypZ??'*1vI)Zs+c(RhsLL#9jkkmU"E$e*^nj)3mN$Groo61V)rz=SRKe&#Rb%5kE2RsE.0Z)TLKGxVU5XIXM]8o:8GU6U"$#nlAXJeW;p$qMMen.3_2j.V*sZ,;S(q0qLh%?dBs\%EhF'U2v#CL.tR/geVu%SU"EP98u5Ym2U$:BML#ey/0NR7b0g]Q$b(eOpFR:P^MvvRVa(>9RV*%t[mT(JG,S^PU"*Hg&H<qz]-2SYoVq;#dC2x6-L][8XAP&xX1CC_(zW7X'Q.=.35luxcN./e2+&-LU"\O2bzTzl\1ID*<m9bEg\DG#4v786C%3i#x9n^.x9^xd,ukQ:4Y*wSqmjyT#[Nr%U"A0KM:6ttCp5Q%7Ft4ko[B]?e:7DTGaEv>\>8Rt4sjE_W^vQJ9OZC1aQM&i7'GCyU"q%?y+v_v#y-Y<,PL)L/Oximzk-s*_H#<fl#qh>y&JGQ6_=%dDB*iu3gPV7y\GccU"U&#>9G*.aM\=lE$yR29cv]W&VUQ1V43FX&R8b/DrI7(%uFNJOwGSs9Z=.as5v%OU";u&:Vgw/SKbhZIt;VD^D.Ua2ID=m>'+;w2**]jUq_%QLeg(-9(X2pTBV^RZrpQmU"W=a/8JbAKDWKWpk.2LsQn8+Pf/m=:'%mo4+;[eM)mu^,Vsf2z4Zk3jTK9Xggl,YU"Q2_z7pwj[=:YPWF=*(%lG7K+2*Ug_=%SHMa_CP-5TJ_.L3AF4NM(gHr\0ug-KP/U"/*O&s9(Un+a:pJ\xE$wyFP)$U2%;sTQ9?$3du#pH74</*Xmm6ijBQ*Q-A3LnvIcU"_D1T)YoPYo.%\i2:EcWk?:>0:?g-r7T+mA.lZM%XJ[cooY_Je;9[KKGCBJBDn5vU"T4#lk8sy5^RWSnwCQ5Ft*ed&wh\DxvDf_6P3_PF6a6+ka&Q%bsO?%QZ2XR0kL)wU"Deaa.K9]?oTd';;]Oq%mo3d8/I1ScXOVa^]r2UXpWgl:YS3=h)4uV)c^0,Fq_w]U"h7XkPo'3:Wpw&r<ZoI?$j<1BWY4dD>\^,A?u0bfPqdI,4bqdbSVViOF3*>vm:[YU"(\i#S:ML[7K,</KzFz?Qp?AAAPqC_<o;7Z%\mdg;4a:R4W*<uP_7Fu>'>T%IdMEU"zwcN)=QLov4FrkH33u9Y^OcMC7a4GqXI=83y,9(p_1t=VugA1IrO_5,%d)<;TN[U"+AGGg272U+,t[>Qg]RF3dR7Pqay.g)oql_0Kl*/xJ5fg2-D];5Cs^f\G,FM7)mTU"TV+hVos.H:wcu-\i;c)f'e.9gxt0KP/^nYzM]&-fT7A_qZ4a%L[M4'sg]BR<^?)U"uT,AgVA2-,Gf))LKD*3rmje:=V'^fgk9A'((zk])v+LMNjwFj7f81rYc-Qs(SPVU"KF8%-I8i2)wW+:7i>em?/^%#rVmx_&dJdR=UDDLhXGGw(D1[wiOpJfV4$ZO(=,lU"x-..MO9(jv'tLW'KFoN9(22T'aIv+:[1wK(Qf(;X,/+(XVXZ2vU;D&K)&s+*,zdU"PkiFOaTAq_lN(II$afn92T602%gXfe_s^SnHkKnI;.EaBW3UxoI7?Ta5#\eC)DyU";E5cRVxfJq)-LZ\=vYmMG+sZ7p;&m7#F%qki./rH7akX'ZO^77BKcT&\:)N4ISSU"470<-9Z290SJHja?ZN?AOBC5szA6/,258.k7q+VN'DTzA5iRMhxO5]9%OIx37u=U"P(T5?;H_*(:Be>oX[H>vn(N>Ns0S7;J)u.Znd.Cs-$,O10'Gm*#8B:-L+pksaHRU"^^+Q+FZjXVM((byrb/2f\%=,FTw2QvckM=B0jDAteoy5)l,Ta,,P(M<]$3)F8YFU"a,qU6lPVhf\pc/aXG^U+8<J.RYxZEI256D1#xI7jpR0-BDmuyPT,yQkExSZhC^rU"iiEL3a9(xS?O<(Z3KMLgzHN4DJwPWUE2AKXsmJgiD)&l\P&KjogCUd;9L$F%?CqU"0[m,pZENdo'H(b5DfREm#rIGWgZ,HU-,FAI75+wgBZ3(+tdoE/?B8<d;8&13,y>U"P)kgN/5WOU<8DY)RX-psEK/Qzr4k._>kR]1xe1DbM^BGt'Akm[gt_RcQrT,cq5TU"+P/BCVKLKVOZ9Jyq7b.)We,lQkIVhKtO:/O,/XZr1%7'-%0XJ)TT0mP%cEZp[DPU"a>-#5n5MZhJfCwKbd%YB.GaoQLk20QYoRcxAHFf6t#M:x)5(:0'txzy1mU/*VC3U"Bef<)Z+TIv#m%N)*:&;>yO0aLnjULnDNody&gM[/2L^l5GHGD5^Z]K%Yv2Iqc5_U"9gO5d.w&1tSvO2Js>mqDqwFZhMhUG4(runQJ?OSAku*T:Ey'xVqU:+L)T%5Fcq)U"O\KOr0hCz/&=NXw9&g*$,[*D]<)7s(&J#m/Qm1x>>$/?8*MQGmXjao7Q1y25WLwU"62D'bLk,d>(E,#wE+%dE<IH3=&./CNAWFSSMvAO]cXpRqis%dY65%&cMdnhbHnBU"[0IkViC0T4d&mLZ%/htwdD-i%4C]w%aQI':7?W(SM7tq1H<HP/Nt'*Xe?3P6ib*U"mmq?6kFWRgcP>RMV+WZ2)GI>adSG/*QTRoWH:4d>DgcFi[%qQ':0Y&EgLl,&v#cU"R/bB?_7bYE<^cJE9dkClj^[nRr-ol8A&ImkaBhO3w%im^TCNdjfq1&%AM1OMgpvU">HFMkYN1aSP%gQ&'8KbR5:J;J*c:QI&$:p;4IGWEmoCGQ6B?6CW2Rod&%\%/*1[U"$^a[h0+;f?YU21;PQ[:6/,>eg/D_Q^9[YebvuI'&*hy%J2Kp:-dYs%JH/x(gr2zU"X-C,h#<x-7GwJ(D2$be)Vh7,wf>z_r7D?e<4K_1&Lw-o-;PFfu)Q0+k^zf&a^\1U"q8FuJLm8I([N;1*R#.*']PAbx=xG.rv1\5FPJ^'x?/Un$33PNAFE_guU1)#&Ey-U"U=+ytB(cTU^zlcR\C0DA4[SyDoH^e.;=ViC0+%q.>-)f,&EwAC;9?VUUz42AC'+U"[#oh7t;uqVgcP1(a(-pb:CN1V5djs#j<deR:J3>?GeVOkwG0u_gj)7k#ET>AnpZU"*:B&O28%RyNBIanLh3<:cgbHC)&*gYOS<ngi&2[IZv>qLCG9[z7$qk%4/wF=v_jU"Y>]>x;6iseXFkv8<1bi17l\uz3]JEJ6c#Y0QB0JMH7X7[NRyV/Q3:Fjb<1z4n,IU"\oBEI>].7[aQ6l%wVCn7c#ME6JKAP'(m<fv:(Q]qATGXE8L1e[0BR4#xP3js[D_U"DUBi(3.sm;]l7>'^qHmMXU=:6EA\AU_O;WP1X2$'+-19JkT^k^Q2l4F_/]6:l&nU"?B#MqQ_</w*M;+M:Ls8PipDZWABsf&19N2oMY&['OJ8'fm/u,HS^='AjIZjH<HoU"4Kl'x]\g#fi-Qte=Wl3E+rVUY,%M'<0G7IS6\-Yrha.*I/XDoP^#8hbcbbcR[jaU"YvqK/QX-_QDO*H,<x,G+eU#,*)MLLg-HupCaKTgF)&E:RHuM9_l>9C^b/'5h\Q;U"*B>Vm<b\rP9SK;1_0jU>w5D68N;HQxEU+e/qc7%jg&=VhWd#TeB#1SeKLS*<\i8U"+GJj]If+6$M(\i&<5_9(ZVmr<si3jhR=c#pmnC*>;CU6q7aCC0u3YVO4TJ\B4s4U"UMQnn=TH_],cL-=rTQ<$qSVi7*nFi0_t0.RM5t:X?<CjGXM+f-o%^\Wj$oi_0^xU"*+(E6^-+'4hcXben9pTVp%hop,;J/3<2E,/^qB>&9_Wg6ymRHg;-W_8Z.Gdsj49END SUBSUB V3U"Bk/0R_Rxek,UFloqQN]?Z'q8g,l?1e/QIC/JJBgT'']YmOrf%D'mom*?<p(3t\TU"o&XS)*7G)f.Y'Zr>L<AV03MD-5kG/KDwL<yAaFpaTP*n]GpKRK[D*Dd8G5A+&GLU"L_Fp<c)(ZZK%VaDRgx+=hGR72hu[>C=meoU_\==Bqrh%H\O+?W\DsspdjY<L;08U"nZ(J-Bi,fpeNOOjdMKOfl#/%FC',L,L#V(a(CVe\55/)B7E43]4&GH%=Zr'Fu-YU"??L$_3AE:Ox?Lev)3o4o6:[pH0X<R%o1BmMuR+a>_1l_0ekWiV0-(I16b+l[9y+U"l+wXu_*YXaptWJZjyd]8P'G)?+c>keY(u3^[f<YKgx^Vc0>7M,sFG9cl1[u'K?TU"pc_G)TaJ0n\*aIs2r\w9(H?]<3E'9jWFdZbceXy\qPIDzX%9-%?2=+4>>$,\Et9U")lDB4&(xc%3,Rk2\96i+FY%S8HJ>Ye&\kdort0-hBJ2U3b\kwOyw>J)&j*l7/'pU"AV7lxk?tKkv^*ib9=sxAp+KLb[#gvGo\%j[id9a]wGC&'g1jeYrs+^w0,Z7P\X'U"1Ql1pMVijJ4/R;V<(y>p./t-Hgkgpc<_>X,XAxk3h8?M=2i9Rvb3tKYM)QK-u\XU"&Qjd(4R:a+C<:x#tbmR\+zR:o393PGMAfubacTR]bxjEft[#vvJ'h*C4go1M2/CU"xJCXxsESd)NNE%*LS.t>qN;+yp.544].6PI+sNxlLe%TBhs5LP%M8Mf/pD=sdX'U"vS8z?+?aoC(VG.tic+/2uwZlnOD:,UK.Ph\.68tJiKJ:_wi'nKsACt7IHD^*P3nU"O+_7XQ&7ng5-FJWBj1&?_rS7WgXkZEVnjwRFt4nRdO'ej2oiFgkP)/)rM+MELKYU",2orWDL17K1x,XjnBq[nF&G-1u7J%D5[,ZhttQQNp3p&A1sgC/3TCdW;DWFa35FU"L6C&>mp>Mvr(2d*Qv$,id,vh<gxJnoQ>''BhQ-8$3-:BRFG'^b41q6jt7MXufZTU"v;7'kF.n:),_-jRibOww]ls:X8.C:fRV+jVP9-Zak&:y=-vdHi9&IZ>8w^fz)qRU"Y77()q=pQZw]6Kh]Ej,//HvJ*<KT84TlN^8ZfxgT\sjlDcYb/9?r/m.gbDlmT/XU"2S'R74[y>owXH1A'Qm]3]GL*i+[O'$\Ekdhe57oMdo1u2JL>ohQ&v=#NkTlpU.dU";9;]aw8EqUQ%oVj4wh&4>^Edb8P4J_5J(-mdRHtQ]/<CM3J>i*HE%fd4FWi^hC]U"&[d5bp/&,K8%ok54EB2Q$Spl?Sy#Q*ULg)TalZ%.ZD\9uTdD%p,r;bXs;4:l7([U"pK;-w<0'1H+r;UDq+#Id;Pkiv&SU$JotE)kBWMe.en-nTH*6^le5dA]dGpgGML$U"0SG420Vk(NI^QH,3ZIhR+R.X8EdJ2&wCXI[cQV1+lOUdC?[EcAIA\m%:R7Cd^jYU"\on$C,1YmX(L<r?k1tk'Z:2xKPq43k;Dqc6o&YINbO&G?^)NE2doRCT,O/2B-X'U"+9M2ESkJ6AMHWb%sldDc(=GJU3Jrfw&lTfQzL[:(%O21O4jjVZK$#X12/kiOLc]U"mFe,=)Se'zZFRUf?Kmk$AK'T*,R+MU&oY*[C0&LmgcU9RZUfK2bWWX7>SA)0dq=U"a1WjXhmT=*bahcA_>QQ^xH2>b#=sCZ^^#%7\d6EF#pLZ)&d$ua4]&9Knhk$e)GsU"oIu+Gsa3pfKYf1)2HPSSmgB>BjJ_9Gk'%A'6Z'rui*K8uA>[#3LyERE'0$^#9$lU"7_o^#17z?-KUy2<SR=hhY&kx'/itvv3MwZXKUgDSfn/on/\&BfG;AijNf#Oh=B8U"jZ=MvZ\eAxn+F0OyNLR*m2F\D7/&ifOz1'J#zH/k9603XaMrpuG2TI&P<G)Gl[sU":_QK'(Js]trNoQD:&$jIWi;kwaYL0Wk['VF)w%,ZpjudJ#SbPLr&]E2lId8S6<qU"IFD$/GP^;ZCfC&#qomv9O>/Vs'E8iBxC'3=]?u2+ah?S)9'/1qA[p>K&-X'-=hfU":+cLUNlp(LHc<rgCY#,7Tou6c;CVoJE?eTOC1DOdtPY^>w1+jLRjA0^:)>ui%0\U"QcKQ/)q)XBO]ek;B,FaO*+Y*KEU2;5BJM80i7kohZYTX(<j[d%o/A_LA$:?kDerU"u2*pB_&=9s%j'4Pshe/o[l&7iXos\T&v>Wl*FQ#PZ+3lpN4RKcH)yD>[=Umzmm/U"4hMa,qB<;SPj&dru'Dv^JapgZYew$$V14s5Z[?oq:MZ6w'HSErA-p+CU_:3M15,U"0GD9ote&3Km,Ooo4aUo#s5All6j:=[O^loj-$4t\Lf.p9b<Kng*ipprn'f^451.U"(jxB,vGm^ZruUahl>Aa/6'\yV0$?$lqYXS&uA[I[W)mDY/r9Qusvl4tMPhst,8dU"x,Gv0u%p()9.%%O-L%xPM1M]aH&bP(%%%o)%%%/%%%%fwf%qngS#tgo,.xt79S&U"=x53W3E_>],<UKR+xDSJ.CQbV]=KY5oHZY*LV<Gk%n3Dn/n7bp&JJ2tQ]+=T4lEU"IsfQ<=T.Iw\;4N6/wb71Gg1Ea&*o4fEKZ=;bw)0_,/8\#aZ]WltL8XhrtL8p5E$U"a&93$e3l^LVVn2DFPSa%i]qFEcM*bs$bXbj>xKHLuauBk=Mim6v8aqoCglr/5<NU"9b.5$uR$_G=M-Q^hBW9Vvq5M5DGUbP<wsf4#ncqgVj*4C;RH:K+qsm%^(_s;5,HU"z6=\mE(%c3NLcvPi#BAS]5cqF/8wT^8\0AeK0IP,AlfF1Lg>)W58TmBBp_el7hfU"/NaFE-<pFq*Ye(CpY\$uX)h8TK;VSpiV.p7KnS9%yE<B5dJG<x\vu*7?9t3hSJ6U"gvT5=nJF:NGld+B'W*.+5.t1KosX9h7$&hd,O\Z*g+Mc7Nr0,em%kq?Lr1#u+c-U"O2Y(-,C#DTIG9Rs&1il\we$cH>)?=;3Oot.;3+-T<ubz4;D/s(9kZh7+B'7>u(;U"jh>&+N>Eza+p:TjKSy$O&Nr5D*F9T4D3L*-tuo)uh-L)a>(YE/EQj<pq-O0M208U"X_'59DaIEGEM=^WHW<>g)totx5Qjci4[+T]aN*<V4FgQ^$/lhg]Ha#mDg,#-N9$U"nlV'R19^4PB(^2'm^Z=DDMC#DhfJtpf(eV)7rFVqThY>\E]zq2ecUWP=:T'$dz3U"4Y-E9u&pgfjJk[t]cRE01D_\#Qr,*dGU+bvOH6[Cpz:L87b8m&3]r8hhS%rICO0U"?0DIF5z-5k[*Szj%o#-X'y,1Yoh=ltBwg.^-._6hXBpV+P;.8W(THAn'?q9,7($U"mNE>c(u&&QN7TG$v&)FKwJW.B2S5yZ=dPST'DYkg8UK.0.ogq+[d1I/9bDg^g4YU"q\It=WN=Jp%el'6_]^R]Pp>U&8ir1:vm5xA_j7>Na6LG_U245:.8KV)1UN9Ox-+U"t<s2?y?DWqr9pVf-9hn]Ue'W6lB.3u&+ckxCx.sydA>?.JBv]5H(oX,qVn'rDupU"%()9%(%O-%2yPMM2uu>G'O5%%&-?%%%/%%%%fwfq%ngSvRqgfg)JKxzl/#&GI^^U"X8RqPOY+1LO<_z2l?n89JW?3bdeVpsbR4K5aNeLet-Lq-W^5'e+JgbtCI_Z'D\XU"0?pOc>2:5i/t7*2DzO42o[1fe=o_bmRq:Sj42:hOA9^nuHvUHl$wBxr2<7ru&6PU"Wt:(,ojcB8$sRu6gLK7Rha5>D,j))0rDd?=a%&e,\;R(32;hPEie5HE=GXu3(b]U"%ggIh?_D7mP+>/HCH*3RUCEk,A-]FX]EA[9.H<EAH)C55BWIdE8$d2$13F9+9jEU"0pH^EFrAksC2H6H^2H#RbXeks>_vA-CWU-Q&(WF88_NAR-AVmV9+92<9jEpH\^EU"rACks2HC6H2Hj#RXejks_v3A0351^X[E_2WE[G)A)3[7W*2[*nlg4k+$'Js9([RU"yG.W^4H5r4(K[aePaR5k[5PeaeWho#EDHndHl_\9AN]QCW]ma,hxKGhb$xAW($TU"$/NkA646d<f(7_.m%7W>VnPCtnNQvf9Sp-gOG&ZC3.[wSa/yPQ;838kA0+:H0V(U"W7.3c-T>7g6u6SH,rF&s4>lFO=GG[D>l[/sGwk$S$3=ezTQxuxr8tkh(mc#58yfU"dq8emX.%Rq.qw<nk9RS->L>cNA=sq^j[2a3,^BgU(nCr9M,bicPSMDUbkeK>0;ZU"rQ?j:JKi>[\.IbXD8#SmPRW%ZWg7H[cq;b1[25<U+A[]LP<X[Z:Ll5tvZk[Q'1,U"sH7ph:Q9,)w4KR#RY8'J);meCjCJW9'.*N,;7^]-s,*qQ:\f2Lr;#h^z*G?QI;pU"hc=;JkM?XqZ_,763pwj[N2O8j]cs&]U7I.2_gF&7Sc4FUsE&oq']1%,=^;k5U-pU",*8hQlK:k3/qD8q+ER&Yn2?iXTVGh;(aKM6[t1r-Efe.:tzfEr,5FJMImIsRXx\U"AacnjS6gp-/C,[VKp#vhR$*vK*/hJRils4JJ49,uTMK<abZ*REk:]-_:7,_KOj?U"SfEmhUKQ.V]fpCgI[4o%%V<2XVh;1DAK2S;oO(.\Do\hi<88pBGB6Ea]4N6]leiU"E-WX9i'dvYsqI5#[S8/Lr1:z>IiUffJJW<RF<acJSm1z\w-=Yu71OOO3%Za#5weU"DJ(?NSsZP-/Am#uJTGBtdIp7VJ[:0e];i%JJ?&v*<VQ;;-%mxQF=jsr3LLxYsm+U"fv-.Nv8=p(n7.pZDV.a^r4x/l:.1U-8Xsqljvi4\G9LcOA1Yk+1wQ:Clw6sihe#U"8aYg>Tez?[p5X4M#UfM?#a9A;_E\d,Of2OTA-DapZS??bp16/E6#6&LDjqc#\7$U"Yu_GrtXii2yXEK0)JkVI6hP7U2^j=%,on]cRW_C;#.J*_EORbnVr>f:'O;6>uGjU"C^ScU/z/bJ9>%J/'2]Yj+#[7u=.:JIM+=#G\'2mN$eA-9&$vQ9Dx&8pUh,J39T6U"h3CX_P4A+l1rZC^d)_A_9%=3*lhi,rFcCr;PZqs9X&3(CD5elhR>9Y1?RAy8*'KU"L(KBXPjr'*SA>fd*MbglJdl>fc9?K%3Rp6YJ'6H]iUScC?hC#=;IK1Aa*3Yz<dRU"T#zTHh-gcxpj4WxCn4k1nd^'3l)O0.$es?9;*/1VhGm&_G;%W6+TOm>azdsv\sWU"H*]CA42gsS;ZI5s&]DScxpH9bu?l1RD/&(>ro\(D]Whq[z:CVeYz*Eo?a(?zfwWU"CtS+'gyp*+zcNxWxuozRN>Bv0:dyCi+Ms3PtFja8*+Wq>#nAR]4xzDI9UwJcK3bU"bW0i9BV:Uu&?iU-fQ'/=_Vf*&,hg3Cs/8MB9?RL72%r$2vSH=2)L<l%<Xj$I1]/U"(LPKZ\6(3+LjN0UA<>*Q3Bu.4QGXQ'DfclJf\H?aj=biwu.CKQBW;V[SX[)Kf7\U"?)JN(Q4YXpqNRobYhf06l/#4/odXT>EEEh5hJM54AkCBIC?E>)sH$Pos3;-ajZvU":4M^RI7P)mu7ik=?p:iv64m']=2?[&ss;8jGP2STWUgn?C[pBG=J7Ne]pClv)$0U"HAlWFisAl8Gio]#_r5HQXJ8UgmVrL:'$0BAl.5H-<J^&CG*BleX5HWEJh)$7[l$U"inWaZa/k)$;Ol$3W3%BCK+h]6lc$nUm=eMJ^1*UKM1x07J%oO1z,rU1hM=c*/9AU">V*P?k:KHSQJ8t9MM%M8QuXFV>o)64;BS?mC+s8Ou+v$pQnP)?^j,fw^u\bM^hRU"qqZ[P&j_puFBKpQ^ScIbYY<xATZJ,=mF$MB7;m:BtM%xQ7I[e\fc,8C0rY49t.1U"4cQJ[qpIPS7.J\W]WX#iB\m40YPTpO+1&<\l(tATpqnc8P^tf[ot&Mz9C8Rjo;]U"r%Yom=xpEMaiFVZ<)JhWo(9c;(6n#s##]NYq.dx6#&,+:R?\NInz3kPLlEFV$I]U",LBcoc6QTu-9(g\Ce(bw?Mz=pP4qlZDF?U^R<x'h?*hlJ%9QpSwn?q4JdCp18KxU"_Cd<-T*F9,I%(Ax>3Z]:PawR9_;Z=T),Sae4N,EV[PfX^iMc$):M#UUZej%UV[rU"(ZzcFIzr8[4=R4YO7i,f&ycQ9qdlRcP)Y^s?GIttc='sfe.9]4V/?4'HU_h8-t/U"p,=+>VbQT>]j-&ZLF9u:m$0]vH-U)n*<#Sc)UnVERiq=R.Ln6rtMlS.>alEd-V;U":;RyOZbIKdpsUMC;HW'hr'bqqFpZE?dFV2RDI-CZHjxvcS(ratw,gmt(N7-$6\dU"A;zbS[cdQSqg1^z4'>(6^3_M8L353UuiKJ_N,/:9_6g/UjsU1tDXAbX>Kc5pw3EU"]tSh8Z/>7;ZG7u=iVJjr*5q6/ab>i$Ke?08pycRSti\(iN>^ifCX<m0+p3-jL%tU"S2kk1M'<=hXJeAv7\Yomt$L6k\1Uh(bK&39*IR*s>%hr/+?h>%?iRj8E*<7U/%RU".e-U9XcjNfj#F36UOEn7^7aB>0Tu[N6uH%HI]MW29NKSL6-nex-;Lq1Th0A/b)=U"RB#E'U+6xJ*(-C&*LcnbvY3mKQpYYERYTKK:O$zug.gXAD-l]M2:IZ(aO:zDvN*U"(V;pD0).g->Z4jmENruyJ_FL0ZqJ#5X*A5S#J^IwVFyDV+m\>Pf73t^PpR+)A9RU"D4K_h\H\b\pA\12kmc$W>B^qJf=oV=Z/F3FVgAbi\dBN0_,8FtTPgkNxNx5KSpPU"no\u=+tBNo$7vIsa#][]i0<F[JnD7si04pJV^e.<ss%doN/ag#u#B$raW*(XI=YU"PNL+Mkxn4k5fb5t2Z+*q.C<*xL<<<;XzQ1^&y]2gm*McT6Q'D$BDPTO-'p1-58*U"vAlYTsy]n6M<\bcjt+/9\fTV>jWY>?C9v3GkV=a(gtg-u\YFftEZ6O]HCzH]VzEU"q$E)=xKA4$.qzV>B8myne:pF?^u8j']Qp9JDpIX#U:<08$$_/yvH?#IDJ.4ul;cU"A+(Xdgi1BiJx1,o]/oT[N2i\aioKFN*wA.$JFu1Wla$^NhfBV,cEsLIZa;+okMvU"^MhjB8;okNShhB+go;cQINNqs)ga7o0CM#u3[s3&#J0N(+iBwoIOMxsMsYa9(oeU"xwXhB6cN%oseAa_o%4vkJo1acGNTjv[vRIeB9aoOuk.MJ^vTKqBI[o[uK+oBDN2U"HkaL4Mr&o7[vkICJjNH2XafNTRgB%aowqB;jc5j$BEoWMusla:Bc5h$B.NROjBJU"cSCx+j\aCoo+uk&JdDwQtBvVJc\atMR4lBMo73ukJCJ.vAD_ahcLAu3OeaHcu;\U"a(NNrUar_cKpB%EJLM'r4osdw7p]#YJHc3uRaD7M><8.HFI)'dAZG5'ew.927*EU"u8IG\<.%q9*pt<nG0t(&bR,UTq(g$-S6$fHNGk;6(smXdNThnfIx]>-JprUh$OnU"Dkt:qhx*mBW&s4,Y(Al'xD8Y-i^uwB7Voq^p>EWDU*,AZEBNQt:C:qlKh=_O8ytU"Aiw^7w'P_cF8?x]^X2.sfC\v<Fixn88VPdOn0?LOj+#Ln*_=\ZfM[DspPjr[Dp>U"5\Luo^m_M>kSXmj+fHo*2n]pL1$XwDZ0f)L_h>.v(iY#>KqjH5Xrcn_fa1vS'c2U"szq\^'BQEm4_u+s6))3.+N:9P:sV(B*v4pCL3E_C\cl^ju2qk1sgwKDTh=6M,#'U"9unx$Qd$w>KaLALOlXOyhVlix^(Ld)$w^YvRiTagDMt\Bgbyf2F3br++lmcC9$,U"v&Lc-aP;:kuA0PiHZ<P.A'WPjj*PQ&FjhkMP^&DLC1YupAPWF;vK?RE#:*l#'QMU"e,+zr^&1OuD(jr5:]C0a#XE8Q:tj3=8hXIevT5vHHCPGQtHAIU7Zxep1,%x1BmnU"Cu3^Qn?oZ$<DjNee_HkH+P$dFAj,P0rtH'$^Ol1YUPV2-4P7Yi1Pw$IrKZT+>mZU"Q_nZ1D)_;z1q(Hh0>1HlD1^MAD:#G9-]-<<)'4>9vd1V>#V7ZQ?n8qRZ#Th9G$0U"Nx1GW0d$U,Q17>'+8T\h4#PL+mLDx.KZ>Mf;W?;%\+l1eQe\\3(YBZ#ERh708avU"9$)(S9HcYR9ZIkHzcF-LYli'8UJ,WxM84FD7'FHcQ;D.P_&gxju>hie83FeLJiMU"e:)x$bArd#VD8yF4\XLDOz):8\;'Flm#0xdkrnMEm8rncLmjEtfvLha:'%g)tm:U":N7)?&*V&z6qwQ%[gQJ%:c%5wOax\(p6Cki_M?J&dl('2gWea;QirtHYqEf(msSU"L?1ZDv.-P.2Vhg:)&>fk:-Xp/5MMrrAlD,G]7;[\[NXM%i&+jaX-cK=C4-KBQF8U"MmbHzh&Hy5%zc[c94EX[/f#Ts5:'5MU]uG.q***5hy1TOp<j$l5c(1B:^To*-RlU":J?(qkO<ST*)/gzW3pMxkF]H0yNW*C,Z6$T?IJjU2Ie0f=EJ?WZ\)n./o/Mn#vgU"6YRD=AW;puHF'%6p'-:rDoU4Yq+U&S]2_wXM(&,f3'e3K$<cdkJ5'K]3ocGt*,%U"'K5;u5Z^9M+qK*c'<kGCP.bVr;OPG\dEndVr-G87LHlAQ'3BidJOzDosPCg;eIhU"z,of?x^4o=kO,PkC:LY'usOJVZ?VV&0S(u*-,-'-Pac680ywO#Y*IrBw[WWci39U"LCy14M4<l5)G#vJIdlZOHD+35<ZU3bf7_C_n9sUmECi%El]>e6U]Xfk?0_wOh-UU"d^?7^%8u<Mk>TIxb4PU(MdhfdCbGyeAF(n%[d7uZ.Qt,%o>'diXuN^((MY>6$AhU"zu]0byDPi=BLYHNR=GKR]t,#l<iO+/by,x<DaZfr2-c1%=<RRUK)ndmVL']E&0ZU"FKP,9zk:Df>B%ezT3/QE#<%)/7]HJXqcnY$Tt50T8(7^o%]H%#f2(%#^Z(cS42)U"6OBr6QueiQl#jrOZ.i8G;TpsTRuEE?)^TN2GJAFxBOEN$5d5S#H4s:);l0R/EOdU"Z<Xj04):&CBYX/QdTYBI6E:&CW]5l#>K//:,+9[T2zooU+,kS?\K-cgsEqC<3LhU"dX[<o;E]DSQ9>^Qx'%up()#9%%OI-%GY&SMHJ8h$qF#%%]W%%%0%%%%fw%fins%U"fSgfjxfLT\A#^+cY4Hu#4>?VFn/p;ta3SL'c^9jq)[O&FjSH<GkQ-_+)B_OV%#dU"1ki$08M85MvsBZxQ)V\jKSOOM\qq3pq244(GA(eG$+m]Bu<^3p$WwJrqm'tqsH\U"D;\g//Mro3&_PCThC1A_d[\rmVqpFJTnCj&q)SHfDD.TlB7/e^d?9pT.7Ah%A/uU"ivVSrX*XaVgjRMvmG#uj$#&Vuj<e6wjt6$xQ,Lt5qA)mk/:fnlqOW:NPz(9'bo2U".El7[>u4kcKz4ysyDR/U[J=<7X<6kMX)<QUXt?Zo_bG[OU/70=GHpdgSUAheZ/_U"ZI=8Ex^v7T4Fp,sCO#WDq5fz$J751'Vd&d6jV,U*TP*,F;;k+#Q-]V'>?'$5sOKU">'M4?0mc0a*kO.CQF?;^VfD46Qk1.)Ng<K1l.t[bE4AHJ%dT/0cfr-:c*2p*DYJU"[Pmd*8>^._Cj-Uu6ENF]l^jRy'1+[,'2TAZ'=Gfg1u7E0O:F.)i-4r6n*&3DRoPU"/U;,A1pODA2>TwEb%7\lW>2iu8OrTXmCe8x13U;?=cq[,VF6UPY9)u*C2g$XKjUU"iZ9O)%HjU.,g)UPgh[qVA4Txz$b?a$xbZp5^QB2R0p'Ea-bmG,x=3v,JFj5r34#U"X&*JZ2Ut>Lto\S8xhT.^arlt9-8L>L#^'/2^6$Dk0dnRM7+fz:\kT&;W>e8_G$dU"_aUoK5O30+oQX7<nun(Sn-,d36^A*.mXG_MXs^8$8efT-7s]dose&h7hKw4K&tHU"N8c_+K]d$7RoTS6<owac+Pmc]XJ4DF05\bMgjg+]-b<ZGqQ0=c<P&re=ap$AG]LU"oGjt/F064&ql0xsF/=)NN\:wYdDB>;A:*rU676G*rNMJ,d#[M1&ms(Ci7U9T=DHU"ft*ud*bHTZS*cYD0guG;rdbqGD>^Xw3rT$54GY=QoLZ/'O[E/R4vrIhljGR9TOYU"9_BhNH%f;.Nkmq'gQ5dfh0)Up];Fvl;GR*KH6V\'v,F0truY640U8zbkcz-M_B%U"sQ)Y[TjqF+5]Zf]Y+XrgYoB%c4MEgR]i989[eV%.i$mUb]_I,WTWFNaLW[6WyHqU":*n9_,#,Q0o;-?u]<W?pjhv':9+p'X3^wp5ykn6I<F;<UG:BQvEaJ%5Wd4)77$/U"s17SIuv<+$f,*VckhfBS(_h+I3)pI?UrvUv^J$T(\vx0g[)i0gibv1C5]$WK$mBU"5'5#eA[3vWZGBZHPWTWn4N>raI'>s\2fTAuW>#7=*1X(*f+J.2U?o?lJe3Kj?]/U"PkyhetdT.j<:YtsA;2f=cQg1S.)Y?%VIc#'H^0R6)<fTrY$(CQ=\P*..vl]Sq,YU"Jdy4M]c;C3$)wHnNRc/bP](lCldLU6g6=ZMBL+shK)-VcQ[*A&WSEv&;AR<w/hUU"B*F]2P%%8g#k.&9$[3FH_]:0+S%]99;imtxs7$#0e&xoe^t=5P:S,P2X-Ur/G0YU"jf95UfS'md5Ti.v%5/-H)V\DEA_'28.+$,?cbf3%\K$12]4*eT^J4$oqKftnJS:U"UMqS+)T$EF>G)HObY04*BT\AKU[LUY;VeWBIi$tx+Ne2s_$#M'zD9e,]LT7+_BfU"e^[u&$,\Q.=Xv+-/]_;Ca;VdU*v.n_G=J=%SEcmOKm0(SWgJS^5dMY+8=lnI=0%U"BnJaP9Gs%aPa'cUP5-)_pCp6a6dc#VA_d15Tsl)A_apX#*5$,]\7Cod8\7:E0*mU"H=GTL^L,<wHb-rqp$(cd3PB9l8Qpe5_g,8Xe7%Q4;hqo6JfSC=5d3A]bkSUqgWYU"togdHI_A\=is;F(MDCGckoi$t+&SVL6)Lw\fo#;#%eFV)Ldx5=B-=F\5yPrt\7bU"$db)v,A.u9[U/+TH%A*ZshYc<tjXSU)VbBGKUXT]+3r[BRAbjK$J):9$aJGLh+FU"8(bOZ:i/NKnCMQI(xo7<+xgp:[uwu,<O#Z10t[)aYmg_>s9efdoWTM#ewDp.6;oU"iU'b?,lv^ZgoN>YmhMW)tNAKj\O5(6w?.,wJs1GT0TVX13lD4Pv9Xa6MD7#r'lAU"W4T?W$TS+iT$-$iB9]Hpmw$s$V23<TSZZ-e.Qu*(iZj)Axj%80V-;9W6&h8+c23U"&*-_ASLZ$w9]m2*15G]ba&H,M.4zJO^:/JQm+=e;&Wtb9$8p.'4KpoVgX8&XF:CU"9cOIE#W,gYn38)wtYe8J[t711R7Kg90f2-/rVJ6:CdX;uV2&,Z3o:d%JyLNTEnbU"w<Eo+dNoNoq&R,6.uAp1]7v?VSx=ZGiIfP4es9x/q)_f\l//cF.SHm/*T7SQFXsU"Hbj-4G)NYt/VIkXcJZJX7mJer]_SBGb>QFeV7QbT2&RG1S/>W+gB?$0(Wn?x<-FU"]7=sl7HV[u7KYM0_vuSAF)JP:(D+Lpwxx=LiZf/eXtvk.V:7)Lj?XYhS=Z.k3)MU"fQ5yfuXS)Y40H.(n6FplN5m$k:lV#?6[UBKqY-EZY0A,LLvh%*%,,;Yp4Z*:e7wU")j9w%Bo97H?%emH(t=b13[UbUZH9pO\UoYq,_qHTmD3K0236N9R:$(7hsos/30uU"0P0i3wIGR#5#dKD'u1.WJ$eB;'/Y'?:4Kq-xv9kCc64AKlW&ygQP1b\&j?^IN1&U"3a]'ax9:';14;eP(KTgW]8rEm;6CK&X#jH]aKJ^Bg1Ro8%7o6ltW185x_gg?:^#U"^HX;E6=\79rQ)m3#QEB*(N\V5[e1ibH>a=kuclM=oq#C'j*F_rNd(WgQm:0G:(CU"?\O;]Mg3vFJ^q&<cHM_Or01p8,B^,Fg40;Pq(RD2k+tsTI=h*aa*'amMr6?qpgAU"NV&%GQmMJpB<64UQ6+D,mRTXWkf;mGfrZ0Yk3;/tQ;bkQw:Rga^35n9dzikS?/nU"zes:=+FeE%Vd\gkjRn1\7PvI[3U=gQ&-U9T1:0#V2v1.n6a=bK>]4T[4Q)eLRo\U"GCQsUW7eS4BOo1SmJG_5PVG'f>I(TA<-m1ALmMiDKkMg94Yo;CB4LUffm/;ciJXU"y0RWG<0Jg*\FiupwRi(A]#;f-3[G5&WYmE^Xn/11nN3:nmODX>q^ZMj*[hnzE<GU"J.v'voj?).9=MZ,W^*QPbTAF8Uc9RA\FgX2Wf-;zl,tzot48lkpj8u3Y7x_1IgiU"h0tJQh9V>vf/+v&:17stCei9Q\$</z+;++-p;?so$A39YM7.Lb3uP(r;++e<V7=U"mf:J9?8rI;V&k)1f0+k4?qS/JMkaH(FR'/J)D,Bgd)U$kmp/;3%3n9H<UOA%iQRU"eT)1B;CbS;l'B1syFYA5nBSw5\-=9McgB9:J,>)J9D;XKe5+7u[#22v6FT1p=N*U"C-LK/3Ca3Cv?233:D8)a)_)DuVeeMIT0ZDlQ>6a9b]RjZ3jufv+E3M>j6\Xkpf-U"tvj](el7gqZ%RV:nE?#VZ,\L=h:.KIe<Alobi[z(0Lc7DCAF_Jc#Vs\*-Vtt\^4U"3>qbEt-s1_jTZ,\o8uh-RdVk9Q#3h=bk57oIB#&hefNfIv>I$,\R06Wg,iFR%,%U"Pkca=]cgD7[sp#ZFoj#r\78*CT-\)9tl6XYPqj#>6hmmA[H+8eD#JF,=,zcrp%pU"1gP)W/i#VqhTT+;=m[_#&6gZ08t0[hL:kzJbA;Z3ID\r(PT2es<1Nmv,k1slWjsU"E.VmC13hgjj^f5*jqO,h&vhW$L9tS+0q;Ifs[3[R;Q]emF]LP_izFJL0LYR^3(pEND SUBSUB V4U"nH5DY*CT[.ZBo'1BiXix?bHP0sCMdnV)Ipl-lHB>tbxQ7>wg5cTX6Q.6oH-z/8OU"e=K^L7X$Hi;-;9hG\QP8D#R_\<*J2_>o;>81nrtzgV=5s_A;Cuh)hiVx&Po-WGsU"-JKUm2nXXds,KofSIuSn>iH-EbSvEJqMFk.i1t7m%<Wc/CBA)nwE0(NGoD/9a[^U"VSz*kufj;&onK'eUbmFZ-ny&gnYH(P7-MYd*0YhYS&GWc2_gtD&7h>sn#Fk9]ElU"OVi.*+c=+y;uoLe2YYK1=m+TM)T+S=f+-==0(o2R;jAaqWJs?5]\Ug5l:SR=M[SU"O).Q?#ZyU0Om:fdglb\\&X*1G#eN+$<e(;E>YRA1'DWn.8R5]7I+n;%M^u1AdoNU"Z=C%BQ1BDU+1=]jI=qrt>)]E/*;5bRSJ7FM>E(;[UBE/I3b0AJgk%cj0N5Wm,;PU"dFgl.%xax98ZnbCJaw%#G.w*1O6KMhL<h/tXV^mNS=W-p+KeZ,e-<_XyVh$u2P6U"aVEUI8O43o;W>CP'hS#4-Y1ca,e;-/8PQe&1A:S]B1(So17F>Q\m1sV5QXDh2%NU"X-27E$%)-]vU,V:XO_h'&uUAIyp\.ZGydd_.PEJ[PxbLL9vLn#&fLZ:n>V;0&9nU"Jq?snfMK8M:MV^O3*.[x+nuFb3rQDt+hDxPJ0G<EfKk*Rd=jaw'aoLFV\GFr-wjU"meO.;78pt9nmKC<<RZUCtK8P#\n#0tx$Q_(+Gk8:zNT/5%-T=L%J<e0_<E53PtDU"&LT(YD6YJWXB:vH=gt'G#2ds>mlP-7g6T35tePO'f>+HaxRb3f[8J2NEOb;QmsNU"5)'O7\ZFOj51;oOsQeY$9>6C*p])wcdOn[BsE6&YPbwYuRCwqd9=rV33T=MTzKmU"/tg&H5Ehkx:&/u\YoQ8<G1L*9AbO*cW&YWK3c-JWDjF%/sN/E1Y3Psb*6)Sgc0&U"b6i8eX\+9=8H=rS2UZg$]j;_%Mo;?SEvS.p_E,k'aBEv2^OtFN\T3waA7(NadyjU")R^qX4KGM)Wq07V%s[7f+e0eE%tTayDwb0,K:.vj%1e],2/Cyt+YO4w&s&;8:%BU"G'_90NWWF2o7h'eQf#UX[JKW+<B?V]rcv9+>a,jBIBQ-FUZ8?'uY(C&zAC>3Yw7U"%?br$k)o^Xhmur#_(V]#jD2/6=8M-uYIX'%H\3,MRCcx&%;+&#I.Qi0mLNK_nN^U"I>hL$%wx$RptUZ8s&JoxOXsi6AINlM-/cT8WrVUECG>/.z*l^N5qm_j1lC'QED;U"MF>o2<3B7H;07'O2<G2Y_csZf=dSMD+sn3SAyAr11l':M',Apg:2Lp$b(wY5)U%U"HlO=cp<<&_CK%a\s[CH$(>.f3UimD&W#1%jJNh/y*a;HUlC0Pe1bi:lg(6C7*'MU"]MB.0,)id;pBw+Z]=g\c0pOJcI6#7/KFN;oKjND(;s4YM,31'/UvbG#tH*<tt,lU"bc0pJ\R;9\i&xLc6A<'HZ?(;;=]5x.XIkc]*fb]krP5gNSKNx0W2e$-Vig?cv.fU"++_DNkO_pxX\I\R+y#R3;C*UU^_NkrIp_E'3K4Vc+)tV4_Ma&JG.51p'4PLG\%UU"(P$9OIH'N>rpVisYKh%<OfO1$R;+,4*?(ECWS2_O]HhD,f)OoZZ;M*f-KeqfIP%U"'$WMon7?t%\RiPaQSLY\fvq58hWZuanHQ4J7'0IM21m>PX9/_OiS#nfmkqInpG9U"/A8frXJF0.;Yj;dABXxYV[xPcq8Tw.xVliJ151qnTg;$+\h%hA>yC.-NN9I&Y%SU"0UC-cV9<0lFM=7r9'=WPdV9y#,#C?Z%>^hX:sb6H=rwmonEkTQe3W]SRossJAhqU"3bqee*W+5C3)PP'\>w;s&;&K\)Py;&r\Rf+ARciYsgY10[U)+=UUEJiKt;g%Bd7U"XmCYKP]R=cR<WO0=k$C8&iaqUgv7w+,B%=$.&Q$q%*vjL$ROoCh;l6xJ;TqT%QXU"x3>k*T7%LuvKGZ?EX<Ays;),3&QjB9]lf-\pxS)&5mRsXicUX'.,;9&L]dri:T)U"dtk9*s]z__i9Vbqb415EO4_y6+'Q2^zSU4s'mjLbg2g/,spn%;Wf:E#A[>CZ48:U".5Y1]-T#DEo;oatV#hNHsS9qhfM3IX,Mw\HtOU)i=GP'byOI_=&NMmGzA'r<I-=U"goz=q5-Lko&ZX:HJuectci3f'zbfMF\4x?:H?o;g?ip.cfP\i18F3$(ynLSi68ZU"[Lm,AL]4p$ig8/h94hqp'L'P+&*uDtCIuuRmj,D_o7<F_JHo8rM[5f12tc%Gt[[U"1v*QBh_()6<y'<x9:lRSQoJoxtkSYgMQd$0i.8ieJxX$B;/E<)CD%PM/wiTWM6QU"BM-&pyGKudq#3>'=ToegKtC'#*c4AC0$+5tY9]nM=YCdR.Dt+=K-EB<q[mf^k9?U",Yt5Kuf'<m0KEicBpSg2j2MTkHC;>anaib'd;(#p=JVOAk)<=.RT;V5SlJ>cN/vU"rs)3Or[r#1=(Z5HAoo)Yl8yO/KFj7^YLF<FTbjpMq>G:seYkdUdr01\din'6AiHU"1V,lKa4aeb5ickw0NNte=S*[SVWK'Cj;'R'Lu$8eT*[h.T7M'?fB$%EP,(cQu31U"g-VV,Ef8;/fTPL%Edrkn2\LZSEWi>r1Y[6#dE/KTALuhi)<c>nReD*48y*m;d-iU"JNF5.V02::AID][,mM?o>Zxqo#dwrrHNwdt.xSr5:owqk+R[ATP7,L9>J7.03?iU"Q)-Lzbpi2&r6/o&x:CT+]5(JgI,t\jcrr,aD6Kjq=gTP$91p/f:(pdOsE8eF=3dU"w_AaO^W_D=wW?%74VA7CLM=l%_EA1ZDj,+;e<x_&C8A?O]ZL/UfYVkB?$<Zi=O,U"J+/-^t6JoRE=E>h6Osc*QSL#0+,RXyI4EJc/Nz=GSD-DLAoObw>Ib<Pa/vwg,wYU"n6*Tl*_Z1,_G+;UwPD:2iPr#wxXm)nJ$WV]bo+KTR-brb9[Rxz2W'[;3':kWi)9U"6#QH26<pUaBDiM;]X:sI7*uH%;S]yO+J7m>h_E\Pq\9EZqkxsq5g(ZkyPFw:/dpU"6UC_#S,lqe;cn<X7IwyJ)kHgu[(mPxK[&y=qN&WEgQKn+6R2y3Wf+S&[Uq#x;0sU"T.[HS%zgHHVo7NB;3y[mNp?k[/_]_nGSXCnT-\jQTuc9']fwX7>%+2rW(.b3%I#U"M:/7jIe1S+44sd*+ucf<-8?/F#F5z3rOF+bkn#hd&bcyiD+4S(8Km[))i535WF-U"l_FiR6Xkc,w<.%''oUfpR:ot==i[NQJF9'E4P)7(qv.'#DTIKXt.u%&cY;lH711U"BX$NjvI*9<Z4LBJr5S\u<fop;Jn(fZhi[,B&lF._U+Xf,vDBB8fhB8RCf?\oILXU"01_9J8dl%YA)'Y?CW#_Q30fwT?klPw[X+N742Q/A1JKl.2cJ4?gQaiVp.VIA.jlU"p0%sO?lqe=:>9hS]&((>ez_r+k/%'OH3SR?xa[iYEarjaTT:6#p<Jc3Sc4S03sGU"[O3IW#J6EK521OWN41mQfB=[R[p2o%>NF,_3uMLH\u7xl>uvT3k(Dv[-VfbC-DrU"px2Xft/JmOeYZ6J=$qNQ0&#qWaj(l*j:/qGTyAkeV%Iw\2+&VvrFS;6wx\oD6Y=U"2eMT_>)$_Ib>5Cqq8>IO0p*KKj/18I<s-Qdpac;_b^oM;zGqggBRce7Bp^9)[J>U"RUmN'aa7>DXU<N%A^)jC_DI-jZI4&n/Ac8*#Ow>:K&)JtOlL+e]t.sSR.O)eCoHU")T((JH9QG^E^>ki98XQgWG;'ISd;<?RhRf1X[,E=(XrU)lAfK5vEauV)*\%gOosU"VX(7Jek5XT\Q>j%[u<B&*EMGS%0]\s0]d2$bsbP0c>iG6mRYq#7[k>3[X$fSTIWU"Ck7WV]l1.wG]ppZ4qEm1q;dH%-m.U&=SXtks\%C'P+;B[mi>HK%4+w+hTr1-ff.U"Jnx51y)'63f#Q>RL[F+4fs2W81S',M,P%XniMLj,55d6RvoRRPpf$g0TM]i,8=gU"8+pg7;Xo-RboOk66QAj?EL^AQ^(^Y<YAXo<vWdbPRg\o#7L-ci1J]xsK<bK$[?#U"V_An^'cT+)i7W$/_364wX4-%>+7*=_-wcN4U\.m:gFj35taoRk[1$Nnf\s+D.u6U"*6\J^InzeEb*Mv\YZddjNF(SC%MWpwGL,w8q$;cO^4(?;mm+d,jUbB$Z89jm=6BU"==3_k&')LIB(1jKQL9\MMhmjD3]/?0&cVRW$yshbAlC36/,UBQCx,V_F1GUV#,pU"7+J.i^/jJ),L,xjwVa11cIiLkhp>-dMQ'u-5WXt$?6FvPv%E7?CM83ZxAT)na8qU"kZ9vLKhJRIB*BLze>\w'65jOf?<uaUAW*Zg2G+Wp:PYgR)$P$<KPHZG890h&7hfU"jyA5u:.;^:6Tf-HUVQVi\dX\H1MARq9(7hMxEt_(ZJ4lwBIV[#^62Rx1U4//\-aU"P</3p&t^%F:C9#T5F>QvEb=S%59:ar'Qa_MYw>ouV5[OIc;GP_bn-YAtu/kDJcDU"vKq4m1$s[g6[5c:e$HJU&ht,r-vt&c]4MKd0^3#yM\2QZfnG#DX0Qb3*1c5KW-9U"q+7R[:-J.9D:ABou/FvJRiR3p:WmIf2$P=l2V%[a=KkkJ>?h<Wq%l:jw7h^-L41U"DZV:geT3FF^&H].dKWNMcMDKUeXuUmKl7%3hkG:Gme2Jl^Bj,\v1x?P#fbyv%F-U"N&2f<uGgO/$fD_*$y5i5hDdbv]o*/mm%4HP8>>7+(.'CBp*P)PD6ht/j]j,eCEjU"Kh1tda[AJhu/10h(V1dlj,]Xw?=6n).Buu*hYFlR\-pglTnkbw-C)0iTVT*w0L(U";PqM[KgW#8m+6T-k;YTO[l]-;2RY3Gex[$UX<=1c4tiVRxCbP+bnbEdbn=0-WC?U"^_pAeuTg$:8&mtu\s%'3ru,EO0XBeZc(S,bKc3I'#XC\a80z85*45NhR?RlSs*hU"B$0O^>FagtAgzEZROd\J;$f.9FTe^En,lZ8<Kl$?M?2xvQq=N?&0[OAZ3.,dX4oU"G?XF>Ix#05#r=%=8*=CR;4Yt>a=M5+s9sJH/sXd,6>4WV-xqNi[j7JoTCruqPM$U"^OyM,'fnWpBHN#]rehjA(]^8eN((N8NUIQtq0xdaPi3OG4RV,QH,;x16LApODN(U"-qTcee/04HN:N5R71KL:%'Y4^C',z3B7KfTHz'g[jII=fr2tRBf9X1;na?O$pxJU"X?Tal/4sqi?*#xT-baF$iipl;e/jC\Z0A#>qqQ[WA\iIt8_':8rxjO?]29yZ)<UU"(<=5_jOVAT8u[0M>1aB'x:.P56jujnDgYTC$p0m7EF:txd>TcZ5Y>dnu*9?tj\UU"XVjfqee3se/)mRbB.M/*uch,&8vU5#BQU$>J7)Gt+aY&iBGf<JD#k[.TK,&,O<VU")GFhEr1A_BMr:g7Fwn%u79Vae6<$7UOzKP?IZ-(%r'h9;I*V;A[j);C#)h_fV3'U"bTTPJe6^iNQ,Q)cEG6T8Kj]$Ay6>9p'ddyy$nPy?l_7](\_T=L4^HqpfKj0q63%U"5Qjpr6Ok016X:tIK_pkl%ZE05NY4Y;Yg.oTXBtk=*_.?<-kbA,-(YLFjTFGAo(mU"EY_'3&qSd1xso\W)SV_V=e+X]K^p&r4S8W_$CK4W\-uF3.aD#T]n<yR;)#2.0p\U"RH\oTHP1##uY4eDH;7d=4qqQU\uSOj/=)Mt^Itibi]\d*aL%?:M5LL*Zr^D-vz<U"^OJkPB\M6u)BlLNZoAP'H=\<lZ/?LrHTWViCOlp)aw3I22LBZ#R<0g[%XS8NK5zU">z4PfI[&mYlz0$rvj^^tRx_9UQFGX/bn>dHG[?Xg<tD/]ukK'R=f3Yah'G,LL>nU"lxlR5?*wY6Wa^b=IN8y1gv>;0VORpG4Nn0eQ)2_DTx-/#$Voa+lVY,FfaXH,1UzU"wLVBS7SWhVGr:2rYh0NGJ*&n3U/(tLS<1jD,c#9W2QoqBru(.N3>6le(<gw4egoU"cF_ao4e0)NI?\DJ%C>ua47Nfh3[L*rCd&1;$qJ7<Qj12yHIc+8395cL,md*JYbrU"/2SbdWUaNd2G$7O$9j&PiCQjJD05qt\$-F?:E?ZAt\tFAWf4'1qww,ga#hRA5,4U"_bfM7t(n/E5M7J1_^dI8$]in=9V.Pyxsa*7OH\4iZj]mzo\dKuMJnCtH/[g>R6IU"xMv8uau#GOI#Vh//zE]02)'.Z5CMZ/Ko7w54=Y*kG]QcA1rp/FP5W8?JeiJOt7JU"Vif>qASArg%2Yg>Cq2hmZW.YC))e#s.6#uy\UhIl%:IfIfN87x(sLmEdaiwdXVKU">7HlC:=rDv+Q7c/oRQH2[PGfH;K#kQv2Q_T9Z.SmZ3<XgmS^V^L<j<q^>IOL9n\U"F)w.\jBKZ^Y'-wC7Q5g34on1)-o/jetqi6gJ9MO%_C&hCqYX63>>7/&.B88I$5bU"sC-XHVoV%yv\2rLySAZs)pJV:SG0.yKP<Fu3ZEbai=JALL/d=Q(,aY7bs'JdOlKU"G+M]ky'p<W.og0D$5U-0Wk4,F=iri'0[\lO2U7glG=Beuq1kM,Ox8Y6pE=#rTcSU"hpjNnjo^0r_.)S3)%h*W+Q<T&'$'*Pl9U/xC_.KNnf.Xp#+YeNk#0sE=7MuVpB^U"aIsn.e/5f7rLuYzsq\Z+YE;2S;#G5*aChIOUn9P0m&\LYm#Z=\CuNL/Z6*R?&p3U"Q]F,[)3R>_)vWj+hdf#?Dp3WHLyZ5bEF=aD:1baJ/2=CM=D\*yuQpwlk\=-QOTwU"j4'KmvD[Z4#)gpNt-ia^cC4'gfTKgcZu-M\2AApW]O_noo\KBP6#qsJ5GC3#xR:U"K^p2ZSBrddtt-f8ID8w,'B>['MI*/'tNqrqQqlU>htj^QlgdkJiwVd=p71.Zjj*U"gUiK=+qbBgDmp5W9Qdl=ab#5m'K.[]c-TZ204hgroFq)NRA8.M1RskvK/Yo(3-LU"0%=Dr/XL9tBCy(adygQCH1w,9l%<0d'f6PV8.28<cj1&MstT59btYTJP:o*n+1uU"(VK\QHo8&ZrOF<[oq#)Q3t='YF48&\lvhU?lW0??$:Fh\ii*'\-itRoid*g\6aRU"GI:4^bL5Y'uOYg5a.2Dp)ac[*C*</*OgPK1\gY:=+uT/boHHLZ#SlX8.Oov5JoRU"hIR^(6+dkasv=*imRsIJnSCA=W_H;LNU:$#yup2?olO((<-I?3t_7_:h$fq.cJ.U"Q-jr.+75w.tD(zY82x.<g*(nf3G:6cuW3f2z6BJLosz7;Dr+d&(D^tX8>rhBP%%U"W*&i_LKC(vf%ULmq^Uhm-+0THe:&<'I3z$jTpx%4up(%)9%%AO-%YDsTMHJLA%'U"[B%%B%x%%0%%%%f%wfin%sfSiRth>K_*B#0H+g$zBqD_McQ79>?A0%Qoho^A]/AU"XJT>V^G/Hdkz'Y1mG&i&K%mkYl)UDEfnP?w,+l^8AiMD2UcpQI^[9%M*R)AOk\lU"Ip=Eh&JnkQ8ZOMc<HTh>MV14kp7Jxp6whXM,m_%6r^2pWvawJDF4sijfmM$r%F8U"5<x/u$aqq*D<6Jpss+B+q]p<&rR3D3VoPQrwnlax^kfp8jqFg/vc$K,r)BTyCmJU"Ij(lh(hke#=8buuTt5.MV0.?(pq<ix26Wf$BIX#bA3USRbsS(d.2,>.fJ&kLXi[U"Hu*/u_ofT7PpRiuVyu,4ud<Ua2ys*fZN\QNTwd,7t;MWcI]S+LnJipocpp.U<rxU"j#I33:4COyZx#mDj2Iif:y]P9q]cJ3.\YVt.-:)HUy\9bA=Vtu\&dtV/.M)\:,LU"?L0c11xk$FLPki#$4uBP6\WMqGew2pdqK&,;^y^[AazwWuxPyT5>aG[B77?i.PuU"GUS7g,.rP,J_OIAVK$=:Dg-V8^(Yt?JSwz^%&cc4,D\F0n2maj8#kCQC>oB]62lU"xHaHpbT<O<3q*>prs[UN*o'A;2tr+&dngNL'<2]AmIs210NAud+vu<8fGZ?.+pkU"4%+?9#BUELPpvmx[8C<?(SU(qu+SveX7GQc[VBy:A<r]GWusX1L1mP#4;&>V*sBU"ZP9?]/tQ&oUR7(0gAPLAm2GI_aL?xq:hPA/)vF63u<rIQfmAgOXrj.NyM;o0Z7\U"$KSB.iWP7NK\xC.nO_7+MXDbsCL]_hTuT2WIeZkOcweQPr.:x4u/j*%=O1,DY-aU"lXw;[VB#ttv\*%9o<'8Lo='_iDqVCDEs>G;>rml:J6H4lBoZn;HNRj$eNcQ&gttU"rV;70Bj:PuM:)]b>D>?&NK9KDv)t:Ut/v4zQV)t)>ZYo+AUwUx]$.0DWP$eh\NFU"ri<i9JF?l.n^dJHZVZYtEwxZ-9Pea4-<4\AUq;9uhz7kv?<ig4s,XbnfEN.Kp8&U"PC_eN-Bs,<:*gWe].\<d*9/V]^ih9Wuq-\4\CkN:ydsgt9t$pVfwO2$J0^gQjHLU"8eNcbD7qq2H,ito9Oul?pZYm[TyjLZQG$Nqklpx17Xub;1xuzKkqfsNr\:8btGZU".Cr6zQ):<.HtwaU33[kkM-EK^dIKqw[_uhOG[l9O0_QMx/[A3/hTM^VOf.J2#:\U"GeG;L8#Y(r.kxud9clB#[i)Yh)=vJjJ(gLci8<t8_5v1tAM]^u$O&?K9gN1(%e3U"NcUYSUq8%Y-9b1?g$LHd09PKn?#G;88o<WjM,Ob>I4,tm0di'\bUfWabi06ojh>U"wdUKYr.\JBlk-Mr_fVI4VK/=/rOqic?>]ZE2tZ7NW]3)>-<\dWZ:YUa0J4p?C3IU"97Wd[/YxO3cal>T(#&q^SzZFq)>RM3<boh2.VW2Y^bLg_-T;?8R9:XY9d6/&MsEU"S.qzxjFgEQeZJ9D#c7Iy1K/O0beU(>q0q=f0;G;+#>0=_P0mL$u+p\(1XG/<7_*U"]M-M4x<)eeDxZhowGt^rx:EDyU>E^jpELG[XW$U,o+'Jb;AeTS%Me;u5'w$$I]aU"+[W&A[[GS.oj)C&3O4/S/q_\2-5lOk^zkLQoJ$4ISMq(0k)BSZ&/*,s#QZXRA?AU"=0-F/?[GjR._ADn.jsgD*WI1yPzM55$f%=3CK$C5+m7SA*&evb1H[iJw%Xz*nyIU"'K)l22>4x0Yp1Eiudy[m2tM99*ZoafJdu$qiQ/*7d'ek0ZO6r]Iac,[<=kqD\HOU"\ZBw\Gd]%Fpfl<-(q?//&56q[RD*0T)D*iu/S>82l*TT:g1q2cTDVR1siX'm#8=U"vVKPY4L5egg/.+;m:zNiv&9.r/NfkE=N88YSDGAKdCk8w2JZXE%_</1vxB$42:LU"<T7PySI]9q]EjfN'b0;hpa>&r>xN-W1z(h^tn2P5D[4=HD'^&e[>3o(><*MJ?/cU"ISbkxDeW'Ff1lB<\.'ggj(l(GJ,)/:l&0jhlCK+,$5El15Q32-DQjWLB$RfHFd6U"(LooLf=ONZ0;,9a2gdLBW$#wgu8Xmd^Y-&o.ta*#-%4_o>%YT5&v&qsNodUm%4RU"Nem,'M-fF]A5SO.Ij??C%re)ijEr+pL&p7>6*gCgrd6m/Z1R+,#/KD)(:DdN'T1U"H==m\#P-'[fvi%AK,(:F46Tq+69_:>?W#)]rSBd*&;.$g;mF#_kz#0B#t7#3XU7U"DS1:m'G]1,J*mO2Co]+hX;)%qDn)3L,GvgJA?VDDLNa3y/Y*cj\pA3=Q5NW)m7vU";lCW0Q5Nl#jrU%w#$S70O=6.+9&_E?YlViFMPsZ9vS5EO5qYbACXER.v<-%l.p1U"1$7v[,o8BS9*By#Er1Kj2>y90k62jBvb\ZN^??87*vYK1wWX]R%-P=<ZW-:2%FsU"Okk9?)D7dtRr-7FI[;j<c]ooVcd56iTUiXiP$Nzq9a'AlPV:#W1TTtgHSB*=5d_U"Tj),:-t9nQ#__q<;6_So,TLDeL/A5\/0i>toCyU5c.:%bj4l_hh&-(i#bgPq7<SU"F2iLk#4,\-#T:,_1KMLH5n^\X4kx<G7mjhO[VVYl4kH(X#t)zg#KAoqD]<UE#qsU"3[cUt=MoS/t.)5FN6Pb&))hACRfe^AiPsr.W1X;bdoiQE4%RK\Li5;'GZ;enSFoU"o>XA7hs8#fX5Hh1KFj>N68QgBHY6['3yFoFI&HZgle.hS+bw<s.CdK&_,uZ^rt&U"/=[/>S8Prum5QYm3-J9z.)<>ZqV]P40Z%AU?au\Ql1nC6EG'Kfo=<kYd5mXNk5BU"q1WEFG/)K>Ez(.<r$e4bLd7O)K26ali=+.#i'aS>&H3[v8\G=$T*5R04T7)k#*lU"P[VtIf\#\sCmnHN&uYFz;hBF('Ng>6R8;otT7.rUdnya*#oxdR9n<XZgY)l,TnpU"X^Wb_82Jf)vGWpZ1sPhj#(Yy.Y's_Oh5Pm1fl?6ek/Sp\kkQ9I$)qzY;.1[y(gZU"b;1YSDU=c.X>t#_ZIX;8zj^':I-)'.2fKKcYXRpk_O)rmEtF;+_1<Ehqf04nD_[U"0W.tJo#2NakOqT_M-Ta'o2y1,<+z>tycfe'S^.Y^afc'EXM>+*Ej76*ZSFAQQ1DU"VwzPDrzTY&l2$^^E]YoqgF=P/%Hg<e:MgM&lnE0s0Y3hi>c.X2?%>J-m%?B?#_fU"i)w\M&(o8\tagTSZ.iHk_?E?T)>$.B0d#7>gF;p%X.R=1T=odBJ#'3;&>^pl2yOU"vGbM^Gt6BEfga)1CLJp:QH1##U.Heo?2g_9Zl1Zbm8\*Q%+IP.W&Eo+[ue%FsNkU"/;;2R6&1AFm*V8Q%1ok0$]Czaz<fH93mM.:I0P5,LDF='ldd:W\hb3Fp+kw[,7$U">g(r-;K7z?hX7Bm2/:2G(a$W.xNFM6>pfHU_'l:R2bo<fdg<ih';r0Zeifg=5t-U"'87':Hz]eVq^agk'5HkY8nbYz4AjRKlnDPv'.:ha885;7\eYAI3g/-U4(riD67[U"K9/Rdp.GLa+Y7AxqQUM[lUQa%&R2Q_M\%>+*=_k<9D)PltrZYM17^.2+;3mmiKjU"OiFoE=B]0)2SFT]m()LE'V%Ae?5F((Ya8v:TDGO1fv%piFOpKKY%gYUlTSqgIiXU"\^9Zn)/&PD.RP/*oIn/ifKmvoX%M$g/M+AlitL>MkK;?N&=1OhY[6Wjj+=_%o3XU"oR,:=QMMRmz7YVvd$g0zNtWE5l_GX\5Tc9kWaKbnL-1%q0_4JYG5eCm,_KcT9?ZU"C7jq\p;B_5l\(\+siY.uj\S(EfO0coR,##[AU#hq%5f.g1LJdhX&l+-/U]?;eM&U"oN/$G)IiO8[H'Mos03^WACn;sn9_#?EdO(,RoCV:]Gox^$SAi7d2plwq<0)e_??U"r_'$e)0EWi-/?fSAc85udcNfBrn4fl9BGG1iFP9Dr(hy9mOtST#8>UQOXUiL)yWU"H$fnKF]a4PZ53*6:3]6ID35i*8qrm*4(;-e8Reo,C\5eDrS/e;t)<XTJzsot<e\U"[rE.5$hd%-5pao0#Ko#JdN)>$KtXR\%CBvFc-^VC3X;W&y-Ir>CH5/BEgWM,^ImU")O,ntSn?n=w;B:P*9v)Mbp2Vo6.+,.oN^05/TMF3=S1nx82VQg%,jKwbwjBZe=9U"W(%eCZw#lVeVBpl0Q>?wXXj65Rm'ood\cbaH-ZemHm'*rI<\YVj(WDhKA,gnF8iU"TqfHpbidAJo2$g[21bY&h;B+uMx84CE7EoGRPClnjkA:2^X8i6>.)w(GbL_W)&EU"G(Ng#*sV7d)GmB-Uk;$I;59&pOuBA^Hgm*rn%_?Ad.VWWKc<*t9iW;,(jE:3cESU"eqG-b)2s)&vjL[BqGeYbM-nk)'Te2k2<Aaasu]6?bF(9Kgsw7p'i+a2?k2hbEnKU"]a\+6]vbLy8<yDkFfG>(:Uo/9g*-jA$>wYY3L&r-,arU:hczmp%$,St3Qx7ReChU"Z*s%_f2'Y952'YMq]Tk3tBK^QV$0eq47Tyo+oFXBLJUnFI[%j-A:R[+9qIa6O'SU"t9di<Y^*$clUiYY(44;JRh5XC3#+^q8vE/k$o3t.M&LPe&cplkLArHNq_%%GI6>U"=f%fDaJ]GWCdABEd%#,1-Qp7V93xPAQEO=\1s;%8kd$I?h<vTq(tP?6c8U*i/:BU"88b*3Q?+=UAsexP]MTS\a32,F$mBB.ok6L[b2CE$>p)A;Ral-1%m69R%NF><T-qU"Y>1]AfkaPdq:2-xDYAhSCUbiotW&e.]7S=P*TT*7J*Ib7(4QfKgWdC][ef-#C#;U"KpbiWIwkdi;l9/>IOOXsj^-USfIY=Mj^L[C&Y=ji^V]o\/D6l\R7nV)R^Dm<o3$U"sTQww?O4>58%9N2v0lM:&mdfzdwdJd+84y$gB:sn]wI=<':t<T*=M-+a8GymR6oU"?P0c#xuxETYUb;.PU5PHEvQY%(<-whC+$JehB'8csQ*+A&VleDNxUlG<CIY2KvhU"m=j+\;X?FNsqqr8H=bmQBPGh%P(nA7x;<o_eQeXLCk.JV^\:Y,vNg2jQ0X<W'9sU"x1:b)X#A9T9MjOs'0']8^la-42a60&]k5FzA;.+?v):bnIEs0X_;cg1kd[Cyta.U"jR2j=JA:]THA.6y%Z$=D#w-4\dR1S4KIc1Z:='A>4H&y2uHnnsX2[e&nW$a.Y,=U"^WdXKml%MHgRnu?J;7zMIVZYdi/Svz$);SX33k;39VttNR8sgq*_VEjetingLX5U"i1xMQ\LdLBx\W)>.Og\Qd\+EZ2+VFjOBUDVm5fo::qKe=p0CJITNH?_qPqAn)hFU"$-3A#Et(ndOQ$50sf?>j#&5]M#_?iK&3;dUwBN-AeF7YH&BqFY2_8u5F9nlkyB8U"jl*V+>\]CzNgr(Ef\]f-OYODz1buSRR-Z4J;WY?s3.7KSv+da':a9YM1u:I8o&FEND SUBSUB V5U"8VF2*HXr=&0bB4t0ShRSCqpO9$UYpYfPGo;)gMUv%z78e(-to+HwgvGS=G6_HfFU"Mw%?nsEE:4W]D/Atf^ERg*<G8.it**MPtYDHS-4J[2btJuO#;#7C/_'?L\$bg#JU"oRrCU:pDC5.WmR?%'<kfS#o=M%f_yWNiVNKMyAGc?cOdbhde^FB5oXjA_.\3q,9U"OKs:qKY<TZ4=Eeq#EMY6/2<9f#6<T#*n*.'o#mAT(,nZE\BxZcvl=K21m(X^,=6U"YK^)Ga0n$2MM6jQ2=F'#H>8+nAwJ&p?wGb,wy3#9v9<*2N*W5<Jdu7?z2*>&0\wU")ORsS%HKu0o$ob4F%93Dm99OifX7DR+>wPAN1z<,68DL(uWt\vl4tYo<ahjF9KfU"NQp:F.rGwDlWSlp.uT44[ao7j5_?PK]a&qTCbQq+xF'(]AaaXOE(0nmIys&aWwqU"VOww-ag<$1&pR2JLmOAl;NkX'lXAa/(G:8K1fg5)I0Q,]twlYZ=X(PBKviBavS.U"WjnGJwp++7,oAdFSFjqA(9RoP1-#cVB07RC8mJIS=.:v[=/J'CE0r)yzgH\.PE'U"Q6$'\2mOMYt%aEp8_i)']7E8ChUI?<'(\]>3mSUS[NjG5[nnuQ_a&_-B4J,)#dyU"ZkUSm?vjwb55BxSpA)?'Hi]X>VgdgUhGddgpcIi0U+150<68DAbKx??l4t7x80?U"6#8bP%LFVv)H)VdSfN2DE^F#Pz\mcGb[U/,C6jRwv:ZGmuFpueU;[eO9?C5VVuGU"aE+)K0U&AI8I\#WUdN?2zaYfZ3I0E'3mMGQ-C4HR)YSqf8iy;sm0LEo=2X)%c[&U",>GVJP*4U8Vhuvy/tnJbr&Ga[M:+w+kqrG]H(ZJS.T&2nk[*r40P/nH=\3r?lh%U"&FqJ>/TFL:YWn3JZyj(r\x[F-/^dXE=+1'W'\zr.phOox4bIlx6X;2D=U^uwu4mU"'j>,JhaT'3ey1Cq?<ZD\,6HLLcXIRF_aD>2(3J+wMhh&MMLJZJ6/=kPR-BO(IKIU"fKg*6WT6E>4S(E-P8=JDsd;]vU[(F5WRFTu*#^l7YW8pMG[W+^;:i,SJGr_g,=:U"]d'D+om,,:l8>BT[^p/>W'nm,+1tGiB(chJ-:4I3Ncw^$vIU6EaNygCDKqgLThrU";QNg.r#fCaItGp0a+)sbdt*cY=.VD?&cE#ss7kMAr/wY+3Q^%eXhC:A,a;0i>;kU"DU_LM8bQZiX?l_ZyG(1<-=nb?T-v?$x6REc2IF#WgHIGr0K*rI5%.f'6S\>kfE-U")rXW4lS*84KQ=\Xr6PS-r>q9;V7DSeCxJ-fnFViORR<H4mp]di^C2#Q5lE9mo]qU"p&g&nU6lhf1hkJ8l6WH)F-X7qkhGmrP[6rp^Wr_e0N$c,u7VGChZJNLJrt5G5?<U"7QUWlCoXLUIKV9ND'<08EbpFH7FU?X.ZpIV*.L>6srS1MBn,j<,tjB68uEUsb<5U"Oet:e2P6D:'h5NN$_0>XEX+EVV8#n#Mhc>H$ipFBEPnZm62vFDn>Wlf$B_JIVL<U"mj:f^kqAf/I^/Q.=q,GBq,/IPz#Z13)zIHpG\;SE#t\fw%v[C's]'8jA)ZqD=hbU"5#4evlq;,T^mAk;CZ2T+PD*,=7A&DVpJ;1&SNL)K5V'OLK;6/x'lJ0N,3GyN+.*U"rXi&G/Per+c=pLj&b;YBOzmkzaS)sA$W3pr.0<HS&]kpdcGj.+W':K/dv4'D]?uU"t1jsIAzfS^ftB]gbB,T-CrK0WOGp2/qD,IG[VS'/X/Ra,;<Z*$jyp7.zM]Ns52,U"rf.Xc4E9D_WT&<qZ):0f\(/Sof-%45XgS,#4NTf:phDD?'>l1+j?o<u15v)5$H5U"L6cNNh(BJq;T948)BAGbn7Q+7#3ZJU7I&:6nKCCBtdvlbH:mibY&RMTKyWJARu8U"W0Lbzb$$ZUJX2)r8tNPj(FfvWBwogo5^9RE3\IVB,PtKa(>X=c<N9vNs2sv4Y&nU"l>)C&T>omSh:grufmHcXcuYk(a6Y=8c>:JCw;3Cj*+HYhF-A-fjI?iawh_]Vd*_U"e5ZUlk7cT-bKcCO.2&11NLwftQI7ErxKt))phh<El)I/N4ML?aA0,]F_GrCBxNTU"X$lO;nK>W=6$7My>g^gmj*Diwv[YV,KCO&KnMqn-(Fs]nf^TvpKZ)(0oQ:VUV#GU"CN61.h(LW2W9L6Yano_neMg*i_</WCF3CR2S9,,Y%p_5*3)*p_(H-/.IACsD8Y;U"Y(7pRWShX<tb'e+Wa6OoI^Edgc,tcgD_xuGc&fS.i;Xwj?Q+kxuUqPV$PWs'=2GU"J0\CG\pTJaOg),8M5NN)s.J0xA:8CMqJF&XducBLh'<NoDlWhQJSPD*C\2YX5n5U"^qeT)Eb\2Ugg'*KsgHrN1^<FJ-1<0Wa)g*)VB/EN$d#jOheL:=JJ6y[$1V^(#b/U"B0eZ=V7g??YU.jk[D_G8Tn_057iY:ie&OzMUGJgYRfWrG_7$T1eQ/I,o*OvQE1WU"0f7uG?0dPW.Wr^YiTDjrn+sMgohrPwN,w(Vs#^o<cpa*&1-\KsPRA=jBczV/=StU"b^hA6tIkV]6aFlvg<\LlKeD6V]#T[VF5r+NXsY]boV&'PU[\PJ,\Uh5dNT+<#rhU"T-<UJq*rnfT1E0<L2Z-lr<5i]euI*PYe;H=fjOYCU6]dS7sX^VGo#yo6=pS?#mOU"wp=ltCG*ppF8(gjm^-XKnk?T;jZ7.I_\oFR#sUQhZyAa8i?KW+*8Thos8o#]t4IU"<Eh)DfCDsxvfIU,55GIGxV<+x;RbcAu=GS1Wfm&*,<P=n>=rAd:ugwKo9&[GjA-U"Jv4orn-r$/PZZ)rb0k\S$R+rvqAL3Kn#C\B'hA%Bd#uGA$z%GaGTH8HnXH8I4V)U"*p(xpip=f48cOu:(8HNl8bxu^=$HftCrtHk9\bgDfSKAEfN>Egr>nQ;LW6Csp(iU"TZ>C_%Er$$h/D+:'ujmMxgs3]#mO\VHB2GEvdQw4&^+dtYDp;IgtIP,J.F3ooI\U"Pb3MJSS\LuqaWwL:>r69'T(3Z74Hr#lue\n]_u=,>i=TiPK6F]#V?Y004'_=N;qU"R7SSZ:dPd#8KZdLRkE4z(M:$>MeibGA,2fo\2fo,Ccx\1DlJ&)&26)-T5Br<FPCU"DD,t;0#mag350*Z<91]89KYqos6m8Cnds;;F6LYu$.>&p#SLmn5+MtKr5$r):R\U"$*Gu;JQ$g2?CW5rpiN/>sHxO[\4SnDSJIK>nNMdkWTevDt-g*Uuu2_ng_6*'Ye/U"JGjR\95/G+]PgL6ff;AK4TtUYEG$4E$h?SA*T_sGr#_uAYN)4t/RMd[>lGu$R.sU"GvOp28KCl9CRSra7l[$,\jkDI%$KZ]t8JZe,qD1INC/._i/#M&:=3INI-L,Xb^lU"&0/f(jGA(0<&Dit*]T9<;-WEpSqi,V&f3pqm^VyCrW/[UY&0L0Y'YznrcoF\8s,U"3lkZNJZl]&\,]pkMb)36B?G$Nj$RD,wDpe2X[3B03F:bQ=qQnasbD->F_s9R=7[U"bcDuVrtzqA[k^(J;Dq^AuKwfu[K)]5dw.2e3qQTh-MDR%;;$d)J=>'TS,TQ;1/ZU"B)M9uy[,ybrP>P%gT5),\YVE-.)n=6$W;UKM1U9,=G'v=5hXykHblL,N_/Z+\W-U"UL]A+).;8ewGAvYNOTvWOLk2l=cT(Ot$JM_szE0TNcoUc+8ebZeJOjq57$THRw:U"gsPDw2$r1gDf6.,>De,H^2_f=:H0^zBjD7qgoHi_r83oXAmADKjK:#IK4mH-CRCU"C6pqvbbRZDB\&_6VtbA/olvsLXYXJbxIEeGm8G,b$,TB8n4nkl7sB$RC]a&6qstU"uamerBZp_J)M?g,%Ybc]C_qLvBLXCLPKqCAIUGKfskJ,B6JZc3/-KwL1t]-b*>QU"Lt2VRbxkxku./]tnsAmr3nq]H;:>z,$.lE:Cs6cq_vDIH]LD#IWl(amAr?GWiGOU"=q9ICmvTVYR\Bc)NLkqufmmRuRd-WAg,AkWJjL&sTbmn4.6kqo8#LL9L)lQrZJkU"<-ZDXe4o<]3'8^]?F3G3.#Ct8qM6vCCfs_$q3]/I]bqB>I$=iadGSpEre#q8i/2U"uf+38gkBIAJ/6s.ImP3pf+_'+dh(*uNup%()9%(%O-%1EyQM3B>h.&<%%%&V%%%U"%-%%%%rfpj%SgfyhB?DoWi&iFtB\^[N^AA%J?1ACljmBMDBA1%$IFzI<p&I4jvIU"F/[WZY+m+Njj-ml+omiMat6r4Q-I<Pvo%ud8x%bDtLDg=BgaN'6'%__VeK,al2(U"'lqqh2kkveLF9.1fYPY>WFD*%%up(%)9%%&O-%ADbLM<5CCoZ%-%%,%G%%0%%%%U"f%wfin%sfSkRsyfg2L[kzj:?ngpsF#S]+hJ.&O>+g:[dcWu/o<+^NR/V6KM=w2_U"OQxd5F)FGWM_KMCv8X.h<iFGP-I<],F[RKQd7s\7ZoO8;z=/,79mVA3JzEl./rKU"RUS\[W8BWF25FEp+ZZDZVB=gLrhJh2jDhHGHPEdJC/aSXQcVd%K.MqEW.H.M7iXU"6\hb92&QMBtl*jOT7<'9l:f.7h;qNuKCN3%.6H$Moj90REil;RXJCmGk\K0ZkJuU"0Xx8D-sRcdtOurp9xc.=hXIjT3w(9[->J.UvLc5S5cvs.?Nv&fnMpf+oLtuILMqU"[awM1thf'(kTw)R*Igj5YBE>l-UH)'6D8Npj/0awJh59t=W&AMS8nCM=7Z>ox3-U"b>F%D$8JsYOiwT,Nl(A3Vk:bFtHpd]fxJ5jsgphrqj.7i4anVLf*\O_GiyEwut8U"b$OF>e4O:685E#9S.Jf3_3d_.shv%61zBw$B-#..c=e6cpU67'-pqNjr6t(jfu2U"'vsg$IWW&-q6kp:jaY<[vv8IC&<m$BMX3nQf[:B28Rcaq4b,^;\3:?JU[u_jeYfU"mbM[2%=J7_hF$;jzO;>i3]9*S=(xq?[a;khI8549bL2hkQwtAT57[./5ay'fv9tU"Y]lkvIU?AEaRc<nMLEH*85>67tWCz.H?$+0faoWl%p3UQp:w2Z^r69=8sLedXW[U"n]LtWn6ssw<qh?rWBY=1oK2f3o,sqY:#Nhb5fcr<]xL$SvTlc%aF6O)7UNCD4BDU"JpSVBCr72Zt7\A0RjPIPAD_%qblMzsO:f,Iq_hGIX/8B,E+[+)o)7R$aAfcoWbsU"8hqJD,+OzHO5O\HB_9c&)8WS5AChOMfgj&h:a)&D-BWQuD_oY]3sa-f+13oR<jQU"pJ=0Mf0L+pdAu(DCjT#tARjh_E.v_2Z6r0+hiR49j\B4nOeSX#7a8pVS1aDJY[UU"sDZc=ehkFCEm;1b<i56Gh/#d$0ljhtFat;d>8]&w.N(EY#:=tRN6\>E=,#HUeTtU"Gv/=Sf\*2..o9D,J7?3^D>(oW0m6tUpPn#LU]Tm9krOaxml<Ph$w&bP$S6k[f&5U"_kE2QDVsdV^jL,rY,:s^-92=iqq)d0.b+&<g7mp2D]=d7</?8WffO;u>R%rXSFAU"LJ,,pq0K73aLV?kO.EIw:)arx;78#;Qd*<FanNhgMXV.7#uEf]\Roq[m^Uf%S(bU"VJ$LJzH7h'btA>hFA^9Zwfouo.Zuha,xIo<xUHIaBxTM6v8\2E:LDt;UN?6F.i\U".4S0s)g=isFR\iVAElG/T8z75DhEKB7YRrfaN\nECkF4=e\uKhuC,H+K-*3j<HUU"h9_r;Wp^i/lR0[uThg2d;VY9HIhfH-A\ogRLjK[m<xPTdkvi<Ow0CfR;O$Ul$u)U"7bq2Behay#]m$Y;c5xr3m%i'9dDQP4rD>4Wr&.Qi=8YIncR]-psXXCEOFSRGkT\U"I>sH,Bi:9GR<rF3N2<Yb_K7p^6*)C&W;?Ilmqi3FOwU+_8mF-i(=HK:>rY?_IOdU"17YlKwc3-+J_iAqFPo)mH^Rw5^3n\?uFw2rxJ:8['l7FsXt(9,&:()[yk?_6*^eU"ZG0xN1>GC*QQNj^U[XH/mntYFx[,VF9rX;3#LH]\e8w.pD<J8q,#=,V7'9bn2rvU"ktt(':,BrxpIw3^II[ZC3v&kXsvULL6$9/\cP:dS*N,Ts,5L5XkHkbys1kJ,i+-U"DRcTFKt\n;O$-PEj$r%UZ\xr/Bl&Y/d*mF:V0(f+=uDaZH0t^pp;kMTZEUFKYkqU"+lFT30+&=jP3GQ_gErc/'E73#iEo_x[UsrgvXc]oPR4ZCLXQY8hMVkJfo=Zxl]IU"MTv'Kw\PNF7W$GQ0q.U9dgs:G9KHL+5xPChDB=xCj=z?kjGHu$HTvQu%.]rY.JTU"[5Jr+=Wx2eeQ($NeZr^V2Rd#_Jl_0r5+:<qV==,uTaw#dLcYx073tO:v=Fmx^WSU"Sgsl7A'?9Hp24Ago;r^?8dn\EWb,lWUsj=<iLDjGw&-q&N9T<gt06Gz'5PXRsXSU"fet1xqJ(tbV?4N$Q2>#kMZC>O26kI&h.2-\:L'h6u59HZ5::r,X\C3dlH;]XMq6U"H,d)i=LT.af*4RXG*WwT]M0Xlnk-Rj)Z(oL-2g6g>PCxkA0sQ#A2EAoD\WC/HP-U"x0-ba^x$C[.jWWsEx0uKhgmdXX_xy3$BF['uO]#;lLod2rp8HXNP#x4LFnWLWl6U"Qm[t*w4QXkj17>ofjz]n&$H\6PDfH+CZ6#xfkX<V)E.vb]pcVe8d-wZ:84.OSHHU"H,w^LCCwu,D,nHlAMzOia,3<ql33spTYR2p#6gTeXwZ&pmq]?=0u:5[sX?cfmHEU"V[RL:QQw^Xs/#iIZ6aH[muP=&W_0Z8#lcnNX[3*a)bmg4WW58wb:#;P\Q?*8ZxEU"t^jEZ&<h;(mtqzPl8SP?vF3GN.rB>d[4jIv]4e\rZwNP$TZ(-NH6iv*o/0%cBc,U"E61Dq:(Xvq3-4iX'#n(mQS9x4CeBANxnSF2Dg^T;A^UtrBJmX/Yr<'/fsE_?[rYU"[Bcde8lQ.>/uX8Atb5H9C\/U,wc([,C6wT>BPi)b+hM[IQqLdvH#V4rW-<RkytNU"8thZDq&f?pA1BMLbn=lxG3X#v;r9gwbiMAsKZx.nr9wVbiMsmKZbx,Vw*u%p()9U".%%O-4%F1cmMDQ*)t6%%(%y%%%%/%%%%fwf%qngS%gfy08#1oze?1AmrjC[^(/?U"12YE^^A5#nP/NbPTPU)c(oR2:pFTkwI]_#A1oDC].C%WV*7FE._M&pc_5FJOELbU"MW/sDPpmU7fJn'JLE9$)\?'/_ig'nU*Q&B6jmBy6IpP$%3%up%()9%(%O-%2lqTU"MiDo#N%=(%%%w.%%%/%%%%wjfi%rjSy8'yFy<f=TkF5utOThUx1.(Yz;(._d+#OU"^ep-O&#LCT?I&9[z]BJJD%g\&:&7CoEn(3A&\;2_Pa7tGMgGlGG\gQsckFGiYd+U"tVZX^DLZ_[gto]<nf*U^0iyz(6X<&Ze+&[x\'ZA?,>k,NR]m40j=_s2'&a4XB]EU"T^?:h-A/V^M]P[UK_Z+H8.u5EX(pkl+_q$u^q2lavV61n#Z1Cj1?h[H\k)c^MX%U"C:?tOfY0$UT-ww]KIr'>??d_sr'()l=TwDKVoH,Z[wH.OumGvY)5(r'l#rrnT0(U"SUakWNCSQ[PMkp_fu/6EiWL1*OuqmuuQ'HTETnauOAJw:ecpD\dUderjf4#;%^hU"w.&[WvZ%Dm<.T.3CE(CBoAh#<&#<6-(xgatZW#Ex,dU8ICvs=+#>?,\W6oEPFffU"nGE$.7ZU*RhGHh:mvhC,G5(h\54$CX_J>KqjQslndAtbpu.oYHQ\EER/txd[aO#U"_5ciqPsL%T\Elu%w.U>Q>%.d5I#.^7c4-]1Uri=43/'Su+D6%dpq5T+%s2dkBicU"mO*b<\qQRIhftYkm)5qUw&%5N)8AcS%1CaX0+h;-Ye=]sXMSeO]??F384o,\aA#U"0$.s_[NX\ds?&)&=e^ccM4*eh69,zGkSuKmkEu.KK,0EA\NL/mWo<bpTfs1l,RjU"h&f321vP<?BG_44DbpH#HWw+z3fpZ;tBb+O#rr9^3*pPb\[[r+D]6oMw$lh&Ze/U"h-a#Jcoi_IV4UvM8n#+DE&pNeL.\]+0&_nKX7v4G'roGd/gbD^-gUyxWAp3\%SsU"Fz/cxpqa^HEiaQgkHiKsXQ7ddRiQ2+eLN(d;1SCJh]&hYY;g^Loui]l^3>jK/[KU"E31K6OEJW:fz?t%zfeJtzYolTGWIS$l7pJ2SvccW++'=3IxAlT:X&D7%hR.t1rgU"pL1Fz.XXU'&s>WW'eu;znbCuV&2*,38Ckr0v5+H::S5/Jb?H=6o6%.F[PWRw3/qU"rN_=c4a_$d6^K']8up%()9%%%%-%1.rTMhK-Ue&*J%%&qn%%%0%%%%fwfi%nsfSU"[tgo&/K0KyuNJqU_L4\hAFgm/I.nGV[rmEZ2hL,-LIj4FJB*s7/_E'E2Yg9pXH(U"/-a\Qy&sz4Sn$j(dn<hzOk/9:DP)c-NEVtWM^%GDGrorxF8;W)pdbBGcgo_FjttU"LZ04i$mJg*Ek^XqB5_EG4TYgr[g6Kb5n[S5&S*bpCvD0?Kc*_g?,%srnIeJ]DoAU"m0CB4%uI5w3BFB\FQ%V1-tIDsd-7FC[]T$[W$1MhtD5Br4,<SBKGOf[J^pBrf&iU"$1%S^yRt,stC(sm+R(H*0]khI*bN<.S'Ibz#p8b-$g(u:Z-rte4b#c45^BZ_2?0U"rn(bPr432PPOii*J+YgD<4i&rIrRErsXKI\a2JlX/E<L$K5+Q:?.bRt^w(>;DEIU"r4n4-UO<KSa;hI))V)x$.WN;MCNO7%**Gm(6)ex*/M=/xYRqb%a<cO&%BP)ZL;.U"R_zrKJ.5;[R(mNU.nj%8is1inF&KnMQmm,>uFI0XW.-_\x<sj34(If#hRB3NdTNU"2KD1_jUIcl%e]fgiS/F]TLZ0<'4<OV2<Zs)VA;/LVOx;xf7'NY5%e5q?;l%xjeFU"37DW%EIdj^i*8u3e_oZdZDod6wPv#Z*1o\Os53&RZE%H%W5ho,>'ukvRjrB6e&SU":/FbgZb4mpWE,?_DHfNc03R((,<VKUHQCA]W?5q*&?,-;fa2VVi65?,ZX*qzqp^U"Yg(*?dmU%6eDcpC?W7T1aT7Y2VD'W_qd-1bLX&UKNu^3pvw&3uoIV,wC.%2oR[+U"?v3uti*J_Jfe8feC4#;_*k0&<i0)9)S6F3[>nD8op;f#cQ;z]_Ln+KpFsj('LO+U"n\v9ns&8f(-AJF>M$Ul331k&r4im-nN3\Rn,BLfuOXb?7e.+qo-&a&DrQKK2>k0U"$L1IMF'E%1[5NB1EpkZDZB/7*-#ya)ehnBrOAr:1Da6*olD=C(pyNJf[cTJ.om3U"m1:r0\8hJmt4ohIVM^iKL%T?,nFbFMug.4aEpykVV^MV-3(RMjtv#<'Vl\N;tkLU">s/lS^:PuLaMF+6'69,KCD.\W:y'mGo#BtwZ$$s&GFYllj:j0FV92;Rp<MBwM;SU"s)_RJaOhcIvwA7J[1oc7oNC).NzhK8tNNw]3WtCX-Rvvi-pzv?4-CZc1E\tb.MOU"X6:?%^a>7:Ea+-mAgn?=W6U*hn/LCyuRmHd__ZA_u/q$ZKlf.I6leP=n.fj?WL-U"lQJH0q.v\T?V;:+CH2A3(S>A5M(p%N^w;WC._7)3nNBo_7[spOV>[i%n00GK\dIU"MmMzkUXyeeg_vrGu_%':L3v4eXr%;eY70O)t:deo^>Ds4T>KK,;*,fqN52Ld%tYU"#g+[R(**:95'9;U,=,u4QU#?jzEVPq<X,t\Q0-]4e>8\<^wh5_5R^2%#JV(&hwHU",Si*;d70j$b\v]E%1y&hXq,-O7>Kkq7z0Ph)96Icl.z.BNzss;K5fQG6FqZH&?wU"4r&z,EYy*M/0Tw,XppCY=?dceX,;,5KO'%E)M5G8e4_r=-F^]H_KLbYhFJUzgA[U"\\A;(f%r3iC?$7-,7Fd,+F8nUWt7VE4k,m3rpWJw1BZo:+r>)ZVtZ$=DkvcfXC)U"#6h4y(>iSiI>?ycA,'/E&eW<T9%ILRgwE72'5gu[Rm^C5N5Bzc0T9+&hu3pC8(zU"FJksS($9=P]m9Vq]uE6T]'>4*Pzp$6G%sGGJ(KFw<#uG%/MhYe(.91;11onk[5]U"&;<HUS9),3*7LE%8g+^e*-X+dl-H]%zgW\hh1r0F?wCka);gFW>FcDS;k+Gaf>5U"fMyZFpT/zU$hS+7q#1fNIINTcU[X.:h'I'AG<\3OQ_UNio:4x*+ZGJ;;uIA[>eHU"dV'k6pX$gX0nQ:\ON4QA[((a_$<HistB^50QH?M$net+X6Ea$Y#lsXF5lClQ\]IU"EoPQlikZvvu#v[rMJ1cLiYFlpu(cTrYU)l,oiDk8#FpLzG7S^3gaitu3I9qZY\AU"s'Ih4n[:bJWTcnbZ)'l-gd.TpLO47v>FkX#4b_S.ag&fs1j=GdxKaIg-]IhMXw^U".\J[JeH#j6akm--x50R6iH/bU-:.yBbAH?E#UJi)pu2KpAm=_.r5dNRw&gjbv-zU"-Lk%0h<_FVNt/-S57Rr&c1L7Qpseq2OrX8idt3jaGN'r05HQ\KM=-FQL%CFj_,qU"SB]NW2P1Q[p8cm07lB+w/wL(:qfTLeRM)BdF?-fKsTGA/7-vj.slM<nc/C8=3SfU"*q>R7Kiz[O-ii)ABKG&V#+5%?&_-mFL'AXORwI9Q+)MG&5B)F,,0t<7#uh)c9b5U"sg-cch')yQ;54Ka_%QZtSEYJPJ<BIjR1=sjZ4&$3sj&Tdn;O4[\\l-$^?(:+ee:U"OD\f^l\_VXMIjd-m1A;?M'JEkG25rFT7xz)JvKbmgZ;b[kt)6/XvpY$r)fBbck/U"JKLX,Zj;F;dCK?D9AN%<wsv',<:dw*y&&5zZ?(HJ)3tRhE3UoZ>jX8GihmOm-E-U"71\](;K;V&K5B,hP/,;Rx1:DAQ37*Y5?Ppmr#JcQbg,6o6mYm%F[=my.)*.$.CpU"/*#88pjpeKDxK&d8>Ho091Mvv=Bq=TnM72>_Ie,K.enaW5c*avhxaY(pLCHaHmiU"]$-OUG^,*VE,TDeqdM=nG#=6;3=;TD:TS-u<y%H<Q>'Z9pJ+/:v5KGSa;>QL]9&U"L5KmfhGs7.J-xT+/baOA]?wH4AKgd(W(emb:3x:Ci_a\m0<rY7N'nNSQ_P[,oGjU"fSljds(+d8,FZo%PsoNd:mCJCJ)Ad0c[Fm^s,L[>\#g_8TJC?<T%?w]3HBu,Q#YU":F\LLhlpT#V,wodL3#8/AX=C#,peLX*=.?]Zws0,#Mm'kaxDHV$cWg]/r\M*.s:U"7p1f$APa7SJ#oYcGx]otfC=85[WvOwUdSh9LIpnK>wNs>[6ZqQ%m,fP.gPV#D18U"M(n-HY')gt9GK1wx3%nU>qJ:)c?11kMfg_s$P#.t5a<fW]EOF22S=ms\m&=uHV9U"T-B2C1X#M3;$;7VQS]fGW]n9lMa>>%k?k0Ks=7lh)#EaX/Z0sXQ8ZK1aOumo&Q0U"d]_0dd0Bi4V]R<^fdpu,5ETDUZuOUPQi]CG%M&PmEYkPnXj_l#mh*ZEd7wJcQniU")&dqQExZ?8rXp7YZvM$uVtjGNwSrP%HCzOTW4oN'ZsIA3'm<Y3PrwP*\.D,-4wDU"UM43VB*yN/LyP%AGkX1pe89)V1IdT_-**7BV:0'PNfI1N2T[JqY.<(8Smln*gEdU"[E_1RQofFpR'\,mx<543FuKxhO/C+/eS&I_T<k=PMUI6s2#A$c:M4ee:XY?ob/MU"fiLJQn8SNZmY=TaI[y,6NvuC5MMl+WB-0vuJ#R0CQ7+0o6fF78Wu=)N\Co_9HSNU"dd:ghwRWel.[&M/^2tS6HckqQJBj(hCj>Pwb-1:U36op3FjBBSKiV3,g$m;U9OlU"Vbh16v?]IoFwUBi[kXE7%TCTJWh%*LX7acki\U/81F?c[t>t$SBgt8Y6soZXQkTU"ux67c60)#^/#$[[H665CEHg8g'A>vm;##*yF6+ur(kyu;#m89VIYv8cLKT%2?$XU"3X[F2R5u6>6UfOO1U(-F*x&_(n636JO]DsdK61W2RADKb]ged9,BbFNA5oDE<URU"],6Et^Lbc+V9F1i=[W>QO+;U((Cc4GAkH1*MwI:2rUh7c\X']Rv/ky[>drqh(QnU">*q8A=Q(?LHbDP*W)ISP>[N#OE?jPc(E,q7R-u*pxUgZud&oYnxd:.lmbzv;9i9U"By+#CT[$</;otI+yaXBi^vNJ.wQQ?o>o<2F;J=8WVs%Kc99eGi=XR\xc:hGYFo4U"C,N9?G05fyDjRY1&3?OJd?PW?'BmH_GKB59]9;Sr4y>T($5Gt2m/TSiP1&Krho;U"a+Ug*]*^*[b+m;)l:2CroHPZem<UK&C;>=?Oh=aSUG;oLVOf5fBHXV?1i;/iH2NU"JF5Wo7x*O':FgTVCl\mf0QmUULmIoh6#k7Y]2j:hMoee)B%Mj'WFM>b7ilZW>'2U"*su?\>4Y5gF]XLM,Qi;Yn.J].\XSk&7%kq$)dcZ.Lk;,m.beF[pid':rTe<B:-OU"Ad9:UVIH>Sk^,YTt3\;of=;&f4s)B82g^KjMBN?BJr%)v?7dOLiBkCr6\a$1*acU"+KP][Q^Q[2<eWjOB?mzCU?0C\G7)hb%MdZrViuEcJYuPZScjq(_Yn:qB2sOI8myU"(I&8G+ZMwif[4v\Ev*&ijn#D/cd/9W:zek)22lhY8?2'\K+*(B.ps=2jsZP-I0\U"rojvPlBMlTXlZk:QL+tu5iNf5M-'Z1=Fot.:>QVdiQm4_Opv1ilb?$N>w^R:6b8U"Xpb+\hdq2>JDS:G5ohq1lW-9Y%N_#rj2Emk6AA<NYA'MzqIcs&=ScQHFOt[#:nbU"HkD17,-\T_ojFGpL\RWn*6EqGU_*9NInrI6t^e$G?W>X0URhAL^g(7dK=c%KwSiEND SUBSUB V6U"4Jl3i]xUv/>JNBVdn+>MO#:v4Kj9No/V+U$FtIUDd_%r-Q,jo>)A/'M^KxoBDayU"v%*l?cXfIG6[2k9cZ==xXE*NU_Nb%tn):5SDK;YGn',^d]T#tYAtJda;i[2sornU"uJD[SX^[xl'PJNT]7Lv&W<lpDn+_]^t._:[<0(MAUl(7#5qW)\[QNl#\)Q7os^]U"JB/b4P^BnHo?\/6GLaX=D&i3fW)#=vWD.m>J^DWi/?0lN^Qf?'#+IE_ObZ#],jkU"=z=,xXC=(phg0G)1>gFEEy5aH#I]oQo]Q=_[Qhca].8at_asX;JWbh+^mhmM5wAU"2HC;%b^g>=MWzbFo;r]rJko]wM/3wT_vH0II6TInCk9rt^UTYf.'DHEj>wpO7YUU"n0P&p/a5-IZrgR%V?8SvS][7kaHM/()Jdp8FIS#H](t)ES7Up(RNCJzBko(rI[sU"rudN>x'bGis_=Y-?Q$Dk>7n9-oqb+C1R'Nn/_P/X'EEeFnBMpCX#$k(:)OdRQM&U"g_p,RNONdsc9Ikr>p&,?s(p3uD%;U80oHdxum0T5i$[ZTgnqPu>OPe:n3;F^leTU"uuu65)ki89pC%]CX]^cMbsi9g+gA8R.hrlx3(L&OIuV5$g3*WecPltX7J%KI]H^U"d5OfX^;cn1/:qf4a.C1UjVcts3IKa5Jjy^e;E%a?ir[O_W/-RQX<0Bn1.A?(GgoU"-cP5,==5*,Mx+#TWR)de?p8*+fKV\jO>Y(X/0QvF<*iOF;SgkL.>j$P>3,Mo0:GU";PVj7dta\tN4v/KNB<jrPgP.2<)RLM?ddd'x/96(#.8g-bk&F%yMD:Rgx^B^gwfU"wFw1=k+&;dxd7h#-A8('#[Y*VO/Kq08H_0&&%ZDt?-C]w2qUHnh2o;joaZ-B'ubU"QMw&LCYz\7cGZ<wFC]T)u%3^s\&SajCIA8bZ1F$P>0Gj)L3FsYeXMh0=k)QJ5x2U"oDylcZodS=u22VuGlo.j?TFd\thP-(l7^Il$?]ZfW_Dfj9TPZs_]vwl2.S6q\y.U"O3/bFXY3A<,'BP,\PIUN]cd7bxe/*dS]sI%oinA5l)BNL8$*?eeX$F9JF.O*bn2U"dOVW.;eN%KRyS1mU*>9UG>Lo,]MPs$5'QX&zfTPajjo,jhD7Q1ocp[_H^+HAuwCU"tbSsoFrQpP4r,<lsc/N#S5>?TcYaB]shxR3c5Il)aPP6HEY8e27<xi/RY<_.jI$U"[i>,;t[29;ll+q\)T*880W]glq0nlU94a/)rwg$Wt.FYehPSi'd.L,S7PDZPUM,U"./KX='GaB8EgqCF>zPb%X8sg=q:bPb;R\:KF5gn4c?-Tcl&mxvPk7p'Mnu1LupjU"qi9d(LMD6Myra=JhD%GtLtDiR>VkqIG[TY)]<)l3gTeEBH*0lQG/e6_pZkVPqDEU"P>E8'ra^>De_nMmdZcua=NKrOwkH0824+eJ/lIfDb0wF#C$NCL$,_[4c<a;:vsbU"B=3g;y>*c9ULxWkK/iz176lOq&n*aGa^z.I1Z6$\mUC,=aMfK^^)PKUUdT7gAJ6U"Y7ti_rd;o?IUvPyIJnPR59_9tZa.h5T+kSf?>R^;:JW'VMRu]/ojd4V:3_krZZGU"DhToCXyD(hqz*Rei'Ma4H3$Yp,;rXr\wm+fmWWHPbt>M^-4*QOi+C_Q+5ga=0gyU"10$t*%Slc\9n68JFzDoiJ.+9,YBE6.(TK'ZpHSMHYS&:gpVh4Pb&4..2;U(L:i$U"I<=dR\*8^;jFS-P?e-De/u.1'leY;+LPbWon(+1sd[]JjExy0p4N14'lM4qmy5uU"[9T24vW.?B9+Ujuf_v7ZCbCuQ=P2^jsGirITQ.btgg_BP)^a,;XnmHghcsDH-*kU"p-/bEjK8(EC9$5=Sz:/.pWAs8I7OBIB=T8m1kMqc^u:]Y4H9U>M/<cN)i_6&bbUU"DBXnjT#5d:bB=\4cw]<pj[)oZHTb[G8g;u^Q50F]s=csFCc#t3-_(kMV0AtA()2U"',t'MtKP=jtg\GddM=U8qw4IO\2OmIX6HUx//3'uWIK594G.&oGHOoq9a]i#u;MU">cD)rUD,GlLGsL=WbnZ7z\iBr<wNJ19u5i4Yd4+1wt(tcCKx*=>I6-<lmmp[t2NU"Q-t=L)Gk<Ce?ep8#[4oDpDnW,tG^g;n%eY/hc.t4-Bu'wn&\?]3D4FWM8kM8cW%U"%asEq$^RWa#PP$in>[Z\qQr7vooa#Epf(JK=&e]>pl;;lVQR6&q?3-VRh7JEZHqU"(kx&HZUut7crWsHd8_7g5NF/'onOs^Yv7[[JMu<XrgZGvgfEp[ZFV+CM>;?;qo.U"5T+TV$1M>ISPH*sbg5>[eOL<f<c)kyj3k3[($U'[6ZYc>q8IlsC/-2?HM_Xuy&JU"$#qyXo(4I:G.?qrffu1uWWM;P]dl';xS./J=5%3<WtG+GCh;J$[[<ho;t0C_^\qU"^Trf:DFi&dr_WAa+2#i3z>TM/lDWtDt*WOZ[E1ba$#>b<hbtWnG>sgPciEBd-)kU"g.aAj/\_ldw;_+\SY79/-7Bt+9HRBQ&*UiMyK9tTa;Iq#.]U&$R1*>5eOxF&DU*U"(+ma<29#u9n:S9Aex-2asG^4K6mw/SSg/.XB4ixNLJ._1BfjOphhit/_roBABb/U"OpZJLok>Xo'ml++?cl>E+QLnK+kj:V$hszlj2TElYA;k^1^*6_.4D0g94CPwWWdU"5tz<3(QBfNi3xGqlGYMT,tuS]sSk2nIv^_QvvC#(EZ,])HaB*$9PgcE5T-a9+1IU"l+)X>H$QvKQAjZ4IT20J;V<C.5<:nBb2<DZCb:,85LIvFz3Bqbp.Tp2iTE$Kx>XU"L28:b&FUE-1)^XL3(2eL;*I+YSuO#IVYdm?[BjRO6mC/%:;-(;2^u7;JUX;p:xPU"Mhc>KZYK^Ui#gJh,s9P:sD;<QcB1f[jxx$N='7YGS[Y,?,w7da]#5.$S2yo8'[sU"AC0PXASUBf>BEU0^vbuJ?A.fLh[mCHf>n5n=a6U*[U5h+vh++J\$R$gXP*)PJioU"n+Ym9&HpH_h]GKiaZWup8Z),,jZwur=DGW2]+K3O7RGed-aj9]?Xich8m+T)\H.U":5XlXi:2#'=D('o\s_B:O9-R4/2B+2f01\J5I0N2z3xN0I,c^(H&+Yw><S3q0KDU"=3JfYf91?,8>#Wv((/\h=[gZDC>Lp:Tb2*ewUzVyTbmo%wZg#C1,T<QhYtH,9C+U"\YlqRdO>qRrx39kEm:8T<az(:2qd#FRO(mu7jadNnry0\JFQfSLA?aeidAU_1e.U"gTTNOGSLW1QP\gU6wRo%wgBV/8Q],fMF,0.'Oe)va-d(IXT61l9',\5'4+b3G9hU"mxa\pUP.]+y9j7_m4v3q]SL2]i=H;CXZ0^;hS#q/3rSdNLrbBCA?aW4#f\h(uCsU"#Ft4kgqFesHI%8x'q=eL_$Zqx?>7<s$5;EcA#x-p&S]*gvXiVlR:>Vmb]EZ4R2dU"\CRh4M'GG1Qj\[r^cWaU$aCs#8FGkUha1hSAq[Cww;fQWe;0h:++a)+Jt[IqKbrU"']17<Gd+IiK?Pjko\.K;%rs>XL^JX]0,]80[zV9_.3Z8ifQ]GWMvAi0Cy?Fea9]U"c;g)9O>[fV6[817*ZN$#xW];f+$=<UY=lAYoEJ[jhx/fAz-8$R07IJ%45GBgeRqU"2YAEMc035_==8uS]1Gl?2=<n0;%RHJK8RBe6q910:N2+;vkia__**X1HRr1h5/+U"VK/4r:lp]IYV)9U$TtRWg>eTD#MVAA07ZnIl]2v.c8&pI$1^50>gdp]N+XuN,S-U"4/O3iNB,Eg).zoL4X=iWKi))8dH(8uu<O(^-L_)[H;a.fkJX4$h:Q+S[R>l?a9kU"DK'*Rio5(WF5okdVMWQjil=dhmi)7Dffr8EHW)B6_<-*mYaeUd=\IWiI\P0g?FcU"Sam,)BW%aV)j9$y#a,&/\Jl*&YTJj/5>IK5ef;_#PwXgte/Q?J=.LcGzN([>.KXU"j)jG/-P>mqH^j?tv2RI=e[kje-y+w%pRS<,B,)$?(wZ*p^n];5F4BN4J]?o#QJiU"6.PCv-^CYd-BrO6Ya])=<mILs8X=Pe-VDP2$*?7;t1a7qW(S9N'Hm)Fv$Q_yn[xU"l83?))BTaBK<kL8QRAsD?9E/xpd;&p4WD6l0CgpuR$/CZbGxVFVAQp/^HLm1+*JU"<Z(3Yswpa\XFi/K]b5CKq\##I=i7jm/mZ'o%ZQOA/JYu=[YCp4Wcq^b:,4b5G^_U"UQ8YajN^cpBqXi6gR]9I_^Y7=q#^V54?LPdG%RY<(<dwS5Yhjc:jEU:8-M>$AfCU"j9[xZ7$6/g^54l]vG4HWWh#Mc7<P*p3U<Ah+%/K4i:r3EHmws;5hO]\rE2dN1[gU"94RqGw$16$nUbiXT9njQM+SIfN32Xt*pmNe-AUtBb4G+C%QHrUkrw6hMBlO>(aLU"tUo6Xhf3mAL(T5WZ%^(s//shw%9kg6msu%omLf;+*9*]J%#MVQwD.RLA\vGejIlU".FDt3)zi[:g1&OogzG?W&J,VELwFEQ%:>:92/1s'\S,073osTl73y.;pN&#eP3sU"=Q?)29%U,Ws&10q9yW%u7rT90TGKEe4B7\:9t^H>*1;*LacH%9B.1bV0/jEQpdUU"P>;t&^8p-O3Zo7Xg;D])0#rGC,ytr(NXz[\/F%7OMZ$+hvXyvX*96\bq;MHhNruU"s0p*&hjN$H53w5.&Mm]0cq*)q846^m?2(cJw8ecYvog,ZGSb4kfb-7KCJl]3c2JU"U-92gwtXgN.r(iB(8lb%pd:k2UxSpxst:RgYNRfK?6NCnVX3c#rnxgNFQfV]V;'U"AtEud%gVuNge3Y#$oXld-\R,Y;[Mjm)YGQG9&$4s1-NpgJ/(doZE;-SX:n=VUjNU"fa&#^:b2d[Y3]Mi#StG^TV3-CTwE*XzGG]K(::9[;xj^K$s(v7%;SPO\BC5d]Q+U"$e_fla0A&C^p*X;O0:F2B#&Fc)8w-KVc9wI'IEDJT[Jj0?Xy6NwR7HC-8vwfYvXU"KAA%8\Cv)iqLjJJS.;&ZDXz-5Xc-Uk-6uZNqI0PoKp>8*K&Y0j(U;J8I?*XWLhUU"S<t9=\0ksIq.Ap;]U;2]*SjWJy48d;ENn.zqjsji3Jns]6vq?9Tq.cZ$ro<i=jzU"?ue:t4THK[U+AB\4jNkMQHM1#nAK_)WP8(vHeQqeUBB.NZ#5)<524\0<c;f6OG4U"zW4PC:huOE5%bm<pt0=<83lHhYE<ZhQAmYhGZVxL[b^YVLm8$IcpiqH$^_;HgnsU"Np<]KV&%q5giKKYlA(d_<)Qe'Gaio)52okdLt[m$w^^fPqo<qivZqV3[b=oDiy3U"Z/m>AG_^zLk'acVm:8H1#.7wjI[Shs]WwL[LLY$J8mGaH38*1Wk+ZZK_8/o<.-]U"\)kfL);+_*Z>C$E&M0We524eK&AD7ws3tKT#+ZQ*T7Sli)j$jth^]auhzH7HgL\U"?&MT#p^YFstFH$m^_-cJV&Sm\Xls_a(j'FrT'IBlaYc^FA);Z]ZcN%t(o;oh/PHU"'0r;XJtu=4Ba'UBzQ:1)gGhrB&-GrTTEDvWbwk;5/<Fjt>dp;^?HLYxtP^e&9WmU"%TIG\_wAVQHozF5UjT<Q-LG4^(JL'955gF/6cv]f*i7$TUZ5Ma,XJaY6',mp><_U"B[sM[[Me^$B[zV3VLcFNs0Olv4DS#]zLXk-keZ:EQ2gRRdDvF8kZ><*#d,Cam2^U"K2aO7AW78-N6kh7f+Dbh:QO[e>r694]3Nb)NxHORgQv\H-C&HaFTUj(5GCld\>RU"RZV$a=/(VGQ7KOX*wJ8^[8JG:08qGL8XZw$6cH5nY=%=')[dTp5(^ZjEk;H9TgTU"O0dKBxV8.AFwtjMMw--1C_c1\f.\edP?6FTXvf[%9IPzIq&MP+vg1A>C.e\=UIfU">COh(0Zx3/^dA0u(nb$+vI*Y;+;xR8q?T.]mZ<8.K8%hJX.u$^hdz[9$ER[KN5:U"0UTQ$O#[u]tbv$Xub6a2#Vxgkr'0#ow(FTOu&655/2<%aOcKA4aAMz.Y[c:EE^SU"X6n:9\IF&gW?V$3s'7L-eO/e651Q#Dxr2C6J6Y$)v8o)+;&bTdgevIN3+($;XBuU"*-VCZKk/2K.YD*q+y&JzZ9Cv&nc9k?GI],:h3c+#[#lvCi'vDTdw7,05dcD$k+uU"ni4;HYl=7Dh;l<Nsedw8u:_:7,UV)a)W?RT$/KT=T0N%yZkRix*G,6oP?[G>(=DU"&QU4W8kc[5I92I\>4P$IR>V1VYurtI7A]TDL,kNYix6l>NLi\t\GhJr<tlm?/KZU"NWtF7$;SL[^_N6Kb<n(xD2FMw#'xc84d#;?6VXm/l-enjQm0idu$?fY54TUhDQgU"E\5d/=\BTU.eB4lB4af1rioIX;Je:QO-m/OhbcIf)%\':LHxO$<R:3o--tkRX4QU"ork/x2nfuW?Qq':Wr2ky[xO:LAYyDNIAJ-D,=r&?C+NOjcfqd))(c058#kumjYSU"[Un?2\ZTB9+eO_BVvd*^gE5xvWw?x]?xNBOf-2UHE1?kRh_UlKC'hY^7J+j=7lFU"y*1g'[_n1QVrpOgT_,sQ4XD1QCwt[]+:YlLOxdl8h)?]80j):od4?YUp1^iNZwXU"2[oD/L,#x#YQ.UlvSTp$v+ApWiJ^7q5MxdtvUT[:a%3gyXne5b'e[M<=VW)MWg;U"[D98>-J4R=G\d16t]=0J<9i1bW7R7F_?5)4->v*CW6b8ukm\CiclWCKg.$QrCWaU"Ul[AuIky<Ei9*Sah%UwZ*CWqHCkCi\\7LGSpqWw9:5<4WXG\x;[kl6Jp]M=dGy[U"#uez?Nh%H*T?Z0,d3:+F$5NGG,+S'7Jr6;7$9gJO-BD+DQa7KGfD(u&_u?d.[VSU"L7>b9#HOX4ox7o4uE$I0m)B9K0yzCpm&VFA\uxr<DX2l2CBM[,=iYNNm\I#b[&jU"K1W%Ev^Z=,7WmQ(9$vIAGoZ&c3\Jq>7hIW(_rW#=baF%r1HlUm(*tJg[M.9LY$6U"0X'O;lHgl'rKU:Ue<T;m*]CONe=QoVE.+W0rmtE,?$,s1;uK_0[*;*ON:CLVChoU"iTs%oMu&287bC:Fim,t<e'-QwEh$h>7uhxVaghEa.,oVVm0)vD8$hxy=2vH-\L7U"fH.Ad[ROEa.[FAsh9rar#PerPQI>tj<=p%QwrWApPxbp0Fm#%f4[7Dkd.6s^$h$U"xd?s7T63ih9LIu$)9riUdZ:^1;a^uk\RrZ$Gr(M/GE<>,sOxuN&6r)L\o).LH,DU"S>Y5(NRpyV&5H+0>=Pi7a&MXUBqMHU(1ZNs9-b?WIc,ZbcMB]h;&G$],;SjCU#fU"ZTRukvC^C6$RoKlIm=Tq820]rmu*Fyt5Pn;=,Oii2y:AN7fm/mHmfn_d7ENwz^<U"gJtG-n[3\(ZC1<gm2+.<lqva21n*Hi$?-t2f6)9bXq$04#.*7n9)<D+Q7$/Ch.$U"/E2l-;]j;&hA.j47WL7=$98nKeLoCK\trKHarVfrTV.T4CBP32%I(rfBpN6-5S.U"riMfkHmL*u$M]8G)O+T%asF,Hp.W7o]kPOHM[eNsDVV*$^XVDW9F9#4?j'uguv;U"XMYa,SD>]qfDe260H:DQ[7R,AG5y'YviNpuC\+c4wT;4D1lN)t^5G7e)lBmI4cYU"_iSnlSC8ejukC'\?Km1P'iZ\h^he2NR(xow/n%jf5VgiMO?l'x,up%&'9%%9%%%U"R-%BPJMM?/'*m1&%%%*)%%%.%%%%%%%%%&%%E%%%%%%%%%fwfq%ngSg%nup&%'9U"%9%%%%-L%yPMIM&]W(9f+%%%F1%%%/%%%%%%%%%%%E%%%%X%&%%f%wfqn%gSqn%U"gup&%'9%9%%%%-L%wPMdM(c='VO4%4%k.%%%/%%%%%%%%%&%E[%%%k%,%%f%wfqU"n%gSfx%rup&%'9%9%%%%-L%#ZCIM*X?+)Kc%+%qF&%%0%%%%%%%%%%%E%%%%i%<U"%%f%wfin%sfSu%fpup%&'9%%9%%%I-%xPJMM]a(HbP(%%%o)%%%/%%%%%%%%%%%U"%E%%%(d%%%%fwfq%ngSt%goup%&'9%%9%%%I-%yPJMMuu8>GO5.%%-?%%%/%%%%U"%%%%%%%%E%%%)a(%%%fwfq%ngSv%qgup%&'9%%9%%%I-%GY&SMHJ8h$qF#%%]W%U"%%0%%%%%%%%%&%%E%%%)_9%%%fwfi%nsfS%gfxu%p&'9%%9%%#%-%YDsTMHJLA%U"'[B%%B%x%%0%%%%%%%%%&%%E%%4%*[%%%fwf%insf%Sith%up&'%9%9%%%%-%1EU"yQM3B>h.&<%%%&V%%%%-%%%%%%%%%&%E%#%%Wy%%%rf%pjSg%fyup%&'9%%9%%%U"#-%AbJLM<C*CoZ-%%%,G%%%0%%%%%%%%%%%%E%%%*>y%%%fwfi%nsfS%ksyu%p&U"'9%%9%%[%-%F&1cMDQQ*t6#%%%y%%%%/%%%%%%%%%&%%E%%7%H,%%%fwf%qngS%U"gfyu%p&'9%%9%%#%-%l_qTMD;o#N=%(%%w%.%%/%%%%%%%%%&%%E%%=%+,%%%wjU"f%irjS(y'yu%p&'9%%9%%%%-%.DrTMKV-Ue*#J%%q%n%%0%%%%%%%%%%%%E%%=%U"k/%%%fwf%insf%Stgo%up*+%%%%%%2%2%'S'%%,EU%%%%%END SUBV2V3V4V5V6CLOSE:IF S=57AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUBAntoni Gual                    BILLIARD SIMULATOR             agual@eic.ictnet.es            08-30-00 (01:50)       QB, QBasic, PDS        573  21125    BILLIARD.BASDECLARE SUB GNOISE (I%)'---------------------------------------------------------------------------''BILLIARD for QBASIC by Antoni Gual     agual@eic.ictnet.es                 '' It simply tries to simulate billiard physics, not the game's rules, of    ''   which I have no idea                                                    ''---------------------------------------------------------------------------''Features:  multi screen mode. In VGA  you can use modes 7,8,9,12,13.       ''           simulates ball spinning, so you can use effects.                ''           A single FUNCTION mouse routine you can use in your programs    ''---------------------------------------------------------------------------''Use as you want, only give me credit                                       '' Let me know if you do any enhancement to the code!                        ''---------------------------------------------------------------------------''Acknowledgements:                                                          ''-  Theory comes from the program Le Billard Fou, by Frdric Neuville,     ''     published in the French magazine Science & Vie Micro in January 1986. ''     (It was for an Apple II..)                                            ''-  A QB program found in Andreas Meile webpage has also inspired me,       ''     although I can't read german at all :)                                ''-  The short mouse routine is rewritten from a contribution to ABC by      ''     Dan Campbell.                                                         ''                                                                           ''If you want to go further, and you have a solid knowledge in physics, you  '' can study the pdf in www.playpool.com/apapp/download.htm.                 '' (I warn you, a lot of vectorial maths)                                    ''---------------------------------------------------------------------------'' USE: You can play in two ways, depending of the value of the constant     ''  BallSpin                                                                 '' -If ballspin=0 you need only to click in the place around the cue ball    ''   from where the cue will hit the ball. The cue will hit the center of    ''   the ball, so no effects.(Cue ball has a cross on it).                   '' -If ballspin=1, after the first click you must consider the cue ball as   ''   viewed from the back. Then you must click in the place the cue must hit.''   This way you can give effects to the ball.A click outside the ball will ''   be considered as a click in the center.                                 ''---------------------------------------------------------------------------'DECLARE FUNCTION delta! (v AS ANY)DECLARE SUB GScreenInit ()DECLARE SUB MoveBalls (t!)DECLARE SUB Rebounds ()DECLARE SUB GUserInput (canswap%)DECLARE SUB GDrawBalls (canswap%)DECLARE SUB initgame (canswap%)DECLARE SUB GDrawTable (canswap%)DECLARE FUNCTION GMouseInt% (func%, X%, y%)TYPE vector    X   AS SINGLE    y   AS SINGLE    z   AS SINGLEEND TYPE'TYPE screentype'    scr  AS INTEGER'    mlin AS INTEGER'    mcol AS INTEGER'    mx   AS INTEGER'    my   AS INTEGER'    moumy AS INTEGER'    mouxsc AS SINGLE'    mouysc AS SINGLE'    maxx AS INTEGER'    maxy AS INTEGER'    minx AS INTEGER'    muny AS INTEGER'    canswap AS INTEGER'END TYPETYPE balltype    posi    AS vector    lastp   AS vector    SPEED   AS vector    SPin    AS vector    rad     AS SINGLE    mass    AS SINGLE    mi      AS SINGLE    clr     AS INTEGER    moving  AS INTEGEREND TYPECONST false = 0, true = NOT false'physical constantsCONST pi = 3.141592CONST gravity = 9.81CONST Rebound = .9                    'Rebound coeficient 0(nonelastic) to 1CONST rollfrict = .05                 'friction when ball rollsCONST slidefrict = .1                 'friction when ball slidesCONST cushfrict = .1CONST dt = .05                        'time increment on each calc'screenCONST maxx% = 300CONST maxy% = 220CONST border% = 50             'border sizeCONST maxxb% = maxx% + borderCONST maxyb% = maxy% + borderCONST backclr = 3              'table colorCONST scr = 12                 'screen mode 0,3,4,5,6 error, 1,2,10,11 balls not displayedDIM canswap AS INTEGER, mousexscale, mouseyscale                             'otherCONST maxballs% = 3CONST fillthem = trueCONST frames = 100             'number of calculations between two displays              CONST DONOISE = true           'true if yoyou want to hear a noise when ball is hitCONST ballspin = true          'true if program must take into account the spinCONST energydisp = false       'debuggingDIM BALL(1 TO maxballs%) AS balltypeGScreenInit'--------------------------------main loop-----------------------------------DO      'games loop    framecount% = 1    initgame (canswap)    dummy% = GMouseInt(0, 0, 0)    'shot loop    DO        GUserInput (canswap)        'loop until balls stop        DO        ' ball movement loop            MoveBalls (dt)            Rebounds            'do not display the result of every single calculation            framecount% = framecount% - 1            IF framecount% = 0 THEN GDrawBalls (canswap): framecount% = frames            'check if any ball still moving            moving% = false            FOR I% = 1 TO maxballs%                IF BALL(I%).moving THEN moving% = true            NEXT        LOOP UNTIL (NOT moving%) OR LEN(INKEY$)        FOR I% = 1 TO maxballs%            BALL(I%).SPEED.X = 0: BALL(I%).SPEED.y = 0: BALL(I%).SPEED.z = 0            BALL(I%).SPin.X = 0: BALL(I%).SPin.y = 0: BALL(I%).SPin.z = 0        NEXT        DO: LOOP UNTIL LEN(INKEY$) = 0    LOOP UNTIL LEN(INKEY$)    IF canswap THEN SCREEN , , 0, 0    LOCATE 1, 1: INPUT "Another game?", a$LOOP UNTIL UCASE$(a$) = "N"END'---------------------------------DATA---------------------------------------balls:'ball 1DATA 80,0,0,0,0,0,0,0,0DATA 19.5,1,10,10'ball 2DATA 30,50,0,0,0,0,0,0,0DATA 19.5,1,10,11'ball 3DATA -50,-30,0,0,0,0,0,0,0DATA 19.5,1,10,12MouseData:               '<!--- WARNING - Do not change this... ---!> DATA &h55,&h8b,&hec,&h56,&h57 DATA &h8b,&h76,&h0c,&h8b,&h04 DATA &h8b,&h76,&h0a,&h8b,&h1c DATA &h8b,&h76,&h08,&h8b,&h0c DATA &h8b,&h76,&h06,&h8b,&h14 DATA &hcd,&h33                 : '&H33 is the interrupt number DATA &h8b,&h76,&h0c,&h89,&h04 DATA &h8b,&h76,&h0a,&h89,&h1c DATA &h8b,&h76,&h08,&h89,&h0c DATA &h8b,&h76,&h06,&h89,&h14 DATA &h5f,&h5e,&h5d DATA &hca,&h08,&h00 DATA &hffFUNCTION delta (v AS vector)delta = SQR(v.X * v.X + v.y * v.y + v.z * v.z)END FUNCTIONSUB GDrawBalls (canswap%)SHARED BALL() AS balltype'CLS'LINE (-maxx%, -maxy%)-(maxx%, maxy%), backclr, BFCONST inish = 3 * pi / 2CONST endsh = 2 * piCONST inibr = pi / 2CONST endbr = piWAIT &H3DA, 8FOR I% = 1 TO maxballs%    'if ball moving erase previous position    IF BALL(I%).moving THEN        'erase previous        tempx% = CINT(BALL(I%).lastp.X): tempy% = CINT(BALL(I%).lastp.y)        CIRCLE (tempx%, tempy%), BALL(I%).rad * 1.001, backclr        PAINT (tempx%, tempy%), backclr    END IFNEXT'WAIT &H3DA, 8FOR I% = 1 TO maxballs%    'set last pos =actual pos    BALL(I%).lastp.X = BALL(I%).posi.X    BALL(I%).lastp.y = BALL(I%).posi.y    BALL(I%).lastp.z = BALL(I%).posi.z    'display new ball position    tempx% = CINT(BALL(I%).posi.X): tempy% = CINT(BALL(I%).posi.y)    CIRCLE (tempx%, tempy%), BALL(I%).rad, BALL(I%).clr    IF fillthem THEN        PAINT (tempx%, tempy%), BALL(I%).clr        'CIRCLE (tempx%, tempy%), ball(i%).rad * .9, 8, inish, endsh        'bright        CIRCLE (tempx%, tempy%), BALL(I%).rad * .9, 15, inibr, endbr        CIRCLE (tempx%, tempy%), BALL(I%).rad * .8, 15, inibr, endbr    END IFNEXTIF energydisp THEN    FOR I% = 1 TO maxballs%        delta1 = delta(BALL(I%).SPEED)        energy = energy + BALL(I%).mass * delta1 * delta1 / 2        IF ballspin THEN            delta2 = delta(BALL(I%).SPin)            energy = energy + BALL(I%).mi / 2 * delta2 * delta2        END IF    NEXTEND IFIF energydisp THEN COLOR 15: LOCATE 28, 1: PRINT energy;IF canswap% THEN PCOPY 1, 0END SUBSUB GDrawTable (canswap%)CONST inc = maxx / 60IF canswap% THEN SCREEN , , 1, 0COLOR 1: CLSLINE (-maxx%, -maxy%)-(maxx%, maxy%), backclr, BFCOLOR 0PSET (maxx * (-1 - 1 / 7), maxy + border% / 2)GOSUB drawhdiaPSET (maxx * (-1 - 1 / 7), -maxy - border% / 2)GOSUB drawhdiaPSET (maxx + border / 2, maxy * (1 + 1 / 3))GOSUB drawvdiaPSET (-maxx - border / 2, maxy * (1 + 1 / 3))GOSUB drawvdiaGDrawBalls (canswap%)EXIT SUBdrawhdia:   temp = maxx * 2 / 7   COLOR 15   FOR I% = 0 TO 6    PSET STEP(temp, 0)    LINE -STEP(inc, -2 * inc)    LINE -STEP(inc, 2 * inc)    LINE -STEP(-inc, 2 * inc)    LINE -STEP(-inc, -2 * inc)   NEXT   COLOR 0RETURNdrawvdia:   temp = maxy * 2 / 3   COLOR 15   FOR I% = 0 TO 2    PSET STEP(0, -temp)    LINE -STEP(-2 * inc, -inc)    LINE -STEP(2 * inc, -inc)    LINE -STEP(2 * inc, inc)    LINE -STEP(-2 * inc, inc)       NEXT   COLOR 0RETURNEND SUBFUNCTION GMouseInt% (func%, X%, y%) STATIC'---------------------------------------------------------------------------''MINIMAL QBASIC MOUSE ROUTINE BY ANTONI GUAL agual@eic.ictnet.es            ''Rewritten from an ABC contribution by Dan Campbell                         ''---------------------------------------------------------------------------''To have mouse suport you need only this single function plus               '' the Mousedata DATA  block in the main routine                             ''It loads automatically assembler from data when mouse is initialized       ''Mouse Interrupt requires first call to be to Func 0 (initialize mouse)     '' Call also Func 0 after changing screen mode!                              ''Only 4 functions implemented:                                              ''   Func%=0   Mouse init.  Mouseint returns 0 if mouse not present          ''   Func%=1   Show Cursor. Returns nothing                                  ''   Func%=2   Hide Cursor. Returns nothing.                                 ''               (You should hide cursor before drawing to the screen)       ''   Func%=3   Get status. Returns coords of the cursor in X% Y% and         ''               button status in the function name                          ''               Mouse returns always X in the range 0-639 and Y depending on''               screen mode:                                                ''               Mode 0 -50 lines                            Y 0-399         ''               Mode 0 at 25 lines, Modes 1,2,7,8,13        Y 0-199         ''               Modes 11,12                                 Y 0-479         ''               Modes  9,10                                 Y 0-349         ''               You may want to rescale the mouse coords inside this funct  ''               Mouseint AND 1 <>0 means left button pressed                ''               Mouseint and 2 <>0 means right button pressed               ''---------------------------------------------------------------------------'  SHARED mousexscale, mouseyscale DIM ml%(0 TO 24) ax% = func% SELECT CASE ax% CASE 0:                                      'mouse init      IF ml%(0) = 0 THEN   'Data must be loaded        RESTORE MouseData        DEF SEG = VARSEG(ml%(0))        READ bx%: ax% = 0        WHILE bx% <> &HFF             POKE VARPTR(ml%(0)) + ax%, bx%             READ bx%: ax% = ax% + 1        WEND    END IF    ax% = func%    GOSUB interrupt: GMouseInt% = ax% CASE 1, 2:                                   'show, hide    GOSUB interrupt CASE 3:                                      'get params    GOSUB interrupt    X% = CINT(mousexscale * cx%) - maxxb + 1  'you will need to change this    y% = -CINT(mouseyscale * dx%) + maxyb - 1 'rescaling!!!    GMouseInt% = bx% END SELECTEXIT FUNCTIONinterrupt: DEF SEG = VARSEG(ml%(0)) CALL ABSOLUTE(ax%, bx%, cx%, dx%, VARPTR(ml%(0)))RETURNEND FUNCTIONSUB GNOISE (I%)SELECT CASE I%CASE 1: SOUND 37, .6CASE 2: SOUND 1300, .05END SELECTEND SUBSUB GScreenInit'screen initSHARED mousexscale, mouseyscaleIF scr < 7 OR scr = 10 OR scr = 11 THEN PRINT "SCREEN "; scr; "Not Allowed"; : ENDIF GMouseInt(0, 0, 0) = 0 THEN PRINT "This program needs mouse!": ENDSCREEN scr'mouse scalingmousexscale = 2 * maxxb / 640SELECT CASE scrCASE 7, 8, 13: mouseyscale = 2 * maxyb / 200CASE 12: mouseyscale = 2 * maxyb / 480CASE 9: mouseyscale = 2 * maxyb / 350END SELECTcanswap = trueIF scr >= 10 THEN canswap = falseWINDOW (-maxxb%, -maxyb%)-(maxxb%, maxyb%)CLSEND SUBSUB GUserInput (canswap%)    CONST bll = 1    CONST showmou = 1    CONST hidemou = 2    CONST getparmou = 3    CONST speedpar = 50    SHARED BALL() AS balltype    IF canswap% THEN SCREEN , , 0, 0        LINE (BALL(bll).posi.X - 50, BALL(bll).posi.y)-STEP(100, 0), 0    LINE (BALL(bll).posi.X, BALL(bll).posi.y - 50)-STEP(0, 100), 0        dummy% = GMouseInt(showmou, 0, 0)    'direction and strength    COLOR 15: LOCATE 1, 1: PRINT "Click around ball for shot angle and strength"    DO        a% = GMouseInt(getparmou, x1%, y1%)        dx! = -BALL(bll).posi.X + x1%: dy! = -BALL(bll).posi.y + y1%        strength = SQR(dx! * dx! + dy! * dy!)    LOOP UNTIL a%    dxn! = dx! / strength: dyn! = dy! / strength    BALL(bll).SPEED.X = -dx! / speedpar    BALL(bll).SPEED.y = -dy! / speedpar       'clear last press    DO: LOOP UNTIL GMouseInt(getparmou, X%, y%) = 0    IF ballspin = true THEN        'point of contact        COLOR 15: LOCATE 1, 1: PRINT SPACE$(80)        COLOR 15: LOCATE 1, 1: PRINT "Consider ball as rear viewed and click it for contact point"        DO            a% = GMouseInt(getparmou, X%, y%)            vert = (y% - BALL(bll).posi.y) / BALL(bll).rad            horz = (X% - BALL(bll).posi.X) / BALL(bll).rad            IF horz * horz + vert * vert > 1 THEN horz = 0: vert = 0        LOOP UNTIL a%        BALL(bll).SPin.X = 2.5 * dyn! * vert / BALL(bll).rad / BALL(bll).rad        BALL(bll).SPin.y = -2.5 * dxn! * vert / BALL(bll).rad / BALL(bll).rad        BALL(bll).SPin.z = 2.5 * d2n! * horz / BALL(bll).rad / BALL(bll).rad    END IF    COLOR 15: LOCATE 1, 1: PRINT SPACE$(80)    'ok, we have all parameters we needed, we can hit the ball    BALL(bll).moving = true    dummy% = GMouseInt(hidemou, 0, 0)    IF DONOISE THEN GNOISE 1    IF canswap% THEN SCREEN , , 1, 0    GDrawTable (canswap%)END SUBSUB ideas'ok creditos'ok sombras'   visualizar rotacin bola'   rotacin y efectos'ok      aadir rotacion al dar tacada'ok      efecto rotacion en avance'        efecto rotacion en banda'        efecto rotacion en choque'ok rozamiento suelo'   rozamiento banda'   pendiente'ok usuario:ratn'   visualizar taco'   dibujar bandas, ok diamantes, troneras'ok sonido!'   adaptar a reglamento billaresEND SUBSUB initgame (canswap%)'init screenSHARED BALL() AS balltypeRESTORE ballsRANDOMIZE TIMER'init ballsFOR I% = 1 TO maxballs%    READ BALL(I%).posi.X, BALL(I%).posi.y, BALL(I%).posi.z    READ BALL(I%).SPEED.X, BALL(I%).SPEED.y, BALL(I%).SPEED.z    READ BALL(I%).SPin.X, BALL(I%).SPin.y, BALL(I%).SPin.z    READ BALL(I%).rad, BALL(I%).mass, BALL(I%).mi, BALL(I%).clrNEXTGDrawTable (canswap%)END SUBSUB MoveBalls (dt)SHARED BALL()  AS balltypeDIM contsp AS vector, normal AS vector, slip AS vectorFOR I% = 1 TO maxballs%    IF BALL(I%).moving THEN        'if ball does'nt slide        contsp.X = BALL(I%).SPEED.X: contsp.y = BALL(I%).SPEED.y        k = BALL(I%).rad * rollfrict * .001        IF ballspin THEN            slip.X = -BALL(I%).SPin.y * BALL(I%).rad            slip.y = BALL(I%).SPin.X * BALL(I%).rad            slip.X = BALL(I%).SPEED.X - slip.X            slip.y = BALL(I%).SPEED.y - slip.y            delta2 = delta(slip)            IF delta2 < .01 THEN 'ball is slipping               k = BALL(I%).rad * rollfrict * .001               contsp.X = slip.X: contsp.y = slip.y            END IF                    END IF        delta1 = delta(contsp)        normal.X = -contsp.X / delta1: normal.y = -contsp.y / delta1                'calculate normal opposite to movement        'motion equations        BALL(I%).posi.X = BALL(I%).posi.X + dt * BALL(I%).SPEED.X + k * normal.X * dt * dt        BALL(I%).posi.y = BALL(I%).posi.y + dt * BALL(I%).SPEED.y + k * normal.y * dt * dt               'friction reduces speed        IF ABS(k * dt * normal.X) > ABS(BALL(I%).SPEED.X) THEN            BALL(I%).SPEED.X = 0        ELSE            BALL(I%).SPEED.X = BALL(I%).SPEED.X + k * dt * normal.X        END IF        IF ABS(k * dt * normal.y) > ABS(BALL(I%).SPEED.y) THEN            BALL(I%).SPEED.y = 0        ELSE            BALL(I%).SPEED.y = BALL(I%).SPEED.y + k * dt * normal.y        END IF        IF ballspin THEN            'if slipping, friction changes spin            BALL(I%).SPin.X = BALL(I%).SPin.X - 2.5 * k * dt * normal.y / BALL(I%).rad            BALL(I%).SPin.y = BALL(I%).SPin.y + 2.5 * k * dt * normal.X / BALL(I%).rad        END IF        BALL(I%).moving = false        IF ABS(BALL(I%).SPEED.X) > .00001 THEN            BALL(I%).moving = true        ELSEIF ABS(BALL(I%).SPEED.y) > .00001 THEN            BALL(I%).moving = true        END IF    END IFNEXTEND SUBSUB ReboundsSHARED BALL() AS balltype    FOR I% = 1 TO maxballs     'Rebound in the east side     IF ballspin THEN effect = BALL(I%).SPin.z * BALL(I%).rad ELSE effect = 0     IF BALL(I%).posi.X >= maxx - BALL(I%).rad THEN        BALL(I%).SPEED.X = -(BALL(I%).SPEED.X * Rebound)        BALL(I%).SPEED.y = (5 * BALL(I%).SPEED.y - 2 * effect) / 7        BALL(I%).SPin.z = -BALL(I%).SPEED.y / BALL(I%).rad        IF DONOISE THEN GNOISE 1        'avoiding ball glued to side        BALL(I%).posi.X = maxx - BALL(I%).rad     END IF     'Rebound in north side     IF BALL(I%).posi.y >= maxy - BALL(I%).rad THEN        BALL(I%).SPEED.y = -(BALL(I%).SPEED.y * Rebound)        BALL(I%).SPEED.X = (5 * BALL(I%).SPEED.X - 2 * effect) / 7        BALL(I%).SPin.z = -BALL(I%).SPEED.X / BALL(I%).rad        IF DONOISE THEN GNOISE 1        'avoiding ball glued to side        BALL(I%).posi.y = maxy - BALL(I%).rad     END IF     'Rebound in the west side     IF BALL(I%).posi.X <= -maxx + BALL(I%).rad THEN        BALL(I%).SPEED.X = -(BALL(I%).SPEED.X * Rebound)        BALL(I%).SPEED.y = (5 * BALL(I%).SPEED.y + 2 * effect) / 7        BALL(I%).SPin.z = BALL(I%).SPEED.y / BALL(I%).rad        IF DONOISE THEN GNOISE 1        'avoiding ball glued to side        BALL(I%).posi.X = -maxx + BALL(I%).rad     END IF     'Rebound in south side     IF BALL(I%).posi.y <= -maxy + BALL(I%).rad THEN        BALL(I%).SPEED.y = -(BALL(I%).SPEED.y * Rebound)        BALL(I%).SPEED.X = (5 * BALL(I%).SPEED.X - 2 * effect) / 7        BALL(I%).SPin.z = -BALL(I%).SPEED.X / BALL(I%).rad        IF DONOISE THEN GNOISE 1        'avoiding ball glued to side        BALL(I%).posi.y = -maxy + BALL(I%).rad     END IF     'checking balls hitting one to another     'each one receives a speed vector opposite to the line joining centers     'and proportional to the masses ratio     FOR j% = I% + 1 TO maxballs         dx = BALL(I%).posi.X - BALL(j%).posi.X         dy = BALL(I%).posi.y - BALL(j%).posi.y         dxy = SQR(dx * dx + dy * dy)         d = BALL(I%).rad + BALL(j%).rad         IF d >= dxy THEN             mr = BALL(I%).mass / BALL(j%).mass             ux = dx / dxy: uy = dy / dxy             'if a ball penetrates the other both get glued for a while             'next two lines avoid this             BALL(I%).posi.X = BALL(j%).posi.X + d * ux             BALL(I%).posi.y = BALL(j%).posi.y + d * uy             cm = ux * (BALL(I%).SPEED.X - BALL(j%).SPEED.X) + uy * (BALL(I%).SPEED.y - BALL(j%).SPEED.y)             cmi = -Rebound * cm / mr             cmj = Rebound * cm * mr             BALL(I%).SPEED.X = cmi * ux + BALL(I%).SPEED.X             BALL(I%).SPEED.y = cmi * uy + BALL(I%).SPEED.y             BALL(j%).SPEED.X = cmj * ux + BALL(j%).SPEED.X             BALL(j%).SPEED.y = cmj * uy + BALL(j%).SPEED.y             BALL(I%).moving = true: BALL(j%).moving = true             IF DONOISE THEN GNOISE 2         END IF     NEXT   NEXTEND SUBAntoni Gual                    Earth Rotation Simulation      agual@eic.ictnet.es            12-01-01 (  :  )       QB, Qbasic, PDS        256  16774    Earth.bas   '>>> Page 1 of EARTH.ZIP begins here. TYPE:BINAA TLEN:11810'-------------------------------------------------------------'                  INSTRUCTIONS FOR DECODING'If there are multiple parts to this file, merge them into one'file using  COPY PART1.EXT+PART2.EXT FILENAME.EXT  Remove all'message header and footer information (everything outside the'">>> Page x of..." lines),  load the result into your version'of Basic (QBASIC, QuickBASIC, etc.) then RUN it. The original'file will be decoded into the current directory on your disk.'-------------------------------------------------------------DEFINT A-Z:DIM SHARED K,S,B&:V1 'Created by PostIt! 7.4SUB V1:OPEN "O",1,"EARTH.ZIP",4^6:?STRING$(50,177);U"%up()%9%'%#-%pwe&Po+8+m/E.%%za%%%0%I%%F>2A;3XIWS?2kGfJFB(QnEfP#U"ykid%5VWEWAwt[%%%I2$_F'%1gEC;/.*Ai*'Z+*%eg4QQ(m)W\*#;SSx%OpWH^fU"5kYEr%ytrugtcpu3tnPdqtF4/6U7kFXQRH;mN88k(0J]j:%'qXz63d(zh6LlGrlU"XWrW%Z<aJb8ruJp]7dcr<tGA8mgnifXt>k8tu0C8ve*tMf8.dr$ux_[PtM$[PlxU"Vb8Zx4R>QwtZNiin%8rrnL8WpJR>lu:bhsbrWptmu8xGJ04^j6xN2uhv7$QJwrLU"sdif,bLx&xWw;xTnK^gtY>ov^Zpv<MO\jZfVJKx)r7G0xt?8TpW4MHvW$BUDGGCU"hUc4<evrgEhtEVO8FYL0fIsctL7W$2YBN=jjL\NPX[YkVO*V<:5[>d,Wz>Gq%OpU"qm2Mh&(d2H'&4k;TRsRslVrwZ)hx3'xgk^ig4UVJ$lmniY#_bs$7gv3GF*mbZ.AU"tkz6[LutVMNZ'ns/Zv?T\QVi\%?/g]-gWx)rZ5iS9q.F3,?qh-#u4VHob';b$=^U"Bm(5v^ybac[y6HA2:$o0$'rRR90R:I,%zepxbS]cGslZEdsyYz&PuKokJ2L,R^[U"Q;lo\O?ew[c'.Nqduj<V(OjObSCC\L.SoLHn1a>Ea]9opsB_TogB370N+GkZT$LU"tMWSt_o&Yv:ogP<LPog_PrI1Xmc(Cc^O8rO,[*Pg:,7CX:Ej6w57qYa1[q/>2kZU"<w&7YA=IJ'%B836-uM5oL$uhq8KXnKO284hxd,xZZ7#k.c\RoPZu)tUcR;rN%OaU"dMLpKu]3?+bVYJ.y>+?R,h&IVrTFJE1o+A19CZOE<tOPdvsnwWe>6\\VQgol<C$U")*Y\OiUFp-2e0I&<'F>95kKbZLNduWXh39%Wr5NXz+j]E#MYQ.;AFPT(D]1X<#wU"qh*2kuYS+nI5Ny%sUBSTZn*k(N]i7C<7J*</zA77f31fVZN?.k,fC6dla0-I5h.U"*\i-lr_RZC'Jd.U<ti/RCb^p4,.V%fdb6+P_+B<<ewcJbn:ax5PTHkIek3+<+XEU"18z(r\zU<SS?'Rk6fDN?.HoDohLaVos/dpofELtH&X8v;g>8:J.&3WSfIGd'2AzU"C5FvBgh)&uAYP?[o_;04C_'^8eK&W&y<cCe0&rS0tAX%Efmf$7narDlBlxFW<$+U"pJDlJbK&j/8Q3m%UYCurVVWJD%TVJf6fOA=\dGA3Pm=K)A.#e/\CfB12[<k8m<#U"?<fIf/IXypO-J=FOtpAHb-]euG:^%53fYv//r1yU::ONy;r:#+%[=EPa9bFfY<\U"TW\+yg:8bPb&FS;(&j-XDNR/H98CPlhm_=O:0ff;Um&gfhgq9AY$n'ldrL/UQuiU"vEsS,*)?i0<J,aLMz[zh/r,0p_xU_5&cAwZn]S58Q5Rn3N%63;YQu'#aaoyg8^pU":^$VlRaQgjZ#3pN^g2TVTE1d,78fvBx05#z'61ke/?_mko+)[.^E40$E*lvx4K8U">w4Ka578mN\6SAHw*c.g;6%P?.QJ.;4C7dj'>V)pPd%1)d&zBZOM#\?r$9ADE$oU"R5faPrsU)gAyNt\:=/B:JGSxSUvKbeP4\8T/UsvbXS>ey=CVQ[C\<X?]:GbFst-U"-Z%tL_L%('8%RZ%Xaf4_^nj#Xa/_#s7)C%+ob_9-OPT3Fa?8sX(+G7?h=oPcCNFU"w^sc=dCXh.xs+0XUGp2.(]Xx+3:MAI5?x*M,x]am[xT5JOOK_;hQ/,Y$O\kYZ1cU"EDQ\+9]PP5+ZbS\mE9]f$p/mPN=)+2F7qOV+5Ha6u5K\r/<D7SPF6qkC(nxb*/.U"-+;ULkg50a)PluJx=PRfrnoD9IUVp]AQ_.e2k)a<majf0;C]&o_u\)lApduNi7EU"cnAD[-E$_$nw17Lt9$ZUYf'K5GRQ[OfDU:M'1>&5T197O0_i:rl2Y#RYK$Zj.JiU"-efwv%J)c?yL9+xDfBw*2s/YH'm^QHL[1dRI4#g+?c7(G)8jaI<ZB;OfWWF_jCFU"V;bGLZZ9.Dt',1*h/P?j/l$SSex,C.ce0VUvD^;<iEJQUEDbR2/c#-CGfaOAybFU"MUE)2'1Lk\Ja$I_mI+q;,<T\mmBCPx+g,DJ:OY;d,)&rkmF?/z:Iwi3d.Dy4>Y>U"Lue<:jJ'TEf=]Ag<&9:Qp^%o>*NbaKJEnpnS/l;P>?E&DH06/_Te0sm69\bek3;U"PVu*Q/S7_y^2o6H>,\4//h1''e-NMujqAqCGUD'#dBf6UBoE(kJEyHd7kz0&aY5U"zdCgssX8;iRp+zK*VE**:o#Rq3cu.m4#ILDq8l91TEJMvmQ<aSIgG?[<GB;YeY8U".kYG&.kqQ^paFKn\Fjcm?eE981Ef;hhu^,1M,u?TUJSVFjgUF7ze?p'IBMBZoY2U"l*D_j>3Ajtz.VNbX>tSQP9.ga&O&sW]4:&_Z1v2-Y.b0^(b#Ej)4(MZ*KEu(_EHU"RfoGR<1A]%ea;/d.sla%%W=\E3A&MKQ/KmE3-bjQUzkjV[vJh:saAhk5U5G:0,_U"d=u\=TS]j-N+Ij-hb.=)I9$xCOy]&sSLU-^TYNgT#-Q/>M5KZrneF%Dc$qtqUt/U"Eh4:jtP,&SXF3AzdF+F.S?#z_v'P'5zA&O%xtK]XROCSac<f4(ceDCdH\#FVCP_U"KrQ+l+m%>\:5,e8T]E5q.:?aXIlgdes>Cv?R^9C^J^;qfI0H-AZlG(LATxrUwznU"t$nf-9/_5&iU*_1UGg0ET$Q'HS)xS%K(EI7C[aw%Pt$+6=AF,c*XHs^R\Y:)XTMU"E?Uh3mx-DQpKUP$_HOCeWF<j^.CA[juRX#86Jd>XYfpDXUeAYX]4'A.eu3IQ1OZU"(=M7D(yQyqAzOs2=JN:b*M'jg9Sm/ENPx\)h?WFT(^A,SERE^c0peqmZN^?9m9%U"m*3',4gIfEBg+5]X.(:TME*<IOn4]RB.^2^;l>QY*R.:d_US7%52F'[XsSUu+.-U"Zt=[aqly^iR*uW4h4CWBk;'2$;z[Acar&YHcE,wdxuT:k84xfS=I_VL,A'-+_BxU"]GV;*0<T/_>R2Ru:$JYui/yWAPtsOEhkPIw1#k/uh--s1.,x=rkl2o;TMP]RxujU"?..O)+yGk.^9<$c?iq)QsJe-*1.o0kyMXfF&b)pICA8d0T[4Y7D_[+x3cE4uOz'U"LjS(4Ok#xGEl^5anyM%_.IF&i2gQAKEQZcRS?0e=*mJ5-uYL)j(]V4miiUMh<H0U"tq%aftF&(Mj=_^rz68ySO<G8'xs;j_Zp^*lpKYM]Na2s/P6FiQCPn;x>g>qgYUZU"?Or:Pd=fy$g]YCbqr)$k.:6]r35UW_Y=ojZ>ODsIm($1]=clrZ=[h-8L*kFI,A6U"gECrH#O1Z/3,Uc[:m]H&L<nVAXbeV9MeKHx^Z[AKOW$13X/clc+nl6I))X.-qDOU"gW0iFljSJQ;dMmo&1W,$$*&koj=Bd4*]AWf:H;%FScyGO,T^\'xld%((P2>TN)1U"M1j/v+>GU?-b_A(8i$KgRY(^'[e0.c>LM,_GYFk.[N);M)InMrdIC4Z\0A-JmUzU"h1W%w+#7*lCNrEJ-6=jNEe(+T2M')=B3bOTOk#PTz\A2+X=,T>i+C+TnoIZ+UVCU"oqOzGhJjxGfsD$(^n%kg0,Z,/\XX1JKBQu#_9J5%md+-h#MS5&YHK-(wWy(gj0UU"7=MjWl,mbCa9(?TUH=)2CADtnO>>_C58G6&7?6kS2(v=P5N*.*W]khy<D?,K0\QU"ofQ2P0QJCRVi;uo)$s7oF/FDwPQp1Jzk4?Oi'uVH<R'KI+kSNcqDpTu&/0WZ9Y'U"RX)uHc.ZVG]5eY4\iq=NTdr&:,SWMl%1cv*8Uot/F.av_6<d6-Xx\V.KD5E-4HrU"0'*(OHS4$3OHLUrQ2$&pujCb?GycpRkP6To9s$8RT/3'q<fgD9B2UkQ[qfe^1;>U"W2.#rHoR;.8-4dNPJt*.#ugjTIg/:iRBQ>VOxEjFp=_<o9OE_&/cM*mc2l2>wb?U"XjT7c^$IG2Dqr)N%Un:H+E2[[icnpRJfY:Or:H/$%_pjfmFe.GQak>bLgd^BeaRU"n*8loe811Q1<oMJOnBFyb^AK,O]e)[<hT;Br/;g1B<vZVRo*4T>ohBqzZhPoOrbU"aqw7npd2-M:tRsgY(5NA9FVQ=Fqb7w:(HVB'vNaZ&c)RU%_saPtykn^kuku3[e1U"h1r>kv/[<eA/s\f/8>VFYLh]4EFA-e2#6C1/V_#H0&2^kl&s-N5=%bI<Iam$>I/U".MsD=El[)_7'ySCRVdqQo'_qFF<h'tO:Q>]:<X'Q'>RI*92[_Q\Zp4s(L(-6]4DU"7e:)KtD+LqL5jEV+N9h7^(gEz78nywyCFbr].YEe%Fs:y&0A;0#WotQq#*cvT$mU"M#=1<5R/-sYP(5^S/1bKSje(\QxWH&k)x<Nls.8qk>u47cjh.P>1y=N+Ax9>nRMU"uR+&aor_+8iA%SXZkLY%gWFW,0-&XeK;TBFB3lbxLM5*#mBH<6t&.&8LkMU4hO(U"V&Mz;\R+zRG6b\F:i/#pfe)a95y,LFuG]V?[dH=vjqJp<rWZZt?DSP81)LvwCaBU"/7Zv,_UeIM,^9lV>y;;<WqeEM0NX(L_UG(ap]X]5>B)&:SUM*4)Q&]1:x3#R9UGU"B<Gg\0oO?mLb%&mQ$I]xi2CQQ^9K]$Gh;koG2Y<Y-^?F<(<Zl2z,jsXn'<j;FAzU"S?s#;(bE;%t(9MhFLv5k?)j?rv12[GYlw[B^^^0aGFH);H/%#]a;;i[fm.V.4Y3U"62(.P:yy_Pp9VE7(&USS:S$OkSh[rf-cKP\O)L^+Ed?[SRLIsE^#$Er:&_,jkX#U"yStVi?1MSik\#)Fo5h-<,'dS/Rcp-0&CWE:=(8n8]d#y->[q>;D>d(9QCoSXMPTU"RpsQq4^lJNaS1JPShT2B3f9QcD*lBF0hYx/b5Jh.Imi1%0Efm8K1P,6M)M%BksbU"OeVc2n=8_GuIh?,tLuZ6^17ttJqbQ(jC3TW9dpTCinW*C;O4A0]Pi#Fl7#55P/xU"^/,-o(?NOLSah=c+FiM2h/q9m>B%4fK9)-Qs8[IGPWYqCwgm+?nEM]'7UQap]aoU"3K%'ULKn3Mf77kkV_Q84IY0%Y#2T4LP/:2cFzYGx_I?:[26h.1AT+H_\\v:'[>ZU"k3jNkoS'5y]S.m8m&i*D:+RL=Vp])+nXAax\T+0m9IVqnCJXm^KYBm>q%h4TS_'U"UiXXRj-LX/b'U.:,%5w'dYtE76)3hb#=5.LfU\DG3x0ks>*8TP9u>%4iAu[1M1rU"]T<*sU+C[F6NlVMJ17IUEJV%aEGZC&yR5jn*]i7$wP]buZRw[7,0#?_+('*;u1hU"d+vpPx(hbcGkn.0mnk]I(GjD1tFORvj?=o'gs5<7vgO<ZqRG^XRCq%IRpYt8R9&U"LmFTw[FH#Mk,Bw^\,O+9bQK8<00r;1+p5uD4Ot%FbplN4hZr*bb+KO,3o9rd2o9U"<bO7$kO',sXM9q,uc8S9<VndX%oMf(TG^<d3PHa%e)(b7i+#yeKN)xmOUeR*]l(U"qE^5&AUB/LH:Y^8o?]\.&yRQ[X]HqM.9.X1J8TA9o;2,#Q2g0Od)3I\mJ8-exX&U"X_/pugL0XGnF'Z,DF.6H/e3Q+\mn2.1Rn&C].3FkV=*7\_UPiFq/Q%><'U#'g8jU"osgb8&,]e.SpXV;_[74<Vy/jE24w3:U\R07wTb>#t=Fpj6+I2ebRp9sptc3;=D:U"_Y)D1;b<E5<U$V75jevy]dp%#4;UyA15xlsok2l2DyC_1e[>hXJ<Y5PFVlPu_2-U":8_S.3.J;CHe-f'ife2yl3Ha3.4k*l'F-G>IL<hqqfC2+0Aiad*N=MU9yn/x0kWU"J\KA'mw670xl(G[Mf+]?CIG9pTZ?sa2q)RuHkQ-?JjU90lrWx,g#Rr/#Hku)p%lU"wbePP?)]);)Hw%uX*:oZ#Xl/W3cquf:]pWQls<UQm;XbconysoBREioU.FJP8%\U"8WGHpIm\AM%Rhm,]1N5?0Iz>)%c-0XgX:>4DQH_X/\U%9KBy)YH1;VOsOQSbXbHU"u-ew,)VVwL?kE*Qn0)<+]Wf&\-9iL[evv1*L=>1R4oHYV&'YA:d8x,;LfdV_,zJU"JMe0A5vDPI,D3K]HkbQ99e%7RhL#NOfaT)X'PtCJ9Uduj4-LAi477p\K4G/SB&TU"os%^Ek8-[O0W?zbURW0)<%9dd>ydJQFQ]L>RB2F7a]bzVI8+U/5J1z0wg4,rB_RU"lR\PheMZpPIQ2(?\am3[dd,*>,e+CsESk+<[%e3(7Emz\d:)&t178rEj[uxR;FAU"<gIgmgDbG%(j?&SMpt51u?gJ&v=m<LJd:'EaesNaS*DFm)kd=F=7If[jR.Y=$g4U"H\DJUoopG])%WWTK9hp8i8kjE/3AQLjk/Q)X0Ck;[bGo'BYU(e'9U+yFF8+w.uIU"KGVUQVP/Xj7gK+4,1ki)l>F=/g8k3Wy.N&rx(=C;/,o$fjA'K6iX/?mA.6pBC>AU"xY(BobW\Gk4i7]LTojFn/6\mp5i><FW-bf&BXDWNS^dXgkW?NY?<&4E_DeUEjKCU"SDJWQcD%tlp42;'F:-4e7T-phg,t<YMGp8f+,E$b(Vy=2'%[pSR,;XfU2dNqY8jU"OD8<70[&h=SRS%A.+q&$C:#che-%9CG0($qrgCi.Y+=.cBe[,y]>rATixD,]4LpU"AgCX#snD)4Z;./of?,3cA[bL76d=^.dM<##1+mihV5d7/_V5%kIOZO;)KQ.z[lsU"N23VZ+)kv$aS11_?7_FK3[9s7J\SFu$1>([b.m9vd5Z2<o$bZOqHg0Ak:<4S=>pU"^1#>(?.ax8j1Y##84]o6]A$$qbuM^LE#Qj31,l/GCK#DK>)K\HYi:P?Gwd'^p.mU"X68]5kr2gphnOpEv;XA^(L;PH?07s-PSS?MbI1]zsIo/xG,&UM[F3dqO9E#1'kbU"Sk')3Z<Q=eY+e6G5ZAFuCbIEjO-0,UTn]C<P(KZZ'28c4]?:d4NzB#Hn%7-C,]xU"kh?1cH%SEJo\CdAI)F$LVlr[EO$+h>_3#poMWfkC0Bbiw\1r)sE.1f=HIXU3B9sU"mJP__/mr$;&XQ+\lP8_>O5&O.##DzCm3VucTM*WA$nQ_+;qm&pD,RdS<-g^FbD^U"1:g;WD\cR>;X3q'tAZ7SKI4fo]l>p\y5SMjk*+(Jg#,TQ=$s-tY*eP\9RqgtsF$U"G>9m+#F./vjUtXaEO>V0a5cT0%C(a55fXKHCZ-S)ZND-R3D3-Rl<'^M#nmgMr;nU"yn2#/kbA864eF94#-*Q0V(m;p1e'ZT,m4Ng^iwZ+E8,71RSi&9]iUa)bp8#fq?tU"?FG4t8'I<d]a(\iYTQc67wAv=F0Dzy.$9dUa;:Fu;]Ce,&y#g<SmW\raM'[e'VjU"%+iE4(\RUmC,Lz=iJBbzF\O*<d<_KwlFa$iX;YW-Zec;;w(2c1dDVw\4asj.U#MU"Z[gDR>:CKDP(UG<&:#K*P?Sig%.2PO&dSr_5krlislC6Ow.5l0Q-Z*eRnM[bKoNU"m(y&\F/,f1%&pE3f?5Jj:jr97\Xhx]i3.6^zk4S-'%0Sot'eCE,ph$#BJw/c2ifU"A9;P=-6G8Y6-6<F;FsSuYClM3:?\2W4Y\Pc\o34x_9#Si5Enj2i]+?JOblYkFwOU"3ZDBFVja[kY-)Fj^%+?X<+h5+gB=Gx;a4REO2OH0av\Ho4OLvaB(%,paME\e96YU"%IW$%(fUSbD3\*G&VG#_)$Tq0R?%S5dTE\]-WE;\+s/1<6NZD3PwsL4I\l^GOD<U"OAp*9)wu5e]RM,Y#Tr%19h#S^=qqKNk)4DKnpE4F7;2X)\3emdDy[KER=wuXDV/U"$3?Z/c:X:goFi*f(jw]C$h$(^'sgDSH/*$BpJP%5JVW5,(TjoRnGy)C/VrcalHbU"uXK)*rG-bFm1E735+^d6/aHX:K29fg:V:kHp[eX<sePR/pBcodQxXUm5Ro4GCTBU"6C%/<?//_:_7\J,ORQFarw=M)AbBK0Tntw-GRmb0YN&U#?gj/,MEQiE8T=,F8*GU"Rwt$NhM+.Bk<RWfkUf(S3PmBZV#jQoLQ9]h-sQRqon\ku,5A1ZETn)</]t58;21U"vTG,U,UW6HP6G:^n$Tt8URh2o9E2M+AobECewaYIxBEJ9l4BO?+,)+96_bh.[IVU"H<4%e8Cq/DkAXi.3lN>8F,dQ1/Yp_TW2bdw28/\>c9:B,>S0,=D1=L/fX,6:(09U"O;bO\5F:,_/V0NJ'c37\:aErW7';O08Si1,$4EoO&O[M^(u&TI6psp:wMOUL_BfU"'5h+o)\K_?*Rg#uHWUg>Y;YOnM1<.yP=OX/]8e7++kI%S1rd0at%vr6NkCdPG.^U"OX&VMsWr<<]U,sA7g/nbIS7r=C.Bs#I/2H&Plb/#$.%s4Os:Mn0l8P.CU0tFAC_U"_?:4>]7*i_X5\AF0-:5fxmQ*FM-i,l'KnLo),S>8i\+^9iCZ-LzH0T:WQ;T[\kGU"Qd$*x<#bgyKJuzI0]kt:LRT-BaZL9:h%EAN2K;yqLVxz]iiTvf%OcCWG=l_xX&7U"0ajR8ep$RfQ;7twmRr+?]cA/=oQ3%7NJ+k:g(mcR[(>a?QE(TSEtwm--_*^SZ>0U"id>gq);s*+lMieCSG2[ygxXC5HV##Oodk2eM]zqtVhQ=H,i5xH\<qii>%J5US.oU"[X/;3T2b;jy*:vA>?P]R<dE($puJ:I#w>v&UXc?ePxSnQ6xKG#HMpH$JbndPKu?U";Ce7i.z?+o-I)IUa$AnH_dHr=A;a<956;'22OMfM*jkWKaOS#R0L)/6NSO[EXO9U"d*'NGjU]5T?mWFtu40BJ/Bdgp'h=#gaW#N?5C)b^s;>aQEdt)n]my(WPsz1rG6)U"D4a+(tP^k,Rv5i2aqw(>ZYH/nK+;$h&e51hygL7*<v0byfZfi(ht:&g,v.<h=6AU"C-,0k#ErVbLH(7ua6*Okm'nO??CvQtSXva2(r:O;]^8FDS*4l'_EbQL%z=.D'uVU"b0AHNp-PYAEmV^#^62+<P].0wP#9r9Cs87IWck:a:(6Rx2N7qr$4Mp]ST)C)IV#U",I%AiGXbO<5V_Rh%CzkM^SnxB/Z/nMFgYLmpPTc-5D+?-v2Y0U(QxkLQd-s0)TBU"r^D>I=3'BG[B5$B?aclMH:sDwx]bV3A%lmYqen9\p%sbxgf1+h:E$;-/)s)2a=nU"(LADvoAS\:oc4VPQRr#UqcVmuHL%3.PU$;.r+A*)[&J,svqUB==YS9m?\c$)'&dU"L9>sY7eC<$RPTEJ8+6GMB=Cdvm)>hABF8)SmrRr+83t5(HIPHHrZl3$mc8+J^BbU"(YPnZXh*ws5,s])&(ChR6XucQZ.TTB3)O^WWjFz5:m5bY($Jz-(eZvd[:QOSM2?U"4<'hf'%KV.mo5Q;>3_BcwVu\W3=Y\fr(NInOV1^<&G1$mda7^Tl5WT^,>dX'BJ5U"-uaq*StSTh'OgD>2skTB&lpt0P8t*N)H.'YSek9JJrV==EA-k#FV03EZb_Jr4rvU"Cwiq%-(<l0Z=weivZf9LDB+B69re2F3*n8xehZg-a<B>iPA]7<U^uWl-QjjB?fXU",<Uu[:cFtH<?lGP=$x:\t&+wi'BYp_AUt]S_vd5?%dxnkk6Nw<./q,hRV_Ba+OlU"nz^I(BbEg9lzXHLROiEPbSEc0<Mjm+f2W'F)cKhCd#l.\<#VVod0b-wQP:QY5dnU"mz^HZ[tv5Cw>>)<c\(.I8M3weFy,$-$D+'.+w#b&OGW2f9D'pU&tV8LC?Kkb?0dU"jeV9^l5+lFJfV=MQUVzkEG%QI>3hxtg]SREF-$c]hXg%[0fwOB$M4W$H&^c#F<1U"3PB;4shS5[$\f)crAa]iLYvo(Sxiu&rqq7%]4m.3oK<Ap^#5aptEb/la.uCw7E0U"NScQBLx?xwa,<b$uCphh*sVXUARAlM6Nf;[gIGuY0:A00n8sVN<#/0Hkd9Z=W3_U".J(5n^g\>(4t=R7u8Y]N8clBGa\l^F=cVQ&GWiVDnhooTHh?bpv9$wmdi]$T_roU"b2&lE7[a?_\^;^3Qk;_LxVvG+T<v]oglrrXsPXY3uRkq>HHL29lqTSQu?2m]0<kU"Zctws=QdrRoQittnHgotFWt&ueG:;z*Ew]lupF%G<2?=NcigV,x/1<MQjJ<?e#FU"Qv%s^ED$+Ikx<bMFDT[ac_w:SW8\J$Dl?mLBcwn'1qZS]Xp^=?evQ7jTO^ld+brU"B$niWn?vHDt85,gAp;QG0=<GXIThue8DaCX(T/-7nn*TkrAn$:rlbVwCL01iP3cU"3TlT,hGiENMq-lD2Z'Qb0D:8EV[%1_#k9O7O_aPlY(4Qu+OGku-T6l)-%lIv3PbU"L/$jh[j>H>MMXvfG$AsAM\#hP&pV,3xY.xAW,^8X1lf5X%Z=Rp-RHXlfgF\b;=EU"a7UPiE=lZn_d]/^G>vF1btLtB\QRXQ1;_8;q]X&oP3H&Td>Q8R2YGj$68qbiUZ5U"gsvc4l4w]q(PH-8kHU^DMRaYFZ#NoX&]FE\oyV]$4/tZVMxYf=hOUo(c3j1$.n2U"uq&]PkNbQ8]u5(vKcWplZuxovths0xk0l^wshrvxlKubXZ&xjNsXxu8ZShxMlrTU"Nmp\Md(lxFNosTxb8rs\xwZt8l>kNh^wWir(.H8qD.6xbndNrzNNunhx\)NN&u%U"p()9%%'%-C%)0BXPvIu(Ze1%(%uC%%%.%%%%jfw%ymSgRfx&(;0BSmO4wmhKu,tU"<^7b%:D_s2BQf6cgJUNT+Vo>h='WT+;Z[=Q[n</mPW8^-:n2-62(447UN4a%z\dU"CnD5xLG=fU:81Juk_S/Pln;0'te$Q>#NcI\OJr#Iun(T>*cUQXN;w1Gy%OuoZ:bU"6YJZ.nNSFVLMp?Q\vdcKi&iTMDuh$%McSsQR)QBr&qf=d_IvVnIkngYepvWrp]PU"1KCTKf+f0\?sDDepN\T0?2d&yi,=kjuvUjYU/=rpFdV8\Rt##IjiOlZF>l%?qfLU"I[5=Q;tRmmP#xN2z:WH(U]N1fuZCp0<Mu/s0&R]FgaG%6\kL9.sHFk;$A#V9Hq5U"MdswAQkX^2bsqSAn7l0Xr#yoxzu+EcNp:NEU\6JQBuKl6bt2kth&sK8ZsoC+6dfU"m^g8FjZa$j5]6tG'M1m-v,29$Pk7;)IBHjDF42:g0=o]cRs5+:GS>Ib/TwdHy&iU"I-ZAh$G7$jRh\jQ+NFhTdmWT6:UW.7BFlZIj;Kh$Wt-%?0)Us\]<flZ='5IiN(;U"Es0YY^uBO0-EY5GQl#NvgEmeaZtOUMx-?\PslaNll\PQex$hv1<&BB'p^+gqUD.U"P9+S5f^S^NCXI])Hu10YZ3OfpZ\Rd4DVgUm:frM7%FrSG3P0TP.7T*5vR8as]MxU"sG$[lF7AS$A<4TFq<d:0^t7p3Ms.Vjv)7Dq;HUgr$6[b#6%l#D<6/>[HqF8;<M)U"P3\9x-xHtnX>rN?-C3+CVDC^CR5$8wl^v>^k9cgr%Ro=<$ZirM;o39v&FbnIt.+U"hL8.V.y\Rz;[%b1(tV,UG,%7g#[wO_VWX<hk1QP#p%-[<qRMl:k#33PucMemRxVU"YW)cN)vkEr)8&-hKGJiSw%Vx;LH$:FF>)k0aakg&'4)9ts]Z]pE(;vhHthfGWiMU"?T$/(V28.-bZ&CJRNNHE#yhHj)H'MpCJjU,FPYDo&-7[=V79m]fTY-joh7I=H4sU"3=/[6en\c.4j($blSonsF-)]RR&2Zb^^a_4%?jX?h6Xr320&ope0$)/3*;37Su)U"StmlU&&DsUk#.\9>08=O7YNmw*#J8=v?_$1RVhaD)c6/9VY1c7n_&FW\J7,w>ilU"Z(c]CA>44o>J.9Kl23Ugrh39_p&;\iZYwdO'%/Tv^IpQK,LX>AgCCIF6?9PnqZ3U"PL->gH:B#mk:VI%dAZrNZPft+aSM,WH2BRuXBbDf<S(LU0%21CG%a(*V^kj*7FuU"722r/xZhy.#Y4o90wR13B5y:OX+2G1rb(Da_FH.afm-$FCGM#,V7I:9q%)S^'egU"Tskp/p>tv0hI7:*Y=VX*z'ZBE4t/X&W:(Hezrb'VIYG#%mZnI64KP+<l63Gn(%vU"*pV]]Sh&aeE^g^.hhiC;9K=LUTm$J3gOdH9)+O\G6rU,$Sw/1>CD1&Jyi,JK9EvU"]PL$LthS2Z9<(;PGhFV['20CPG&qzJYlFRg8;13;_b,uxS^,DueaUlj%$(Ox9cZU".2,?9;CBrEOd)rQ3I=U\a/V1jdb2[8d?.slkQJGF7b%>tUbLs_vO%81OPWWVFm$U"*eLWIn94^[ha%F7oy7)+-Yp>Qw90'3'9He_&$<$EE1#jU=r%3;\iF_3jXe-i)'vU".5-i5X2KBr>=5.Fs*pb*kTWHlnod6ii4-,MEM%bR)sXjdO&86A=/1XvcqVt9:PkU"SUTj2rLhi,2s<I'jww$$O%IV02.SsFM1lgIiX<Y1M__QJY.vf]i^;.K$t%iUxv^U"D9:*9^nbmcm'CE^&vQbn>M;80nG&CA&nFdBGTlZr1Q&L'19IK0>a+)tD#XN[H_kU"F0H&>Fy,pKOfI>9J+TvE%m'2Qgv(9a$?#&<8xnImrg+A>E/;x3B-PTK;Y'qHRoOU"f11FpcP6R9n6F]Rnj8#SGXq9DYB37?F;WZ6E,sqK<2buX^$m8+y_?y_f0K)AyT3U"qlj*>j7UiTLp%^w0'?bd;hhg03eFt.42REV_OsP9Fdd$N6RN-E#.NMv85.aI,&7U"TUS,E4EpVe0:++0e'^>ao8S[^[:#tuYQMd#w=)Xo.*xbS1'LCg(cnoIG_p(1KJBEND SUBSUB V2U"34[oxgNAtiRkjZzFIZGC/vHqbIB6,,&gsm[jJFUW:&<u(VNx$l7G)^:322>&I1]U"diVP^O\+rbt;XHiQ\,m2G2$273-najo\0R'rht,6tQ)4uV**+NQ*G)Kq2fH21/1U"1/-y<Jt5=77*MG_1?dv''Gs'eH;KnKNcA]%H<Huk:'q2=/?Wm]+lS7%srSe)I;\U"c)Ekca0,VoTJ.v5LqC?wf=f4JfZG4>&_oohFpkvLghMqVWoPf4dlM.01hQq;<k+U"whm?-m?%a0b[.HB=aI9lwevZ4(lg7S2Y52B3-<h,63baWi1$2EPqs'kVOlhc\;6U"#1,&Z8.A1V4;RyTQCMm3C3t2ZR[UTKYy^B,4hi+);UbBV*n)ReF0;'d&OI9;*&4U";xaS&r'6?6c&B?O\YcUnThFDEf8M*:CW#)BIJCiaaqT\am85.QG9r0giJCEXZd&U"Wo=]]F&oGOZ9r5\Bs2vGEPo2NRsfdXyaF-TXo<lGfO16\xur3lo03uO8b^<>x5UU"S^n3p6JN)wY7W0i5ptk^3.'bft%q7)%=.wE[D>aBN?\uwI\44LW/-K.[IF8a2VnU"A<OVAmrOgYNrZ?Ur,bA/nT8oW#=XHEiPmpoiVF?$duOL?OQ#DdDm:u?dfr=L*D8U"\nDQ*pbfEnhs'7fr8g&b1;y3MVm-iziNidMYDTL#V0JsC6g&cDcdq[:l)*#s,A>U"0ud7ka0FiLL#lQ%#T1GF^r,DaC:DEvie#RBFuJ0Xl*lj+.hL5>9(_eWx>f#[T1DU"Bjns=wkoqf\-h[%(\Kdj$_,Slv#lR1qQbF-h#KIQ28C8o+-/9ID2wOoFm'^roZlU"]\Ob^vQcJMi&6$b&4^jaUkljJZ)nCAk^AY&0JGu>[ms7vA2GPMI-Yd[DCGEU5Q8U"-$']Q\p;lI[d$,qO>l<wM/riB:iaeLiXF?;&-j8Oao6Hgg)<QI+<9K+<I\ji,J#U"3r;8l1d6HdH*Bm%g7mB+$1JSj]FD/iFKtOUZx#*(u9)>X-EK*Sr$tl,ASxlB2u(U"pulqBIiUK-kRe+QY$e82M3;l\6=t(oLa<7oF:tj6#TQLo/F_K:ipj3t'mL1^o%*U"]a6O;#PRMEv\C9i$I:XQfO8v?P1fxPRh?%gzLZDiF=h7hS2>[epuc%NuHPsWuHjU"2EaQ,qZ*$ORbR>_GTZfhmA>hE*j5Y24WTGqZdT9-0l]OsL;:(&'etfYuHRd$gZ%U"L$EevH[nXq#pK$RpHWYwHTi/G&RGsp+r5<X-8j#F3\QSgGj;tl_2surfn4(G#6bU"FdO7\F%rM#3<Q1/8Tm&.B3obFYa_S1uw?m_9K'm#c00a=Dgebn&:Rwfm\j\PmL*U"q^6^_aFsxL'WMgeQ\V.vA&IKHiuFS8(kLh$)7I\Kwd[j,;G#(cX#AzF_9-8NiDuU"mw=A^gT\=_UmQBXIq#++[8\rg#>#7l4>aFVPhTw;nHgcIhfsj_3#b$OZk$$]jgtU"R]k3w,F/?9Ia?vcna,GbmBQ31X/t)\<E(6qh_k;?IX<:[C0ss=/1/'qO1hPLHp\U"(qQ/b_[c4>jDRa\8Hn9XO/BQc2>)$\+DB4L=&O%AKRBlWr/QZ3IG=2S,c&mHnN_U"9oI6/(p>GwLlLZ%KB9Bm]o\puWPo[ClXY?X=EXgkakM9HRxTPXYj$L5?(<CEQ9nU"Du>\NRUiR\5\+z'GqGDG:+VYf:*:.:Nn0jgGPe0ZK\et9FvrbIusAE,y1beX]-OU"xwB2Yq3Oj^vosXN]QEV_#9=F[w#kR']dU3U2rJ9<<gWrW5/Ep:5*^.QB&%LI^2;U"X$o]spA]3\rbxvXZ]RfabPjffV-:gmtf[Iv4SF7ThVu^'C4$LsdG.m,\+f4.&pxU"d=s];,2-KvSHc9KZp#t'c8a9^7w*?Z]gWltR01Usc7;4[BD(.Pg=+;JjfK0N1VsU"6g'je2qseDl2^$D$uWxQjZZ4&MWFk2#w^[-CTzVzK6bq(VB$4(Jh6o98oT./oCKU"D[u^HmO<G(4gEg*z=QL+$aR9lqE$B^:'GF'T.?[:x&%up&'%9%9%%'%-%1pw&P5U"o++m'/E%%&za%%%0%%%%%%%%%%%E%*/P%%I%%F>2A;3XIWS?2&Gup&%'9%9%%'%U"-C%)0BXPvIu(Ze1%(%uC%%%.%%%%%%%%%&%Ej%/PX%E%%j%fwym%Sgfx%up*+%%U"%%%%'%'%&?%%%&kR%%%%%END SUBV2CLOSE:IF S=167AND B&=11810THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\11810,219);:END SUB'>>> Page 1 of EARTH.ZIP ends here. Last page. TCHK:167Mike                           Sonic Scroll in QB             info@pcf1ca.com                03-16-20 (  :  )       QB,Qbasic,PDS          115  7514     Sonic.bas   '>>> Page 1 of SONIC.ZIP begins here. TYPE:BINAA TLEN:4863'-------------------------------------------------------------'                  INSTRUCTIONS FOR DECODING'If there are multiple parts to this file, merge them into one'file using  COPY PART1.EXT+PART2.EXT FILENAME.EXT  Remove all'message header and footer information (everything outside the'">>> Page x of..." lines),  load the result into your version'of Basic (QBASIC, QuickBASIC, etc.) then RUN it. The original'file will be decoded into the current directory on your disk.'-------------------------------------------------------------deflng A-Z:DIM SHARED K,S,B&:V1 'Created by PostIt! 7.4SUB V1:OPEN "O",1,"SONIC.ZIP",4^6:?STRING$(50,177);U"%up()%9%%%#-%r[.K%#y2*+7'.%%[/%%%0%%%%uf%qjyy%jSqtmljOT-&<]1=)IU"x*3/V*'p^KpXEQ=IZ'l8Bu+;<q7r<NkpKhdNUrX:dU=:iX/thK9+\>zJE.4rrJ(U"DvH4B#hiNCii;MO/]Fw8IglL/deED3w)tA(k\=3oT&2ht9RZFquAQ\DLV[Vc;kUU"TP,sjt,q^lt4ZLnWdop>F17H9Nc14/H6bu':kI$njR_jpx-e<wT]H$y9rcEhBf3U"ZVAtb')+>d([mZ..=f^oQYKrBGXW1eIxIImHl[7h8Fw[Qf?b23_H^Q_I+Q=YKBEU"-l)k2HnL%r8#xCo_Hyz(N_x4t^T&lsH+AK6n8gct3v:4TMZ;AeURs7+L,T4bB,YU"FdH=DZz>AR]Q\*mJjEwJCQphS_&+G#Etc/kz%\AzTR>;qKm^LRq+k-+=a)t$s+hU"h3LBXgT)CFWAIZWefeg?^KBE8bQ+4UZ)E?q'Yesp6tVk%YtHP2,04TuR*o^(Q,mU"J+fSp[$4J^D#6wn_3oaD#4a3_o8QYKT-#.LD%lmJfO?bV)3N4L]LO<HBMAFHYjzU"'9N5zraBOBp4_mn;R]r53#6AffK(V3blaBF.QbXQ+BHgQ$f%bJ]WBLGjk4pmM\MU"2Kr*nNcf;XrAb')r+d([aJdF7Iy7s$js?f%1gsfonQYKB,GBsMJeE\CjWAKB)e7U"SfO?b3_;HWAkuAP0J/M=Frovc/9c^9qjjFX%DT6[tm>l,Wiq>gpia\7pFdRHpW$U"hx/X:B/-gY&[4lXa]k)GD6I)+Kg*xkWU6:#_q$L+wJDkDN?j&Wo2T&tDhB#kXrnU"x%&up(%)9%%%%-%-%eK%HoFxOd%-%%+&O%%-%%%%w%zswS[iqqfkj:$d016U#M6U"m$PBDlkr'4>''Cudx?8d3A+(V;G/0:JF\*I;Y?tgR$kH:l;.lfSa7/nAWX^IMfUU"YNx\.1%nNg0q#K?a4^X$#ancn1tb#.EOk]LR%8q>p0lL9inI0[*r+)CU9G.0j=xU"/I&.ao3R=L)]c[nLLEds5I&u&rE'1J3Qg<MAS-:B&]2B[$CW$0mkA7cD^%Ht35sU"vvRr6o_35]]xqVoo<k%%&ag^(G&c3W*CM78*c;6VnckI#BlwL-^P0\dGT++YBK*U"sd=xu9.zR82*=+Gwas]G=AT5c^9dOFLaI86N)PUzw#Smkj/AiNY)l#uqLKLt[7iU"eH&lMb$rQ1i^LdfowZsBAl_kCAOw,VXKc=K;fpsF#Yo$$((rI5tPb9x;]\p52A0U",N$qhazGwIi,5^mF_Z3RBsq$'8H3]A/R2S5=mdj.1[o-k8/([Z#5-2_j\jiID_GU"rw_DKBbZG+l[QjlX$>MSj^iaFbjcj)fC+N?5p'ZvC]o/w+Tb<;=7?jE8MX1j\^%U"tJw=E[,jBGoe&_-XBf4Gfhu]-e*_;j?sY<>3O*hXh)R;0w0w,..446I[b7lk/FXU"L^,;4k_Pp,rbOff?NHI_Do7,bO\ZC)C]-,fHes,P:TpE)[RbmvqO,buZdCIENSRU"iHJ%5Y;b1-=K4#w#gO\(476]efr(SJ5rDp418g=f[Pb>W6oEj%LR=JB4Q]]4,fnU"sm(2$bw$C-0ouJu(D_C)2IKQ2_wf6Q)OG2)7g(]r'5KYIJ-89dM.[kv6vt^lYm$U"u($YHaV]2U0r4X;VC7.>G0+DCiW_6VtJI^u2Iq]Gqf4HPRk8UFUG*F1Jja/j#5JU"AOx3aD<<L]>lG7:MdDQKn]XI5Y9d;)xb4de,J8a5gC4A%=CgA-&E+teYF2_<ACGU"K7]>CN*fK^g/o9QNNB8wuK1Uek/i,Oclo'6?b$bTq%MJn-,$Q#.\Pg^DkhK,r_xU"j(-/=3F\p,Zb_+EVA+,uVAk$s=3.hjRvd'_%lBT0l4H(b%UjLh.#g]E_k9S^gORU"_c0fAL$(7#KU<vEXN\P+='Vr_8:4;<0Us96?s>nEG4ef%p/sDaWb4XRue?dn_oIU":jXbAc>rOR=tonE:([,>KPVM,(pkro5s>z7aPr5TYPeR'(J)0+4/S%tOR%_#7hGU"1M&pRCixw%Kiw4ls]c,ZnERI?I$\[*8&PTSItci-P^q?l.lE:gxtI,qmFti>v5cU"yXyd1>Itxbm.6rz4\Cyo*;j:Y-Xig%;(Mib6mi#h.$p14/+[IhTEuoz[=dYhUS+U"+ud%vS_kJmmBG.wyF34;>ZXev=#fRwlG-C(j>f-%j..^>X=td&Ub[/nyBWPArKyU"tH6Q>1q^4^T-N2[rZB67K*7Bk<kjgy=Z^akURJE73K<7y$N+T3cW6wG(GGEIj=2U"]jTqWfTq\-:q%Ex*RLV,&Nof_20Aan*.-.$dc&r[=88-Uva)bBgf=hg>N;&/U++U"8GanP,?kD+EH0nUn[cbg\DQ0m&wkU2gc5+C,O(.JgHfX%mMgs/t]$p%1Fti.gZ,U"BXsmTn)h)/00Nr6gC:[:Ki>pfBAI8Ol7_kqzBcf(.7R-nb?AT*,*j:KVooEidObU"KRM&<bm>hJ_$'[,>dhpfE\n5IIy,Y(vFI$Is,voSLZn56Y4477bhf<I'mEr*%4nU"Do(4Q)jH4wFboEopCsWn7E%0^45KReY,l3kgnrEW1SGyyY>Ol=ODwc&2lY9B6pfU":4bQGhhS*4+j):o::3.sdnm4'$P+??C)mHlHYQ?r*.,El\EHlr#/UZN<ArwU^upU"2dBuF2;]NqZhFX=Guur/1[N(UVj8P-jl\M-vu2+L$NF1Yk8N[6l0,#;Q=w+>ZGXU"U+El\]53wEgN_>>3WwE[mi8l_rfT.h8S0i_>t63rTU>l8\=Yl0vk=w%LTj(P*uwU"XRpa,vcp=,Z/]l[nIIb&p,Zs;P>X5ZjH$'4dM)Wr-eIXHwwo+p7<0eP89dmt-vpU"n1&b]P2q-;g1kd%fdfwV1gZ(49c'n&*sMbmtL6qUU8m'O\(d)[Z4r9m.'z/EDq]U"zzchWRCaTu>Bs<McX1DT]'<s152NIyK$PvGBz6=F<e=8qECBUUIQ;7jI$JpijW_U"/4i]O(,KA,NJD8&XGN;t7'of7tn?Y/dw#D?Gb4sfvp%l;$xv?:;*SlJB9DD9Gm>U"?<w]^m4N#x-aF>AF^L57fhR:Kp[Gcu)H*#at%gloy5]*Xu>1G^H1Op$AQH<py=HU"jMPPU9+DVhnXU'oE/LNsG>cjpMJF%3>CN'W\$vW+L_lELEz$I5LnO6ODVdk9V?lU"=hRp,9vcp,-:5,ZH2ef;&fb-?&ZC)\',C)BebCsKEnoV/8I5UbJ7]?5^bw0Ms,aU"tn+Enh4]K:Ud/VeK\](bmWm1iM*,9nEmp4)r4:,Ps\OMKR[90&gfukMrO,R9+Y^U"vJu8<:_iDb[.,.GvY-Q)d,t%Gto)_hmoqog)/2#B=b&_]4LyJ/I'Wo;7'Vb;PdmU")UVSeQ\J'Pf:.q1LX%KpSYygZhAmE/gB7Lyt>>/d.=U+P*:[jx:ltwo8cQvf7p,U"X7'6(wJV]3;tgnb;Dq*x-qZ&pb-6YvSoo4aa#b<AIudo4C]-S*4+-='wwElJ+VHU"tfWAhnKE8M9e6j6UVm.I+c3jR/J2SwFoEryI[\O068[QK3SISY>5Wl*OFKt_$u=U"babVVD-NR;M2HovfN6*tR;odf)cjfIgp4EJZC8s#tC=)C5,12I+4]+C%eVI_L=4U"bAI.6qtRi9DCYp5>]Fcq_.c_CfKi[t6&7o=E.eZ1uJ_o<OYbf;-Rhfb/)bal4noU"FY5,R;U[jF56,R;[kjF5,ER;[jrF5,Re;[jFY5,R;U[jF56,R;[kjF5,ER;[jrFU"5l4'kDup%()9%%%%-%%pOL%m.4lg&E+%%%h3%%%0%%%%xhwt%qqWS[gfx&h&<BSU"mk5wG41x0h'f&7ga%8IoN=h1_\2KWkF-U[l/M^s([9p_^ss+D86h,kUL]EaEJu?U"^Lt>tU7ja4J'G^ap0PACfy/'QBw&B1HhZBCAG[sG2BR9_L$bXKj5e9vcLZ6K0utU",&MH.0;cY.8F4gB$)fmcH\M1,d3rH(ot1NM&s4'L)AFf^&q^&#yfp##LN/t^UswU"UKIGhWCMuMlVz.,/'W2i$7un.wK&1lPHTpBiEUkxs_Zc?bAM8mJu<H\w$N7u&g1U"+vh[xb60JazfsB[5[uQ0%le5X3Rk,B&7oFUJPiXlS]<Ue^'78A.iFo^nOTe>ACiU":Z*d>JulEuq5.)NkJ4mUSZMHr4i7O/AFgl1[;p/^.aorapwx:k*d6cQfTPim#?cU"KpE.'v0H%('dB&Mvu8[+E-3-c8N'mhNc4BDH3LhR+sAZG;i+hl9/_5'E%&em.8SU"0Kbo#,pn8/)kZJkVju5%GoW*%MKj=ehQUE^itv9;pKii(.h.M[k2Z4eZy0[1:QSU"x+TrHH/T3eYJ&?IM7RGF6MX187W6.&G-PG=-NrA^-[vR8*WEBR]*Nqk<Smt$r>#U"Xxqov.vKLbt?n?GAnS=?V_Ng2+>[*%fl<l5lm31Bi-'ZgLADGn#atD:NYmjwfI4U"UmxCpA/&xp\4M7*2_0j+4G^\e2tHc;K+2(6Oau%0oiw0<s]wX-0V%=zrnZM$5dxU"wLs,Y$Xghw;7ey]%p^mNo=5Yrp7&S?FPQ,p-sU^(*\FD.YUP9IK?HbhZIAVr[QYU"H,,Ge3<h2[pU:M&3O>W[>okf.#Q6W<YbY/<L>>iRHVHt]/wI+^1kWfP\U2#g;p*U"2?;gI$YTp6:'3>tlUS\?nkkHJmTw(N9st5l(\LZ>q:31Obbosg*Pm6r2'qcki1;U")3pSgz&;j8][S/lHy#M8z6)IIXx$;o4GidN>XAMTUZa\Bf8$gH3Md]t=YO5HT8[U"fb$.v^TAJc%Nh(Q\]w.tV2dC9u^Unsi<6'NY1idxox)5wtUM?>TpO.tu8v,uVS&U"(>;ueiyiX3G.$;*fG9u,BbO]bw)e#l2#>m#Z;>X6K+r8cSkd(H*:bAimaY?#BtdU"'-IXDDuxVh>0jUkUQ:+.6kdk;gt3\Uy3e3F+L6iJmj0>utvjIo4?vbiICC^)c,)U",(fMh?*py)J=R\KSN[5xL]<D4b:J&F;$R046uZnlDpRzTra*N^O*_:FYO,AoXa+U"00FYhuaYZ*l#c24?h\Za</=L0erCtG'$,[4Do;^l^KWJGYo^*WZ<TA9y<0+-,8=U"=ExGD;P=c3o$h.k*Jhw(Y)+KVPOhmk(aCbUY)_de&1$7?C%ra=RLJ=0EH1AC(tEU"fo.1Rn[W-cBOY.(Ae[e1dIkP&Odf63Cfu4g3N2Bvv_alI+,A)V^F]/X#%sx[UwrU"+V2FccVi0jlIi%$AVXS;ur$hECe%yBlW:weiVTK8'+[9%R6F>I09vD/p:+s*OZXU"=.g>&>(>Qfqo]khfK4;<.R3R3mo9dn%EqxL$AxVtpfW/SX_AC(VoR'h[6k:6aW5U"PY*WTjs5pDGqRJu;n0QD:B:;=(SKG]d1u+YatAoq-*9r9ehGN3I.qu(eO.]Vle4U"V223,nJt/27b7ba=j6wSNczvw7EqpNG90iD$UXx&5on$ZZ^8PGX]:4Pmaw%*-6ZU"J?dZcwDnR;.48/K$S*tdDk)oX-'>t<.p'N84HL?*E)uOS/qd;Af9W2.Cc'TC%\-U"mSY?ZoRhrlZmaW,D1=a+Y4NSMP;\Jkah+JWW3Snrkjqj_:H\%.mX_CDxU0rG+gyU"ps;FoHn5V_4JZ]NeIjf-7Y(31BdoQ^8U5/PFpvf0Fm-DM;U6=xKT[s=TOY^2B+(U"KRfSI,V-MXB?G6uGQ5C&UN;3t'jkE/G4,PFv;;8dE67Z]i1F_'QA6,LPNflWYF=U"'HHhgAB#vk6U%coH\N3.Uoc\b2R2Z':\nm%o:-/&8ebTu7EwKW<P$-Bp\8h+u&EU"Rg=V;MbtIq$ZAMDHC(?E40Y(PlmU1Adg/t%-2q69%ZMF?5[Z\r%hu>*JS$>hnA=U"xFlp=AsZ,Lt>);dS8h_5U'=KUxoQMCNA'r/tS\)hzg8x%%up&%'9%9%%%%-.%r[U"KC%#y*)+7'%(%[/%%%0%%%%%%%%%%%E%%%%%%%%%u%fqjy%yjSq%tlup%&'9%%9U"%%%%-%-e[K%HF=xOd-#%%+O%%%-%%%%%%%%%%%%E%%%&$'%%%wzsw%Siqq%up&'U"%9%9%%%%-%%pOL%m.4lg&E+%%%h3%%%0%%%%%%%%%%%E%.%%q0%%%xh%wtqq%WSU"gf%xup*%+%%%%%(%((%w%%%%f7%%%%%END SUBCLOSE:IF S=194AND B&=4863THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\4863,219);:END SUB'>>> Page 1 of SONIC.ZIP ends here. Last page. TCHK:194/\/\ | |< 3                    Sonic Update                   mstechcae@webcity.ca           06-16-02 (  :  )       Qbasic, QB, PDS        127  8334     Sonicupd.bas'>>> Page 1 of SONICUPD.ZIP begins here. TYPE:BINAA TLEN:5473'-------------------------------------------------------------'                  INSTRUCTIONS FOR DECODING'If there are multiple parts to this file, merge them into one'file using  COPY PART1.EXT+PART2.EXT FILENAME.EXT  Remove all'message header and footer information (everything outside the'">>> Page x of..." lines),  load the result into your version'of Basic (QBASIC, QuickBASIC, etc.) then RUN it. The original'file will be decoded into the current directory on your disk.'-------------------------------------------------------------DEFINT A-Z:DIM SHARED K,S,B&:V1 'Created by PostIt! 7.4SUB V1:OPEN "O",1,"SONICUPD.ZIP",4^6:?STRING$(50,177);U"%up()%9%%%I-%pA0FQjJ.V[b,7%%Z5%%%0%%%%xh%wtqq%WSgfLxl&<,BSm7cw5U"yjmD_%6^eQ:9K?n+#9cUAV9.=2el74+^'DE2U*/sFX^HByf>^8g>6j[fIo0v2)gU"YrM3?tb0vunuP'DAx/GbT;Iu%1KW8C6W1'V3SEOAvqI6V_9<r=j=qd)%K?.H,oGU"5m*Lrm&]l+*.HJbiM3BWH#O6U5O+jilYro4rk5T8b$_5FNs>5vs9oPu*MNLS2NQU"-$[sv9ix>i?0N'wVRGjL/3J#blBLKx_gG$VZC'?ZG($-u\<%W?k>/m;g<^&/a.&U"MMWEbD?u^3&aA3n_Y+&6A/n'r(ESN,9>8](.fJsWE\:p#E/U:*\JsK^4QLW[8doU"B:C68v5.w&R>f$2g_D:);u^&i$'3bm4V\7.WlWoc\NSci1h3[KNH81>RX/b^YVpU"(zNC[h$RT$mQ<BTMh2?Q:+J'QDU)O0x:o)5&SocXyfvI1%-u6Kj+?fq:R=D,K7UU"E\6S+b4?Vl^:dB.yUgrw3TVeh0=JN6K/*SA7o]U>A^RhW=7%bH7j6VB^]:%WgL'U"oGk=luJStxht6q0Fe<H]o'SKCXw4)VDicEaN>DT(,6Anx\m4h2wue)mbJAe37rBU"'A8OxCad4wM/u3YK:qt)B<qE.F-WD+c<]/:Wt/K4lt)EUr=zW)XtqQ#LtAIVk*fU"Fo50>SVsG^(I/S,u)AjKA1Ic8ho*Csy^YIZ;4)vq3l#m>UtfQ?AfV+^]A:2xM*HU"2aksF]H/pmDoJTC.n>C#YWQjB$.x]$bvuO.2'qzDVcw+evA]T'aNm*.0V.u(y=0U":CG,oS8q=#gdT8c*$&Wg4M4qO+#WY19GAsE3i'bDVjKH:3LeBuqkTF(>-8^gv7iU"i;Z6QvANH1jlW\/;,i#+OpeV?21f*AH*S/RV+1=kVj<oasYpb%2)j:Fk<U?1%.uU"j.mU:E=F#R=pSt-K&KS&iww+sZfH:?BqWU=EW[,r[5O\4(z9<j::q&VjpRk#4CmU"'kU#$E[WAAg$T)dcrakuj&#tBuH,u5]nb-+cwY2Hql<f3sD.dUL0Q2,Jkh62)sKU"4k>;tE:rR0.2rP^rhI'14u;rB2Hx0MwTYhA<pPe1>?1#8E:P?aOahhD9Ku:>nMBU"Bnjx4>h]*s%k-);GIfxi8oIpG\BC8QN$Kr\8E^QwB#rn-;551Aw$9epGGco[AjtU"=x:cXlZgEoRX[^i?(0Dr?USc:atxfD&Kup)dCxlDGB'sK6*h2^oD1-N2I$*Tlx1U"LgQphOP/+ot*^K'YGG::hEoy2M:c(m+sJ6^FPcn3/o^UUquESpUT0[NLkhNE$#GU"x,sZV%PfZ$&n#P1^J$),::g7$#m(d$>T/fSUfH0xgM7Z-uK[Ad((W7tmAj9(3_uU"35pLKSB[=e=hfuFuVyNK2i*$/pg=g#=Enl)A8]=ur>t890?93R/D?j>m*D4Z5,VU"\]_Cxj4CBT&s=mgId4hn-8_t<?1$wb8\);sahT+8AAfiWPmNflFnq5T\EgwD+=4U"w\h=]1o\+8?Qi4[Pou0(qpKYfMo(mwT%(J\lLG7rB.&Zg/V;NO^--8=]TS^Spo*U"QOXAu#Me?u4Q3nP>*KtO=kw8h/af4f<(Z7F=pfG>$mQFK/XAmf5$cn(/g)rf[4cU",(5-6ye5d>CCan2bCmb'Vn)oMuSGLohwhpd3m=.;0c,KQsiYwG2#-\?sP.?3CA/U"LW9QT=nT0aA0ce\R9=aH_,.dmvWYH1#7lv=L#Tt;?;4FcQ6KS]SB3f(VOs&^ut-U"3_/epSHIM$FB:_(yHf4(KSEzvwEI,a^39XK_0XrDe4?hY;:%E=f/m>$e?E.DeA9U"[0[I5tg-5AT#>9.84].jl/nV,U#-K2iX+5:8JtCq;];c9F)rSxSln.W.CwGt#:*U"n>7W_oa+32L(MS:q.K?iU+Q-IlTJ;H_ACOT;deNMd1ZHd>=JSKZwIhTHIdsKN]WU"1P4\/L\Y<p7ybkf62Ftc6Gmr<LVKSl?R$g$mlX^cFFXvX5Ofs.)HCv**yUdkq=fU"s^&w)M^l7MQ*imtr)/Lfi?)ofYmhT3=gGRhw9*4BAPBiAG1QYDsYRt9k><C-Nl[U"$t<O3*-q'3z/]]z*;U^?Cs&3mSm3?]eM.RMGj*hjM=1/<S#iJM*_phYo6(Z/7&EU"h_T[d^nhAVZ$SEcYo<f.5Uh)Dp+q44Hv.dcd)E43HfG=W2[*B>r1e+RNX9OEc*lU"6L60it.-]tnpBxqB?(pA]'\,JC'szOi-^*fs'$q]-m6(&.e=*]2E]HU>?F4dFASU"H4/r%8<dELvfeb'sl<gL,%VHZ8QBGn?gAqVGxH1BMhXJd6K%Nusd(An;M$hjDSnU"E=[^i?yjR<SM=NV=cY=c[K<TYM/RiM<l1gV)lfVc>c5hc3q;J828<waTf,5(H5fU"8r5QhQOxLF?DuS8[Vl4ob0Dk:D>6CbH/q7[0GkXC.Fz$5DFj<xmm>2P0O8tl;%,U"IXE^z;dD<%&0<;c)x(%up()%9%%%%-%-e[K%HF=xOn.#%%+O%%%-%%%%wz%swSiU"Rqqf*=f+^Mp3S.P?7:=Qp^\pf+Hq%T,1'U6P>:<K>U7A$(gVl7[-I&xP&P5y_5cU"6V-jDNU//(xYch(dwsB;l(F5x6mVYr\h#HJI.H(PWUUG-&e%Y.m,iw&QKjYYK8:U"FQgW[0]UYh,jpqPIXCm'Mo/URA(A,Njt8G8&OroTU)LGXQ48oP0ruN'a+KCVOcpU"Lu#8lI]6w1rf5BjZ]rClZkbY:$e)HO80opcd+&(7%^HS:et6W/?378+4a?ZBwt#U"Xhp3/,lcllt\F&u&S]t*^ip_M.$U[6(o=;HY4h<RK\r)>;'[bu*V?o$]H4Bk<ENU"g%l]Q?%tC\#E(0FL&MzCB?kF_6H$d&/J%m'5O7]qT\g0L1,w/4fZ8X#0[]3&TxlU"VSo86*j2FHe,1*k'6KkUEd$#OihI'dPLVVzENkAw;caFW\i2*<-9\,JetZhQr[4U":%H-,OWkBs5*jTcL#Lc4%Bf;9a%>x%%c)6Iw,vVEPW;s-qk1r7:;D5aVDwSZp$RU"FZ5To;<q;Yro*JYvnOChpXr&Uo5<i)16N[:)XBHmoC[I/I;k:M:PXRwy0V1cC,OU"kq[L$iuVq430N5'AoZf/DW:-)&,*>V<jX7%B=5^O06%bCI_[EN9nbO%&R5#&o,\U"(&),n29uR1a\aEV*-X3We\DCIKIbrR,Ug>BP346DY_bVoVRIJT:39egL,DIuVR)U"^B7BIgc9JffRSZVEC(uv<_5wK:B+iu<_ew;.cYo;(D4uZ(,'Jhu_;WGKf9cF+3FU"O06,1JClx_i^:%KruC_I3Mj3Ha\8DbO]hN[fWej)pxA>*)XSN%ByTn'7ahxZ>)OU"KLDaaMQxp0MEa8YhC*1^G6&_Q/b)F-.-)YP$&l<W-5.DKre6l^;m^u;mjAJogF(U"G(*#+fu1e;<S:bc=EcrYh(t03L2&4<(bk4'cQM)GnLvIl>Li=GZ5;^vxQlK)im'U"jX7z/e0USMcS+=7=ME/CQW7[B9oOHaAd]kl(To*p(yyv=(LQcZ(M=\24MkD2H^)U"th:>*?\YG4hZDR9\9[jYbYM-h6YG'rvjSVu.HY7SUCq)8l9TSaQwAh[42XyP_pGU"7lUlXt%FpNfEUjh(&5t3/iKW;7\f,t1C,vjcafLgf2A/1YS'gU=n=GXB(3c-J.FU"'2FzFOa_a>vemyTIcHqf.\XxdA\ggeWJeTff&MuT$EnR3mDwBdW?b(vE'44mdoAU"1kaj,J<??.8tZ^]9D;K=4InQj<Wr%D9$0=8Gsf+vL8d=m)jGRa_R5%W;BI#_kxcU"+nMftIkJsHCiy_W'%%r\H0k9Ls''kVoG9&g'5[a*s^i]$7Zcw=QX6X*?KU)Mp1]U"4HkWO=_UH]CL=4V'&U#,BA9EC\d1E^W8WX5ti3gK(vIlT3bX5P<>8Od<dDR(+CQU"$Sy1HFk[p\#n^&:r-Phk'J]:.DtDNeKDRxVm]C'iDi%8MAl)1NS+ig8$o^_g\gfU"50\z,t?,Qf>*xMiGWOf2[PB[_zq*.YKP5#Pf$/J8&'_?XSV9\:%j:_K\tIp7cN%U"v=vC_l.DUBro4*%tVL0XGlM=fhvOSZ<HBq)zWA/+\-zTlDwTV9?8/N:KULX+.bjU"*O0nI2-PpqJey4-1mlYn\tFT5I$SM^akj3K(m/>wGWH%/su2HoEH&G<^^2[269mU"4.nW-H^%C-=v%oHLK1PuA8Xlm;v1d2YMK5v=]EG7J[?*7N:R,ThYQS])S6>$zu2U"*XsDgI<V>eAEDII<n)L0\^J=QK6uRZ;ap'jBmFuYoS=xCD3qp)uRY$fJf2Zo2D-U"KpfUwS:4iaE?Tv(X$ZD35]MfqH;D_-1dK_w*%xB9K,CLff.L[R3>a-OfhPC__etU"3q-spLF&%azSD=PXfqMlp&-1#mQA?qI,rjE\^j1G>fYI\QY3HkgXqW.jryhRU=PU"&OOy)VzA<X[3/H8;sRNf9:g&c$,(PoWh/$:uX8DnuRw&\H^wBeitF'gWX57Xrv*U"-S6eX<7,]t\8u\wFvc0t\Xt1Q84Y#'p>gVmAxmCl3hBX8\WQphP8Zt0oUtQQ8<iU"iDogiX0/C]wB+ifwb(pHdwb2[[^VsYC[vJUEGxmd=V4xsCd[vbJmmS9wb3L>1x/U"x=jeXHuLohruervu>eXA4cklfLih1uj?8irE9E&7]sDmwceK5c9W.b7ZJpsikg4U"Y$82Zln?GqH,lEu,1Cd7kwEa/g5^/FVl7qc]Bh\1KEB<h1],CjbyW<h1>4_aU-vU"t$CG=PLcK(kKSUpmY,Ek:O/$x[GQ%qM4TOAB?j9^cK9_Y?,S$0acZh9M0cMgfaOU"];d,BG^Dfx%C<^>bA^Nmy^1Bd4KolNc34AU7G3?S]<'g?X$m#8\m8S577ekUB_eU"]D0bI*;h5qHBHsQn$eXQo:.1+Tu'Ilc'q\hc>A4U<>fvLV*99Hw?Ts6B%Bn/sXUU"%?2.Z,]RN&[.D_sWe5I9[N3ZVB&,$_TNN.b2(3lPH%zJL4^#3,iO2f=XUU<RkFmU"\c+Tveq)Md:L*9Fa1/*q;yDM,0ANXMqn52>T/+Qp,5*/:CMQ<CkCU->^XzXs^aQU"+qG^(k)TV8qd>ai0lfMc6a8KcOMED_imRe$)Re_M--[xBX9=roRv,B]grC_G[wLU"_AU=4%RFgLfE*YsDIR26srNboE$R2:&R:gB9Qf('Ew4GXD5eFKclL)qGc:+%Pf>U"B7bEibVX'd[Bsu%W:e_#m_lYB(_m(&5WTR%_m;Ug621USDuv6I=EC_4n$(L5wEkU"*+)b)neos/xOn/XCkQ)uo,lhp_SpJUs.8]0LblIs.W]M_s*cSwjKN.\p6B>X_]cU")S=#_FYzVO>TDI'x+-9a)3E1rOu8;QTt'13Vn4-klfdeDc7rYJ*'Rbu8<<W.GvJU"6*+'TeNT%a,^MfWt:(-OsfRIOj4KKnUG6$Reil0uhoPNC1f9Jcpms]BiG\$P0]\U"KQruQ'u0l>[8QfBKi#0I1cLMKf9uJ9QfA(^X^ey3nIBvN'<7a%=$OWUqM)rK1tmU"6EHestH7jqRQ<ZG?uGM__n4s\N]D-?u6QgC,XD6EECu6&6_m9LCC_7*m+,>HSsfU"ir(-]e8KulM\[DYifn,4oPKIv*X3BG\>$P]\qK[v0dVH,r<9KpET-Ll8[S53'1WU".Q-%M_m^%Xfz\$aoUi[o,*<&:B9+FQuEV6<Z?]dA3V<*Z?]Ap3V<Z&?]A3YV<Z?U"#]A3V6<Z?]dA3V<*Z?]Ap3V<Z&?]A3>V<jd,Tx%u%p()9%%%%-.%r[KC%#y*)+rU"'%(%[/%%%0%%%%ufq%jyyj%SqtljjO(+'\U-*ZIx'IbJA7=O1d.(S22Un3]c1HqU"SW^Xusvvt1.NnnkD7hn-t_zfH?<ar0-qCxWAAr2Ptr5xT&jt)^<YB9ki$uAFWS<U"EsEoEFUTch+<AqOnMw63-;6%jYmr)VP;Ae_n2)cxTHSmy,hHBXGEjr_XZe%UQ5QU"Gg]<hJU<hn.XNaPvW;6a].BJ94y%-qB_mFhvI4LQ#q6_HkV^i.m7=mH>bA%s:MNU"-GK\.&3ue*lff-jGx;KPI1/wobl[Rk%ECWM_oQ+sq0LT[%h+*yTIeX[jGZ,F=s4U"AsSd_wIeYv]cONPW-8,$-3R(q)Uf+eIv:tFx\R(q)UK2eID%R3CK/'h(EtPucSOU"0p0Q+ZE*7ZAh8v)EuE[c3x'o_m0bB[ml[kXv5CEA?B/w_oP3?bz%/$%ue*2JCU=U"4>hknK&N$^YcI:%laz/<g#h*2CsU9tIN)+AnS.fUZ]TnkHW)mcx*OWka;a&R3u'U"<bG]K*7AYo5CI1sFIsDFIR_7e+^z5%^DL/zS_em+*54oIN_dOsfdR[)WMYrRTh8U"d;Ll(_+HSYTa>ObD\K9rXAN&;)D?B?3a/O.3Oz;,3ApP3g+g/6ECIrFAI^=/bQ,U"0*3Oz;T*UV3+>gYeg5fD>_Iv\DX$^CPT+X%L?'jmk_tI$Pp(;oh'[>9u:_JM6j>U"IVRI&_f&:GK$<fLrFE\%f&:Yiil.SF0pFRd'O7Y]R*[HhJsFUi5V[QrrE3Db-p*U"Y8JjZ0eNdl'Bfr^zc+L\pjYSn$r_j7o,-W<],63bt1;Kn%^j0Y3tJmvec1b)uFgU"6l3qDo3#G>>bwup4Yb^VfB#Eb;sr0GP%4ZU\k2]CBz6L4R^4-Nu4u%p&'9%%9%%U"#%-%pGAFQj#JV[b[,%%Z%5%%0%%%%%%%%%&%%E%%%%%%%%%xhw%tqqW%Sgfx%upU"&'%9%9%%%%-%%-eK%aHFxO'n.%%(+O%%%-%%%%%%%%%%%E%7%%5,%%%wz%swSi%U"qqup%&'9%%9%%%#-%r[.K%#y2*+r'.%%[/%%%0%%%%%%%%%&%%E%%%'P6%%%ufqU"j%yyjS%qtlu%p*+%%%%%(#%(%w#%%%r%9%%%%%END SUBCLOSE:IF S=144AND B&=5473THEN?" :) Ok!"ELSE?" :( Bad!SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\5473,219);:END SUB'>>> Page 1 of SONICUPD.ZIP ends here. Last page. TCHK:144/\/\ | |< 3                    Mode 13 page flipping          jmstechcae@wrbcity.ca          09-15-02 (  :  )       Qbasic                 135  4844     2pMode13.bas'==========================================================================='  Subject: Two Pages in Screen 13             Date: 09-05-02'   Author: /\/\ | |< 3                        Code: Text, QBasic'==========================================================================='==============================  Read this FIRST  =========================='Please note: This code shall NOT be related to money in any way. This means'borrowing code for a fee, buying it, selling it, and so on. This code is for'free. This code can be found at www.allbasiccode.com.'Thank you for your understanding.'==========================================================================='==============================  Declarations  ============================='  These are added when the file is saved.                          '===========================================================================DECLARE SUB initasm ()DECLARE FUNCTION init% ()DECLARE SUB copy (w%)DECLARE SUB intx (IntN%)DECLARE SUB emscopy (w%, froms%, fromo%, siz&)DECLARE SUB makejunk ()DECLARE SUB uninit ()DECLARE SUB demo ()'============= Variable types and reservations ============================='  The code below is required.'===========================================================================TYPE regtypex       ' ax AS INTEGER      ' bx AS INTEGER      ' cx AS INTEGER      ' System registers will be used to access dx AS INTEGER      ' a chunk of EMS memory. bp AS INTEGER      ' si AS INTEGER      ' di AS INTEGER      ' flags AS INTEGER   ' ds AS INTEGER      ' es AS INTEGER      'END TYPEDIM SHARED regsx AS regtypex, handle%, icode$ 'make most often used variables global.CALL demo                                     'run the demoEND                                           'and exitSUB copy (w%)'translate what the user wants'Copy 64000 bytes -> 320 pixels across * 200 pixels down = 64000.                              'Screen address for mode 13 is A000 hex.'We want the whole screen. offset of 0 means the beginning.CALL emscopy(w%, &HA000, 0, 64000)END SUBSUB demoCALL initasm          'Load ASM code for the interrupts.IF init% = 1 THEN     'Check to see if enough memory is free.CALL makejunk         'self explanatoryCALL copy(0)          'Copy contents of screen to memory.CALL copy(1)          'Copy contents of memory to screen.CALL uninit           'Release used memoryELSE'Give error if free memory is unavailable.SCREEN 0PRINT "You need at least"; 8 * 16384&; " bytes of free expanded memory."END IFEND SUBSUB emscopy (w%, froms%, fromo%, siz&)'w% = action.'if w%=0 then the contents at segment froms% and offset fromo% are copied to EMS'if w%=1 then the contents at segment froms% and offset fromo% are copied from EMSSELECT CASE w%CASE 0: d$ = MKL$(siz&) + CHR$(0) + MKI$(0) + MKI$(fromo%) + MKI$(froms%) + CHR$(1) + MKI$(handle%) + MKI$(0) + MKI$(0)CASE 1: d$ = MKL$(siz&) + CHR$(1) + MKI$(handle%) + MKI$(0) + MKI$(0) + CHR$(0) + MKI$(0) + MKI$(fromo%) + MKI$(froms%)END SELECTregsx.ds = VARSEG(d$)regsx.si = SADD(d$)regsx.ax = &H5700      'Call the move memory functionCALL intx(&H67)        'load the interrupt.END SUBFUNCTION init%regsx.ax = &H4300 'Function for allocating memory.regsx.bx = 8      'Allocate 8 pages. (4 might work but I dont trust MS windows)CALL intx(&H67)   'call the EMS interruptIF regsx.ax < &H100 THEN 'If there is no error, then handle% = regsx.dx      'get the handle number and init% = 1               'let the parent of this sub know that EMS is ok.END IFEND FUNCTIONSUB initasmd$ = "558BEC83EC0856571E558B5E068B47103DFFFF75041E8F47108B47123DFFFF75041E8F47"d$ = d$ + "128B47088946F88B078B4F048B57068B770A8B7F0CFF771207FF77021E8F46FAFF77101F"d$ = d$ + "8B6EF85BCD21558BEC8B6E02895EFC8B5E061E8F46FEFF76FA1F89078B46FC894702894F"d$ = d$ + "048957065889470889770A897F0C9C8F470E068F47128B46FE8947105A1F5F5E8BE55DCA0200"icode$ = "": FOR x% = 1 TO LEN(d$) STEP 2: icode$ = icode$ + CHR$(VAL("&H" + MID$(d$, x%, 2))): NEXT x%END SUBSUB intx (IntN%)DIM IntCode AS STRING * 200IntCode = icode$: DEF SEG = VARSEG(IntCode)POKE VARPTR(IntCode) * 1& + INT(INSTR(IntCode$, CHR$(&HCD) + CHR$(&H21)) + 1) - 1, IntN%CALL absolute(regsx, VARPTR(IntCode$))DEF SEGEND SUBSUB makejunkSCREEN 13                        'Load graphics mode 13PAINT (1, 1), 1                  'and do whatever screen outputLINE (1, 1)-(100, 100), 15, BF   'operation you want.                                 'Be creative!END SUBSUB uninitregsx.ax = &H4500  'Function that frees EMS memoryregsx.bx = handle% 'Handle we have been using.CALL intx(&H67)    'Call interrupt.END SUB