[comp.sys.amiga] MENUTEXT and RESTORE

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__&#4+&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&#5\  $ $"8*UKP    .)4, ""1?3EU.=4AX! !.N@"26$\K0/_\2H!GUC5\
XM!   $  J  ( #"5M__P "&#43E4  $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