Path: utzoo!attcan!uunet!wyse!mikew
From: mikew@wyse.wyse.com (Mike Wexler)
Newsgroups: comp.sources.x
Subject: v01i054:  xphoon: display phase of moon in root window(X10), Part02/03
Message-ID: <1718@wyse.wyse.com>
Date: 27 Sep 88 15:29:05 GMT
Organization: Wyse Technology, San Jose
Lines: 1220
Approved: mikew@wyse.com

Submitted-by: jef@helios.lbl.gov
Posting-number: Volume 1, Issue 54
Archive-name: xphoon/part02

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh 'Makefile' <<'END_OF_FILE'
X# @(#) $Header: Makefile,v 1.8 88/08/15 21:57:41 jef Exp $ (LBL)
X#
X# Makefile for xphoon
X#
X# Jef Poskanzer and Craig Leres, August 1988
X#
X
X#SYSOPT= -fswitch -temp=/usr/helios/tmp
XSYSOPT=
X
XINCLUDES = -I.
XCFLAGS= -O ${INCLUDES} ${SYSOPT}
X
XXLIB= -lX
XLIBS= ${XLIB} -lm
X
XDESTDIR= /usr/new/X10
X
XSRCS= xphoon.c phase.c dtime.c cheapmoon.c bigcheapmoon.c
XOTHERSRCS= README Makefile xphoon.man
XALLBITMAPS= cheapmoon.bitmap bigcheapmoon.bitmap
XHEADERS= tws.h
XOBJS= xphoon.o phase.o dtime.o
X
XALL= xphoon xbigphoon
X
Xxphoon: ${OBJS} cheapmoon.o
X	${CC} ${CFLAGS} -o xphoon ${OBJS} cheapmoon.o ${LIBS}
X
Xxbigphoon: ${OBJS} bigcheapmoon.o
X	${CC} ${CFLAGS} -o xbigphoon ${OBJS} bigcheapmoon.o ${LIBS}
X
Xall: ${ALL}
X
X# Make the export sharchive.
Xshar: xphoon.shar
X
Xxphoon.shar: xphoon.shar1 xphoon.shar2 xphoon.shar3 xphoon.shar4
X
Xxphoon.shar1: ${OTHERSRCS} ${SRCS} ${HEADERS}
X	shar -v -c -p X ${OTHERSRCS} ${SRCS} ${HEADERS} >xphoon.shar1
X
Xcheapmoon.bitmap.Z: cheapmoon.bitmap
X	compress -c cheapmoon.bitmap >cheapmoon.bitmap.Z
X
Xcheapmoon.bitmap.Z.uu: cheapmoon.bitmap.Z
X	uuencode cheapmoon.bitmap.Z cheapmoon.bitmap.Z >cheapmoon.bitmap.Z.uu
X
Xcheapmoon.bitmap.Z.uuaa: cheapmoon.bitmap.Z.uu
X	split -550 cheapmoon.bitmap.Z.uu cheapmoon.bitmap.Z.uu
X
Xxphoon.shar2: cheapmoon.bitmap.Z.uuaa
X	shar -v -c -p X cheapmoon.bitmap.Z.uuaa >xphoon.shar2
X
Xxphoon.shar3: cheapmoon.bitmap.Z.uuab
X	shar -v -c -p X cheapmoon.bitmap.Z.uuab >xphoon.shar3
X
Xxphoon.shar4: cheapmoon.bitmap.Z.uuac
X	shar -v -c -p X cheapmoon.bitmap.Z.uuac >xphoon.shar4
X
X# Unpack the compressed, uuencoded, shared bitmap.
Xunshar:
X	cat cheapmoon.bitmap.Z.uu?? > cheapmoon.bitmap.Z.uu
X	uudecode cheapmoon.bitmap.Z.uu
X	uncompress cheapmoon.bitmap.Z
X
X# Make the export tarchive.
Xtar: xphoon.tar.Z
X
Xxphoon.tar.Z: xphoon.tar
X	rm -f xphoon.tar.Z
X	compress xphoon.tar
X
Xxphoon.tar: ${OTHERSRCS} ${SRCS} ${HEADERS} ${ALLBITMAPS}
X	tar chf xphoon.tar ${OTHERSRCS} ${SRCS} ${HEADERS} ${ALLBITMAPS}
X
X# Dependencies.
Xxphoon.o: tws.h
Xphase.o: tws.h
Xdtime.o: tws.h
Xbigcheapmoon.o: bigcheapmoon.bitmap
Xcheapmoon.o: cheapmoon.bitmap
X
Xinstall: ${ALL}
X	for i in ${ALL}; do install -s $$i ${DESTDIR}; done
X
Xclean:
X	rm -f ${ALL} *.o core cheapmoon.bitmap.Z.uu* xphoon.shar* xphoon.tar
END_OF_FILE
if test 2200 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'bigcheapmoon.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bigcheapmoon.c'\"
else
echo shar: Extracting \"'bigcheapmoon.c'\" \(353 characters\)
sed "s/^X//" >'bigcheapmoon.c' <<'END_OF_FILE'
X#ifndef lint
Xstatic char rcsid[] =
X    "@(#) $Header: bigcheapmoon.c,v 1.4 88/06/07 03:34:28 leres Exp $ (LBL)";
X#endif
X
X#include 
X
Xgetbitmap(w, h, bits, cx, cy, r)
X	int *w, *h;
X	short **bits;
X	int *cx, *cy, *r;
X{
X	*w = bigcheapmoon_width;
X	*h = bigcheapmoon_height;
X	*bits = bigcheapmoon_bits;
X	*cx = 800;
X	*cy = 645;
X	*r = 378;
X}
END_OF_FILE
if test 353 -ne `wc -c <'bigcheapmoon.c'`; then
    echo shar: \"'bigcheapmoon.c'\" unpacked with wrong size!
fi
# end of 'bigcheapmoon.c'
fi
if test -f 'cheapmoon.bitmap.Z.uuaa' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cheapmoon.bitmap.Z.uuaa'\"
else
echo shar: Extracting \"'cheapmoon.bitmap.Z.uuaa'\" \(34067 characters\)
sed "s/^X//" >'cheapmoon.bitmap.Z.uuaa' <<'END_OF_FILE'
Xbegin 644 cheapmoon.bitmap.Z
XM'YV0(\B4,9/&31D08]"4"0.GS9LW;K[<24.&#AH0.6S 4!!P8,&#"1(/8H  $#
XMCYFG9E@TA1IU*E2I3@=6=7K5ZE.L5,%VY?K5Z]:P2\V*+4OV[-BP:N.V7>N6
XM+5JF<^7"S3=LW<-W#=!/K-8Q5:U3"?\D@7BRX\F2NDA7/AK/J$VO;NTV\^K;KT^'IJT;MFNH8GH+YXU;
XM=N[BC(D?7VZ\>?+2L0,'1_X[^M?6-X13]\V=-?3JX+MO]SZ^/'/KI,T[#Z]]
XM\W?QY]F/5[X>?OWA[]O?5_^)EC$MI'H5\,-B79A" &F"" ! Z4(7DD1ABA@'99>***[N'F8(@OYL:B
XMAC0BE]F-->Y'(H\P.N<@5A8B!F2*Y]GVXX@^-B?&@3T.QF2!2#8I99!46GG=
XME#E6.>"16N(H(I9=W@=FEFBR=V:9:1K))6Q#DCFFEVS2N*:842(H8YMYNBEG
XMG_C]B5R<2PI*YYQA BH7AFK=J6AAA)KA8J-X,7KHHZ8Y:JB9;V+*)Z4>?GKI
XM?*5U..JIF7:Z*9^:HLJJJJ[6F5ZL>)(*XX>U%DJKIWKNNNF,++2:J%4FVNKK
XML1 B*VJJ_DVWG*6)"KOLJZO*BN*PRO:*[;9?PLJMM=)::^RWN7):;;D;IDD&
XMKXA.*ZZ-WKH+9[OODGNMO.Q>"^RY@!XY8UW.VCM;O/52FRVZVN++;[@(PS?#
XME0=+6$.@$?_)<+X#6P4EORL2#/"C15( $KK*O >)"Q[ZX7'VTNJA\J#3'+4#^MO6GD*)-=I LXVT7B];N?';8>.[MMD]3!:MXWY]B6'+F?Y]& (\^94[>N566OWK7N8B\VQEF@\S[Z
XMZ_F>[M7$N"7>U.^24Q8#ZJQO3C?C609_MO2]=]ZQU:$;3#W@W(.O_:7&1UR^
XMCZ7#_CWEX;,_?K2J$[_8CMZ:RFT,>!*6 VK,RT\6[? JCO6@MSO[#'!A\2-@
XMLM;GN?P9[<)I@: V6/@]C1H)P\R,(*F,R%J
XMT@=!%0H/;"(DGP='%A^=U>5V!53@!E_HOAC"SX(R!.(/29@_%]8%A!V4B^QX
XMB!7E9="'._1?"#DH/N#HL(1"C.(5BT@9)#(Q>E\,XOLPV#BW.7&(VWH@ K,(
XMHG7QS8;%,R+J4'@A+;*17GJSW/0"@T._D%&"=VQA(,=%1>!AD2\X\)K0T(BF
XM_6VQ@D04) GA"$:$U48A)M.4I=VO$\+UC,F6)>*QB0X%)4=KB=%NDDF44QSI+T,Z3UYI]*+8
XM@R5!5?I0B4:TI!75# NMHJ1O\M2BI61I/'&*LVGU5)M$]0H<\[E'FJ8S6R@=
XM:IHNJ4R*%M6I+;5JVX1J4IM^5*LY!&LUL2K5%F'5?L!B:DK+-2F^[/2I33+5
XM&8>95*XX$X9<_2JJVKK61QE-GW45:'6.JE*UTM4,]ZG+DR45@RM6AK>_A:WG*VH9J]ZFA]N]GBXC6YE10--X5)
XMM-P2;[@P?6%4V<)"[ 85NJ*%9V6=F]/=/E>U,T4O:,$+V[\M-+WB;2Y[I?;9
XM^$:6O,@U(&X-95HK?E>]*YWO907<6?M&5RZNLV]KD ?9S *XILY)9B=;N]TY
XM'50S%\9-@B'LK@H'^,$MFVY^#1Q>_U U.H25KS0][."UO#20WK7K>F$CM/Y.
XMV+JN?%\JRPKBK#8XK#\>:X]Y3.+VFK? 1QXQ]^I[X"!/%C82WJ^3!ZQ?=$6Y
XMO%-&-="8UG126[QIH*K&1L;&DF6
XMONZB^ZH>2@/6.BQF)AX(K>!-TU7$ALHPD"&]94F?RF6Z;?6J[QQI(*MZMJ8F
XMW9./YB F/Y74% Q7J#G=Y5S#!\U,K<'+<("#,,@ *\RF 0W6,NVVE>'*[=FP
XMJ*%FV]^(V,V_+)F@[PM>_($-!LY^7E-D  ,8O+,I-9 !#G* %1G$  ;T]LI"
XM?6T<;0MYW*YF-=3$;6)R%WK.E_91&&B0@TN&(0;2Q@H,:.!LB=. W5BA> U@
XM ):%A\'@XP8WA^LL2TG_H^RV0*#>W.\*1-W-R39/?%ZM_OCZV[WL^'-
XM\)>3A<$^E?6_FY)ID$KYN%-I6LE]O)=F.Y+G,L Y'C8>!@:C.][0=K?/F9V#
XMK>> XAW/P6-)UB+E#Y<5N)3/)%XWFD><*V":O#.*KBH<9$!P/,8AWOJ=^[[$S
XM._#UQL'=;8[N>@N^*5^G 8-5'_7% GW7K[2+GM4^/Q7_;?)T9GO 1<7ZK1"^
XMZA:'N^EE[G<<^%SK'"?,WWU.@QC<&RMPWSA8R%"#U_\6+[=6+-]P[]KYUG?I
XM8S&M#'* =<+\7NKQ%KW$C;_ZEJL;#^UN]_IKWA2(MQSZXV?P^=O>9MJ3MLZ[
XM-U@ UBIAT%9P!W;U5WU6!P,SL'HQT'?P1P/R!W/WMGD2*'_F!W'OA@<>MX'5
XMAX _]T@EEWT)1VM"!WOC(VUS(W9B-WA\!TD?N($NMWF=YW,N=WP/^'XQ-W8?
XMR&!BH(!B80/O]6@FB'1DERLD^&9!@FJ1MQ7R)@,S4&^:EW'4)W)W=?]W58
XMD0,0AX7M]DZ$P6P3"'_C9X.)6'\/N'5P%X7P)@.ER(%F4 ,+17B4V'^UAD]3
XM\CLN!HRR)H&R TGWQA)].(6H%W4,%G5A6(9C9V\U\'X7*'?-]WQ-$7?Z5W70
XM2''/1AAD\'M@(0:HF'9>88E695CRN">29V?"DSL>AC7AZ'-5-WZ.>)+0QW -
XM67$P)V\;B&X/N'=B]W[V-XL]%WKLZ(Q=MWD_N).C1@8@F(G%!E;(%CB6MHEB
XM@6U-%D/:UA) N8<1B1=?UXA-,6_GF'GG*(O_"'%6Z&X(&7,2YX4,QHM_&(E8
XMMY!AH(8P6(#6IWM'B)$G:(=P.71\L7);87S;J'ERQXQE&7AZ*'92UVQD8(8J
XM:8KX!DE?=W^VB'?.^(?H!X1-89%C('6%"910(75$^8;&E&+\5Y3CPVQL47VE
XMAWK\.'4?J)@U 'S]*(WKEIKUQY(21WX#Z7P^)W;FV(<-V)=A4(NH"8G.2'T3
XMPQF\"'!Q21EMV'UUF7L$PF^'Q1;FR$DV9V\IR9J_^8\$.7@:AW] &6_ R8'N
XM9G7&-VWF]W4;2'% N7^VV'KP]H- YYXY9H1VR9E#EDQU"'(P$F\TX"RYN(&%
XM)W7JB9H721AE.)AA0 8X!'% *9.S&'6&Z9)3%W4 6G7OUYO%Z8P4Z2$'.IR8
XMJ'ANX9S75VOS&1T@RC4)EHT,]WY=!WH8ZIJ_B4,L&8L,QYW.6'VS^(/DB ?^:)G-]G'FYS*_B*% ^8>E&:'I.08XX"R,&)GL>9W5Z9^$
XMIS-NY"U-*H+?D9P#Z$(:>5HD%@:7%WAXIS\%^7[N*7Z7A*
XMXVDEMAPJN!7X]JE@.J:.B*!E"9_.N)HU2G@ ])/!01@*^'YJ"((M80,-^9T.
XM"J#DMWFH"()%:J06N8Y)^J2R="#'.J5*")KD-'[WZ(SLMGD..97.:)$;* 8R
XM<*09UW!2YYYP6@;V2JK6B9[^60.Z6'\2BJ\3VHC(6GV6N9IE>:I3476MJDGR
XMZ89IXJ?M**ZHP:7.4I4(6:H_F(Z.F(Y&>J"79*]F $(W0 85&V]DBA=!6F\+
XMAZX;"GTP4)CXBJ[5=Z88Z$EY8M8Y:#)P;PZB$CJS/%
XM.KBD^B1$:"IL"&K ,UHL7B@G8 >)R053X%
XMV%'Q-G8*NGF:1[,W +C.H9P.X.WABZQ7;NA5%9R#*66G:-T,WUA20%T/5!S:DJ'^,
XMF*7G>*06B14CJR0.,HG2&ULA.ZQB4*R ZX,'BKQTBJ9PVGQC9[GH%P9E@+K5
XM!Z<&*Q:^Z6-)Z+;9$K?1$67R^Q1K"V,>I(!;P8BSZ)".R*M$9P:[>T%>VQB(
XM-2O*>Z!-5("7Y+4W<$DV@%BSNQ"S*P;[F9+HRX$ZVS)N221>2[-(>K)HVD?7
XMMK"LU+FR*DL,@C4_2R6_YWO4V*,\1XT?_+7*ZRQ/HB2 ZS)$(@8C3+Y/D;M/
XM/'U"0WTCNXN02!@6V9T8BXK#6K931[7TVW&8^19H5\'<&KHN!+$][,;FP7J 
XM*+QH2K-?'+9B,&,%XX)X-F;4N
XM#)15.*^*BQ?"J<-$=8QS*,?$% -5V41WIX<46:;G>&T9W)Y23"2KN15:[(-5
XM/'V.7+NC*81;H88X.YF\^*T>$F^M:[D ^[??*83C^YC?*;<*+)<-V\8^,L"W
XMY+MC80/F6*',R,IZ*P;I";@T:\& /!4#X2P.8K[""DF24/ /+R\A$/7V"<:^APEV2LLTU
XM@%A1/,R$AT/7"GWPZ<7$'(G,:J$[*F]B<8Y!1TXV/=-H/=:#.KHPR*75N7E'
XMFM>FFE 8&M+8VXLIA\=>JW_>"A:X.Z\NXL5)B[9*@J"K*\K=;*KN3,ST_)W.
XM9[S,]G[H/'8CVHDA*M:MR X1-'+B+O5O=JN3=HM(\7%*AE25[M >;YG<=A,+1!G
XM47U0O1#UUK[#ZL%HBG[_RM5(C+T?_9E0U-^@NQ?1NVU4M,]QO!I*6F8X1
XM#K(5R> V?MU^_ 6[MI
XM")0#T5-'&N&M#;NFW;<1C9HMK+R^>;S,"ZW4>+\*NQ8PON(/&R5F9U@JWN+%
XMG=G*4<++>.(AOHN2_,1])!DXU,Y?^B$GW7 G-M)4:;C.6)FP7=XEO.?Z2]<<
XM*,4,-K@&=0,ES,H]CLTMC&[C2Q@/J*M".:?^M<-_G=D!*.F;9H"16H"YS!42
XMQEJ8[%C!>;E][.J(]=^]3"AP=\B,;.$9R=>JR^EI6%T#WN/*2\8"<=0FS;P@
XMSH%G"'@'BD2B/94+=K5E\IS1XT]_+C-EPYM17[A0DBZW:WC*F@M/D[-E$YS)4-;*7Y+J^Q^U3)VV:";A?
XM2MXX7,LZKHYG(^'0M[^YB\H=7@, ]-LMN7DA*\D$3=/X76L-!S8S3N;P#KTC
XM>]) _R1\N#P4/:$A2\4<7KS>V\54GK;8/.3O7,Q]J[^#AUCS&O-@H6R7) 8S
XM(.?;WN=1]^=A, ;JRNPNG5SW;F1AL\9F324?;U# ZA0$OHOE[;0Y+;71/O(M
XML]2ES6#-9O>;&KE?JY4:3,DAZWOB2[X8?B^Y7;MGJ_&)S',@2'@HF;!I/+TP
XMTC_+3>R*SB:QRA?QB]5%"DGZ2_?)?\NMOJ.^Z;5 V8 9WZE5YWM23Z1M/\E2
XMEQ&ABGT#@?!;G+ ]M;J%N^RVW/.#?M[J\D$N ^CLF"U6-'!7ZV)R*\GNM829I/&B6ZQ9>?+/DY$3,?:Q%H(5>!#V[?9'*@G4_""CUWEJMPUX6#("4L.Q'
XMU#Z6DF)E?T^XQ3I^)GN<")5;7:EHYY'Z=2=$1-#](PM5<%U-Q N5_]R
XM%B['3HDY,E"9\-5X(UF&9W7)KP/5PJ[-S',9MTYY%34?IR2J3@M36(8NRQ&V
XM8N<(ZU,G:Q)[JI28BG;V]R#<4@)G\2]8&:]2)80>(%);=VZ)9HV!KO,\1)4,
XM\%V]R'1%JJB%?G"<-Q,:>G#ZA#^RD+O07*\"&U$'X#4?*MBWHEN/HSPH$ O"
XM#N7FD2C?GK,4!XJ[ *Z5-@2U'[[*72,KR8DV9W/,[!6 4F%PD!.6 0*RJM!
XMS#Q(MJ-XVLQ"/VN0Z"B;6$>RT%5A@F63R(M1'V=ACE:36%!];"[I[,)'-A  
XM"%$#(%KA[RT\S?"FS* A^/WID2D!(, Q^G^$J(K-[8K>>H)E[8*^/
XMD:VO+,6B_*$74S9]"4$!1+KW@416GQMBTV@_];R%L(&BFOKR@V,1,GC !=='
XM'$3A8@OM:_:YL!R0OS#3^XI8](D1.JQW4>]67VS18I"DO[R,&J #/=J,,DW.
XMT-\=1'-VH!J55[-Z3\$-=K>GF'D,SP\:.U)L)4HQ5R:)D.*3,(K0+BO8A7;V
XMMUI8Y@$]C(VGF;#%]Z=$U&(T=N:!9,V\P\/7L!K44X8-:4[AKP^VRG*C%^%/
XM$XFJX"X/5( 25+(K SC@_4PDSH<97@_(\XO70[1Q.G 6?EQ7Q@%ZCXBXM;Z@
XM0EC46F_<>MDBT?T%9S(W.-VL\%K+R$VAJU#6R])4[8(FM@SHX*Y+(HD$7\MX
XM"C5J_2TD7@49N#H
XM"15!$7-)MZ6$0T98CCQ;D&%UX;%D1G0,W#Z"5M4LZ;BK>=1IF!G*@X]N \E1
XM,4(1SLZ"J5B-L^(#%:SEL#'1&Y+FSJ <
XM "%6 >.;:;!ZDDK:2@6,1.9,*/4K%W:OY"%^4H& 88'9NQ&!X+PD6Z!T!%)&
XMSJ^@YYLDPT<47[#,#UX^PH#:H!(9%Y#T8*- 2;6P2*1,UPX?,L#EKDRF1*QU[GK.!-1,NPYR2 T
XM9*'#&0MP46O=OHGDBU+@)@L<]!"9_,+;DD>ZBA03C!L,>L5&_<7@N)34047&
XM2U)2GW5'Z5:D*UM]B@GTH:-S5*#ZT+UA:)<1#U0F)X98[B1X(U_\4B4NE=)@
XMD1Y8 4(_LLD!@L;AMQ6'S/<9B?NM1E"3'2,>$:1BP(2FQ$Y=I;2@J2
XM"/)@,C@EV>ET7M^[A;ML)4DV[!4'VQLO(A$(4HW!V47N
XMY)/FH +;9X:2%ZH'R!=7K&08066W3%)DAU?I*'\>KO00+<'TH49@-A4 H.6+
XME@+0S!'(*U:WOM.\67<;9TU5.22XT;A9$Z%UI[!;DH5_R2'34$DD/WI(]="P
XM V%]W&.NE%B*TH\P N(:.GG&3X(I.&.ID!8=TVM2%;.EH&@GIPY
XMFX$,)O-,OWB#^()9#"R2?@_YQ<&KU[0PI_1J77%30 &0!F3P-&%6P'J\\EV:
XM2);'/9R8[3R08.-#7)+"]_?N#L24.^T+[[7-4/G-#B:71"P^A\"Q1@^F/Z*:
XM=G)1ZHAO!4+<.?,ZF(ML819L^FF^]/9FV2H$0=&(MG#'8NBIW1J?7(T*;T/=I865W<:H4O,2$VT) >A
XMRIW5"V<=Q^6QA8]VT0C6.+%9DTT1ZH7TQ]< 6F$@F5H.9>J5)Q8P-MXC&PN\
XM:']2OX)DY2B;KVHBJ*@VS"L3-DY:VX #H@]1HBV[+Q:P9"9I&FH$#T,Y,@NU
XM!Q/?^@IA(4L)=10&DAI?QS(4J+0 0/'7!QXZ2[^9X0)#0/GOZ D\$%6
XMV!*BY30&Q^FL3[#DDH0GY;RG*NH1B$@^2QXE(L= 6P!.7UG.\WYDU=EF"$HSE;O("+A\E[BT9B[R!J!&
XMR#:9V.7CM"Q*JT,Q)9"8*\#C4*N/5V\:.2L@5:K(W"=]=BQR'")(T5D9>EX&
XMQ&)GP6>BJ0Z)?A9;I4!030[@+< "]R047GTL81^K??FNB*C+V&$ZF@&6R5UM
XM%/EX)44B6&EJ9R&%LC&'

U5G?:AA-I P4[[2D6YNR-4(HQZH XM1YL!_JFK83":)9Q\EU+%7#_H8UE0 Q@F)056HW5(,0["M0CG[U .IOAA>HKQ XMB5$NYQHLQ8=(D5,4V;FS9N,19>:SY)3DTNA\*"L&&(^G"3LQ2N+>!#[+:)@D XMT%NS6IS2%5:GUD7KRJ&22*-X;(F1JF68GIAA8:H-"2PVC$[ZZ5*=C+[#7?++ XM/4VH/%IY*&-*LV"F48TJ3V4Z[!8+4KR08!5#/U *\%H3\=J04Z'F XM(90RU4>%8)KHE4K(EBIVM*I XMC0T"GLUA=$TU0T.,J-TMYW4T\\.QT!)ZDP%CP ?15UTF/6E>IJNM7E"OT;T1 XMIN_L*;+J19I*L2Y+(DG *JN+[8JS$3":T7>7$+??[]I8V2\R_-"SP5Z%I!IU XMC'EO*,*:(NDR;U@(O%]LTBFP3?-&ZGJ9W>M= :,ZYCV-6JIZ$U#43%:TV^VL XM%2H\=F7*K!8GYJ@-TZFS&JVE_)I9[5+!UH6>5V3[0MRPHTYA#,2 ??,8Q=W4 XM@7[/C.VL!SBSIS5K N$O8L96)M 7@8KX*2L?A:7_W@ XMG6H, S)Q(4E,AA'OJP0%+FTRF[M55*O-SF$BG8(R&48RS]J)K>:#X XM%^@,A+P+Y+'$]JJJ]@RKO""$\'\X6F.R3QU?7;F"M%;'Q;(FN6 [(U9[5]LJ XM["VE!5$9$MCE$XLZ[GR)4E^[:K>A/!60[PJ.TCVUB-@LTM%$9W#JTM8L1Y62 XM))G7\DT[[>A!VH3CSR;GM*BWS\EQ;E @:A+N@U(1V1^Q8204M9T@UY6=,?O^DB9E0N4EEAA))UO=5M-&7(]D ?$2-KU8&<;;"OFYH6*1I,:_&4A?G>^, XMI43N 'X^IHM=K\V<@L%Y5*IQ@N:9 M?<5J: =94 XM-(Y;VG[HR3N9E$$IUI;.VR!*;_*]JB#O))$]27:9PIJSDG9G".A0G! XMX2-EP.L-#K7I1^F";=9<-257N&"BUOLE[1:L&5MF3&)&29KGU ##/@V(9K<% XM*]2W2W12*PE=1A.)!M4SE66=%@X-E%R$*L*>T1S[%*1AX*U[8>UC BB*)4_(>QGLHP8;E^@6 XMV_K.B%NH-&5MC XM 8X(3&0F'39,LQ^+4%7%;ZG1\:8*4V$4Q.4 XMO0*#+@Z.3V.$7<2[0E7@+-,"(4'PVOK88BPTH$5:@0YPSB\*6 -)U"C?2=1? XMT[)J+=W(Y,A84"8,:^C52&6TOR7)*%IY"W-_CQ=5M]!&)-KL/YN78A6BL%2O XM^1D4[D^!NV5S\(BPMP;R; ##V9:4$[#IN![[CB6BYWV4*K6SU7>Y(]Q9 XM4WW8ZB7#O.M=E]Q0_$F'5A\)TH:'R:+IC'0+Z#.,#D]WZ5_90D:+K+Y&'<6^ XM./HS*Q=&E:NGH<90"%S:CB'H6:Z XMO9-+<=L%NGC3%ZV3V(RI7I83#=O7@G:DQ7"4#F?X+#P,]9;]]I>STACJJ=(N"LA ^:5N?61J$?X-Q0DH=1R5#+0!.(!9MER?.G\S XMRKP5OI" XM%VP,%<-G0QW!*:BK$>N!-G/H6 >R\D3#)QN5#W0U2WM#P1NPZZ6TM&\869++8,?CK/;*$QX(A0?%K/)[#"QT:]-,UK=P/+5DV^2X%#;'CMO XM3&/7^KPQ(RV F(OXY@ XM+%+H[5-BL)1SF@DS6X&;N)JX=(G2J9^=;W7]BP;%;1(X@&Q/E8I.D;Y(<9'N XM!1KB 1]C><8^ ^^#_59&5I"^T&/-TQO8G5XN9GK+Y(IMVUC-$2]8M#Y2^'XF XM$XM?QW!5%=/E!(#U6UR;KNK+_*W32KU?M06<_6?[ACPRN .1Q>*J*6[-76=Q XM?L2].750JN=3QWV1C"F[?J<:QR'U.7*-UIME8;'I5;5FK\3-Q+.WJ#'!T#>= XMF"1"JYK)2"*7J*G6BB0&D0QM]S 3.:<6 Z9?83V:AVU8@5PR, -F47"F@_#U XM25RW<1B+86,/C;42K3@YO(_8B_K;+O[ ^;6E2M:G>50B1>TBV4/M':8]*LE@:4O4)+CET+JF61_7 XM+]71DKR49I) '3JNYA)O;'#RD.F(L\Z 78IZ*M,#N]G?;PMSQ\+4>B9QZ?T= XM0OB?%>K*UK;(QJ"FMY_X:6.W.^I[-FQ0PHNX.FZA%8X-/(Y*2/-BREB!Q18_ XMF30Q%/ZPL)%(;P),.'H+P9H&:[>5H@ AQ:49?CDCR4*#SI#3O=\?V\<@%MX> XMOL1T62=E-XLOT>C!Q5S>$*H&R8RV=FO#]1"S/W5C4Y6P^#8I'SC,8>TXMP6H XMCW8TR8\_9F6-%3,52%!9W=82..-W2M21%>TB.;F=@C!&IM%R$.M7WV*?N:NZ XMGEMQ=]D2Q>0YV$QHUR+1L-8D,\F^\$Z3QXU44O+KFR%CEP?RI UG-KU;X0'E XM@/,T!Q.;1$/+^UI#4ECN*,*8ZB3\AQNR%2L;*T:;PY4IX5R^T?IR/)T+-\0C XM%]V@\;9]\5_DF3+&Y==>C&H-.>O+13W1R&,M_,P)SZLE/F(U4C&3)(6 %OIC XM$@F*YL/+L=I^D)CI@$Z=8)RZNQS&)LD3@E 0M91AYT1X8PZP>Z98'PNS2D=Q XMQQ9W93@NP.EQ-\SNT%W'S#@Q8-E5GZ4Y6#?6.-RNJ$=UMKG=Y<6-CCA/!X9L%X XMAGHI#3B]Z1!C-N_Y>3QGHNCYK]TLD]D>L"QU<,P0?RL$<6IQ(+T\T XM:9@B)Q,S&N>V2Q6/J12SO.5,II8[;W*(X8SCVV60OG!>QB9BX*/G90AM]5NQ XM!1E\,VJ>:+ 6X%T;P3@^FUZ'I5T6T$)_SIIL2O$XVSD3\E<$JP<8'96_L( M XMWW8NICFM8&EMV81@?@L.KE=-/X-X<44V9H2#, ":Q"\:5E GVA4N;-!,$.8\ XM_,I%D95VUFMGNVDZN=4=?-%SQC8.I8.M7V63G,C/ZX6$YPDK6I)T$7V/D9-1 XMI]IO\VA:"F:J!'OL1"IK2G=J"0TOQ."^#G4*@.?XY475L*8J07*4S6(#-FBK XMMY/X&ON(BJ7B:R'G?N]MSL#D@C *T6UV/!9@-GN5VZY9SML"^6 .1_R+!#G[ XM.,:VZ--K>?:'**HNET,J6!,T&][7E .G:'N(6=\"(7?I$9'N@$.LMZV^OK=N XMQ#1;K30P2*^IX#HQ4CBK)F>2]8@SCLSY^/F>!CG7&LIH&*0XKDQ_X4ZAH;F& XM%=^2N9'+#UL%VKKVB%.!RP&8?2)VU'GEL8S.ZXFMKWU%"]N6][J]=!1&)8Z: XMKN@1?YJ^+&)%$M-^D^B,@1Z'X,IAI"#(] 4D?P:-R^#/Z)G;UQVU01A(7 = XMQM1IWEHMB3?!+&_IR!!+;3/NTY*SKCXE: .N,=.J3F%-FV'A,'O@L3)EP.Z+ XM8Z!!WAZ?!9G#R48-%&ZQ,+'9/6H$*^XP8->SH?KI0,53_UK/!!M2;SD3LC5. XM]U"DF255X]E44;(EJZ00WFRSE(I<9$J:SL?=2P2UV22'3 XM6!(S=_083:5/(LEZAT\!-.;J/=F^TTSZIK[31\+DR-(;:)$B*?]BW?0UGL=9 XM:U-W)#2<@]\,L;59[69VL9V H\@Z;@4_,3P?NI<2D1?JL2+K#GC< +)B=RSW XMT\"C&9ME5'9Q3SB_%L.%NG0$#+<-V!%],D^>)!V=N60U*FVXX[M:R+^)0#[@ XM^ZHSBG%MNX,2"3"7MDN".*]J>*Y\W)0ONBK'2S4@K8O>*),ZQB[Y/B[5K*T> XM5]8C'#0XZ*%*I72@G'LM2XYOK"Y6#?MC(J-#/#HH-1P[1Z&.WJPT=5A XM,_>L$8'NB%^T%0F2"L&PAB!/O0ZQLU"#O]9F;_,H$Z75WK&K?1K9U?Y,'URN XM;6GQ&ERVT"H1N19K-6.F;4;/ZYS/"K?"^3![N.V4>=KBO8 #8DN/QLQ$9OI4@! XMHP8OPBE2"+^KF2>+H(G!2E7J;T!UY%F62+OH4'/MM+0_7^[QINPB$9C&W/U] XMM+]UO?T@DCMI/9"+1$-JO&1ROA%\9!6M(WQEAN5=[J4CJDU&KGJM5X2VK?#1 XMIK.=FD#BT%CYK([;Z?KQKFA8W8"4I<"C2%]RVU,0//E52NZ8) XMPM*M1*6(UUVV9],2";W<1G-F@57>_14IU2@\IX1"R]%>3>6V4$(!"VE=LX=/=:G?-/S3H@C\UR9MUX1(!%2[)0-]?]P5WA'G=G2/1JYIG T\3\1$06A<>GD4[! XMU0\(\ZAJZ=YL0V'%6[L1_B$U'6$M$C2UMKU)F,MGYV-$?ZB>$4)B96SW$O#@ XMG"QG_-7TH[J-?R!)U'?W.1%$S3:#764KIU!C%S0I-4U:OJ5LO7]]SB:(;>U, XMH$.-D=F13F_1GX<5!#YV%ON6E=F PHY-8>1>Q6;>3'33UPFG]M5OL)X8MC&9=NF> XMY 7[G3SZ'>9U;2QVLY,N5[6I@0],@&74;"XBGCU$4^%@AX\,X\XX.!X3)W=] XM$19 'SRDSL74P;H YX?\5834N;Y:V$>TW+.F4C@4ZF XM FXB1_F!*].+EL6 ,'^5%W&:22)"EL6UH,%*F%[3A"GA@-N>Q.)4"&-?G;$& XMO%UX AD244_ 4%K1^28Z-#NUGNSA:[ N>$ZD-@U9'_Z+1C<04$" @>87 %UF XMUZ!3B%=5-+"2E*/QH%J]B._RPL!@WZ!BI,0A":C? >@,FGT'X0VH%YQ=YHVC XMAN'];IJ#3";"@0B:5TJ5$DDD>E\[=!&M>-S?:< )/7(EH0:C)( L-0J3UPFI XM-O'68+-JF4,7!'05V, TPJ!/ATX4@QW*,6@/57]X'M86_@4AGP']ME!Q@GDA XM.42X06V<05,7-L4[5U?2<8Y\<_X*?C6U,3O02RI1"3$VI18;,M!2]AT[H3 XMVA!9F%OPUE\Q1@.B_^!G=#I6(-!0.LE'JA!K"%+01Z%6=Y@,7@LZVXC6-O4_ XM^XX?2*P #W1.6(C50(8.7$Y4G"%^\&!"R%V\<4H-U:5LP#: &)IS\MQ Q!G: XM)51@.^";"F35#Z&7$G%Y$%KZE$^A-"4>ZY;\717Z>VA'>9%]QU%J((34R%5X\EC#TY5>+1 P@1=&#@NJ)&)2T%SD3BA!0FQH^'A!^E#/4@Z4?WP25G XM!)-7D'41+-8KB$@-/P&1 1-E%%U6E4*A#^H&A%6T9,YM4.72$W9,U6F#GR'' XMQ*V&$@T>]<"$']W;,D5*E3">3]-U7Z%3==QZ)DP :JL>,I%RI(1"%LNTB1E% XMT!['=.X=6V6#8)@KS!43$:5SFJ%M/V$"-45Y@\::QA !YEVY4]5E='1ZX5'M XM9*'%>.?1T_'.'%ZW8,&GAIE=UZ!>408^:1U&CQ ;C5E&7VDPI65A9V"[E[CQ XM<7"BL>#0!5'57_:G36DFF->FF'?):;)1D$CPL @IQ\ZC)$!*12*M^,[X00Y" XMEW(M651"$<(8.:D\#N!4-B',3\67WP8W@8!;GK>HR'W=G/U>3EBG2@C XMLER'(FXU$)UG1LW%)V M6,R:9&6?/&O18<\4H+DZ*R),A.X@B@Y=,* DUFZJV$&! _5C\U"I50YC,?<+MG7XB&8/%#_*, XM'UK09XF19<\1BJ 5%&JE$UOW8TEPRUU4)Q:%:V,AA%8I'G0H5Z1P);8YG9\R XMMCXAA@N6>2*.@3'$W)HGO41W68_(Z#\,BG*B^>?=Q'97U(=7#J57VQ^TX"?! XM6%F1JE@2,5?M60B3J<$\+5YBR+%H"%VCQJ"OQ6 !XZAAW'$TZL^ XMD>!ZY3VCD>J0$;9UW%XS.-",@BV21 2&]6HZ8CT%O\V%5P\8%F9A?).)TO<= XMJB]ZW!?8X Q:K!*RX@)5))5BX:AOP&<6XD=GM8F"_=8;IQ.]>4I2/)- Y5A3 XMFO1WQ\486*/?V.!85PP?9VCYD(S4GQ_((4B'W",H(3:J/Z)-N?,ZNC(9EG0$ XMX@V&GM)DF.&=AYX2G&.'[2<;C8$UV24NW4QN@EI%V(4^^0=/R;AV0*9H]M.LE/=%CHFA G\KVV60F0E=@A/4 XMAL&P1A5DV[>TX$U!EX'P'26(P*&Z5A?"!S"DG0=JR(,850QVPCQ[@!']1\Y< XM<0M6I];FA&$;U%QG2'0Z"B0A SM$3\S/@L6 XM%"@A/7XCC'J3GC""5A42MZZ1&.M3#LEE-)(R(]CH0"I]"N&<."MN=(XD[*)O XM;8>FE>KWL/D@/ \ =]V@.]]:!2,23HA96UCH+*!4N0W%R#?U/'Z2S60'P2LG XMUH13PPF(((+B. _ADJ8C]<(ZLGHX(T5DOMR+A5R(B)(A$?4A.'05W1IM!37! XM%P).@- >:! E*2]CGR.C58QW(4ZF04:(8M$4DT%]1/A=7774:%9P7(($#66( XMQT/K5RPR="C#H_"S]'W)3 ;ERLEYH)TXQ^*$=.Z8--;KI8SZ#4>X=BE1]"2) XMU?.X=$92DE*N6(TT9&O ?11CHXEM,7W==I&4&D6V;#,58G B]B4=E(RJU!Y XM@M>A.CE6>6CP#"$,0X'L;9X&3=BR(@B XMT#)#I)$"2#I]Z%8H@$J*6P1'TFE]"@CW'OIY@5^"E7?QB:U22[-8)#H\ XME8W4W:V4$:675AE&<7<@FG((G493BSLCX7@^1A*112S^C06>6\=E^!8Z8/DW XMT;C#('KG+,V/GJ5 XM?$$@].UT)T]":OC951]Q$CJBL&E5?@O/%3%.@)(95J1#@%W(0K?A1=1.YHRO XMAWE8AMDCY;?!.6MUA.]FX65^Y)](J.8)9%;,'D5280:G56'9$9Z1CF7B%Z]1 XM2Z"3#J6452Y!6-ZS1YD!0TEJ9KC!$\3BVJ#0>06"7H3HT Q%I<-.V1FB524: XM2.9%?%92GGEF7:DU.B'](S,1/FI2*5UWB0JX'X:6<"&#N!6>$S:<=@F0Y XMGEFV!,54D=I55-E)B//;(A&E!4!^'@REH*DR\^6=*"7Y!IZ@F?/W_3T:%_P5 XMZY@C5,666)VE)\!4>Y+IW$3)%7WSNJQR_!2JJ#3H>4!C)*DP=GAHSI<"^6V XM,2;RA%CR-1ID9(4,'HGZS38IPZA1C!,3HY+)6J^'(Y,X(F9VY*&W6+9SP7+@7'I@AT2BOVP>@%/ELH/A9,H@PT*B/'_F 6^FK$$^*.!D]J%( XM1S%-?]$&II)N))6Y)>$>B46T9!EZ=_SD]>;9%8<"(GZV*[5KO4N&Q'3% ,Y< XM!VC>7#QNTWCERCQ50QQ7N-"A!EUD$Z)#,(5-#G6E"F4X,M:Z(XS)C_"@*.%$ XM3(5KE\%E%2)2OR0Z0DL58390M\: !08L)*,4.+8XPI&R=4C:99'*3G/=""^E XMFB3#I6A EF-1%V%Z"GNEJIE$SH:A@P(H&3D3PQ]]>>L!;U<9R$=>+E*$7&%) XM4O)]=@%/2&9:,4G7]B5C5EK-2?'HT<&<#O]%0? XMHJR)\.$.A,OS=AD\="F0$V'+!&NM6/.#H926PLDL(IWM5I0,4\;183W9%CLY XM9!1U&93'^6,UE:M5BZ#OC&\Q@F'&E, ES02]/Y]CIU/!. XM@0RDZ6BJG?#!^2*R %1Z'*^5I<0T!TK--NAP=0K-'-3>](F(8#)5)A8P16'4 XM4%MBD0"F=Q4V 5;8!U\HOL%^6V6>Z33-58 4%FARJI7H(WO9Y,!78 [G]CM- XM'M^&*HAA[(Y%$>HRD?TNB$T.1JJ 7!I4V1FK<3@V4K9IB'TN?UO&AA_>@PN/ XMHR=D24K:4J+W+9*&1F0VT0"BAU,E5 7P_" ]A3JV1@9K0E@= B6Z8U=?!ZJX XM694*XT[5]IEBH-Q%^W:?/@'JCKYGAP)63(?VF7K6>4A\; XMV1AVCY(D2[GD'#7D!^FS#5&6;=D$I6QL8Z[-\7?665(#9.#0ZDVA-(^*DQ'H XM. :A Z<^;7DZT4376GHK8-AV4?7%%M[F W?0:"SN)5+IXVB"4,Y2LB1]C.VD XM:8!J1< XMZ9/G3!;#6/*"RYJ>5'1:E:H0FS49+@2N3,^'7YH5KA&-1'4F,)Y(\(!XN)VN XM$T76A69&_EMG(Z;90O_4KG=\D:')*-NI4XQ^LTY' 2)"F.<,^A1GF'QO8WN( XM959/,Y_055M6.VN!9^:6=),?5$O&$4I68!& AZ;*(&VLVL(*'(;%^*.>+3 XME#06:+#"PU6-Q(SW1F3:6]C#I.4/LD9$*/9AT21Z+-J/IWBREAC=P>3G'68" XMW9UTZZTK"5@GU/0A3Q64PE=,7IAGI@YYC69M)6!A(I$BIG/*&*#R)7..##DI XM9[Y"9F8#F;21"= 7UP"/_#7;Q==8[K@% M^A::AUD" F'0@=B%XXI?7'"U9Y XM0E(SEKX=/'VB:R@ M71W&AY$6,:,&6:OF0258;NC5A+62"@,AO_6M$0=7A_> XM-8?3( XM1]HH)K/_=(&-2*Q&:U".V1LP1##(#.8V29,:TKC)5E0FK2+G_+ XM2=3#R4[WJ8_@;Z2#,81O 8ZU6=DA0MD915343K_(RVVE%0F^] Z&G">ED!2I XMN5R2Z74U?1TI3Y0[PR'ICD6D;&1VX3]6W7]));2%.,0S!5S18G@7P?:>EITU XM#N>YW8RA*:DZ:![X4!H:\,F*X@!PY#CTDZJ!C]F@QU/ D<08-NF!4CQ*G3;S XM-Q&" >1>FG=^E\C3R?-WZCAR!5^(ZQ0X+P]31O:H,$"<:7+,8%[J2 9C<.8W XM-@8U]@35AF*/D,5I,C%2IWA'KV4T\^4%Z',&=H',]A<^YE_7:6QJ'E5!4Y)$ XM(Z2B%2 ?Y*AD9@DP&I=IMVA7T-N6@J+@\X9@A7#J5NPV&I()W.:K"A)63S69I7J>B(-, XM\>W,J(3BT22!('LK6NLYH1)Y I@(N(4%CX7!Z_>QS$%LW"_%Q9F8].32MR'T XMIN*CD:G+1$'_6'CU+T&'HM)YU \I(%0%BHB..)J H.[ @!(3\^(X\6:14J\= XMU6@@&1^<9DK2;K:@-B=9)E1ECA03KA9_47GH9C/)5PQ076"A='UM4S_,+D[5377[8'NOMU0]:AWJF[E"XZ@6:HH"W&%A; XMDR'C&ICA5=,JO^?.!7C8)YX):[5XU:'JV8)A@A+2VJ:_W$F&2YU6$&V2^RD/ XM63\:9C0J(BKRP&Q5A\]!MDPH8.J5(C.U;(Q6CM7F+5$^''UJQ]4(:EMM(+(T XM=; 1"%A0Q9SY5J7J8 6.Q@'K@L/(>MOJB,@)Y5;3QZ5WZ%_:B?>:OU2E.),*0P%A6'"*S4=A+:2UT*5X2?(2#AT4Y0.BE!X>$R-V XMZ%1?IU)CIFJM33[PP&9 >XN$,-5@:-';]/9 ] XMY*5Z3U8ZP(TT\C[]2_@>B5.A\#O,DEW)A8FB "5)0:=JA%LLBZ-]XJS'ZIVE XM_36LI6I:\U(F:_5A*W@O^H@.7.I6A]*.RI3Y,?#]3082H=4H/@P5R0RP)*&D XMRZ!Y";I8"@\(^OG8F2HTT*EF/+JN)M%59?XTB\)9H4&[Q5AX]JT=JD*$H!C@/4VW XM(T#5B)U.F&RM"*')'DF7.T: NFVOT@X[OP6T&PW&:KN5.\0-;+;I"%D0 PDR XMJLQ!@'=7'730475>$$7*;"RE=-Q0-:6'20L2R^H<]IMHB'SF44)]N XMT -Z/TI" (75N!O_$@6J[AQ:X8M/:,W]4@JF]/JN\IFN LIE/*5S^AJ(F1HZ XMJ]F@>.KB.8\[4Q:=GUJT1G[Z:4YAJM@^%9@3H8,T/46U+./CU5IJH)!* XM2+J-Y"T\R'')220R>\:*B=340LX=QD6%A1'KJ]90(8UWS2GI%5.UB$7.RG4L XMUH\J7$.QZ!&OB>BU:OEXD"89!L&]WH)E0,0%5_$MV QMYNPUEFRCLNHT%F!6 XMU\!&<;P?_0N-^0KA/E$,$DJ,=F5&V=-FS1*HF>4]E5-.@(U9.Q63R5!&J*CU XM9C5B*5N-88[U/>K6FJK(P*CJ0Q_YM6U_+>K"8>X4)*E0WAEX%K*/+<9I)U:, XM2V1[HN^HA2U#YS'H,"H3&:VC$.6O;66"YF>5M?2B,57VT1;%(PVQN\*#3J'U XM(4:^E G;P?1W6HD_JFO0U&B0.^QE\#'E-,JC79/=U**X 23Y%R2)KF?NM*%L XM2_Z(QKK.,'[IE#Z'WL1!7@L_-[JNDTZL35H=U!:+68 WM!:W RUSZ2GA=WX@ XMAN,.RG@E(.IH%01)Y VMELE6"@X@'$1/ED:1"<2!C?:#_\'A.$Y@J-OF8\+- XMIF*JJ]NWS9Q02@TTM$M))+(D4L-EP25*+HKH XM9ACJ?B)G"T5>PJW";4S*3#16? HP0W,T).,:*>%]LT7!$.7.* XMQM$K+G^ZC&]XME&RWPR61_@<]DH3"6S^B"SL:YI%FF?- XMCL<$L3T@3AWZ"RS#YFB2(FN!B#AT1??I<%K+:8-D0H1A!IE'>)T>*=-:HMF8T8X/='4YG*484,9"5[V1J879=+)C_0GA% XM*HB0(H/'^H?+UQ=4B>H,"62]P$T0HDRN<5/=_GGJRU/WHEF$>L&[ETBIK3MM XME7E6VK/DG^B59#*9NYO#"!N1/H#)&J>1!:2TYARK9=@8V69R)_9@N:98Y6(0 XMO6T#*@<$K2VF$UNH1$$]L?WLJQM:A RTA>@\F$?=BK(S(M>9_:ZR$:E,R% XMWLHOUJDH@+W)68(V$:,&;J?;T#X7H<:,$"P!1KWM.P.(_9O>38#8B]YX[J7J XM(@Z^.IMD5+NL[BR^!J_&:Z"1&VAD>S(:?C$NCN69OK4'CM5I<-48R]T-NINA XMFH]MTB$TQ&&V2Y45B(!CU"<+6TE:G&:."KMSDG"CR8 56,ET9R<>QLJHBK<4 XM)28;?KD2:NU+V#8)T]:"U5_L;I?8E9=')ID!L-&!2,UU?-?,8^"\%VB5[E8< XMFJ$3:YLU(-F]L4X#=U=IJR(GG*C/^(&#W5MPWRK 6(UBYMK@14*8!864C9SM XM59W4R'22L6Y(T>($MP*"#%EHW:I[WE78#/9)X&/N)/M$5+)>1G=#HDM'6+R1 XMO8$YVF5I4(6V%?W%\7J9X5:@:&2IC*EM*:$WF=U4/E(,G6.[>74AS#;T':Y( XM*K#SIW-VEB[8 GH??FW[[U4XPC!\P1Y!1HW."'A,ZY7:2<)J7? PTPIV@Y@" XM4K^,6%'5GA0%8[Q]P7I[)%"GUDUU\O0,JN7-+NP\4G(:C^#4O<%LS:!_.S+Z XMER.K%.&6=A42YTRU.D)'SH1,5G76!K[<62K"B;VY$V$7)XI8IY3NJFRX4P^I XM?37G^6E5(9UH6RHP1-[YJ;Y,@5'@.X/A\HH)U#AYIF4%Q%QY.\Z=G.XKQQN3 XM-<$5\'*@2:6BPFRY"_1Y>;HNF>O4T"J]!D79$S*Q_>I[BR+4 )7) 6>=A#DF XME%WI5&Z 1K"\I5 J-MB.2^<##:@H5<<1[X1RW5M*A2\EAA72K/ [8)80L;LP XMU^JD7$-_P36%:;."%L99!D+1\"!<;4%EM"6V(C9BG>0,7LJ)^CVBA,XF5>$U XM@\[0D_B>ARGA*1G'SH_V9 E6VYS#A"?#9>8)=A'>YTMD79PDNLH=;;'VN(M H)'E1NH-@K3*PNNW&"8Z?)W60$W!L"D' XMX93N9C2G4&TAB.5]8&P15CLQNBX@,(S]1E+HTY?I+67$4,9]).522'D<8M.; XM I6 F(7@>:6"K&+*@+D%1C*,E7CN3F$R@]5K^8+#4<8@7,5A-6-L<,AN\L)I XM&]7[]-15?G"IJ%LJP;$AZ[=!\7!6U&YZ8A""U4.4@;E&>5M8\G1XI4A^K]]: XMOJ W,UU]50NI7R1FB23%5M:4Z!QUPE;5S,R/WS-QK/#SR3*+*YT8&50 XM"H;>I<>EBN2[)%\*Z&P+_,"=ERUF',9"=6<.6+G%\H:8P=DZW;FWN%TS"@2F XMG;/+O@B>GE0HI&&8SRZSB&AV#-=5#Q>9W5(195#RC*17P7A:15O> Q,6A\=K XM$^B;ZJJ]X'KPDJ(+)+*2=RV\>V/FO)GU?D#N&4,Z,\9?,UK-&B$W;E\DE'!4QZ7I50DTU8+#GI XM:JC%)HL7/\PCPC79ZUF6 Z%T%1R^?UU>-:>V%)L&POP4@9)\]17@.)LJF!7/ XM-(=^&'9!)\H6T3J??$&#ZV89HE9:4"(C1R+3G=_J*X8*3EGH>D BTGI_I1-!HQ[0MUOF&R XMTY$3M8AX(J#9.S5HB@:(,D9H,3$0Y9O")SU97*!^*<)BHTD3;4$Z'F)])HJZ XMC"J0R&^5^#$$EV:FY;6FCC%'J5&:9-P/&%4@_ W56/@+H=#T3#YH2-;,>E9&U"4_F=9 XM4;^6N^]1G2/SEJG_,:5S"P/0SM$Q,TN&&KE^2DY=U9@;IH XM:0'G%IGJ 8EX:Q*H !4#F."V XM*<=CI7Y'!.:7MN5<0>FQP9T9MPKC'5FCUL6P XM\GGK4=8(YTM+/"N&P#LRY(P2.<_R*@S557%;F4YLY.9V@'8*$3"9K XM,K!HR!\4SQJOMP'H[5-\QL>;&/.,GQVY1&1M-&84K9,1P%HR4.PZ2\(VXR2X XMLQ2^?'HJ=FF[G,1!,Q[SQX9^V*C]L,8JA5S"%,V^M@@/I?(UX@'2$!!/4SIY XM/FBPT'F#C7OQ,;&,3B"1^"!]<,CRB(?;P%F,J<-R2T8 XM.16MB7,(6\YR6C)=?"FX6!X?1D;D!@/P2:P>*&+,QLQHQBCM83,8N5V6 XM)8',P:%'@]K(>W"6<$A;TA;"XUQRGF&.'G5EX/QWJZ#OP?+!DL[0#',TATIF XM"CA32F(N)> %YJ#= '-T4',TWBE[E6Y7IBUR18/ ?'U99HK=4 XMAQTSQ>@X*A_#?K[< *P?#+(N=%X<#NL4-IA?T._F2!KQ_V/)>E#[4JNJR)PT XMK%4PQ3."?\Q=@R#^O@S*R_0%(7E+JL_+:);&OF78!M2$5@D:%X;<3\(@RBFE XM0A,)8N'FUL@22[6C(:\D(L$RQY:([#RV>.G5?+QFXI&L*@J/ XM.YH)&GO,*F44)6^7W0A+;6-P:*N*<&GJI+KS5@@'+[@G)SZ)R"DX,XBMF7I< XM-:5M7:R[SQL9&0F'"?(WS#(DJC/PH^&LXJSI%8CX0\]QN(38\>E8;GD7WJ5[ XM95;N54F'Q]C!6F[> ^S.,)JF+N5IJ>PYH_(6S?HE.+.AOCKN(7NL0?Y?R.*FP[\"R\'I,NA/Q-/"[(L;;EEC XM+&5S^:7FK513 3: XM9N9O8399$+< J4*MJN*CQN.^A@.0AX[:#IW=L#5 ,>LKA 4OU8URVNK(=GB5 XM=WS+&)BHAU"#A]K,<&!2'#56E4UTB?M#^LOO%J[0/9UTI XM3PT(3DYJ @?8AU@'Q(8VRYI@^ &^!DGO"T\T0OD]S"'LZE2[/P3K.LH76BY' XM#W'WP\[37O Z*RH$UI*J"0PXI4K5-=+$X3:O#*78DV,WL*=YE,+M-X9CS^*,Z,B!+2H-=N=$I$"KJ0/JW XMP>(;VZXN/RES?(CC+A" XMH[DBK.@;*-DRHDP&+&.@.0W&6*2&EJ($M("3IJ\=-,L0-1_(U42B61NC;Q_Q XM#.HF9YV1B)JW;64WC2@7DYT.PT )DJ)+A4J]QKE$,O)MV'5#<97E#H/PJ#G\ XMG<8KL=A%/I+3,(1R>X39 !:NLQ0O2HAL:ME<4*O5?3!D96'RHU$T#+7\E:)2 XM8A BFGY$Z=/+Q\?6&T=M\+)YE P0VG?B%_U]T,L1!L+4.&O@:GEL;YU5;(ZB XM";;3RD&\)-%:JRMO1=;YM#F!KV5V;@?'+W88D89FD]45I0WK8@;QKJ/M<@= XMAQ6$&[.)NL@/$R:<4$!XE\WB10P]I%0_O4">U,85Q\2W]=O :I2[*')-"9TU XM*A8V>6VP(HQ,"WM/K)>J:.;2S+1:W:-R=R(7"$K^&$[:5X]#^18\>!Y7[9(* XM,ZK+EJ:6?%MH"*"5'^^.!(Z1GU[,:A%SJPYQU#OX/@HGMX!X/0%4=^J\H"G7BK)HUV,= XM?2TOC-@Q%/TG!Z;>HL;AES'P_^5%B(+K=8:\X$'"N+1Q*PR#9(RPFJHYLY79 XM1$SC]W13RVTF>4:-!*D'CLTO-8 (EF8?2 XMNZ98N)Y/;Q+ON8H7J0:WQ!A^%%(DBX;*<>02S;0ALT9E0ZI=$"&WMUKM)@VO XM&_Q1WY(# %_5@74:^/;7/88R"T,\KR[>#=QW'M#SD0&:#?.,>%I0 \;Z)<), XM:Q9;RR(J'DR4GJ0CB1&%3>4PE=#T53M&RK$5T%=[HVT#2!R_#7.U[ XM9S%/51'FQXS$'AY" 1">CI+SU2:96K(4'W?XUP!D+M<@MEWS-591PPF"3#N XMAU\;]+C 00FHF42?5W;PNQN%WWTK-X_,]"F!PQ&MTZJX6]<3W,O.L:L/,B^( XM7M4H+(CLA)GD9\?:$$A&$X _K([]'V!(\2^9B10?V]=L%CS0+6;J9UJ*U;HP XMJA>J8X-/*!UJ;<0T93[%VSFC4+45^= O59GVS.NH&F,8U56'<=3=]=+ ]U7Q XM^\",I& -P:N(0N)#XF-:=8O-E_90FD4^M+NE)7>?\5@VJ(DII.[-!\W9MGPC XM1W9KN3JYP'&1E:;$TY;,)39N,&PKO%P+5MCOH&INY)8NE+5CY8N_D$]323Q XM;2+^IRW:U-TM7ITFL*8%G.Q'8-$5#K!W2\V"C/A[&"1%L&E1>J*.1# WE;KE XMRE8QVQ+MAPD?UV7R&NQG3G6MZ8@FA7HDP[(=I%'-8FM<64V2::6*-R)^*_Q7 XMP\^(&=H^D+:F3PH+R3)P9,0\@@8]/(WEXOE )+&.Y**8/3D\7P ]TY*NE?3@ XMNC*EV*WTIJ/RVGH/ M4X@E.HMLLGVO=$3+=W[K8ZJI=Z,#R1"R-D<A;!]$ XM=#;P@[?DU4<8]WF%^SW#GUG788/K'_.&22*8\)3)M1B60(F$7:VGC$(K:U#A XM8 AJ1='(%]-\).LX:\/0U..Q8-M\BX9WTPPQ XM?, 7F;/X+>3!P'=QTDJ? F>LOU-M1,4*OIFCP_4D@!I A<_[&=.5P<>D[=QHYL!Y$?Y@LFSN @%787H XM5,KYQ (8X&YH(G@Q\!'C8_G=]Q&*@.=?[9;;#'%SU+*#;W&HU9GK2K @)*(' XM;X(W*4RRC^M'.%ND71 ,<179&)':&5P=XCDG*_D'$G/9=3FNG1Q&S 5)]B3Z XM;E%[>5&,3&@NU: XMT,AQ1A('WY9.5*C0'S@WR3*(IH7_XRV6S XMZOA$[@5GG/]SQ<=31]>Q.61Z92Y3)Q$GH< %(CJ5=UC^SMB.;KZ<9S##(6NT XMR[']4K[E7X8O9<6+1*!H%C"C \"G5_5U.F:GE)O;',?*2WV XMJ&BR+U!=2;,X%1&1,\L(2ANE#1T1YZC_IP%])&&N8+K/JU++X@.OY XM>,OFC+<7H\BL(LX61W=U@62?& ?DDLS]"&R?^-TK#Q8 XM'&1TWL#YOD6ZV/B#@&]S#A_FU/E+?34+^KV.B87GG@QX$^O-8\@92^4,FS.9 XM!YQC">=:I=HFU>8!)JD(6#*60"#0C\^ANQ2& I:QO1K*VD:.G;PF'^MR^-++ XMFC*=8$+8W!>VA[/+"I8=M[W=LR%1LE'MW@PN>LL [XD>,K16EM1@ Y.)M**Q XMRYM7L'NI4?;PR0FDSN]2AVTB,Z$B#OBK QG+1/YA3?P$FMC#[(*S#]<0:09Q END_OF_FILE if test 34067 -ne `wc -c <'cheapmoon.bitmap.Z.uuaa'`; then echo shar: \"'cheapmoon.bitmap.Z.uuaa'\" unpacked with wrong size! fi # end of 'cheapmoon.bitmap.Z.uuaa' fi if test -f 'cheapmoon.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'cheapmoon.c'\" else echo shar: Extracting \"'cheapmoon.c'\" \(358 characters\) sed "s/^X//" >'cheapmoon.c' <<'END_OF_FILE' X#ifndef lint Xstatic char rcsid[] = X "@(#) $Header: cheapmoon.c,v 1.3 88/06/07 17:56:02 leres Exp $ (LBL)"; X#endif X X#include X#include X Xgetbitmap(w, h, bits, cx, cy, r) X int *w, *h; X short **bits; X int *cx, *cy, *r; X{ X *w = cheapmoon_width; X *h = cheapmoon_height; X *bits = cheapmoon_bits; X *cx = 576; X *cy = 455; X *r = 378; X} END_OF_FILE if test 358 -ne `wc -c <'cheapmoon.c'`; then echo shar: \"'cheapmoon.c'\" unpacked with wrong size! fi # end of 'cheapmoon.c' fi if test -f 'dtime.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'dtime.c'\" else echo shar: Extracting \"'dtime.c'\" \(1855 characters\) sed "s/^X//" >'dtime.c' <<'END_OF_FILE' X/* dtime.c - extracted from the phoon/libtws package X*/ X X X#include "tws.h" X#include X#include X#include X#ifdef SYS5 Xextern int daylight; Xextern long timezone; Xextern char *tzname[]; X#else SYS5 X#include X#endif SYS5 X Xstatic struct zone X { X char *std; X char *dst; X int shift; X } X zones[] = { X "GMT", "BST", 0, X "EST", "EDT", -5, X "CST", "CDT", -6, X "MST", NULL, -7, X "PST", "PDT", -8, X "A", NULL, -1, X "B", NULL, -2, X "C", NULL, -3, X "D", NULL, -4, X "E", NULL, -5, X "F", NULL, -6, X "G", NULL, -7, X "H", NULL, -8, X "I", NULL, -9, X "K", NULL, -10, X "L", NULL, -11, X "M", NULL, -12, X "N", NULL, 1, X#ifndef HUJI X "O", NULL, 2, X#else HUJI X "JST", "JDT", 2, X#endif HUJI X "P", NULL, 3, X "Q", NULL, 4, X "R", NULL, 5, X "S", NULL, 6, X "T", NULL, 7, X "U", NULL, 8, X "V", NULL, 9, X "W", NULL, 10, X "X", NULL, 11, X "Y", NULL, 12, X NULL }; X Xlong time( ); Xstruct tm *localtime( ); X X Xstruct tws * Xdtwstime( ) X { X long clock; X X (void) time( &clock ); X return ( dlocaltime( &clock ) ); X } X X Xstruct tws * Xdlocaltime( clock ) Xlong *clock; X { X register struct tm *tm; X#ifndef SYS5 X struct timeb tb; X#endif not SYS5 X static struct tws tw; X X if ( clock == NULL ) X return ( NULL ); X tw.tw_flags = TW_NULL; X X tm = localtime( clock ); X tw.tw_sec = tm -> tm_sec; X tw.tw_min = tm -> tm_min; X tw.tw_hour = tm -> tm_hour; X tw.tw_mday = tm -> tm_mday; X tw.tw_mon = tm -> tm_mon; X tw.tw_year = tm -> tm_year; X tw.tw_wday = tm -> tm_wday; X tw.tw_yday = tm -> tm_yday; X if ( tm -> tm_isdst ) X tw.tw_flags |= TW_DST; X#ifndef SYS5 X ftime( &tb ); X tw.tw_zone = -tb.timezone; X#else SYS5 X tzset( ); X tw.tw_zone = -(timezone / 60); X#endif SYS5 X tw.tw_flags &= ~TW_SDAY; X tw.tw_flags |= TW_SEXP; X tw.tw_clock = *clock; X X return ( &tw ); X } END_OF_FILE if test 1855 -ne `wc -c <'dtime.c'`; then echo shar: \"'dtime.c'\" unpacked with wrong size! fi # end of 'dtime.c' fi if test -f 'patchlevel.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patchlevel.h'\" else echo shar: Extracting \"'patchlevel.h'\" \(21 characters\) sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE' X#define PATCHLEVEL 0 END_OF_FILE if test 21 -ne `wc -c <'patchlevel.h'`; then echo shar: \"'patchlevel.h'\" unpacked with wrong size! fi # end of 'patchlevel.h' fi if test -f 'xphoon.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xphoon.c'\" else echo shar: Extracting \"'xphoon.c'\" \(6279 characters\) sed "s/^X//" >'xphoon.c' <<'END_OF_FILE' X#ifndef lint Xstatic char rcsid[] = X "@(#) $Header: xphoon.c,v 1.7 88/08/15 21:34:28 jef Exp $ (LBL)"; X#endif X X#include X#include X#include X#include "tws.h" X Xchar *argv0; Xint blackflag = 0; Xint demoflag = 0; X Xchar *malloc(); X Xmain(argc, argv) X int argc; X char **argv; X{ X char *display; X int w, h, cx, cy, r; X int size; X short *bits, *xbits; X int delayminutes = 0; X X argv0 = argv[0]; X getbitmap(&w, &h, &bits, &cx, &cy, &r); X Xagain: X if (argc > 1 && strcmp(argv[1], "-b") == 0) { X argv++; X argc--; X blackflag = 1; X goto again; X } X if (argc > 1 && strcmp(argv[1], "-d") == 0) { X argv++; X argc--; X demoflag = 1; X goto again; X } X if (argc > 2 && strcmp(argv[1], "-t") == 0) { X argv++; X argc--; X if (sscanf(argv[1], "%d", &delayminutes) != 1) X goto usage; X argv++; X argc--; X goto again; X } X if (argc > 2 && strcmp(argv[1], "-x") == 0) { X argv++; X argc--; X if (sscanf(argv[1], "%d", &cx) != 1) X goto usage; X argv++; X argc--; X goto again; X } X if (argc > 2 && strcmp(argv[1], "-y") == 0) { X argv++; X argc--; X if (sscanf(argv[1], "%d", &cy) != 1) X goto usage; X argv++; X argc--; X goto again; X } X X display = 0; X if (argc > 1) { X display = argv[1]; X argv++; X argc--; X } X X if (argc > 1) { Xusage: X fprintf(stderr, "usage: %s [-b] [-t minutes] [display]\n", X argv0, XDisplayName(display)); X exit(1); X X } X X if (XOpenDisplay(display) == 0) { X fprintf(stderr, "%s: Can't open display \"%s\"\n", X argv0, XDisplayName(display)); X exit(1); X } X X if (delayminutes <= 0 && ! demoflag) { X hackbits(dtwstime(), w, h, bits, cx, cy, r); X setroot(w, h, bits); X exit(0); X } X X size = BitmapSize(w, h); X xbits = (short *)malloc(size); X for (;;) { X bcopy((char *)bits, (char *)xbits, size); X hackbits(dtwstime(), w, h, xbits, cx, cy, r); X setroot(w, h, xbits); X if ( demoflag ) X sleep(1); /* continuous mode */ X else X sleep(delayminutes * 60); X } X /* NOTREACHED */ X} X X Xsetroot(w, h, bits) X int w, h; X short *bits; X{ X Bitmap bitmap; X Pixmap pixmap; X X bitmap = XStoreBitmap(w, h, bits); X X if (bitmap == 0) { X fprintf(stderr, "%s: Unable to store Bitmap", argv0); X exit(1); X } X X pixmap = XMakePixmap(bitmap, BlackPixel, WhitePixel); X if (pixmap == 0) { X fprintf(stderr, "%s: Unable to store Pixmap", argv0); X exit(1); X } X X XChangeBackground(RootWindow, pixmap); X XClear(RootWindow); X XFreeBitmap(bitmap); X XFreePixmap(pixmap); X XFlush(); X} X X Xshort leftmask[16] = { X 0xffff, 0xfffe, 0xfffc, 0xfff8, 0xfff0, 0xffe0, 0xffc0, 0xff80, X 0xff00, 0xfe00, 0xfc00, 0xf800, 0xf000, 0xe000, 0xc000, 0x8000, X}; Xshort rightmask[16] = { X 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, X 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, X}; X Xstatic short shade_0_bits[] = { X 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; Xstatic short shade_1_bits[] = { X 0xfefe,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; Xstatic short shade_2_bits[] = { X 0xfefe,0xffff,0xfbfb,0xffff,0xffff,0xffff,0xffff,0xffff}; Xstatic short shade_3_bits[] = { X 0xfefe,0xffff,0xfbfb,0xffff,0x7f7f,0xffff,0xffff,0xffff}; Xstatic short shade_4_bits[] = { X 0xfefe,0xffff,0xfbfb,0xffff,0x7f7f,0xffff,0xffff,0xefef}; Xstatic short shade_5_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xffff,0x7f7f,0xffff,0xffff,0xefef}; Xstatic short shade_6_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7f7f,0xffff,0xffff,0xefef}; Xstatic short shade_7_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7f7f,0xffff,0xfefe,0xefef}; Xstatic short shade_8_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7f7f,0xdfdf,0xfefe,0xefef}; Xstatic short shade_9_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7d7d,0xdfdf,0xfefe,0xefef}; Xstatic short shade_10_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7d7d,0xdfdf,0xfafa,0xefef}; Xstatic short shade_11_bits[] = { X 0xfefe,0xbfbf,0xfbfb,0xdfdf,0x7d7d,0xdfdf,0xfafa,0xafaf}; Xstatic short shade_12_bits[] = { X 0xfefe,0xbfbf,0xfafa,0xdfdf,0x7d7d,0xdfdf,0xfafa,0xafaf}; Xstatic short shade_13_bits[] = { X 0xfefe,0xafaf,0xfafa,0xdfdf,0x7d7d,0xdfdf,0xfafa,0xafaf}; Xstatic short shade_14_bits[] = { X 0xfefe,0xafaf,0xfafa,0xdfdf,0x7575,0xdfdf,0xfafa,0xafaf}; Xstatic short shade_15_bits[] = { X 0xfafa,0xafaf,0xfafa,0xdfdf,0x7575,0xdfdf,0xfafa,0xafaf}; X Xshort *shades[16] = { X shade_0_bits, shade_1_bits, shade_2_bits, shade_3_bits, X shade_4_bits, shade_5_bits, shade_6_bits, shade_7_bits, X shade_8_bits, shade_9_bits, shade_10_bits, shade_11_bits, X shade_12_bits, shade_13_bits, shade_14_bits, shade_15_bits }; X X#define PI 3.14159265358979323846 /* Assume not near black hole nor in X Tennessee */ X Xdouble jtime(), phase(); X Xhackbits(t, w, h, bits, cx, cy, r) X struct tws *t; X int w, h; X short *bits; X int cx, cy, r; X{ X double jd, angphase, cphase, aom, cdist, cangdia, csund, csuang; X int i; X register int x, y; X int xleft, xright; X double fxleft, fxright; X double fy; X int wxright, bxright, wxleft, bxleft; X int off; X double cap, ratio; X int shadeindex; X short shade; X static double demoinc = 0.0; X X jd = jtime( t ); X if ( demoflag ) { X /* Jump ahead a day each time through. */ X jd += demoinc; X demoinc += 1.0; X } X X angphase = phase( jd, &cphase, &aom, &cdist, &cangdia, &csund, &csuang); X cap = cos( angphase ); X X /* Hack to figure approximate earthlighting. */ X if ( cphase < 0.1 ) cphase = 0.1; X if ( cphase > 0.9 ) cphase = 0.9; X ratio = (1.0 - cphase) / cphase; /* ratio varies from 9.0 to 0.111 */ X shadeindex = (int) ( ratio / 9.0 * 15.9999 ); X X#ifdef DEBUG Xprintf("angphase %f, cap %f\n", angphase, cap); X#endif X X for (i = 0; i < 2 * r; i++) { X y = cy - r + i; X fy = i - r; X fxright = r * sqrt(1.0 - (fy * fy) / (r * r)); X fxleft = - fxright; X if (angphase >= 0.0 && angphase < PI) X fxright *= cap; X else X fxleft *= cap; X X xright = fxright + cx; X xleft = fxleft + cx; X X wxright = xright / 16; X bxright = xright % 16; X X wxleft = xleft / 16; X bxleft = xleft % 16; X X off = y * ((w + 15) / 16); X X if ( blackflag ) X shade = 0xffff; X else X shade = shades[shadeindex][y % 8]; X if (wxleft == wxright) X bits[wxleft + off] |= X leftmask[bxleft] & shade & rightmask[bxright]; X else { X bits[wxleft + off] |= leftmask[bxleft] & shade; X for (x = wxleft + 1; x < wxright; x++) X bits[x + off] |= shade; X bits[wxright + off] |= rightmask[bxright] & shade; X } X } X X} END_OF_FILE if test 6279 -ne `wc -c <'xphoon.c'`; then echo shar: \"'xphoon.c'\" unpacked with wrong size! fi # end of 'xphoon.c' fi if test -f 'xphoon.man' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xphoon.man'\" else echo shar: Extracting \"'xphoon.man'\" \(1180 characters\) sed "s/^X//" >'xphoon.man' <<'END_OF_FILE' X.TH xphoon 1 "08 August 1988" X.SH NAME Xxphoon \- set the X root window to display the PHase of the mOON X.SH SYNOPSIS X.in +.5i X.ti -.5i Xxphoon \%[ -b ] \%[ -t ] \%[ ] X.in -.5i X.SH DESCRIPTION X.I Xphoon Xsets the X root window to display a picture of the moon in its current phase, Xincluding the partial lighting of the dark side by reflected earthlight. X.LP XThe X.I -b Xflag defeats the earthlight feature, forcing the dark side to be black. XThe X.I -t Xflag can be used to have X.I xphoon Xkeep running and update the picture every X.I Xminutes. X(Normally, X.I xphoon Xjust sets the root picture and exits.) X.SH NOTES XThe original motivation for this program was that xsetroot was X.B too slow. XLoading a full-screen bitmap took about 15 seconds. XWe made a trivial program that had fullmoon.bitmap compiled in, and Xit ran in less than a second. X(And incidentally, the executable was smaller than fullmoon.bitmap.) XThen later we came up with the cheapmoons, the phase hacking, and Xfinally the earthlight. X.SH "SEE\ ALSO" X.IR phoon(1), X.IR xsetroot(1) X.SH AUTHORS XJef Poskanzer and Craig Leres. XThe moon-phase computation is from "moontool.c" by John Walker. END_OF_FILE if test 1180 -ne `wc -c <'xphoon.man'`; then echo shar: \"'xphoon.man'\" unpacked with wrong size! fi # end of 'xphoon.man' fi echo shar: End of archive 2 \(of 3\). cp /dev/null ark2isdone MISSING="" for I in 1 2 3 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 3 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330