john13@garfield.UUCP (04/27/87)
[] Here is a quick way to create your own menus within somebody else's program. It uses a "bare-bones" data extension linked on to the UserData of a window. There is also a utility to restore the menu to its original state _before_ you close it. Note that if I was going to give this to a beginner to use with his machine, I would set up the necessary script files first, and modify the program so that the window was prevented from closing until RESTORE was run on it. All the rest of it is explained in the docs. Have fun! Note that some programs do indeed Guru when this is run, due to their use of the UserData of their window. Use something like the Transactor's structure browser to determine this, or just some trial-and-error when you *don't* have the Great American Novel or 2 megs of spreadsheet in memory. There is debugging info printed so you can tell what is going on. Like I said before, you could use this to translate into Swahili or whatever you wanted to. I think that would fall under the definition of "finding the program useful" :-). John Russell john13@garfield.mun.cdn 5 Alderdice Place john13@garfield.UUCP St. John's, NF (Canada) A1B 2P8 (709) 726-7847 -----Cut Here-----Cut Here-----Cut Here-----Cut Here----- #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # menu.doc # menutext.c # restore.c # menutext.uue # restore.uue echo shar: extracting menu.doc sed 's/^X//' << 'END_OF_FILE' > menu.doc X/*------------------------------------------------------------------------*/ X XAlong with this documentation file, you should also find 2 programs, MENUTEXT, Xand RESTORE. Together these programs allow you to customize the text of other Xpeople's menus; if you have ADD, you can also modify the keyboard shortcuts Xof a running program. X X/*------------------------------------------------------------------------*/ X XMENUTEXT X-------- X This program has been written to be "friendly" - it makes changes to the XIntuition structures of a window's menu, but also changes the window in a Xway that could easily be detected by a program that had certain checks built Xin. X You specify the window, the numbers of the menu, item, and sub-item, Xand replacement text. The program extrapolates from this how wide the hitbox Xof the menu should be (that's the space that gets reversed or "boxed in" while Xyou move around in the menu), and adds some extra room so that keyboard Xshortcuts don't overlap the displayed text. I've been careful to see that Xyou can't violate the rules of menu design and seperate a menu item from its Xsubmenu section. X XSample usage: X Xmenutext Notepad 4 1 Dull ; change text of first item in fourth menu from X ; "Plain" to "Dull" X Xmenutext VT100 1 1 Download_Ascii_File ; change first item of first menu X XBut that is not very aesthetically pleasing, so... X Xmenutext VT100 1 1 -ask ; it will prompt for text, which *can* include X ; spaces X Xmenutext VT100 2 1 5 Forget_it! ; note you can use 3 numbers to specify X ; sub-menu position X XRestrictions: The window name you specify *is* case-sensitive. X Only the first word of the window name is significant. X No screen is specified; they are *all* searched. X Only 44 characters of menu text are significant. X With the "-ask" option, you may Guru if you enter >100 letters. X If the window is closed before you run RESTORE, you will end X up with little spots of allocated memory that you can never X reclaim. X *** Some windows may not be suitable for this. In technical terms, X if the window's UserData is non-null, you may crash. In X layman's terms, if you've never tried this on a window, X you may get a big red flashing box. The Workbench window X in particular seems to set its UserData to some random X value. X No attempt has been made to optimize or shrink this program; X it still prints debugging information. Please let me know X if you find a program which is incompatible. X X/*------------------------------------------------------------------------*/ X XRESTORE X------- X If you have made changes to window "Foo" with MENUTEXT, you can restore Xthe menu to its original state by saying "restore Foo". You will get some Xdebugging info which tells you what definitions had been changed. X X*** If you run this program and specify a window which uses its UserData Xfor anything else, you may crash. This will probably happen during MENUTEXT, Xthough. X X If the width of a menu has been stretched by the addition of a long text Xstring, it may stay stretched even after you restore it. Don't worry about Xthis, it will go away if Intuition reconsiders its menu display - otherwise Xit can be ignored. X X((c)) 1987, John Russell. Unlimited distribution, but donations to Xstarving programmers welcome. X XJohn Russell X5 Alderdice Place XSt. John's, Newfoundland, Canada XA1B 2P8 X(709) 726-7847 X X END_OF_FILE echo 'Orignal Sum -> 52685 4' echo -n 'Current Sum -> ' sum menu.doc echo shar: extracting menutext.c sed 's/^X//' << 'END_OF_FILE' > menutext.c X/* X * This program will create new text for a specified menu item. X * The new text will reside in a node linked on to the UserData X * field of the window it resides in. X * X * Problem: the new text will never be de-allocated unless by X * this program (ie it stays around and waits for the window to X * close). Or by another program that looks at the window->UserData X * field. Use the RESTORE program I've included with this one to X * unlink the new menuitems before closing the window. X * X * ((c)) 1987, John Russell. Unlimited distribution, but donations to X * starving programmers welcome. X * X */ X X#include "intuition/intuition.h" X#include "stdio.h" X#include "exec/memory.h" X Xchar *name = "John Russell"; Xchar *address = "5 Alderdice Place"; Xchar *province = "St. John's, Newfoundland, Canada"; Xchar *postal_code = "A1B 2P8"; Xchar *phone = "(709) 726-7847"; X Xvoid copy(); Xchar *gets(); /* I couldn't seem to get this to "clip" properly */ X Xstruct IntuitionBase *IntuitionBase; X Xstruct node { X struct node *next; /* link to next node */ X char text[46]; /* buffer for menu text */ X char *old_text; /* save location for program's pointer */ X short old_item_width; /* save location for hitbox width */ X struct MenuItem *altered; /* pointer to menuitem we alter */ X} *node,*ptr,*findnode(); X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X struct Window *window; X struct Screen *screen; X struct MenuItem *item; X struct Menu *menu,*main_menu; X int x,text; X short width; X char line_buf[100]; /* buffer for gets() to handle too-long strings */ X X text = argc-1; /* *argv[text] == text to assign */ X X if ((IntuitionBase=(struct IntuitionBase *) X OpenLibrary("intuition.library",0L))==NULL) { X puts("Where is Intuition gone???\n"); X exit(0); X } X X/* print instructions if wrong number of arguments */ X X if ((argc > 6) || (argc < 5)) { X puts("Usage: menutext <window> <menunum> <itemnum>\n\ X [ <subitemnum> ] <new_text | \"-ask\">"); X puts("\nEG - menutext FooBar 1 4 testing\n\ X menutext VT100 2 1 3 high_speed\n\ X menutext Notepad 1 1 -ask"); X exit(0); X } X X Forbid(); X X screen = IntuitionBase->FirstScreen; /* address of Workbench screen structure */ X X while (screen) { /* do all screens */ X X window = screen->FirstWindow; X X while (window) { /* do all windows */ X X if (compare(argv[1],window->Title)==0) { /* search for name */ X X x=atoi(argv[2]); /* menu # */ X menu = window->MenuStrip; X main_menu = menu; /* main menu of window for SetMenuStrip */ X X while (--x > 0) { /* scan menu list */ X if ((menu = menu->NextMenu) == NULL) X goto quit; X } X X x = atoi(argv[3]); /* item # */ X item = menu->FirstItem; Xsubmenu: X while (--x > 0) { /* scan item list */ X if ((item = item->NextItem) == NULL) X goto quit; X } X X if (argc==6) { /* descend into sub-menu? */ X argc=0; X item=item->SubItem; X x=atoi(argv[4]); /* sub-item # */ X goto submenu; X } X X ClearMenuStrip(window); /* disable menu structure */ X X/* X * First check to see if this menu item has already been redefined, by X * scanning the list from window->UserData. If it has, do no node creation X * or re-linking, just copy the text over the node's old text. X * X * If this is the first time the menu item has received new text, create X * a new node, record which menu item is being altered, and preserve a X * pointer to the original text used by the program, so we can undo all X * of this later. Also record how wide the original hitbox was for future X * reference. X * X * A new hitbox width is created if a new, longer string is put into the X * menu. If a keyboard shortcut exists for that item, the hitbox is widened X * to take that into account. X * X */ X X if ( (node = findnode(window,item)) == NULL) { X X node = (struct node *) X AllocMem(sizeof(struct node),MEMF_CHIP|MEMF_CLEAR); X node->next = window->UserData; /* insert in first place */ X window->UserData = node; /* link into window structure */ X node->altered = item; X node->old_text = item->ItemFill->IText; /* save old text */ X node->old_item_width = item->Width; /* save old width */ X item->ItemFill->IText = node->text; /* change menu itself */ X X } X X if (compare(argv[text],"-ask")) { X copy(argv[text],node->text); /* special strncpy() */ X } X else { X printf("Enter new menu text: "); X gets(line_buf,45); /* "45" ignored? seems that way */ X copy(line_buf,node->text); X } X X/* alter width if necessary, so you don't have long menutexts with very */ X/* short complemented or boxed areas. font-size is fixed at 8 because */ X/* the "TextAttr" structure is not in the Intuition manual, and the RKM */ X/* is not handy. */ X X width = ((length(node->text)) * 8) + X (item->Flags & COMMSEQ ? COMMWIDTH : 0); X X if (width > node->old_item_width) { X item->Width = width; /* don't shorten, just lengthen */ X } X X/* debugging info left in. This program, although it works fine, can be */ X/* (and will be) revised extensively. */ X X ptr = window->UserData; X X printf("Replacing menutext \"%s\" with \"%s\"\n\n", X node->old_text,node->text); X X printf("Current changed definitions:\n"); X X while (ptr) { X printf("\tOld text: %s\n\tNew text: %s\n\n", X ptr->old_text,ptr->text); X ptr = ptr->next; X } X X SetMenuStrip(window,main_menu); /* give it back */ X } X window = window->NextWindow; X } X screen = screen->NextScreen; X } X X quit: X Permit(); X CloseLibrary(IntuitionBase); X X} X Xcompare(string1,string2) /* if spaces in windowname, only check first word */ Xchar *string1,*string2; X{ X while ((*string1 != '\0') && (*string1 != ' ')) { X if (*string1++ != *string2++) /* space and null both end conditions */ X return(1); X } X return(0); /* return weird values like strcmp() */ X} X Xvoid copy(string1,string2) /* modified strncpy */ Xchar *string1,*string2; X{ X int count = 44; /* (44 + space + null) will fill available buffer */ X X while ((*string1 != '\0') && count) { X *string2++ = *string1++; X count--; X } X *string2++ = ' '; /* always end string with space + null */ X *string2++ = '\0'; /* otherwise menus with shortcuts are messy */ X} X Xstruct node *findnode(window,item) /* does item already have attached node? */ Xstruct Window *window; Xstruct MenuItem *item; X{ X struct node *ptr; X X ptr = window->UserData; X X while (ptr) { X if (ptr->altered == item) /* if desired item already redefined */ X return(ptr); /* this is the node to use */ X X ptr = ptr->next; X } X X return(NULL); /* search failed, send message to create and link node */ X} X Xlength(string) /* I hate (and don't really trust) std C string functions */ Xchar *string; X{ X int x=0; X X while (*string++) X x++; X X return(x); X} X END_OF_FILE echo 'Orignal Sum -> 04820 8' echo -n 'Current Sum -> ' sum menutext.c echo shar: extracting restore.c sed 's/^X//' << 'END_OF_FILE' > restore.c X/* X * This program will strip a window of nodes linked to the UserData field. X * These nodes *must* be of the size given below (in the absence of some X * other type of node). X * X * The nodes are used by MENUTEXT to link new menu text definitions to an X * open window; if this program is not run before the window is closed, X * the memory will never be freed and fragmentation will result. X * X * An extension which I may include later is actually dis-allowing all X * CLOSEWINDOW messages from reaching the window until this program is X * run. Easy, but intimidating for someone who isn't familiar with the X * workings of the program. X * X * ((c)) 1987, John Russell. Unlimited distribution, but donations to X * starving programmers welcome. X * X */ X X#include "intuition/intuition.h" X#include "exec/memory.h" X#include "stdio.h" X Xvoid copy(); X Xchar *name = "John Russell"; Xchar *address = "5 Alderdice Place"; Xchar *province = "St. John's, Newfoundland, Canada"; Xchar *postal_code = "A1B 2P8"; Xchar *phone = "(709) 726-7847"; X Xstruct IntuitionBase *IntuitionBase; X Xstruct node { X struct node *next; X char text[46]; X char *old_text; X short old_item_width; X struct MenuItem *altered; X} *ptr,*next; X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X struct Window *window; X struct Screen *screen; X X if ((IntuitionBase=(struct IntuitionBase *) X OpenLibrary("intuition.library",0L))==NULL) { X puts("Where is Intuition gone???\n"); X exit(0); X } X X if (argc != 2) { X puts("You must supply the name of a window. The name is case-sensitive,\n\ Xbut only the first word in the name is considered."); X exit(0); X } X X Forbid(); X X screen = IntuitionBase->FirstScreen; /* address of Workbench screen structure */ X X while (screen) { /* do all screens */ X X window = screen->FirstWindow; X X while (window) { /* do all windows */ X X if (compare(argv[1],window->Title)==0) { /* search for name */ X X ptr = window->UserData; X X while (ptr) { /* restore menu to original condition */ X X next = ptr->next; X X printf("Deleting menutext entry \"%s\"\n",ptr->text); X printf("Replacing original entry \"%s\"\n\n",ptr->old_text); X X ptr->altered->ItemFill->IText = ptr->old_text; X ptr->altered->Width = ptr->old_item_width; X X FreeMem(ptr,sizeof(struct node)); X ptr = next; X } X window->UserData = NULL; /* it was all a dream... */ X } X window = window->NextWindow; X } X screen = screen->NextScreen; X } X X quit: X Permit(); X CloseLibrary(IntuitionBase); X X} X Xcompare(string1,string2) /* if spaces in windowname, only check first word */ Xchar *string1,*string2; X{ X while ((*string1 != '\0') && (*string1 != ' ')) { X if (*string1 != *string2) /* space and null both end conditions */ X return(1); X string1++; X string2++; X } X return(0); /* return weird values like strcmp() */ X} END_OF_FILE echo 'Orignal Sum -> 59281 4' echo -n 'Current Sum -> ' sum restore.c echo shar: extracting menutext.uue sed 's/^X//' << 'END_OF_FILE' > menutext.uue Xbegin 600 menutext XM #\P # ( 9< TP /I &7$ZY ( XM*DIO:&X@4G5S<V5L; -2!!;&1E<F1I8V4@4&QA8V4 4W0N($IO:&XG<RP@ XM3F5W9F]U;F1L86YD+"!#86YA9&$ $$Q0B R4#@ *#<P.2D@-S(V+3<X-#< XM $Y5_WXF+0 (4X,K0__D0J=(>@,*3KH8GE!/*4""KDJ 9A)(>@,*3KH&5%A/ XM0J=.NA,H6$\,K0 8 "&X*#*T % AL'$AZ P!.N@8N6$](>@-/3KH& XM)%A/0J=.NA+X6$].NA@F+&R"KBMN #S_^$JM__AG *2+&W_^"MN 3__$JM XM__QG )T+&W__"\N " L;0 ,+RX !$ZZ ^903TJ 9@ "3"QM PO+@ (3KH$ XMSEA/*T#_Z"QM__PK;@ <__ K;?_P_^Q3K?_H#*T _^AO$BQM__ K5O_P XM2JW_\&< B1@X"QM PO+@ ,3KH$C%A/*T#_Z"QM__ K;@ 2__13K?_H#*T XM _^AO$BQM__0K5O_T2JW_]&< >A@X RM !@ (9B)"K0 (+&W_]"MN XM !S_]"QM PO+@ 03KH$.%A/*T#_Z&"T+RW__$ZZ%YY83R\M__0O+?_\3KH# XMP%!/*4""LDJ 9F9(>0 ! )(> \3KH6\%!/*4""LBQL@K(B;?_\+*D >"QM XM__PM;(*R '@L;(*R+6W_] X+&R"LB)M__0@:0 2+6@ # R+&R"LB)M__0] XM:0 ( #8L;?_T(FX $B8L@K)8@R-# Q(>@(O)BW_Y.6#+&T #"\V. !.N@*8 XM4$]*@&<>+&R"LDAN 0F+?_DY8,L;0 ,+S8X $ZZ LA03V J2'H!^DZZ!HI8 XM3TAX "U(;?]^3KH#^E!/+&R"LDAN 1(;?]^3KH"G%!/+&R"LDAN 1.N@,8 XM6$_G@"QM__1V #8N S&O 1G!'8;8 )V -"#.T#_XC8M_^)(PRQL@K(T XM+@ V2,*V@F\*+&W_]#UM_^( ""QM__PI;@!X@K8L;(*R2&X !"QL@K(O+@ R XM2'H!@$ZZ!?I/[P ,2'H!F$ZZ!>Y83TJL@K9G)BQL@K9(;@ $+&R"MB\N #)( XM>@&63KH%SD_O PL;(*V*5:"MF#4+RW_["\M__Q.NA844$\L;?_\*U;__& XM_8@L;?_X*U;_^& _6I.NA6\+RR"KDZZ%4I83TY=3G5I;G1U:71I;VXN;&EB XM<F%R>0!7:&5R92!I<R!);G1U:71I;VX@9V]N93\_/PH 57-A9V4Z(&UE;G5T XM97AT(#QW:6YD;W<^(#QM96YU;G5M/B \:71E;6YU;3X*(" @(" @(%L@/'-U XM8FET96UN=6T^(%T@/&YE=U]T97AT('P@(BUA<VLB/@ *14<@+2!M96YU=&5X XM="!&;V]"87(@,2 T('1E<W1I;F<*(" @("!M96YU=&5X="!65#$P," R(#$@ XM,R!H:6=H7W-P965D"B @(" @;65N=71E>'0@3F]T97!A9" Q(#$@+6%S:P M XM87-K $5N=&5R(&YE=R!M96YU('1E>'0Z( !297!L86-I;F<@;65N=71E>'0@ XM(B5S(B!W:71H("(E<R(*"@!#=7)R96YT(&-H86YG960@9&5F:6YI=&EO;G,Z XM"@ )3VQD('1E>'0Z("5S"@E.97<@=&5X=#H@)7,*"@!.50 +&T "!862(-( XMPTJ#9SHL;0 (%A9(@TC#MKP @9R@L;0 (4JT "!862(-(PRQM Q2K0 , XM%!9(@DC"MH)G!G !3EU.=6"X< !@]DY5__PK? "S__"QM @6%DB#2,-* XM@V<>2JW__&<8+&T #%*M PB;0 (4JT "!R14ZW__+&T #%*M P<O @ XM+&T #%*M Q"%DY=3G5.5?_\+&T ""MN 'C__$JM__QG("QM__PB;@ XL^T XM#&8(("W__$Y=3G4L;?_\*U;__&#:< !@[DY5__Q"K?_\+&T "%*M A*%F<& XM4JW__&#N("W__$Y=3G5.50 2.<,("1M @6$DB#2,.VO "!G#A822(-( XMP[:\ "68$4HI@X'H %A)(@TC#MKP M9@9Z 5**8! 6$DB#2,.VO XM "MF E**> !@'"Q*4HH6%DB#2,,@!'(*3KH1OM: * .8O # 6$DB#2,-- XM[('I%#8X $B"2,+$O 1FRDJ%9P8@!$2 8 (@!$S?!#!.74YU3E4 $CG XM"" D;0 (3KH /"@ L+S_____9Q"XO IG""Q*4HH<A&#B0A*XO/____]F XM$+7M AF"G 3-\$$$Y=3G4@+0 (8/).50 2&R *$ZZ %Q83TY=3G5.50 XM+PHD;0 (2A)G)"Q*4HH6%DB#2,,O TZZ ")83["\_____V8(</\D7TY=3G5@ XMV$AX I.N@ &6$]@[$Y5 !(;( ^+RT "$ZZ .903TY=3G5.50 2.<(("1M XM @O"DZZ #)83R@ L+S_____9R @!& 44Y( *@ ( QP_TS?!!!.74YU8-9* XM@&?Z68!GY" $8.I.50 2.<(("1M @L4KWJ 1E=A8J Q(@TC#QKP 8 XM9PIP_TS?!!!.74YU BH ^P ,2JH "&8(+PI.N@FP6$\V*@ 02,,O R\J @6 XM*@ -2(-(PR\#3KH I$_O PH +"\ &X22H1F!'8(8 )V$(<J QP_V"J XM)*H ""8J C6A"5# 0L4E*2$!9(@$C P+P #_8(I.50 +P0H+0 (+RT XM#"\$3KH&]E!/*!].74YU(E^2_ *(A'2@=*!*$'9_ @ )#[()J1>R":K7) XM9@XR/ X:PAT "+"4<G__"E/@KHL> $*4Z"ODCG@(!.N@ML4$].=4Y5 !( XMYPP@*"T "$ZZ"N8@!'(&3KH/?DWL@L(D0-7.N+P ;0RXO !-N!$J2 XM9A(I? .#.G#_3-\$,$Y=3G4V*@ $2,/&O .VO %F#"E\ XM!H,Z</]@V"\M ! O+0 ,+Q).N@^H3^\ #"H L+S_____9@Q.N@]L*4"#.G#_ XM8+ @!6"L3E4 "\$3>R";BE.@FI(;0 ,+RT "$AZ &9.N@& 3^\ #"@ -BR XM3DC#MKP !9B1-[()N)BR":I:.+P-(;()N%BR 2TB#2,,O TZZ"8A/[P , XM8"!(;( ^3>R";B8L@FJ6CB\#2'@ 4AL@FY.N@523^\ $" $*!].74YU3E4 XM "QL@FI2K()J'*T "TWL@FXF+()JEHZVO "AF6C8L@$Y(P[:\ 68D XM3>R";B8L@FJ6CB\#2&R";A8L@$M(@TC#+P-.N@D,3^\ #& @2&R /DWL@FXF XM+()JEHXO TAX %(;()N3KH$UD_O !!-[()N*4Z":B M C O /].74YU XM3E4 $CG"" D;0 0#*T $ !1F""QM @H%F 8#*T QO""QM @H XM%F &+&T ""@60JT % RM ,;!9$K0 ,N+P ; I$A"M\ 0 4 XM4XH@!"(M Q.N@/R3>R %A2V" @!"(M Q.N@/F* !*@&;<2JT %&<&4XH4 XMO M( I,WP003EU.=4Y5_Q1(YP@P)&T ""9M Q"K?_X*VT $/_\+$M2BQ86 XM2(-(PR@#2H-G -2N+P E9@ #+$(M_R(K? '_]"M\ (/_P*WP XM "<0_^PL2U*+%A9(@TC#* .VO "UF$$*M__0L2U*+%A9(@TC#* .XO XM #!F%"M\ ,/_P+$M2BQ862(-(PR@#N+P J9AHL;?_\6*W__"M6_^@L XM2U*+%A9(@TC#* -@/$*M_^A@(B M_^AR"DZZ#*30A)"\ ,"M _^@L2U*+ XM%A9(@TC#* --[('I%C9( $B#2,/&O 1FRKB\ +F9J+$M2BQ862(-( XMPR@#MKP J9AHL;?_\6*W__"M6_^PL2U*+%A9(@TC#* -@/$*M_^Q@(B M XM_^QR"DZZ##+0A)"\ ,"M _^PL2U*+%A9(@TC#* --[('I%C9( $B#2,/& XMO 1FRBM\ !/_DN+P !L9A8L2U*+%A9(@TC#* ,K? 3_Y& 4 XMN+P !H9@PL2U*+%A9(@TC#* ,@!&!^*WP (_^!@'"M\ "O_@8!(K XM? !#_X& (*WS____V_^ O+?_D2&W_(B\M_^ O+?_\3KK]E$_O ! K0/_< XM)BW_Y->M__Q@6BQM__Q8K?_\*U;_W"\M_]Q.N@K86$\K0/_D8$HL;?_\6*W_ XM_"@63>W_(2M._]P<A& HD+P !C9^)3@&>4D+P +9P#_;EF 9[15@&< XM_VY7@&< _W)@S$WM_R*=[?_<*T[_Y"8M_^2VK?_L;P8K;?_L_^1*K?_T9P XM@BQM_]P6%DB#2,.VO "UG$BQM_]P6%DB#2,.VO "MF- RM ,/_P XM9BI3K?_H+&W_W%*M_]P6%DB#2,,O TZ26$^PO/____]F"G#_3-\,$$Y=3G5@ XM&"\M__!.DEA/L+S_____9@1P_V#B4JW_^"8M_^A3K?_HMJW_Y&[:0JW_X& D XM+&W_W%*M_]P6%DB#2,,O TZ26$^PO/____]F!'#_8*I2K?_@+&W_W$H69PHF XM+?_@MJW_[&W*)BW_X->M__A*K?_T9BI@&DAX "!.DEA/L+S_____9@9P_V XM_W!2K?_X)BW_Z%.M_^BVK?_D;MA@&"\$3I)83["\_____V8&</]@ /](4JW_ XM^& _* @+?_X8 #_."\$0H1*@&H$1(!21$J!:@9$@0I$ %A+$I$9P)$@"@? XM3G4O!$*$2H!J!$2 4D1*@6H&1($*1 !80H@ 6#:800@ 4YU2.<P $A!2D%F XM*$A!0D. P6@.- !"0$A @,$V # "@,$B $A , -(0$)!2$%,WP ,3G5(04*" XM=A_C@..2E(%K$%* 4<O_]& .XX#CDM2!:O!1R__VU($B DS? Q.=4Y5 !( XMYPP@)&T "" M PB+0 03KH)*BH > !@*B\M !0L2E**%A9(@TC#+P-.N@ B XM4$^PO/____]F"G 3-\$,$Y=3G52A+B%9=(@+0 08.Q.50 +PHD;0 ,+%*] XMZ@ $91HF+0 (QKP #_+P,O"DZZ .I03R1?3EU.=2Q24I(0+0 +'(!(@$C XMP+P #_8.1.50 +PI-[( H)$XL2M7\ %B\.81!83TWL@>"USF7J)%]. XM74YU3E4 $CG"" D;0 (> F"F8*</],WP003EU.=4HJ QG;!8J Q(@TC# XMQKP $9PQ(>/__+PIA:%!/* 6*@ -2(-(PR\#3KH'W%A/B( 6*@ ,2(-( XMP\:\ F<*+RH "$ZZ EA83Q8J Q(@TC#QKP @9Q0O*@ 23KH"M%A/ XM+RH $DZZ C183T*20JH !$*J A"*@ ,( 1@ /]T3E7__DCG"" D;0 (3?K_ XM*"E.@> 6*@ ,2(-(P\:\ $&<*</],WP003EU.=18J Q(@TC#QKP $ XM9S(H$IBJ @O!"\J @6*@ -2(-(PR\#3KH"8$_O RPA&<0 "H $ ,0I)" XMJ@ $</]@M@RM_____P ,9A "*@#[ Q"DD*J 1P &"<2JH "&8(+PI.N@"J XM6$\V*@ 02,.VO %F,!MM ___TAX %(;?__%BH #4B#2,,O TZZ ?9/ XM[P ,L+P !9I(@+0 ,8 #_4B2J @V*@ 02,/6J@ ()4, ! J 0 #"Q2 XM4I(0+0 /'(!(@$C P+P #_8 #_(DY5 O"DWL@"@D3DHJ QG&-7\ XM%DWL@>"USF4(< D7TY=3G5@XD*20JH !$*J @@"F#J3E7__"\*)&T "!8J XM U(@TC#+P-.N@$46$]*@&<8-7P 0 0)@K6O XE0P ()%].74YU2'@$ XM $ZZ ))83RM __Q*@&?6-7P$ 0 "H @ ,)6W__ (8-1.50 2.< ,"1L XM@I9@%"92+&H !$AN @O"DZZ!R!03R1+)@IFZ$*L@I9,WPP 3EU.=4Y5 O XM"DWZ_\8I3H'D0J<L;0 (2&X "$ZZ!LI03R1 2H!F"' )%].74YU)*R"EB5M XM @ !"E*@I8@"E" 8.9.50 +RT "&&V6$].74YU3E4 $CG #"7RR1L@I9@ XM#BQM A1CKW*9Q(F2B12)@IF[G#_3-\, $Y=3G4F"V<$)I)@!"E2@I8L:@ $ XM2&X ""\*3KH&=E!/< !@V$Y5 @+0 (<@9.N@5N3>R"PB\V" !.N@7&6$]* XM@&<$< %@ D* 3EU.=4Y5 O+0 (3KH%@EA/2H!F#DZZ!9@I0(,Z</].74YU XM< !@^$Y5 !(YPP@*"T "$ZZ 'X@!'(&3KH%%DWL@L(D0-7.N+P ;0RX XMO !-N!$J29A(I? .#.G#_3-\$,$Y=3G4V*@ $2,/&O -F#"E\ XM !H,Z</]@WB\M ! O+0 ,+Q).N@543^\ #"H L+S_____9@Q.N@4**4"# XM.G#_8+8@!6"R3E7__$AX$ !"ITZZ!<Q03RM __S O $ !F!G 3EU.=4JL XM@SYF!B M__Q@\$AX 1(>@ <3KH$YB\ 3KH$]D_O Q(> !3KH "EA/8,Y> XM0PH 3E4 $JL@>!G!BQL@>!.EB\M A.N@+26$].74YU3E7__$CG#C!(> ? XM2'H"GDZZ!3!03RE @T)*@&840J=(>0 #@ =.N@2H4$\N;(*Z3G5(> ?2'H" XM@$ZZ!0903RE @T9*@&800J=(>0 #@ 5.N@1^4$]@U$*G3KH$KEA/)D!*JP"L XM9P !HB8K *SE@RH#+$4F+@ 0Y8,D0Q822(-(P]:M A4@RE#@IY"IR\L@IY. XMN@1H4$\I0(*F%A)(@TC#+P-(:@ !+RR"IDZZ P)/[P ,2'H"$A822(-(P]:L XM@J8O TZZ LA03RQM A(;@ !+RT #"\L@J9.N@*03^\ #$*L@IHD;(*F%A)( XM@TC#3>R!Z10V. !(@DC"Q+P 09P12BF#B%A)(@TC#MKP @;386$DB# XM. -*0V<83>R!Z18V0 !(@TC#QKP 09@12BF#>+$I2BD(6=@ V!$J#9P92 XMK(*:8)Y"$D*G)BR"FE*#Y8,O TZZ Z!03RE @J)X "1L@J9@.A822(-(PTWL XM@>D4-C@ 2()(PL2\ $&<$4HI@XG8 -@3E@RQL@J(MBC@ +PI.N@("6$]2 XM@-7 4D1V #8$MJR"FF6\=@ V!.6#+&R"HD*V. !.N@+"*4""PCE\@ ""QDZZ XM MXI0(+(.7R 8+,3KH"T"E @LXY?( !@M(I? &#/B\L@J(O+(*:3KKJ XMD%!/0J=.N@#(6$]@ "<2&L 7$ZZ V183TAK %Q.N@,86$\I0(*J+&R"JDJN XM "1G$"QL@JHB;@ D+Q%.N@(F6$\L;(*J2JX (&=,2'@#[2QL@JHO+@ @3KH" XM2E!/*4""PDJ 9S(I;(+"@LXI;(+"@L@Y?( @L8Y?( !@M(Y?( !@LPF+(+" XMY8,K0__\+&W__"=N @ I"\L@JI"ITZZZ?!03T*G82A83TS?#'!.74YU9&]S XM+FQI8G)A<GD ;6%T:&9F<"YL:6)R87)Y " 3E7__$*M__PO+?_\3KH ^%A/ XM4JW__ RM "O_\;>A*K('D9P8L;('D3I9*K(-*9PHO+(-*3KH!ZEA/2JR# XM1F<*+RR#1DZZ =I83TJL@JIF+B\L@IXO+(*F3KH!_%!/)BR"FE*#Y8,O R\L XM@J).N@'H4$\O+0 (3KH!,EA/8!A.N@'.+RR"JDZZ @983R M @N;(*Z3G5. XM74YU,#Q__V $,"\ #B!O 1*&&;\4T@B;P (4T 0V5?(__Q"(" O 1.=2!O XM 0@"")O @0V6;\3G4@;P $( A*&&;\D< @"%. 3G5,[P, 0@""(O Q@ XM A#95\G__%)!8 )"&%')__Q.=4Y5 !(YPX@*"T "" $<@9.N@!,3>R"PB1 XMU<ZXO !M#+B\ $VX$2I)F$BE\ X,Z</],WP1P3EU.=38J 1( XMP\:\ " &8(+Q).N@ N6$]"DG 8-Q(YS - '$P"8!2$/&P$A#0D/4@TA XMP,%(0$) T(),WP ,3G4B+P $+&R#0D[N_]PB+P $+&R#0D[N_X(B+P $+&R# XM0D[N_[@B+P $+&R#0D[N_W L;(-"3N[_RBQL@T).[O]\(B\ !"QL@T).[O\H XM3.\ !@ $+&R#0D[N_^(L;(-"3N[_Q$SO X !"QL@T).[O_63.\ #@ $+&R# XM0D[N_]!(YP$$3.\@@ ,+&R"ODZN_Y1,WR" 3G5.^@ "(F\ !"QL@KY.[OYB XM3OH DSO , !"QL@KY.[O\Z(F\ !"QL@KY.[O[:3OH BQL@KY.[O]\(F\ XM!" O @L;(*^3N[_+B!O 0L;(*^3N[^C$[Z (L;(*^(F\ !" O A.[OW8 XM+&R"OD[N_W8B;P $+&R"OD[N_H9,[P # 0L;(*^3N[^SB!O 0L;(*^3N[^ XM@"!O 0L;(*N3N[_RDSO P !"QL@JY.[O[X #[ $ @ XM /Q @ #\@ ^H ": !@ !0 F XM2 % P,3(S-#4V-S@Y86)C9&5F ! $ XM 0$ ! $" 0 XM XM XM XM XM XM XM XM XM " @(" @(" @(# P,# P(" @(" @(" @ XM(" @(" @(" @D$! 0$! 0$! 0$! 0$! 0 P,# P,# P,# Q 0$! 0$! "0D) XM"0D) 0$! 0$! 0$! 0$! 0$! 0$! 0% 0$! 0$ *"@H*"@H" @(" @(" @(" XM @(" @(" @(" D! 0$ @ ^P % $ " P XG 0 _$ " /R #ZP /R X Xend END_OF_FILE echo 'Orignal Sum -> 53400 10' echo -n 'Current Sum -> ' sum menutext.uue echo shar: extracting restore.uue sed 's/^X//' << 'END_OF_FILE' > restore.uue Xbegin 600 restore XM #\P # ( 3Q TP /I $\4ZY # XM.$IO:&X@4G5S<V5L; -2!!;&1E<F1I8V4@4&QA8V4 4W0N($IO:&XG<RP@ XM3F5W9F]U;F1L86YD+"!#86YA9&$ $$Q0B R4#@ *#<P.2D@-S(V+3<X-#< XM $Y5__A"ITAZ 2Y.NA,64$\I0(*N2H!F$DAZ 2Y.N@)*6$]"ITZZ#:Y83PRM XM @ (9Q)(>@$N3KH"+EA/0J=.N@V26$].NA*N+&R"KBMN #S_^$JM__AG XM #*+&W_^"MN 3__$JM__QG "L+&W__"\N " L;0 ,+RX !$ZZ 9A03TJ XM9@ A"QM__PI;@!X@K)*K(*R9VHL;(*R*5:"MBQL@K)(;@ $2'H!+4ZZ FY0 XM3RQL@K(O+@ R2'H!.4ZZ EQ03RQL@K(B;@ X+&D $B)L@K(M:0 R PL;(*R XM(FX ."QL@K(S;@ V A(> \+RR"LDZZ$@I03REL@K:"LF"0+&W__$*N '@L XM;?_\*U;__& _U L;?_X*U;_^& _S).NA(0+RR"KDZZ$9Y83TY=3G5I;G1U XM:71I;VXN;&EB<F%R>0!7:&5R92!I<R!);G1U:71I;VX@9V]N93\_/PH 66]U XM(&UU<W0@<W5P<&QY('1H92!N86UE(&]F(&$@=VEN9&]W+B!4:&4@;F%M92!I XM<R!C87-E+7-E;G-I=&EV92P*8G5T(&]N;'D@=&AE(&9I<G-T('=O<F0@:6X@ XM=&AE(&YA;64@:7,@8V]N<VED97)E9"X 1&5L971I;F<@;65N=71E>'0@96YT XM<GD@(B5S(@H 4F5P;&%C:6YG(&]R:6=I;F%L(&5N=')Y("(E<R(*"@ 3E4 XM "QM @6%DB#2,-*@V<Z+&T "!862(-(P[:\ (&<H+&T "!862(-(PRQM XM P4%DB"2,*V@F<&< %.74YU4JT "%*M Q@N' 8.Y.50 +PHD;0 (2A)G XM)"Q*4HH6%DB#2,,O TZZ ")83["\_____V8(</\D7TY=3G5@V$AX I.N@ & XM6$]@[$Y5 !(;( ^+RT "$ZZ A03TY=3G5.50 +P0H+0 (+RT #"\$3KH& XM9%!/*!].74YU(E^2_ *(A'2@=*!*$'9_ @ )#[()J1>R":K7)9@XR/ X XM:PAT "+"4<G__"E/@KHL> $*4Z"ODCG@(!.N@K:4$].=4Y5 O!$WL@FXI XM3H)J2&T #"\M A(>@!F3KH!@$_O PH #8L@$Y(P[:\ 68D3>R";B8L XM@FJ6CB\#2&R";A8L@$M(@TC#+P-.N@F(3^\ #& @2&R /DWL@FXF+()JEHXO XM TAX %(;()N3KH%4D_O ! @!"@?3EU.=4Y5 L;()J4JR":ARM M-[()N XM)BR":I:.MKP H9EHV+(!.2,.VO %F)$WL@FXF+()JEHXO TAL@FX6 XM+(!+2(-(PR\#3KH)#$_O Q@($AL@#Y-[()N)BR":I:.+P-(> !2&R";DZZ XM!-9/[P 03>R";BE.@FH@+0 (P+P #_3EU.=4Y5 !(YP@@)&T $ RM XM! 49@@L;0 (*!9@& RM ,;P@L;0 (*!9@!BQM @H%D*M !0,K0 XM #&P61*T #+B\ &P*1(0K? $ %%.*( 0B+0 ,3KH#\DWL@!84 XMM@@ ( 0B+0 ,3KH#YB@ 2H!FW$JM !1G!E.*%+P +2 *3-\$$$Y=3G5.5?\4 XM2.<(,"1M @F;0 ,0JW_^"MM !#__"Q+4HL6%DB#2,,H TJ#9P #4KB\ XM)68 RQ"+?\B*WP !__0K? "#_\"M\ G$/_L+$M2BQ862(-(PR@# XMMKP M9A!"K?_T+$M2BQ862(-(PR@#N+P P9A0K? ##_\"Q+4HL6 XM%DB#2,,H [B\ *F8:+&W__%BM__PK5O_H+$M2BQ862(-(PR@#8#Q"K?_H XM8"(@+?_H<@I.N@RDT(20O # K0/_H+$M2BQ862(-(PR@#3>R!Z18V2 !( XM@TC#QKP $9LJXO "YF:BQ+4HL6%DB#2,,H [:\ *F8:+&W__%BM XM__PK5O_L+$M2BQ862(-(PR@#8#Q"K?_L8"(@+?_L<@I.N@PRT(20O # K XM0/_L+$M2BQ862(-(PR@#3>R!Z18V2 !(@TC#QKP $9LHK? 3_Y+B\ XM ;&86+$M2BQ862(-(PR@#*WP $_^1@%+B\ :&8,+$M2BQ862(-( XMPR@#( 1@?BM\ "/_@8!PK? K_X& 2*WP 0_^!@""M\____]O_@ XM+RW_Y$AM_R(O+?_@+RW__$ZZ_91/[P 0*T#_W"8M_^37K?_\8%HL;?_\6*W_ XM_"M6_]PO+?_<3KH*V%A/*T#_Y&!*+&W__%BM__PH%DWM_R$K3O_<'(1@*)"\ XM 8V?B4X!GE)"\ "V< _VY9@&>T58!G /]N5X!G /]R8,Q-[?\BG>W_ XMW"M._^0F+?_DMJW_[&\&*VW_[/_D2JW_]&< ((L;?_<%A9(@TC#MKP M XM9Q(L;?_<%A9(@TC#MKP K9C0,K0 ##_\&8J4ZW_Z"QM_]Q2K?_<%A9( XM@TC#+P-.DEA/L+S_____9@IP_TS?#!!.74YU8!@O+?_P3I)83["\_____V8$ XM</]@XE*M__@F+?_H4ZW_Z+:M_^1NVD*M_^!@)"QM_]Q2K?_<%A9(@TC#+P-. XMDEA/L+S_____9@1P_V"J4JW_X"QM_]Q*%F<*)BW_X+:M_^QMRB8M_^#7K?_X XM2JW_]&8J8!I(> @3I)83["\_____V8&</]@ /]P4JW_^"8M_^A3K?_HMJW_ XMY&[88!@O!$Z26$^PO/____]F!G#_8 #_2%*M__A@ /R@("W_^& _S@O!$*$ XM2H!J!$2 4D1*@6H&1($*1 !82Q*1&<"1( H'TYU+P1"A$J :@1$@%)$2H%J XM!D2!"D0 6$*( %@VF$$( %.=4CG, !(04I!9BA(04)#@,%H#C0 0D!(0(#! XM-@ P H#!(@!(0# #2$!"04A!3-\ #$YU2$%"@G8?XX#CDI2!:Q!2@%'+__1@ XM#N. XY+4@6KP4<O_]M2!(@),WP ,3G5.50 2.<,("1M @@+0 ,(BT $$ZZ XM"2HJ '@ 8"HO+0 4+$I2BA862(-(PR\#3KH (E!/L+S_____9@IP $S?!#!. XM74YU4H2XA672("T $&#L3E4 "\*)&T #"Q2O>H !&4:)BT ",:\ _R\# XM+PI.N@#J4$\D7TY=3G4L4E*2$"T "QR 2(!(P,"\ _V#D3E4 "\*3>R XM*"1.+$K5_ !8O#F$06$]-[('@M<YEZB1?3EU.=4Y5 !(YP@@)&T "'@ XM)@IF"G#_3-\$$$Y=3G5**@ ,9VP6*@ ,2(-(P\:\ !&<,2'C__R\*86A0 XM3R@ %BH #4B#2,,O TZZ!]Q83XB %BH #$B#2,/&O )G"B\J A.N@)8 XM6$\6*@ ,2(-(P\:\ (&<4+RH $DZZ K183R\J !).N@(T6$]"DD*J 1" XMJ@ (0BH #" $8 #_=$Y5__Y(YP@@)&T "$WZ_R@I3H'@%BH #$B#2,/&O XM !!G"G#_3-\$$$Y=3G46*@ ,2(-(P\:\ !&<R*!*8J@ (+P0O*@ (%BH XM#4B#2,,O TZZ F!/[P ,L(1G$ J ! #$*20JH !'#_8+8,K?____\ #&80 XM BH ^P ,0I)"J@ $< !@G$JJ AF""\*3KH JEA/-BH $$C#MKP !9C ; XM;0 /__](> !2&W__Q8J U(@TC#+P-.N@'V3^\ #+"\ 6:2("T #& XM_U(DJ@ (-BH $$C#UJH ""5# 0 *@ $ PL4E*2$"T #QR 2(!(P,"\ XM_V _R).50 +PI-[( H)$Y**@ ,9QC5_ !9-[('@M<YE"' )%].74YU XM8.)"DD*J 1"J@ (( I@ZDY5__PO"B1M @6*@ -2(-(PR\#3KH!%%A/2H!G XM\ $ $"8*UKP .)4, ""1?3EU.=4AX! !.N@"26$\K0/_\2H!GUC5\ XM! $ J ( #"5M__P "+E4 $CG # D;(*68!0F4BQJ 1(;@ (+PI. XMN@<24$\D2R8*9NA"K(*63-\, $Y=3G5.50 +PI-^O_&*4Z!Y$*G+&T "$AN XM A.N@:X4$\D0$J 9@AP "1?3EU.=22L@I8E;0 ( 0I2H*6( I0@&#F3E4 XM "\M AAMEA/3EU.=4Y5 !(YP PE\LD;(*68 XL;0 (48Z]RF<2)DHD4B8* XM9NYP_TS?# !.74YU)@MG!":28 0I4H*6+&H !$AN @O"DZZ!FA03W 8-A. XM50 ("T "'(&3KH%;DWL@L(O-@@ 3KH%QEA/2H!G!' !8 )"@$Y=3G5.50 XM+RT "$ZZ!8)83TJ 9@Y.N@68*4"#.G#_3EU.=7 8/A.50 2.<,("@M A. XMN@!^( 1R!DZZ!19-[(+")$#5SKB\ &T,N+P 3;@1*DF82*7P # XM@SIP_TS?!#!.74YU-BH !$C#QKP #9@PI? :#.G#_8-XO+0 0+RT XM#"\23KH%1D_O PJ +"\_____V8,3KH%"BE @SIP_V"V( 5@LDY5__Q(>! XM0J=.N@6^4$\K0/_\P+P ! 9@9P $Y=3G5*K(,^9@8@+?_\8/!(> $2'H XM'$ZZ!.8O $ZZ!.A/[P ,2'@ 4ZZ I83V#.7D,* $Y5 !*K('@9P8L;('@ XM3I8O+0 (3KH"TEA/3EU.=4Y5__Q(YPXP2'@ 'TAZ IY.N@4B4$\I0(-"2H!F XM%$*G2'D X '3KH$FE!/+FR"NDYU2'@ 'TAZ H!.N@3X4$\I0(-&2H!F$$*G XM2'D X %3KH$<%!/8-1"ITZZ!)Q83R9 2JL K&< :(F*P"LY8,J RQ%)BX XM$.6#)$,6$DB#2,/6K0 (5(,I0X*>0J<O+(*>3KH$5E!/*4""IA822(-(PR\# XM2&H 2\L@J9.N@,"3^\ #$AZ A(6$DB#2,/6K(*F+P-.N@+(4$\L;0 (2&X XM 2\M PO+(*F3KH"D$_O Q"K(*:)&R"IA822(-(PTWL@>D4-C@ 2()(PL2\ XM $&<$4HI@XA822(-(P[:\ (&TV%A)(@S@#2D-G&$WL@>D6-D 2(-( XMP\:\ $&8$4HI@WBQ*4HI"%G8 -@1*@V<&4JR"FF">0A)"IR8L@II2@^6# XM+P-.N@..4$\I0(*B> D;(*F8#H6$DB#2,--[('I%#8X $B"2,+$O !!G XM!%**8.)V #8$Y8,L;(*B+8HX "\*3KH" EA/4H#5P%)$=@ V!+:L@IIEO'8 XM-@3E@RQL@J)"MC@ 3KH"PBE @L(Y?( @L9.N@+>*4""R#E\@ &"S$ZZ M I XM0(+..7R 8+2*7P !@SXO+(*B+RR"FDZZ\!103T*G3KH R%A/8 G$AK XM %Q.N@-66$](:P!<3KH#"EA/*4""JBQL@JI*K@ D9Q L;(*J(FX )"\13KH" XM)EA/+&R"JDJN "!G3$AX ^TL;(*J+RX ($ZZ DI03RE @L)*@&<R*6R"PH+. XM*6R"PH+(.7R (+&.7R 8+2.7R 8+,)BR"PN6#*T/__"QM__PG;@ ( *0O XM+(*J0J=.NN]T4$]"IV$H6$],WPQP3EU.=61O<RYL:6)R87)Y &UA=&AF9G N XM;&EB<F%R>0 @ $Y5__Q"K?_\+RW__$ZZ /A83U*M__P,K0 K__&WH2JR! XMY&<&+&R!Y$Z62JR#2F<*+RR#2DZZ =Q83TJL@T9G"B\L@T9.N@',6$]*K(*J XM9BXO+(*>+RR"IDZZ >Y03R8L@II2@^6#+P,O+(*B3KH!VE!/+RT "$ZZ 3)8 XM3V 83KH!O"\L@JI.N@'X6$\@+0 (+FR"NDYU3EU.=3 \?_]@!# O X@;P $ XM2AAF_%-((F\ "%- $-E7R/_\0B @+P $3G4@;P $( @B;P ($-EF_$YU(&\ XM!" (2AAF_)' ( A3@$YU3.\# $( @B+P ,8 (0V5?)__Q206 "0AA1R?_\ XM3G5.50 2.<.("@M @@!'(&3KH 3$WL@L(D0-7.N+P ;0RXO !-N XM!$J29A(I? .#.G#_3-\$<$Y=3G4V*@ $2,/&O @ !F""\23KH +EA/ XM0I)P &#<2.<P #0!Q, F 4A#QL!(0T)#U(-(0,#!2$!"0-""3-\ #$YU(B\ XM!"QL@T).[O_<(B\ !"QL@T).[O^"(B\ !"QL@T).[O^X(B\ !"QL@T).[O]P XM+&R#0D[N_\HL;(-"3N[_?"(O 0L;(-"3N[_*$SO 8 !"QL@T).[O_B+&R# XM0D[N_\1,[P . 0L;(-"3N[_T$CG 01,[R" PL;(*^3J[_E$S?((!.=4[Z XM (B;P $+&R"OD[N_F),[P # 0L;(*^3N[_.B)O 0L;(*^3N[^VD[Z (L XM;(*^3N[_?$[Z (B;P $("\ ""QL@KY.[O\N(&\ !"QL@KY.[OZ,3OH BQL XM@KXB;P $("\ "$[N_=@L;(*^3N[_=B)O 0L;(*^3N[^ADSO , !"QL@KY. XM[O[.(&\ !"QL@KY.[OZ #[ $ @ /Q @ XM #\@ ^H ": !@ !0 F 2 % P,3(S-#4V XM-S@Y86)C9&5F ! $ XM 0$ ! $" 0 XM XM XM XM XM XM XM XM XM " @(" @(" @(# P,# P(" @(" @(" @(" @(" @(" @D$! XM0$! 0$! 0$! 0$! 0 P,# P,# P,# Q 0$! 0$! "0D)"0D) 0$! 0$! 0$! XM 0$! 0$! 0$! 0% 0$! 0$ *"@H*"@H" @(" @(" @(" @(" @(" @(" D! XM0$ @ ^P % $ " P 0 _$ X; " /R #ZP /R X Xend END_OF_FILE echo 'Orignal Sum -> 64768 8' echo -n 'Current Sum -> ' sum restore.uue exit