%A7Kw=pbmieL=d|M;AO$3Ti`!i4 zDZVK-%nuqkij67qlIq$`c?B%7Zk%G%ysMMJCQ@$L;I_QCs?E8(7@K(V`%9#RA5wD9T&6lLxL>gQ#ZS(iM$8gg82t1$9``&y1 z&+ne^|M!3X&-30jz89v$8dskWT*jxncwNkE3NEzb4`u>8FG^nwS|j7U47l%k3ZZp% zur1Wk*^@xVc_XknE{Ct!hnO*djIj(9HOJs855YCpg{0As?3p(Bo4XKd?L;CThqkT- zZf_CnSGnP=YC!Vn5L&jhAR3Rsy&($!EtRO;`W$TJIhR%=d-fdI9S)SW?n7vM42huu zXwAD&P}PKy
?=mu{!s+!vEBC{d@5abb684$dNFJnieFtnFA6$2|qk3x$zPp>? z3Xn^Ud#N8q8@k|}I~UrP7($Iri1tJ=KrhvsJJHnIg2cgt7(Q_n)m7CfYK+2Hs=-E2 z?yCFH67E9RfdSYur@^_R8V%dKP_{V==i=4yZ)iusEg@vjb0c~9F#KEgAhfj$?&9UJ z<@+#vbQu1vaoA_uk)4@|0#5;o)_1}_w*U>yBb)vc%)`Yx4IJ1HZEZaUq<79AV@}%r z&%jAvb=#TKhE7EH?S@v$xo6qXv4h_a_QRf;0oUp})^k5Sy5U~m1$%KNy7ndDYuTPk1jEum|wRO$A61J(+kj+bL?1GQ$SGg^L W{%yS~jwX`vA&o9CNdrMp4 zht2NfUg4fOm}C!+un&h>ml*d9xr`-ctyq8COgsCQIzDUsw6VSk+1Jx;^q-)A8+3hC zF;!Cxnx=rN3N>g7krIIk@kiHA9v8;s@kie#{uX@+PoD{l$=EkMvSELdvG{X;Z#ylg z^S+p@sr}Qut4_<+($}7W-eN1-sHu#m X`AwkMCY_cgxM~PYwQ`K7Iyz$<~A>RH5mE%3lRcQU_BqgMf@Le_%J_z)Az?i(m3# zW|xkuH5GT=a?_!sGpc8Fg}!y?XU5~>dQSU}dds(}D5k0CDb5Uss;Yyg;G?dq;t%gz z$ysP39?$DriLpl {kDZHNvW2N?!qha2&B9AIjR%DJ z{^peuTq;L+VP77`eqzPdWbeS5>gv{3kH @^#~%CLvFv}C6ZIJx8I$T6e^Z}c zZ(3Cp`c6qU51BSKWwM6Phb^{5*VHUqwv6;JHU&iU%~j>C*>r88dCNIce3N6Mo{Vw* z)`@zHJ+7B*g{?)SrlXDLnq&vt%#_2_#p2!ZywWhq%WC@5qrw~Cv_yH}T^FzM6zAlO zqiJP+`D|VJ#wk4+)(@y(s!!0LWT*9#{q|!wPO|%RYYmRt{))U@!?^92hsuwgWJjz~ zl2i8Q>$0-adI`?0<=xV6GO`{>>n(7E_eg~LPxV?gx7u9O&DTezZ>!g2&2M<9Pj;HO zVp%_d`B_<6`L)Z!uT0lnUqa?-l#_K{X85A69Ok7*qx3EK&T%vnd?O4^D-`}x5CT{%1tqVN!WzEy< zNMR&WeD9JQK7LA1z_|XEXLcPprBCBe>Miz*8kbz>dra={(IrcQTx&(q#7h^@_ZWTW zO7yCpo{d)+3m?|Rl+LGzeqq&|?C$RF*SejB3$C1~Cu3ai)5P9WddA<>OSVqmf+*8u zpVM #-2N-PJKDI?_pg}eD%RwJx6jP(l@7)qwf5-=*gH= zpJt!bTWq1EtmB+5o?dUhz2&(rrX1(?CY!c5zI@N+-?{(GJ1=qQdhpJo3q8l!jLz2Sd3toYUM z;n`vtmj&;x8~W{Odgl6$dW+2?jYUrls!IA@!ZU`+1msb-_aO4T-p#efs-7ojW|dyB zCmj!7{rT1G^cNz9uXT49Mm%#)*Jqu9Ub6WbGfkC!P9n^ds>nU2D*-Fswl-est=MVQ z8o4_w{d>magXYgJE&otX&I?Xw 8DBGLbG0DEH!=8GylXWLgRZn9Z%f%`&W(2 z-0xj (FyTI*G(Q5#^muc(*KC;Hvq{9 BoGAbR diff --git a/skins/HGarden2.bmp b/skins/HGarden2.bmp index 9a5488bf7f6ee472c85cb52596b358f0b74772b4..6c5ed85c249a1639622f700bb2c648cc0609affb 100644 GIT binary patch literal 3078 zcmZ{mv2G(b5QfJ=5b1o$orR>(c2sx!0;!2qCj&v?b#aIV9H_fAyYB7@_#Re4z_L@E z%3NyJsqz3R_yo=su>~Q8^O4+L$&N+o)2!&9`_GUg$v^z~)z^~7_g{*<;_4Up4i03P z=KmaseEU3;Ci)jE!c(lxfmbfYdoTVkFQ5Oo7Eu}u@CW6 `Req99goAU+&;2x66h0u2T%IPehi zv1vurV8DU{4 =-4F)VY z@DOslT1C`gz=8u0A-A$qL=6TkIPeg1n|npnV8DWt&;Q=b5}oCKBKPSj_xJG%c*H4Q z>VAy+tL|b_92Ja7_ddqSD9_DzCMRj?k?v^Rt}TaK>Hj>ikR!&9%cLkqqc}I--f>=x zl59s;PKuwU)y*gSJqij=Bf8|Q%lYhrF{|S8&g3cG*;Yp~dp$;-1+g=Ex6I?>qKcKI zEjZfhdf)e*ZgzrhyvL*Ivx~QA7r(n&udmYbWReQmvFLIsFL!j&WRJ&un_V&)bMDPL zkL*Gv%sog26E?NH+|gakrh7deq!%lh)a9yOyN)Iovr+VTm`d`fJ6YCM`#c_%kvy99 zV11L jApAZ{B8;(SyDE(DiXMd6b_V&Fk|)9NT@Uius4O zF m1MV@%}?uSvZ%(x*z9@aCQsKQhlh`C&XPxK!r~d#iA %p64(mliD zpJY =qiCoD*=B>!X2bsvB9o^6gznePX7KEK zv$>*@>WioQs*vh hFUX{*Wfw5q1B`@K4<>+(G5hV0cX6-V9Eb=0G3F{_UIO5#^p zdCOO5Z?am>OD5%XK{C{lHx=8u#seL7B#*^ppT}Gl%Ndol=aJSntj#9mcXb&p>SB7e z#N>6Wi&N!qQI`%c*72^~`@LHnE*7U$uyj{N+c6tM*8+$hV6ohgIh>? WlBxY3tj@{p{H&CG*5iq+KbB>8 zKYp~buFE9e_55~-?q<~_+3&r!-nm&j$&XZ@Tb?TG=IpGg)6#zBd@^c(VEU=DIX`JS b-K&2336FZdlUye(o|=1L!GS*$gy0kcX%2__U#aZ8jCEVz z(-E74`^ CXG&mF|4aVO(7dXz!*c}kujuUMQKSBt)-aQ7>W^lEooz+cqj?u z@rk5OVCg9_DUlLa>q(yk>7X@w(q?K&pUts!j6rMCDV? SaPqR0t`)R!~d{)>;V}V<@pGk@QBa!=$A|QzE68r&E3rcuF8c zKIQDs0cSDx>>VmDC?=(qsJN(@ic6rPQYtNhwnOERp_D3iRZxWis;r 5Aoo=PJ({0pt4r*_suJ$hK>V$f_sIRk+`g)+=J{tUdkOsdTq}$hS z)9tTr)19yG(4GH4U*91-(PNhNt|r`d?smH8g$yB8r%Tc4QZuvMBGQRLit`m2S=FO2 z7>EBB7IpWHMh!SGFquvJs 2v z%`HA&|5zB!Cexm@r0+i}1O^1o4GId J_^pAnj@|>^4C;gq^6Q~Z-resvtI3f1_sc75pcc7J(ZQHteBPbD1PBXaT I4-E(mO3-CUaS#0R8CMH} z!quFlUIBCClJwHkZ9cU7!$wDAV`D=@eMJQ*w-vq;8la9#aK>%p_seCpCl3=csYE$3 zFi5Kt8O?9kH#IdkH#IeZv!T9j_s+7?!i|7jp-bmHd*YYLXshy4c)OaIO$pLx?uwL5 zAejIBmycSwF(y;iA(h(-mp>L5_e>h%9{J@m&KF#S+z)5+q4;EGFdzNL8MITUT$CvI z&a!QrmjpN&J@Lz9w6B|>@Sf_2Hc3Jqf}9+e{5+@e?`O}QJA3x5M9HZXA-BF78pL_@ z%rBF1mBQQ4?>>g~bBFYbdxja0{PSOEjLDQ@y&LLx? 31^np8iHZ$E8KO{IVGBIo^J% zS+i6RG9{ QFmevXTa9P-P| z
2xmwxx0FaQK8(){82bkXKJV+j*v<9EB>dc< z+I2g(WaBeq&vE*BZuWEUWOVcMIQzLD_RC_lRnJ(k?CGbLMlNzfN{JMU6}JbB`#UcW zUcEBV-+PH6c~6SfYOLS2B^z-!KhJ+JKgZquvKXz_kRQbUa((Qw$i)&Qs?9HRE_Nz@ zADYc=m#^Ktes!S#GeBNIA}|RO>8RiJTj^)d2tPC2%P%sz`Qp_1dGosW!e=v*xub5f~nNfu7>B5%eVl_MJe`gfe;F(`0 zqs{o;s5kz0{Pn!prHdo*o|G5`VU5LPMxOB0e0qZ!Z(befb8g8qr lBp*KXXr0mj}QFrGc_IE2tp*aN?OMyq|_su}(Z7UF~G?}yj- zoaZb67-qztZ0-H>%D@-ckR9#k&V2ATVk5%i_m6?mYO}BV@yw|Y+%G7+zcW9>d_V*k zP84_#x3=|Myx86G$;ThO%lKmBoglXH`cLAM>$-=lA2r|#Snc+jbw7VrSd+QW@($*g zFovS|t-IHH_{b6A{df2CP84^+h&A9{J}&>kF)`w8Y`5EmcWmNDly;(PKT4>KCh!Z# ciHIFJVh!W-194Q^Mh&>lVzvIi A;g7>8+~=qW&AFZ}~J_AlsaqO cO^xS)QBKhO{LF)VR>*p%9@4iy%TkcNa8`x8w z^!~3xsXzBK>BYmvDaBVgmkn2LRR}?azk~Yt{z@rrzyd#L4*{Z5Mu7%yj0FcC0z{>( z0u2Uuuns%~h+AEaHDJMkhX7G2Zk5+yz=8u00V0c3puvCz2Oa`MrTD6-!GHw^9s)#V z6w6c^ ix$KO_8nEENLx7k|(rT;$ z3l2O4h`C&y#u~8Tz(atTOWA9z0SgX11c y4`E=a^5aP5P?MM(%)* zyy7yi|7V-m^ZMe^9P<3Q&F7m<@kOgQ^lI*3*Zm0(%}Smxj|MOH_PYIvbZ9zFUC-Cs zHk -tHJ)ui8_Y(?suww*AeXk3>2J!w^$R65NB%Ph3n zZQI_UypqS?_qYAJ{j*oQG=62kR-|r|h-gf!-gw(a16=7ei?;nOi@c&&dp1uR-G_do zvVS&v+K*@S--;k{(=LeCs<>q6D7W#r8cZ%atX(E%=}6G;>_jw%2jgu&Y)J&4jui?F z!jqc2wp~g-nh_G!aQbFCsz&26gFDOgD (kXtmQud_gA~0TAy@S;p7di=d`Kc^DFQdl zOA#H**jlQqxEqQiN5w2<8WH-nEfQ$l$x;TX4%R=imR|R1Kd9#qcpyn(^gCv4ngYMe zLDrza#F64Umy`5s+m!p$6`>lHM_FTbT#b9rcWNY&8<9vgj7D1DR^u%i`=XIWq@Q>p ze!O|4v3`lh-s>H)V(H=uV^99Ak)DcA8X_Xy7N?IjCO>CK{!63CgWsopav!UC-v1A= zVybsZgSr)wZLIor(wI&0 uWKlX`;NL`VS z?&K6tW>SB>!ETKt@gPF&rev}!=JnA~Qa-FjgYuQykc)`0KT_>>`xmD_OiOBa|MgA{ zB*^y?@PwSO2c>wcvO5@*?7`l!7L6=%yWNZ@awaxu50-;&w`31igB@qdrdTc{0?VS2 zq#z<^$(5{ddzSR7^P)-nLzdFaWHI82oF(V`pU#qla_5=2l$nuWV`PzuoQYSmZ&T}4 zm;6+8lAG-ZLcbN6%ei}ge -;VaJe>!YnP)((T(MTKh znbgp1$r;? 7{{qr#77=Hl3t@Bq&1aR3{-1#wLY-XipJJxn@E}{#OoDOAJC*l0!v0l z#*B=NjCW*k$e5AMjvX`J?eqVg2QP_>jy=i8dE9@#-}#@%B{yyb#yp~2JL~a8(YlYA zLY(pV#5jNaIW7Z({D2E35=BIrk|rXVr&KCW>2#J>SM%r>DTPQT%NQ?Xyhzz>mh$;L z>LL}3MJkueA+77J`PbIV*WMEy9N(+c&MXY$FnA$HBq Knmy8pa?*2t| zaBzUAQLR>^dcBUegSLZq3*pe=p+k*EgPP4IIjCEx8x042hgz)`!Xd|T=oo+BM(sFl zYPZ|ug2DU!G@h=3J_CNc_tV$>{|BocPqkF4@Gm}4xUQ7!svo7IOU~={=PP!V`-Pvc zUw-rA#Y;Z#_@qDoP%155gwnFBqTi=P- P%R3dA)397{b{a5d?R~JC-pp{>y!XBdm|c}h3F|7+9a8>_ zuTa1+UXd^)n4b*^R_W7kwldr6T(&dczh`FoTVp9D%=VPbl6y6H4l9MAgk3PgVdET7VC~-B++K>^ z5JzV3>eBY+ooA7DNQv}X$?J-umCBbs>=FoHINTwIy*eG9p9wMwteuU_di=$_U{!8i zS |@$nu|a&oQYHi}lN{Zb5l!^H6xDQ3DTuvXHU^|xMDti5-@iZV;Wq*5f;O3}fG zQpz>#USf6h1&f`9=jUgoEB3VvR&2tSzV?^FdPA@nCY3U~R%(_~sx|EM#mgyKfFZ+7 zP~9^%+vo5K;nL@eohhYA-&HDDpD%uGup#}!=TM|8; 1)6in3DB?FBTsVTx76uy4G+G7tfCQ?R@@|MV!Oi*Cnf8DOi?PqSsaG z{nDPeR=yt0gu~N;a|{#9Xjk`Be7_dYcqb-ais62x;~xvwpi -cR%`_S;I=Kq4f_X1_i6%lrV<01p}u&aK2C}Tu?Ax*ss3r zy$`p({_r6tU}>e*r?jjgC7YGL_+IrFym`bOo-1IV3a>M4%FC?%ogegjKE3qCBi=-< z#Lo1T=nN=%6MvHXHEfJC%+3bq%HlZke2tL!PQg)6t!?1zYh&&6J$~3#A{$^@DSBO{ z=-EG>>g$it^a8u$QaB$}-(TqL@7`ZoUfJ2*7mvUaN|6pQrBq#^RBapobW}$a|A?{b Ke;l+c9?#zolYZ9# diff --git a/skins/fontanGomo.bmp b/skins/fontanGomo.bmp index 75fc17c6f0b4e8b696ea75781c863a4178d2f8bd..48c1f3745f71e9586b75a652cce1b28748c59742 100644 GIT binary patch literal 3078 zcmZvduafIF6o=KBPIJdCN(wI!>=P7g%AA>!7}`J}4yyx~>OFR6Dv&M9!le~1DsO>a zpgWh`4Jb&zqhmYHohtbv$2rHp^UuytKY#O`DeK3tjroD2J$w&enGfaspDSZF-zw$A z{1J@dZ9>qEPYz8=$)vxN`Sizc##jd)_`ya RNUO9s)#2kd5KcL< ikRThw+hhw4JOqf4ARA{0(^!y~hX4^0 zWKGRlb_X5;L`aY|ZD-jXcnA<7LDrIZ%kIEKfCve)mMd6x2Oa`MNRYLZ(Xu=65FkQ= ztYuD?-GPSy5fbFm0+%hj0}lZrB*-R^e=rs#a}V;0kRY324OnpCAwYx#S=;6;y8{ma zA|%M#Qg7KEcnA<7LDqI75`qH{0U{*GIttOUJMa)7LV~Pgk}SIe4*?=1$Yq2=w(Jf( z1c;Czn?(M}Sa9GWKm>VZ9W86w9e4;3Awkx$bC%tKhX4^0WF1Lw*&TQY5FtU zRv z$6*+b$G-2XP0yixIm)?V=({!N`kP^YzN} >2&Jawv%t7bLiG}S=Cx>2QJv3Mc@sEQAES2cC4+)5ai)HU$|(fB3InEr!m0i zB7#}pRN_0TNG`+StXCgD$z&jqs@`r9U{!V1>?aMbeW%fPCBW4`5?&`6i$w8L=c xgGL@4`RfTgNap;V} o)HN=dimSQ$)%!b$Mf7VXgF}fDtODi{3Su*+MpsHGJ zhf0hZ@|$XGCqr}Xr?qaTBb_SIcz@RbFV8advP6Q#5w} kAQG8KB?L3VAP*)MDx?h$W5)GD9NpE(Gek^9U^rMuD_$0#Bin-DX;oG(ipY^UE zw4@r!m`OLAO?Hd9T4*p>+KwWD^Xf(J4=q*G%0i pwPI%F z{?I4vai9vN8}B@s#g+4VgW&r3bUHmEvgcHJ=uUZ*V3=`fx!65EJz+<__Zo74$a{EE z4I~heG&m_8!54|s)2{C1v8x*I5=sf?m1kJ1`L>vyPVH{nP0vK`i^Y8|A{0S=-#_5V z@BA-FfUP*UJ0wahQma{`1apw0mRQcjvTKLoSG~1GW4;IZauktqu1Xf=iu9eSmu~Du z0xNks&l;=Oa#mU*W+j%EQ-94Go7;a>aW5(>{Kh7glU=jh?wXPWiD@VzLbXc1MPy*O v#@Q{g)Z!}Z;R_9^#L&`M{keR~MZ3*mafW TD28f}0&Gg(RDb)?%b9 z&Dcs)+Oj03uj!+uDRmMuYa=ZzvqVBE8icj#Iw!Pb6jsoJ$UHswC2rq#lmFfO?)%^Q z&pG$p_ul4$3yWAx%e;fdx(`Qt5hBC_7MGbP2SIcgI7u$BgnS_gMM4lS7lSx40VIiH zSePgQ@d^nDQ=}kHNd<9gItWu`AWoBkFinoV9E5AIM@Wz-NkODaK}wLe3M9yru91Oc z%{q`|%0Wu7J{x2>C(A^vmxG*OLpF#r6(G)1fn>b`BpXy9+koer)gV@CK%B1u$>zsE zx>*JC%?gkyuva2isRpTX3rO>eaf}?~NefFsmXG%p>OfMc1<4j2ND-3a3Xm4>0vY!5 z?Ks}12kCY_$hJQN(y{{}-T5rY%Jd*d$adC%0(BJ1Tu|f}fTHkmP!ViVgSuD)>TQVa zI?z0Y*trW7c#mpN4XCSXK!ecjssP;{JyZ}>A&fPk-&X@y>oG4+n?Sn93^MFxdtL-- z6^;?oeOBx(ATuKNTS0#47|0GeKxH(8+GqmJeiNwon?ZHR0y-S)4w*rJ=sDQE5I|Pz z1UW)h=K^_ME6D5L2YG`V RyG4Itx@ZSV3QJftm&j=y6=rXa&WQH$YYA1Vz0I)b&nKH@HC4=mG_5s2Yxgq7nNh zHz-g`-RuQjy#p#5ouF%c8}v;rptrk0 `A zCa^SH!AfAaf)inCc7nOt0cLv(nCx$Z#g6B1y1+`cfQ5PoEHsYkcfs1)1}5~;)anIG zs~gP6y !H07`ob#OxfbY`)1h5Z$ z+6TUKK?o3BxClY)gBJ$jA{l>v5iSy3z64h !h56GNDJ?jnnFCEzl!K=CmOpv-;wSgg1|vn`C7g9Q40`Rxj2|Tb zxO^`&L++-nFEo98VR(3GFxc1IdGdfBt=OzaLs@3>A|8*==kXRLXO!yE2(XS3KGQN% zn0v$OXqcwuYajdhmMuSdC^M^!HaaNUj=bt^tD++|R%PKi`a#)VXzCvv91I5g0s+6@ z|IvOFv>B^PS1;zpik2-C#iC?%a#pp&2CT3aIieo6W8^^07)sav;`C?d&kyu>pL{&C z1O>^wE`zZl67u {E<#iM9m)veu|NHA9$%O`yOr#Cu+fhs3; xHEKpDzb@`z9j)6fQ&o2<1}KkfB+ z+S}Sae&hzpG6s52He_e;IP3*1)LXztIwQDv8_6e{XM)1|B*`WDr5&ZuqLCi7z!*T6 zKi*a4ptGVmY$7MX#@OKUvZ|i1@N{&vo#^T98yp-OB30TK=zV4FeT-aGR1}*X6Cram zfyHPrBH?<$Au3is{DGS+MiB33>OA28u*6uN!DX` eb9mV2@atFG%<`D zt9z$ji#`)MA=8Kr4tGV_VN*x@d+q+d!Qs)dP$)D;=!2(!6peZq97#XYN#P(FST?J} zYPC@|o9*5dJlGsI2W2&s9sXlSk00g6LK72cVt6Rn|LgLNOK #1_XE7!dNBe*M(5bv#lX7zf7?Rlbm3h!?HxUV!I80v$*HNy&=|V> z*)Q+9lSA|b0%5#ZEG9P4W$vAa-uHC0_4Eymh9;+`r>DY#y&~i?@u6IV%;s`{r46?o zJG4Jc#^DYIPsxv9xiKcDXQokbbYy7YXm$oE7fffoI58 I45Tqn&T)+Qp_o`ZVParrvHZe6bJ3BLtg2U&V zjM|kEy~HF%jv^@`Ua*9_;+fjxo ry_DO^Sf4Mud-?`P(B;{=x!GA1{PO%Oj;gg`J#kV_Zf>qJCsD-buQ9w_*NK(I zgm(kUGuJR5U!6-|O7sLMhhIO)O+vw#bgWOT|44i(*hj{O-*_>dBcZ98InrilCjWk} z!LBbM`#~T|%*lIHrFt|kCqc+Bb-Z|_^DI_Y=wHM)hCDSfb|(8i%w>!~l#r^-%YQUK zPni_Y=VX)p5J_j`d5xjs6jl9U*TB%|1e&-xKYw#>_S-N2Y@}^ft1v)8d{S;fQIWc+ zATLRDzk&YU;Vujh(}}*_#5OlO9lG?Ib{&WK7N3-pUr< rdfjBj o`aXN~&{pu8>H$8h3 zeIwpYf8}%NwJR||ff#-JY4H e&si_Fo`+^S1zCe)`Jm zHsXds!{x+?Qu7L*c(?6fp;V;7XSn?(OFx#@ tpL(_9NQE&eGKmNeH{b ;AtsCQCIEfpyVPhPhPXvpKi}D^= zQ;os=jL~C6Xjuw!7$v61qIskBlS@~wT=}Ave7!^>N6E^pwAkfqHdPWevf?=P`X|FA z`8WT4Yku~hpT9*WN!3-R$Hgtf3ROze9(LdaEsX3xVvNZrF+nb%5rmz3bHfJmi9*zv zDW;kz!@}(psVw|6Jeqpv%(*W^-(LUj`Zs_3tMm4S7TQs{DLrm!+WJyM*ydH%_Yo;m AfB*mh diff --git a/skins/gems.bmp b/skins/gems.bmp index 1f89a870b7237acd72cc7589279c2be160a506d1..6185b7a7ea6fca211d164df6cd2c9da874653b8f 100644 GIT binary patch literal 3078 zcmcJPy>1&v5P&y8kc2>xDi5$_o*?zYC68)C8ZIORTjU+mZZEQt<%U1WLcCL95!5Se zkt%@YG`3+okrts~0-^*OlHe->hxzvQ?x-M^;3jkYIH%>2-_7jk?rnVbr6}UtPlfn~ zvmfAV_(XhBtpE185WjpCDHiHCBLpvDOia9UDx7n|{qDruU-yNO3N-M6wBW!Cp#(_a zL}@T!!GRY-3y`3IKePc04t(jAWCa=wSa9Hl;8a)%3N#q7;J|Z}0wgHVV8DU{F9a{) zB`DBfz=8uWl;Adngm7puV8MZprAbLvpuvCz2R@dqBw2w50~Q?k*b*(t3N#q7;K0Xr z8A(>4!GHw^KDN?IvH}eTEI9D7%}$aPXfR;GfiJc|c}Z5F!GHw^UKr{(LPDrqLpUrr z@WMy|5)^1KV8MZp+omL0fd&H>9Qe4UT9OrLFkr!fkK2vJ7zG*(Sa9IuC|F5WpuvCz z2R@F8lVk-N3|MgBixDzjk`-t$V8MYGj{2RDpg@BG3*qo_w4@{}&|tuV10TmuNwNYB z1}r%6aU``QE6`xTf&(AN)kv}e4F)VY@Ntx_BrDKhz=8uG$J|M>0u2VNc>C8%q+DnC zJt0=bORQGm3^>9PZ-e|lk=AQjT78%ftFv_;u0PGH)j_>ht&r>AyQmjy$8e*yS$+pc zI&8<-jFDE3?DOkZ{liLI 6&Li}09;0{N&)e4b(Hw=xyad1XdmaD7Mk&PbpLX u`oc9Im1W^ sZZ?V1(WGBE#*afGQF3)zII^^zG?U=y zB}uc1fY;8)IVPJ)l8nk|w_5GOu~#`TL`SHicN}BX?XmO!a?HZE+*-%5(`t>Dhs1Kf zv$4^Mj>m }`7T|WFXzPakKWUx(s83(uWonbTS?N1j!~<1KlW-b7IM>(?{>Q< z(a}9RdRF$Te?xMIgGO(JG7b-^DDL? yL7z?faeObh;eH!4Gpa zKEJ+RTS`az=;<-dTJCmtDI+)rc+L7jkw`JxiXyKb|j-qoSx| z)>t)8XKZ|-x!dvmgX!UD{k$5F8>@HMi-X6pl0_DuSCj0;$$Z&;Slmjn=i|n^k9APU ze7aRWm&1Mx*pKrA#;X|O%8^fwY1YG{Q*o{a=jW%hL8v1X!sD)fw#WM@`ckcpe%{|I zzZ)F=F%b*|Q(V@O=h^d<(T!*O&dz}7_jic?tCwl^WA%G$Mg45g)1UTBMc9wDj!6-D u>{XsmvXfDD9eZA17EiLtiw`(HSX*_YH}0i!+*tb1SMz(JuKzb4Ui<@BT6baq literal 3542 zcmchY2~?EV6~_tMYL!G9tlf;bYg}SA1{YRgbYR#KK?G!!O=OeRunP=3s0^|O8AXuM zFm4dEqH&E2Vm{-RYBXAv8UzJ7ZQAsh^Y4A%_swEYTTf5V>78@uy}92#?>G1V-hH3F z>+QFVc(WL8WHggzvE<{(-!dA>$Jy8UcLb*(dtfxy$QqL;+hEo#Tk;j;u2?YJ4NDeC zF?)6Z%~z2J&^#C)&Iuupgyq60SXxG5;oJoBR7lO8;r@XXlIf0cpW%(bX+H3q5d?cn zUj$qD!@(*Vfwt>tOvHw%!AO`Ii^ypSNSvIG^vS76vC4wIy)VMuU6AbIj;K{$*tFIg z5pp-ggn8rR2v5Yv`9LCxftQyY{{HJ}o&;xEJe(!z@b=yeAD=WDGZE?;j*vB>$XFGD z$jEpkZcIdCVj40MGLe>+h5~O}Z1=W8wVy3iYiw{b#1^>=vykJp47vU;C=7H)rQ8`6 z>s-+g?1KD^<;cr)Lyp`Jr5gfJv(Xn7k!vX)h=X!FXu@SUx^5ZTLzh7v<$+x>YoLx@ zjqNd^s7;E%!PNCQkRFAL8y)avq&;rOIN;tU32r0@q9=I;o~Nw9K!!7hGG+MDF&-s3 z4k*oYM^&*s>dPgl-R_R9d23O<)f06}KQvW4pt0HmjWq#iYnI^n0Vz(lN^xk9EB5d9 zLTh6HDof;07KNi$8G(-M4LFe(hr|0qaHu&3#}7y0RkkC3P`Kh;+j3kz;e@AcUie~L zI!<>a;pSOK-0za%$#oa>-*v^MJ|Fz$ksJQ{cqRV+)C>4C`H(N}oDIg@x!L4}bOy4? z3t=&@hFk?}3l(f^YLWg?E?kx?Xuq-%9$rZMkVAWrLt_z*MF P0jEpYGWRFoWB_DZna#6aV7z&$GD5oe n;wtSX?gY(U+_7Bo+4!JbJ+aA4vQ z 8=vA<>O(w?>qlRDAHI+O8^#|6Dk>__P+pFjiYhc$ z)nfn7ohT`3!jZ;C99OGxsWu;XKFPx!RUs~az6B2s*5hGIIlgY&i{8$C=ss7BZ*P#_ zEJM%TD%`!X4^O_?jTh(I@w`Wam%T@!P@F?qemBa>x=~+w6+5eLk>A4uMK5|v9^+-{ zAYPTe0yFC9|Jp6Me`N;I2K{q`s6NOUM33pi22p*G Dc0<+n*_Pr1 z7OktD_qx^UbB~=mGU*MujCW1DoWZE&?W|OqnhswiKA~uAY*tp5LXnrBUr Ysn4%e8f9#5Ml@fq{W?`MUqWyT nK1S@9b&Gn02C?=TDLw^tnY^Kk2nKm8E?_s#=`~P zsNu#xWtvhnOa~-Q3kwR01m5C(X5$2&`8cz8nWmI$tpk##*+D^ay`EpOLn0VYx8UmM z3^O(!F`Vf+X4nX0<6(0IUbr4ednoWa7LGMDn=p>)**bQDnc3Kd0?$Sdq&+m`X<^#Y zf?G1$#H4)hvtIf qs}Em!(M_KhFFseFK5Z`W zs6dj`&eP6+Eq`kC^=UcUk<^$!W{j!odH-{=ewFEt9Ut;*goN=0Zi*8RO#!cGduywv z^X1@6vcXQxnKPg9xmMPEfnJ{Cp$U4OCvGFP$91MY_koE?6{C^;TB)p}6GKtQkPXq% z(flD5+CtdBPu1#Ej7GMst?g6?pKEWmTq>3Fhg4{b*Lm97*vNQGOiU_!dE9rSmC8?q zsADMc5)$I$Sszkc -J=9`qO z`kC!AEhjbkf8i7w855Jpc(Ej@j>omD4|fhSJE=KLYVx@b5*KgpRgC9OlInS)kSyyu z`y%6c_3u>H^f8-l@>^~Hxh19L-c3(UNFYgxxJ4n<$8}VnJvhK@l6pU>$*&-D^-Ib5 zc=gJaBq zcj>)fEY;>Z`+j}zUdn2zlnP`wjUi847|W%41s _VTiS=<@=lNjbb&jXr6LV$0-wqA^A;nuN<@?an?oIV^4K2-mef_`trLY9gOL{sq z^hbfmUu` 65!@ksDbb5-_e#s|9!b{MEs(@q(Is?o`?Ro^NveTvo6?B%o*Ao8Au`*L=B8CB7Z_ zHD=CAPTssZDKs=BER4TP8+APHLhwMR_;%oPr%m_q@%43;NUW@_`Mb1H%hMMo9#L(5 zTtjo;eEw{Td-DE_S#E9-PEJmaBJif3ckIGIdxt0|i%y*~T_$sOaB#2}fj7A?h4;HQ yN!Nxt9=B_+R!#mtYcmZ-eeTICS~dS&?zz`_x>fXR=t4C4-=juG7XMefZS)Uw&msH( diff --git a/skins/gomoku.bmp b/skins/gomoku.bmp index 0784adb2d9a914e25de2e8317b0d8aa896df65ec..1453e3c17b5c0f0d53f3399fa60ec39f5e7c8a0e 100644 GIT binary patch literal 1158 zcmbtTJ&PML5LJjdxd?HJ{D_nR2kuG}7S4t9AFc>oyWr(Ug<%E0oTf17FKuDCE%aj+ zQmi`VjbwA@g$sm?SK7BDJ-zvmzyElesca9JzhL~t_>A#Rm4#1u9Y2-<_banX;ZfF> z7iK^VtGcekLduUyNe~8p;=;sY^E_j6FUXvI_63Q{tN-S>S}C1ReG4Isi4HB8M=b%= zny4 ~p9o0k!ru~}!z zVM0DA!Vvux@^MUe(dW}pa`vb}IB?Jxbpr$rG*tNo-E~Q-tuEJ%?}zyUYF{2NW&I z1#+68q)>*ZOj-gxqNRPPCij3z?m^x}3N0<@I{IZs%_cloX3AmGbzVkHN}bXBuP4;Z oDj<|S$9u{YTT9>JEPAqfK8D!}`PY>5_y1|`mi;$Q>6TJ|0Fg2f@Bjb+ literal 1350 zcma)6v8vlZ5L}5fNKLSs)Z)~n3_csI?h-BO0tRu#>(Yi4NtIeg&6NtO?sE)j+~rqN zx=LnG7J2dm$Aj-QoIRS|S;_A|eppe&ckFMlzGA(`N=RWR`i0BSSJPU@6MUB>bUYsE zg6rvYqVxGo$InmnCHaH1cl6`;g)W!N_17;iEU>aQ5tg?NK7xC65XGd6>`^*QcaD40 zFry&FTloEl-uO`nVNlVTilSIwsrSCSQmu6fy42Y)5QPC|Yzrh kf(HjG*d$mnlvOs!ErsTGUBl40SEZG~`;h+c|dt^}XNk zC7FhFr8gT%W|0e;gB_q4&A|?UU$jG{@QZecR3X2AfNmT|V*(L$ZQB~-h@k8H-WX2= zT~$@aXj=L~5&=I*BH#x}1pFY0cu^<(<~rdw*9pJ5PWZ(-pFd|7{e{|ufg6kd+|IZI zDEjkz<2z9Fr#D95%)ug0QOf*~rzj6HKN+9j$N9 D!cYO+j&Iv+PKh%I7Gj?1|y5KUoH_ObuCy9eLQLHa}k?F z-yWkSHn0U0NPkUe>^mT}=ebj5S%pPYM;R?z_QBP`G}Ovy2(2RtB+HObREsneklq z3@2z(5Xri_ufuCaPRHONnd6p-Cue#Wne4sA0I&svr->;r0O0*htHexO41`i1rj!vW zU=ZTd*d!rY)@HP%j1)P0kulk|XBzBt%XI%TOI$~a?dvr%<~@9e8C#VMZ!$Xc9>s8w z(el+O6z@bfr%cMh=)m*X3b}?*BX5w|=DJEyD{qj&xe(fxBnQZ(cdBoRx!KPFWS~Kz z4eAFOn+au7F&wA^7IYH&skdg0#>-Xv^(HGK5Q0gq#=4Frilq2Ubbu il0bb$-i0+@3_5VVkh zfff=f2RC5lB9D_1svLHxoWmrHQ02C86eKG(23n2H6jWAXn8+}XlaR)mbAU9~EnKtK zvyqS<6NDZF^=u@jSC)(KdagsHh%=^#1j$t@=l+4~ 59!{= z_cz@8)cuX>EGGE3I@7xgbv@Ll%4yL|)n||keKhn#xI0$bR6hhcRyHoX@4w^Jw*^-F m{<~#4L=!C)zK|RGohz^kda2)M^rK1du>X?%?3$z9?EDMkT+UPg diff --git a/skins/pisq.bmp b/skins/pisq.bmp index a100dd8cc532757342311a2ee611692fe396654d..c652f8677add3d47aa6d6776060f72863af166a9 100644 GIT binary patch literal 1158 zcmb7@!A`?442FZmffM4uL+~7k!w%yuc!Y^`Ql<5TGf{~n%iHWQsXgRjxQ*NR>}*|I z(ILFX@tpkm9ou<)e!F%iujmKH3*(+~*jUka;T^0%(LWq7 WZbF~TTO-Gb5R z5f39oij$BbaWlq1L@cs08i=?V0F6&RrZAy_CWt>_JlQByn&CT!7UP&F)OO`1TUF!} zLz4L}U^I2IGz991`M$`LG<7oIS^N 9WT~Tfe(wXN;WkaL->h|%sKbo<&1l#_B}Mz1X?}bQiP?xo peeI0~qTc%{XG+auIKQ8F=T_N?wmaCr&bRLt&(@c7{=ahL+z;?-JGB4+ literal 1350 zcmcJOJ5Iwu5Qf(hv?vt^uu@QR25XG$g3j)_0TLR)1ze;-;!2Td+;Ig;j^GOZe`amG zfhAHTM%jla`|Uipy1h9MCXbk}FzzufF^X`8IfOSXuNOWxron$j5sGOFd#ukNpJ5zF z=%z41*S2k#pda7&@$}C{Ws%IbiU%rL9k^TVbr(-G1GRPE^IOX;7m;$i(k5Ip*a6w` z=DO#PTxr_MI9z7eB^&?>aFx2_7N7#)7C5xT2&SAH1g#_>pp}FOX=q)#1I`Q*Rxxve zMGY}H&yk_CT4SQr;K-P>8r_7Wsh@<**OUWfzW%{AgXKm&JO&7RFlf2a7+&9ZhxTMQ z&^?XeAwY7KnUjCuW BZq^)+xg6Dor_?40Mo3Wr&)TfUllh=Pz(5 zI&?@nDNE}T2 `@fCUF00z@XMK!X7b4m<>iO7T%qg8>T; zJOqf!D5j}2$YH^OhX66BrZv%k1qU7i#GJO#L<1HacnA=4NvtLsu;9Q$fSAkWG|_+s z2Oa{%TuQHr1}r%65Fq9<2Te3!!GVVWF)e|KnrOg+0}lbBa^&xn2Fcul93BEh<+K6~ z1}r%65FqAdGn#0?f&&i$VqQ|Ki3Th<@DL#8 jNg zi3Th<@DL!TE##sm8nEENLx89P`3I%JfCUF0 !GVVWF>gDgi3Th<@DL#8 zEon8;fCUF00>r#sohBNv;J`zGn76XmL<1HacnA>lHV>L;z=8v>UcG5l#W=_NlxosP zHH};Whjek8bGp&$>P81&i}mfkb#c3|s&Dr-*Bpa1;HE=OB)<*i7h{ zOL5eLdXQRsOY&H4a;cxTjy#CL`E||pJbFhl-|uHs4v({A@QmZ)^7TdgFpg?>w=d%I z5T86XxENesa(dQH^IENXM^)8TUX|i>v^{BSHMr!UUFL^zsG|HTOP1$b)AQ`82d@Ww z7}_S19i1^nYPH&Bj!E)xdwbM5>PvYVM}8Q`e77m*NwT#yJ!~C~jFD08T-sXQbkqf} zIl*5}w(sn8jwUOZWSSt3lJ_S`arnjbaM`VSmT=CAY--hI*7W;oebgL}clP=`it30X zoz`X3;7G09Up;^Pc)D?{=lAc=^RbrMZyfmnOueHX-@Q8?eK|U9_f@s-+s`LO?`W2b zC*qj3YyM()f74_W+;m{tIEEtG8__3ww-@A#jpO{_@zcd@`Zwd!EBEJ{#=^eSaXK81 zzxi>Gt(zQGQFNN3MB3G={_|kE`0K$`N{6G~t$IaO%_-_z^C*kSa5NfCCSUVtauh{b z7Re*0vUL>Ce?6p~ojs6ol1DYKc(*jpvLII->90XotMPF7Np{GxrQi7)Lu#cgd3MwX zTdelsZ1&_Q_H1$#> =*{ns8 zc5a);ZO8H 8piR9$%NC+;YX=?(C3bN6z zYJ$(_L$W{vQ?V0cZN<1YJq}fp3GyT@d@19osi}cL+=V7lJG#4cSQxP)yTFa3TWcW_ z2hf@6fG8t^zFrH8D)dMe8PQ%_i=|~Nl!6Wzy8>ud4dRU%KdS0{kmMN<30#ID*9oyW z3&CIz!b~fsU2V{JYT$4 rGxDlD2Mnioa zau1RmBt0lBcOfN1i;msh=y8leCLck1UJq)Mm1KVu&}cevZ>j@Ld@bCWeu%P-u-Po= z&<*3p%mnlYY{<*YgI=$P%jJTr)`Q687_#=;AWBbzTCGMP5P&d^>`8eK!d)j&OZKTv z)P?TuZcI%zK_Zz%SB3-4LM<$oF&wWOz{JD^W(N##I!vfIPWB{Ii%?()L4zOri#_lS zxNto(h2o
t--+_{n5@^&d2>3kUr>PO@C_~5^!1DDegaxx`Zc;#f zz<>t63d)W!rb5HW&h^06(vM-yFsiDmpq3bso125laUVQ6K2#kGV`2OX22w{bGdT%C z))4yT G7`erSzj2zC3R+u?#@yAC-A#VDy7LT1J?@`@aAIYZFyw;&RU zK%r2epx_EbIeoBX_hEwQ+p65?@9&4npustz391wW@=J%n&*+B7WkE{10XqE%iV6!* zD?0^4P7jJJZ0OGIBWF5^97#Gt{sAm6hRIpAp@naR?w|w0tS&6yoQJE|27w@j?E4ht z$!$m#>j=*Wjl=?-xEJ+FEvTrdKxSSalu9M)>tryMx}iAd$I|>|h;mIB8}Xnc&5AzR zF!mSrAtAJk(yBff^%_`Bdh|PO$S-k|b-D5SY#638Cr-$Rab;`}JIKA237ZjAmw}(D zhatZgXOcBom<~fm){~ZHK$V<$U7Lcl$BK~wC%N-Za*kRo&V-=LvSB_PL}XA8wW as)1VT6$Q5=D;VQmF5yNkjzU~uS|MvdUb-6J= zc519 rZ}sh@dn>o->ASn$ z``q}4`TD5FAIxQOaYPn9Ra%R3ze~Ay@5$D8e Dw+oM)<@^qPPucmCo?je$ zG3Vnku0lF$HcN>ok0+J#8tKE1`FTkv`Wi@+&F__$H@@7P@tCAuavw8Fqk9VNm39Gf zwA%&MXB!B@a`WfDd9kzS*vK==*D2~ai@tP8YL<=?E2-3ce%m2hgZ1;$P3C^GEmou9 zm5knvi+BF#r(eDA?XS`VMtR@aA^F3n1eKMiDu-w=ii!v3{1@j=s=u6O+!8|@WUsx4 z&e1$-evRR-;{8}AThpuf zK>4P>JYZ{Pxa9CitgMacaux08r8Dw!2-9Ah{pQhxSbi}(#`ynMW|JdgYb*Tmc0a~= mZT6c--v;K}dk^~sX8)oc8d` NJ>Aw$4BD6{chn4$@b0X zB42ZL3%-KSMCJAumB{a37IMSI$%*h2=ZfRZrGyY9{265Y^fwW0zyclGLx3n^1T=7A zEI9BGAc|N44F iovy|ku;9Q$fGEPHcnt 3|MgBAwU%2CsBg| z3l2O4h+>4#6b 2exx zz=8u00b)s|*LVXK9C!#2OPYhm8?fNOLx7m4z(kEVV8MZh08t$AJJFCLw~!7G0irl9 zpuvCz2Oa{%GHpiV4OnpCAwVosYBk<~1qU7i#4_E8IA_3u0}laWDFv_b1}r%65FnN^ z2^w#}f&&i$VlE*UHQs;)2Oa`M3B(^ng8>T;JftI*($X4lz=8u00b(gTqwxkTIPef4 zmXfp@Z@_{B4*_B+SEum?EI9BGAeK`08gIaY0}laWDf6K51}r%6GCn((nsJWziJa%3 zoS&yF;7CoJHdXbpoo;>FcD(aRo7y@4_{mCboqp0*o&TR2?QT`RT(xamRmVHs_i 1H)<<(KNnlGkjyF51empos1eL`4a+BkzWI1L_l~Gl9POHlr2M1Xr$$w}kXf)Tx zMPfS3m1-ZSx1SaIw_A0OId7yWa4xwz`6!M<#>`oRt8$?+6;&zby#0yqClW*m=y99Z zhse=PWVpz =fPks^Hjgs>#O5P zd!kCltgr1hT;#ok+HD5vj0xfBv()qYP^!7V5r@n9fs5Kj;IAz4l6~l^TwUzDtK*~Z zQ?X!q4L Y{i_82_wM$@R+`>?M19X)gBC z_V->x^-6v7I+ZjSclablarl~H|EAHCJcx1KzRQk !1xyo%P)rc)9*?SE&`;rTd)IV!fKX0Zv#nLR7nO4 c&25Jl !>HASVcnR6+XOAvZ{lpepCu!o{8-NV#Q>ppN wU<}hmh9= z*BbKsH#sk1$!l2i{rN`@E5^$ufBt#N%d+HexIdjv`FuV@zh=g`Ue_92&%pn826hu# zV%IjUVnGkAL;rH^97^Pt=#fhT< A|_i5(uQH^@642I_j@A-j5W6y1v4V!R-RBQkE&!&f{1Wu zIAsxg(g++##7|sH;^a8f62#W2gVy#Bu!6z_vy$^f5?H*H5BDzuH4e9iOrg<&w+GJb zX|Lr@Kq9-wpHURFL^iU3j$_Wijbf3Anj(=MGsHz!#YtOGKH$`_p0ef#MmJlH=noBN z0TC0l;F&i;hdc6=VJJB6qH7(bkp@*y0-2wI(JM0Ui#Y+^HOo1Sw`9s;WERw#xy>M4 zx8)=fTAdff=O5oQk~zQ$&bz!>=VvYsBX(~bWfEO6*N+DRQ zJsx4M^{09YWE@iIl##7%FN1h|A7 &s9g>%hPs-@%^Sr^u$=aFzuN+S;@Iv(O4ph#LHrdHHk-uhkgK-oYJl^ygZ$*J|q) zn%4ZWg8E7A%pap+KRD 5sZ;O~wlW}O0p~m9crT6&qzR>O4#nZ{=ecn7>gR8cq_m%gB0thw!S^tb@5=Ze z--`S`sg!|F7catBysw5UT}dfP`YXwYyI)0&1qa+P0TN^pD`0?*b>JaDf-K?$3|QcY z^AI3G?sW~;f&&i$5@Zp&5)4>y;2}VQ%q9g4Sa9GWK!Pm7SF!;M4m<=%ki`ny6a)Hk z;2}VQTwOB;Yr%ns010w++ZwC|2Oa_>$TcL+U@bWC5FkOW;qnG+!GVVW333f(Fjxx? zJOoIPYnYS4T5#YYK!RLSV6(wmaNr?8f-D~Yy% 9q1=Of-K$$7_i{LLx2Rirp+3x z1qU7iB*- WF znl~MLT9*|zr}Oz-?-UWnmh-0H@aa4 wy#do?$5Kn}p<8@BwnLh#Jfop|Zm0X{c!Vd-c)uUd)ekhTP$-T1 z+P12(8IK3}*|dwnVDRF!*Ek*~ZK%lTupcEZ&3->+V~fdjKlvfnSZ!6}{rmS^hceSx z#dv}UK~jmqvaK3d>csi^IVx6TaUfPDAMvb+3{-+ps2|-Wi=S^dyDQ>lH7*+aA~Grx zr4W|w?i>&1>&@;$qdGgN(P_?Ot0DwyI@V~j-loHiA$f@HpXx}j5l<##RT%Wew(72j zX?V=EsA6_>P@}}E7uioor&_Z**0Fujt;a@tXsBRptH`LRlk@IcL!@`&FRF2SI98=j z jUpK5>IK!cD)qeV-jy^wYP{?^^3fk59W1TJs!CLm@wh z95WI#d|hMJMoo7~Jh!ygT8)*AwlQusR?8Brr>~`w^G>~(Xg<`F>IZ2c*Dq(UwXm9U zKDr_?I3g!_(rEm;s7rJHW|Z(y4%coM*PL?=)X}b1mu!jEI__AT$ICgK7vEx)Sj0sY zL4(v^Y0=VRS%B%@kTw7b*Y1nqV3ydnMd3-7Ylw=PpSrvP`yJW zhS%iixt!}cKhpP5i^ybA>WY=#^%7U~buTfJiG`LyizhEuy+(Uk&-u9)MHe5+LDEM) zwGykh(~~;TolVb5F6;cOySux~wWd(>+q7rnH+{{V&?_4J?zWc~7Z>l!3f`4g7=2j85fExqVnLA-p%k^6F(joR)oJ``TIml+A;lk3L2RK#1Bj%WDf3=q zjS9`+F3T>n?6S+c?6SudOU`k_l4Z|%-tT)eZPuRCh3ELvoA+{aXYPDI@1;Gb|Jp5h zq_zstj@4bD1=u1i=IQOvT?QcO3mRGoOIwzu8+qM`btAYIZ8bLPR&cl%KDPpK-O?V{ ztw5aSIH60&F+0#?fGptPx(Un$+&4#S0`xiP^3V(602yEy$N_nvpxe9hy4}g>cqWTE zuQS;RogL0;C!5y=%z1ovas+&rE9e~71;B$>8D3S)KD-t%*MLR9gRc+Y1 ;4gM?O zR~eRGf&MYpPk}YS>vHrWP==R}dkf(KWxxljct-kM0~UcLJf{bgb$l3e#@BHN81{Ah z1h@$gz?>)ex+{ &;gl6oymJZ88P`lRXc^M&VefcdGH1PZUOO<=Q6MgJOUmA zYv7mh+?c(p&U!w8xm?wmGOqDz+9}ucFp%?WdZJp>d4B=(BCw<<7J%w9W}vpB^O*BB zU;%4 rLg^`-ktnS%u*#>8V+~JgMe?SCaS+Av!{y)*(;&93AjmcIW=3p1m*JLupkB zFDkOZobO5SU&UItiMI?lPV0b&{-+lswrxiv4PxiCQUO19VE@)o&+9t 4h#eoeKF}(p;ayqS+u7~(^mKRH5%F9>27GVd!B@8$ z{a7q>aDSbCPZW 3%j>YAn{*pE }HGgT<;NVXivII&A2WHjSQ=b zlEi;u%y$IVA%CR@rk$_fy!ml=I_=mEjiLTiW4=AGUf0{ngdJ_ac{7gKQ6 OGL zW=|J+cToU%&ic~u#@twM@b4nr ZIsbth5J;$Au zsziMrv|JIl#PdpNcs8eme^ST4mrkFuZt)5DQ99in6&revoD%+8o&Kd%BHCc|Zy@j{ z(sRAf(-xym3UdNq<4ZT-$sE=@4%P8Uc~abF{Vk-x7U;E5Pm#lVd%Zq^Du;SbI`pRA z2opy-ryXy!$Gy@+Pomd|A40;>?c2qn4IX|8afJFpl6T_SI(-`w-XFtOtJ5c`$bp{L zq$h7RsyN|XbQ~jexKNJ-JXudtx089uBj+hgOv78nDQ@bWKu^|vrvvj)|4u5=++g%? zqx6xm*Gi+RG)Gy-ojG<6$Crj@>p|{zHaGl-Tx9X)?OR7Wv5Z`jp`NW{NV|zV;6Ffv zH3`;7;cbzg;`Xv7@8_`KRPiEuO;#lH#(L H8$6+3Ajx
=no3~ +eUUQm3&ynxn&>u^sk~q$By4ib;-o#y0CA1gP&P|RBvA~`gDJq=j zgF}Xg`DCmk;7f9vBIj|Uu%X9!9&0mtnD-s1(<5>kNqb+QXYcbx4+jffL0K ?Oe!zIdyG3 f4a+CRA(dR{X^fKHy@ANx{=! *%yok$*ozPQ3DF Z$Hmuc{tC@ikLPkMl3o z1L`g64YNA e$cZr==Hz6xaOReJVy>^Rd9bX8SuW#_$}gHYZT(+)YD@?k za+FKV!aN|@5=#wb9#m-8c<6IrDNE$R10nCz2UZ0FWFZx(B83l--r=DOaLW|Y)(ZSV zUz?f)bd4!N(E%hY+pPedH+SjtXrm~87SVEj7mzpWeO|ZEsMbWPcld|`?jUrU4{Y9< z_L49wimk`RrB6a*_?MtD^fqM1Y;Bq~&v@prAWn;q>f5`}_KsB?7NhR*#-(-Axu_$% zcx1)yn_7R1N^B7+hxf;UZycplizGb0?At|e<7raj*-#qi7IwaQQ*3!)B=QCqBZ?gG zkyg7!|M2QA@VCCYs{!em`)L; b~KRzB7+8Jza^D<8E)^A j8dVkbVKN1uYx5 zNga=kM1Cu5!Nu%QW&z`NE1mW$4#L=090)nsyF;JS)OBoE9Fz>L^2rwY_J@Af+)+=i zC5YRo>w;Y8oihiCT*Dq4OAh9|W96fB5
WKOeU)L-Q^yQmL*W5}Gc+H&U9#+?2E zy%&*Yi|wX(%-XECueAgBxj_PQI?A`&i8UH<#H@M-$r_z7_U-52YP4=0Yjgtfdo3Qs z8m)D^mOhTX;Fy8gqEmrP>ONS+UVwFr?aG#RCD_;tJ?*}v&wvf`E4j-`0;Fj5!8tx3 f0Yo7ORYGFyudDuMi&JK+g|q*@)9*X^cW2BO#~mXM literal 1654 zcmbu9ziS&Y6vq{=bSyPq3f^o}&Lo5F8{#2e+78Z8=--f*;?U6$(^WFZ6TP9BU?lKR z=$NHAP!y8M&TygLZoVmF$NT~9_en8nhL%8ub$Wd6zIs3O I=ps9+Oe;`tyu=u@5TTMHpHJtA2rEU+_DNwSy!g9p9T z6Jwe*8N79Bgl#Cs0=-n7N~MY&l~YCFMc{2ABId0BPMR!DDTmDMjyV9r0zJ!l1Mq(7 zITq%S^9HfkJ2Law&>_uc4X4JVbxe55h9k(61RKCsWx>2Gm_wc<*g!Ve|H4W$Ppy_( zzg$Qk!0xyktA*^qH)5!=?E~nSp10u}F+{=tS<4vR(qsl{!^LpDgBer9H6X9ks#EDP zFN+;a&mjkIi=OxI25HOKfo=_($c T$5U4S-d-jdkMQ!jY(!Z zd8g`mzl3|{?I`ee&@ZmYYCUhxny3?H8E0QdoY3P;^L3r|%#pq4?I`e#-n=41v*A8c zUBID&e+l~n`ejD(vQrHl{ym4@^L7;KXH2RGhG@?D=NaO^&A*CtV K<{^$+#y(Yh{ijGmVT>L2PC_@;gbgG}Q3XnrT*zK1Q?#`#HF5*FqV zqXM3bz;Dm*qGe{rOpVr3xtz6V!Y*t$?)f{^WezQx&~v^!5)Ih(=eMvnGZx-0*Pmn0 z8#n^kfAlZ64>*nh{C@wsG^g~^(tu-Iv3uWy$a!;rn6rD|gy5U|6Yj4w(_BB_w=L9; z?{AJKK>+yf{{8j5ESTTBzh~*v&L~X}CeW) AC(xMt!1qs#lMBJh6T*dSv52KU#c z6Ft3pPX}_S+!B>RoKiu975`s7DPjMGe}Vptayvr}&?=}+4DT2Zv>_MgcjNTVJb#e= G8T#KaN2VhH diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cdfe531..b9d8272 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -42,6 +42,7 @@ MainWindow::MainWindow(QWidget *parent) this->pActionTimeoutMatch = new QAction("Match Timeout", this); this->pActionTimeoutTurn = new QAction("Turn Timeout", this); this->pActionMaxMemory = new QAction("Max Memory", this); + this->pActionSkin = new QAction("Skin", this); this->pActionStart = new QAction("Start", this); this->pActionPause = new QAction("Pause", this); this->pActionContinue = new QAction("Continue", this); @@ -65,6 +66,7 @@ MainWindow::MainWindow(QWidget *parent) this->pActionTimeoutMatch->setShortcut(QKeySequence(Qt::Key_M)); this->pActionTimeoutTurn->setShortcut(QKeySequence(Qt::Key_T)); this->pActionMaxMemory->setShortcut(QKeySequence(Qt::Key_O)); + this->pActionSkin->setShortcut(QKeySequence(Qt::Key_K)); this->pActionFreeStyleGomoku->setShortcut(QKeySequence(Qt::Key_F)); this->pActionStandardGomoku->setShortcut(QKeySequence(Qt::Key_S)); this->pActionRenju->setShortcut(QKeySequence(Qt::Key_R)); @@ -73,6 +75,7 @@ MainWindow::MainWindow(QWidget *parent) this->pMenuSetting->addAction(this->pActionTimeoutMatch); this->pMenuSetting->addAction(this->pActionTimeoutTurn); this->pMenuSetting->addAction(this->pActionMaxMemory); + this->pMenuSetting->addAction(this->pActionSkin); this->pMenuGame->addAction(this->pActionStart); this->pMenuGame->addAction(this->pActionPause); this->pMenuGame->addAction(this->pActionContinue); @@ -112,10 +115,18 @@ MainWindow::MainWindow(QWidget *parent) this->m_p1_name.clear(); this->m_p2_name.clear(); - this->resize(this->mBoard->getBSize().first * RECT_WIDTH, (this->mBoard->getBSize().second + 1) * RECT_HEIGHT + this->pMenuBar->height()); + this->resize((this->mBoard->getBSize().first + 2) * RECT_WIDTH, (this->mBoard->getBSize().second + 3) * RECT_HEIGHT + this->pMenuBar->height()); this->setWindowFlags(this->windowFlags()&~Qt::WindowMaximizeButtonHint); this->m_bBoard = false; + this->m_bSkin = true; + + QPixmap pm; + pm.load(":/skins/HGarden2.bmp"); + for (size_t i = 0; i < 5; i++) + { + this->m_images.push_back(pm.copy(i * 20, 0, 20, 20).scaled(RECT_WIDTH, RECT_HEIGHT)); + } this->m_freeStyleGomoku = new FreeStyleGomoku(); this->m_standardGomoku = new StandardGomoku(); @@ -146,6 +157,7 @@ MainWindow::MainWindow(QWidget *parent) connect(this->pActionTimeoutMatch, SIGNAL(triggered()), this, SLOT(OnActionTimeoutMatch())); connect(this->pActionTimeoutTurn, SIGNAL(triggered()), this, SLOT(OnActionTimeoutTurn())); connect(this->pActionMaxMemory, SIGNAL(triggered()), this, SLOT(OnActionMaxMemory())); + connect(this->pActionSkin, SIGNAL(triggered()), this, SLOT(OnActionSkin())); connect(this->pRuleActionGroup,SIGNAL(triggered(QAction *)),this,SLOT(On_ClickedRuleActionGroup(QAction*))); connect(this->pActionPlayerSetting, SIGNAL(triggered()), this, SLOT(OnActionPlayerSetting())); connect(this->pActionVer, SIGNAL(triggered()), this, SLOT(OnActionVer())); @@ -240,6 +252,11 @@ MainWindow::~MainWindow() delete this->pActionMaxMemory; this->pActionMaxMemory = nullptr; } + if (nullptr != this->pActionSkin) + { + delete this->pActionSkin; + this->pActionSkin = nullptr; + } if (nullptr != this->pActionFreeStyleGomoku) { delete this->pActionFreeStyleGomoku; @@ -315,6 +332,7 @@ void MainWindow::paintEvent(QPaintEvent *e) DrawPlayerState(); DrawPlayerName(); DrawChessboard(); + DrawIndication(); DrawItems(); DrawMark(); @@ -326,23 +344,20 @@ void MainWindow::DrawChessboard() QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setBrush(Qt::darkYellow); - painter.setPen(QPen(QColor(Qt::black),2)); + painter.setPen(QPen(QColor(Qt::black), 2)); - for(int i = 0; i < this->mBoard->getBSize().first - 1; ++i) + for (int i = 0; i < this->mBoard->getBSize().first; ++i) { - for (int j = 1; j < this->mBoard->getBSize().second; ++j) - painter.drawRect( (i+0.5)*RECT_WIDTH,(j+0.5)*RECT_HEIGHT,RECT_WIDTH,RECT_HEIGHT); + for (int j = 0; j < this->mBoard->getBSize().second; ++j) + { + if (this->m_bSkin && !this->m_images.at(0).isNull()) + painter.drawPixmap((i + 1) * RECT_WIDTH, (j + 2) * RECT_HEIGHT, RECT_WIDTH, RECT_HEIGHT, this->m_images.at(0)); + else + painter.drawRect((i + 1) * RECT_WIDTH, (j + 2) * RECT_HEIGHT, RECT_WIDTH, RECT_HEIGHT); + } } } -void MainWindow::DrawChessAtPoint(QPainter &painter, QPoint &pt) -{ - // painter.drawRect( (pt.x()+0.5)*RECT_WIDTH,(pt.y()+0.5)*RECT_HEIGHT,RECT_WIDTH,RECT_HEIGHT); - - QPoint ptCenter((pt.x() + 0.5) * RECT_WIDTH, (pt.y() + 0.5) * RECT_HEIGHT); - painter.drawEllipse(ptCenter, (int)(RECT_WIDTH * 0.5), (int)(RECT_HEIGHT * 0.5)); -} - void MainWindow::DrawMark() { if (this->mBoard->getVRecord().size() > 0) @@ -351,11 +366,22 @@ void MainWindow::DrawMark() QPoint pMark; painter.setBrush(Qt::red); pair last_move_pos = this->mBoard->coord2idx(this->mBoard->getVRecord().back().first); - pMark.setX(last_move_pos.first); - pMark.setY(last_move_pos.second + 1); + pMark.setX(last_move_pos.first + 1); + pMark.setY(last_move_pos.second + 2); QPoint ptCenter((pMark.x() + 0.5) * RECT_WIDTH, (pMark.y() + 0.5) * RECT_HEIGHT); - painter.drawEllipse(ptCenter, (int)(RECT_WIDTH * 0.25), (int)(RECT_HEIGHT * 0.25)); + + int idx = 3; + if (this->mBoard->getVRecord().back().second == STONECOLOR::BLACK) + idx = 3; + else + idx = 4; + + + if (this->m_bSkin && !this->m_images.at(idx).isNull()) + painter.drawPixmap(pMark.x() * RECT_WIDTH, pMark.y() * RECT_HEIGHT, RECT_WIDTH, RECT_HEIGHT, this->m_images.at(idx)); + else + painter.drawEllipse(ptCenter, (int)(RECT_WIDTH * 0.25), (int)(RECT_HEIGHT * 0.25)); } } @@ -367,17 +393,26 @@ void MainWindow::DrawItems() for (size_t i = 0; i < this->mBoard->getVRecord().size(); i++) { QPoint p; + p.setX(this->mBoard->coord2idx(this->mBoard->getVRecord().at(i).first).first + 1); + p.setY(this->mBoard->coord2idx(this->mBoard->getVRecord().at(i).first).second + 2); + QPoint ptCenter((p.x() + 0.5) * RECT_WIDTH, (p.y() + 0.5) * RECT_HEIGHT); + + int idx = 1; if (this->mBoard->getVRecord().at(i).second == STONECOLOR::BLACK) { painter.setBrush(Qt::black); + idx = 1; } else { painter.setBrush(Qt::white); + idx = 2; } - p.setX(this->mBoard->coord2idx(this->mBoard->getVRecord().at(i).first).first); - p.setY(this->mBoard->coord2idx(this->mBoard->getVRecord().at(i).first).second + 1); - DrawChessAtPoint(painter, p); + + if (this->m_bSkin && !this->m_images.at(idx).isNull()) + painter.drawPixmap(p.x() * RECT_WIDTH, p.y() * RECT_HEIGHT, RECT_WIDTH, RECT_HEIGHT, this->m_images.at(idx)); + else + painter.drawEllipse(ptCenter, (int)(RECT_WIDTH * 0.5), (int)(RECT_HEIGHT * 0.5)); } } @@ -511,6 +546,27 @@ void MainWindow::DrawPlayerName() painter.drawText(this->geometry().width() - 200, this->geometry().height() - 30, 150, 50, Qt::AlignRight, "Human"); } +void MainWindow::DrawIndication() +{ + if (nullptr != this->mBoard) + { + QFont font; + font.setPixelSize(10); + font.setItalic(true); + // font.setBold(true); + + QPainter painter(this); + painter.setFont(font); + painter.setPen(QPen(QColor(Qt::black), 2)); + + for (size_t i = 0; i < this->mBoard->getBSize().first; i++) + painter.drawText((i + 1) * RECT_WIDTH + 5, 60, 20, 20, Qt::AlignRight, QString::fromStdString(to_string(i))); + + for (size_t i = 0; i < this->mBoard->getBSize().second; i++) + painter.drawText(15, (i + 2) * RECT_HEIGHT + 10, 20, 20, Qt::AlignBottom, QString::fromStdString(to_string(i))); + } +} + vector , int>> MainWindow::record_expend(const vector > vRecord) { vector , int>> vRecExpendTmp; @@ -542,10 +598,10 @@ void MainWindow::mousePressEvent(QMouseEvent * e) pt.setX( (e->pos().x() ) / RECT_WIDTH); pt.setY( (e->pos().y() ) / RECT_HEIGHT); - if (pt.y() < 1) + if (pt.y() < 2 || pt.x() < 1) return; - pair p_idx(pt.x(), pt.y() - 1); + pair p_idx(pt.x() - 1, pt.y() - 2); if (this->mBoard->GetState() != BOARDSTATUS::BOARDFULL) { @@ -1088,7 +1144,7 @@ void MainWindow::OnActionBoardSize() int iTmp = i_get; pair pTmp(iTmp, iTmp); if (this->mBoard->setBSize(pTmp)) - resize(this->mBoard->getBSize().first * RECT_WIDTH, (this->mBoard->getBSize().second + 1) * RECT_HEIGHT + this->pMenuBar->height()); + resize((this->mBoard->getBSize().first + 2) * RECT_WIDTH, (this->mBoard->getBSize().second + 3) * RECT_HEIGHT + this->pMenuBar->height()); this->mBoard->Notify(); @@ -1161,6 +1217,61 @@ void MainWindow::OnActionMaxMemory() } } +void MainWindow::OnActionSkin() +{ + if (this->mState != GAME_STATE::PLAYING) + { + bool ok = false; + QStringList s_items; + s_items << "none" << "bold" << "fontanGomo" << "gems" << "gomoku" << "HGarden" << "HGarden2" << "light" << "pisq" << "rain" << "star" << "wood" << "yellow"; + QString s_get = QInputDialog::getItem(this, "Skin", "Please choose skin:", s_items, 0, false, + &ok, Qt::MSWindowsFixedSizeDialogHint); + if (ok) + { + if (QString::compare(s_get, "none") == 0) + this->m_bSkin = false; + else + { + QPixmap pm; + this->m_images.clear(); + + if (QString::compare(s_get, "bold") == 0) + pm.load(":/skins/bold.bmp"); + else if (QString::compare(s_get, "fontanGomo") == 0) + pm.load(":/skins/fontanGomo.bmp"); + else if (QString::compare(s_get, "gems") == 0) + pm.load(":/skins/gems.bmp"); + else if (QString::compare(s_get, "gomoku") == 0) + pm.load(":/skins/gomoku.bmp"); + else if (QString::compare(s_get, "HGarden") == 0) + pm.load(":/skins/HGarden.bmp"); + else if (QString::compare(s_get, "HGarden2") == 0) + pm.load(":/skins/HGarden2.bmp"); + else if (QString::compare(s_get, "light") == 0) + pm.load(":/skins/light.bmp"); + else if (QString::compare(s_get, "pisq") == 0) + pm.load(":/skins/pisq.bmp"); + else if (QString::compare(s_get, "rain") == 0) + pm.load(":/skins/rain.bmp"); + else if (QString::compare(s_get, "star") == 0) + pm.load(":/skins/star.bmp"); + else if (QString::compare(s_get, "wood") == 0) + pm.load(":/skins/wood.bmp"); + else if (QString::compare(s_get, "yellow") == 0) + pm.load(":/skins/yellow.bmp"); + + if (!pm.isNull()) + { + for (size_t i = 0; i < 5; i++) + this->m_images.push_back(pm.copy(i * 20, 0, 20, 20).scaled(RECT_WIDTH, RECT_HEIGHT)); + + this->m_bSkin = true; + } + } + } + } +} + void MainWindow::On_ClickedRuleActionGroup(QAction *pAction) { if (this->mState == GAME_STATE::OVER || this->mState == GAME_STATE::IDLE) diff --git a/src/mainwindow.h b/src/mainwindow.h index c10fed9..455661d 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -30,6 +30,7 @@ #include #include #include +#include #include "board.h" #include "FreeStyleGomoku.h" @@ -74,6 +75,7 @@ class MainWindow : public QMainWindow QAction *pActionTimeoutMatch; QAction *pActionTimeoutTurn; QAction *pActionMaxMemory; + QAction *pActionSkin; QAction *pActionStart; QAction *pActionPause; QAction *pActionContinue; @@ -100,6 +102,7 @@ public slots: void OnActionTimeoutMatch(); void OnActionTimeoutTurn(); void OnActionMaxMemory(); + void OnActionSkin(); void On_ClickedRuleActionGroup(QAction *); void OnActionPlayerSetting(); void OnActionVer(); @@ -128,7 +131,7 @@ public slots: void DrawTimeLeft(); void DrawPlayerState(); void DrawPlayerName(); - void DrawChessAtPoint(QPainter& painter,QPoint& pt); + void DrawIndication(); vector , int>> record_expend(const vector > vRecord); @@ -140,6 +143,7 @@ public slots: Renju *m_renju; Timer *m_T1; Timer *m_T2; + vector m_images; QString m_p1_name; QString m_p2_name; long long m_timeout_match; @@ -150,6 +154,7 @@ public slots: GAME_STATE mState; GAME_RULE mRule; bool m_bBoard; + bool m_bSkin; bool m_bOK_P1; bool m_bOK_P2; };