From fb37831ec0794166f86643ba4a9b946097ebeb50 Mon Sep 17 00:00:00 2001 From: hba56 Date: Sat, 15 Jul 2017 23:14:00 +1200 Subject: [PATCH] added an icon for the window and basic red black and white style sheet #story[1003] --- visualiser/src/main/java/seng302/App.java | 4 ++ visualiser/src/main/resources/css/sail.css | 53 ++++++++++++++++ visualiser/src/main/resources/css/test.css | 57 ++++++++++++++++++ .../src/main/resources/images/SailIcon.png | Bin 0 -> 16944 bytes 4 files changed, 114 insertions(+) create mode 100644 visualiser/src/main/resources/css/sail.css create mode 100644 visualiser/src/main/resources/css/test.css create mode 100644 visualiser/src/main/resources/images/SailIcon.png diff --git a/visualiser/src/main/java/seng302/App.java b/visualiser/src/main/java/seng302/App.java index a003c681..05e25566 100644 --- a/visualiser/src/main/java/seng302/App.java +++ b/visualiser/src/main/java/seng302/App.java @@ -6,6 +6,7 @@ import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.image.Image; import javafx.stage.Stage; import javafx.stage.WindowEvent; @@ -31,8 +32,11 @@ public class App extends Application { FXMLLoader loader = new FXMLLoader(getClass().getResource("/scenes/main.fxml")); Parent root = loader.load(); Scene scene = new Scene(root, 1200, 800); + scene.getStylesheets().add("/css/sail.css"); + stage.setScene(scene); stage.setTitle("RaceVision - Team 7"); + stage.getIcons().add(new Image(getClass().getClassLoader().getResourceAsStream("images/SailIcon.png"))); stage.show(); } } diff --git a/visualiser/src/main/resources/css/sail.css b/visualiser/src/main/resources/css/sail.css new file mode 100644 index 00000000..efba1ac1 --- /dev/null +++ b/visualiser/src/main/resources/css/sail.css @@ -0,0 +1,53 @@ +.root { + -fx-base: rgb(212, 26, 32); + -fx-background: rgb(50, 50, 50); + + /* make controls (buttons, thumb, etc.) slightly lighter */ + -fx-color: derive(-fx-base, 10%); + + /* text fields and table rows background */ + -fx-control-inner-background: rgb(50, 50, 50); + /* version of -fx-control-inner-background for alternative rows */ + -fx-control-inner-background-alt: derive(-fx-control-inner-background, 2.5%); + + /* text colors depending on background's brightness */ + -fx-light-text-color: rgb(220, 220, 220); + -fx-mid-text-color: rgb(100, 100, 100); + -fx-dark-text-color: rgb(20, 20, 20); + + /*highlighting/accenting objects. */ + -fx-accent: rgb(220, 220, 220); + + /* color of non-focused yet selected elements */ + -fx-selection-bar-non-focused: rgb(50, 50, 50); + + /*Focus colour*/ + -fx-focus-color: rgb(255, 255, 255); +} + +/* Fix derived prompt color for text fields */ +.text-input { + -fx-prompt-text-fill: derive(-fx-control-inner-background, +50%); + +} + +/* Keep prompt invisible when focused (above color fix overrides it) */ +.text-input:focused { + -fx-prompt-text-fill: transparent; +} + +/* Fix scroll bar buttons arrows colors */ +.scroll-bar > .increment-button > .increment-arrow, +.scroll-bar > .decrement-button > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(255, 255, 255); +} + +.scroll-bar > .increment-button:hover > .increment-arrow, +.scroll-bar > .decrement-button:hover > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(240, 240, 240); +} + +.scroll-bar > .increment-button:pressed > .increment-arrow, +.scroll-bar > .decrement-button:pressed > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(255, 255, 255); +} \ No newline at end of file diff --git a/visualiser/src/main/resources/css/test.css b/visualiser/src/main/resources/css/test.css new file mode 100644 index 00000000..dce66101 --- /dev/null +++ b/visualiser/src/main/resources/css/test.css @@ -0,0 +1,57 @@ +/* + * This is an adjustment of the original modena.css for a consistent dark theme. + * Original modena.css here: https://gist.github.com/maxd/63691840fc372f22f470. + * This one from: https://github.com/joffrey-bion/javafx-themes/blob/master/css/modena_dark.css + */ + +/* Redefine base colors */ +.root { + -fx-base: rgb(50, 50, 50); + -fx-background: rgb(50, 50, 50); + + /* make controls (buttons, thumb, etc.) slightly lighter */ + -fx-color: derive(-fx-base, 10%); + + /* text fields and table rows background */ + -fx-control-inner-background: rgb(20, 20, 20); + /* version of -fx-control-inner-background for alternative rows */ + -fx-control-inner-background-alt: derive(-fx-control-inner-background, 2.5%); + + /* text colors depending on background's brightness */ + -fx-light-text-color: rgb(220, 220, 220); + -fx-mid-text-color: rgb(100, 100, 100); + -fx-dark-text-color: rgb(20, 20, 20); + + /* A bright blue for highlighting/accenting objects. For example: selected + * text; selected items in menus, lists, trees, and tables; progress bars */ + -fx-accent: rgb(0, 80, 100); + + /* color of non-focused yet selected elements */ + -fx-selection-bar-non-focused: rgb(50, 50, 50); +} + +/* Fix derived prompt color for text fields */ +.text-input { + -fx-prompt-text-fill: derive(-fx-control-inner-background, +50%); +} + +/* Keep prompt invisible when focused (above color fix overrides it) */ +.text-input:focused { + -fx-prompt-text-fill: transparent; +} + +/* Fix scroll bar buttons arrows colors */ +.scroll-bar > .increment-button > .increment-arrow, +.scroll-bar > .decrement-button > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(220, 220, 220); +} + +.scroll-bar > .increment-button:hover > .increment-arrow, +.scroll-bar > .decrement-button:hover > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(240, 240, 240); +} + +.scroll-bar > .increment-button:pressed > .increment-arrow, +.scroll-bar > .decrement-button:pressed > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color, rgb(255, 255, 255); +} \ No newline at end of file diff --git a/visualiser/src/main/resources/images/SailIcon.png b/visualiser/src/main/resources/images/SailIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4d25d18b610171014061ee93fee2ee99fd8207 GIT binary patch literal 16944 zcmbt*2{@JSxArz<3fV}zQrJzVA}PvPZG}ik2$?IHr;s_tHbjykL{VfGBI7oXu`6kt zr%gMyjG3ozz5eI_o$LEw-}%n@&iVbWxL*5xpZ9s5wVt)^`(A4Y-?)C2jpYCf3WZ`* zQO0SZP_%w16wNRb1N`OexBfBs#b9>rDh{=c{QsshJqrH9?4Ydgj6&_^LjKX9;uA6O zM@APFbtT3TIv%E7((dkTZt$o5E=qbXm+ftBE$v)Tmz^w4T`Vp5-K<>h^Iug_zoF~T zz7K`sN2%a0-gNJs8t`;CbbY-tM|`z@lBCj^Rw`M<{Z7A(RttBEtw4)AIzdQ~HfLU> zRsG_d{H${{LMLy&(GvWMt;LG`aQ$|V?-sX*pb|Q{%Sh-?tCFZ~{5jIAmRHUSXDG{8 zIhmrb_5PBGsxT%-1sSN^tx`#!Sxt1Vx;iJT0kaf$UD2b3-?SX?gPtFLFe$Usmuhm;dGG{{6=P zzYP@Up%ta^`<5aYBJtgr>XFnGLQ_p&d1v7O>#)gV;)1M|wYB!I_Jnksp(>+^-@k8Y zWxOo#USBHl9VoW#8|?B4;9IR>A5&sNEZD%|larIvTH&$q@}}^3U*Ww7g@pFClWp_m zxzwR@w>*1F$Lo;H%opun=WYPW{Y}zP^LX@3mBqN1^+Q8(fWuj=V(I0k2cBh0djk zBW1a1nVACEV*FSfJ#F>M2(KdQ2s`1|ue-+f_IbvgMK}04m<(d}wow)wNv>SsT|IlPIejJ_P!Jnu?(rA|w2wmf4+(J)_n+wXnW9fc>7H`QQ$2J|xBA4nHc4 zM7@w#f|3{ANb;OMZ!CFW5gxc9%^QwauB9wQ3x{Zpl-a!}OGk&3Z}vO2oh*@CpDLW+ zSRl6j%rUSeCdrv$8a;icU!A#^^p3igYa-qan_$bLt%w`|?&~Xy%gaGt^2RvLmrsZk zk=+adD(H+QS^KrMMe2;#Yz^ah@QEajWa5eRWS_D`m+vZ0gC3M%d~@9%1<|3^4!3tz zRd;Cp{r)a4w!r(|zkNHhkV~z~rLGOST*wK=UqivxnD8m0W>^Tt#pjHjoeQ_$$KGMN z5YE+px9~m8IV1CS!u9lf>75fEa&mIp?hSi&WqFwBr)B5rxf&K^Jr>%f#-B+IK6j=5 ztUTmPN%pPk_n^EkutI9+^c{vzgJ4puz`i)<$ zSVDWpPf6RP%uGJH?TrQBeiCVUQzz?Iizmt9%91nPp3*Ia}B_U4T5wx?yy z<6R+mWh0~4MI|Mncs#|!hq&OCL_zza#0T@%c^zre9^UwNDE?7Vhd-d6o7*qUOx>9$d5cT~Bap6-sY5 zu&+G!?AbHpAFi9*tabNwb#(TkgDzJiF$qH++78_(wsiLF+0_!;J|51<`^TeHEDC!h z>cn3JnyQtEX8j60Xs72q@jiB%bfRi&jcU0#+2t$MQz&|^wY62Yt>9g8@xza~)V#9X z@&t%)v>erXTWNd`{hNxcIv>}Vh^J&e2qsI9zf!w<`&`0nJN=(w*14s>){WPDNlR4c zWY6hRPWGVjZ&&%ehstYpbag!k1_rc@jJ$Kn()Ms}#J9Q`IpWObNZ-GY_7&SE5Q>T< zv#oB+CKF@#2Wr~t-+Gp2^~r6>d-+g%dwT(4?gaLGXXg>ZT34R@Y)tj1PoKUI44m{= zX%K~)v`WQ|8jQgx1rYsuRil;tiG>6)|i z0*&wMro*0Um)?G5+=?$NyRbU6y=lz+^wOPEv0NnARR$U`y-87B-ltDpCFV`ximtA% zAJWrL+>O6mN-gV3qI5kg@ab(={e%wZIXI> zC-+4v-n)12hh+N`OZ~kumg;BJ3mXfv*IvuGSGHzaT zp~k$Q@>W|#^6*15d~>3zG8fQ{1Wy0VP{H*4z515 ziCm+6lvDL6XU+V)(>BCvZY53b;>R?ID+cKd<(GTll^tdVD>XYM+gyzDzPncbbWCi_ z^WCJn`TR}gi=LjI)?6=x>Ag(e`kTJ)eXyjUKmv^}ovB*)c|?9DbuRYh%O`2-3BUTP zyk*v3>`eIRrc_a0vZcN$$(3A|8(W?$Q&*5(2BGWGjBeF@v<%{Z;gkCyc|`9%NPgof`UwW_TMpT9?X%3P@zeUnJW zzD7577AXrJVA9qzMA=kPgW@oIaU^ps{UMx4a<46cBx!>9j_UxYdgqHYtDnEi2J`Q> z$1k2p_A0P}v#D0KqOjSi&_a=4KEMB2-6#8sxxf#Z2RP6K{7OMj_V=GZ)3WtGKIWo9 zW-0FFxev`8qAZ%wehU+L+NiVWf_mrOledfRcdb&A71AQiA*DF=SjIkUEq#<%xfK5r ztl(T~C>Yzei!+%1U?*L*^vJG#f{#}YmZb(!%OaDKk_zNJm(*q^Cal!nYw>wNPT4-m z!Ia%wU>WM-;u1Dtu3!1+6FqI}Le(6yb%Y_lJx?!v1K){1YaL?`3kXROG-RcPAfdR? zK%N`6&a33n)%kR(vnYORYpW;Y<|IBVuj=u)ecM;!LPGi=$)`bSpAhy^Wwz|J#kF-tgL-m zn$=>UsbrGZe2WNCcHxVor&`vnoC94%Dc>zGkJa(mhJtK8L2eeMR88NjR~bEN5D!%A zSy>3iZzHLpi9Gkj6chbX&nAuHQFz#M>LVMHy*7p!6)+`DF4Luy))Vq`!J4l-YDg`U67feN5w(I&mD%;vY%wm!r3r)Sx>#&U<=m%jeZ;^DDBv>{q?zjRiS_ zE4+{8H?=_4xa(fRrslBCW;>^4U~mu}SzsbAZKU~9--ob0Yj~=}aYgL#%!)yQMN6Fe zHVy{?Wo)U>-k7|+PKK1l`|JvxAu}t=Jc5~DTytFNbHg=lZSDNR!ZQchgRVhR(~;)Q z-Azv$^mloA=Tq!8pEM0M>@yY(I`ptR?mBt8d`5ni%(pFAmfOVJ#2kwECFL5) zpQ5MP*<1{9vX2sD7f!BM?^MgoylowSmkb+PF_&G~@d5^Os^y~+HrfbbZ6ps!*zX`! zPD)?zF39HJ_ZU^(O@7LQY1;A}4L;$8DVtL%>HpQJ(m7w(-dZwMg<)3t8zavWl`_U;0zi z(b3_4;dQP9Z+fG6SWl15(vf?~-b-@VVoycGM~~g}A;xTe_RdL-kiXsA+iSAqqS7o+62nGY&6GoL{|(qEme+tUWI zaQCm%e9m7^lh1j}On)Yi0np<_3u$s6!(wXye>w>;p~3_PE$Pg8ePKO5Xy!iyi;$jH2bZhdW&kIi05{*Y+$~4cZZ!2C zT&z7~+bel~@e^N~Xert#?cmCN4~>btZ1MX!y)`Tsu|z&V;YRwvWrH+x542K3ST%ulPuh%{h)| zSG=(=$X8iVSNOm?i&`}_Up9p9TfYOq^aiZ0fOASg$>v8%0HfYeJ&$eXm z6xq1c={-;h=GETqIlgTHv5MKpn7~K}-V>7^hbc5LCo@{6Fs%)?!A_~ajR)=Pk3=ee zU#Pf1ay>Xh*xq_}FUjL>jY5!RTTD(;a~=V}s?f=kCxda=k2dEHhBTOMl?*<*rpc`| zBCCkP7^$KBHA4tXOG{tD++3NNw-y%{&$_s|@jdKRm$KccKOrxWy!z$d7yus?fu`i6 zQ7s3L&!4UUpfEocrE%(^k<@gVU3Y<~ueLT97Ys-T0|ta4tjX8Y)AK9fAHY>utvtcj z{xgi|QGS&MjbOD8=L6+2Q2IBJW&$$Ox(mO4&T7RTFM4KGhWfs1iA?p+N!xZV+L;i0D0 z=Eu8sPghZM%in$c_)#$FOM-osQ1W^|h2?JT5=CKKACL$Fd<8=|dC=QHegQYd(e5M{ z!;Q+7(NM@=qs6u-baZUP$bJcRYTo`(x^G@|V53h61sMPQmoFPhEv) zGj+1;(2-h7nr09~^)xj{$Y4r-lt1$`1;8O1>76?9Y3&lM3gS4y8sg2 z7Ht!58FxbK=mea(*I}WsvnO-U2!^L(zgS4H!Bm`y=P8M<2p)c4SXg*JdFaKlYxNY7 z{-G@mh0P*}(kawOUkb8^VN%k2I1sDbkn>7Qd&IDBD?OKwOR8tJ-YsP7v3WS%b1%7a z8iJePBt_TA=;XB+QK8>WD+uqf={t3(qFfc%&CY-fkX>uPG9dSGX3%I<`g*jb{$g1! zQEsW*oHXE2$2K2J*m(aTnWB01&@nbPwq1v`CR}a<>n;J}DFLRml))f&Jv~7faa+!} zEmy;3+V&;Ar>>a>@%gNj=^A^xYRP_ke=U}$f$X(5k>0RS;nXR~Wy44Z*h+kIPHJQN zFdS*=aBXu;qfJ|ZJmhH45>w24zcX>~Cf937Fo_<&UMZn9OZuHcKj+GL$za&&5TYG+ zXX8^z3BlV9!rnpFI_ZAL#I*VOd6}%Ntnqz>m4u5u$w^-GR*>9lO1}Ukjslu0H^b%Eey3dUS_95vsMaZZTK&vj{aZJ1i2bh6a4D*_?9e<|Oi)3O4VEYL7<1v9V(9WsNd$RKx9h-% zTxv~k@9nmQ3R#7Al*6zzeVEWbUo59;dMC3HDGEpl8~k&gDWxR2E`VxQMBKz534h+$ z*q9>Yvi3t;qlM_Z<&TjGc-`NY16fBN&Af}& zA18T0J+N+sfiR>%D#&)#Hl?|KewA-ro2iz{^hjGc#i>rNc8)vCtv1Mwy-2-kN~}WO*upzfGfi*+B#>g zFjoR>`*sSJpr~my(8=QCurx3fWNhgiU zZeEa)N&jLdyR|}&`c*2sIu`Y!ZCvJ4`gnkpb8e-#y+|9)&Y_mWYN>R=>0b9bB4tyMm2Q0EH1pZyP@Mc z4Wx@Oof3K~-f2#X+b^mGNWiJRd-qD%4^{x%-y3N9mlq;uJYG79GQMJqLLF(M=ZKQn z`abcupPEPT8AwqIO|#et#*5ymaQ`lsZXO|bt7^5~KKHMz*u?VsHP$-(-=!s|(@dzT z6UY4o*H*0U?e~=KXrZs#?;gCV^V$>GJd&Hgy}ZLqTsUsTy*a5%c%gh03j)h++yzi4 zjm0rPDD4Rp;gA&fL=Gm@ky?5VB|cw}q?m~dFJ7so2}HGg*_?JG$c&Ti$&JsVmP&1V z3X~3ej77>gl^Q-JOV26tbEv-8`Uj6pQ{4dBvq?usJxwcvK}Uy@d#CczK<(4r=^M1K z9UJ$<w69`P`QyJ{a`Wg%G`+)5q@WbZ4n-xGN0ZCqxi zPLEBoJjjhk;P+*#3zR}-tb}=En99M+dlWYED}b7TerB{kqUqYnwvdOeu2uko*@OIP zOf2G1DIbc8i-iq}ZJ6WI_79Z1*;@i;2d7Tn#&xBfR>p`A9k`A^A^{6w<(@u)~p zE%Sa#<{0X9#Zf$J0K*0Dc#~NHAT?0WXO|Zjp8{DkD0Z6}j0Yv92V8<8m;U-;JZKgP zN-z8`zl$1xqs|{8JCDZ%Y67$jHpPs%%XTCIOS{BNd*xgGj##@)*!KSL?%h#zFfMJ} zsdNqWz`y=ackgQrKP01f6n%aae`GAbjy>TojSDEXZGR^^$KmoC1Fe6EBL7!yBct}6 z0o72N+&fw!V(Z88X$@yysp$YP8X)>C6?Sx9mr>tZBM}Oe1LT)WiR!N?7u==|OQ*}I zw?H)iLRmNlmY!k;yMtn;g!cXO=g(W^qc0%EwYm=Uddd4LTUw4U>%VnNP^Da~nyuZf zrLQj(W2r-NDh&t0dmnpH4;RFDKW2Uw`7PX0ZYFxpNac5}l!Y#taOd9;a;vtV*?R>j z9Z0LFFuX23@H2h!%$bArj(r|LWDI zJviLYT%)#2Y|fJz>8j$GL@i=zdivGFkA4fBRxkWsZ2ONV8~S}UWapmb<>sC`iVare ze}0qu{YA}}rS}pY8_R$mL}h>VjLYmBmR%VRfE*W1EgKIstq-U%QN-;aK)hK90kX#G z4k@_s`Z|!IcWG8^KzQV+*@Zthx0VU9!0uvndavr}L?`;JO=!=Tl1QXB5YRt=muwe? zY4}BsU^%!gHmu@#q}0!3P#+=L4bjDN*TDiEEZ&OrT|a+bZy8=iHeh+kmjG!1^xUhG z2gc1fP%9i@O3XjAE#myW#fO}Yq`-kH)2y6h#f-0Sc;hoJY#yBdeod?e(G@@iiVie& zfB?YZC&&QWo2s^U6aiR!e2azf+S=OWO&z(SoE+N${d=z)XubW&5ejz@{ZxJ8?C*(* zNVbFL@V0%?t6oW=7g58PL9*exuF1Wl*pPny3^XF0Y^N+h?Zl=6AocX-@2d)}wBC5# zJ042m3R^2eeCH2J*}aVL8atu`WWYU%1j68{{{8f*K_DP%?i**Nq}G*=#;LyNtgNim z@%Hv!i~xvmWz^mxTxMDtc#yWwApi~c^~+o)RM8ppvUxuo6Y+TZ&lq|DY}|SqpNfiB zMBAXE5e2hVftcJ2=(Q1KX`cH}uFEanc8U;OX*=469>pXCxLV#C=OjytA)}URPM_p2Gs|o{^@UP2Vbl}#TWv#&b3M#l&ceYa#A_3A~$F}Dl2schZ`E!3r=CnE{eg`eG=cD;m69-y0l=fjR#W3BC)yc`p z#~{FjgUn~a&+%bVHg67u#~6s+h02V>pUL6m4Z zq{j{zO!dn~dJZxtfI46sr$JQ9xS3g;mpAh~!h6bG1elmYfimOodM*tMw7lZw%K@Us zRbJ1ae346y@l0ys=0Gu=rm2sUdc(@Q_N=$qD6(z*0f2pT{hvk=a!Z&jXFu?McZ8?v z;rGl!Iq(`}4R_f)QAA2PM6a@U@9MeHy10s(J*c=BaVWE?R{Pls0%(5@M>!GaIwMPz zsV~U()O#JUFyAKD2Anm{!kdZYI{quc{!Ucec&5@joBJ%yjb9Pk5;ltP9^Wsgo9LB} zjx4NZLeBO+728)m$y-rwS9=IE$j-Q+=qxtY$AE!nNsRE3vA?vXEv4|_F-(U@}lm~SF)rr8F1{)^B!UF>tR=b%0(yPGVAX|1Os(vu#kf})&s7P6i}jLxs+^;fjC z02Bj)5m-31^rtTX%L#B65SR6tS6>8-H%9j%#bMF!f){{Z>OZ0T3gtOaT+p48)<9gf zbfTSUXaI8iAGk1+_irbeEPck+NMY;=*LA(s+TCLLiu5KmD^Ro$hAgptK)n-kRNQxI zMh?bnXmoNebp)`#nf_0gwt~AxzMG5I3frs1!VBhpyA|0Djg6E0eb)b6)~?QVkWK^| zp17OIWO8$)UGAG>wSsIwkPmfo@{;HB^vO@6Sw9Q1>yX9yBC6uM!onz}19V9gp{U_| z_iFFBzi4^4vFy8D;`Ebv$eO6 zfWz{Zx)uh?9u;_PG;qZ}(XSZk#UI-GPXeIiF9L#B7LfZ?>V@^4J=}Z)Wr`KI>Hhs4 z<4(tbAZKOvI{eVQnzM!|!jNc=iAXYp%g!tFm~zX`R?|5_)idWbYk>F82IBvz~Ff4P)K%^?A14j%>>?~=eLlB^$Pw?41P$!=0Y9w}s^+%T_mOQt< zX@q?tBqVfNsa}V>VWIoP?rMuo=hq~uFdS%l8aP_WVX9!3oXp87kbREqRnq?i(i_kH zM72OU6ywkh?jO5}of--!rG~r~cD;Z9zK=Y&GVLy#d+yx10x^C+mC(!8m~Y7>>}X%9 z^Sy5IFsPPg7WUZG0e!i(E8ya-dxVEf$;r32G=wo*n6e zEJ2UqNW?vc%ELH>Q|2|VsyM57l{)bUBoJYI{`7vD|8j?k^Rs#ek3+ZSS*? zV9i?h;g-&)e#!O^c>3E0279p_)fV;V{Zppn!AP)EJ?b6c2(%&heKc&OZ)Gbt~f-IPEQ#jv!&WwE* zU7SlCYSjA^P!Rw_K6TI}ka-KXVgVd|r7AW2LP*1_IR1O+#_mII{Q}X^(XMmu6~vk4 zdrI|o4<59FpL$?x_d27FvmN(yCv@MqaN)uRY~KjXi&IA@9XJ>1j?d~i?^?sVuCA_Q zAi}Mwl3b~fw|Jgi;R13bVCsAyw5YU8JE&@O&b_+$PaJU2%*>9@zy_v=?-1gq4txLA zT!mU|g?wyV*N4p8rkE?xsX-$C`ieTv1qXeG)o5i73S>&4?-1`6o`G;i_!V!h$E)@T zI!xwY&v;!0gRs%lR{ATxG1lY;D)OtF_dvBp4L!$<#76C&CPzRZNx#bMHUXP`b^=XC zlq2m4LI$0HjSWHc_-k{{AW8Loip;|)69Wt?ih)b9qV4NbKEMr{Z3V4tbss!Hq5qle z)G8#}LH}rLm7@Q|vDj6>fi70s7+&?Vu>8)R#WQab>)D}FnX4D14=IB4yFy6{rG zb?!)Q1oJIj-6m{U;Yowy=CdTj!bZo${l&JrfVZKxZnK-tL<_)H31Td<%D*p+ao9l9 zmlI|3-VGsp-GET+hc}z=sSb7osYAuq*7h~U!+X_BzHexVSS*e@zU#OjN2LG6kTX$^ z0&NKb>YbeNX~)>=;y%JOdD2lhESkrZR`hm}a(qI9?(G;I`}kjyO^$A>`w{8kAF8!T>28Fd{V~_E@JdD~uFYl2%x<~HsbBM2U)RS$GJPk0Xm}qWHNz=0e zKee*6TZ)c}3FKB%`J9{J!khjJAjMrr@$tpKf1A5>jZZ>(admS`KAD()1&a>deF?>V z2K8iK@Y4OMa|%bm(@G79eL9wFsx1&nfy{3=^aA)+}0@4*CoI^ zkZ>%@F8&+TutLyQ&VK*;^+s&l_?l?j=wl9)(lh2^ZYjx4XWkQ|3#+a3s~dk|!fx&R zs%CfbFk*f|#Uci%E(jTUg9{Z_K7?dsE+?OsA5b5$->UvgG`@ZNz*+UeRw%52T+BBB zs&9N!(qWzte(p)>Y6Z!aDPAM5KsB`iEuw0DU?wS6`RJWzP2@v>v!L_mp|!P0Nif|F z$vD(?)4FtD&}#H!&Tax&Gj;}fwotm-Qx6)43|+f)04Kb*itm(E7l9DT>@-iO)(umH?gl&S< z(qQ^Ki7?_I4RTZ~Z__IukSg<50d#hZqWFdfJ!hiry~qclfsP9LOm5}_4-oxa8pHPc zLyr#hNYdbIB{z}?*cVV{vg%t3gIY~9F!?h)Oe-i*H45&3!$M*iY=uDmNJj@z>x0v* z-XfhTcn*JrHYL5CFoyoP@?3*>fRcGYB4z-MBs9=mF{uk=n-4YKxO6Mmu=EaT@isu? z%*@8~+^l{m+(j*JB^WpfT9fF~tQuvBSy0bLTGhq@9+><4p#hOW;iKgkuxF6%&O%gO zUS4(<#2_;!dn6%fUmm*rVk{fLZ9u~Fbw9DZv1@4vvXC&s!iDR^Cr`FzUVpE}%fbNs zY!*~Ap<>&0NEA@76v0-& zw=bb6+kCfBvrb$UUgoti*QC!ojB<5zYlFh*+R|H-wgTy$RgKKbY6uGpdri1ph-(`+ z1B5>WIX3H>s;VCEFh4TO=etjRHbKe(@o74t$|^v`Z-|2tx$J+>+Kck+-X9nVT8I}E zMhaZ1w|E$(m8Aw;q7W4UVrwom+OUmd4R<2yn)q471lZ9w%7Q?XBW%v`Vw;}YT2yK_2rMz8 z`dFCH%I202L<=x=-OtLb|6ypg*e~#g+oF0Arj)QMr0GXtXSMXrbacS^67b0;erwM9dG+U*=E*1tjmX+CB zi9imFLP(0TaI_Y5Fnk{xngNY@3##_7pVBmTYir0IgN@5Wnj)#LMtSg=4)~D(wg%cQ zvB*jNn4XzwA+i6PqLM<%FPgEHJmix&dr~olC7zu z<6^Y0Q}TUYUW5`&jEID0)re z6)Oy%3JTP%+|Q#SpK_@kps{sA3rGgAff|zOKjuT0W)Hpb?lb4-&xlIy)TN`_Qn@@> z4i&pHwc}A!lanE!VekXi3X__qmuR35xCs1!la)cA)g;l#d$9}gFlZ}#72P)e0|ZN> zODHv_<9^!80E+6(P6L$!=@@o0aloDY4C!G+_)4_u`$-64S=t#lTcGc<;iot<^D2*p zUzLaa=G^yj0wF-lm_SE-npLN5->EKFxi3lr zusgg(fBH&10SA_vh~IZlisgySh0;X6cr`s0+Gaz=s`PwT>iF!wO6DL(Jrfvd=p|H` z(9=25m%w4tdn6RH$4Q7v9Y>FM{_N}h^b2ll44vCzDmD9>}sP;k|2 zE14^}UgV?RRJ(;l4|v$EPRV-^%{(IZS))?%%)>u|cWL0}!^z#yYaxQItTAyQ9*Z@s z9YyWp=Vfn0+Nh$-a`~Xs`3nFu)4p>QI$BJE)M!OU;-w)QB~3suo8e^Kp{5Kc-h0JX z@eAu~Ytz4{rY!tJ&P+vPH}%J!Qsln8I&;;obesp_Q3dxU*L ze%5C4)2yX;c+l{e)Zd>dcJkz>x)FzS&_L2;_HhYh%I0kSLcKTG`pVZQVhLM|c{{ER zTHB`Lxr7{z_gXrj7hQ)E{Sg;v|6S?p?d?9yQ2o0CeUDbUp=u;RyBfqRC5cyRPfamU zHC{S`^dU8Z#89BvuzyJvy~R6UyFde_s`uI1Q;qi}%T96zZ?w-WyRC0-*_fNB%7L`d zAF@|O*7N|=FuyoW;-inlpl(u>>cbn%9*FW#!*E!cB;T#owo{*nY4wZlqeF3OrjP%0 zf4qG6OPphtRXkfb`G;VL7D#ZMxzsDTqtyeKK(p<(2bz+EAA@pRyPjwaOHf_;<+ooC zZUgCdQ}XaAO?0Sb7Ue|aY4aUMYF)$0U%rexb=8>UV>yHCm5ySum;35=l73hi#bXfa zck}US=lvBG#e{?=06&(eeEV%}U$y$n5~;;m{`&GtlpBp_{tMkstq7e%(s_g-DaXO6 z1ZwTj9y@YVc<+5{Yx3g3YX9w5HRt`bFJNAR$dQbHqShHE6CPD$TYihQh^Tv8zxlRC z`1FpxQA~9Gsb65$z~TY={N0zavDW^I)whdn_Ukgx@uM6a(7(&u`Et&rQ_(m|vq-j0dxavhLlt#jo)Va%j( zSHhuL0*l>?)jEdV6Vl9v9mV5?u(|lL^haMnIfXWgJA&M;S5q}l@Uk1sxf?=Axsk4s zJP3WJIX}C)GJry@CCPbCfj%$>Uvyx^R&%P^CQ&>>QpOB!-=2aFSjZSsk;)jT$^k}3 z8uhx1|17L}(VO_g-~eM^Djyvc0pbaHjne(%1*d@~cb_;WH6lIaZGt|OG<+OX0;dZs+vYb;fnGiO z=14wt%}xLQ-TYolsE@Lc0i9WG_>4U4xZx<0PTEUV-Pb9nS~F_PEoR9gTFM_9+3~T_EQ6IUA9( za&i{GPq@6T_m^0?oyvOU&H0s?v-{(=G6HCtS8eJ(WC~-kNORxUc-CFX(8PXegGT!E zzPlYX^`2WM4ki96YY%~0Rc-DG@HJK@d<>!$7sifbwS=&~oRO(Y?=%?F{OE^$D)i0w z!U;izjI`I^K;5diib@Nleg2uoZ>~ljzHkL#5PtlRzG(x4BjPCy3U;3sg#wKduK)cj zKu^IzDiQ#1R&94I$VNoNee}a)tc14_BT<_0y%!B!pghxMC*E*|{bg{{X}&V7;F9udaQ zsrcVmGxo;hvn#}26AXKV;L@Bg616!ObPOv32qahW(d=g!ayQrgb;j)Myq0YF_S*yo2sBP}~#wk3pMK z=*DN#{YW9r@w7f))Yy=Dx>tkFp{ zh@H4I2rW{(cypvJ>a3CdZ5i;FSWWj!-5Xd(e$JLh1G5e-+KQtMzs2i>Wb~{Q_Hv=OhpEqe^_Ya$pS(>GWQn>AH|<7t&TO(_q=xr;2iui9%D9vO z-{=|)FH7B9Qp$#WR9%TLaW03(?_26@*(1N*&_6WHcSjR(?;fm#F>cz#Rs3n#m_xzI z88wTPY}D9=gfjYy#R`r_qZS9Z|^j}a{c{kr;nUZl;sXe zs#uq;o~*&BHCIc18C4`Uv#5gnA#uEyhUhBS+!tvDkWv)N~>suVDumxG=! zn))g{Fd#93%kiU{#A&@H#8uRrt8wPxth_9DS|(BJwua{_dOhy2#hfUE|^a)fnx*}=(9kM|d&%yR|YMU)v1nZV8m6o-Pdm=|?) z-}XjAg_oA&$TMV+8{Llg*>@`#;clWQ_%^aGOp!SJ`BA4wQLq81hVcjJ37*JP=m~C! zH!Z9TDc4Xb-Sm2o=O9a`3#$6e4p`p8J;GV+5urovqIP(1t=`xlN85`{Y4)@cqT`m} zyC&{`ret>Yx3{7cFP19~p5GR` zy5Wzir*Rz~-i;T)3hkF>-Ec*o`d&~&nvmcBS-gI~*O5KoR}pLL>p~_a_^B8ESzl48 zr({m_Y8KuFuY7y3ls2vsrTOwR(>v6K8-uTC(=3M#s~;kx)GCBFhu26^Ue9;@CGr&e zUPPPIN`G5i?%@7<$V+pAE3y*nbTW$$#Wnc=-E$n9$Hrh1QQir^JM^#6)PH>7HmZJ1`> zSXn()Z4X~r!H({W{D8k1+{}w!y^7Yan?zNA=ynUByv%RnOXE21w+oL9pOK|BroKOJ zZLzufoLC_1U|;M?-OcLre!KepYmvcwb2%dktPCbWto`09N4CVf#A!r-K;UFTrT$U% zSZ+9cImpX7K&-r;FO3z(97KXB>Wau#;PmvjlXN8mMYwusHERK*bKltfCVrg zm458ZZuVj~c@IY5xL<>oFLHrBvqi?^H$6w6d(e;TWqTGL*}qRq}O^4A{rt-ff=S8cYD2GjJ*2!)AhR@3J*LDQPJ(#Iw~aaC!?e7wvJ z>3tm4KWgA^K{HytY{+2$yaW#zJ0v)hL_57V(!M|xbzFY~9s|(&XU%iQo2E~HKPpOe ztNYh3IJfqY@43G|_jfjX7~H%ny4w%i#6W~r`GavSv+6gwlUWmq`}amV?e9L2riyFD z9hF!adiiZdOCo<$O%FGUEqKwzD9&(dU!)Ws)>qHS_(lSAuck&il#SuG#q7}PmGh{8 z0OKR)Ft6X%_~vo9y+9Wz)|ds{gL`RkZ;Tm^`&{Nr-RpaK^~%|Grk zIUOX54s8i!OQNCWU_|>%h^{qaTVK`?XAbhj$qOZ|B!~*MN%BN7AC#q|=f85Ep-JLR zqp(Dih-}Dti&u@DAEO$^1LjDlW_ag6SqzV!8{GpTr2*?Kdn8lua*UNI+F(kc9LK=E z%1$U`+!;f$`T9KmH7ktza4gXN&X5=#7vT2yb%BoKcp8xJ_e914D)~B+5ZM$ru`p(w|@s&|0h8Ezc8`?D?tA*JO?Qh z_5iuDdfUDvd>34x7*-7;%#1ak0On_c4``WSr)W|9et`P^v&;YdMhB+nUdL}`ga5*t OP%28-ak-aF9{(=@B2}vZ literal 0 HcmV?d00001