home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.hp48
- Path: sparky!uunet!seq!spell
- From: william j. levenson <akcs.levenson@hpcvbbs.cv.hp.com>
- Subject: v07i045: sch48.wjl - A Scheduler/Diary v1.2, Part01/01
- Message-ID: <1992Nov19.211241.25359@seq.uncwil.edu>
- Followup-To: comp.sys.hp48
- Sender: spell@seq.uncwil.edu (Chris Spell)
- Organization: Univ. of North Carolina @ Wilmington
- Date: Thu, 19 Nov 1992 21:12:41 GMT
- Approved: spell@seq.uncwil.edu
- Lines: 515
-
- Checksum: 187660099 (verify with brik -cv)
- Submitted-by: william j. levenson <akcs.levenson@hpcvbbs.cv.hp.com>
- Posting-number: Volume 7, Issue 45
- Archive-name: sch48.wjl
-
-
- BEGIN_DOC sch48.doc
-
- ********************************************************
-
- SCH48 VERSION 1.2
- A SCHEDULER/DIARY FOR THE HP48
-
- ******************* UPDATES ********************************
-
- CHANGES FROM VERSION 1.1:
-
- All the sys-RPL TakeOver commands were removed from the key
- definitions. This results in a savings of over 50 bytes.
-
- I have investigated whether the TakeOver commands are needed and
- came to the conclusion they are not for this application. This change
- has not given me any problems but no one has definitively explained
- the useage of TakeOver. If someone has a problem with this or
- can think of a possible problem, please let me know. Thanks!
-
- CHANGES FROM VERSION 1.0 (ORIGINAL VERSION):
-
- Two minor bugs were found and fixed. One involved the STD mode
- setting on the HP48. In version 1.0, the calender display was
- unless STD mode was used. This has been fixed.
-
- The other bug involved update of the appointments when keys were
- quickly pressed. Sometimes, the appointments would not match
- the day. Noone seems to have noticed this, but I did and it is
- fixed.
-
- Two features were added. A copy function copies an entire alarm to
- a different day. This is intended to compensate for the lack of
- repeating alarms in SCH48. Try this option to see if repeating
- alarms are still necessary. Let me know...Is this good enough or
- should I work on the repeating stuff? The scanning of repeating
- alarms to correctly indicate them on future dates might slow
- SCH48 down - how much, I don't know yet.
-
- An edit feature has also been added to allow you to change the
- alarm text without deleting and resetting. I found this
- handy.
-
- ************************* DESCRIPTION *************************
-
- SCH48 is a library written entirely in system RPL (with a small bit of ML)
- which allows the HP48 to function as an electronic "DAYTIMER".
- The intent is to replace the "ALARMS" catalog in the HP48 for a more useful
- and intuitive representation of appointments, events or blocks of
- time.
-
- SCH48 uses the existing ALARM functions built into the HP48.
- BUT...the user interface is improved (I hope). The SCH48 library
- contains two commands, D->CAL and SCHED.
-
- D->CAL merely takes a date from the stack and displays the calender
- for that month. The stack diagram is:
-
- ( date --> )
-
- where "date" is in MM.DDYYYY or DD.MMYYYY format, depending on the
- HP48 setting. If YYYY is omitted, the current year is assumed.
-
- SCHED is the primary function of the library. When this command is executed,
- a calender is displayed with the current day highlighted. To the right
- of the calender is a listing of the current ALARMs that are scheduled
- for the day. These alarms can be entered as a single point in time or
- as a block of time. The time or block of time is reflected in the listing
- of alarms. Below the calender is a 24 hour time-line which shows the
- times of the listed alarms blacked out. In this way, you can see graphically,
- how much of your day has been scheduled.
-
- I have attempted to present as much data as possible on a single screen
- for quick viewing, but the alarm text listings may extend beyond the
- window. Scrolling is provided for this.
-
- Once the SCHED is started, it is fairly self-explainatory. Alarms
- can be set, deleted (and acknowledged), moved, and edited. I have
- tried to make the functional keys intuitive.
-
- **********************KEY DEFINITIONS*************************
-
- *************************************************************
- NO SHIFT KEYS:
- *************************************************************
-
- KEY DEFINITION
-
- {A} Scroll the screen fully to the left
- (JUMPLEFT)
-
- {F} scroll the screen fully to the right
- (JUMPRIGHT)
-
- {up arrow}
- {down arrow}
- {left arrow}
- {right arrow} Move the date cursor on the calender
-
- {NXT} Go to the next alarm
-
- {ENTER} Set the alarm - the user will be prompted
- for the alarm text. If a time has been
- marked (see {*} key), a block of time will
- be set; if not, a single time will be set.
- ATTN at the prompt will erase the contents
- of the command line if it is present. ATTN
- without a commandline, aborts the setting
- of the alarm. ENTER enters the alarm text.
-
- {DEL} Deletes the alarm if the time cursor is
- pointing at an alarm block on the timeline.
- If the time cursor is not pointing at an alarm,
- a error beep will be generated.
-
- {LEFT-SHIFT} Activates left shift mode
-
- {RIGHT-SHIFT} Activates right shift mode
-
- {*} (This is the "multiply" key) sets one end
- of a block of time on the time-line. {ENTER}
- determines the other end of the block of time.
-
- {-} Moves the time cursor 15 minutes to the left
- (hold down for repeat)
-
- {+} Moves the time cursor 15 minutes to the right
- (hold down for repeat)
-
- ATTN Ends SCHED
-
-
- *************************************************************
- LEFT SHIFT KEYS:
- *************************************************************
-
- KEY DEFINITION
-
- {up arrow}
- {down arrow} Scrolls the screen up and down. This is
- necessary if a lot of alarms are set on a
- single day (the listing may extend beyond
- the bottom of the screen). Hold the key
- down to continue scrolling.
-
- {PREV} Go to the previous alarm
-
- {LEFT-SHIFT} Disables left shift mode
-
- {RIGHT-SHIFT} Activates right shift mode
-
- {-} Moves the time cursor 1 minutes to the left
- (hold down for repeat)
-
- {+} Moves the time cursor 1 minutes to the right
- (hold down for repeat)
-
- {EDIT} Edits the text of the alarm that the time
- cursor is pointing to.
- ATTN at the prompt will erase the contents
- of the command line if it is present. ATTN
- without a commandline deletes the alarm.
- If you enter the EDIT function, and change
- your mind, ENTER will reset the alarm with
- the text indicated. Or, you can attention
- out of the EDIT and reset the alarm with
- the {LEFT SHIFT - ENTER} function.
- CONTROL alarms cannot be edited this way.
- If you accidentally try to edit a CONTROL
- alarm, ATTN out of the EDIT and reset the
- alarm using {LEFT SHIFT - ENTER}.
-
- {ENTER} Copies the alarm from the last DEL, NXT, PREV
- EDIT, or ENTER command to the current day.
- Use this feature to move, copy (repeat), an
- alarm by using one of the above commands to
- indicate the alarm of interest, move to a
- different day and set the alarm with the same
- time block and EXEC on that day. CONTROL
- alarms can use this too.
-
- *************************************************************
- RIGHT SHIFT KEYS:
- *************************************************************
-
- KEY DEFINITION
-
- {LEFT-SHIFT} Activates left shift mode
-
- {RIGHT-SHIFT} Disables right shift mode
-
- {-} Moves the time cursor 1 hour to the left
- (hold down for repeat)
-
- {+} Moves the time cursor 1 hour to the right
- (hold down for repeat)
-
- *************FEATURES, LIMITATIONS, AND BUGS???*************
-
- An alarm can be moved by first deleting it. The alarm text
- is copied and will be the default the next time an alarm is
- set. Use this method if the time needs to be adjusted.
- If you only want to change the day, use {LEFT SHIFT - ENTER}
-
- An alarm can be copied by going to it by means of {NXT}
- or {PREV}. Again, the text will be copied and offered
- as a default the next time an alarm is set. Again, if only
- the day is to be changed, use {LEFT SHIFT - ENTER}
-
- To delete an alarm, move the cursor to the alarm block or use
- {NXT} or {PREV} and press {DEL}.
-
- An alarm may not show up on the time-line of it is a block
- alarm which spans less than 7 minutes. I didn't think this
- was much of a limitation, but if you don't like it, I can fix
- it.
-
- CONTROL ALARMS cannot be set using SCHED. They will be displayed
- only with the text "CONTROL ALARM". If this capability is desired,
- perhaps it will be included in an update. Let me know!
-
- REPEAT alarms also cannot currently be set in SCHED. I have
- attempted to compensate for this by allowing you to make
- multiple copies (see {LEFT SHIFT - ENTER}). Is this good
- enough? Let me know.
-
- SCHED should operate correctly with any HP48 time/date settings.
- I primarily use a 24 hour clock and MM.DDYYYY settings and haven't
- experienced any problems.
-
- Alarms not set from inside SCHED should work fine with the
- following exception. In order to set block times, the alarm
- time is set with the "begin" time as the time of the alarm.
- The end time is indicated by the fractional seconds of the
- alarm time. That's not clear, how about an example:
-
- An alarm from 8:15 a.m. to 11:45 a.m. is set with
- an alarm time = 08.15001145
-
- If an alarm is created with arbitrary fractional seconds, the
- time-line may end up looking a little strange but no
- damage will be done.
-
- This carries with it another minor limitation that the end time
- of the alarm will be rounded to the nearest 5 minute
- interval. This is necessary because of accuracy problems
- with those fractional seconds (trust me). I may be able
- to fix this if enough of you wish it.
-
- Past due alarms will be acknowledged when they are deleted from
- within SCHED. The alarms will behave just like the HP48
- handbook describes for appointment alarms. If you don't want
- the beeper going off, set flag -57.
-
-
- ********************* CREDITS **********************************
-
- SCH48 was written in system RPL (with a bit of ML) using the excellent
- RPL v2.2 library written by Detlef Mueller. If you are interested
- in the source code, it can be decompiled using the same library
- (but do NOT execute any commands other than SCHED and D->CAL, as
- no error checking is done and unpredictable results could occur...
- but you knew that).
-
- The SCH48 library was created using <-LIB->, again by Detlef
- Mueller, Raymond Hellstern, Rick Grevelle.
-
- THANKS HERR MUELLER et al.!!
-
- Thanks also to HP for the RPL TOOLS and, especially, the RPLMAN
- documentation. And, of courxe, thanks to HP for such a
- versatile calculator.
-
- Thanks to Mika Heiskanen and other contributors to the entries
- lists that were posted at seq.uncwil.edu.
-
- Thanks to Jan Brittenson, whose MLDL was a great help.
-
- And thanks to all the helpful 48'ers who helped me get this far.
- I hope this will be a useful partial payback with, hopefully, more
- to come.
-
- ********************* DISCLAIMER *******************************
-
- I have not had any problems with SCH48 while using it on my HP48-D
- but...It does contain some unsupported entry points. Although they
- have appeared on several of the "entries" lists, that doesn't
- guarantee that they will work the same on other revisions of the HP48.
- With that in mind...Have fun SCHeduling and certainly let me know of any
- problems!
-
-
- ****************** COPYRIGHT NOTICE ***************************
-
- Copyright (c), 1992, W.J. Levenson.
- Permission to copy this article is granted provided that the copies are
- not made or distributed for resale (excepting nominal copying fees).
- Other permissions can be arranged by contacting W.J. Levenson via email
- at the following address:
- akcs.levenson@hpcvbbs.cv.hp.com
-
- or by U.S. Mail at
-
- 12558 Caminito Mira Del Mar
- San Diego, CA 92130
- USA
-
- SCH48 is distributed in the hope that it will be useful, but
- WITHOUT *ANY* WARRANTY.
-
- This software is LET-ME-KNOW-WARE. Please let me know if you
- like it or not and any improvements you would like to see.
- But MONEY will be accepted in lieu of the above!!
-
- ************************* INSTALLATION **************************
-
- To install SCH48, a) download the ASC version, execute ASC->, or b)
- download the uudecoded version and recall it into the stack. Purge the
- variable which contains the orginal copy. Enter the port number (0,1,2)
- where you want to store SCH48 and press STO. Switch the HP48 off, then
- on again. SCH48 will now be installed.
-
- END_DOC
-
- BEGIN_ASC sch48.asc
- %%HP: T(0)A(D)F(.);
- "04B20B48108135348443836713E223028405438302353484544455C45425814D
- 548710000001171050000D9D20119204D50090770B2130D9D2039140487352FA
- 30CB916D9D20D4FA21F514CB9A2B213011CE280836530407FE3019626D5040CB
- D3032230760402CE3032230B2130D9D209E55079E60D6E204016C6374772D70D
- 6E20304616478813005EE05DBE0FC436FD5502A1706B316204E08DA16D9D208D
- 1E088B26BBF06E52161C8A28DA1618A30D9D20B4F060CA30B2130B21300CA30E
- E170D9D20C07269BC26D6E204016C6374732230AF25079E60D6E204016C63747
- 72D70A60D098140487358DA16D9D2030040B2040D6D26B2130D9D2088130B204
- 09523632230940409404033750A6F36B213088130803A2D35B2189A288130B67
- A28DA1644230D9D20339205000000000000020CB9A2ED2A2925B2D13A2CB9A24
- B2A20A6A210DC1CDBA2A60D098140487358DA16D9D2030040B204033750B2130
- D9D2088130B2040952363223094040940403375039150B2130F4456B52503915
- 0B21301913632230451262FA30CB916D9D2044230C2A20F100034F4E44525F4C
- 40214C41425D4B21303915019136391506B316FED300E516B21305E17079470A
- 7C46FEF3053621E9715A3216A321659230BBF06E983629E204D5F004423029E2
- 04D5B00D6E20304796D629E204D5900B2130D9D20D6E20107688B260B821D6E2
- 0304616473223097CC029E204D5E0080740CB916D9D2047A20D5040F80409904
- 03A040B2130FE346069167BF60B213029E204D5110B2130D9D20592302A1707A
- 72108F11C1216C1216592300B821B2040CCD26902368C170B4F06B2130D9D208
- 8130D6E203046164739140487358DA16D9D20D4FA232230D4FA2B2130D9D2006
- FA23223006FA2B2130CC8A2CB916D9D208813029E204D530079E60D6E2010E67
- 2D70B213079E60D6E203046164772D70D6E2010E6D6E203046164729E204D521
- 0CA130CA130F3040817365304081736536214C016F2911D00409D130DC13679E
- 60D6E20107672D70FF2210B821B2130E1B20F1100800003800000008F0000000
- 00000000000000000CF7000008F000000000000000000000000CF7000008D000
- 000000000000000000000445000008A222222222222222222222222C55000008
- AEFFFFFFFFFFFFFFFFFFFFFFF544000008A0000000000000000000000004F500
- 0008D0000000000000000000000004C5000008FEFFFFFFFFFFFFFFFFFFFFFFFD
- F70D9D20C86A2803A2CB9A2DB056479A211CE29E040CBD30B2130D9D20FEF302
- 9E204D5D00792A3D6E204016C63747FA450DBC363C3709BC26803A2D35B2189A
- 288130B67A28DA16D9D204423088130339209990000000000510479A2B2130D9
- D20339205000000000000020CB9A2ED2A2925B2339200000000000000050CB9A
- 2B213029E204D5C003223029E204D5C00083160ED301192097000EF1160ED30A
- B4263004032230F8511FF2215462159230120409761143370B2130E1B2051000
- 3000050000F1E040D9D2029E204D5A0054621FD040FEF3011920A7000D0040D6
- A11EF11629E204D5C00E4E30FEF3097611A60D098140487358DA16D9D2030040
- B204033750B2130D9D20B204095236B213008F11A3E26792A3B2130D9D20D6E2
- 0304796D610DC1479A20A6A210DC1CDBA28813079E60D6E20304796D672D7029
- E204D5900B2130D9D20CA031C2A207200054E44554250214C41425D402455485
- 45A3D6E203016C642D00406B6508DA16D9D20451262FA30CB916E3D40B2130FD
- 550FEF309FF304CA369E5509FF300CA30FEF3044F248DA16D9D204B2A2710409
- D130710409545079E60D6E203016C64272D70DE6E044230B21308523002DC179
- E60D6E2040164796D672D70D6E20304616478813029E204D53004423029E204D
- 5E0029E204D5110B2130D9D20204E02FA30BEB368D1E08813079E60D6E203016
- C64272D7088B2685230ED2A2D35B28813079E60D6E20304796D672D70D6E2030
- 4616475923093CC088130B67A27F81629E204D5900B9F0629E204D5010B2130D
- 9D2079E60D6E203016C64272D70F67E0B2710461E0B2130D9D20D6E203046164
- 705EE03223038EE062EE05DBE0B2130D9D20CA0319BC263914048735CB916D9D
- 20D4FA21F514CB9A2B213011CE2C2A20D4000A414E4645424D41425140525D41
- 495A455E4A455C4145574355405F43445E4F46544543432230D00402CE308813
- 0E4E303223033750322301F514CB9A2D4FA2339204000000000000010CB9A2AE
- C814E7613915019136C2A20F2000355702D4F602455702755602458602642702
- 3516A03915032230CCD20460008FC29D03110AE71008FA3BD08F15BD03079065
- 0A80120AF214EAE58F584D05E0318296550B65D98FF26D01098D41F302C230D0
- 0402CE3067654C2A20DB00002130202230202330202430202530202630202730
- 2028302029302130302131302132302133302134302135302136302137302138
- 3021393022303022313022323022333022343022353022363022373022383022
- 39302330302331359230D00402CE3095236391505AC2663650BD3702C2301227
- 0881307B040CBD303375019136391501C0405A370B9F06CF14629E204D5F00F2
- 293B2130D9D20D6E20304796D6339205990000000000030479A229E204D5400E
- 0E3088130204E02FA30A65368D1E08813088B268523032230D6E20304616471C
- 8A22FA3039916D9D20B4F060CA30B213088130803A2D35B28813059230189A28
- 8130B67A28DA16D9D207A7263392099900000000005100A6A2B2130D9D203392
- 06000000000000019CB9A2B2130D6E20304796D68813059230A88A2CAF06A88A
- 257B303853618A30B213084D5100D9D205AA812BF819FF30D9D204B2A297CC02
- 9E204D530044230B2130B213084D5000D9D20E1A81903460CA309E550AFBC088
- 13006FA232230D4FA258CC1EF9A2ED2A2925B258CC1CB9A20A6A210DC1CDBA20
- 2DC19E55047A20D6E2030461647D6E2010E6D6E201076D6E204056879647D6E2
- 04016C63747D6E20304796D6D6E2040164796D6D6E203016C642B21300D470E0
- CC029E204D5E0029E204D511079E60E8E6079E60D9D209FF303D816D9D20D504
- 0B1FF3D9D20404A229E204D5010B2130F8040B1FF3D9D20683A229E204D5010B
- 213099040B1FF3D9D20743A229E204D5010B21303A040B1FF3D9D209C2A229E2
- 04D5010B213021B46B1FF3D9D2088E0421B46D9D203392099900000000005192
- 9E204D5800B2130B213044B46B1FF3D9D2088E0444B46D9D2033920999000000
- 000051029E204D5800B2130B213057140B1FF3D9D20D6E20304796D679E60D6E
- 2040164796D672D70B21309E040B1FF3D9D20D6E2030461647D6E2040164796D
- 6D6E20304796D6CA130A88A2CB916322308813010DC10A8A28DA1644230D9D20
- 339206000000000000010EF9A2479A2B213029E204D5700B213076040B1FF3D9
- D20D6E20304796D6339205990000000000030479A229E204D540029E204D5600
- B213070140B1FF3D9D2029E204D52002FA30BEB3629E204D550029E204D5110B
- 21309FF30B1FF3D9D205E615B2130B2040B1FF3D9D2030715B2130C1B46B1FF3
- D9D2018A3079E60D6E20405687964772D70B2130D414074536F7140745364423
- 021EF3B2130300403D816D9D203F040B1FF3D9D2029E204D52002FA30BEB3608
- 31629E204D550088B268523029E204D5700B2130D5040B1FF3D9D20231D4B213
- 099040B1FF3D9D20E61D4B213021B46B1FF3D9D2088E0421B46D9D2033920899
- 000000000001929E204D5800B2130B213044B46B1FF3D9D2088E0444B46D9D20
- 33920899000000000001029E204D5800B2130B213076040B1FF3D9D20D6E2030
- 4796D629E204D5400E0E3029E204D5600B21309E040B1FF3D9D20D6E203016C6
- 42F6A362DB3688B26BBF0644230D6E2030461647E9016DE6E04423029E204D51
- 10B2130D414074536F7140745364423021EF3B2130D00403D816D9D2021B46B1
- FF3D9D2088E0421B46D9D20683A229E204D5800B2130B213044B46B1FF3D9D20
- 88E0444B46D9D209C2A229E204D5800B2130B2130D414074536F714074536442
- 3021EF3B21308523021EF3B2130DEBB00CA303353679E60D6E20405687964779
- E601DE4058983CA03144193B2130E4A2046000AF8FF1B8FF857FFA64FF534FF0
- 04FF053FF502FF9A1FFDF0FFED0FF89FEF16FEF83EEFE0DEFEBCEFE2CEF129EF
- EA8EFE4A20280000000000000000000000014000000000000000000000000000
- 0000000000000000000000000000000320005035348454440005044D83414C41
- 00E1000410003B330689"
- END_ASC
-
- BYTES: #9860h 3112
-
- BEGIN_UU sch48.uue
- begin 644 sch48
- M2%!(4#0X+45`*["$`1A30T@T.'8Q+C(@2%`T."!30TA%1%5,15(8U$5X`0``
- M$'$!!0#0V0(1*4!=``EWL!(#G2TP&02$-R6O`[P9UMD"3:\27T&\J;(2`Q'L
- M@H!C-4!P[P.1)M8%!+P],"(#9T`@[`,C,K`2`YTMD%X%EV[0Y@($86QS="=]
- MT.8"`V1A=(@Q`.4.U>OP3&/?52`:![83)D`.V!K6V0+8X8"X8KL/YB5AP:B"
- MK6&!.M#9`DL/!JP#*S&P$@/`.N`>!YTMP'!BN2S6Y@($86QS=",RH"\%EV[0
- MY@($86QS="=]H`8-B4%`>%/8&M;9`@-`L`($;2VV$@.=+8`8`RM`D"5C(S*0
- M!`1)0#!S!6H_MA(#B#&`,"H]M1*8*H@QL'8JV!I&)`.=+3"3`@4````````"
- MO*GB+2HIM=(Q*KRI0BLJH*82T!S<JZ(E!0'A3V!K6V0(#0+`"!#-7L!(#
- MG2V`&`,K0)`E8R,RD`0$24`P<P634;`2`T]4MB4%DU&P$@.1,38B`U0A)J\#
- MO!G6V0)$,L"B`A\`,/3D1"7UQ`02Q!0DU;02`Y-1$!ECDU%@.V'O/0!>82LQ
- M4!X'EW2@QV3O/U!C$IX7I2-A.A)6*0.[#^:)8Y(N0%T/0"0#DBY`70O0Y@(#
- M=&EMDBY`70FP$@.=+=#F`@%GB"L&BQ)M+C!`%D8W(@-YS"#I`M3E``A'P)MA
- MG2U`IP)=0/`(!)E`,`H$*S'P/F1@&7;[!BLQ(.D"U!4!*S'0V0*5,B`:!Z<G
- M`?@1'!+&(6&5,@"+$BM`P-QB"3*&'`=+#[82`YTM@!@#;2XP0!9&-QD$A#>%
- MK6&=+=#T*B,RT/0J*S'0V0)@KS(B`V"OLA(#S*C"FV&=+8`8`Y(N0%T#<.D&
- M;2X0X';2!RLQ<.D&;2XP0!9&=](';2X0X-;F`@-D8722+D!=$L`:`ZPQ\`,$
- M=6`P08-U9C$L00]I(1#4"0'0/-,7;I!FTN$'!VT@?_(@&+$BLQX+$"'P&`
- M``"#````@`\``````````````,!_``"`#P``````````````P'\``(`-````
- M``````````!`5```@"HB(B(B(B(B(B(B(L)5``"`ZO______________7T0`
- M`(`*``````````````!`7P``@`T``````````````$!<``"`[___________
- M____WW_0V0*,IH(P*KRIT@ME=*D2P2[I0,#;`RLQT-D"[S\@Z0+4U0"7HM/F
- M`@1A;'-TKU30RV/#<Y#+8@BCTE,K@:F"&`-KIX*M89TM0"0#B#$PDP*9"0``
- M``!0`72ILA(#G2TPDP(%`````````KRIXBTJ*;4RDP(`````````!;RILA(#
- MDBY`70PP(@.2+D!=#``X8>`]$)$">0#@'V'@/:!+8@-`,"(#CQ7Q+Q)%)E$I
- M`R%`D&<1-'.P$@,>*U`!``,`4```'PX$G2T@Z0+4I0!%)O$-!.\_$)$">@#0
- M``1M&N$?89(N0%T,X.0#[S^09Q%JT)`8!(0WA:UAG2TP``0K0#!S!2LQT-D"
- M*T"0)6,K,0#X$3HN=BDZ*S'0V0)M+C!`E]86T!QTJ0)J*@'-P;TJB#%PZ09M
- M+C!`E]9VT@>2+D!=";`2`YTMP`H3+"IP`@!%3E1%4B!!3$%232!415A4.FTN
- M,!#&1M(`!+96@*UAG2U`%6+R.L";83Y-L!(#WU7P_@/Y/T"L8^E5D/\#P#KP
- M_@-$+X2M89TM0"LJ%T"0'0,70)!%!9=NT.8"`V%L)"=]T&X.1#*P$@-8,@#2
- M')=NT.8"!&%T:6TG?=#F`@-D872(,2#I`M0U`$0R(.D"U.4`DBY`71&P$@.=
- M+2!`#O(ZL+YCV.&`&`.7;M#F`@-A;"0G?8"X8E@RX"TJ/;6"&`.7;M#F`@-T
- M:6TG?=#F`@-D8725,I###(@QL'8J]Q@FZ0+4E0";#R;I`M0%`2LQT-D"EV[0
- MY@(#86PD)WWP=@XK%T`6#BLQT-D";2XP0!9&!^4.(S(PZ`XF[E"]#BLQT-D"
- MK#"1RV*304!X4[P9UMD"3:\27T&\J;(2`Q'LPJ("30"@%.1D5"34%"05!"75
- M%)2E5.6D5,445'4T503U-$3E]&1%5#0T(@,-0"#L`X@QX.0#(S(P<P4C,A!?
- M0;RITO0J,RE`````````$,";*NJ,07X6DU$0&6,L*O`"`%-U($UO(%1U(%=E
- M(%1H($9R(%-A"I-1,"(#S"U`!@#X+-DP$:!^`8"OLPWX4=LP<`E6H`@AH"]!
- MKE[XA=10#A,H:56P5IWX+]80D-@4/R`L`PU`(.P#=E;$H@*]```2`P(B`P(R
- M`P)"`P)2`P)B`P)R`P*"`P*2`Q(#`Q(3`Q(C`Q(S`Q)#`Q)3`Q)C`Q)S`Q*#
- M`Q*3`R(#`R(3`R(C`R(S`R)#`R)3`R)C`R)S`R*#`R*3`S(#`S(34RD##4`@
- M[`-9,C89!:4L9F,%VW,@+`,A<H`8`[=`P-L#,U<0&6.341`,!*5SL/E@_$$F
- MZ0+4]0`ODK,2`YTMT.8"`W1I;3,I4)D``````#!`ERJ2+D!=!.#@`X@Q($`.
- M\CJ@5F/8X8`8`X@KAB4#(S+0Y@(#9&%TP:@BKP.3&=;9`DL/!JP#*S&`&`,(
- MH])3*X@Q4"D#@:F"&`-KIX*M89TM<'IB,RF0F0``````%0!J*BLQT-D",RE@
- M````````$,F;*BLQT.8"`W1I;8@Q4"D#BJC"^F"*J%*W`X,U%J@#*S&`U!4`
- MG2U0JABRCY'_`YTM0"LJ><P@Z0+4-0!$,K`2`RLQ@-0%`)TMX*$8"4,&K`/I
- M5:"_#(@Q`/8J(S+0]"J%S.&?*MZBDE(KA<S!FRJ@IA+0'-RK`M(<Z55`IP)M
- M+C!`%D;7Y@(!;FTN$'#6Y@($97AI=&TN0!#&-D?7Y@(#=&EM;2Y`$$:7UM;F
- M`@-A;"0K,0!-!P[,(.D"U.4`DBY`71%PZ0:.;G#I!ITMD/\#TQC6V0)=0+#Q
- M/YTM0$`JDBY`71"P$@./0+#Q/YTM8#@JDBY`71"P$@.90+#Q/YTM<#0JDBY`
- M71"P$@.C0+#Q/YTMD"PJDBY`71"P$@,22[;Q/YTM@.A`$DO6V0(S*9"9````
- M```5*>D"U(4`*S&P$@-$2[;Q/YTM@.A`1$O6V0(S*9"9```````5(.D"U(4`
- M*S&P$@-U0;#Q/YTMT.8"`W1I;9=NT.8"!&%T:6TG?;`2`^E`L/$_G2W0Y@(#
- M9&%T;2Y`$$:7UM;F`@-T:6VL,:"(*KP9-B(#B#$0T!R@J(*M840RT-D",RE@
- M````````$."?*G2ILA(#DBY`70>P$@-G0+#Q/YTMT.8"`W1I;3,I4)D`````
- M`#!`ERJ2+D!=!"#I`M1E`"LQ<!`$&__3V0*2+D!=`B"O`^L[)ND"U%4`DBY`
- M71&P$@/Y/[#Q/YTM4&Y1*S&P`@0;_]/9`@,7M1(#'$NV\3^=+1"H`Y=NT.8"
- M!&5X:70G?;`2`TU!<%1C?T%P5&-$,B#A/RLQ,``$TQC6V0+S0+#Q/YTM(.D"
- MU"4`\CJPOF.`$R;I`M15`(@KAB4#DBY`70>P$@-=0+#Q/YTM(!--*S&0"00;
- M_]/9`F[1M!(#$DNV\3^=+8#H0!)+UMD",RF`F0``````$"GI`M2%`"LQL!(#
- M1$NV\3^=+8#H0$1+UMD",RF`F0``````$"#I`M2%`"LQL!(#9T"P\3^=+=#F
- M`@-T:6V2+D!=!.#@`Y(N0%T&L!(#Z4"P\3^=+=#F`@-A;"1O.B:]8X@KMOM@
- M1#+0Y@(#9&%TGA#6;@Y$,B#I`M05`2LQT!0$1S7V%P1'-48D`Q+^LQ(##4`P
- MC6&=+2"Q9!O_T]D"B`XDL62=+6`X*I(N0%T(L!(#*S%`M&0;_]/9`H@.1+1D
- MG2V0+"J2+D!="+`2`RLQT!0$1S7V%P1'-48D`Q+^LQ(#6#(@X3\K,="^"\`Z
- M,%-CEV[0Y@($97AI=)=N$.T$A8G#"A-$D;,2`TXJ0`8`^O@?B_]8]Z]&_S7T
- M#T#_4/-?(/^I\=\/_][PC_G^8>^/X_X.[>_+_B[L'Y+^KNCOI`*"````````
- M```````0!``````````````````````````````````````P`@`%4T-(140`
- /4$#4.!3$%``>`$`!`+,S
- `
- end
- sum -r/size 19520/4322 section (from "begin" to "end")
- sum -r/size 60310/3120 entire input file
- END_UU
-