MZ*$Z8eJ<(mzj&RDAj+l&cR>(b~E+ zl7yQ?3K{SVxsVc6|}z{b@EttW!L2T}kj#&K7!$b1T%bQgy{4>R)Y^yycd>QZMTIfSFB~0%kS^Nw<@V zX~7VSJR5N(3ipxxDp5<&j1b~C%}*P<`*a5S8{?Bxrh3!417FmZ7LgTPjF-x)kTfNy zA|Xm?=+k}|Htv|-S 7hd++OW18h-&U-v9N>2S&$n z-+G}Sj>Xt?aPRz_qQv1ZG6bZfw(WbLaW`_m-n+fPqABNpGk5>+r4CgVN~*w#q(xsO zTrt-vj`XaURv8L5MK!g`M;cgO)ZL(-- _7XD?M >vKF!|D_ z(@)BL4*T&m)W0}|ZgIq2vF5*k9hp4xvX?9z$&0UzYY$6X19!b}9V+l5N@*(k0~+lD zHj4YmaTj*?z+dg{ad{bu^n59qSn^zLiA;H3N+g?~Q$|TU_h}}Po1eSf$L)CwnbdMw zbj;x2gC4>gh}QepH^JmgtPf=f+WVawac`x^VT-wl{)bztq~j}SIqb1AhIV-)MTWUR zr5wQCrLw_q3iSe37UVD{02~wjVIemEF8^lg7SFVEQ3gm^w6y2KyOVT0)xf{-J+b(Y z^=wuE@kQ$Q{)0N6>9yk#KenCnB6EhoZ(jkt^~dC%{~@(M`;s&YOaaW@Z*Qu<}l z;!}GYG`R|;n)_w~w$W{cY6+v6U*j@WzD6k( zE<*$c)2Pd2>jcWekuykavcw`Xway#_CA-H64xoF}++A2M&P99$GR>sjW r?ZPpt%Bc$4 Zs zB0=8_J2dL?Y7mrxF%d>ndR+P=!WiTVo2V3qTQJV}dQ(Vv?C=ThWZdb#1T3JzCW|O3 z5z{~eTQ5epNJBdc)lsyTIPyKt&xSlC%SBowEZY}Gz>u9y9J<$vD}3Uc>a*r760|RO zND)DAp0q78GXf2!Gax~Jq%8N4%_EX*8g$vFYq*Fo3?mX`&WR-h$Kq}><5^xxaml+W zM4E-&dh8TVA?W4|G)TFfZtqKaHzdd(@uIp}*P11l&-Q*vw9BR{*0Yex-z!is^g}6d z!8nCPa{%oy96pMqBTAPPbv_dS0zSEaK2HGTWRxaqEH2@tuN(WZQWUduf&N}JDuqnM zVNu MW{A=c`elvSp4kYE+S*lgq2|60HmEJq38 zK7f>TMBf23Q67u_8W{-j$9w~>0li 9;^*?DyTd>FGdmRnp;f@Y@M4qsj!GVY`g*2YGT tR6a-dO4eJf&2()b3IoVk@)1 zla!V9o@(>Tx&>=F!38;RGeFW4f_(REw$PNv-jBkL-F?ZA^_{P~BrI7o%pUpLNY^sq_`E`H45>4 z8Ux91<-OI C^U#5 z;3QgyR)XJ8kYWbUmow-h?^Yf=5(P0Bq#-f6Zm+45TOS>=An(A9okWT+L!aUc$Z-;< zm|Fu0AxG0{Tyt;*bgbNe^SiqGo*o_b_ew42cLac6eXF>+J^kNTmd5{U>#@QGpkV+A z%1>500L?C3%CR8ohn?OKxSkii0qO1JUvs7+5b1v67Jr~SLp-^;^mzsHvz14uii=4D z 9V&?dm;-J)vqZeyrpcRMeKb$76v#djy3&w4E%NguA~ zkem6RI8B=MXjQ9Pjdloza!d#j0U-fyDU)lDDANPcu7^gG2Bi!tAXGZkE7isb5znYr zrHb dx2u83RH;p+R-M#}h(t{cM)TB4HQKree=4Qg4}JadxC%nXNd|2ayu&C< zI0DL&xGX6mACaz^uN7?9r3pvZNhY+ZrRO7rcz;!+=ww2*jsW}G8m=YpdY&SM0Q3bZ zuv_iR?xA;&Qw;?qWDq&Mr?=xI1GYo)wc7d?$5II}ze$JIa8(n5adE7*_NRGLe0-so z&jGEOC$!<2j%&dCqP0H%N%Eyjq~ZVo>vrAh*Y^d048u7?C`^=Si8AOE>6N2`|MS0+ zGJoQ&TvgT7@fY56La_Q8Xvp9A$Pj glIjpw5VHShB+(Fp;$&BU zpJQ%7<=p_G+!vnzu^AHQ>RRQM_R}?6$8vw$raH;Dy@mg-leIc=6T^#f+TX^XPYwVl C-#>}~ literal 0 HcmV?d00001 diff --git a/packages/ui/resources/Lato-latin.woff2 b/packages/ui/resources/Lato-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b14c76cab32daeac6287bfad409cfd73c63504d5 GIT binary patch literal 23316 zcmY)VV~{R9(*+8T_Sm-e*!Emw+qP}nwr$(CZQHi7XTJM+Pt|woBtKF~Ro6;-b-L0? z$4yR@2?!YIzoLZ-g!sSqDi{bzv+e&G`(OY6TX2dcaqYqNfdY6S>7ZgvkYJ&MB1i&n zabSY@fq>aSNI*j!!3h6^U_t~7!Aju}Z9%NF#RNi}0S`8iM{pq%S>uxV8;y!UIIeS~ z>u1sD{`<|#P##?eSpWVJZ(43-a>O~HL4MRIB_r0H({S1M)w9fDTunVySnCWi8V4jC zhZGZ0(N5<`N}HMqE*@<-Z0Z1Sw56a`oCbx$4SWu-q3&&MxGJoX+!eB|Y}_{$Zk>#% zlyGK)p|@9 P|ohqu<`rwNs*xEah+aRrF@ zLl{`#^aJ3-SGG?}hmUD^Cf4evsXKt}v)&gUd2-9cDcpmHK_cDxAF}f- z<|L( Gcjg_A7fh@NB zCy_Z;mPj>=>pzlydOX%>>l(>8DbAy>AQU*(WCQEY4E@YZ-)2FMka-&+uRI8O<2Hq~ zXq#L=AJ9~UxyvaeDJGrhQN;f> !U{Y`!66 ~kZrbtNnQDsj|b1RCTz!|*oCHM>$O8e z4i%+16+mnv+4jBoSwP!BugcbZF6e^d#Y+%<&=V8QCd}?tX{P)@1Xx>Ed)}xoZN8W( zMHI3)WiT(SifG~J=m_(8?<2hfm4i>*l2us9D%_B?khT^O-G6@5?yOw}Qy@JsERRv>RA&)h s*;T=7EGQ$0$yr^i)8+-q-mc9XMo@K3mvBCuToHNUigR0!8jmp%l z7wLOmuKMxUvfLZ^@#2EpKN<4;_&K8L2)!|c`;E^I4q*D|`?ZMG09~ReJ~OfY5TE zB~CD*7|H97*`91qS(&|F8=q<=fvL7Od70W%!w*!{-=`v7z0|rS6>>i3m iv6&Is zl`D)qV9pS^I<{%m#uQjT>vYC8XP-q#g16|x+~53;X$R&WS-{d#uG`N9Uwd+2LF+71 zzsgh5PSl(Sa*#8W43s%8Xx;`vhv>^MvFiGIf*2qKRjCku5JlXWDrw~O;@%~MxIvgI zi8@)7L4PP93<$|kF@f+e9NL9(ya>_=CZoX&v*{#mBCFObE~nGUY!bVl9|nzbyZC}_ z=S}Swz9)@pxA25w$y9KNn6T(rGOb##;K)x*jc$=?&8ExcYSmu8f!+}`Ovd5vx>&@0 zxl_I#1PRXBoaFK=%Y5qWhvw>pXrPU$7~K@n_3`29!3p&;KDZd6LV?{Ng~r4LHHGSg zhlU7ib?3}=gYu{c{tt~cPXcno*_v(fv6eq!
uj8zs;h7yCQx9qt){ z*-v(gj{?jp8R%&+EF%?br|V(AOnpeGsPImF0(bd5Oxyrr1LKopG*qQ7sH$3Oi}K99 zOV=Y8CY@2;qn8v|*fzlM3fVDwTcUZAjh|?;?Q&zLs1+V=*imp)R#;k{q3t1ZqT(V` z$fTh?7;;ELN|KuVuxeIUn|JQ=kQQOMVXl7?t{-W5e0_NNRp-HWr&HdhH%71bFNV(G zKCw9IBb%7~VG}V$BxZ`Xr7qk}d!-`8Y9qi@NI$EEw7sckYI~`%?jZkDzAWIIFpXRM z`umY~-Z$d^SwStPnzo>#q-LqSE^I7+VJ3LAagva(K!ap{b>Su}l R8_daHdfPNU(e5+uyWC|80+-BsAG;l zxIvS`#o&n9!>IEkp89CAC_#JS%FMq}iE#OI`j83%e6f`I-OFQa+(Uyeg9s*oNR8Ko zjPO5*3_*+kVK6j0{s*A$5@Q$4G3$`IyQ+uWP||1z97xgY70mY!oZx6{tJM|nMggK@ zP#1Ji*LNfT{|MpxZU^L;)ScsC_I_uN=jLc$KGO0did6Jinb!o3(SGREL73FP{ZAlG zfXDzzVJ*aSY#)*Y`Y$zkU4Hr|XY17~_J6{3BMyqAL-YmZ?a!3VsTEPv)h1FJO4K(! zv9_L*<0<#Db3J2%|Hl-W&FT@%0pCVd^Gj;t@+@of>VW+JYl01SdZR69>EcvODVuqr zt6c54t=Zb!Jl) =rmKAH*LAR9+&Uj;-9m zQk&^V`sFAcEeM3?CrF-tr*X~}ZU`(RmkmU(FHQld{{htET(0JP`R>=%DE3JRtq5y! zbzV#n3Z-@nU&8tFudlE^!@;(JIZzhhI8Z~89_|0%My_hj(#;!%YVW=~J7MD^B$5If zrbT|EfPa4sI>=3)S=(NnnuV5#1O w18OWyR2qk=dN{^xga z2*yjpRNE@xFA{Zo=p&87Abz@~?mphko{gdn4NXm!mKPUv0C7eEX$evHys{TLr5H4^ zT|cim1lv4}mIka@rKz#E026KDal`^c-ekgC599B7k-Lgx8L>I==6sC{VH<(}`6sM- z0>oEGLfQYLM$h%_EX?0f_E210Qeq0#5;*8@JVkVMc6Z?6#9c`JhD&pSC9~&>7(}QP z1AI^zUnB$N3p!+BIn?PgPt05+y5%m~t`PynCwJ(#eRSyXX_hNQav?=zp)9@*4fGHu zEI8;8z?l9he>-e__CO4Z@j)g+$`=RJ+&(YYU@njo0mkV{p~!C28k8s)anj>DY>PVR zQV|Uk%NY}o;S1xU^MzQxYCWxCD7^F2oG1z;a7E%LKArRN_6BQc)E!mmx?j`IA4o;$ zt7uPUEw3l0r7EYTrKKjOMTVIl$KO{o%;p2Y2r>?YJx6-`&%B&l@wykt{twWz9y2t5 z4=05Xt%|b- IDLy;8%#xKrS`jwBF zV%?)LWN8L!pB$B$2Z0%*Rr1fB-(Fv;Yrn6PX$&^9;~kE^$kdbM9*or@LB(U^Zk37u zuh{IdP+s{BP2SIdsRD@k6w@tS_97ko{T_bQFR{fB1iCMo-R{cU;fKeg_MB`sLDp=a z6F=lm>Oa &!YBdvj7{Tr1xRgqV56XK~C5*#J70gaO5y-?ixY>$pRWDw+t_xyU3 zVW$-FcSC<>nuOQ8b1-unc@!c8(4o%gGw4>L^cOND?-)jfV X#CUtvDM5J%iBc3}LP(ps)c)!$-U&2& EkP)c5zy#}<;XMXpgs2;72 S@fh$R; z)+5VxY*w6e1p?ch?Ls7cU9}O8@{xEJkpat1?2=ev)O3X@*6ozJDSKP~O=OXB=cC5- zfWyo@F+nn!Wu&?x_$1XSUp7Gs-L}HzE!~Zw0jel@e_Pk>5hU9MldTmzNF`NRI wOP8; -(SZ4Qc1XAXM%74J)-vwU&+drAK-iYMr zzQc+hC^?BgyqbPWPn;#cz)2PBkegnNikBv~9%Wk$CcU1zt|2-oz39=uWjo7uecdN- zzJ0@Kfi7m6koY&Y$x2RFLc|Jh9@zrYp_tVYNa iMrE!&m1$LsWinwxYZ= zc`$|fk(~<*-LO36gp)*tWqT@E^!Q&|_yy_t*^w60n+R?;i_Ut|7j*~FEW%-hVq0i7 zi+h2Vy5c|sI*U2ySqoUBG3-iVI|Nv#irDC}p=2piRNzE#2s)rYFj!!-p&t4hc!S#l zh(Da<)QTJry(#W<0{kJIwiIy +kURsqIlXDKp`Xqkh@O>@6(X5v=i zCzY5D%6c`=eUClJlT%_!^2>R98xzjyi-^Sni0EA8NqBes6ti*JQ|!L7UXdiA^dM{o z9h&$!@oRH3C`n598~6y4YGt8zR;zqWm*+oBICQM!K5DkXkjx6^Zwi`;2;}H%?&YA- zU{{=6z)M3$KOLKC?8eYG1wA!ecmgb-|9)weii31>3^I0$mP|}XUa}#sl(=Cv%VJ7a zn#ZoSEib%1Hw ?%pXaML&T4hWX?1A z{Y?RZ{?I)TBWPj!TMpDr?;<{mcgtb)XIHJ1dWFX!EAqC&9Wucha?KI1JzBo5s^CyO zSqppCY5W7^%m{@Gd;OQRE`JfapJoi34(b5`c$ec6HpCY6RKH6b^pafR`GKm^BC{fw zQV4xYf(k*YcK~7+r7pLLg)-_!DqQ;^MJr*}x?s_!0`WHAGo131O(9GqRpJS$L@T;Z z4QUZff~4?#lypv{DR@Lf5L>R+Z@aIxdbIK7-PV*DZSM+=hp6tFgmBNB^&>y6F=4LP z2JfJ}c*r9~Jl849Z1#YkdcoqBy6Q6VDa$LuuFmOdmNZk$?EMlth;BYJCVMa9d-0yi zH}F2Rg}-nVDiK?B=2^c8hz3M4A;;~lJbR3~s~=|&6MjV^=2q*T)0$JEcG1!MwdI1C z#l&jVpNZPMi^a_zPu_H8ip|{AmQ)0`Rj(#w*1oY;2BKVaAipNpkf7)=pfTmV5b!JK z2sDP2T}>s*Rxt{+qLG#toI39{=lmRcH}l@Mw(Fnt{MKiFyyqgF-e!K(QxeP@u+fja ze3fdjmT|H4z}LKa9`9K5A=Yy;ku21 QGVFh0nucU%0 zWDjp>B#vnSk%zfl>?ch@UdZ|#f SI#2XppVo zR%uU^h+38Ik=`ND`QX)wybFwTx~B&O5=n?bJWLL`RA2Ak%RGgGf|DYy Lc6>@wj_qM74d2bS?a2l=3#&cr)@%0 z^Nf>t*+#q!D8k7Tbj8$w7K`94yN|Sy>|`|ILokOHRR#UuTO*HTp<$RP^>E8x>!nFm zHm_YOR3v;#9I7{wV$TMODH=AhGD(rkn))mxw)sLz*ymC}1|EBMlbn5HVz2%03=@T& zq)MfQ+<0{X7k&7po+LPa>67cUvO>kJsqm6cBm+gu=AHVjNYFpgaT)b~X^SQaf`(U! zZoL$L#-)1Dz-Poqyp>BTr+=!d)5Qh71iJy{I0zeAnvjlv2_p@NCCX}p61q??)Pb1q zy+qDorubGfJ(bJWad7TGi`Tq*lnW58fB_&wMVlV>7v24?AX{`h6$ApjP@IIU1SMy) zKib|`jUG8ppHy#`Cxx37lq=VaR4nDAtWDyg?l`g)mwfaPGG*-U anKr9vv6Pw`i(6;xFg5ULwBP9*Slb(sFFIQh^6xy%^!pMx{QT>1Sq*iv9YR(ilP$ zBjB|D7aO5cdLpm$H}+9}D@T&zd_ Tp&hnf3y7y@TgEQI zs+UjBpYWmsLc7WtoV{NHek6}E %lg81PY_alrw$E!xKj@VGuD36F^DvFOO39rid$qF_s>vzW zeiihRw1zf-HA>>dYei&8Gms??$RyrVO@UrPhmektA82_`QO@c>UI!sc5(TT?S$*;> zeK>rbI0o{d-cO64d&JY__#57o>EI2S=Qd1w)SeNEY_UcZbg_6^EC<{6&oR~7leUpm zdz6Oxk{s{vTWU{z>xxi@zp-z3HCSC4Z%uF>icssP%RtFmATD3^@NIe_EZ4RARwZ<4 zj>PxC6Nr{eleWz-D@w|ilw`5J;0&dxm9Au^qy%Y)f-X8|uGEIWY6F;3`-YT^ ziz3Jm#S+EKMtDHR`#k^C3-i~E#AT3>z&OH<$OJGR<+PdL_;r)5 vLxv!{a^!Ke_~CNZo>qoV4T_mmBU zN<3LVKIu!9xXWaQ`7(6IFFVOSb-|~BXncnj%IC{0l|^D-_}S6)*A8O&>SZ}ztOZ}Z zxWmPPuje8au-JxkXlV9ig$ItPa80>9e8H{u+`8aL_n*`wg|Ki<++m{O9`)j1t1ks2 z6
YkTM2%_}4 His-?&u+%sSEy)91 }==|5r&z|`!mLjf-)NL#0&TwHqTYD}nxQoQt(#3vu z=UT@|U4I+m?B4zhqrUZOzMX~A(@P2$ML;{y-las%d1xF5T_rLr8DbHDLt=kKb_Rkv z2TLq0Bp00HyflFxQTt)N(COvdAG-9&XOETlKBHUbs#(b8EdOo$S4D%;FW*;XcKo&E zPbWB0kh>3v-N}arj~C5P&BfEltXSeW%{H2djD^pP>!;=6M3|6;S4A@N3E`_q1vT1! zZiziX8sa rY_KnAIuN+y2|s!713I#6%nF{oJZ!FeUvJm7(Rkp+=E|A6os^;M82zD{k6te|Ucs zG^)`#4b?8*ctk$|Uy#PUJdm366@`*EC-Rnv1yOM2bECT9Vx{>@%>2`6On_IVrZaBf zP&6FMh%sjZ4uFtqLU`5(;x2+!bZp8Lx~8StmYi$T=-4!Zm39Htxor{x@FgXJJDd?7 z5UCO4H1Yv~3et5m@*{C6Dl$%RuCaR_*T4$w&0^q ?yH#2;6 z@SZmvk}Z=z|E{N6C>Rwc6a~AqO-4zVrtF!}YIUf_T*eot?430^Wiw;%&Qlb6medk@ z cq+TPAM%R-vNg*pC>wyq&abYMy=W;Lk4E+u9-LVI-^{?dN%B0!k z3M()Uz2e51$01iSjp|6sV%o;p6 SHW zrAn9`fBn#&4`gRP0)U01tH5e#`+mE#)};w8qXjX{?aSc4Yz{Ecpv&1#W4igl&DX`b zxAQ#wD0B>~_0&(P#r$DA#GPEYzI~Kr4XUg5^(cR3tNU?2H?)XBpNs7AjK@<%LC0Al zK3y&tr&Jc4>k}qRDH&-d?3{4ckfg-;#?)yku53whp<|MVU9~F%f%S`ct2)qCSZlzL zszq*EV%5Wx%4ehr3KZ-D3b5Rf{#19?z&9b03cf;K! 4}mh^#nk4 zNAYHWTN?07I6BIs|7AqMM@hOJBRNzWz3LmdZapz>=c)?1vT`|65Su?UTNHyL-H6aZ z=33-OFBxNd`}2Bdvt&P}Dft@DVuB)E6uJV3_V~R{xF4h_M|>}fn3Y-$cl03bZVOF? zBNk{Dg&8DJijJ1=p&<<=O-@#@WbuI28%>tI&$4xekTya^)zp=777Bu2j#X6ws@vaH zH7Gh-+BR=sAQ JM4caJbYk_BU7^ogZ9<1}=r`mm7G zQ|IqXJf)PQkcyGJ16(BLuY7E^P#CT;SjyuFDJJ?>v<#Y2w6bZs1O-Fr{JLp31#7c8 z_04xV b>?m*E&Xd9hf(iENINDCQmhjbN&p$$ 6e&4UlF0ercjx4u(LAzhc6Y$g6`hlMB3ue>;|dt zSF{G+W7BXl#-3$j!o;Y?lJJqz@Z2Mk#=#}Ret&r}#!(PNFs>$WST&+=;8?w|KEHFC zE3qG?eUaNqstE=1@*dU>G5RWkieV=v2k~i~6VWw?k1m3eDntsrb;Sjk@ND#*o++Ta zNV3zAi*c+vo4H#PJ)MlkZWful{794|d#sLmbbCrC{#k8*8!ev1zET@$#2xl_upX@p zy aLG)+zX%QiMh&3}5+~s?Ped zN4D<9yJE{rzNy=^4cMOMTcyGC2qu!{F$BdNG}%zUBjW8Aj do$Ftlm%ehKIAl4bZc%zs~j}T$4;f3FEz;gK^c!xoe5g_z|6N2KTFJMgFV#HE*B` ztZ_#Cc62yGmzG?ELGJuICbxMUBLwVPH1CkreN^WBiqYEARNGtwm|&i2G&xP`ZWUNf zp`tQ(_TIz07QLSGIWqO%IdA3jo%(j@^^K6-=pC;DEzVY9LPVgGXg{lPqUH=uO&e<| zVs|gLX<*FGUgMUNJ>ksDaHCu&)dH xAjwd!RTFv-BqHE!fb!b%@b z31zJ^Lwg;9ERXwaIE`m#!fhDVmrHq!i^Di9bN8r?VOZfSmM!wUA($cr15^aVheaOM z8n#5Eh4W-Fa`!BgrDQiqT7nTfq-xe`-9|r-0L{0)9rrTu`em^x_$|=e^>4K%6t55H zSDWoF7CYp{kBo;Xv|Zqbi-sQK@dxQ3O}(7pzAullWk>`6KYhxMVOYZ*9kGQftZ~X{ zXQA6bqiqTD`;T0E)!3XHOLlaqY=)_Nb+PH%ti7K)hDeH^DYppb?|g%pn7tuL*qA=L z=A50 z{92?;_{Fce)W1EiXVF=APR&jr=&>+yBlrp6YY5)9`h8s7=l4 z-J;Cl5lA~a>E%P5y)#o_ld$gU1xpb^IT~68Wer&xIg%7-Hdh~4Y-WN+H};ZiCeX0; zv=0ACCW@pR62}aopyQ?B&J~oLiLDV~hgcIen-ZVd@Lu$9aF0|}_sJbI(9!3`+wnb_ zI!v?L8ncZleHl4J6|Ge|p+8=Ov4yqkEHJmTOG%K~)b&$-R3346g8o7o1v1)%{W5(` z^zH>mzrFnfUFU%WID2=uffC-ks|1o0BiH{?TPwPexFK!$)I}J7ihw*439eZN;^TX8 zE{$YcbC2dJ2==hK*Tv5PB`} ==y++%pJoW95EQ{o(?j}d_;Z!%db07(=F*tt211t>rXcC=`}c$ zOuL^F6y#{R#@fQ6t*!cGFJfhnjrzFlJW$ut-*N8BfE5GTDdr!)pVn6+eDkTEG}T~D zqUphhX_lvOWam_JN&vz@k$!VDnB+wLwas*OOueF3O#ubc@je7%+(c*{@ YsV-GDtMzVq?W7rUj6=|KpRyQca5d4W&rc?=K?L{s8=(j>?UkjN4?@1A*N9{Y=2 z UOGc?P1ljH(bv_apX!er4#5RNZTg#f&~@&-}rHU(74D}mbDzBC|toHpjr zY94elI$l6mR)HjkI6#fWgTGZIp0e<1JMmgVRE688pqJ&s+U4#CwaI|{UyjKGc+YA} zDoy$ EA0Y|OP!s*U~=9@s&F(9P<{P+AW*L(YE`4(Z{81yak9>*d0+#Lg_=Tn z+gh;-n=OB$3B1{o<9@Wi+wHy&lJS>wBEHFUIPLnF^{wf@byGrunv3sPz0FOg#?>BL ziV42B!5QdQ_uO$7u7xuHY?}^f?=q?)DDuL%bqbrG#}}A0L1O^4Bw6JM{TMPVy`BK= zlgEw3%bxn_r5w6L#EPZ{z3QOn{RS3pJKI*vXz4-$crqSRnZDvUE33vHQq1T@y`ikM zEDOC<9`qi*1Zm)}+mGo6e8Q`#W5f!V1>fov8xrqmpefhs7W(GK8 =Z#_C1ewY$R$8`e-(GsEP*OMG0!@7b}s?+qnPDJ>6dP*XN-sQ0w<=s4G zRRv`=`46HeHK15Gh``gE4+dlbNT&Ao?lWob`nZ}FzaAC$&TRG}*4~fgZu|e{;ex5x z6XwT;xH{N$;Dn{Yowvw-G(78yi252;xWOmUB_lZ!CKP^(cVKg;FF52EQT3??A@$1< zt3Y+3tyESumXn=k&851IWVq3l){`$mcSOBldCbnb`z!5< zAs2nHC#~dS^4!69dxy#Jo%A=U=MZXu?-RIZO=n0`Gwi0ExH325{jpleM|vvtn@Yoc zX4Yoz&OW35%NdIV&8B)9w#aijaN}7%Wv^`NV<4_OCR8nIzdog6x*t$fPh&rytT&Gg zk#dm~H4b|?Y;+tk9WL48O-Q`NAjO9(ST*;2Uv7ouK`vVIU#K5nfWdK2lc(KRtuIR~ zDnfJsdr=6Vt<9a={4>b8c6k~*TBzBkOlSqckPa#5qGm#@70-Fxg#-v%1B0jAf?U+1 zb(g9fTXZbz$S;teABrgI2IND^8}HV#q#I|>^J(Si)qtdi34}EP`C!ymZ!@{A!e#Yd zQ|jlf#hgS?^&g%1-Wv=E=51t1Qoa=1{<^f}&oKYtAa3vUT#PX#?rH>|dxJvo`0s8p z6+++Yc1|UhIYWz@;3mi44c}Iq$cGz7w)(fKcJ9IS5p&l?@{?oD27P 4z3+*@eN_k N6JN+t#! {O#?3iJVC1k z9)7dcTDiFCGrioqP_RM*nCk{2vQWutNQrd7R5aPDR;;!v^Q7>r4kLbXH+VuvTBf76 zqZF|TGkB@c5<4Vz(pKnC4Iz`KSE_bJ$RJFEp+vaEQNe5k33G5xjL`6BVM%=n&?qA9 zyg0_?;J5-;A5AkXk~)VLh<;`>CUl58{*>%(R7>jS1m0p=s{ZE$^~fie)SZ{nHb##@ z)GgF*z3>}p`dcD*D{vo`&k0#T1?`1>MuKBu!C86v;^u?@89w65OUQZyt%P&iYf2Q# z{)ad3!IlxFH}TF4(&RT^u1mC$`T@ro5vNQZZ^ku`79834NE7wn(&NG|8ZAgIgFGMZ zo5sSjNUJtxDX^7uX>8t^>A~8fI>(D0DO_Pi|MlbR_+!*Q!_I#Wtz$a&V`lgb<7e9B z-jR2W+^5ZBoK0&ja)4+1U(zTyJ1bnlucy(N%H|iG+2gOIL+9`w?jl7K&zn4qKLuYF zL!K(1p>SnWYGWf7NM-#uGuBZsVv)DuAolIc{!ze%_S*jMid4vxO2OSxsC8OKk !zXb+^o2un0`-j=yof_fb|(@*%ttL) z*aC@Trx7UOr{YkViJ8VhG93lZ($Zss-FZP}Z83pkPgr8fY(dv16lPzIhV@kO@h} znMc?&dj?EANWmWUV8FCL(Ln;-d#L{iY5u%Tf(jAZF|!iVx=r-VL0ogw|JCp*@%9Wc z3b}?(XbjTH?TS%VO=?!ED!Qwz$SplZx5;-goQU?z*3KPt-*+#C`Wqjt`k*LS<#8A| zPr@_uz#R2#UlMCiY}HugL;S@dP{u7lxSY?+)#b8@%nB?wKX#N!h`VOKG}syiAvNPu zfr4rB#XNJ%+d S##vljTDS<_;MU6iK76e$t+U2_7Q)y ng!-Fcb5! zNiC=W>U7lqI!bQ&(evwnMd%MMIhk_=1Dxe62y9{9D%_;9s=|6IiXcy_R+Wh;Qyixt z!HSv$3*svX6p1F^8IVLr>+FidznDy|-_OgVYoAWRlQN6V3eNa>bkK_-d!O^agx Hq03p=Zf=6^RS{ N{JY zOwr!oGw1^M>YDg;bk$Utj;>jgmt~agqvMAl+??2np|{Xr>%fN?SE6Eepx+#;g7X%f zsTF$(^0ji KQ#~Bj^9H##;#rwTEE0|ST50M;Sz%HRu zp@yb3tQ(jXn78ORN(zY(!?00TOOr&8Hm8 HCJ)O_clhsgDT&W^CBb0k%wHT%icqu1bo4}m`0oz8b@z--MJ(gsodRj zglYCWKRCYYDe` T9`eoVi<62$PmAv*Y;LN1Toy&V8?wfD w1ig#H0G_Bypo@-#GgtN{d#8DD6h- 21y< zhs>&%%k54MP+SYAEGQS#L!uQ(x5p$qF@)e*9cLB&$;>ZE-|B8Gzc9g3wjngWGh((+ zy=Qgw=Y8gPMK lW;r}QO>1=u7qWiU3alyYnJ9lnpaaRnOk?Ad3xNEQyWVaJD+FHALIPy z^3PuUgil=Q3 WPZi!U!~9v->~>KEUn2n(Z`;DX 0-2&Mskx5(lXMtBc}3vW1Ui=lSi~+wfP9 z thy}ZYwsiS;6j*EU;j*?m&@GG6 zjx#?{I>p5DNKr%$+A@ny&&X_>w9!t!5RG2_y+AiaKDxAU-08P ;1xG=8jC|qf6%jzrf=IJtUKiNJLgDd=&^u7eF;I7Oa?7SZ2 z+KZG*I%4Q@NSh1*axJa|w8h2_JFMwN&auCxjf* @uGX>#f4&rY; zr~>J~zOXe~nV6$5HXE6?QBiNj&K3@>K)qQK7{PCpPBX|yZ}P0ls1`YX0X}L!b-{>@ zzm!`J*8By34Tj<%3ciUa6jF|Ma|?pvVCsc+2wUU}(GK%UwKenFc+ k(cyF2+W@x~>#s9%}RYRI7v^t))i%9?#^YCUvn3%-6@*Q5(;%cD!J zOAhGfz9u_2?N=^Ug2l)~Kc+=5bQ tBU%*b4^Gl07o`G~TaV2V_1#O+Se^O?leu zYjrkVPE=#;i)QH3wr*-Y?q7Wf(Pyl9YM%Ah8yp4hIX7+#ZvQtvcL74JjcGWRiD!Ce zmn(uB-^Z6}DAr5e6g$wRa+)0w;SG8RJfRM{2P7e$=n#Nw_gQ}mGtFK&F49<|%$4um zn`6ERSFQb>oq!8QP_8B0?i`Si$`(>1w^Rbo@}>e(3Dyr|-Al#12ybK00gKMZ_SI z+@FIO9E6>Cq@M-tyj+tmdLh5a>qf5h`;O0f GP+S~ZKgC=iQgtK9BusXDemMjH`c?$93@+8XX zIrO}p?TRpAnS(jbzz{oM<`t6P1a>s;icJ8sef1*!87J`b$@yY(lhH}>K>o eyC^0AY+hrrcbkJo(9?3uD0}J 9Zb8Gr;w z#e48}IhH1kL-pr#5a}=qaI?};*(C_zdWoqh#VKx#p(iTCj81L9`)Br;jd8IYSjY$d z%6&r_{36g)*VT8+Ur~! =qv~Cl%0+&r_H~YX7q7<2XiHnVq z@&=0D?=d#t(7ggNytuF+tJlKs2Il3}+4Wz#m)V-fdE~Sc#jCtM=3&3Up>j>1L>Ydg zI0dZr-O(Qzl%aiMrx`h_yLJnGfP`L>p-4H3GM?mnPf?X(aGgAA5Gwe6)F@=eU@fEr zmI%{Qt`Yl}^4IQH`gKpTl8naj=F5S^u$Q-&KC5bnuN36T?KogjSz}P#uJ*#unBhkb zhfeX;D&xmT@6M;EJujhSqAp#a6I_~ZoL4waxEiC }n?<8dj zpoRgmfZ6p?mb?Q*Hartalfa56B{>oxA~xV?3U|M4L9bt&4qAz+aWZ?n3WrA|X`lv{ zsa0;4N`#_ozv+g5cF_XYLqCaUkwqNgBQU|i_3CmcEg}F{a(Pjb){czaAoWEA=L-)> zNS;^r& 4_|X2&&8k85*7EYPFRG7)Fdm!Vi!Ern^PrHMTg4IUsAYFh5Rq zlaAi0LVUr~Ew}#ZNhm4;k06(n56^ymu{12=-nD}u=^oyE==~5b0d_@PZPw1uj@L9! zqRfNCbA<`8QJ%mmxfb19<9DYfU^-7Pn2xeZd?ffUF(qsudHk;g2X_t%TsPPHHz~ge zPmgHA)Y*1AK(X<<6uov8sn>q*7!nqz%KO^U!JlYWJvv~^Xwssm-2r7-fqgz0yQ#@v z9edB-`_?vXdf(>UE&qg@|Jb_)+eFyC67^X~_M(G0@$L|_ot|kU!`|bZ3Y`3(v QgLAJLr&nZYdBvf^8$sXcHgm>;N|s6E0!k{)QK0A zo0Mr>qEt5%_`ETre{Faxbb``nu?)?5R#uWCcVWRVf{8`MMn3AHNce}*4kBig+%W9Y zpO>0ufP2+K-zs8bZScZ!hc0-7)3@?iT#9|)bsM}X;rNcQE*wNS)R;;(kawvp*9XXq zeMVNq(Dadth1sv4Ppi5S#-AZ;F(>}jH^k6fJ>h?{#n?QpXskVu{hj^;JuiqAmDx$N zk0UwgWd+-jk_s1Xg3u%_4O#KR$qppVY5laE&=Fphl0B;p1}%!D#i}7lm!%)fhkmnP zjpl+(`Y4L3bo5m=i)#Vmc!MyOcgy>azp;$_Z)1^@+rP-w?^=8=1dx{d^_W2S57B7Q z64nYwIFRKLc`yl5?>+&3IdY0G_<(TnLzqNjkz2>_vPyfKYiIo{Ti`u8Jd>XGxY#tw zw4tSbgcS-T%v!aMEK)kgW2`EW=xNCQ+!h*dL|jePZQveXzX!Y~reJ=SN%`RuuKR3A z@@!HIKb}8 VK==zo|t& zHV(~bdYKq-wyk5QZE^|vT%Bk`*{d=)a>jghP4BL)v#kp3={Ki+6w5To#^|(km+VF< z@6u{+L&4v^slAafy_dgx19c55S+>2cpl`JU7FdWP+Bh7R35N|3`jA38Z4xDiec0)G zv9qel^zJniibIl~%vnAldfP^Yalgr=rq`o!VemW-qLbQ(DDKsl4yX7*_3N4}%~zVL z612enL@@Hxv}RP@!6TcYkrnRetHKqUBan_^=f)IuQo{h6HQSLp5O30*8qK*MNUoCN zcC)PzF4v5jthE}_v&3;5vH2wx62RjNb0jPN<*Hl71@cysGP`C-Gm;jyr&fUkVQ~QA z;uH2@oWbZXsC#cf@YRj<3v&3u1Z>9%)RPPfkSv2cmNaUD2IQ7ldE;D ;j9PY?S=#QlWUF zD4=5sXCIj~h#mGr3X-R=EMKorE`wk@uBrl29?*n4layj0UwjWa;LI2r997Z{qvD2` z@0H{zMe#8}8#|hU#vVRj7A3%73_t4%QCpOM+uw9uw%^0k4lHQ{$3-~ar-Tn23KQ|l z23feKr{y&<-Y6?r!k6gpb-ITJwM?m>F4J7s>+KyutpM5-jE~#~=kd1r9V*RUvT;nO z=2){FU9taGY4Wy25)0Csz)-(s#E((7R#o8ZD8U9PJs=KZ@T0})$dc&D 9DN zh`Yg`!5?n}V-GDLXm(H?-PWwCk4boj_+b9<&kwreL7N3(JTsF@ 6as@WwE(mrs%9;?sLS=9Of` zD?N12qSdnT_7NwGNntN+4fFpOo*H50OLYS&&37UO5UXwOgDwsiV6b0pbm$FOH@Rbw z|N9(pG$;I17OxnQiZXY5lB>!wD98;cz74`05k$%@S{`45aHhUu)(bF=-EdR<88(i5 zpQo-(=CK3{wphx;6f%vGhO~|QML;E6gmF;VaW;k;9NGnT3bAhtHM%ZA??Eg~9v}$o z29V _jqze6IVd)eWRw$4_!6dL;qs6{C3MBTkKo!(Oi&$m z{dNzUqnhyYXuKAyuX5=(O_isCw h>R_&%uDs{lxt&%I21ROWt$h$2k1`bN}72N-|^hbC%+&w(>S44uE9B*GlXcPOwO z;*fZGd4DHTzra%$3mtXL)wyafxPTO4#h->ZIGH7ZE-4d{ppGcE`3pF5!{bF>N~71D zK2oeA743%v@TyWo`*#Yb)eV%bKKH%n9X&gmXruw``93(jzyIs`{49nQ=J9CV4IJb2 zr9j6`xm@);<+QqiCPJ|bHhXA;uyQ)A8wn5XyH^7Kk8QkRWL{hsp_RymSns4oyh4^f zDfigYy!HVSx8p(H(-`LBOpGk25IQF_$Cc=k2@UG0VTiisCjgn^0&zGPFrZG z8(IV~vzDYuLTw|2*bE0gAUwh2%5|AL!(3xzOt>T#sA9&Ku1q#p=MH9wiwe(cawZ7h zufH5Kp@?M)AR{IlmMCz1yP~FbcXCNs*5>u>DZ~dsQy;|USuPl0lAdQ>lzx}kp>AEe zFa4J?j{?`0;?<21*hed^-Tmj(>cAB<-O9TmDeH>61UPWK+zBv&N(CigFgdk_?&vK< zEKK!GpI;);NT;T>q>iK|sh%^&cN?#QEojeo087MH+**+0SL;j6ZN$z8yL3wQl9M;a zF$WUZgZhRijGenBpu9AyhkbOwfYr;4$3qQjj#p2BTy5LnmL`==MiMz;f+gpqzE=lj zo@IlAFtJffgv{=#%nb#?0}nB<%=JlA@#1XsGIjzK-#xXm|Enl)EWy+e#o*wdeJf=) z*4Qzy9ZCcY8g%Ljn4?SDh+LosvwZSugaNUYEPw`A3Vc&$v$Wa=n12Fm24U~ssun}$ zOmcU}#Bme=brqX}sp{Wju#E>+XQN3&=ilitEiznKKDJ_4WEs(r>BENhCSd68PN3L| z4fLH5<6FxkBmaN2ivDGYp#(YbO*vL$;K^{`aXQ^hLul4-L0!hS?#9TKy29(wAaiw5 z fQNaNV~r-lHwIe!Rz&*X}yZnD7X+2|uoQih!^Sia># z>DE@4ZE%2uipRQlW{H7;(Lh52$H K|m2l_E}UdPs|8uM2J_vBpNEtD*16wg(g0cF892ng9( zz1EaWK@T4t)n-j+Y||1hmM$AUEQ_hclPv5R7{uvN%w;gr9JUCk56`Bxc?k(}3-~*J zyl6;!UriTOX5Rs`HptaW*T5(24MxcxX`7C{n+Gy6nTTR+0AoF+TZYTobLhzNv7vc* zj}+X) r(u8eebP_zz0$7_MQ z;jjqjoVI%#6YlQ;UUns;5VLou x)A6G$!d!CWRT$0+m%T05ROR5!Y zRrQEeUGP}5>gKgiu*D(`vqI?YJJ}RTy8wi|M;$>(RyVoYyE3jBV;l>x)`NWab(y8> z N0Bjq8PvvQ8rabIHa?rV*)vj#|@P{qFhPg5!=W; z7id+OQ5cJ&jEWJvhgQ0p?OAp$`NuVJ`UpIT4~4HDu(k%2#HWAPg(;=2YrHygvRsgK z&9qt__P85j#fq2G;*E*Gint<|P|>1M4w;ydhTDSN^iQ-p(@FE|LyZL4cq4N&e|2Ws z;YM!rOd(j!2wMRZyIws38 WP3u@30PaGbZ7{tRuQ*oEnx`&|M1Z z<8YXDe{i8VkUqn>6ZkmK1}T||kxZoNN)VsICb|_=-eI%JR;K3O1_k{N#d9(yrim10 zYFcjSk>ZW;p|Na}T(+1bgBssN2OkF0XBc||2QTe-b)?%9%|sVmg4pDS|NboB6BC r;;+}b<(rG{#Z`VpF9Z2O8jB*i z9EonFfXGh=JPM&~y>l$Fn*T|21uI<+EAaPr0`iN*eKofmrBvlLkZf~(@YbQ3w~6Uk z?Z>6Vj@4D(C7B9pYN}r@D *=Polb>IX!VucUx(jP$QrW?yjIog1O7#RvX>}03sqtxHnTiU!WdV`Q zbiR6s!AXXG$hKK)i0HDdUhO;jLuR^!aQ}Vw_=>8cK`97i;C=JRio9a%H7c8tclPkr zVb2W05>mYMA$W}ow#!-xvMO%r@n!r{Xap-)R@>v<=m35QslpOvuZ|Nq%oon}%A)$_ zLb1G%WMg~cxsMxrZ7V4Tk V_`{r`|68ha;m%A%-!wgoOp>mn-(&Q zM U+1A^c%06z+kyz}Jqtsc4vIHNHAtcR<}bN> z evFJ(bFiu)<5$?K$L>sswQ=Wu-dodd3@c?)Dn@9Xv1t)gU8O*dRf~1klDr zT2rTSBnRuwT|~kca~GE&g>^1hE@=+CH9H6)Xv@jA~_clM`xt6Bay>E4j={#YFpxIQs%u4Lf+ zd+gowCWb^fFCq*BXP?d;|I )M+g9{! zS4i+*qfQ?mPUK7Y5B&S1L458ym#N6qWNB3&mBaBl G^CEr1Vrg9v;&p9yizJsxkYGaqmfi30slxyMOUy1IDrf2uU z_paV#ryl>%X_y)Y?30kJA((jbU(&i@qlVNIA0()#@TxQ5yswCtS6R9E(O2~H1us6L z+pX(|)CH)QoxK*plpiu|``Ozvb!{U fCLb(H?=7CL9IA3))!*U-_b z*9fHPG-+jzoC_DCv(W+pZ1H~jMr226@FD3#K1z{uMRW%}ea?eK46>wBGt>o#EDz>& z0VzW@<15iZRDCGmIBO&niCsT`yF`>SD%z;I!waC*ACWaAp2Xk?JUc^w _UN`F#}KPR9a<&*++czL>IQi(laCrP zS%7$74$DFJ|E=Chu??lJReHsL?OH2bR(qqTyg%HWIx=#62ltQ`yW$qH!_5Bd*&6~} z3aP-VFBZ2c_r`;sBIPCLK2Hb4^zNZM;fX~peV{9Pw;2aK-hD%!SoeO;a&v{G&Z*IL z2A5pE{P>SSEOmqYzB!_OG+_#LfZ3 r5F5HF0~-%WS7i&f4&(vQx^j!v<=-G zG24|Edd fui 9}9s<= f_vxo{)VdtMGIkPd8PM0Z-dEVmw6`{g z*?GHd$V7YCnJ0DEFO!am;;&YN2_g$hPf@p(GzT^1IEtMWOSC6K`*i$j2GGeb!+8;t znC_JLmouVO^Q^KFXWqJxNyeTIN4pKc5e+sRmIoG$fJ9th_8^_+?WWr8c+vzV5+dlw zHYm{KGYqK! #vm- {c?WUNg{i9F%Q1O2phnMAH_IFG TJI1%`*C)C zq$Wtz@QT|&(gp1t2X|m 5kJ&wtp`|WWz%@a0o8+GL6shz}B-|k0n;gqVFilesA7M zR`y`Q4AtV-TtkYwFzCTsgZz?3L3kYf3%sB7)>~^EfR||C>_R9i7s(P+C_upy=N9M5 zTvh&3-Ngv7>#b_}q-?U*P`9W7ZF8=td^Yin{!mB!G}5bM5brOJZ%=ObcE+Rf%I9le zr?JdKKR4)>Ti~tnV`u$TT3=o%(ydXWt4DG1&9NOdOLDWYP1c<`;V-tC6kcXAWA$)Z z46)P`WcSHw5?Rzd1Gu!)9?X+Dhjq0p(g>`;oUgQIUsIT&m`TPtVrY3ep8~$Cc?a$+ z*;LIXV)>o$5$shCMGmijnb~GEc9i-k?kF;^xgA&_&-s1-9 u`~!{D5`s;= R#fwEksTNtZ`aJ2zWGNBDYzQdr$07ssb_NJkSl$)Mu&F5(AotaxXI&wTa;w>E2 z(0h>$kW)GCFc=St&LbeRJTruJDYqz_m=zR+oE$RYdFx%`kN0Mx0|`R>{HSbusM0`g zc~U4$7=<5tsfph6{=+W?Cj0i1z<9W`@z%NAOfRrJ;C0pJYTF*l4>IF|Y WA2J^MyOAz;8}%6AwRs8^)%svpMT&~po}!5DT>$O5Krn#7)mX|lkv!{bGY7s%T9 zIgUQ041*$nK-&lxO_9^jn*dB4djc57_4g~>?0Y9b?oIkTgPr93`rEs19Ly3?{4K}z zux~Gp!Z6M+5BZec4zn`ng^uM3muei~o%^mf)P-Kf8-jWQOk(G3rpfk?;Jm4aqRjk` zX>b|!uv$8Ey#sATzB9-NzYk+%=u3e5Bb|g9@G0aB*40ruqJOvz42{b%z0M%_FK}HQ zD9WvD+;5UD!3Guy4twQ;3rg7lH#(4=!kOek`R7mb6P|Uz`9_WtgL^^A8~hL;MC8b2 zIA!Hxh_ZHKlqroLre0~-9i==Nfj-&Kbe%;m09jF_QTxfC9l9+C3oDrL`A8a2;>1br zHPy!t3T(QXlquP#cTl!hj1#kbhq(n0m*M{KElWFZ43XX6v$&w5pNKNlp InobqY?Ra-VlC>Rhxh4=62_iB8Gn)h4hjfKmC S@0qX5c(YNyctp$$MScip6hXV9Tbm8^P>CnifvMK9b7KnG>pLSQl9|h3)Q_+2~?p zD?n2Bz}kY-o$k`xxzp{67 2G&B2$?Q3kv9Ev4S5!gb`}zyBP 8n bEe)E4$FeJd_#{xh=)%|`ct9%ubgui=rR{ T+#doAh9qw@eOn8~YawNa`z zlG^8ZAJHUQiS*T0`|8tI>u+q2Ti-+Sx~;?L_F+gKiDou6FYKV(fCw?2i)3sX&imt^ zCX|OzG}Endh<1<&f%a-<(Fw^TRc3N@)dh;{1aQ7(xEpq^AAeY<;@cn;D2XPEtnsxq z07dq~A=>eio xW0BFDXQ!A2NIHg**x-U&rzycujbY(FZ5X; zFY8mw!Rje6{$qd12PXH;8?6Lm1#WBYCtG3{RvdtDPpuIgf7#%EpaD$prnI?RRK0hr z*MWDNd5w2F&kI|Am3sEuteozDGBT-Ara(TuatOgRLLfxKi-3o%SrM-0s`)^ yMD$KpkahoBHol+yzx!U9w;U_O=>ZOJ3Jt5JnA8sf-? zMO$0t(m4_woE4f&z%o(YES!6;NH}8wevRhC5n|%A2KaZXwVJ T)1W?MW=s|6bxWHOpFR)R zpxcsrK91XM`OhztdPjfsy*arwhG_jv=LbKz;uXJ?=SK4@cg=V5eOTi+zxb8jYj5>1 zC{U `u+@$6#rUjWn=^R~TGjvn literal 0 HcmV?d00001 diff --git a/packages/ui/resources/Lato.css b/packages/ui/resources/Lato.css new file mode 100644 index 0000000000..bb2d4e5934 --- /dev/null +++ b/packages/ui/resources/Lato.css @@ -0,0 +1,16 @@ +/* latin-ext */ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: local('Lato Regular'), local('Lato-Regular'), url(./Lato-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: local('Lato Regular'), local('Lato-Regular'), url(./Lato-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/packages/ui/stories/index.js b/packages/ui/stories/index.js new file mode 100644 index 0000000000..d6d73007a3 --- /dev/null +++ b/packages/ui/stories/index.js @@ -0,0 +1,9 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react'; + +import {Cover} from '@nuclear/ui'; + +storiesOf('Cover', module) + .add('Basic', () => ( + + )); diff --git a/packages/ui/stories/index.stories.js b/packages/ui/stories/index.stories.js new file mode 100644 index 0000000000..3ee87471c5 --- /dev/null +++ b/packages/ui/stories/index.stories.js @@ -0,0 +1,164 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react'; + +import {Cover, Seekbar, QueueItem, Loader} from '..'; +import { formatDuration } from '../lib/utils'; +import './styles.scss'; + +storiesOf('Cover', module) + .add('Basic', () => ( + + )); + +storiesOf('Seekbar', module) + .add('Basic', () => { + return ( + + Seekbars filled to various levels. ++ ); + }); + +storiesOf('QueueItem', module) + .add('Basic', () => { + return ( +
+ 60%: ++
+ 70%: ++
+ 80%: ++
+ 30%: ++
+ 10%: ++
+++ ); + }) + .add('Loading', () => { + return ( +{ + alert('Item selected'); + }} + removeFromQueue={() => { + alert('Item removed from queue'); + }} + /> + ++ ); + }) + .add('Current', () => { + return ( +{ + alert('Item selected'); + }} + removeFromQueue={() => { + alert('Item removed from queue'); + }} + /> + ++ ); + }); + + +storiesOf('Loader', module) + .add('Default', () => { + return ( +{ + alert('Item selected'); + }} + removeFromQueue={() => { + alert('Item removed from queue'); + }} + /> + ++ ); + }) + .add('Circle', () => { + return ( ++ ++ ); + }) + .add('Small', () => { + return ( ++ ++ ); + }); diff --git a/packages/ui/stories/styles.scss b/packages/ui/stories/styles.scss new file mode 100644 index 0000000000..4e3d41cb19 --- /dev/null +++ b/packages/ui/stories/styles.scss @@ -0,0 +1,9 @@ +html, +body, +.sb-main { + height: 100%; + width: 100%; + margin: 0; + box-sizing: border-box; +} + diff --git a/packages/ui/stories/toasts.stories.js b/packages/ui/stories/toasts.stories.js new file mode 100644 index 0000000000..093d5b0957 --- /dev/null +++ b/packages/ui/stories/toasts.stories.js @@ -0,0 +1,135 @@ +import React from 'react'; +import _ from 'lodash'; +import { storiesOf } from '@storybook/react'; + +import {ToastContainer} from '..'; +import './toasts.styles.scss'; + +storiesOf('Toasts', module) + .add('Toast types', () => { + return ( ++ ++ ); + }) + .add('With add/remove button', () => { + class Demo extends React.Component { + constructor(props) { + super(props); + this.state = { + toasts: [] + }; + } + + addToast() { + const newToasts = Object.assign([], this.state.toasts); + newToasts.push({ + title: 'Example toast', + details: 'Example toast description' + }); + this.setState({toasts: newToasts}); + return false; + } + + removeToast() { + const newToasts = Object.assign([], this.state.toasts); + newToasts.shift(); + this.setState({toasts: newToasts}); + return false; + } + + render() { + return ( ++ }, + { + title: 'Error notification', + details: 'Error notification description', + error: true + }, + { + title: 'Warning notification', + details: 'Warning notification description', + warning: true + }, + { + title: 'Example info toast', + details: 'Toast notification description', + icon: , + info: true + }, + { + title: 'Example success toast', + details: 'Toast notification description', + icon: , + success: true + } + ]} + /> + + + ++ ); + } + } + + return+ ; + }) + .add('Clickable toasts', () => { + + return ( + ++ ); + }); diff --git a/packages/ui/stories/toasts.styles.scss b/packages/ui/stories/toasts.styles.scss new file mode 100644 index 0000000000..f9bdc938bf --- /dev/null +++ b/packages/ui/stories/toasts.styles.scss @@ -0,0 +1,17 @@ +.buttons { + position: absolute; + display: flex; + flex-flow: column; + + width: 200px; + z-index: 2; +} + +.toast-button { + background: #44475a; + color: #FAFAFA; + text-decoration: none; + padding: 1em 1.5em; + margin: 1em; + cursor: pointer; +} diff --git a/packages/ui/test/enzyme.cover.test.js b/packages/ui/test/enzyme.cover.test.js new file mode 100644 index 0000000000..0176b423da --- /dev/null +++ b/packages/ui/test/enzyme.cover.test.js @@ -0,0 +1,18 @@ +import test from 'ava'; +import React from 'react'; +import { shallow, configure } from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; + +import './helpers/setup'; +import {Cover} from '..'; + +configure({ adapter: new Adapter() }); + +test('shallow', (t) => { + const wrapper = shallow(alert('You clicked me') + } + ]} + /> + ); + t.is(wrapper.containsMatchingElement( + + ++ ), true); +}); diff --git a/packages/ui/test/helpers/setup.js b/packages/ui/test/helpers/setup.js new file mode 100644 index 0000000000..1bb92e0a17 --- /dev/null +++ b/packages/ui/test/helpers/setup.js @@ -0,0 +1,21 @@ +const { JSDOM } = require('jsdom'); + +const jsdom = new JSDOM(''); +const { window } = jsdom; + +function copyProps(src, target) { + const props = Object.getOwnPropertyNames(src) + .filter(prop => typeof target[prop] === 'undefined') + .reduce((result, prop) => ({ + ...result, + [prop]: Object.getOwnPropertyDescriptor(src, prop) + }), {}); + Object.defineProperties(target, props); +} + +global.window = window; +global.document = window.document; +global.navigator = { + userAgent: 'node.js' +}; +copyProps(window, global);