From 8db9974cd5385186f6ee1e14cd40a04723d17a17 Mon Sep 17 00:00:00 2001 From: Steve Bilogan Date: Fri, 12 Apr 2024 19:58:01 -0400 Subject: [PATCH] docs: update overview and getting started for single project (#1385) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: update overview and getting started for single project * docs: fix xref * docs: pr comments Co-authored-by: Agnès ZITTE <16295702+agneszitte@users.noreply.github.com> * docs: reference esources management docs * docs: fix wizard steps * docs: pr comments Co-authored-by: Agnès ZITTE <16295702+agneszitte@users.noreply.github.com> Co-authored-by: Jérôme Laban * docs: pr comments * docs: pr comments * docs: adjustments * docs: adjust linting errors --------- Co-authored-by: Agnès ZITTE <16295702+agneszitte@users.noreply.github.com> Co-authored-by: Jérôme Laban --- build/.markdownlint.json | 3 +- doc/assets/material-wizard.png | Bin 0 -> 74944 bytes doc/cupertino-getting-started.md | 89 +++++++++++++-------- doc/fluent-getting-started.md | 4 +- doc/material-getting-started.md | 130 ++++++++++++++++++++----------- doc/themes-overview.md | 13 ++-- 6 files changed, 152 insertions(+), 87 deletions(-) create mode 100644 doc/assets/material-wizard.png diff --git a/build/.markdownlint.json b/build/.markdownlint.json index 9731b6ad..372eaa4e 100644 --- a/build/.markdownlint.json +++ b/build/.markdownlint.json @@ -4,5 +4,6 @@ "commands-show-output": false, "no-bare-urls": false, "no-inline-html": false, - "no-duplicate-heading": false + "no-duplicate-heading": false, + "MD051": false } \ No newline at end of file diff --git a/doc/assets/material-wizard.png b/doc/assets/material-wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..55a6fb82859dda2a6e20568f5203e07022965987 GIT binary patch literal 74944 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

`?LQcz(=1WN4LJgNZ})PEm;Z{@O& z-M|cyJFeKZHXq*kRR+gXd1Dste6zf1I_rhvmz`V2F73W^*QxE9l5%SjB%!3W`h| z>dH4^4KB7-5ZE*FC;CfroNisga3qrqCNtv_k)Jkg@w)uay~mIxM6vk#`}6+B?a+r# zzrWbfaJJgLmF>E&ptv)ctdI)1i{z0otTnl^K+KEY=7DX+96glkQ(dgO{zfC!hum9A z;go!wbu5vAt)y{JFhjEznU#kd!Y-E|LFF*YW^)r6q@*>UNq@{@V#-8tP7Y_2kOfHq zldGmUVh0eOo@7)?;6z6Q&ya>pq7C9!7iDbmLH234nr{_ZJb^7OYx(F~HfP;`KY)!@ z&_mRoR9icRQCw}7kMx?H=S*UgkgH@HA7tnno8<(QeMTo`cojgng0meu zeg)Lw7mR{X(omA*s{Rw=z)YQd@bfSj6dx4WPD3y0RNQ$aH(UOBmru!Ts#@dMSKy4) z3(m;KpEDA3H$^)^fmf^2Db2Ip8>1;aI+w&dU&*kRt&$vz{7JvhOUUO&uIBsA#D!j7 z8bQ!-%lR2Yyx^uVpSKaVag)s}vEsr(?KDp64C%D;CYz@?I-k$wkEb@P=p__tH!n$j z!TM0t-VEGy#-v5(Zq83E-Sb^q<<@K1wI|ZEwxBf-E3kkRv-NJ)-r5luQj~~`@X>$L z9DybL$i#21&t&pAJTh6TgS2nWY$8lHes-%+o&wmLub6DIg%pA!Xq*~06fuyIzv=dG z-Y=VFI#miEDW1|9ir#8UzC->Ft@oG_rHhU!-!Ts$vbh~O` zX_wCLx;x)st%POvmiilAB4`0ER|A+*5P&Vaz35_Jbv1!fQ-uq6PeU~$p3cA_Ly(2S zpl_&Ma_VkC!*?MT_3el;q}vHziPB|E?eC7~AmSiwMDZnCnLPns5DEQ}pWWUIqsJSl zAA4NRvu%k>lJ>@wSxZxmFaBca={hDidp1VxfuJMhepZZ}_1NtedV(k^l#CFxdoLRw zW6YFgHyHE{zdN6;(&w=BcheE;9=2;NY*{I0X|fWFZY*odsWLN2Rg9Q;aat*1-VJ{# z;wQ7Y`T_Q+2l?$1@m|*W48bz0=7@O*zc=fuD!12655A`yIj20E|Ta$Sa z)@ZwV?27}hp1`jrV(cv^Pie=tjg>#pc8kvs`kr(0ucYYI3vUq7lsaZz;8fKkBx#!K zDCUnXzqx&0?>YL+34#maIqb}`1#-&0ur~1Nwb3_Y^BC-f4=}NmiP+CM)=P*mTt z6(IXkz4(Vtp$q2)V^$5Ne48YxVW}7?DG8xO>f~z@Icr+ijJOL5onc+*B_4Km@9S7! zgVJT?V$v`#q2?H-&u;u)pAsO^Gx?@a_j>iOGTxZxP(7+M^?kQJE`CcI3Ewc}U^l7| z`P-~tb9~P2)nBX;0~68Gi}4er7%Ge*plZ0Y5?^bAte%SZYcww$9sw3)Tr-?tBgwU* zPlVDJIS2^jTdm%1Y>JxQ+Gvd^>+%&>Rwd;GOUgWRDqiBf zcqFhQI8%x8IWO)GqrRYjdD1~9MyJN~z`>Rw+naxvB*rX$jPxLT9x-no9=AleeI<%{9#;vT{Vpxkm5N#kjH5 z9bI>n|FUrn5nUffEk3>3x6A4pMpb#t#(hJfy`*|0-O|xstMs_C4TlFW;>fLudBQU#q=eAAs`~?doub?jsLs@HqFAT~2NL!n`9Py&nh==z;YY}y} zQP61=C}s%$e>cMR7m^hP4Tzu@5povT5=3zZAAQhUv)5J>HVGx~7i_j&Obp@9;VaK~ zjtg0f&<_gP@gjZPC9hrEJUTYk|HbA=iVp@ElO*!RxS(xjMd2X1vtK?c z_NHP6&6zi@MXD=yYEEp(!FA?cf8{7@2&LBgIh}+AyOg=z4Z~vaBZH@Ow2AInQ*>n) zQ0A&$+;Dd3%i35!iuGDu7-M(FDcbwAqy{yV)BAkzvr~;%e9#Uu%2Io0NVC4Zk)QZM z-<4!;$0f>7_q%3d%`$?^*{p$qG)3fS1oZG<4f1qTxESv#U5!78gh2UDm+AFdtesakdLZ#R6?e)OO()`6i@5@>AYPSN413Ef*_Y<~?_n2ns>pT7FX( zkFef#PR2MY;H%&vYewK9QO2U=UFUQig8Jtiy_dhtm~TmL6Ra!?4p>>cJ4-^(a6`X7 zb5t{CA<-ro!B0`!!Zi97lSTg=V<1?4y=#HYA6uiI3GV3t;2p{gUArwKwNx9Yi1^~t zDvF?^bIPE2+{^DrH&$N{q_K-LvE**8WMl9QMNa{RRQmxp1d`hA%N>nQV)HMtF)rFp zP0x3X-%Qe$Vx~`{y<1zZ}MZ;if*JNFFTR-5DXuRSk%zot1% zX!qX?b6Bn?w5X-)jG+?Y8*5%1k?V|XWLfvfG17?S4O-bru4SpaU z#eQp_Q{wriKRj63ctFJk#w1t92r;4$6hlfc4_uH1@MD8~mIv8cdh@Jqh2$d6h zrjONC6?KA2$({LkB)E3}-m>u+Q4{Xt2n>ZXc*C4`*k%5)_&~SCx25ub(bQtgb zr-5Z4U_dYlMgZx6Vu;`Z#Rd4a{O&xz48+Z4#5E5s%v|K?i>tVi)y1Ck6KeA6gr%3u zOiH_|N>XF!p@GS}4JZhD8a%Z6!^OC5Ca>aQav6nc&%V5x@HY)w_EQWM+@OSnUf+BY z32Yr+jgNPzb;KTjQY>}bDMl^kEejr+}%zTqunfR{qLP+A(Xs zI2^x2nnlv(*AC?->3e`#MuA+2V^6kYaW>0jgC5F|wRe~Q{oTpzi8o4m~U0UDQ8?ze(VPXdWBqMc#c7s_B z*MngK!IT$bW3^(_gY?+A5(*U1AZJ< zQw3zS&^!y~?jB4hBE5kryWxG^p74|z^y`T6pKpEMdI(KaOA6Ck)JcOgq>TuBTtG3% z3c77yzfIefy#387r&xOdCIw9R)};}^2I6Cpoh05&r2|Zm!NySR9@0go1@KwI@;i?W zzU|9zb>G3jj=?aLn4z5_KYV>yB654pvo8K;<_OEY`p^;rKu}7ycV`Hl^M8SD0({ZG z>gSu}z!sTSJ85NhUdd;227shf#xJo{4;7vHFOnvom%z3>cv&cA#v?;*+tLhepj6E2 z$x@Qd6Nz?DJ8lQ@t`ctJ$FX~}MD9$(pbMa_pg@QJQd=v<4BgY0cJ^pv+DC47$uC5Q zkw{&~8fYYO&bR~F*~$Pf@`tSOM%H6C!#&isXaQF4tx#Dj|gmNFfijjV-1?i zn6LZy`tfWr z5h17{!gX=q4(Q)d`J(cKJJt+>Z}w{Jutt?Na3ZrQ4vc>aGlJfsoj(}Ps0*ziA+X&JdaK!0OI8`>F&FKjG@NRUb|BL7z;l`XBY_qL zH=R;0pm#(WS4f9AU3{Rc{MDuyZ~RMo>T-Su?qtq=3?&dlU;|ClCVL3w^P}j%Lz!T} zluQUOtUzoRHF8ClOoT($r8^WuNB^SqXU%SWf|px#Z-$i4(n*nTb@uj*4tiYp0G&;_ zP~R5svFr?#z+jowDv+hEKR+}bhCDp^q67FvJngI8EKk~;j~NAxX6?Y|7zg~T}O0UnYhp8DFHH42$3Q=U_P%2^7Lzq$$14quX;sNRL1 zSY|`mIAuJ?i;*jB0ZHQzVcp7gih77D zdmFMpdRIndeZj7rIsQ_&IsV;FYqWa&pYQtY1JO9t6?rwKy)l$a2oD*^cblh`joFQv z#(~l2QWhu z%YO^sU>zO`wXTV*9xz+dg|s?Yi$fvbA>u>yi!do7Sq$%!Qn0L@X&fu{;`sHiv`5c}*Y0B0DGD2?QLTsRr0=-&xF1MfQ5Wweah9XpdL(X%^UD8V$ zr99?(b!22@c*>`iBFo&t7;!x?=&{!Z7MgFL_N@+*lG#G%v$cXxK)sI5^7d}%HnvxM zq!22;z0vfxyN-boqWf_#($nQ`Y$`IDrv{O0IE*vMH@z=})8@$QfqqvARIaR0{Y?75>pM?3b7iR^OJA!}zU(*=>>yYFsv4xgMJ0CERq~?$G z!@Bi9N{|E{fzIPmsjSw`J|467Smj&RM;FE*h`33f8DIDC9#^8pBTm?o?+`cn2X! zdY%K_SZGnF*$#nnLyHfl8V=gJw7s8f!d=U5o~RzqWECFd!1gZA#ZcBDQL2EXH|Zu(BPm%(D}S?69V9=n-Iij0v`T<(0WhYG?_3Z-LW(WX~yQ zcB#wO2VbRa>c)nf-Q?ukyZO}#@8m;>JE9F-yt+3<5)oe0{6^sWHDiEXG^!`Bs~;vGKQ^3P><<53*6cz5@A4_1##>wVe^euX?tV7l zj2gXj=js3}hzEA*Qh^B!Y&48V?j?drld-$xWq-a^X~;a|nwTK3Q*$;?c{Izv?L2Tb zb8w-Zp(}g1pj0hbx*I+2OX3BkYX_pz*#UojBALmi+1ym%zMJ#|SW)^MGq)iwAS2$O z7YKPA?DApla7>cgE$b@-NU&#t0w(@|ou=RKFOE<9f%1rU+VVQVpuo+JAACVFucSXgV!9mR>WrOOop0yX{Q zo#=E>3Qo-S_9d4nj}Mp6tnOjoFJ1tn5oa5xZrOWFpLnVb3VIe8RQjM>G*NU-`>I|$ zSj=s)pbYJGhYeeDJF1T5OgmuBmfKRu2=%DHA7`> z&Y-`E2}!!gx|9~@V({l~xAL(?&A$Qm!TJ%ZiECI`j_wEQPQt4nM)Sb}KP#;1s z3ly?G+Fp28jaWg>Lx)WkMs^Ral-7uOx(X>L(RN7NbB?i-;nre?yR;_`$N?7F{s@xG zR^|BR_*;KsCvluMaF699*XPy3*XBxqG;23m)1q$~leBpXY^Kw_DXu_xqAJdzjtFjwJ~AU7~MRx0~Pt|52svjiU1 zjbfLSk0a;5%J}S$sNbB0YO;wzHJAfAfm+?@9+`iDSm4`fa=GWD&A(qCw;KGqSx*Au zig}W06%j#1^I7Qdw5u|Qr7n@B42>Y|Ml!oD$uH;uk)hgd?i6R3x>aLXUG3O0^Gw}- z^5)&b56Gf(A3_Dy?g*-5cB2g1LV5(LUtTLY_BuYXm|~>ycYu%f(TuF2Eg5Mwiwt-g z#uAw0(hdWak}wy{;IxNyAk+QDt5qE?8Y)fQ5uGGT!9Nh_MBd=XeP{Ug)L3}SKk5bu zr7DO|nOyS^iL%$Xt~CDz&sPLDv4l9|QAqWW&2^0Nr(564jXRuqc@u{WW>W z+AcHl7Oh@wf(k9j$mbowSmF+UqwE3AS4O>Yb#o%}hj{gMGUc3x(s4B9^ec|&l3|k<5z3ZNAb=<2KSzC1WRuU*#d><)E4}kKT7TUB8 z9$3Q|_=Ya6efQTtc3tTECH@xTk1iD<2-G5UYaQm6IxZ@^16_`CU(Pc?ER81?tGv7> zWFx*sPYd#u!$2{L;?+gJB6g8KIOOmpe^i3%*{cGE#d>xZn4Xl;!vYd|DCH;feL#e^ zIdsm#mgBJ?o39fcu4>u*Ag3z~@^H4-TS5yi7p}AR@WuTZ&+YG#?2cPA3PRO@-RI_;gdwaU+_@q1i~?_@Ysf-l{Kf+(=+x=R6Pxp+ahr*~Dn-Ww(0TBH7lxZ` zTdHAP%ViJmkpYXiVglCZj7))0(V~R~#ji>Ndc&fa*miYEH^9=UxkFR`7ngB}fBs1{ zs?A7g(Qe%H&=<7n0fcJ6PGJbV6c%tp!?c5_;fC}Q-z@xVF4PUyes$gRmI58jz-?4T zm@eVgZmyxU*?ms5utF#1;L=bWJeUMS%DNF?M+sM^c6Tf?3jF5-GPTv|-#=I{$*#6v zb|M!=*CRYYo15~Uq8a15FR0=2%(%&VEIWdVJ#P$u_4}g960HIhJXABdBAoz?GWEW(Q z9e;eh!<{g*53|RSeg&rVgQyi;9cFX9#5gGs6AZk#L0zbEecvHnEI41qH5Y1qFUpUb zWJouC4p5kSZmL)8sR%ZaCwgFA{-!y3VNxyH?ruEa(AiU==NnrFwH;-i8YojO`}+Uvbsjzt#+NlWWW{0sYz{L7l*Y5P4LDg$fTJm2lYX9qZ4qIL*VqG z@(+;R71a^D5LrvOsd~tTvVv`ya7=r2FEg-faXY1~gIma8wqLfkH)>hus!J2DAZF&Z z|MoiZ$1RZ~;RF4lTBsTXoo98ER~_DLMpIJ->A_uHQ?{a2qWLIU#Tkb-t1$m%H;jFA z@gp5`@9tS5Q-Ncf5+U#uI28JOTrJ}csO)bZ2+nB<7<_S95%luIt1pLT(o#RhM-vbk z62M#JNpmsNYnPA5`#o@5@#D3kJlhW zDZi*^{}-_qa@SNhD&Xa*)6}w)v+s9mm6fdli^V^=|A)mQ*V-7Z$&?lzjLqJS&X!es zSf-q!&un~1eXeo>95sM2-S z1hfb^JWpJB{F(Mcv^lOQ8#SvTK8S+u9(ZIRtM&go_AuLQl1K+!hv>LakJKL~B}#nX z=`S(f1`|Q9qQ91nu<_mVoBoOY7hS3YD6rRLS3c0D?qt$Qq>S)|?`*Igig<4NN9@mQ zN1et6Oy0d1x2qbE4&7>?UUGDQZQKr|128)e(u1)djtTwHU>XExrZg?K_r&(z*C0{) zZ)`@d=YSwWsK6{^s(>)(cbAhN3Jo|n{>Eu=ZPS)*uft9pkpH)j{Sr7`(JXK$n4tSq z9L(RJ>jV?SHPV4JMxZ!S!%v^anhl2oR5zaqGAo^c8aW-{nn)-}j$nfj30tfW%|To! zX5rx$5uAIcp8`;ngn{7^G$OE5T-90bv1)NRYcWTfEJzNK#(GQdX*^=^` zXR-j%hWdS#F8cywT6 zcfFS%U4L~%*#45q7;jAlQ{M%>pS@2=_CM$Bark1ZR*)dfYHC_G5vUEZ4*Aod;VBpE zM$MG%Sq7Pdb=mR-@j}W_Mct75<^SljTm{wJcn**sPO0tvl6w+!b2UaxW}8XW(v?4` z=Wd%?Wjv?LM7>UVZrJD{RB5`q&^-7Kw8feX^&bCRWp)rso@#ED6B9^3 z1Ui&f;%TSEx}zT=NP$ZEsfd{PP^P@TMMC#i?8#C*sF+wFWUKsZJeWw^a&r<YE+bNB(C@zQ2X^hJf_3-JJLDLX0{s^%0^6%jk;vydnTywF?$A=*9PF^bH;;^@B6o zSEKj>xYT2*BEZs+ya?{Jza6i?Zmf+gN%RL}VDKYub%}Lgd=_Ojvyi<;g)u=~r~&|8 zjtR+b`FE*bRhsnRmW6!-!J+MtT!}a*nvdB*d-+~>d|_4ubq1*6ux9dY%K+2`+VIid z;>Y1VMV3C$5;67qj%qCB>*n(_wIdEGVe&Qs`=JLq{D7)+xCWxmQ7+{mmZ!$lwz(lM zH*fB;{4*wcNvX(0V3d`L!oAMQQoKRV_}{ROecdS_&wc*Wf27|3^k6M+1uxdqPXBU= zyi7N9_o9czgwu3j4;8Ozf`o|n>Hf;&f3AL^1A-Jba9x9;zW|82uB3I;F8^GlRn;@S z4%-stClTYkU;uRJ2L@cNMx1pK9OB$wn!9mAwe{$?T)*2uQSf$FAzZ{Gr?&Roo6WLE ziCcvJDBN$J_lk3KAFaE8s$e1Jzr&g?kl zHeLHh_y7%Dp#P+#-c||%k#J=r7+|N~p1OI`^xv#Ux^m(8!S@G}niBu(MFTR=9qayh zcte}80{H-D`&yMtT{B;M@0r}Z>s$GAyQ!*(&)d`19Hh)Mm6XZw~5d5MXusX;W;wZj|71KX5&zZ!yl+J#2MxXvndd zgv;c%93DGfn*}1`v{rT-%$zJO=Cucb7+fH))PJ+3D_x(t_H&D&lOZ^jRS!--W2JmH zc1Ur0TU*q@4sj{X;Eivi1i?7(Y`%%Se5;?kR)X3JlgSI(hp(wJt=At|d+vIhrlDvF z8L9T9+-y~Fk8eL0)pYDn<}LxTED9v3K0ZDtg|pSh7z`1sK-VSLx*)z!VB~vS1F3uc z!rjIorFGrn;*{0#dXSRQsyYAkTU%R=OY1vff5Ry&$eOjABwR64XZ2sA)>Qvrl?HHA zX6}gFJD}xyuixbAy#Z;$M{oMB+o|bRCeZLLftRv6c|cN;IoE>0maDMj#{05O^x4{>&W0*lpfg33Zj6KDTLHwE~ zUF(|TL|9BVKtj&>0HK@yNT(uSSkM3l!W~hJ z^v%!-{s<-*xExkQoa@W+Ff$lAi&Z443$uXPz8*x#4oFV?ZV=351leJ;bU1rwZ~i>Iy;I3hJU!}#b&!!?e_%ODdM8rk zL88<1u48b4nW>(NRI_gFL6z_w33>A3GX(ck=!?PHuUuZ;qEa;Q_`Y%SZHb-RXBONr5 zo#)*VfTRRdaI`Cy>H~)x)MYeeENTH3YK{#zg=Ip+JLgoRt1}C0x<~x&t3^|OZvSaLv6N+#AS{7I7o_C0MEkX z^r1puxK?8R&HE4nhdiR;h7eey=9{znfUqurymXnhqCpTypS`UU1b!&^bz(Mcz5$d{Zw{6uDcwKHf z$Nai~90@7H;W4m?ZwKS>QD|fe)rz z-vDU?l3F|CAFoxX8&4aUh_OHz0rcq#NQ|tjIQA=Rg^JM1(ov=h!bMZ#jTaz?$^zvT z+SRQ}q1>+1rQMqR3lEJ4G-i`Nc=Id&v3oX?G|5rX&ZH+b5!q3_?NH0u_BZ9IotRLOIf#yfn68hL27epp&eo39IJ%RM*P=Y?6s>>D@0y%1lF|$3 zYA@%&p`ojtsC9j><^>4PbHK`pKdH92=m$Z~r3e|}O}i_w>K2cb=3n-y4;yHGaZvqb zaNP8}kpfI8=F`w~FMoehf#y9BLK@uL)MdE-Y0$Lykj`g;x{O6X)#9^$Kz2d;=YJ&) z81ohnt?~!4S|ZLdv+%0KGJCo2a}sUwGnjiJOIj6)dW@x1A4ETHkB%#LfAI5+LrJS6 zOB1K6h*$4z$gYnx2J8Y3@`*N+=FZTyW<+(yZk(5Kp97@ zS>{-$qd(A&QDn_9e!?8zEa_vNMCRWF0eu zVaAy4KBqpP$M5^SANL>kZ~l1y(Yvmh>zZrM>wLXl$MHO{JcRd8!d~y0(&Bb^knz5> zTGiga)(o;FVNrW7*QA7L0*u zZUB2W63EJe!y$}vaT5}QFbiuibNL8~^omH~tm1h(VP|CUU8vMD+1&rpA4;^#S+?#o zfWlgsV*Ru`NA^dNVVwkk=cqHb?UdA4^2KpucJW?DIA7WIbE_r}qmzEVb6#>Dh{-h6 z3YD8C)lm9CmK$zu^E*z~n)V?!9F7X0sfvgB16*w%q*cpzb= zDWz7Cq=hJ-+8bx?Sj6>`BB|M@*V#xXIdulD`2Ou1$xPfvT#|Zjvd?(S z7qUIDlX2kQDn&f?LxCAw3MUiMN?)_PVwgnADWnz3eCaef`-bYhR``^c?ap!FN&;5A zp_c&<*NlwT)~2<4n(FhD@ql3vSAa%PC>}R+##cD3Y)wxyS*hHaJ*HTmA!owhVE3Y^-xcC*{JuCHZdd3MR$Jeg=Y80BC~wOJ z2@jQgy3T&*xBzHMNiPoqVGi{;>?x{5ypZ9nFl`X^mO5YOKozYl^UD-kI(Zpy#1!T9HJ1)!Q@S#pML|C zcS(cl!zzs;i`q+}azuo;%1fA0I|%ShZb27K2 z?0HP)Q|I)3otMjoFtmn8IG+7^Ck15XxcvB28OBW` zf5nD>y{xPo@Bh!R^YH(5iTxe;FCPOWzk z*d~HU-3bgdxs%KL z)JFDT)>Z{(HWdp!kiG-V#;z$xkJW!ZQv5rU6UtrNndU;=i3=&M}0M82q}Z zdAm9Uf{Cq)UCg7`zYYPLiV|T2JQ;2aYInuZolTnqY|;P74Cij1U05$1lRPpaopmI@ zsECIL$SDtvu;1D9_qu&QZYTzqA|930J(&E_cXg~kw(aZ|Oj${3G*)`xzd8yQ79tgF9B5m%ygjb@ry;ZNkh`#U29pq-b=+rzkqw&waBH7EsI4WiT~24Fz_gHo z^P~cH1G#bY#8Q# zhqZ9<*E=&C{l;uLsdNJ4k)ti*v~0+)6onoJk)RY&hvFkphUVA7krFw;PfMTDE*ECI zn|sMxxr+oiw+^NaBpf(W)nf`5b?{JFbsG=lm&l3rnt{cfWzb6>#n&w|Im~kr+Hykf zq9NNDK$;&WvkoW74i0y($GTwzw4KriR+iTbjij%-1_lVp5JP-nNiRfU+YjB%?2HD} z)q>-SHcFn*N#hu+ozb3_EX9~mizjDSL_=w1^FX4@(bmV4?B>_;DbIXSH*FO}WFUK~ z-UkK)oj-M?_YoVtk^Vgj`9EQep>Ou(w#CP)F~{`X!x|;i1Ijl~1j$^1k6xTmy-v9G zXq7^x1l;`Ccb--si7d!mJQ}PT9m@0t#_HD1#w$zLmIF|_M25mE#`rw{bSx+1-G$Vq~&lu96YQ6d5F-=d=8pRMlHuv)i&0$ zNFP!etEAz2BWd6|VIUb`08|MyjkQm-P6pNtx#{ArI?%qFU+|^IMw+p4T ze{i2DGSO4wR$)DY*ClT^r0kD=id+wmnW*g3K(2!>n@nh&R1U*uMpY@)RK8e{Ept>V zgb`H2q%9hl?|CXfnZAj?5fLVXuP3^z(BD*87;wrAV&P=*sdjF;>g6BMn#tMZjNmCa zpnE6#>Vg(}3-mH=K-P6Kop z`yG!K)Dp*`v=38uxW$w%B7HPQZrm=5$;--adce}!>ZhQP(qrel(t`2Vz$F6@?}#b~ z5NmIj0jvKF`a16Xi3%2h^US*6$IYcwT!zGRh9~6ew{MuZsM8W-CNEa5#)oY;q48<{ zd39xPLY8JOEqZPZo1lO=&K)S*EJ|-pn%AyXIPGV0EH-%m_NFy6saaLdgAOsJg4#2x zBn3lH<5TgWt1>l=cAN^$Y_-9o`BMC_cZO=fcdqwM9Z}p7jpsDKwX7OqzzL;dtuvs2AZ=W#h+!;TN4A_S_1+c&_8L}29ehsT7Mb!XbJp;pRKqfg99W&FYC{GMclE<=t zzZkKXLpzgOd5ukpG27$Ry9?PYF>4L_>DK%_hO=q=j3P#FB{RuP{COfu`hN4~Mof!E z?>QP)?E1Fv?=qiVH*z*@T?QT`Of>~Jloc*e1^Mf{z7T;9CtnXN@6I}3^=9ip%UT)cK9R#)uc{%hk_4>yxf-25}yzE?N|@5zBe@ITW&1y(gS1=$K!wmrn1D5AFMH&59gK-SmnNb{kr< z>2`1tMc6M740yYK5-RQ!;r>H$?J>4AS$xXHOuttmv+90#nkKXB}tSYS!C-R%FF@rAerHruP*Y2FO}I2`m-;g z`$zqt;0N^VCwNk1SIxz%jQG0crelpz#nruq)uEt+GJG$|36oV%DhS1%kosDjFX?Uc z(j*NKdM(yHb{WO$9G(a?jJ88t+ zqhX6t2Q+eeVT=@G&VZF$h+KZ<+5U?|3F$#i*43-j0pg*IcPMz#Vn|v{GS)YmKY30q z<53WEI67_WD3bxa@4eLyTY@S~r9}?&v$y#beeg46GX+kUhH7w`uRj4O2|1>79rY_q zpu~!P*dl~|nPjQSs-g$ugVoekoib20as7`9ioaQLHmP5idguh(Oo+5tE<%+TK`UA_ z3K5YikBVe{{c@#nTt29p8ze-64L|;+n#fiF-s5Oqr}H)*O_&ILsht^`6quy%Dzvr1 zC^FFH9=Yu-q$b-4pO~-^0?3vp=~?c=d5NCI)`H{4kCE0*Yenx()hb3gFvNx%^$-)t zHflEz_hua+0_Y-#4Xe+A%|W-kY!6m1+oS=Ejx!qkH1A=;`dtl%5AZ2-DrB7_T50uF zG^VihYrbdyN2Bi*?7@fv$FJo<$1%X0ndFg9dcUNFDLo)pD&*04daUp%48n?-z=27( z`zMUaqHG!zNJfh3inz%Q`@91JtW&$vC41F~a@O(N_nrp;?$Cw5V9bxh@`& zkn*jivOL$Ym_P5GJZ2Ow{%2$c0g$}qOm&9e2*{aXi!S)L1<{Q^LeW$IwA@-#Xewnd z6%r>v%r+;plw)2-X+Zbp4iU5pn=?`YAR)Kz*|Q~Qaxd!VnGpGZo&Ja5+O7Ss(KHSK zM;6nhkOE4Ig6l+WuCA(csZiJ&gVX)nfV)wHsDevnQ3u>vuJOKIZ{%`o8w(v|=4-8{ z?P~h*UOQc}Z~z9HfXM|Y_FQAw{oyEQtPOig{s)S!Wf8dPgT>> zx|v+i8_4ZPtKPBDzUlbOATZ=fbxbG%Tx+&xKeC~Y{_3hluS1|~R6#*CFcBb zC7^5Q_o81i(&6uw?s{FA&qAAT^durmHDyg}QoyDVm z428itx_6Y;S2dbNgAabSwOLmAM?DJ_URLQb?6wbL&HAXMnN zFem#frI5|v5$;We71$fkTSGqSQ@->fNS8rA!elvM_)NxD-4Er6O4+~d31~V;Cm&IV z6<5~oQXh)41*M~O(J>-$=xl#r?GftlYfGvMaN-c6HC>RX=YQXqD`zoNUa#OU^3Bi^ z#Sxfv(DlI=!~Io3c_rLQX4DvVV7#h5P|sDTemHpY2Klt{miJ4aq%YJ$x*#?@oB*w3 z3D>sEIvF$f2z(Bqk4%p4dbq#tg-SlL>5<%{wF04-*0AlX`lbf#9PSD?_d$4YS_oEZ zfn;k&q^$k6T~9$C?PsiSi`XxS(%<+Fsu>IV2)=GsGQ)%6FZz#PQdXuEbu~tT_r#^BDA$q*Km^niu5BAy%dR*dl*Ow zbe|~vETT^&W@7(#ajT?d!W+Zu@3plJ*BRYg)lO;48H?s3o54?8WLgLq3G-O*S&Q%o z)5_YF?fR>pa~Vu~R%;tY6$Sx#&yLL zSK*({rTx zqZtC&C)?Z|nmwyMan*v}Bukn5*4YA{THjhC~wy2H=37(RH)VooEC z(0#gv^~}G%@~ENU2WT1|{&g#sS}*^R{q2PTu`cO1QZy;U6+cJBO0BY?f!0&Rp_*iA zO%w9eMpD0*p-ageD<;}sm4nQpZsECQFKx&Dac{tJ*RUwIMSG?q=YU#wBzCx=Dd^eg z7kc|tc*!M%p@lGxlKw}<7yqZD1|y<|u#&^TFg;MdVp;g;UGxv^d)X=PVFb<9D(wL4 z%XfOjqEPyO;N$Riu!CSg(^<}|r%g8m+9cgXKD%|m60M#3fqwc)wSi81pLE|w3L>pZmK#0PR4 z5pmb*D^0+}`hgH-B;jrGmf#KDH= z|1Gj zl{pVboiL9gLmF@#k70P+TxwvI{e9yyo%m(UP*REOPVAk457+W)eCFh>H%fe^j7-L4 z1rT-3XNo~Iz0i33Oj^0y#Fqv4!0nG8$WG<$cAydP9RhloUW?D|js7)i(qR9(GWqIB zKc#D>or-+uG_~prYCI;z84Y4)LDsxDEgWIj5cfa1fqow268a?(z(&Ur!sQ^^?&s~j z*0-zx0U&59%W^*926WXZrKFRhxXxA>|F`S%gAy{SqypFf{$<~#0TaP;^}(%J0`pyI5q&cF22Ib1Xyb)hdasn7g;T;Z@^ghSA3$Kc{}c;Ga!4^BuSg>)y@RXuDR-X zOWB*R4xaZr$KNlYj#0J_fR4CN2?xm#!Q*fyRJYEc~qb>l$7Dg9yq(stxybU)JFJ zY*GnZ>|M){1#rBwnakFfSvDIX2-q39hXBjiI50&*S^l;ugYVWXDB3pH=K5!#UH2M| z6;kSBu{{5KB;l&SY(tLNSao96I2al73TB}gA_|I9zRmN==BohTQ_51+@8vNQ+%s`scamfN#BDDUEl-TAfaflHk%aL^pc%|*V6Go!a)K~YoSMo~RZo@&93vUA6VMYyg>+zHn9toc zbddFryZidMf$X5*|NL|Hmm9!=j$-*nQQtd_Q-MT#k>w&R84Wz7B@&o@fU(}%*a}0Y zt6AP{EF1&J)8G_7_KoAgQI;s-rT($M5(R}$|1Uv?PfOU~wg6dLlGOm>*u);WRtKy< z=HFnMxj}DJMi}2n)a75Bt6R#9vG{keP&WdZtuT_+{<3%2KpqjSL2Yxdsok(+9gh|K z+(h$|^6f$Yc+8$@D6LH*_bircuER%{APS)v;I|1b=3CTji1 z6BMrcRu`z!wvO@hqnQkH6&-j5O1PY0fPlIVD%BFfm1?w`UGw(5oJ+B?oQ6ojxk-dp z6)0=3$bv|X0yDtz8`{{|aN9t?!@Y}#l;vnAOPo~KM6X}gY$-yaF}VP?+WGF#*2(#G3Ba z3I&IE%}S}IL#yo`zdCL|9U~@`Enp}utHiD#Xyj%KaFh$~1-<9r=P2A&L&-JDXQRpt zGxJ05+O2%UVrfnfOq_s*?<3PaZG0o#$%%RG(g-bl*ug_<#8u^xsH~ECP2F7u{bS$~ zI-LOb@%5}f!NbOp7F9VqrEt$q%jNqmv{*u>Mw8UBH3;LH;L?6#0a!oTt{eo5{+EYE z-%OzItG;%v_RIAmOkDxqHtjW9x6T2Czb6+fHEhg1Hh*~d+x4F_!F$-Y{#pf(l-s9` zS6$9BTFRhhj4Ss3B1Mgamy~}ySP_cS$`hqGj^#2RJzmt6E9WtJugMR>J)VLk?F!e+ zc2<;aIV)cBGP7a|gy57IzhY@({9)z&4l?m4+3wh3z*~lI%orvQ^^nkeK#H5n%MYd6~iUY4<)JQl7qLg@}sdEBbZU!OtG z{GA(OZYbTxO4^Fq%?kK91dYKR~&u zl9E=QHU2j3S06oRyuBeMt+`?xUjK0m)A7xY=(L7uu=EiXKc0LDcPn8W>v$Z!n)Cup z8GpV@)__s;dRPLJkvapDV8@k)mVqCiy>?9TUUaJHi3{V2BhErla|7jO6pH^@xiR1S zT79Cef#M^EL!k*SWccN5a3UJ}ID$`E(kf5G zqWF{gn#+ED8#Q)tWVX85a8_7XzfS%Zw&7j*1Gd8BaA5Rf)h|V?z&QR#pTkXYwA3#> z2I5TlWb*US(1h_r3G$*qq{ntjCxX@$DN?QAD%LFMVgrh8Qnw@sY3K#MZ?-cv^FsIB zm>)*!^obzC3fE>}Hb&o_f`SQ`f3u5uV^g&93B*UUWL5|8mVj}>N@A%l*X74tfV$Snhqw=*x4=lJi%>KCBGUTwHyz7p-6rVMSa+bxX z+kp$FjSekJp?lX{Y5q}FjB)WnYz6ogrvX`&NfKf>KSbz?SCh(!mt_TX!C40P3|DTE zM2(KAg&)^Pr((3wt({qinRy}(Y33hg%nX*4;Re@D;H35ZpN;pHl=hB?JcN~1xwNE$0T3U)~kj8PmEA@|yTAX9{bUBZE6LnKS418-*Bmaq8);KHgb6_ImQ zuo14AvS1#e@DRb(lcE`%9GHz8_&zuXCSgjVX-36NSJ_7+124}uMP z_|uz*-mWU%Vkb8r=e&F|B#OzzP3~_rA~Klk9?pJZvx-;G-*i$ubL{7R{n~{~XKtPy zo%i4#z4Zb%;p%j_`QQ_T(-B!-zDwC+Hy^$qh)=xdoyLTPl6LST>sFeYXRK~>Y#fzD;DP1~56ZRU06^L;;vT%>tajmL zx^GaUgCKF1_qug3Zp%Hg-gi=Als2j0oCy82YrRF4+PSHlrdV z^D1+ecj1N<{hQ?=MQCAXidwB)*8VqnqJ%{%p6 z*U1S{cb0#Cyq<33`}<4qHwnbmU7n5a^zbeUR6qi-l5Zb(&Ali$1)SRsb6~5|WhuP> zkAV2YV#b&kynfL-V8k-WIm71OF%Ay(E}+;#*tqnoUfww`-DN}Hvw2Llk=XagrsU2- zFto+NwGDPRW~GE~eb1Or52{kNGIfh;-brh5a^$H46eNF5=WcFMAxaPU&)Ue&4PHAgW4TH)L*PYIQ zznH7L8!%6& zhZP|*W`9bW@wZ3q$r5EZp3UxqqaC>~m?k3O7ZVO{E@V1A^L#q!qA0sxf4;zo^Ci1@ z!_ZUH;i5-UYE{wE54^*$Zw@8%dd}j9FGPi@j7gri4p|rhynz|8{kDf|KPKk(mf7TH zo7z5!om!$3XWQtYeE7QP_%&u{2jB2R zE#I;!Lcw{*X@$WtE7eQvcfhu7a1LF`|LR%B)@6x&y_fZ-fd=GTmxP;!?3kAK#^lu> zn=O4>%l>)vvv@EyoawXU*jMlN}F{Azn9b8RB5tz4QxA-1HZ0LZ+4Ppq?`6vuVteKr9-J*%cmYJIv>H%63E`7 zbj)!wjVE>Txr)hMupL*Ml(Xb-On7>Wb@PsQMO}x{w)Y?3^R5FQ;e?9Jazqk~2Wv7j zkJfnxg1lUF@K5OI7f6s;i23_Uc3$44KUv!cS1Jp(oc6M!f>mWx}6Pbgv zGG0>p%afktBz4mUCFjS^>mMwhmihX9$k(EJN?eCQ`&*lan&~7JMfZuT8R?Olmkuky zdi~B(G8EapFfGC%P}O~p0vu>lDhthNFB7JlOx1CrIU)IGRfSkjKpWhv(N$YEH;HD3 zc7`X|zv_O6@ty04kEe&ml~hCk#bBc2i}yL!M}}bUE@7T(E#}J3I3Em*SfTP@x^XoI z;T`K<^$GHx5);& z(HzrzI)_H6o%Ltuz;aQAg1vH|)aA}ym_NWR+w|utT9+)6H%`q|X40&xOE|@_YZ{c( z31JSk)2&n0?jm|xr5Rn6CfUj-V>~?%qP|JPdq9=1>$LEQgm z^nD|xDm$8WwgV>T!>o?y@Ef{x?|&t5#8-c@UqiU5_o(WiRmQPk<^`&!PLQqNxG%qw zr%h#>y8bF<@wTU)ye>76oi+kBTcmyt3HlbcJkK11l|s%gU)9SN6JwLy`mjk#bZN#` zqrNadC6TXL>{%McTemd@=|jmjc`0Sj(xz4d{pkG7x5!_elf@_-zc^3RVv+8Nmf1|+ z3q6h`OmmtF#2j3()x#%ZcI z+fYVgST8)pvbyK8MOg;8S?~XSZWLbfT^afe_@o>jgW}TK@jQ2xc6Oa=%19^XY?vKY zEtgD7-&X9|8dnNMpI^qr6y-rnwGd4{H=zEv!_AsA148f;{>#DWLWw{a4TADGFs8;% z61TE+<=AIar=l`csWrN8LGceB^0M?Zc%6R+o=tvwmylH#wny$pfRDu-s()yQ67~mn zvW zW?-Tdr^rz2?ZIBt^xDI!d102LSny2$<)6A*6$Q{l!2Z;ml5<_%;M`mOb8r3exOVdi zuep(W_ufKN6;h(I%PQ)T-u9_egu%>uUwf@-#)6*tM6-j(o2op?9N2;>x?wBT+ahL> zQRy?2!~f)blhy0&Z@Ve5%b(2!KD@Z$LNA7XZlKRWCLrQBPmGeoWBk0wO}qIX9g3T{ ztQ3}_)HBcQLr+0}7R)kstfnN@J~x{4DU}wxpShdPPRTrd$C{TWM@4fAO_YtJ>+r#v z+CwF71~;EK-r;?J`xKlRC6@Sbd!|L+cE*8>3ZJNY)qZhhX{lmPEqsS44sk%KGV@ec zA+D3S47Vtb_3Xh4)w!_S;qR?S7HU;^y3Hfx^rsZ^`5O0qs!4HdSMh&5*m(JT=?Aad>f-!#C&rtivhN^63(ddxJ=^PBxDZ5m=xzOE$z{}LNRW)V zg~reKV9W{Sw@bDZpH_J zSqgu;5w!7+&7(yp`Oq!Hpiyp#;|3M=Mw6etx%6Tol`Ve8N0Hk-eC9Ga>7ySi&o%OU zBy8l`hTA9WB-qdg=M!9;Y;{IUb*HGdU5iB%M9e&KqW-Pcg8Ng^Zpv_OGA;YsD?FttKa>cA|d74GUOI#-wVaCl>wOq=xtXqkvQ7# zhtNhtP3pqCYt$K!{`EsR|0qP1_v8>J!X$bvQu2Bpp2Dy8rtym6RGQ+|~^Ms0Z)HwE$MU4lmnA$B>+hX%Z)SZ@?s~K=l_r80J zJJsD!d;Pl5pZ*w8wY1rCnJW{i+G(kL(O3bF@o+gHiQ)kH0*7#+Dw3b5AR4F)BKugJT9aOhCDANhQ`Ndkdw(My?&~0hWI&nBY1Id7@u%6J;oc!JYk8C+wD3=U+&kY zhk{$<3v;Zo@jUsey~%J#%zH;)F(wT)1b2Bk0s9zABDGBXdAM88oW2%xTQv2{AUE&B zQ*vUTVk-RxX6^>(`7yGdn6D;yZo26821@Pa+P80dc`Po45~x;TfiW&re*YSdb_drl zW<;4hqQBTTo);Iq)&-)b`X&P(HQjk;)z0pR8thChzksr}B9V+Hsx%f&eLR)$wPqyR zc0$4_n2x%RZ9GkT?S|&hoOh|l71e~wn6QAp+f<18=eU(^YaOks$~s3i9}r`@Ar`&7 z?ky&u8J{72LV@TZhkCpmhIM|E%0479V9Xek7=Ai@>GgX}QwXfD!7JAr!VqZO|Fw4~ ziK^`1CEFJZ)2SmjPXc=vWKGZlro8PwW#Cz98`ZM5-n#;MOf0WOP7$){nW z{1nWIW{ZHyJy_M1xIUuOWj*+o39NML(&BZ;fC!#q=g{9#hG%ltx37V_K|m8MhYsiD zp3^2EpBub&*CceWeq3Dlw*Nk%j;`}C;W+Ro%fow7S!s;)$+UT~c9*C}RUCe{3_zxh ze1k`fT$+xhu?O;=m(JnsDhkln)YLrUQfJ3FPuerZ6DEWki+lE&9En@8Xh_QpHGIMQ zmLL#)Q5GdFxZTFNJ{ppEHLCMgu+hWAa$;hM&%kkbdAmnVb%=!RIJS^cGe96LQo81U zLwwQQZGOTo@+$cO721~H_F1Sh%tt+WPkid4*QU@>$04-$oE*v=V!(R){;)f&!m^tfoBL7~TyId`* zYQxM>$YPwwpNULJ)=e*p8HGstwz7BCWLVA9(`fhyc%w5K&l{tnqK@rXLk_~y3@L?Y zojMUu?JD0jqR_X(DQboJI^h4`Nj%oY`c!3WwRPU9*GBy$7hNPMG2!#1uBZ61+kIOT zZFTj-5dz?}6R&_)LZTGYP~shn)$Ek<^TBuR?WbJuzcIJu zGyEMK^;rDB4;*djayud*JkVvL!BML-OEnN;0fAGx>a_rq zQXp%r2O`eB1kFnse~-Y+TXy}biVB(z5MC|sCzO3x?1}H%clMRWV2MbGKLBw(S<}^Q zExezmtdIxj>n-TbuAe`-taAEzimL1HLZDtqB>E3x8(L&uQE-B%jPLvtP+`{Y_A6Ma zS15A0*^{Pkp3JhyO&jf~u0xZt6&^d)@8X*I#rSmY5}r%~P#W<+n<2vq@}4P!-1}Yt z(B#MRain0f>;@d2^oc!6)bMj!umLhc7;lBK>?A2^40SV;S zQdY6FS2BHD>5Wr3g&jSmY5JBsc$#s|=Cn?m(N8_?om!jOJGxQ_!I>?j9A{l59@*My zb|ts5(&fd5Ew1zzSg+1Dvlfb1D}Sr*tg_UZO-WH1*8$Qr;~oF`=eq^8gTdem%3 zmFCEDy$TW4)h*MX1R`n1#b)E>Vo63X3lo?w?Z*DIFRI+vQ%)9*uc8avqKTgC6gn!ojWRhYPWT@IUEc@34gv10AOln9xu5fZD~5(tv= z>_GHZP-Vknda%VA5ijCGZ-rnO*AZQ{EyK~qKyRQ+N6r^Mkql^_eJ$-43ZZYlQvrWA zxixA{0QTIkf`R8v48=un6zA~FswhqM>8LfuHOxE{#BZ;<{JW&{Df6g#!3A(J7f{B% ztlz}@Do}u$+1x+WsN^-PSrqF5XqED3T>#z`-y!7Tqk^k^cL)Go{lNIjPF_iFKct&r`d?6)~Z}=`=-i39#I3hWmqJk@u?U?MLvnQ1eGVDpi4n{fpS;kAn3Pv z9fE{eK>hDTILRXwWLdZQ$iC8oBy!qR0(gx1H{OmFtOLMRbDe9;c!Y#HWDkW0LMxTQ zMuK;43kA6@Ek`)SvCquHn5O#VTT(?_yj@6oXi@M+s!p;llOXQGVQ@k!BW$sX&3yza}Iq`lKqcW$}b)Xy522C{pz z`$J;CWNh_!3+Lllb46bZlaBxwh5D$AdnAhea>{mVWmwTNyS(6V!uslbzmHu|9)Gtc z14SB_WUVbvqRl+Orz``XG9f`+s~%Y6&EiR59$Y3e4HhBs|p74EiZ zhcR3p{dJ-x64QIWk%O zRMsn-oweop`_g|7$|>;M2d{$bf0t<1-!(k-_u;|%yHao8aQ)$NLTI&~HvM4z`|`|U zTU%5l<4Mm($~<_!uwM5JI`(W-G=Bt9HDDOe9qIc^;Y<tUV8_Bj<%24z_$qBVj$Nn}tgSsY{xj`rANsKFBF-c=5oWy$82bgHP>~kZoE$;tvv{YL%t}2GcOuR{i}8 zw|+{8JF#Q!*ZiM1?}nl({p3`cnb`ihO$#!QMhG%}5#7|T*3q;VuNJ-;01G{+lVXon zZXjRPX#w9!wh_2$OmdIDkdoWbSVzuFL#jBB8^3my^}0DeY$8ibZAMpp=T0i}BY7%P zG{k0*xtOkjC#8CnjxyA+lrTCKtlAwRxfE!|Al=?Pr zBueThtouL5Zi9l)_vWh!M>5Y#`>D&wH`N!3t0FNIu5%p-7qW;(P{`L$)}n1f9tigq zW@g6mIumOlp$n(M^E*i3Xcx2GCpy+z6ry;Xc4S{C=Saboxwd8Z30HV+I{%g*wc5#< zAR08yuyMZ<#ms0Rl#gc5N02?5*Fn4PHj^;tzC7DrGTQ#3w%*sjl$<9L_Qt%zp(-?P z6P6nry4*f}wC~VsTB(g$%t$fL8$kJ+X9{<@x6m5Thl?dP54(;$l1bHzZJLW)Qo|Fa~7x8p*@Mnk3+9d+LNYJSxmduXX_t}_jcI7jbC zkDN;nxM5;0SAaNaQ0w=0c~xmJP*``AM{W^$ptIu=%ryRq=_{ywJhUUvmVf?4P6%<7 z4fC}bPr-+J3LzFgF1&;+ewZ81eM z91Boq_I9fP?~X5Qwsa<=xP7sE4UVd8Rf;I4udg3u?d7s>f?LIvLAxBlcPPbK2tsN0 zsAuq7pSZ81#=h!k71FMck7N)G6rmeJ9%Cos)o5=y7GMG$0U=93SafdBm;K+F4bER0 zaQI+1v$<8b)Q-gx1mkupiP7*5dOwWqq)_Jx#sq+yOi0T$+4Mx+d3sx&RBPVouwFEc)VbzLlq~hj!UKCuBFgt;&CDYjo0Smqwnhu*|trlWEsKIfukK&meidXF&&NCaB|<;i2`XRkk5$9k zDpOPW_TL}V3sJQ*U%ME(6Ird}GIw-&7|X6=BI&EvU)`=q-D(gs{{3*s?)~fM1o?)$ z)t25v4hA3Fwx*Py7E`YHX zo960}qbVJ+H5}93(^IXikf^zv+{-p|4dP6bwwLUy{A5A0g+|C%bljF-Wf^NJvA=&x zPo6rY4gV2t-La=015;Cio?ooYzyyA<8ITLSm5@V|^*#=dF1d=x}>|zi~x7RoZWH#W=0l>C0Ie z<;dU00CSEqk9|UeZ6BlBwu$ssLH6KgP=0TO$%Vbmn*-`4<~8p?8YThZXh(WSKYK^- z1zS4tx@X&ZnM~Y=IT)#K5&9`pB+KyN#O@jDt{LpJ(ExJO5>qPP;S|HWv7-X1?r6uA zQtL;%^eytabDNf`Lr=g&#TB{Jv1tyMEX>z*oVX5D&Qa7aFZ9t-9p57Crgw55yg`L= zA!iR9J7W9kVODzOC})j_haGqZ`*eN0E&?S(P6hDI@17jL45{!kJvBL%w{v+--RKpB zMzFvhPsk)zdF7|_$y^~8R1x;<3a#~Slm*FTW1~}njEa2zV?WNO+=dEQh3q*ulzj9{ z#Ko$)Jv@|a0A4lm{`|XQo9EM?QQ9sFcfCm(%7cgToYOCk#?_SZ7^;pet}CM$jGMts zFtbE&=V#TAU7boi+rMysh7#$sG~Mwgu!D=^b?_T~#&9p#*+YZVoKPv#>Kmj<$BgMD z@4PfY9f+jRUhfFkR=r5M!yh+ys_!ekAdLHbm4EK~=|%*^m|^?U(f;6z)Pn(gsM(vB zPx=m(m9fhrJVXp%eQ9M|#9JHP2MFLWTm!&{aIaOlXy#WgeghTqXv{nU(r?vj! zQ((2$Wv$j!MoS5^o&V3uDvqcJDf2Q_rG{dT_lxc+8vW+ym_FJwKo=PM&=&V*WQlLo z>Z{qIW~;qHtB~3JtcYu3iBj1-kzx6lvuAnz_ROqfpWJydWaTo|2KC$j5%`THf^n`_ zG?argw~mkajg6KV2}z+=Z> z@m@XZRw@EQ@%lkz^bIukV1cm4JHq`76GvgHBavP}*><9GG;bu$tcUf@RC_d|M^3ia zWaJI1ZU@WIx)d`y(ybwf)O84!6-POQZJNCeE zG*uKfG@$CN!r1y?T`%I8&WF`ecca#$Q5!i&tNzqrLP20b#!^3H>8PF$S#`}L)%eJ_ zh;a6}cfMi7UW;I);;l0ZJ7lcT0k?v$S;n6`9oG@(;%i@P9TKe?$S(6Ic%>A7*czOp zhLYWbUpzShjSOuFAhm?On%eMUa5TBCx-NynDF@vmyfRUJ0W)8gKiX{|*G{K>q@SL) zg*<{#TPeyQV&S##o5b;251PXAftVdD*r(VzfAw6x) zLr4i)B3ui~SbLs{o4?3pHSA)F+}+dZV7V={H+1yhLqx`>E;;m>PfsyJk~#VjodJjc zTtbr9tPZ=Znq!IQA+$AYn-Cgs=*U z?||9^eizC zEA}k*!g)>t4avb!#TW3r@WUZT-xBM#hsXg8tK5Y&?1y00&)mo>_|w&d5A*4E%A>57 zNZ^AfD?aHy&SQ@L8k`AX>7{7Y9-ly_VS0|j^a&mUmz_JgnHF{}I9Uc2Y6%%vjdN>T^&hdoGhliXw)WYg}DF&U;6 z4o{3@|62s)8vJMHKR=R|;a;hsS^cjRaK351AME}N&6@69Bd>jq9r>&P1NitIo9G`O zkx!SetatV*Ms+Fvr!4qkF;ZS1ycCsEHq#nf#Nqw3Pb;k0E+Wb;>pvyNee90WWD?Zn z$E&#%!%t!qp}9`~Oq4B!uw(7ENtR3*JHN9RGzh zMGRY_%Ik$f-DF0+Gghh(>P^~SV<)Dnqn1!3a2JK0BJnc%t#>sXgCTxM;Y=dq&5yNs zn82aj{e=SfYn88pvF}m%wkPJ3mKpOyLORJ#ReHBybzE8+jUBye|NGYsjt=geFjx5DJ=yg3xZz-%6J zUrgDVJj-YDa^D{^=4^dxg~=b;-lN^e7$|iwayj9_ZBQOc!99g2o^S8pQ&GU8P2jV) zk01W*Axe9HdRSfc*sCpr-OURF7o;^$O(QlU8r2r4TfyDc-jYoSE1kvUt-kW1&>wk! zVhqpliM@s71#ZT7{j$y~kQe*ZVU5lXj|Ro+dp>>iT?29i;Z2<2s)KKlnUEicm-moCJr*8Z|1?)lgpb+Kulf$u+lVUFH4l|M z=HTHlt#l|-5V8@n=l@-8l`U3u_<5s;=w(`w4&E_mRQuHoXz$!!?BM#-ld2@qv@8;6 z@3dC31Vq_F{==A(YA>nxK4F)-`K^CFJ-{z}a4Pz}UXckLu)>wj21x2N61eofV>Uf821*u z!MrC4h@BTIT}NdDQbmBy9>_niYJp8vNvD4YQeHSIzqxa(Ca}nRk>;P4T5ccH;MBb0 zKGYw`wB>6DzPWIdW#W$-(-I_N8LcbDusXbiZyL42|9GdnFZY<}b0Uq<><^$)Jh{gX z?V^=_6}M<+d}sg$d%2G(joWtTml^hnlIbU&%&CV4p|8GsziB1wL4GJj30}eQsGYcf zUI1Tk_ubUKscRq7no?C}yTm7e;{6EtbFNg8kZBBl#kJ(=-vG(nXLi<3Lo!63V4(l^fnp>ShT4} zEut0#`4j%|es_F)SS|-nQSU9bnJ&@r2bgc$k+_;tOtz4`)@IaRz(_aFV*)v{R8?NRm{Hs&Sk&grEzEGGI>;T!be@liUJ=#Cs`Z&lYrSpNcJF}umHpEDLJ ztEwUmZ=3Xs3SJqC-|khiX_yXhT>;IcBk_iS;Hak;z$+TBSYCH;XcScU_{$Ah^q?%| z($WPd_{Jx=5Or*RtxLeV(%*fiNhzT8-dIZs9iA`9PnD%idG@9@YKw^ciC0@YnZegD zg9LD5|7?PI)2g93Mx)QX#wRP)p+6+ZXedOcL*CT|ueYTr4wLbLdA43t3Xq`@9}cRCkQ^K`7&*$(qCa|O zs`ghHG*NqUf1Kh}CO%|tYRZ?~ytdw{GQM|Yy^5CJIFv}@=^OrZ%{|D^g48Jh}m?8r~b>PFB| zn4!w7iJwHn~_)M_7KdHa%savg&}trG(cm+|hlyJEFSQ z8ro=ydmiePCr3lI?_?#x?I%Q^(&kG!Q4X zsuI(RpsX;luMq+!-4z=R=v#DSJm>ZL6CD`gUfS*}G~)anQ5+#+UuBjo--_>5B;LRm zUt96yz;zeYq6uZ813@ZFIV_;lgL~kjG}0D!gL(-~-S(50Qskg;npO6C_St(jLQ1uJ zlnaL}8a=X}RF$uh3z`VBgpjmp0dS>P=HqBj<_GlcaP5Q;LX2Ex$VjW)62Vhhs>WLD z+bd%{zu4@1;f*QZT4<*@)4ekIXZ-l2v7J}R(WV3lD#gNUj}#zNaPdWI#1WxQiFe_m zI9BgjZFTuY)}wTer;x%LJO&55QbeE!6i41w?Z zyv}X(7tcijeu|)wO{EH)pseSfMnE)^FonZ*6~3C~?FlPM#d5J?Id-{DDFVndP7)Wi zui}4&JZ@1}XN|Y{p815xaatqnFacx@RG``sS;diC+%(QL}J@0?N3pCP^nzJ`&@+R zYIBV~Hpp>OyPqd~10h4I3EKFmPaEv##6J!SweH|*K+hWmwzU{9-MVMkeuk;GcAsf= z#hg66*q4C=!Mx68m@*4bw)njkTPw6kNOhlHUODl=3@zkMnCRY&J;(m;@gs@9ioC*` zFpmp9mwFccSxeK=*ur<21!X@d)Vvua1Y(Fm2HB+quf$4nuUxO25bsgSkvkejLiC)n zN1o_eE9(*4_#LcdNkDRV`b~;hO&%qjzScjYq8hITBp&iW4|7zlB!h)B@l zQsJW(KG0K(jCqllF3x!*(YTw>W5})Zrlxv!%&TM5lx(OPx2a!Go;Yakf>a3kv5agWp(G$(ry=8p&r%4GQzeLxLJb`i-WZhIZPl=JMJNwl! zsQl>ZlIB=XF>#@Q4oe zG#MPYF7NI!2f_(`iLzP~HP=buZs-^2gQE_C&xRXgIu+|TmN#l#FyE@m=J3(@Y}5wp zR<)YsHPD|qw@*!dl22&m`&BmWP=OqIMVo*ooIiXlEGQ3S;%k8OYf%uPXU&VuS^jty zz9;!Ly~ofFrwNuKjGc7h$fv{)@QYcRd9Ej0JMnzSZLf+%SIJ;Kpm4^-gAsQEVi)fOPdj z#|4LVBDV@3SV9Jag_2Ibw&%dsue**$)ma`hO+hX0zn70Ckc#vAcV<#Mb@(OY-fmxB zslbV}XI@z3|1>y!P2PFrbym>msrIR+K&=t5$euQNe|YZU;`Jx5L$>sj10SHmw&5-P_~W)8J3 z8@Lg36Fk1vvr>lA&k(~RWWn09a6&WBz)YPYY%cg(z8dROHOG~m%Of!ip3EX#a% ze3gC9;fPkfyL|Hm;~OO+D-yjvs<4#!br@kYXE0o0E7SE@fC$*bZQZX!54_abV{Gxh z-xCp0e`L(M_EH3Y{zv-0mqwrcaj6^YQP#^E+OU!C0$;&}II!~*e{w4U$q)Lt9=eCdf_96ub#0CS}kurWqL)6TrbY3E)3r+>f0 zS-73ok(^=>tPJ;fT`E%g-tb)d!s~9sxX=dFnY75Zbd3={ki+8x7)qX(Yw0p6@mb69N!d(MHfhH30cXmkW6w7ipW?-^j50f{?EQTNmqV zj{VgYe7~AmcyF|g5_o{~mz2TGanSmjjCAX+I4x{`HqdFO5@ZiGXht3!SB>zBuLtWm zg#@<)l`Nawi)jX^Fq=m};<33Bt>gXQ41qx+w^+T>3C`UbSd?c_MWqej7WDzhK4N3tF{p1(@~?K*ab|=SIF8EQ!@6w$>SZ2->}YH- zUZ&P-t^?+p8T5M^Sc>h#LyaQukM@xmdJ#nl`DkLuB4;Co#I$dK~u zq46OA+kc`wQcS(YFb0Sa#y4NmfiX0|ZI3PlqI?vx?y@H){Ude~7Y{mY3B`}f*u_;D zUh|x8sL7Axrj7#4Lx_&<+%-5+ua?dcB!l{iRLz$=B`{Uv#vmqBAjrH z%18$|DEj@H$W@0I`nek6r~R+8cr+}Z=bk;aLt1qmPSV8|@Hc_>Mh)b6Z}v!z)(aaz zs1Cj2w(3exNr`{G0Ose8MYO##aks)Nerdz{>~Y4;znl7GS*{ec*$huR?$2n6;9VK@ zovmf}n+K~HZ~rdp4%Zceh1A-2al+NxT*N(9O73Jh5n4QY%(OV^0rL1=P+>H zd2;`f0}LJ8H3in6tW>|HQPBP1g|nY91 za=8{UagpJ)0iR+#*e=!l#h!To)Bl#_r(HjBM5;as#jV%Pk9}GXp?&mJIky|4S@JVa z7nqwqsOK1}F0<0!L+t2UMgE;&67s7d%g1L$TSeXqK-vS;<*Zi%N^P(_Cts71SLL6| zHB%}rnkbGID81DF3V-a?bp=}ZOpYdtMM`?Ti6P!@l1bic8#*)ov7)4zJkcvZnOn$q zP$Y^E(KzS+v#hmhcaV(#MI3KjT|BW*ugV}#t7aG;_@y$tfp^4y(sU5SWkciHE&{fc zueR{dE>fq&$@jOtsGG-8e2D3n{YHSp;Q>pB{kZ2QYV>9eih1hdZn~w@nRz?Nhx7gx%Cs7t%7Vf z@+;a%ER5ni(yR?_G(7wHfBJ3R*4kw!VBGJovYxqh@q^#~?wohr=R|Nj=}34I0cAEu ztn7#m7^-c@`d_{o_O;FRW7I|@QnUl)xAJ`atpFRdf5X9~Zn$*wsc!S-Xs zl$irD6}tTs6(3?s23-%&%&m>cEdPqKl`6i29IRub?ZUh$s$&-XBir0uwKem&eS+GA z3loT1UdxVGNeSden9d%Y@kwUmg^db09loc!KgEsW9rdToWj!Wt-n=*Z$vbz9dhYEQ zK@e|`wW#%Y>xfl?p!gQO=_5WzpHZ&QM{$Q%Z(wY+F}Q(zJ_9AoD5Bkt?#G%cPQ8G z*X>bc@vHX-)~=N0;4dc{K7~ETJhszm#078R=dQ&F$e?z&FN8hLxFsX@i_oTM6Dru$ z8@C;`Um6ad6%rn&>ST1kBU6QQb#7^XQmL*w6YIv!v!|` zETGVn>)Fe!YV1OFt!$la?{8;6q23KhcB|bazg5U0Z2_}Pd>@WNEUMY!I8Sf6vSr>1L0@I~;nWzpshr@wom}D9WBjPmAZym@n0x|V$FOD_KWedl{2?IE&OY$zVB*je(ln~G zFB`9VijG*-f}P=D;tk(1bIh_sGBK&ix2$UlN%bJ6%UU+gi`$-|di;D&&M2^5pt5-y z-*9Q(t^eJW-1C=;m*}8RNfYH)Z^aWjG~A)o-gp@}8O`es#BC3+M9hwrsl*cG_p}j# z7G3qcF)<%m9jLEMZuUW(w>QjWqO#Dxbo_V&2mC;Z3j+n~+4&=f^O)7g3Zo=TGG|KI zr~M6!Npb0JF3>`_qnmtK;(@p6F3hKmVVAhMWOTN9_+Cy-hFn+5Is7aqYa%d0(B+Zy zzFvbrEcqG5|61UjK^J{C(iNXa)>8U9;*|x59VG~7QcAmkR8kY z8;jfwZ`?}iwJJ(+p9V5FfxG%5Nav(!>ACe;mVK_2i&&8RB0Fi*ANAq}@G);uOXoyK z_xvks2BZyDtP$nO9pCu8U8Zz#Bo3h^%U+?oSnsexp!r{lOZwjZ+t|B!C*j4u$xk3}>{F6Vg zxUM#Lpk%tVli6HCIc@oWN=y0*4}Xs&AT?4AHdHGw)Fo`<>*C@i=3DXWs8_zi=ObN{ z@ZSq|hBd*E(GK!c4Y8ke1lfM?@Kxtuwe2A!LoKbVHo%+xx8`k}2qObYYeT#+ACO1{ zxLht+>WAQ@p?&h91M)(CgPQGA9Y=Ho3dA(Ej1x3o=gj7(?%8XKv1DalkufSUMd&1K zt52A*w@ZeXYjfQw>?$$8g*3sljCfs67e$28G;(jnEaB)V4w%le;e)4|Cu!gI5@)`X zIIDjRN6dT2BCsckGnn+@QzwB=duUO0y+ys&&8xuW&~^;+-;q4cW@7@@jSKU?e-Os5I63L z$r{&;ODFZ8W&d)#74Z-&p)&blw-`GbBiH2Myi5IQkisfo=oT~6?cAtW5@<)$8@%bu zM2Zu89={3W$+r<*{b?qOdwKpK0&5n(O%#5n@;-N&=@f4Tgk4-yg)kp-6sI!ZI8Q7N zU2X7RduN}33M$SZEbU4W(EWl5LPY$VkzY-l)5PzNE!^q1z0@gtN5Op!In#!f0dm2WMtTIOI@b&ujrX(IiFPP3G^b^*WGTvv(F=Wv*WBJkKQrtOZ#0j`08qMsg#Cw1z`s zd%1YVMhERW-6vU53@^V+n{Fq1O+S6i_2WE4>IPBtSSeD-x*~#DIwBY{;-kLbQHA>6 z7Ops6U5iDay9q6dUGc;uJy{eLNWkt@$+-0L+lf-YyYJWiSogg^gVsdhs8_}f43 zF*?-S2ZlkNrx$Ww4LUXEU2nW_>zhQWp|aN5C)sZTM5v~jex%DTn+Z2IUzlbPhpxK+ z@oQv{8M286@94IF0B(4i^D^gc&P81&IRnD#M%HwcO20(b4133jsfn+?m(5{P_`+nh zvpbUAzBR!v4;SKJ^+Em4g$j0IO4whlE)>q3-HpZ68Hl3kzH( z{nSV9g$t^zJt$J6*)NEe5*Bue)ll-EpD_@TOFtkx9WNY?`%nHOCr>g5YBG~c2DZWm zx%-s)QwnQS`BiZyQDN`4d?IWk%oue!EuwyslI}%$vkeep7N=XvmJ58FKCB?s9?LbR z{fscVX^=p!HbW<6B{+iVT<~D*~ET$RljDj%RlgKS01U|@v8^(KAoCeh@b~mHA=18k{yR=&aJj?5D z$?(Uv=Gb02?v#s`-YA)W-gMzxpz3Si0a{ESpzyX}_sbg}&fNix<1y(9{fE;X$SPgi ze&TE=i~B0)Vw(2)8gd^($!>HP;{CeJ8h;=azESgYq;1$$)l^it&qyNMNtAfAj8bia zeeW?nhVWkrd?y@&SlvqNhgF^!gOYkeyUCxBvA^6b{#M^>85eyUDKzn&sL}KEEHpEV zV(%9>_5lHboYwgR|I=nJPzhZU35Wbc2sNqOSF`Q_JwjJDSK{~Fsz3w@tnG^n);1#? z0}a!+Zr4u~yeb9O?(=l)!b>T}cmkhfNW2y*w}lT4>QX7CAevlGUga^KFPxT;A^EM#pQ zXOBhil6kysU{@}^v$(pjYI@E;Mb2i;8onUU?J?YL6Z4XR_Ffe5!**XwTjNP1kJ{I0Pj+DdgFbzgu?Esa$=GHch=76IIrGE#a@qW zeBU;@4hpZmkVxEz8w(}X~@tcO&6``!n1^M@D;H` zHG&a=r{`F?-MWIB%gCoAO-B>`CIGi<{UZFSY}p*|)H(R1ZWlJ@)HR4Vh@h<6X43q8 zCR_tZyQW>s;{DMg(7WaLs}IKU3ZfH`vn`p#d_d>xu0YEhSKYP|7 z1J(w7yVf=m4abybPo`_f7XqJ=0&;f_#t<7+z@3hmwIU7O7l2J>wL2Cu3O}kOS$gMq z#_c&>)rh>>8G4xtZROhZOo(=EB7iqO+-n&EwyY0dsZ%|>^Qh2?o!xp|$gjGk;x}+% z;qiWx#MO#2SgBdnN00UhHmZm#g}y*;HbCy#x$S4%9wq;X7Dbn`p^V0$=^jAXX5uZ{ zWh1#aMHEi5Yu}w!NoEuNJX-vqw*|ZISkOdn$v^26*I`p&S=;$MuG|%gS8jEl!@pYH z@n8J?+f)p(-oDB|qq2d8tHv)6-sJNJ?Pxy{u1;I=Ej7rRC=JL`uE2lJp*;_Ij(?3$ z3_>8emHDK}e~QZL)2_9ayCx1?UX4@4-f_vWHK$NOhLCrej}Z-)B_d;Si#1-8x-oy;AjEa;lux%d)xO zP20=ElZ%dygvA!>&ZKR;FW6@Wu(O9BqH&RuSHT+|(9cj-!`d&<7U)_2q%;NO_90Qy zyR1h9TvyDh%9AWuG#_N$lMF`q=zbhn-|%M>zdd(_dH=Tbo;elRcfHzaykm_oA9cYmK0}tQjiQ6|YV<+<7@CpqXaHLFrQ?gTrJ5yTQ!NTh5-}}cG1fBTPwh@C2 zWdjX#(KQ-pW3N9_&U$6In*Z?iEUCDvpW|a5ulqtF=UH$w8;8_9-=M>oCsxk?IKAc| z?EBs5#MjNB=ZwaEgj{aY0Il-vY~%A*M~1~6h#$C?;M+-$*jk0Au^m&K@v6#dq`V1c zE@e34T<^T2ick<5w%Y4$h)Ojs0g`J)S)blBW|sa`0=-w!i~>{+?y*4pG=`|^H^}0x za-KF&svpB$O|NLvqF^#bZl{Tkxt6wrK?sg3xcS43V&M(GuI5Kd zyz$KsOPtbGDSNQRJ6ExurXO1MU;=KrVvGst8kB3jElZ^)tkpfU+2W3Up=iv+?DL)+ zD!GAG>+^sWKu7+V=w)9RlU{@Kx2hlNxr1p=|4tT6xlm_#FbcX7lG`0uT<$PvMIPG* zHOx5%Y3(AL@lEHVRTEQP&uyvETbiep+RxRP5SrAK-lZ#V2YgN~=nL`=)xt%e)-?VW zV{&b=iY00Hih+!B%}cuxgzs9XR0k`ey0<`Kq~K>Hb1IluPbd}WtI5N_>X3VJu?xE5 z`d9NS^I78*SRa%ULMq#p*9cZ~?@`a(GmWH+qJgS&wzTEW_aAZ)tM|9N~b;1vNg08XofD(Dd_H$JLhVJADkq2UZ{qp6W zy+H`^d#m~9Pi4Z3{uhOH^tRtdy(!s25?oUZRMt z#J||?W`A~$y5{UT;8;(-@lh+O-ZPL;n+ncNQpnqR3c+H(uf{#J>^yBZcnUq&s+VbD zO+#>O-ZVL|4=?B0Y0bH(@vXMk{2`Q2*yx&qP^y*8I|=cHmyErX4m~VSU#f6SUC!)r zA+aS=)(_~#@D-UNHH~_60u%mZ#Tj_q$H$P zJB&)1a70)Nu>C^FtA8_l7gWCgev4_~7x8V#;O$w;_fuFnYb-v-vYMDI!(N?I1?c zjCt}xdO@G-WtX@{ z;_xQ1PBU@nKRbXs%{zlv6>X+9l;C)*VDf)z_~Y9IwyfGC&o<{#c^6KuJAcbj$k2F4 zT1bmM28%$jO`mH`-41<}=l8E9)@X>9t+C@N>Q-(Z$V|B$@q6;ATlvJ!O7Z8lnKVHw z21n|xJnSQ0F&H=hguZEq;gB_xX)eC?-#==m;zZrO>;>H7-L>=D`!wPd&+pZZ z%NJSvWF}ioV!TSArGFrnsIJ8$ulX%SF?r_22W*!ogaie&0pw_WN8@m)8z}&#k7|Z* zU-TF<{IOa(ojIR!3srUD=qw-P`oy8I)3C&Ee}PAl4yRE_zkOCm%~DsFaszqE!?_*8 zGp%l+!tdRb_h;x$816|7pxANMCKj9*V(kMq_c%6+D7&WWFB81U@_@e5!{IedUq}MH zNN~J)9$n^}Wn+PV=;2lI^nm!=@X~-Ii9XL!bX8~;TK`J_mO}pC4SxU1bK>Ipm!@uK z9}5^MeArd<@~))+G+))g%*>({wLO?YF(Qvj)tG?53m#S4;hEC15*y$EXbyzAleg<9 z8#_;XI2P{jTUC!QzPx{si(&(L3+ViLx>}m|8H^7w7qF33ELmKX#<~d4{7A{-U5253 zi*k3z&1e)aM?a_g1+U_q?G5{O`{i>9&L#uFA7!Q=Rv|f@x65S4+>nkz#=CI#VCb!n zR@aqw0!I(lJP-u+J>(c+YA&_{U}lu^R7Tj{T~Mmaw@-gIeF%XKwv4^R~?c7XA~ z{U@#Z)7suq&dNfW{S}N1DxTqwu+7wHx?BxcFV=iOQ^jL_qd%|ZSmjQ_b4>JIC9uEh z)n&#CBGo3AWA2~$Q)7KL@)IT)fF7*zx9%7;kH+Yj8I>`fPK?+8-O=u#n%&c%JN0)1 zd^P;<&AR8^;9<4RuYzs8D2G9tJz;oiu)!z1V z2|iMVX}zv>EKpr+z?~g(#IYSJ5!VRx(x!bN;w)fKvm0Tk z1Y{9^DF$yw@-Ms7LvHh5WE9XFd$?c>5<+?ENODjWDtg@tfOTpcHx47z51m# z`@PfJqHs4Bj)rKyknc4f)88Pz0N84tqdyt!x$z5W6_X<4hDeponr4W?_h_S`(+hAp zUq!yAA0-xzqxuNkG#EE$2md)Gh?QUBg>K6~st+PAnuQ+#;-FUv&{ejWYN?0i?u*GKiyq>s7VIZ^2jEr zFCt_G^Vp`=V_F%y55HNQf&h}qhk?Ko39h$84E@Uy$Z>VmLnjB--&v?`;O#Z4p7u>K z#)~dnoIARB$+rwvkJi~!jHY3z=s{zOMFlJf@KOSZU7&uJ5lnteh{9-3!X~iEpA8%K zm2lasGjMXVZ7H}w-=zG=)ka@kz6@Qn1WId3{CdFV@1FLNN;Kka_ue64<&o``@oRyP zcE(x=ZtnBKTTfcB@H0wR>rr*hh+=^1w;pYqpR5V<%jp(S*Q03 zkip%fUCNTN$dg6>1;fo7^XI>iJm(^!MsI^d&XYdUc0?;GdT*E3h(zr4EE0DXGdxik z5yCu6YY3qk;xKAL$ zny3f8OC1nDiM=yd%}jM5B}YVRp?ibKxRw8)IhPAoyi|essB-sl>wE&p+%xC~0RYn= zpWF!(|2vg2?q7?~E@iXW}ObSMkO10jrE=64OLQ^{>8~XKX`4eO6fT zmV)C*`v~6ECDw!>w`dY^%L&B$0iqL7e%Q7E0KeczL!`%WKafiag3osXoE!ntghYAv z)hBnr2Sf&odhVH9MpX?AQ5IP7D!nr<2jh3;z_*hzaxEvD?!*C6{x?ATxD<$6DZI+S zji^Ocg6p=uA*S^FY~PejeB^ zfDkU}f4Os>>(!cM_n~E-{#KIH{#poExhr9st%yo=^nPj{WV%KyuFe9y@xSkwI~^3k6qJonOa&51o`CD{mYy+n# z4Xn>1m4Z@lQ5t7`-`1n7|K*b$`^+HuoKHSPXeMW~O&>zSHec!!+dtWyU~ObwWJNH7 zHqsX(4j($2*M(_O2WTEtiPxNBxKR5VBfPezHnyzp*DK2?wqnoP>3}LK$VM~Criu_Z zzFjK&V$FZU;N9hR{q*ZSL#s;hOe_b-R8f5mbkw-x5Vq&fyc+G!bC#M>w)bt%o&b_` zjqRQ5ZTT9%-ntBL z7!9>znPnnO4u4{Rcu2uO(YE%C-@uDq6jsjGYbzqZWd}^uAMqg8wiz-Xdu<9l##a0_ zIgHI5Z_IvNB!l}O*UT+>myxf`o;F^y=vMk>Ok6vJwiTq#J0QowB(=K8iPEjX5%)|n z#b);Qp&p+~B)>}Y#$OV;Yci&plWt>91(@R_y@!6kV<`PFK-3mubCUE!F?F`?!bvK_ zSOM4k+CM7<_G#VmZ+B&M59@1k;F1E?SJ=^~v1cV>#j=^X<5PEM<=HOHL3l6n|EC?~ zh}W@rDrTFjPuG)cKISTCpfAg$$|R&Y2JFAi@~a~v{C>%&^=DVE#GS^12j2Kh)ylWG zm$>y`o-fY@zNJ8lIou_zb4-re1^HA2`O3;TugPSdfC17s^rW9lE9b1z!wAEnVcjCK z=2IhY5zc-%KO2_{Y))HzgnsQFt*`#QMx<{_Y;m!)qStKO*cEET%MLHgV{Z4n{yNhM zl4fzd>h$%;1+}z@*AC3N^c74*vx}DV zk0l+AxA1J1H}u>EYd;}0kkYw_Ut!~5B~$C?o(oFLWD}l#d2!^#JxLeY!wJkMhkh*A zz25SRKWDj~bSOS+)g-6W5hSM!*&6KJAKjuxfJf}#&)U4hU*^Cn^XuD#(-rpGdhaE5 z_|#Ex8mYFbLafOLv+tTK)R0Fyh85D8Bea|`d7J!qE8Ua_i^I@4QPka!hr{Q^-kmSc zAB_0^%wh5~T7@)b?+%|wC)7qH(p^4tjwwlgm;8zBIN|aY{$5ve2^&UuF+%y^zr%cE3e14u{aSzU1n-}vsH_93MtyR_$wB9v%AzFuAV(&?4?k=I$=7Rn z$p+xzwhwHe8MZHz-Y=#fNZK}$=#!XZ#BdYG6o{oQJ1!a8E^5M+ROV<1e8+Ts4VcXW z;o9NUxhAhe8*rv)6^KfqF#%MscXA3r-4|qVk1I*)MO2e_L8{ls$brfPhdYB);WNLe z(rK(wfU>2%LYuuYE-STDoUv?8zamgAH(TYv0cM0*Q0vQ*a^P-bM3EhXa>;e*C7Y{{ z8us@<`tqe~F26-#vo@u=0aY;eMM->S)qq|d@AD7E+J6`0ta%Y8zLsXgZRfWCS(+G< z(jvPa zteWCPi>A85*@gY?4dJD}(@Y>oWH#5vkzb zAb4%@6x0DH5m8vEErtc8nzeM-y|vQ#L*j)wBaG$*{75o!X$Gd_{L$35qOv%DAf57Q z1~TQly24zX40#Xc^Aiibdi9NGr6=A+Z$L6XhAy8=oy4{IMFgrIzRrCB`O_0L3C{U^L zojUcEAtSKZ8Wx8dWB8|K8`qBBl{wAqZBx}Z>-t4~ANG;$E9>Au>w0nHD#~ICPUb^R z>^p+6=9E+FkRAHX#Y7HF zH%lSbN!Bhz&Iw_YnT*Hw%wB}w$&C|%9%r2nYHoh$; zO#EqIW*_xukv_U2oHBz-d=hrMuU0D`gTguw6JEeF-CoX8@j6?~Wp{x23e*u0n9 zh=IY+5A-rpJ@SUpgw(S9f;1*6@-;`qX(hv(t0#48MPUTEf=!<4SmhJF^*eb!ce>Pa zXgU{Frdbxy4AVzIK)`ybU&ZR*c*{Ei1975i%IW8%lX!uEz@$obd0VkqEf~fV{5NZ* zy~v5HS@g7`hY;SBFrVN!Mxhf!#wAv`f@7!uuqK?R1ob4%9w$CxFXI}$df|c-gS)u< zK|&Q}_>sA0%YpOo;IL2_YSXmIsUq&yw@9!fVlUIWSa5%er6D1&a#-yiELqYp0Pr$v zW;1|z#uJrOEq(YIZP#`Q3v3=&B!Hp2$)drpuyLbXaC)l#$H!Xn!W5(MrqJJ0X^wRH zcS(Zs3#?V=mh-a?ysL%}4KE)^@E=;tJhtta{W7KDiQ>x?WzbluDIgb?{A8tzJhse` zE8M+$fOU)J~|<zIJJcG+%zUyAA&+%QS4aV zz4a~K#VD`RB(6!PXIbQeNCbsjwyrG;l=L1T9?Sy>*TLfZ?URQ^JX}Xl$XUD5hQKoy z3d*)gL<&^K0#&{H^q*5q{Hm1cb4O7Shi3o5a2xQMeN#?Im5ACas`p)0lb@~Ic#fBm z2+K*MvXUS-!-kXwjf9=okExa)`Xp7r4!g?5u~=ZZe|h;kGejj|YhLo6+9#!yC%%19*=DAdRCQj{B<_C5uSsc)BX-Nv5ljN04?f@LoO$Wc0^<6}IArKSg7Hmq z;(dkXx&-6**Y}_)TVw^M8}c({O+allcm|3(uj$c8;w5xiK}RD)DL4#7X1iRW3QdUkEj#vo1k=q7q>~lH5(Lm}Z(L`Z>Oq7& zZTgLr$rPx79}~GJQtnGH@99H;#^O7E#X#$7C%_U!JQ9Cjy&Q-PaXQ@~m z=IaK%4iu!lls3!h&?|hTSuxgjME-ifC0((sEGx(k{!9awB==zN(Q}M4_1ifS;cC0i z=d)QlPv^}I(essl;BrVRrRktHYGPS4vP1itw1}NBJ0|%*d2!bcZ}ERQq3u12Y4CR~ zT9&>0!JgAm?U+LA1><_zLRH4js-6*irk8m3f$>>>Z}&2*#?jJkzaQ|kX{FcKa=(R* zQ0e#V@2=MJ-OzjGw?R2$mWM=N>eROchF~Zf3KDk%-OZ6_Y|J&S&doPLF4&~{ROdGEas16TJ!(CLlGHi|& zTBhFTy;CC4BL;qeaYg7Gb2;Ps3&8&V&&%h3&1L^>5&mD%qlf?dTjIz6KJlqYId2a;keDKq?(v zq&m-?4jx+BbxaeHowYqp`-P(sC6YY;JIto$z!?09lM2Qo_48V%O_H7&m^YW0mfVp4 z{RmZPSLSUB=<+wUN2)R8zSx6PtleN|^gCFgY;kSr-Z1JEZv*FN^3?m!@U;P*mHnmE z47V(VTI~4Krc3Ikgs0k&Uf5`#0&K9^&pp1;7W-!n58w$QTBGp3YNz*YD^;~n_dkzn z!r=+pXF8e_cOk`gTQ~mPFFHyqR&-xJ0o9|OE=7y{bPFl;sFF+i?=q@5Km)6swY+IS z7hikOH-y)lSe^viFli3Ydj+p7PMC>0g&M@E6FuTs+y2=-r8EwtVlbNs3}%yKry2V( z*k!`ImDQEqP=O+NbKZZ{ac_d$_{yGf<14ndLjaNVc-Yt-1S`~f`CosVH8)=;)>6k& z*U2%%S$@Qzgs-4m;CXCV`Tbh7fRyaN-;lRL%d;a+CX*{HZp`){^OYZDZuudAi}GzUcP*rKU$Ga#v9z+bVCpGzKQl>*=&Ch zq$9r=HC|?Y-H#eLK58k93yPNibQ*s$!GBn4M)6W^6u$`ZsoX#o(_l`(@me?cHNPN2 zZ1aaiRpHGm`*TVe(yr~8t(Y&DO0d84kAC%>HdhvgFg)*;=y>hA^W%M%3{QnHbn5tb zscheV$iV1!2T|^ziE(FHZSh^up1324Z#{s@zLpSSpR#qagmxF)aK0gv_ILxY9X-IG zGZe2naiZyYGnm^9mObz%FT5&Q`aEagGMJ=d&u*Y&v&2h6dXfG!IHP963 zmds0Cq9kk&NzaBG{4gME9hCxa>3?_Mz|%hbpe%cabe1)rPwV;lMn!K%5EdC!#`S>y ziT@il4D^Aldgl@jY<moJO<3eAevaV(W=M~meo`!LPAP9mibrdjyl##0A8c0S6C`c0#7_cBA2%+N`861!VlwFFllpt-5 zNazA0Bo4(f5NTPECZR@YE_Hwqh?s=F{{t6$HJ5WP&w28HPR?_3PTuc(zu!AHNP>y+ zh{oK!;G23{pOojQHmUudWJF~WQC1sCMugr|MJQsPdAc|e$TJ&D?{pyhq-NZyX}|S@tIwIESDI1qST})=8n4ClfvI zkF^EOB`u5$L zBPL9ggq-1t*tdP*G{d1z!tS_nOK?!TH(QFdj*Y}52oid4MRC4Szg2tI!kJM+9fWv5 zlBRzQjq9}=X(u^NqxizGsXEsYWP0e@kz1e>!qZEh06zD6fVg&;!a@@(s+$kfMDF%E zB^ektzLZq9>qM`%DvUyo?LhNtC-*64vO(LZiq6Ug6bd%Hhr#`f#d=8`7J8i4{r!j- zQ}OD@^A87pp-IQfsvbA^o3&+=1Bv)%U>=8RP)nU7S&c@S(M#S+zh4+2aZHenr0^8JqE*ys$@!JOfA>;yvQW_AqAaJ^(`9e zulyKp66p~UNzq~eR9_}R1rEtPV|RU{Ef7B>U6fflSuC>bt_Fnz~(Q%i>dYi zk<(Foa9Kc;8p(-#l|c0SOh`F_W`|O_jm8HU6KbklWUWx=@QxbQ3w)tkJHa;Sm21xA zMITAbsASP491PP+`(jWHUweEjl66K3v$82KD5-x~TRWajSzxi5F=kU$2tF*jTrFY} z)}%iNfv2X3}Y=DBJ1AO4OvUO|?tn>)plK(Z-ZnRUV zDD$UO7rrETH!Yld96b1D;g0_0wCSS7MtN{AJ+Wa(TYb0`I1yERtlia~3KiNs7k&$2 zH#0%LVn)TbFgvXAH@y2;YYpSEkUz89bhd0V0*thWEN!b56}Jo{bmhmZeC4!UP5a(D z_;;Shn(l64K=ugUz?JenPx^Ti>WlOli$~&d-!&dUc?I{HUv-5~jH6#sLf5%Zmf}~C z`7P$c*~95-%et9#Xhb3VHTa39GiX9bO!=epEPUEPvxn0nn9{)vl$p)0;s(n5-N#E4 z&gM>L^o+@CL}*9oB=Vcyz@ecS52nP1SkXYv8zYwB=)AWXW{eWQUP3Ev*F_}6X| zwr~rha`SZeM_~U)7}@7PG;Rg+>^oNKZGFqRKK%bQBTSW3xb(1IDvn0>{VW6wppNk9 zmUOoAgp&A4!Zo#2FBR^(Y?7<3^Nl~?HQ;Qu3Sy&4ELV3%hl5#~4T>c@&weg~A6yvB z67BI}NnTa>b~DdQW*eBoYw+B06}IWWM4n!Ni4sNKL|q=-FI6|^Lc0H&&0P#*hZuS^ zh~h6+^QnWvB(H_$`6PAFYZxhysQRo$MKfr6g;>wR1?63f|LaP$9oK#vFI zZWXhj0ir}#AQem=xpc$q_UwLv_}jDyxI26^2Y0V*k1N|%(Khz`@jvoJZSn#P~frZ@L0(faNl&w(|8(^R!dAA&_gQC1&JbkKQpzX4X zHw*I&BZlRMHH3|YZ9@}!R$A)d)4t> Cupertino design system @@ -13,33 +13,61 @@ Uno Cupertino is an add-on package that lets you apply [Cupertino - Human Interf ## Getting Started > [!NOTE] -> As of [Uno Platform 4.7](https://platform.uno/blog/uno-platform-4-7-new-project-template-performance-improvements-and-more/), the solution template of an Uno app has changed. There is no longer a Shared project (.shproj), it has been replaced with a regular cross-platform library containing all user code files, referred to as the **App Code Library** project. This also implies that package references can be included in a single location without the previous need to include those in all project heads. +> Make sure to setup your environment first by [following our instructions](xref:Uno.GetStarted.vs2022). -### Creating a new project with Uno.Cupertino installed from command-line +### Creating a new project with Uno Cupertino -1. Install `dotnet new` templates with: +1. Install the [`dotnet new` CLI templates](xref:Uno.GetStarted.dotnet-new) with: - ```dotnetcli + ```bash dotnet new install Uno.Templates ``` 2. Create a new application with: - ```dotnetcli - dotnet new unoapp -o AppName -theme cupertino + ```bash + dotnet new unoapp -o UnoCupertinoApp -theme cupertino ``` -### Installing Uno.Cupertino in existing project that uses class library +### Installing Uno Cupertino in an existing project + +Depending on the type of project template that the Uno Platform application was created with, follow the instructions below to install Uno Cupertino. + +#### [**Single Project Template**](#tab/singleproj) + +1. Edit your project file (`PROJECT_NAME.csproj`) and add `Cupertino` to the list of `UnoFeatures`: + + ```xml + Cupertino + ``` + +2. Initialize the Cupertino resources in the `App.xaml`: + + ```xml + + + + + + + + + + + + + ``` + +#### [**Multi-Head Project Template (Legacy)**](#tab/multihead) 1. In the Solution Explorer panel, right-click on your app's **App Code Library** project (`PROJECT_NAME.csproj`) and select `Manage NuGet Packages...` 1. Install the [`Uno.Cupertino.WinUI`](https://www.nuget.org/packages/Uno.Cupertino.WinUI) -1. Add the following Cupertino resources `AppResources.xaml`: +1. Add the following Cupertino resources to `AppResources.xaml`: ```xml - @@ -48,25 +76,22 @@ Uno Cupertino is an add-on package that lets you apply [Cupertino - Human Interf ``` -### Installing Uno.Cupertino on previous versions of Uno Platform +#### [**Shared Project (.shproj) Template (Legacy)**](#tab/shproj) -If your application is based on the older solution template that includes a shared project (.shproj), follow these steps: - -1. Open an existing Uno project -2. In the Solution Explorer panel, right-click on your solution name and select `Manage NuGet Packages for Solution ...`. Choose either: +1. In the Solution Explorer panel, right-click on your solution name and select `Manage NuGet Packages for Solution ...`. Choose either: - The [`Uno.Cupertino`](https://www.nuget.org/packages/Uno.Cupertino/) package when targetting Xamarin/UWP - The [`Uno.Cupertino.WinUI`](https://www.nuget.org/packages/Uno.Cupertino.WinUI) package when targetting net6.0+/WinUI -3. Select the following projects for installation: +2. Select the following projects for installation: - `PROJECT_NAME.Wasm.csproj` - `PROJECT_NAME.Mobile.csproj` (or `PROJECT_NAME.iOS.csproj`, `PROJECT_NAME.Droid.csproj`, and `PROJECT_NAME.macOS.csproj` if you have an existing project) - `PROJECT_NAME.Skia.Gtk.csproj` - `PROJECT_NAME.Skia.WPF.csproj` - `PROJECT_NAME.Windows.csproj` (or `PROJECT_NAME.UWP.csproj` for existing projects) -4. Add the following resources inside `App.xaml`: +3. Add the following resources inside `App.xaml`: ```xml - + @@ -88,13 +113,16 @@ If your application is based on the older solution template that includes a shar ``` +--- + ## Customization +The following guides require the creation of new `ResourceDictionary` files in your application project. For more information on how to define styles and resources in a separate `ResourceDictionary`, refer to the [resource management documentation](xref:Guide.HowTo.Create-Control-Library#moving-the-control-style-in-a-separate-resource-dictionary). + ### Customize Color Palette -1. In the application's **App Code Library** project (`PROJECT_NAME.csproj`), add a new Resource Dictionary named `CupertinoColorsOverride.xaml` -2. Save the new override file within the **App Code Library**, for example, under `Style/Application`. -3. Replace the content with: +1. Add a new Resource Dictionary named `CupertinoColorsOverride.xaml` to the application project, for example, under `Styles/Application`. +2. Replace the content with: ```xml ``` -4. In `AppResources.xaml`, update `` with the override from the previous steps: +3. In `App.xaml`, update `` with the override from the previous steps: ```xml + OverrideSource="ms-appx:///Styles/Application/CupertinoColorsOverride.xaml" /> ``` ### Change Default Font -By default, Uno.Cupertino comes pre-packaged with the [SF Pro](https://developer.apple.com/fonts/) `FontFamily` and automatically includes them in your application. Upon installation of the Uno.Cupertino package, you will have a `CupertinoFontFamily` resource available. +By default, Uno Cupertino comes pre-packaged with the [SF Pro](https://developer.apple.com/fonts/) `FontFamily` and automatically includes them in your application. Upon installation of the Uno Cupertino package, you will have a `CupertinoFontFamily` resource available. -If you would like Uno.Cupertino to use a different font, you can override the default `FontFamily` following these steps: +If you would like Uno Cupertino to use a different font, you can override the default `FontFamily` by following these steps: 1. Add the custom font following [Custom Fonts documentation](https://platform.uno/docs/articles/features/custom-fonts.html). -2. In the application's **App Code Library** project (`PROJECT_NAME.csproj`), add a new Resource Dictionary named `CupertinoFontsOverride.xaml`. -3. Save the new override file within the **App Code Library**, for example, under `Style/Application`. -4. Assuming the font file has been placed in the **App Code Library** within, for example, a directory such as `Assets/Fonts/MyCustomFont.ttf`, your override file would look like the following: +2. Add a new Resource Dictionary named `CupertinoFontsOverride.xaml` to the application project, for example, under `Styles/Application`. +3. Assuming the font file has been placed in a directory such as `Assets/Fonts/MyCustomFont.ttf`, your override file would look like the following: ```xml - ms-appx:///PROJECT_NAME/Assets/Fonts/MyCustomFont.ttf + ms-appx:///Assets/Fonts/MyCustomFont.ttf ``` -5. In `AppResources.xaml`, update `` with the override from the previous steps: +4. In the `App.xaml`, update `` with the override from the previous steps: ```xml + OverrideSource="ms-appx:///Styles/Application/CupertinoFontsOverride.xaml" /> ``` diff --git a/doc/fluent-getting-started.md b/doc/fluent-getting-started.md index efbc05d4..894ce218 100644 --- a/doc/fluent-getting-started.md +++ b/doc/fluent-getting-started.md @@ -23,7 +23,7 @@ The step-by-step process to enable Fluent design styles within an existing Uno P 1. In only the `UWP` head project of your solution, if you have one, install the [WinUI 2 NuGet package](https://www.nuget.org/packages/Microsoft.UI.Xaml). This step is the same as required for WinUI 2 UWP apps. -1. Within the shared project used by all platform heads, add the `XamlControlsResources` resource dictionary to your application resources inside `App.xaml`. This step is the same as required for WinUI 2 UWP apps. +1. Add the `XamlControlsResources` resource dictionary to your application resources inside `App.xaml`. This step is the same as required for WinUI 2 UWP apps. ```xml @@ -48,5 +48,3 @@ The step-by-step process to enable Fluent design styles within an existing Uno P ``` - -1. In all platform head projects except UWP, the Fluent control styles require the Uno Fluent Assets icon font to display correctly. Follow [Uno Fluent UI assets documentation](https://platform.uno/docs/articles/uno-fluent-assets.html) to upgrade your app to use this font. This step is required because the Uno Platform uses a cross-platform ready default font within its styles different from UWP's *Segoe MDL2 Assets*. diff --git a/doc/material-getting-started.md b/doc/material-getting-started.md index ec1a7b03..7e3e9b23 100644 --- a/doc/material-getting-started.md +++ b/doc/material-getting-started.md @@ -2,21 +2,21 @@ uid: Uno.Themes.Material.GetStarted --- -# Uno.Material +# Uno Material

Material design system

-The Uno.Material library is available as NuGet packages that can be added to any new or existing Uno solution. +The Uno Material library is available as NuGet packages that can be added to any new or existing Uno Platform solution. Uno Material lets you apply [Material Design 3](https://m3.material.io/) styling to your application with just a few lines of code. > [!WARNING] -> If you are updating Uno.Material to v2 from an older 1.x version of the package, additional steps will be required. Refer to the [Uno Material Migration Guide](material-migration.md). +> If you are updating Uno Material to v2 from an older 1.x version of the package, additional steps will be required. Refer to the [Uno Material Migration Guide](material-migration.md). ## Getting Started -Initialization of the Uno.Material resources is handled by the specialized `MaterialTheme` ResourceDictionary. +Initialization of the Uno Material resources is handled by the specialized `MaterialTheme` ResourceDictionary. ### `MaterialTheme` @@ -31,59 +31,94 @@ Initialization of the Uno.Material resources is handled by the specialized `Mate | Property | Type | Description | |-----------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `ColorOverrideSource` | `string` | (Optional) Gets or sets a Uniform Resource Identifier that provides the source location of a `ResourceDictionary` containing overrides for the default Uno.Material Color resources | -| `FontOverrideSource` | `string` | (Optional) Gets or sets a Uniform Resource Identifier that provides the source location of a `ResourceDictionary` containing overrides for the default Uno.Material font resources | +| `ColorOverrideSource` | `string` | (Optional) Gets or sets a Uniform Resource Identifier that provides the source location of a `ResourceDictionary` containing overrides for the default Uno Material Color resources | +| `FontOverrideSource` | `string` | (Optional) Gets or sets a Uniform Resource Identifier that provides the source location of a `ResourceDictionary` containing overrides for the default Uno Material font resources | -> [!NOTE] -> As of [Uno Platform 4.7](https://platform.uno/blog/uno-platform-4-7-new-project-template-performance-improvements-and-more/), the solution template of an Uno app has changed. There is no longer a Shared project (.shproj), it has been replaced with a regular cross-platform library containing all user code files, referred to as the **App Code Library** project. This also implies that package references can be included in a single location without the previous need to include those in all project heads. +### Creating a new project with Uno Material -### Creating a new project with Uno.Material installed from command-line +> [!NOTE] +> Make sure to setup your environment first by [following our instructions](xref:Uno.GetStarted.vs2022). -1. Install `dotnet new` templates with: +#### [**Wizard**](#tab/wizard) - ```dotnetcli +1. Follow the steps in the [Getting Started with Visual Studio](xref:Uno.GettingStarted.CreateAnApp.VS2022#create-the-app) instructions to launch the Uno Platform Template Wizard. +2. Select `Material` under the `Theme` section. + + ![Material selection in Wizard](assets/material-wizard.png) + +#### [**CLI**](#tab/cli) + +1. Install the [`dotnet new` CLI templates](xref:Uno.GetStarted.dotnet-new) with: + + ```bash dotnet new install Uno.Templates ``` 2. Create a new application with: - ```dotnetcli - dotnet new unoapp -o AppName -theme material + ```bash + dotnet new unoapp -o UnoMaterialApp -theme material ``` -### Installing Uno.Material in existing project that uses class library +--- + +### Installing Uno Material in an existing project + +Depending on the type of project template that the Uno Platform application was created with, follow the instructions below to install Uno Material. + +#### [**Single Project Template**](#tab/singleproj) + +1. Edit your project file (`PROJECT_NAME.csproj`) and add `Material` to the list of `UnoFeatures`: + + ```xml + Material + ``` + +2. Initialize `MaterialTheme` in the `App.xaml`: + + ```xml + + + + + + + + + + + ``` + +#### [**Multi-Head Project Template (Legacy)**](#tab/multihead) 1. In the Solution Explorer panel, right-click on your app's **App Code Library** project (`PROJECT_NAME.csproj`) and select `Manage NuGet Packages...` -1. Install the [`Uno.Material.WinUI`](https://www.nuget.org/packages/Uno.Material.WinUI) -1. Add the following Material resources to `AppResources.xaml`: +2. Install the [`Uno.Material.WinUI`](https://www.nuget.org/packages/Uno.Material.WinUI) +3. Add the following Material resources to `AppResources.xaml`: ```xml - + ``` -### Installing Uno.Material on previous versions of Uno Platform +#### [**Shared Project (.shproj) Template (Legacy)**](#tab/shproj) -If your application is based on the older solution template that includes a shared project (.shproj), follow these steps: - -1. Open an existing Uno project -2. In the Solution Explorer panel, right-click on your solution name and select `Manage NuGet Packages for Solution ...`. Choose either: +1. In the Solution Explorer panel, right-click on your solution name and select `Manage NuGet Packages for Solution ...`. Choose either: - The [`Uno.Material`](https://www.nuget.org/packages/Uno.Material/) package when targetting Xamarin/UWP - The [`Uno.Material.WinUI`](https://www.nuget.org/packages/Uno.Material.WinUI) package when targetting net6.0+/WinUI -3. Select the following projects for installation: +2. Select the following projects for installation: - `PROJECT_NAME.Wasm.csproj` - `PROJECT_NAME.Mobile.csproj` (or `PROJECT_NAME.iOS.csproj`, `PROJECT_NAME.Droid.csproj`, and `PROJECT_NAME.macOS.csproj` if you have an existing project) - `PROJECT_NAME.Skia.Gtk.csproj` - `PROJECT_NAME.Skia.WPF.csproj` - `PROJECT_NAME.Windows.csproj` (or `PROJECT_NAME.UWP.csproj` for existing projects) -4. Add the following resources inside `App.xaml`: +3. Add the following resources inside `App.xaml`: ```xml @@ -94,7 +129,7 @@ If your application is based on the older solution template that includes a shar - + @@ -106,25 +141,28 @@ If your application is based on the older solution template that includes a shar ``` +--- + ## Customization +The following guides require the creation of new `ResourceDictionary` files in your application project. For more information on how to define styles and resources in a separate `ResourceDictionary`, refer to the [resource management documentation](xref:Guide.HowTo.Create-Control-Library#moving-the-control-style-in-a-separate-resource-dictionary). + ### Color Overrides using _Material Theme Builder_ and DSP format -It is possible to use the [Material Theme Builder](https://m3.material.io/theme-builder#/custom) to generate a custom color palette derived from your own basic colors. The generated palette is provided in the [DSP format](https://m3.material.io/styles/color/the-color-system/color-dsp) and can be used to override the default Uno.Material colors. +It is possible to use the [Material Theme Builder](https://m3.material.io/theme-builder#/custom) to generate a custom color palette derived from your own basic colors. The generated palette is provided in the [DSP format](https://m3.material.io/styles/color/the-color-system/color-dsp) and can be used to override the default Uno Material colors. -The tooling required to generate the _Material Colors Override_ file from a DSP package (zip file) will be present by default when creating a _Uno Extensions_ project with support for Uno.Material. +The tooling required to generate the _Material Colors Override_ file from a DSP package (zip file) will be present by default when creating an Uno Platform application with support for Uno Material from the Wizard. ![Wizard - Theme Selection](assets/material-theme-selection-wizard.png) -Follow this link to get [more Information about the DSP tooling](xref:Uno.Material.DSP). +Follow this link to get [more Information about the DSP tooling](xref:Uno.Themes.Material.DSP). ### Manual Color Overrides -Use this when you want to specify MANUALLY each colors. +Use this when you want to manually override the default color palette from the Uno Material library. -1. In the application's **App Code Library** project (`PROJECT_NAME.csproj`), add a new Resource Dictionary named `MaterialColorsOverride.xaml` -2. Save the new override file within the **App Code Library**, for example, under `Styles/Application`. -3. Replace the content with: +1. Add a new Resource Dictionary named `MaterialColorsOverride.xaml` to the application project, for example, under `Styles/Application`. +2. Replace the content with: ```xml ``` -4. In `AppResources.xaml`, update `` with the override from the previous steps: +3. In `App.xaml`, update `` with the override from the previous steps: ```xml + ColorOverrideSource="ms-appx:///Styles/Application/MaterialColorsOverride.xaml" /> ``` ### Change Default Font -By default, Uno.Material comes pre-packaged with the [Roboto](https://fonts.google.com/specimen/Roboto) font families and automatically includes them in your application. Upon installation of the Uno.Material package, you will have the following resources available: `MaterialLightFontFamily`, `MaterialRegularFontFamily`, and `MaterialMediumFontFamily`. +By default, Uno Material comes pre-packaged with the [Roboto](https://fonts.google.com/specimen/Roboto) font families and automatically includes them in your application. Upon installation of the Uno Material package, you will have the following resources available: `MaterialLightFontFamily`, `MaterialRegularFontFamily`, and `MaterialMediumFontFamily`. -If you would like Uno.Material to use a different font, you can override the default font families following these steps: +If you would like Uno Material to use a different font, you can override the default font families by following these steps: 1. Add the custom font following [Custom Fonts documentation](https://platform.uno/docs/articles/features/custom-fonts.html). -2. In the application's **App Code Library** project (`PROJECT_NAME.csproj`), add a new Resource Dictionary named `MaterialFontsOverride.xaml`. -3. Save the new override file within the **App Code Library**, for example, under `Styles/Application`. -4. Assuming the font file has been placed in the **App Code Library** within, for example, a directory such as `Assets/Fonts/MyCustomFont.ttf`, your override file would look like the following: +2. Add a new Resource Dictionary named `MaterialFontsOverride.xaml` to the application project, for example, under `Styles/Application`. +3. Assuming the font file has been placed in a directory such as `Assets/Fonts/MyCustomFont.ttf`, your override file would look like the following: ```xml - ms-appx:///PROJECT_NAME/Assets/Fonts/MyCustomFont-Light.ttf#MyCustomFont - ms-appx:///PROJECT_NAME/Assets/Fonts/MyCustomFont-Medium.ttf#MyCustomFont - ms-appx:///PROJECT_NAME/Assets/Fonts/MyCustomFont-Regular.ttfMyCustomFont + ms-appx:///Assets/Fonts/MyCustomFont.ttf#MyCustomFont + ms-appx:///Assets/Fonts/MyCustomFont.ttf#MyCustomFont + ms-appx:///Assets/Fonts/MyCustomFont.ttfMyCustomFont ``` -5. In `AppResources.xaml`, update `` with the override from the previous steps: +4. In the `App.xaml`, update `` with the override from the previous steps: ```xml + FontOverrideSource="ms-appx:///Styles/Application/MaterialFontsOverride.xaml" /> ``` ## Using C# Markup Uno Material also has support for C# Markup through a [Uno.Material.WinUI.Markup](https://www.nuget.org/packages/Uno.Material.WinUI.Markup) NuGet Package. -To get started with Uno Material in your C# Markup application, add the `Uno.Material.WinUI.Markup` NuGet package to your **App Code Library** project and your platform heads. -Then, add the following code to your `AppResources.cs`: +To get started with Uno Material in your C# Markup application, add the `Uno.Material.WinUI.Markup` NuGet package to your application project. + +Then, add the following code to your `App.xaml.cs`: ```csharp using Uno.Material.Markup; diff --git a/doc/themes-overview.md b/doc/themes-overview.md index 6b2e2660..5b6e09c2 100644 --- a/doc/themes-overview.md +++ b/doc/themes-overview.md @@ -16,16 +16,17 @@ uid: Uno.Themes.Overview ## Uno Themes Styles -[Uno.Themes](https://github.com/unoplatform/Uno.Themes) is the repository for add-ons NuGet packages that can be added to any new or existing Uno solution. +[Uno Themes](https://github.com/unoplatform/Uno.Themes) is the repository for add-ons NuGet packages that can be added to any new or existing Uno solution. -It contains two libraries: +It contains three libraries: -- `Uno.Material` library is designed to help you use [Material Design 3](https://m3.material.io/) -- `Uno.Cupertino` library is designed to help you use [Human Interface Guideline styling](https://developer.apple.com/design/human-interface-guidelines) +- `Uno Themes`: a library that contains the base resources, extensions, and helper classes for the different design system libraries +- `Uno Material`: a library that contains styles following the [Material 3](https://m3.material.io/) Design System +- `Uno Cupertino`: a library that contains styles following the [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines) -Both libraries help you style your application with a few lines of code including: +Both `Material` and `Cupertino` libraries help you style your application with a few lines of code including: -- Color system for both Light and Dark theme +- Color system for both Light and Dark themes - Styles for existing WinUI controls like Buttons, TextBox, etc. ## Fluent Controls Styles