Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!purdue!ames!oliveb!sun!rishathra!page From: page%rishathra@Sun.COM (Bob Page) Newsgroups: comp.sources.amiga Subject: v89i112: color - set screen colors Message-ID: <102561@sun.Eng.Sun.COM> Date: 3 May 89 07:07:22 GMT Sender: news@sun.Eng.Sun.COM Lines: 1318 Approved: page@sun.com Submitted-by: sco!brianm@uunet.uu.net (Brian Moffet) Posting-number: Volume 89, Issue 112 Archive-name: graphics/colors.1 A SetPalette clone. [uuencoded executable included. ..bob] # This is a shell archive. # Remove anything above and including the cut line. # Then run the rest of the file through 'sh'. # Unpacked files will be owned by you and have default permissions. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: SHell ARchive # Run the following text through 'sh' to create: # color.c # color2.c # data.c # gadgets.c # main.c # lmkfile # setcolor.lnk # setcolor.uu # This is archive 1 of a 1-part kit. # This archive created: Wed May 3 00:01:01 1989 echo "extracting color.c" sed 's/^X//' << \SHAR_EOF > color.c X/* X** Brian D. Moffet X** June 13, 1988 X** X** Placed in the Public Domain, Please keep my name on it X** and provide source when you provide the binary. X** X** uunet!sco!alar!brian X*/ X X#include X#include X X X#define WINWIDTH 260 X#define WINHEIGHT 100 X Xextern char Version[]; Xextern char Author[]; X Xint pen = 0, bpen = 1; Xstruct Window *Set_Win = NULL; Xstruct NewWindow NW; X Xextern struct Screen *S; Xextern int MaxBit; Xextern USHORT colortable[]; X XColor_Window( S ) Xstruct Screen *S; X{ X register int class; X register int code; X APTR ptr; X struct IntuiMessage *mess; X int i; X/* X** Many hard coded numbers are in here, they shouldn't X** be. I should take the size of the window and scale that, X** But this was a quick hack... X** X** The window allows mouse buttons and gadget movement. X** Instead of waiting for a gadget, when I get the first one X** I enter a fast loop to track the mouse. I could get better X** color updating this way. X*/ X X NW.LeftEdge = NW.TopEdge = 0; X NW.Width = WINWIDTH; X NW.Height = WINHEIGHT; X NW.DetailPen = NW.BlockPen = -1; X NW.IDCMPFlags = MOUSEBUTTONS X | CLOSEWINDOW | GADGETDOWN X | GADGETUP; X NW.Flags = WINDOWCLOSE | WINDOWDRAG | X WINDOWDEPTH | SMART_REFRESH X | ACTIVATE | NOCAREREFRESH | X RMBTRAP; X NW.FirstGadget = NULL; X NW.CheckMark = NULL; X NW.Title = Version; X NW.Screen = S; X NW.Type = CUSTOMSCREEN; X X Set_Win = (struct Window *) OpenWindow( &NW ); X X if( Set_Win == NULL ) return( -1 ); X X/* X** Draw Boxes for individual colors. This will handle to 32 X** colors. X*/ X X X pen = 1 << MaxBit; X for( i = 0; i < pen; i++) X { X short sx, sy, w, h; X unsigned short color = colortable[i]; X X SetRGB4( &S->ViewPort, i, (color>>8)&0x000f, X (color>>4)&0x000f, (color)&0x000f ); X X sx = ((i % (pen/2)) + 1) * WINWIDTH / (pen/2+2); X sy = (i < (pen/2)) ? 54 : 63; X w = WINWIDTH / (pen/2 + 2) - 2; X h = 5; X Draw_Box( i, sx, sy, w, h ); X } X X/* X** Draw the border X*/ X X Move(Set_Win->RPort, 40, 19); X Draw(Set_Win->RPort, 250, 19); X Draw(Set_Win->RPort, 250, 52); X Draw(Set_Win->RPort, 40, 52); X Draw(Set_Win->RPort, 40, 19); X X/* X** Add Misc Gadgets X*/ X X Add_Gadgets( Set_Win ); X/* X** Add the proportional gadgets for the individual colors. X*/ X X Add_Prop( 0, 45, 21, 200, 10 ); X Add_Prop( 1, 45, 31, 200, 10 ); X Add_Prop( 2, 45, 41, 200, 10 ); X X pen = 0; X Set_Gadg_Color(); X X/* Process Mouse */ X X while( TRUE ){ X X/* Wait for message, the loop until no more movement */ X X Wait( 1 << Set_Win->UserPort->mp_SigBit ); X X while( mess = (struct IntuiMessage *) X GetMsg( Set_Win->UserPort ) ){ X X class = mess->Class; X code = mess->Code; X ptr = mess->IAddress; X ReplyMsg( mess ); X X switch( class ){ X case CLOSEWINDOW: X CloseWindow( Set_Win ); X return( 0 ); X case MOUSEBUTTONS: X Work_Mouse( code ); X break; X case GADGETDOWN: X Set_Color( pen ); X break; X case GADGETUP: X Do_Gadget( ptr ); X Set_Gadg_Color(); X default: X break; X } X } X } X} X X/* X** Draw a Box of the appropriate color X*/ X XDraw_Box( i, x, y, w, h ) Xint x, y, i, w, h; X{ X SetDrMd( Set_Win->RPort, COMPLEMENT ); X SetAPen( Set_Win->RPort, i ); X RectFill( Set_Win->RPort, x, y, x+w+2, y+h+2 ); X SetDrMd( Set_Win->RPort, JAM1 ); X SetAPen( Set_Win->RPort, i ); X RectFill( Set_Win->RPort, x+1, y+1, x+w+1, y+h+1 ); X} X X/* X** Do the mouse tracking X*/ X X XWork_Mouse( arg ) Xint arg; X{ X int penno; X X if( Set_Win->MouseY < 52 ) X return; X X if( arg == SELECTDOWN || arg == MENUDOWN ) X return; X X if (arg == SELECTUP) X pen = ReadPixel( Set_Win->RPort, Set_Win->MouseX, X Set_Win->MouseY ); X else X bpen = ReadPixel( Set_Win->RPort, Set_Win->MouseX, X Set_Win->MouseY ); X X Set_Gadg_Color(); X} X X/* X * The current color box. The foreground color is X * color 1 and the background color is color 2 X */ X Xstruct IntuiText CColor = { X 1, 0, X JAM2, X 0, 0, X NULL, X " -Current Color- ", X NULL, X}; X X XSet_Gadg_Color() X{ X unsigned short c[3]; X struct Gadget *G; X int i; X X c[0] = colortable[ pen ] & 0x000f; X c[1] = ( colortable[ pen ] >> 4 ) & 0x000f; X c[2] = ( colortable[ pen ] >> 8 ) & 0x000f; X X G = Set_Win->FirstGadget; X X i = 0; X X while( G != NULL ){ X X if( G->GadgetType == PROPGADGET ){ X X if( G->GadgetID == 'R' ) i = 2; X if( G->GadgetID == 'G' ) i = 1; X if( G->GadgetID == 'B' ) i = 0; X ModifyProp( G, Set_Win, NULL, FREEHORIZ, X (USHORT)((0x1110) * c[i]) , 0, X (USHORT)(0x0fff), 0 ); X } X X G = G->NextGadget; X X } X X CColor.FrontPen = pen; X CColor.BackPen = bpen; X X PrintIText( Set_Win->RPort, &CColor, X (WINWIDTH-IntuiTextLength(&CColor))/2, 75 ); X} X X X/* X** This produces a line X*/ X Xextern USHORT SData[]; Xchar *Color_Name[] = {"Red ", "Grn ", "Blu " }; X Xstruct IntuiText IT = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X NULL, X NULL, X}; X X/* X** This adds the horizontally moving Proportional Gadgets. X** The HorizBody was found mostly by trial and error, X** As I found the Doc to be less than helpful. X*/ X XAdd_Prop( color, sx, sy, w, h ) Xint color; Xint sx, sy, w, h; X{ X X static struct Gadget G[3]; X static struct PropInfo P[3]; X static struct Image I[3]; X X P[color].Flags = FREEHORIZ; X P[color].HorizBody = (USHORT)(0x0fff); X X I[color].Width = 4; X I[color].Height = 6; X I[color].Depth = 1; X I[color].ImageData = &SData[0]; X I[color].PlanePick = 0x01; X X G[color].LeftEdge = sx; X G[color].TopEdge = sy; X G[color].Width = w; X G[color].Height = h; X X G[color].Flags = GADGHBOX | GADGIMAGE; X G[color].Activation = GADGIMMEDIATE | RELVERIFY; X G[color].GadgetType = PROPGADGET; X G[color].GadgetRender = (APTR)&I[color]; X G[color].SelectRender = NULL; X G[color].SpecialInfo = (APTR)&P[color]; X G[color].GadgetText = NULL; X G[color].GadgetID = (int)(*Color_Name[color]); X X IT.IText = (UBYTE *)Color_Name[color]; X PrintIText(Set_Win->RPort, &IT, sx - IntuiTextLength(&IT), sy ); X X AddGadget( Set_Win, &G[color], -1 ); X OnGadget( &G[color], Set_Win, NULL ); X X} SHAR_EOF echo "extracting color2.c" sed 's/^X//' << \SHAR_EOF > color2.c X/* X** Brian D. Moffet X** June 13, 1988 X** X** Placed in the Public domain. X** Please allow me to retain credit for this, and please X** distribute source with the binaries. X*/ X X#include X#include X X Xextern struct Screen *S; Xextern int MaxBit; Xextern USHORT colortable[]; X Xextern struct Window *Set_Win; X X/* X** This sets the colors when the mouse is moved. X*/ X XSet_Color( pen ) Xint pen; X{ X register struct IntuiMessage *I; X struct Gadget *G; X USHORT *g, *b, *r, class; X unsigned int color; X X G = Set_Win->FirstGadget; X X while( G != NULL ){ X switch( G->GadgetID ){ X case 'R': X r = &( (struct PropInfo *)G->SpecialInfo )->HorizPot; X break; X case 'G': X g = &( (struct PropInfo *)G->SpecialInfo )->HorizPot; X break; X case 'B': X b = &( (struct PropInfo *)G->SpecialInfo )->HorizPot; X default: X break; X } X G = G->NextGadget; X } X X/* X** Mouse Movement while Gadget is down loop X*/ X X while( TRUE ){ X X I = (struct IntuiMessage *) GetMsg( Set_Win->UserPort ); X X class = I->Class; X X if( I != NULL ) ReplyMsg( I ); X X color = ( ( ( *r ) >> 12 ) << 8 ) | X ( ( ( *g ) >> 12 ) << 4 ) | X ( ( ( *b ) >> 12 ) ); X X if( (color) != colortable[ pen ] ){ X X SetRGB4( &S->ViewPort, pen, (color>>8)&0x000f, X (color>>4)&0x000f, (color)&0x000f ); X colortable[ pen ] = color; X } X X if( class == GADGETUP ) return( 1 ); X } X X} SHAR_EOF echo "extracting data.c" sed 's/^X//' << \SHAR_EOF > data.c X/* X** Brian D. Moffet X** June 13, 1988 X** X** Placed in the Public domain. X** Please allow me to retain credit for this, and please X** distribute source with the binaries. X*/ X X/* X * data for chip ram. X */ X Xunsigned short SData[] = X{ X -1, X -1, X -1, X -1, X -1, X -1, X}; X SHAR_EOF echo "extracting gadgets.c" sed 's/^X//' << \SHAR_EOF > gadgets.c X/* X** Brian D. Moffet X** June 13, 1988 X** X** Placed in the Public domain. X** Please allow me to retain credit for this, and please X** distribute source with the binaries. X*/ X X#include X#include X X#define BETWEEN 5 X Xextern int pen, bpen; Xextern int MaxBit; Xextern unsigned short colortable[]; Xextern unsigned short oldcolortable[]; Xextern struct Window *Set_Win; X XDo_Gadget( addr ) Xregister struct Gadget *addr; X{ X switch( addr->GadgetID ) X { X case 1: /* Make Black and White */ X { X unsigned short r, g, b; X int i; X for (i = 0; i < (1<>8) & 0x0f; X g = (colortable[i]>>4) & 0x0f; X b = (colortable[i]>>0) & 0x0f; X make_bw(&r, &g, &b); X colortable[i] = ((r&15)<<8) | ((g&15)<<4) X | ((b&15)); X SetRGB4(ViewPortAddress(Set_Win), i, r, g, b); X } X break; X } X case 2: /* Smear of Colors */ X { X int i; X if ( pen > bpen) X smear( colortable, bpen, pen ); X else X smear( colortable, pen, bpen ); X X for (i = 0; i < (1<>8) & 0x0f; X g = (colortable[i]>>4) & 0x0f; X b = (colortable[i]>>0) & 0x0f; X SetRGB4(ViewPortAddress(Set_Win), i, r, g, b); X } X break; X } X case 3: /* Switch Colors */ X { X int j, i; X unsigned short r, g, b; X X j = colortable[pen]; X colortable[pen] = colortable[bpen]; X colortable[bpen] = j; X for (i = 0; i < (1<>8) & 0x0f; X g = (colortable[i]>>4) & 0x0f; X b = (colortable[i]>>0) & 0x0f; X SetRGB4(ViewPortAddress(Set_Win), i, r, g, b); X } X break; X } X case 4: /* Make the default palette good */ X { X int i; X for (i = 0; i < (1<>8) & 0x0f; X g = (colortable[i]>>4) & 0x0f; X b = (colortable[i]>>0) & 0x0f; X SetRGB4(ViewPortAddress(Set_Win), i, r, g, b); X } X break; X } X case 6: /* Make Palette Original */ X { X int i; X unsigned short r, g, b; X X for (i = 0; i < (1<>8) & 0x0f; X g = (colortable[i]>>4) & 0x0f; X b = (colortable[i]>>0) & 0x0f; X SetRGB4(ViewPortAddress(Set_Win), i, r, g, b); X } X break; X } X default: X break; X } X} X X XAdd_Gadgets( W ) Xstruct Window *W; X{ X Add_BW( W ); X Add_Smear( W ); X Add_Ex( W ); X Add_Copy( W ); X Add_OK( W ); X Add_Undo( W ); X} X X Xstruct IntuiText BWText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "B/W", X NULL, X}; X Xstruct Gadget BWGadget = { X NULL, X 10, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 1, X NULL X}; X X XAdd_BW( W ) Xstruct Window *W; X{ X BWGadget.GadgetText = &BWText; X BWGadget.Width = IntuiTextLength(&BWText); X AddGadget( W, &BWGadget, -1 ); X OnGadget( &BWGadget, W, NULL ); X} X Xstruct IntuiText SmearText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "Smear", X NULL, X}; X Xstruct Gadget SmearGadget = { X NULL, X 30, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 2, X NULL X}; X X XAdd_Smear( W ) Xstruct Window *W; X{ X SmearGadget.GadgetText = &SmearText; X SmearGadget.Width = IntuiTextLength(&SmearText); X SmearGadget.LeftEdge = BWGadget.LeftEdge + BETWEEN + X IntuiTextLength(&BWText); X AddGadget( W, &SmearGadget, -1 ); X OnGadget( &SmearGadget, W, NULL ); X} X Xstruct IntuiText ExText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "Exchange", X NULL, X}; X Xstruct Gadget ExGadget = { X NULL, X 30, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 3, X NULL X}; X X XAdd_Ex( W ) Xstruct Window *W; X{ X ExGadget.GadgetText = &ExText; X ExGadget.Width = IntuiTextLength(&ExText); X ExGadget.LeftEdge = SmearGadget.LeftEdge + BETWEEN + X IntuiTextLength(&SmearText); X AddGadget( W, &ExGadget, -1 ); X OnGadget( &ExGadget, W, NULL ); X} X X Xstruct IntuiText CopyText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "Copy", X NULL, X}; X Xstruct Gadget CopyGadget = { X NULL, X 30, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 5, X NULL X}; X X XAdd_Copy( W ) Xstruct Window *W; X{ X CopyGadget.GadgetText = &CopyText; X CopyGadget.Width = IntuiTextLength(&CopyText); X CopyGadget.LeftEdge = ExGadget.LeftEdge + BETWEEN + X IntuiTextLength(&ExText); X AddGadget( W, &CopyGadget, -1 ); X OnGadget( &CopyGadget, W, NULL ); X} X Xstruct IntuiText OKText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "OK", X NULL, X}; X Xstruct Gadget OKGadget = { X NULL, X 30, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 4, X NULL X}; X X XAdd_OK( W ) Xstruct Window *W; X{ X OKGadget.GadgetText = &OKText; X OKGadget.Width = IntuiTextLength(&OKText); X OKGadget.LeftEdge = CopyGadget.LeftEdge + BETWEEN + X IntuiTextLength(&CopyText); X AddGadget( W, &OKGadget, -1 ); X OnGadget( &OKGadget, W, NULL ); X} X X X Xstruct IntuiText UndoText = { X 1, 0, X COMPLEMENT, X 0, 0, X NULL, X "Undo", X NULL, X}; X Xstruct Gadget UndoGadget = { X NULL, X 30, -9, 0, 8, X GADGHBOX | GRELBOTTOM, X RELVERIFY, X BOOLGADGET, X NULL, X NULL, X NULL, X 0, X NULL, X 6, X NULL X}; X X XAdd_Undo( W ) Xstruct Window *W; X{ X UndoGadget.GadgetText = &UndoText; X UndoGadget.Width = IntuiTextLength(&UndoText); X UndoGadget.LeftEdge = OKGadget.LeftEdge + BETWEEN + X IntuiTextLength(&OKText); X AddGadget( W, &UndoGadget, -1 ); X OnGadget( &UndoGadget, W, NULL ); X} SHAR_EOF echo "extracting main.c" sed 's/^X//' << \SHAR_EOF > main.c X/* X** Brian D. Moffet X** June 13, 1988 X** X** Placed in the Public domain. X** Please allow me to retain credit for this, and please X** distribute source with the binaries. X** X*/ X X#include X#include X#include X#include X X#include X X/* X** Easier to type IB than IntuitionBase X*/ X X#define IB IntuitionBase X#define GB GfxBase X Xextern struct IntuitionBase *IntuitionBase; Xstruct GfxBase *GfxBase=NULL; X Xstruct Screen *S; Xint MaxBit; XUSHORT oldcolortable[32]; XUSHORT colortable[32]; X Xchar Version[]="Setcolor 1.1 PD"; Xchar Author[]="Brian Moffet sco!brianm"; X Xchar *Usage[] = { X "setcolor [-num]", X " -num: number of seconds to delay before attaching to the", X " active window.", X " Gadget Definitions:", X " B/W: make the palette a grey scale palette", X " Smear: blend from color 1 (letters in box) to color 2", X " Exchange: exchange color 1 and color 2", X " Copy: copy color 1 and color 2", X " OK: Set the palette with your new colors", X " Undo: reset colors from last OK or beginning", X NULL X}; X X/* X** setcolor [num] X** where num is the number of seconds befor program takes X** action and attaches itself to your window. X*/ X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X{ X int i; X int del; X X if (!strcmp( argv[1], "-h")) X { X puts( Version ); X puts( Author ); X for (i = 0; Usage[i]; i++) X puts( Usage[i] ); X exit( 0 ); X } X X del = atoi( argv[1] ); X if( del <= 0 ) del = 0; X X IB = (struct IB *)OpenLibrary( "intuition.library", 0 ); X if( IB == NULL ) X { X fprintf( stderr, "Error Opening IB\n" ); X exit( 1 ); X } X GB = (struct GB *)OpenLibrary( "graphics.library", 0 ); X if( GB == NULL ) X { X CloseLibrary( IB ); X fprintf( stderr, "Error Opening GB\n" ); X exit( 2 ); X } X X/* X** Avoid the Delay( 0 ) bug X** Part of my background is to avoid system calls whenever X** Possible. I would have never found the Delay( 0 ) problem.. X*/ X X if( del ) Delay( del * 50 ); X X S = IB->ActiveScreen; X MaxBit = S->BitMap.Depth; X X for( i = 0; i < 32; i++ ) X oldcolortable[i] = colortable[i] = X GetRGB4( S->ViewPort.ColorMap, i ); X X Color_Window( S ); X X i = 32; X while( --i >= 0 ) X { X unsigned short color = oldcolortable[i]; X X SetRGB4( &S->ViewPort, i, (color>>8)&0x000f, X (color>>4)&0x000f, (color)&0x000f ); X } X X CloseLibrary( GB ); X CloseLibrary( IB ); X} X X/* X * Make a color palette into a gray-scale palette. X */ X Xmake_bw( r, g, b ) Xunsigned short *r, *g, *b; X{ X unsigned short v; X X if (*r == *g && *g == *b) X return; /* only shades of grey. */ X X v = (*r * 298 + *g * 588 + *b * 114) / 1000; X *r = v; X *g = v; X *b = v; X} X X/* X * get colors to go "smoothly" from color 1 to color 2 X */ X Xsmear( c, begin, end ) Xunsigned short *c; Xint begin, end; X{ X int d = (end - begin); X int rd, gd, bd; X unsigned short r, g, b; X int i; X X r = (c[begin] >> 8) & 0x0f; X g = (c[begin] >> 4) & 0x0f; X b = (c[begin] >> 0) & 0x0f; X X rd = ((c[end] >> 8) & 0x0f) - r; X gd = ((c[end] >> 4) & 0x0f) - g; X bd = ((c[end] >> 0) & 0x0f) - b; X X for (i = 0; i < d; i++) X { X int j = (i + begin); X X c[j] = ((r + (i * rd) / d) & 0x0f) << 8 X | ((g + (i * gd) / d) & 0x0f) << 4 X | ((b + (i * bd) / d) & 0x0f); X X } X} SHAR_EOF echo "extracting lmkfile" sed 's/^X//' << \SHAR_EOF > lmkfile XCFLAGS=-b0 -cw -v XOBJ=data.o color.o color2.o main.o gadgets.o X Xcolor: $(OBJ) X blink with setcolor.lnk X Xdata.o: data.c X lc $(CFLAGS) -abd data SHAR_EOF echo "extracting setcolor.lnk" sed 's/^X//' << \SHAR_EOF > setcolor.lnk XFROM LIB:c.o+color.o+color2.o+main.o+data.o+gadgets.o XTO setcolor XLIB +LIB:lc.lib+LIB:amiga.lib SHAR_EOF echo "extracting setcolor.uu" sed 's/^X//' << \SHAR_EOF > setcolor.uu X Xbegin 644 setcolor XM```#\P`````````0``````````\```69```!V@```!D```!-````4````.<`K XM``"(````(D````,```&@````:0```10````%````&@```#<````I```#Z0``W XM!9DD2"0`2?D`````1_D```'@<@`@/````)Q@`B;!4"EK`#H!Y'!_4H#1K`'D80``PD'K`%Q.KOZ`0>L`7$ZN_HPIJ XM0`(<+P`D0"`J`"1G$BQL!$`@0"(H```I00(43J[_@B(J`"!G&B0\```#[4ZN4 XM_^(I0`(D9PKEB"!`)V@`"`"D(&P"'"\(2&P!X"!H`"0I:``$`BA.N@!X3KH%7 XM.'``8`0@+P`$+P`@+`(,9P0@0$Z03KH4="QX``0B;`1`3J[^8DZZ`$Y*K`(``"0J@!P`!M\`"#_^W(`*T'_]G3_*T+_\D'M_]`;^ XM0/_Q&T#__"M!_^0K0?_H*TC_S$H39T)P`!`3@%@!AM\``'__%*+8+H0+ XM$W(PL`%F!E*+&T'_^W`JL!-F$"!20^@`!"2)*U#_]E*+8`Y(;?_V+PM.N@HT+ XM4$_7P!`3@`6&```7X`>&```7@`<&```5X`_ XM;V```0P`=6```.(`9&````)*+?_Q9PP@4D/H``0DB2`08`H@4D/H``0DB2`09 XM*T#_[&P*<@%$K?_L*T'_Z$JM_^AG!'`M8`I*!F<$<"M@`G`@&T#_T'``$`8B8 XM+?_H@H!P`!`%@H!G"%*M_\Q2K?_D+RW_["\M_\Q.N@B64$\K0/_(("W_\DJ`E XM:@9R`2M!__(@+?_((BW_\I*`2.T``O_$;RX@;?_,(DC3P6`"$MA3@&3Z<``00 XM+?_[(BW_Q"!M_\Q@`A#`4X%D^B`M__(K0/_(T:W_Y$'M_]`K2/_,2@=G``%0* XM&WP`(/_[8``!1DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L8`#_- XM8DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW__&<2(&W_S!#\' XM`#!R`2M!_^0K2/_,+P`O+?_,3KH'\%!/*T#_R&``_R@;?``P__L@+?_R2H!J0 XM!G`(*T#_\DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW__&<6? XM(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"\`+RW_S$ZZ!\Q03RM`_\AP6+`M__!F5 XM`/Z^2&W_T$ZZ!FA83V``_K`@4D/H``0DB2)0*TG_S&8(0?H`W"M(_\P@;?_,% XM2AAF_%.(D>W_S"M(_^0@+?_R2H!K*K'`;R8K0/_D8"!P`2M`_^0@4D/H``0DS XMB2`0&T#_T$(M_]%@!G``8```C"`M_^0B+?_VLH!L"'0`*T+_]F`$D:W_]DH'\ XM9S93K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.)3K?_V;4AP`!`M__LO& XM`"!M`!!.D%A/8.A3K?_V;1)P`!`M__LO`"!M`!!.D%A/8.A3K?_D;1AP`"!M# XM_\P0&"\`*TC_S"!M`!!.D%A/8.(@"TS?#.1.74YU``!.5?_V2.``!3KH.4 XM>%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!9P12BV#D2A-F`F`&= XM0AM@`/]R2JP#IF8&(&P"'&`$0>P#KBE(`ZI*K`.F9GQ!^@$D0^P#;"+8(M@B8 XMV"+8,I`B;`(<(&D`)$AX`"@O*``$2&P#;$ZZ!'Y/[P`,0>P#;"(()#P```/N^ XM+&P$0$ZN_^(I0`(P*4`".'($*4$"-"E``D`I00(\Y8"3R2QX``0K0/_P3J[^= XMVB!M__`B0"-H``@`I'X`*T#_]&`J+&P$0$ZN_\HI0`(P3J[_Q"E``CA!^@"F4 XM(@@D/````^U.KO_B*4`"0'X$(`<`0(`!@:P"+"`'`$"``H&L`C0`K```@`,"$ XM/$JL`(!G!'``8`8@/```@``N`$*L`#0@!P!```$I0``P<`$I0`!6(`<`0``"Y XM*4``4G`"*4``>"`'`$``@"E``'1!^@KR*4@"$"\L`ZHO+`.F3KH`,D*73KH([ XM<$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J`````````````````$[YH XM`````````````````````````````````````'!A+PLF;P`(2JL`%&<,""L`7 XM`P`;9@1P`&`V+RP!W$ZZ!VY83R=```0G0``02H!F"G`,*4`$/'#_8!8G;`'<` XM`!1P\\&K`!AP`"=```PG0``()E].=0``````````````````3E7_[$CG+Q`N_ XM+P`T)F\`."@'<#'`JP`89P9P_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8`* XM`(0(*P`"`!MF>G``)T``#'+_OH%G``)"+PM.NO].6$]*@&<,".L`!0`;X3^\`#"H`?O]@+ XM``#@".L``0`;2@9G4G#_OH!G3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-R XM(BL`#$J!:PHO"R\`80#^KE!/4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%KL XM``$*TO_]"MM_^S_Z"938`#_;B!M__0@BD*2)4<`!'``3-],@$Y=3G4`! XM`````````'!A2.<',"XO`!@F;P`<+"\`("\'3KH%_%A/)$`@"F8$``*3KKY^%!/(@`@`4S?"(!.=0``2./__3KKX3B`L!#A,[0P`__A.74YU``!(' XMYP,0+B\`$$?L`!@@"V1(!*@6H```Q$@6$``"!$@4YU80``^ XM&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!-`%F```B2$!(04A"-`!G```&+ XMA,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`@&0```;AF5%##$$(`&0```;I3 XMF5E##$$@`&0```;EF55#2D%K```&XYE30S0`YJA(0D)"YJI(0X#!-@`P`C0#[ XM2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!028?)!].=4Y5_YY(YS,R?@`@M XM;`(H'BC__W!/OH!O`BX`(`=#[?^O8`(2V%.`9/I"-7BOD\DL>``$3J[^VB9`4 XM2JL`K&=,("L`K.6`)$`L*@`X2H9F!"PK`*!*AF`0>P"+$JP"`!G#B`'YX!![`(LT<`@"&`(<`DI0`0\<``NI XM'TYU``````````!P84CG`0)P`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV8$U XM<`!@($JL`A!G&"!L`A!.D$J`9@1P`&`,2'@`%$ZZ`'983R`'3-]`@$YU8;1.T XM=0``2.`0>P"+"HPA XM"`!*!6<:"`4``F84(`9(P.>`0>P"+"\P"`1.NOR,6$]31F#,+P=.NNNF6$],Z XMWP#@3G4``$CG."(L;`0P3.\'```83.\`'P`D3J[_9$S?1!Q.=0``2.<`,B9L/ XM!$0@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(!$@I2`1$3-],`$YU2.L`+'(`,@#@@70/PH)V`#8`Z(/&` XM@G@`.`#(@B\$+P,O`2\%+P@[0/_B3KH&7$_O`!0@.0`````B`$J!:@)2@>*!\ XM(`4O00`<3KH%ZE*!(#P```$$3KH&4"(O`!PD`52"(@).N@70.T#_ZKJO`!QLX XM!'(V8`)R/R0Y`````&H"4H+B@E2"(#P```$$.T'_Z"("3KH%HE6`<@4T+?_J# XM2,(V+?_H2,,[0/_F2,`[0?_D2,$O`2\`+P,O`B\%80`!HD_O`!12A6``_R)(; XM>``32'@`*"!Y````""\H`#).N@5D2'@`$TAX`/H@>0````@O*``R3KH%2$AX: XM`#1(>`#Z('D````(+R@`,DZZ!3)(>``T2'@`*"!Y````""\H`#).N@4<2'@`& XM$TAX`"@@>0````@O*``R3KH%!BZY````"$ZZ!1I(>``*2'@`R$AX`!5(>``MB XM0J=A``-"3^\`4$AX``I(>`#(2'@`'TAX`"U(>``!80`#)DAX``I(>`#(2'@`8 XM*4AX`"U(>``"80`##D*Y`````&$``?I/[P`H('D````((&@`5G``$"@`#W(!P XMX:$O`4ZZ!,Q83R!Y````""\H`%9.N@2D6$\K0/_P2H!GS"!`+B@`%'P`/"@`7 XM&"MH`!S_]"\`3KH$3%A/(`=R(`1!``AKQ+"[$`AF]$[[$`8```!`8```0@``[ XM`"!@```J````"&```!@```(`8````B\Y````"$ZZ!')P`&`L+P9A``#F6$]@[ XM@B\Y`````$ZZ!&!83V``_W0O+?_T3KH$!&$``4!83V``_V),[0C\_\).74YUE XM3E4``$CG/P`N+P`@+"\`)"HO`"@H+P`L2'@``B!Y````""\H`#).N@/\+H<@9 XM>0````@O*``R3KH#L"`$T(94@"(M`!C2A52!+H$O`"\%+P8@>0````@O*``R7 XM3KH#L$*7('D````(+R@`,DZZ`[@NAR!Y````""\H`#).N@-L(`92@"(%4H$DM XM!M2$4H(F!=:M`!A2@RZ#+P(O`2\`('D````(+R@`,DZZ`V1,[0#\_^A.74YUQ XM3E7__"\'+B\`$"!Y````"#`H``QR-+!!;5IR:+Z!9U1R:;Z!9TYR=-*!OH%FE XM(#(H``Y(P4C`+P`O`2\H`#).N@-:3^\`#"/``````&`B,"@`#DC`,B@`#$C!R XM+P$O`"\H`#).N@,V3^\`#"/`````!&$```@N'TY=3G5.5?_R+P<@.0````#0Q XM@$'Y````2")(T\!R#\)1.T'_^B)(T\`R$>A)`D$`#SM!__S1P#`0X$@"0``/, XM.T#__B!Y````""MH`#[_]GX`2JW_]F=D<`,@;?_VL&@`$&9.,"@`)G)2L$%F^ XM`GX"P068"?@%R0K!!9@)^`"`'T(`R-0CZPOP1$'``,`%R`"\!2'@/_R\!> XM+P!(>``"+P$O.0````@O"$ZZ`EQ/[P`@(&W_]BM0__9@EB`Y`````!/`````@ XM'B`Y````!!/`````'TAY````'DZZ`A0B/````022@$J!:@)2@>*!2'@`2R\!' XM2'D````>('D````(+R@`,DZZ`>0N+?_N3EU.=4Y5__A(YS\P+B\`,"PO`#0JJ XM+P`X*"\`/"`'````^P````#````````!T8`I XM``=>```&[````"H````"```&S@``!K(```:.```&B```!G8```9P```&6```! XM!3@```4R```%$@``!0P```4&```%````!/H```3@```$@@``!$H```0T```$> XM$````]0```.R```#A@```W8```-F```#0@```S(```+J```"T@```FP```)0! XM```"0@```>X```'@```!R@```;0```&>```!B````2X```#J````H````)@`- XM``"`````$P````,```;$```&I```!=@```62```%;@```'0```!N````9@``Y XM`&````!6````4````$@````^````-````"X````F````'@```!8````0````8 XM`0````0```=2`````0````8```!<`````P````<```12````K@```)`````!@ XM````"```!;H````"````"0``!P0```<0`````P````T```;F```''```!S0`. XM```'````#@``!V0```0````@K:``^__A*K?_X9U@@) XM;?_X,"@`)@Q``$)G,`Q``$=G&`Q``%)F-"!M__@@:``B0^@``BM)_^Q@(B!M: XM__@@:``B0^@``BM)__1@$"!M__@@:``B0^@``BM)__`@;?_X*U#_^&"B('D`T XM```(+R@`5DZZ`+!83R9`+"L`%"`+9P@O"TZZ`)A83W``(&W_[#`0X(#H@.&`1 XM<@`@;?_T,A#@@>B!Z8&`@7(`(&W_\#(0X('H@8"!*@`@!]"`0?D```!(T"(<@_`@20%Z(K$@2(%=@_"@R\!+P(O`"\'3 XM+PA.N@`T3^\`%"`'T(!!^0```$C1P"`%,(!P0+Q`9@#_5G`!3-\([$Y=3G5.7 XM^0```"A.^0```!1.^0```#AP80```^P````"`````@```'@````.`````P``( XM``<```#<```!$````,P````"````#0```2X```$T`````0````X```$Z````] XM`````_(```/I````YTY5_^I(YS0```>I(>0```%Q.N@*\2'@``4ZZ`MY/6 XM[P`,0J=(>0```?Q.N@*V4$\CP`````!F)B\Y```$,$ZZ`LQ(>0```@Y(>0``T XM`%Q.N@*`2'@``DZZ`J)/[P`02H9G$"`&+P!.N@*`6$\@>0``!#`CK XMZ``X`````'``('D`````$"@`O2/`````!'X`<""^@&P^(`?0@$'Y````"-'`% XM0_D```!(T\`O!R1Y`````"\J`#`O2``H+TD`+$ZZ`A)03R!O`"0P@"!O`"`PS XM@%*'8+PO.0````!.N@((6$]^(%.';40@!]"`0?D````(T<`Z$"!Y`````-#\X XM`"QP`#`%X(!R#\"!=``T!>B"Q(%V`#8%QH$O`R\"+P`O!R\(3KH!VD_O`!1@; XMN"\Y`````$ZZ`=8NN0``!#!.N@',3.T,[/_.3EU.=4Y5__Y(YR$P)F\`&B1O] XM`!XP$C(3LD!F"B!M`!`T$+1`9RK"_`$JP/P"3-*`(&T`$#`0P/P`A+`D,`#P)!``\@!M"`>``X,P@`.T'_S XMZB($X(%X#\*$>``X`I*$>``X,P@`*T'_^"($Z($[0O_N=`_"@G0`-`.2@G0`' XM-`1P#\2`<``P+?_JE(!"K?_F*T'_]"M"__`[0__L("W_YK"%;```AB('TH`K\ XM0?_BTH$O00`<(BW_^$ZZ`+PB!4ZZ`'1R`#(M_^[2@'`/PH#A@2`M__0O00`@Q XM(BW_YDZZ`)@B!4ZZ`%!R`#(M_^S2@'`/PH#I@20O`""$@2`M_^8B+?_P3KH`\ XM""`!2K?_F8`#_=$S?"/Q.74YU= XM``!.^0``$EA.^0``#"1.^0``$'!.^0```,1.^0``#HQ.^0```%!.^0````!.' XM^0````!.^0``%2!.^0``$+!.^0```#A.^0``$CA.^0```#QP80```^P````'6 XM`````````TX```.0```#6@```WX```.$```#9@```U0````!`````0```W(`` XM```*````!@```;@```#,````N@```*X```"0````>@```#X````L````(@``3 XM``X````)````!P```8(```%X```!8@```3H```$P```!*````18```$,```!W XM!`````8````+````T@```)8```'"````_````,(```"&`````0````P```-X, XM`````@````T```.6```#;`````(````.```#B@```V`````````#\@```^H`Y XM``"(`````%-E=&-O;&]R(#$N,2`@4$0`0G)I86X@36]F9F5T('-C;R%B"D@=&\@8V]L;W(@,@``"45XR XM8VAA;F=E.B!E>&-H86YG92!C;VQO````(X```"D````V XMT````0@```$P```!4````7H`````+6@``&EN='5I=&EO;BYL:6)R87)Y`$5RH XMA)` XM`D$`#SM!__S1P#`0`D``#SM`__I(;?_Z2&W__$AM__Y.N@723^\`#"`'T(!!0 XM^0```$C1P#`M__X"0``/X4`R+?_\`D$`#^E!@$$R+?_Z`D$`#X!!,(`O.0``X XM``A.N@6B<@`R+?_^=``T+?_\=@`V+?_Z+H,O`B\!+P0```$A.N@4\3^\`#&`2+P`O`4AY_ XM````2$ZZ!2A/[P`,?`!P`2(Y````!..@O(!L``)Z(`;0@$'Y````2")(T\`RA XM$>!)*@$"10`/(DC3P#(1Z$D"00`/T<`P$`)```\O.0````@[0/_V.T'_^$ZZ[ XM!/)R`#(%=``T+?_X=@`V+?_V+H,O`B\!+P8O`$ZZ!,Y/[P`44H9@C"`Y````X XM`-"`0?D```!((DC3P'(`,A$B2-/`(#D````$T(`D2-7`,I+1P#"!0JW_^"M!' XM__QP`2(Y````!..@(BW_^+*`;``!SM*!0?D```!((DC3P3`1X$@"0``/(DC3+ XMP301Z$H"0@`/T<$R$`)!``\O.0````@[0/_V.T'_\CM"__1.N@1&<@`R+?_V& XM=``T+?_T=@`V+?_R+H,O`B\!+RW_^"\`3KH$'D_O`!12K?_X8()"K?_\<`$BW XM.0````3CH"(M__RR@&P``4S2@4'Y````"-'!0_D```!(T\$PD5*M__Q@TB`YZ XM````!-"`0?D```!((DC3P"`Y`````-"`T<`RD$*M__QP`2(Y````!..@(BW_: XM_+*`;```_-*!0?D```!((DC3P3`1X$@"0``/(DC3P301Z$H"0@`/T<$R$`)!" XM``\O.0````@[0/_Z.T'_]CM"__A.N@-T<@`R+?_Z=``T+?_X=@`V+?_V+H,O; XM`B\!+RW__"\`3KH#3$_O`!12K?_\8()"K?_\<`$B.0````3CH"(M__RR@&QZ< XMTH%!^0```$@B2-/!1?D````(U<$RDB)(T\$P$>!(`D``#R)(T\$T$>A*`D(`D XM#]'!,A`"00`/+SD````(.T#_^CM!__8[0O_X3KH"YG(`,BW_^G0`-"W_^'8`Z XM-BW_]BZ#+P(O`2\M__PO`$ZZ`KY/[P`44JW__&``_W9,WPSL3EU.=2\+)F\`Y XM""\+80``)BZ+80``9"Z+80``RBZ+80`!,"Z+80`!EBZ+80`!_%A/)E].=2\+G XM)F\`"$'Y````!"/(````,B\(3KH"5C/`````($AX__](>0```!@O"TZZ`CI"Y XMER\+2'D````83KH"2D_O`!@F7TYU3E7__"\+)F\`$$'Y````2B/(````>"\(W XM3KH"#C/`````9C`Y````'$C`2'D````$+T``#$ZZ`?(B+P`,TH!:@3/!````W XM8DAX__](>0```%XO"TZZ`3KH!WB9M__A.74YU3E7__"\+Y XM)F\`$$'Y````E"/(````PB\(3KH!HC/`````L#`Y````8DC`2'D```!*+T``R XM#$ZZ`88B+P`,TH!:@3/!````K$AX__](>0```*@O"TZZ`6)"ER\+2'D```"H- XM3KH!0``U XM`.XO"TZZ`/9"ER\+2'D```#N3KH!!B9M__A.74YU3E7__"\+)F\`$$'Y```!G XM'B/(```!3"\(3KH`RC/````!.C`Y````\DC`2'D```#:+T``#$ZZ`*XB+P`,9 XMTH!:@3/!```!-DAX__](>0```3(O"TZZ`(I"ER\+2'D```$R3KH`FB9M__A.7 XM74YU3E7__"\+)F\`$$'Y```!9"/(```!DB\(3KH`7C/````!@#`Y```!-DC`S XM2'D```$>+T``#$ZZ`$(B+P`,TH!:@3/!```!?$AX__](>0```7@O"TZZ`!Y"Z XMER\+2'D```%X3KH`+B9M__A.74YU3OD```(H3OD`````3OD```"03OD```'4D XM3OD````X3OD```!\3OD````P<&$```/L````"P````(```*@```!J@```00`8 XM``*.```!Q````/X```-Z```"[````AH```%R````R@````(````%```&5@``Z XM!F@````3````!P```U````)V```#1@```L8```*6```"?@```?0```&R```!E XM2@```28```$2````H````%8```,T```"L@```F(```'@```!.````$0````M4 XM````"@``!D0```8T```&*@``!A0```8,```&!@``!?H```7T```%V```!<@`8 XM``6^```%J```!:````6:```%C@``!8@```5L```%7```!5(```4\```%-```W XM!2X```4B```%'```!0````3P```$Y@``!-````3(```$P@``!+8```2P```$V XME```!(0```1Z```$9```!%P```16```$2@``!$0```0H```$&```!`X```0"R XM```#_`````$````.```&;@````0````/```&>@``!EP```9B```&=```````9 XM``/R```#Z@```&E"+U<``0`"``````````````````````````````K_]P``6 XM``@`"0`!``$````````````````````````````!`````%-M96%R``$``@``/ XM`````````````$0````````````>__<````(``D``0`!````````````````K XM`````````````@````!%>&-H86YG90```0`"````````````````B@``````R XM`````![_]P````@`"0`!``$````````````````````````````#`````$-O< XM<'D```$``@```````````````-0````````````>__<````(``D``0`!````G XM````````````````````````!0````!/2P```0`"```````````````!&@``] XM`````````![_]P````@`"0`!``$````````````````````````````$````K XM`%5N9&\```$``@```````````````5X````````````>__<````(``D``0`!? XM````````````````````````````!@````````/L````!@````H```%P```!W XM*@```.8```"@````5@```!`````````#\@```^H```!X````*```````````8 XM````````````````````.@``````````````````````````````````````Z XM`````%P`````````````````````````````````````````````````````< XM`````````````````````````````````````(`````$`/__````#@`.````> XM````$_P`````__\````$``0``````````````(C__P````0`!````````!08/ XM`````/__````!``$````````%"(``````"`@("`@("`@("@H*"@H("`@("`@D XM("`@("`@("`@("`@2!`0$!`0$!`0$!`0$!`0$(2$A(2$A(2$A(00$!`0$!`00 XM@8&!@8&!`0$!`0$!`0$!`0$!`0$!`0$!`0$0$!`0$!""@H*"@H("`@("`@("4 XM`@("`@("`@("`@("`A`0$!`@("`@("`@("`@*"@H*"@@("`@("`@("`@("`@" XM("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!W XM`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("; XM`@("`@("$!`0$"````````(````#[`````,`````````T````+P```"4````` XM`P````L```"L````.@```!@````````#\@```^D````%+PXL>0``!$`B+P`(Q XM3J[_.BQ?3G4```/L`````0````L````$`````````_`````"7T1E;&%Y````% XM`````````````_(```/I````&B\.+'D```(8("\`"$ZN_L(L7TYU+PXL>0``Z XM`A@@;P`(3J[^C"Q?3G4O#BQY```"&")O``A.KOZ&+%].=2\.+'D```(8(F\`U XM"$ZN_F(L7TYU+PXL>0```A@B;P`(("\`#$ZN_=@L7TYU```#[`````4````+` XM````5````$`````L````&`````0````````#\`````-?3W!E;DQI8G)A4US9P``````/ XM`"@````"7T=E=$US9P`````4`````E]786ET``````````````````/R```#2 XMZ0```#0`````B;P`(Y XM3.\``P`,3J[_"BQ?3G4``$CG,`(L>0`````@;P`03.\`#P`43J[^X$S?0`Q._ XM=0``2.0`````B;P`(("\`#$ZN_JHL7TYU+PXL- XM>0`````B;P`(("\`#$ZN_IXL7TYU+PXL>0`````@;P`(("\`#$ZN_;HL7TYUH XM```#[`````@````&````R````+````"8````?````%X````^````(`````0`) XM```````#\`````)?1V5T4D="-````,0````"7U-E=$1R360```"L`````E]3; XM971!4&5N````E`````-?4F5A9%!I>&5L``````!X`````U]296-T1FEL;```@ XM`````%@````"7U-E=%)'0C0````X`````E]$0``!#!,[P,```@@+P`03J[_E XMUBQ?3G4``"\.+'D```0P(&\`"$ZN_[@L7TYU2.<`(BQY```$,$SO!P``#$ZN& XM_T9,WT0`3G4``"\.+'D```0P(&\`"$ZN_S0L7TYU+PXL>0``!#!,[P,```A,) XM[P`#`!!.KO\H+%].=2\.+'D```0P(&\`"$ZN_M0L7TYU+PXL>0``!#`@;P`(I XM3J[^MBQ?3G4```/L````!P````L```"4````@````&0```!0````-@```"``= XM```$`````````_`````$7TEN='5I5&5X=$QE;F=T:````)`````$7U9I97=0( XM;W)T061D'0`````8`````-?3W!E;E=I( XM;F1O=P````!,`````U]/;D=A9&=E=````````#`````#7T-L;W-E5VEN9&]WO X@````'`````-?061D1V%D9V5T`````````````````_(#+ X`` Xend Xsize 14792 SHAR_EOF echo "End of archive 1 (of 1)" # if you want to concatenate archives, remove anything after this line exit