From ae4cdef8b5a25d898ae60d2fc4c145f08f1af0a1 Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 9 Feb 2015 18:06:35 +0000 Subject: [PATCH] Doxygen: Updated scripts and css files to process OpenFOAM header files more robustly and generate cleaner HTML files. Thanks to Bruno Santos for various fixes and improvements. Resolves bug reports: http://www.openfoam.org/mantisbt/view.php?id=1516 http://www.openfoam.org/mantisbt/view.php?id=1016 http://www.openfoam.org/mantisbt/view.php?id=1512 --- bin/tools/doxyFilter | 17 ++- bin/tools/doxyFilter.sed | 8 +- doc/Doxygen/Allwmake | 33 +++++ doc/Doxygen/_Header | 2 + doc/Doxygen/css/cfdLayout.css | 7 +- doc/Doxygen/css/cfdNav.css | 6 +- doc/Doxygen/css/doxygen.css | 199 ++++++++++++++++++++++++++- doc/Doxygen/css/img/OpenFOAMlogo.png | Bin 6630 -> 6140 bytes 8 files changed, 252 insertions(+), 20 deletions(-) diff --git a/bin/tools/doxyFilter b/bin/tools/doxyFilter index 2e370383e..061c72e52 100755 --- a/bin/tools/doxyFilter +++ b/bin/tools/doxyFilter @@ -1,11 +1,11 @@ -#!/bin/sh +#!/bin/bash #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation # \\/ M anipulation | -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. # @@ -38,7 +38,15 @@ if [ "$#" -gt 0 ] then - filePath=$(echo $1 | sed -e s@^$WM_PROJECT_DIR@../../..@ ) + + realFilePath=$(echo $1 | sed -e s@^$WM_PROJECT_DIR@../../..@ ) + if [ -n "$FOAM_ONLINE_REPO" ] + then + filePath=$(echo $1 | sed -e s@^$WM_PROJECT_DIR@$FOAM_ONLINE_REPO@ ) + else + filePath=$realFilePath + fi + # dirName=$(echo "$filePath" | sed -e 's@/[^/]*$@@' ) dirName=${filePath%/[^/]*} fileName=${filePath##*/} @@ -57,6 +65,7 @@ then awk -f $WM_PROJECT_DIR/bin/tools/doxyFilter-table.awk $1 | \ awk -f $awkScript | \ sed -f $WM_PROJECT_DIR/bin/tools/doxyFilter.sed \ + -e s@%realFilePath%@$realFilePath@g \ -e s@%filePath%@$filePath@g \ -e s@%fileName%@$fileName@g \ -e s@%dirName%@$dirName@g diff --git a/bin/tools/doxyFilter.sed b/bin/tools/doxyFilter.sed index 084049a4a..e2aecb8b8 100644 --- a/bin/tools/doxyFilter.sed +++ b/bin/tools/doxyFilter.sed @@ -11,7 +11,7 @@ /^License/,/\*\//{ /^License/,\%http://www.gnu.org/licenses%{ s?^License.*?\*\/\ -\/\*! \\file %filePath%\ +\/\*! \\file %realFilePath%\ Original source file %fileName%\ \ \ @@ -64,12 +64,14 @@ s/^ /\\relates / # => # \\class Foam::namespaceName::className # -/^Class *$/,/^[^ ]/{ +/^Class *$/{ N +:loop /.*:: *$/{ N -s/Class *\n *\(.*\) *\n *\(.*\) */\\class \1\2/ +s/^ *\(.*\) *\n *\(.*\) */\1\2/ } +t loop s/Class *\n *\(.*\) */\\class \1/ } diff --git a/doc/Doxygen/Allwmake b/doc/Doxygen/Allwmake index a349ee4fc..227bd01b7 100755 --- a/doc/Doxygen/Allwmake +++ b/doc/Doxygen/Allwmake @@ -8,6 +8,39 @@ cd ${0%/*} || exit 1 # Run from this directory exit 1 } +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat< + + p7{^s)6v^IXZ@Je98Q0!BJCSj@LPoBAjO^%S-80gaGwP~bK?2lsoW_K?-%{i4LFWV002$0Z&Xv3ub z4>a%xk&&3gqBt1mJ>Z|%?2DMc)K8QqDKfP26&MH!D&+;IF{1EJ#e(F&i^WC!fLY3A#2I~Kvsj*raoZLk2PC5ZV^1?5`UPR1Gd6*s`|TCSaT5r%n7XE6 z<(fycY*{<~G(Q1hmDTk*uYh5%A~t1CRgP3q%%$eG`_incE1FK!>gbwR;G`aona96) z0X34R7xkP5Fh-&BPmX>EXH`s3`R?E3_e|R^$#A4_Vnu6o7el#TT>VC}f1rFLUH6ZM zODB7Es@#0O9mt7|eMmusce*p(H#>`BlJ@<*w-@Iu{R>!K-MjgbUe!9??t-NI#h2r$;9Z31y8G? zsbO^?Adn|Zqt(%(hE-MG-ZxFpe}zjy#He5I?Iy;?Whawfmt$`}Qque99o%daZ<9MOBukTo~o=xDDK$r%#kQ?7Em4t+Zt({#p;uOKk%0@^?*!gp4pSf3& z{2oz;*pNC`5^fSP{byNmPBW2aF;Rq7Vz4KDZ`$>>KQ1iStQPUzcFlZ4iEL`LbJPJq z?Z{ffcN?nan~^$Aa3?2?Qls+C-)muZwFry$Ks3F$OJZUoPDepZ`r+A`{n_qpY^LbX zvVZfnPShCg*Dqgg7|R44eGo9OC!G-;5%Ewbt*oh0EH}!VL?jKYt*)+;2Cy_)+~-z{ zc*LwMn4V|IJBp}v5TT=pKFX6TP}c;QL{T?OdnzS{82u8Or&c)RoSL~M#s;m?rvJXq zwD>^jL&SB9c~|FZolXvxatootuYRrhiqY#9aLXLgb;B#lD)bF0fblogAdPdy2hp%f=JP=)3U2U^J-w2$X?!(`{ z6k=@eIa(W#@H^voZ_KhANYm5R?O44?(b_+5K4?=Q#clH3$9S+|Fz0`+mQqlNWf zzsgf6O&~<^Nf<<8qA;v^BMu@3gYwluVa_{sRoLbm6Eib#O(spAJWlmrM8C`7i0(|= z&UGb3Mn-llE;2P*XuG>Z0Ook+KG`@JIHS2MqR9Z<`cE8nDdS0G(wPAQL zj&d9whp_HInm|;1ynQ70X?=$YR0zbksBlO`r6q%<_&FN%*jPmyb@c4TB^ zq)JKI(!LO@4mm{@Hnvdkmr!dvcUsQooIH1?h=UBOsyL^y!n-N}lZTSsKGE zU=Q^_e@pZLc#za@tBG}JQVVcdXnJvZqra2Bxw0XE(p`G*Z*wMPVr~xYKn9V_UJHaB z{0nf^Z@s}kVua?mew0<9c)IuKY0EFUM*v@m=E~u&NPJbaaCkUyG`r7f)B4t^JlkZ zT%>Fq4_&&RZy8=_uNADMN6wM=u95fRsC&7K{b}wp6$L1BaQ(Z|hU?#QE^9VAZ}rBB z8CD$HXS*g-@s>vo!ZshWT9ok0%eTQ23Blt|C1^o_@v-jVfN4}#k6-j44;JkX(pv4( zfMM;QoUE)zw5-MnRA{r@nzYd>8x>sGZ;%FAB(ly^G)KqBTkFSSMn;mdr<CX*&29qii*!dSXiQ2Z*Onyh2#pipRlRK+m07%fvpENuAGG@Lw1F)x?NXy zH%bI5w_LsIRE1@4d;7JxW5W2!4>6aqjE)XDOW!pPa(}j} zuC^qew!|k|hNhC#(a_>|;@?#wNxbQRbG28iaj1VbqaBK5Fh&M1{m1ozT z5T25m`5>sGqQVoqfL!Dd6QhEW5)cx8GRV>9{D)obC(lBdjeS`d==t`IjFIuB3wq@$ zAtgCkUUUHA-6|G2f-QsWpzV+qi)-J8=p!+aadE^lu9rp*k9X&HH|J_g*(r5$1O;IH z0scX_s@aoy;hce6KJ6VVxp zukq0ESDRSC)tTMq$ft%zQJnvGCze+F2OVCj&h6QJXcmyMPIaywm23dK8=0+Zpa19&@f7QX;CaU9CW&)P}vq*I(8eo)|&YnsBe3 zpP$@Q)Hg7Y@Y%GTU72a7hLJiPOlCKcOo4qd!4KnziHT7t*T47s&!6CV%(8uOdV2a7 zbG`q8T3}bm4PZtcz7G$>LAV5UbcH>LijUzuEEO%gKoC>AzOp@}59O$RZof+tdefuS zCw!B)1%d$=X0<;rVWHll_}1ZRaOaMM+XXwQ6FsA&k71-H&0YdrB-_HH&v;r@B)9H*_3ls6+8S z{NwV2EuqTta)H_pf|QocIT~-gb%w<#U5Y-z6%f;3$`#&1p^br;O`Y!I!;7nfvrvMN zprRr!Vrlv`-~EMYb9|(1Kv!G9mFE5{!Ss|8U)2OA>8iRZ!YYLbl2lW!vk4wWy?g+B zO9rsfkr^rvHTLvKjWN5pxTGfAGchrZ9rPtI)Ayd-u^+sSEP<|XURVZa-t8ai=U`VPY+Z^KNkM;18G08y`= z(pKtGE{sIrb;Ib9N}II2vah6=nApkoY$?SU{HsLKB!vdF;Hx{&O&q;=S|Aq(2W?s% zFC|zk%`E6Bw|AApC@W|NLs%-EHUy;wKz$LwF{^hOGGAFtrYUA$7-&-2&_?@gEFeKq zdjB3*o8h^&Np=ito^srn4Uo$URQN=!*Es*8(xd1f8v3(X>$k@Gj_#e_ylUrE?HYb= z%wvgTopPcOxi@e4t*xyU6%|RDm|RXIy$@L=+Sh5a?)9J4RhCW2I7}4lRnhuOby}f{ zRT(>MUE#x(!rkh^q;l0HLk?s4Q7!@p3v6fKd8+$HhgINdg#`s}{y@96vZVj&(-4;5 zYinTv3Vx6mkB073*;1vY#_)aMdK}oUis1%jGzhZOB;xVOE+#D!qv|jJJi$ep*Xyo^ zDkT5_+tX!_IvyAa76>*@(KTB9lyYrnLj?#63*YbKP9NABE6_ki+9r7la&xmtHSZqK zYx=I!M`3=76Oq(GfPU)FmWR3J%*bPs&!Df6sXLrF<#w^sEp+w+sGCKgxTUm~UNNs7GF>U~poq-yZV6vBJuP%6 z+W*NosYJIX1s$Dwwf&Iy(P~tumhStuAGVOtJG04doE~@M!Z&}SUsHbqW!`sK0r@7K zrhccr2}u5s9Kp+`0LfF-V;`O(5)u*uAxu|@8emvdBH z6vvd@Z&6;}=&US;tgI}WW!d~Lf?^CT^!^xg0+Y<=`PBu%?B~YR#%y#%;PW5Or69I< zXR7Y$Q8c38W{P3QB$}1TG)ZyATo>O=oeKh%Ee@XKpRZW^ON(={#l9a^*|z0SW)`fuhx-2_yt7!QF*s04Yv* zM-=h%-R{ieUTDAX+7C*RFv+6N}xpt_W)Pm(><=#05r^E%1(=c_xw~i)L{)mO9S`mEVsv=%NRiTBX zj4GpYGv7Xf`1g!3&>E%mbMpiI?0kGNU^F;7I#PdmadEM_zOHX#!j1QL2(}en4A)^) z=OVbP63>vd4__Eqo^SMM!f}#yO(E4?`M6ndzvj(sbm{b$j+i=FGvSq{=XYo2ypT6P(zBK;*>4cd~9iXjtlEpSU`&{%+ZLVUAX4I zb&ux_iUDALUsxx#eI`YH#V251w+hCF)wMPE)9n{c;=8x$cC79H3<%AP)AQN8+w|-L zo)}Qg7;Zyr9+7x3cwe6jtEs6m%yp)oU9Rl~UtQ27X-iG-N=-F!52t>)J|@qDZjppD^dK9AtX1MSH5-{KQ2fQQ zA3bnv>|>L@1|7^dc1Jhz4HC_xr74HL5!35(Q-I8plaoVfzcq~7Y!EJ|qNWD*rlGO% z&lphV%`ad^(Z_IhAgjAS^HV9?W^hD!kV*DRM=cip>@U*vVdrFybNseHWb#vT+sN_F z-IMo(dvB4T*N6>xcx(US{$@rSfW;kJu8 zw|_-Ip@ux#4lK?2K)0vKaWN1-fPVa;2bL+VqAoEtwZKnpY0Ode z=IUROGBLd^gcgjPtbgS1rqK)&5nMk{jQma@ub@D@zI8L2e?Z?q%iz#m;Rq0U?N%1& z3Y}bwKJK_OSn3-Xcu;GmWoAYfihuR@_qTf~WO~$^rX4@gQdO0ea;1~o98cg}aB^B& zp1okpRzDQU#~QEh@o|HQr>tajm*ukuQ){V$1R)(44>o3N9Ld2L3c|>8>z{hThSo>) z{=H`CpYA9MDk_X2??pQ$7Kp%-0(p(EAGyk`rl1VAHpUaOvMj(@NlY(hJHD@F=LJd# zD2sMo?+Nec0H-;pWyEGNECirceQMYFL4Vk3s-k~$lv(xZZicW;WV`*dW551bjx4a? zAcT-eWb0rAw$Rn^gu?(vN=R5`z3rf}yUQE#UD{O(w=(bs@Kr-BwfZH1(XL8*<~-@W zfpyX0o>)*t`zOLzs*RRZdi|O;!16$$J@97p7J;kA3g$IV6# zFXxLGK3N*pv8r13Hzcvh>4Ou4e8eD-Y1}Auu4)6suTIQFb*qp-U!M~!udMVB46Lmr z$l9;{NELA$!v)PJH-$QQztL?)xrA*M0{eEY^uXKoNHyRUkBFh9!1l%l{H)=A97E5w z&vF0oFc%b>QmJr7E9qNY!=&V4{m^RbM%i`OekKWxjx#Hdi6W+j^l)cb13z1~!%B+y zv*b67C9B$<$17SND@my^xR) z0wUhlPDTa>lUf8Nb{i{{xA#W&E86jPe5M&G1fqO*u{Cp{8M%{MYF;n+%Kxu~kk=@7 zQ_00ekS;E~rKQFFUaSw`<3k21HY(+do#>~WgCBDqb)NhPP!Z(g)1Wi3t8UOp)-a&P z{8XxXy-!r<{7YF|n`CQiD@(#7914G!Q@%Y{%Lj%MLAuY`qCjZIf?B&a?**yHV?jc#pzg-W6z@twgKNUer`?!Bt z78`3J*w@{C53~;7Vj1CMNV>b?_z=VdH<&RL{QaLJ_vb(5=HjTRsL+Wx$Q>-U(u&z< zj9yl>91)R_03_h>M0cTSSHW}7(nSRptnC3NIb(v7tJlub`-^ybAO3dYr()yhK@+C! z>noXi)iiWmh|+*V+*egGd3jM$QBOogQ-9UFYUB)pD?wu^(LiazOh{fdVOgr@r50(=1HMp~#@1i9|Iq%z<$gz6GoDWvP@Kj(Q3wa@|OG*AhkMhN6POoAC ulqaY3cG{itg>cgBNlSHpX>s%|?+I3&h~z8N9TPSj@KRIKR{SDw74jbwr3Cu` delta 6573 zcmV;e8B*r_FXl6lBnkm@Qb$4nuFf3kks&Y&+6V;+GBCWSaY&I{Cx011Nkl|a2s0xf9?}8**u~@`^M0sQxs#b;l zM<0|g$R9*hdExdb@2Y}TIo}Mzp#^qqLl!tTW;oP54^ad4O`x@~N(|_^XZvu@*#$;0Q*3cYA zjm#k}O(02+w@s@RTwP`2D>nj2rF2rcGLoT}&@ugz|9i&n+g4;HADcY-BduywQ~_YBsKV za#MNXjFvTPw112lW588sEnkFkCHn91M&rjD9%2=N5Hib_xjwPB=FWAYVnrDCPEL6k z_or8)tXl{}YQ6>jYl7QcZ&b(MirEZmwao9oOKe y@E6_Pb!q77Y{LF;LmCzMD0@(ceY?&=z}q@bN~K*gmB!LsZ=VgRx5#lfxP|U z>|)QY?55%N)r;)dv7Ol1gQTR~<;s;LtX3;tUS9b6`qHFH6MFUPMZ*>y%QV)o&p+bi z$&&!os()3J>0d5)d=qEiWyG+zuvjcel7z)#p>^vv40~s))BSjN!~ilLJW%d4b?Q|7 znzeCWiB87uWZt}a%AksqN|ihqF?<9=CrtfITA`lp-AVdQpjO+Mx*0Pb@ao^KkA;FZ z-iLsIN=%tzV8jG{fl#hhvsz?iWR&XO&p-b>D}Ogc7QHbHseJwA=Y)rcJJd#Ci$G@2 znoZqjT4S;}=Z&-PUZQ2omdJA6brCxv@c-M34qb1!cZI;fK)dhU-Q9^hd)=vioIAXi z0RslueYbk`YMyJ~yV&arP~7upOk(AVm3H4XY}k;1fB@>%tIwS~$^3f!SK<@m$;ikc zJ%9ZHU(TOTr{7=78;u)pVA3QP+r|?zOP9LQcSz=A2%)UZo>!5I72%Ch zg<~OicMtS>Jwga7RH%STRdRHmYhkN;S1t0KYv&FzYV;_sUAv}y=i%W&vu4eBJ}3xX zg$kTMf1V2$E|8d*2*9t$e^**UCQy^0z0 z9aAD91Uj7#v)PQ*YDJPHGBPqa7QL-R1;`IgA|fJ?Bngd1gVk!qVzHoBmz)K%J0tYn zx7hmQRx}z7CX{x0v3{nQHH&_6$q+esjiWMwfvJ|7q$eA-|=-IO;dw(ML zf?Kt}7B&jgJ@iI!^QH|Oy;eqVlzv;q+O-;{OtE31w5);(VzpYZSZwRDe*Jp z-$ke^lz4xu#=X$*lP~{D@0WXHG#UZ$^zBQj zxVRw8GG?=xZQHgxtVAY@Ow`^eEEbDhSm-dZppgVy)`YS3$F1meI!q=LvuDrdvxTb_ z1%2W?^j{7ejZ>I9+2)OwxRyzQTz_>|zL@K( zc%i}+=%Ec({;FEl=2>Kys#rDdB_2h|(4j*W1!~%~DbdlaAcoDW4(Op0Evl-$g)i5PMzu9`(%O-mHA=#I z03ADaq+Ppq033{sb$HHCAAj7(*GUj*~blfQ;lz%$_wHNs=%a41|V; zGVa|EN@k9-OnCb@XVa!l=yW>NYBdKA9AMwp)lP0ip&X^(%;K@!$JstTnm4jBb?P!P zb?LWNgs;^wVM0lHp}hN>Or|oAdC{DYxq9^~k|a^RT6H$<*oV4uZGY0TO1}5R&^Zhm zGzg>7h)Sj6z4za9sLj=@^Y+T$n*WUsUAikF)IZn!(@tR>GC;1b^zLQzKFN2IIsDTW zhpyYYZ7V_ug)GaD&q`FH%5ECM!`G3MlY`Z2rFrw_ygu>+ZlvfPzDYpK){Gi83bWaa z5Q0UE78N)rD>;EfQGc5_6txLqHB#A4gE{Rgv3u4rf98kGnlhdr*Dm4msh^!*{A=eA zv19#mzL++N*`X8IxOx%4ojq9MbqT-j=TOupE}cA(7ZyCYPHg0Q!sh-jGd~{3+T~wy zHZHP6Z&V;}wA8Is-pEyFWo|w%RD51Y*x`aQ(X`nqtXcCsi_6-_gu^8 zm_L6$-nE+-+wR3CSl~}fP z8DqwbAvHA>e}8}a_US{PK7H`^_6FeC(PMP))}7zuj~3b9o{cN$+qbWxKvle|(7k(i z1`HU0pI>bN;^X5PIbsA$=NArgJv=;+BndAsFMsCDoXX6ZGfBCZLKUwn)U8_=e}8}F z+{A=L`n=MIJ6BFPfQ@pQI_I#FtIo<7UpVT8>^+gAAh;;mw=WOF1PAwU7>hjWjb48F zWi%QMvMh7<{5iYi{G)`z<}I6*{nD>rKjpW!!LQ=!>4_}M{Pfem$x2RexDQsV6|F`h zB!8p_AanQbU4H#}N3qvz-n15V9Y&Re)gn^yx%IpJ2vUE1CJ#N`5{TPv3rh6}LQc z)W|~HN<0zGd+)!8BuNM%2o0UW&nGUkcz@-37Jj#qod-^_Y}qoZR;`KNTpfWXTd@kDOxrzmF3UeS%G!HsR;zhgz++5iYZ4mw=7r zJZyB+hK-!ULg6+nQnTeq(A`QE*IMRNK8AAI;e z6F-<@hrMJWF=PG;GBYxXjEp2HDSwHLtG?#-;S=o?a`NQKiuIi{XAYAmPv-o!bh3?B zvW>P07%^f5jT$%N<=!uonwrYYnX}m1&Ytef1&`U;*;KDyo$cGUQNM9>yFPX4-isyf z73mS&10e(_ib+7*uu%?^Cb=L#Wa^eJb*0~sEQh?%l(`kDSWzy4kt=*o$A69;i-(5? z7K^3Wm|m;Z@_E<~1-`#|^Jd;Y@b@c|SM&Gx=l1Q}0NhEw!_!R)k~ZtsuLBumWL|ys zRjPVux%2x=Kb^nqyh@88dK*@7$z zde`Wv-K5^XkGs1&T{?HMV}JS_4(F`-Hm63TDHF3*zkYq?@1&%pJS%Os+F5@;KR@0Y z8(JiJ@#&|ZqE@RBLa<@|20H~xJP}QNd^`Znn>VNDYoj@Tt>EJU=dY#H`i0iK@#Y)I zvP@!PBF7JGFWjEXGDC+BEucWTc&}EYRs;qHBFi$FnHk)_cBVw8&VORg%^RuNyjoQv zQgBE1 zr9>*bX$sBB0C;(N5%S8biUQ?I%|_4Dpg{v0adhn(Cu4Ux-IpFAJpf2aN#RIz;oc}> zX9PkBf`Wq3R`Dk}HGkV_VnLN6}?2Czsu`?36eUv1LHf`Dz z%Sh&0XM@4Og9i_a^+ppOVk23$VWTBWT#Cg;xmd`}%~32=(0>SMG#a#8ZHb46hX*RP zy^_d6aws$ZxFl}h7H-_IDRP%CUGS?_Fgf3_rUwHD4pcrbUAENecG|UThnt%lvMd)G z(peu|CnhEaS(fP@++9&{r`fsuAj&FROGPT=w>r7vTg^9bW2se2$5bj6ZQHgjG3IXE zq%o&XpTc6XaDO}bHuZcPDr7;f0-QQ^im*jtWb3n0sUB5Ykkk_CY3aDSx{{TZMOs=~ zq2tqPwN%U3-$K2N(PS5Q7ne8c`Uq2(n>Q+osmsMejxlnDD^YlOIE@-LB0IZqOPb5R zs#Gdumx3if`SVQ9BpM3~>n~rH*g9k~yeiqMK%^dEF+fxk)Y!OIoOstLV%NNpVBtb+}6d4&A`1tq` z+^a7#6k^;<)(3U%+O?Grw{P7plN-N$DR1(sSF2uxhXNlTpAzyef|e~?vTofvWLf4? z;w2gfwtvTDkrfLjgkZ&r6;Ac>`0?XKZbFmEjMhQVT2dm;zNRj(ilH!U^e7f8?eju@ zetu{x*Fw0L&ItPY`YJf~_N`lXK;K!pa^;Hhcdc6X75*8&UnF{eG(reeDixujp_o4W zu+YdwrBWfwGHSINv)RnQ{`D^=hR$)=&}$??aDVq;Vt$SxIXRi52O^X*Ad^LA_wL;Y zA?VPd1G3gesA<)zA{o#k!?{+iTA_YuSx=ohRU{?phy^-&^oa7gdGqFlhHSC}bgV|L zvI{TrpRd#D6p!ZT=SRJI^{897Zm~z5I(6{#^DD5R#f6_`5&P$j^1RXJ9|~flvS6Y7 z3xAxGlT+#_LL&*9H*c=YK}_tyQc>JstG&xr#>$l|Q>SsDT{}B>?Zj+0qf)6b8jYl< zr=!>F$;!&IJM?-znVFdwjYcJjzh%o7r^aZq$aL;(W9ftt?A*CCZ%?IPB+M`xK4C*UgrOW7hWhlWP8ZSl%$X+ zPT2A>LM3R>pn)=ZxeBGzRbb1OE$FJ$;g2Y}RSXmJRd_G?&V{~%v+TXl7Zshz3l+V< z&N51mZnk#q+p%`7EzH`zdlzFT&n{IovSsrYOePaT2%0u+idAy4YiIqs^-3uB_J7-N zceyGdOKvOid3S?ZW=;*hH&ciDTEM&g@rk-L^Zu#nY!Q~WMyR`guvh5pL)-> zD>8Jtlz54!>I4>h&)Dajri^&28T7A)k*0y`=%zBCYT?@;dDyGK$|5l>;xu0PuG>kHut>_IFYI?hJ=gwUgEq@9FY_)dI zC=tMGufIl2j4h=5DPlb#{oi8O&YiYUu2V;c4ONlhTw0ciH%3fSs(>$FzRb6CLmf`s zX(YkngV8Kox)ilqjV#NIA3wfW5FE8{Ux_tUCr+F|2!WrUAMVu}DQz`rl9zPYx^-KL z{X2g+ib*2|GVO!WP8Y^L4u5YnZrmeP3`^V)vP?~HGjry+lo1O(UZXH}>{tbZ%$PBQ z#0#gLy8hG2Z!4i(ty;C{-ha5A;R+8ASMX#=j}UI8=+PT2=nWRqvP^bIZWMDPMNj|! z{gm+j&@YF$aq);#{c7KRpi&JJcPNhZ+m|_Y>NK(})9Yb^wJe58m48cd&YL$6S(edi zwJct|n9n{f`AJouN;;Cx#?iljf6QhJX0w?tUAoY<&(I>TktB)TyLOTGdwh{zZPm(E zq^GCb2HC5Zl4mekY+2=s72Q#(R76DV;8x->d@2>4*I4lN0wVWD5*{92Xr11Z_C^J< zk;J-{GB;AxtXrooC4Uxr{GJG4z~3hl6cmKnY$hcog}#0J@Zk3g1@b(F$-HUrvVQ$~ zv|24ztF=H8vh~4r_U_%Q?13&_yExo0Z@=aQ1O(U^Mr6Xn|K${BlZ8Z^7uz6&;OMcV zEMLAHi^W3qYSnr6#U5pzH^uz5?C>&U-yVn2XhfsY@WtFOczB?`F`LcQsZ)oAOMfV~K}nLx%*M{?oJ(LyKn>scRg=$AvNR4V-a{pmmS-TxRi%6*fm5Hf4lxHEBt z4o}arF>;UF6Mq3LUc6Yb+E=e$qjTpj{P2&32&++v2J%M{rw;Do^EdBnhL@ z$doCe1;Y7VyLKtzew#LJs9dwDQ~k*cY{rCQX{qxPNhDYS(_6yLVGKbM_1uFI==M z)N9e=IaaU!-VR6>Cb^H?9zA-LPCE`{<5tC50etngIu|Cg>El(qeqV(bZFm!>NTo!?AS5(?AgPyW5*P7BJ5#IZD&DLDkMp= z<$X$+%YWQ+on`VK%^L{;Nl7Y_k}5EDYH6`ho1Vv9Y`pFhv}^XCf>>3n<`J!&)qhfi{-L5s!0#EBER zc<~~;ckd=FER3))`wi~x?ah~8eo5f}6dkWFTf37_CJkfr=FRB!dNyv{$i|Hu3xecDosS}+-1|qARD;;|3sizqJ?lju`a}j$Z_j2ysIV4GB1qCs3)M$s^(|<5y z!3u^B9m=Lnn@C7V;PU0m7z_rgR;^0y+O_H0wJSXajx3sydhtcPy}i+DwYa&u728&e z=UQMe*q9_QFRxNDb$$ygaP=z4vWnru%jSguUV7;z?%%&}+xYJ8JZ^b^>Kuj)8A5b) zG%+zT+`W63OP4Mwugt1ZqXx~IHh-mOuU^z@+)9ZQ9+m6YuhXGJ2LJ+|4Z!N+T`C&> z%{SlV)~#CzA+TDl81E;c_43EX&4aF8yJ9k#2nZ-TNj!MaU~;l;(Nni>g+HToC*459 zh7Fbe=4XbBM5fNXi(3>?3F}DyVEy-t`RF5CCGPa;(-|`Qy;7IkKZ!p6e}71Hgod$W zU8z+I_Qd{q-l_d)==Es%%>QTV;EyOyRUJOA&8bqUo`?cH&OSZ~X&+)DvVJB{`B?r` zo8(a?$v?+`bp>)-iJqi&`>ROJh8D`@ze~#Bj$SV1@@G*Z`^x9?5TIPjmB@L(FUtQt fV!8Zx%KrhhV87K|@rjNA015yANkvXXu0mjfCxiWC