From 911931e22a593da479038998a999fc339a95cf3b Mon Sep 17 00:00:00 2001 From: GHA Date: Thu, 3 Oct 2024 00:57:54 +0000 Subject: [PATCH] update a1a851aac76d7e387b6dd76acc9d90808c864886 --- .nojekyll | 0 img/icon.png | Bin 0 -> 31737 bytes index.html | 1331 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1331 insertions(+) create mode 100644 .nojekyll create mode 100644 img/icon.png create mode 100644 index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/img/icon.png b/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a98d0c8590c431a129af2060ebc325b6e9002e82 GIT binary patch literal 31737 zcma%Cb8sbHlz&NHY#T4OZQHgdoMe)TZQGjI&cwDcaVDPFwzK)RYX9G^>gulU+voJT z$KAghp{yu{2!{s;000nWq{USM0I;u9FaQkH*FpbhnFRpA)aa?M?W}6zM&j`EhlTa` zZzRqh4&O+=xm$nTbYHFhW$jA9lNkKDi{S%2n{ce_=Hg1~HTqLbpdep-klL`X^!@kqALK^C8abEB5`;P~^ zQqzyUk5`@XkEd$c|4NOBsju%}ukRmACJ&*FjIcfbJ-hVf@p<`b*NSvAV!YjYJ-)P9 ze>~?OD#hKt_;m_;Uw-fTLsneiwYpj6D>+92xJKnm>JHeCPLbOBIY8eU9UMohJJ^tMvLjUHZ&tx#;w8 z>nva~;Jp7=tc!U6V-O#D{&`aJpz_LZ=kR9_p3$N!-|y8Om9XDIe(Z-C*SiIJH66PT z?}8iV;j=%Co-W=8p^0kNe|FCE zF^0zU_-6d`yZ-0v(>BACsdxDOJ)LfNf8Pi}EOq{0Cwx%rZRWi5;opqItoQdg1pGSV z_IZ7eUi%TJh=g^fe{g^Q^idAz75eN9rQEjz)CRlIgB-!&m(N6huB`0%IL3NZEtj(W zBrYJPBW{jU>>WNp>4;$&UjV~z!FwW+2BUA^8b=9Hd0N)R{fVmEVYb?vGcOf{S@wMN}20(8u3`DaIc`6LP9mbDV)qFA(cCD*$Z zp^+|9_xu@NW1Y^b<&!N|eC`Oel;HJG^CYhwnYbh!+0xoAVc6JK-dy%LhHha};#&6c za~c4*ug)p#OP4{buRhskmNjI#f?~Qj#@h^(GCw4gydTn z^&FJ{@#4cy$r2){W=1b~hf0N=>Ejk^w>vEOEpG7cTY6un_0*1NR`>bu>0lWJ`cCZb z^1~WiZh<HXCm^F!- z+wV8I1P3;*doxZ%&6Cuk4XPsyyhs5pj#1`O_?SJ;2SqC!+AWgVeBdN)B@1c@dBX%T zdch*JD}nglCaFuQa+!TBdKTg?rR*M!U7EPsokSOX6xUgs2E^bIT@Ept^BnxsyrFgQ zTxQ;uwNQi^QGKDUNJI3Cr;Vfnu4QE`E<{n=U>XzYl#`!0YELo=`h z_5*~7bv8bbno8RXgMeU!1kC#`?7*j`2dBR_WHSvE+hX2l<&>V?svHvSedr2cF-9%T zjxmOl`H})4HTD;@)96ndKKCtjU>>e4g@ns>^r_*NLo%w`MBT$AfkQ&EUG6^A6sLDe z2H(ZMqb&kH4#)D6-=I45=?=?_$8cAnhRYN)7~pFGCJ&`aC&^&MW@F#gH9FM*osoW#6 z0w_F4GDeqUxLxPa>MUxPU3vrSsXrn;PS{~^$w-AR)j@P%6*q*=Q91}ae!T~d!b&*& z=hfJpkIOl@)S>9UiJ3L%Du*g4JLpvI#3}$gle`4!QyeXrm%$@$`T?QjC9o%y0$l&I_0>Es`qqAW+( zhpT;lSl!KdHnkPFF&mfuEOSFz>6V81N~+o@Se|>r`uIV+cP}&tW0}JkCvu4NtG&)3 znV~%=35xeWt7{+ss!t_GH}CA_qEOcwuC5+{=U%8M${ci_%?~5L{MW_ zFfV$@t2_Z*$;9}H=1TN(ta*`Sy_celBUB>$#=-Z-X1Gqei5JXz1wnb|uxRdj^`t!f z$NJY%HihLc&Q`W#mCmb@j51@Yy$sqIGYcHw-x2Wx;>BnK1c)NOW z%WiC#Yp%V=(9`=y^O-1<}~LF5j-zi@H}k8#L?!0GLSH=ls!o2cW|xo?xy zYpsRsVgvHo+&VN|>XJW-2BF+|;e_kappgBcw^`C;dHvt$yM=>X%#`K-_#)uy2ZbF+ zh%@i}EZx*(-ZgX8?`eSevE3{PU+Vk$>-oMfkQSskhO5Yv;SEP1N@$pdhnIK7jttkh<2GqzHym%hKfkd%>0kep>6W+s$~qP=Bn2V zb_n=lB=Z|>9ln)HY5yB&N8XJjfyFkSxe+!znz@SO8-%rkf9x3&BcP!raRd`p{mK2{ zgwXl051m=af(Xc@Zpk6SB?`URkCIArg+vm^PvDN2d)7)D0T~!oH4t9lis*|7M}@kj zJ*tOQ0UlFs5Da&r-vaWLQAN^(L??qigp$|7!7m95=Vpy@0?352nmvUpDR9F`E3F33 zc@#h5#(@Q@2Iu#FUdLhFi;^icKN=vaQ5b7dX z3h8-P^wbdggvQlioDsrxKADT^sw5z|B@Zo7>t9lFjy~A!;k%pl>Xf<$OzaVzSQ|pr zNM{n+D@Mo$G%7|-G!vP~7|Qav$4#8Xg_tRdQQD|Bd%zqI_(8>(nuF>AxM%bo&VDRyJF__Y z=mRWMM3gs8M4g`UZ!qURD$sRwM->9@V3!KXXfn6}CHl560(tK|m_3p0uT0b<@n5^X z$NsdN`w)rW#OWe>NNe+MMA*rb8jN0GH;wFxsg!4Y&VFo|!Hog)@|$MINK zxhf@e!+x0!N&^_48v(w!B{FQ%<2SqD1QwL`4ixEl4H+b^S!YC!=2RTmX4!jCbJGV) zKKnt663elM2p|^827amvXk2dxw0Nli_797Te^U0FVvjNI|4KwEMADMR`d%+k?{yj}(dNXdE?1nV;KWApg;hcdwJP*Ok20zLB_TN*tuTd_-O1!%&5#Udd z6a>tOla4r8hyQ{{Ni2%{DxnzXzV+tvN1>T3n}YFB9fXa6mclnVe{+<-Yz6c0CNj#h zVwp@fZ1-Gk4eO1*OYaJYGZ*3U$L|?4SBkypjb&9SYh0v*qSR0%;6eYl~vI6 z`5#Obu63TIw&LMz4D%L+HJ{4*2Tk#efyduBBL|Q3sAZvsgVheUW@JbTxbVLPU_GC13=?c z4z8^5c(BYFsuwVz#L9n^mA!i=(M4l}SvkQ6=KnOMg2kE;FUm(XltEj~X58Y; z5RxASVfx~6yg?MjX@{*G%*!savbq&(y+voFr>uy~yf=i-(U;=-q&IkHnS)4Tf%TH< zLZP3vr1Z0UByj^SCA@z&fl>CX0AC1Yi3uuF4L>$?mT7GW%WAf z3EUEdiFYIV>gZvPHA!KPsa5=EB0+ve0W=NHJ2M;oS{Vffr_9R zZSRnF1bu>jCpweR`szQ66^4+WApNL`Iw`QGdJZQLLEC7|lPia;DT-X+L6pzh4@Co` zg%CeCgDvr|=AR6YU^)*k3Y1?sS-a@8ey>^^ zX?4Rp#{U?QAkSFH-k{(9L=3k5lBpjuY2QQPp})3uOTS1OWK574Lpt+$)1@U-3_<@1 zh-d{vF<(p3(hUKq)E7}O^7JY17^=l0*;LpohD(4E&^7Q&Yml5K^T*Fo+H}DLE~lY# zqdy%%Zu!Fsgm6{H>P>I5S?`}(0f6j@D`;WCW{>5V3Blyvv0i) zvpmZ-ZKVsowkG{*)YVtq!yz!D**uo`sdd2C?fD(qr}KcH24Pq64yoMzkKf0?+z z9w&qI*?JM=Yeg}TH5|B)oyWSP0}j3i&1la4knITcRC8g|_SZD8qlm-iVkDvkiG6Uu z*qGv?{i_J$Bdl){i@(C}C89+lqfohrv1TIO&9ZWHp#KRVx2R;KblC~e?NN``TIomI zk$$Pt)fi#vAcrJ~p+UQa)tM0KGjR~-Z$dbg^;2YM2tw1F*fr+^^eVI zRs9s%BG~K?CZA5#I=liXeo{+gX#FSVW0#>+Kxcful!gw_ez5h2j&Oam5esTOUHfWl z5l+I4dJ@xQd|1_(g^V-NQLwRpO1Rkt+i&5a-TP4-0xXLD?10ki1yE<15V@EH)|+^R zf%qqy7v=;>;S47CwE?kY!7%@}7hgZS10y%+d#_M2F?>vSAtm6S1mcb#2q0otbQGLt z=91A;M0KeiPK&F|%1=LYedFC1LW3%D$bauz?N z6Rn|}r{fQ(%wD|5*kRz7A4M@ow9#qt9_zhA1t=GXi<>mQTU}QkRP1ZPq&6B%6;>tD zd7Iieu8At;l|}H8OqeVP=LVDjw`q^DX{YWuuc#}d<4#0R#ftE9zz)y!G37JIugdBv z?Hr6l;(^+6DoCp@;{FFE5JH2H%5t)@Qty&K$)hQJb;0Kqh*kw@K0r%zhVk0Q(^Z(K zG!9%hI4d{=Dr`vc%5k#%K=euQ+c*wNGze<&?-+F2JvPT=E)4#n%Ni?fXK|>gCk{N4 z;{0T)>FSH4@UA36TQcHI7%kTKw6VXg_SX0Y5n}_w;yXOg#L`4n^ctsH>%|lGoMD?n ze{ZkOIOR?l{J7`F1m3DR?N!)=4?8VR=7!!8o=&H_%z?dt7M3spJlyPq9~R%m0~L+1Obp!eU|#w#7QqV4Q27V2 z0>9#W5OB26XEeGa0#NqL$2Nm$^aVk?H|2o3yg6>Y+5rQ64Qv!u`<_-8L1Q4!ncSv2 zfvE#eC>}2HO9!tXgjH-p*Br zs^E5u;1nXW8b;IFD51W;o7{l z6sr%UX2oeOT`G$IK+!&iOzxK#iR#jH-CLVS1UpwYm!}aE88;Ht@t|T)>QS0N6;XD< zK(nnLYj#uLMs8nAdZI>^iT$R`1}+S4*r<23sucK|y2-olkf7)PY%2X$He47BxyLFC zzJwrCWy2<_7F0MT@*^YH1Qw<8&if+LIEJc>(T^`Nlx9#S&i!XLQM{1jh69<@YRy#` z+0JPvH~FzFv?VHvoZN}3dnztztQoU;XqjXVbU<0#&GLw321#l9t{G$CO}{sE_OCun>C24c3ZQ z!Zso~{-lZE!98M=8HZH={9LbRJ2^j%#=9iZ4w}QbAnvl{UcBVz| z9m9bAVxDGx22xL1g;rk!7#2xDqlu53NS?)^sI&0zt{2ZDZ2(v49}w&osLBeEE$KD$ z$P*|q;4o5n9~2B2Tp@!6GTRa^9d%*JYZ#EuyXuF6;{U>kZU(flMm0DvVEcoiPt2Lp zMTgH;?nB%JlS8yg27X4m-z>WgL8Bff7~hK1aK#t*=*l~ce?Ne-P-*>Bx%jz zFLo-0ryr<>gr`mSlyCP($z@Uog#WWhKKqT65o&$}@!{%hb_66dL1Zph?DlWCJT?vY*gO|xQ zOBKTdX8q%6TerS<=R5gWR{V&lu(pGEhw*GGLTmC&0XRLKcg0u78po*^+f2+$I{t-Q z$W2&RfSf!)b>8c*9?nKqA>!0_h zzh?H@V%)R8d+}oP*K0hW4pE z1k;6G&L0mEW3_41TP=;G%4OUlSU(M4~S3fkAQokwx5`7Gq^(j&!|ZOuLgs`|^V4;PwSDb1@C41^i{ zi}s=B8~?DRqbfX!Uz(KtKP3rK_U3`TPL6Jtj+8fKIYsXGKQN}$v1qiN zo>CJRkg+7;sWa&5^qoB-vI6raB`DkzzKdu~*CEWg%YuvL;#8%wHFgWbk&uzGfu4{) z3@;1xRBYJR*+v2Q z+y-tDayk5P;%r?|RzGVak%Y6ccfEHw#KuZ88qffp`cfF3SN{G7xr&AuCrtT0R`~pC z9e#YlznX1WRC0r)wlnkQ>*r>TKlHlSNmr^e0Wyh|y@;aT^)OF=xt3O=qAP4YWQ@2` zZoyxvy7ZcYqK0do2gnGdX!nQX-3VZ;IM;1#^RelQ(#28MG-lv|Ds6+);Wc%>X02;| z!1KSW)!fCNb0F|1V1Zu`zc?K>*McbWmd zO|c^x@BaKe&`HIQd<VSdw^oyO}#Ou?xwB;4EXA;<`eU+PaU zR>NDln=Tyk5SYL9$E*rC3$17C4W^b;T8)d~kLc#y-tKk?lyK3)O zEJX>Y3>vpfg-5+w*D&-|$G(tUj{2=5u!@MN*$Q zgI8Q$ZHNbqdx82px9#kc0GSY1i$9%adRFlgz7xz!^HXX~W?NQG(BG7%WGVvv1UO39Oy_<~!3wx>ygi!MJ*y%r)|pi*i0!46+y`oR zQTCM}y+5u}I^v5gr7g-=e~YvN!<9MTb+mqu(zDe;P=iE>xv0=p-pv>AK(0@-9EbVS z*_RbLc&+8VG1pue9IMO)#hkOAik6+KH`-)9+$yEfCK|>IX=laQCE?Wg&N;j>SL_r(wzeJU@>@&owNA6I zxH+K8LW_cxnfN*;4>-Nv0EK(fY!kj^%e&P@ugd)VXdl1Db0t^(2P{xcVWJ}13)9@p z7wft)C0|4RVWUDcUSfC=B?eWADxlp@FQ;2MKcsNYsC2Qa!@>MV*CiuCg4&MPwseXl zNJ6h=(@jnNPLUaO|JVO_MVFs3Cu8k~XEqPKB6k2fH+~aAtcwYe%93-)nV)Sba(Fk1 zI`{J^(eA?K<|6T#l8RaDuYKY8g#uX51CVL)DAfQX#+C|LS#}tbYUb~|5XgI;8gQl3p zxAJzwxqbgcxw|%y?5wu*UctkAU4SrI5q8*2|%Sd;3{6^b|R^~zxz^A z7-ir#c(p(HZP?)_b!l3vYheW@L1%LI>MZD>Z6k2gs_`R|HRwmSP+H~IMMwf#!(C;<< zZOiKX9`(5?8%-^xY+QF7t^1J9Ldl;qn&;4{Wl@gq8ZBv@y8z@>&)Hl_5n*$b5Odjk z#LCY_^IS;zy@Jr;%yZ4Yx(X~96cSx)9XTIr1Hwa_usFI6PTJA+r5r^Ug;pDKss+yc z&9*hpZE20|W`$)h8u&joupVI|&M73q$VABq(yLVe-0t~HO&72f5SELYde6~YqdAeP zVcI+Qe6_el6Hz-(DiL(NOcws^&z5`G4|b{*y7eL17}`{10m;uc7HTuid^6MjeOk*ieNBPLC0lX_b418v-Bu4T&{~jp3^*}Vol0KqPDUIizuW)fr=B1SMXM>N5pI%dIgtlGNEvm(l`Q`iJ_Cy0Ks}pk@y)CcqLQbvY_=x<_ z=&LOQm~M?)j7Sq#zf~B6E!aY#mTGFpx{{xg2jo{1pfIRQzsogm38hzXA|~wFQ{nVY zJ_4+jRL@ssgwOC?gfLP(7HMnWx5Vz?>_!^5i-X5tZ1TkAL@3iwokyKg)KhX5dn8o@ z{cyH8!Jb|IDGHUQ-&@8UklZI|sXk&jlY?ks1+uer+q4#vCDiN_IybO16Q;>GB&3hgKfqr|vZe3}ICUpLG&n_^-xd_N+%mgqwug zh`7+T+Z=zTL(|S`S&g-wMP2pC@d%Bz@@)>xH_F6Ny!b@0`viAIIfavQ9OG2TtHusF z%xK^mx5!=BkbQ^M@8+8d=?VqU==8IrUiE=nObu~3fDYD4wH2(8ZP=2Weka z#fe25!;r+pZ{uUQL`@iyi|e_Au!ZXMsld)?fx=m;YzA_aty9k?yw7{V5h=V5{hZS85`(iu^ zj(^oRO5zE(78H%ACkscQf^# zbBi;|F_rU-pG<&#IR~L2xEfqEX_gl!WUAWD6ZCj)bXMblZWB!}q{5np6aDJp$1U{- zx1WLl1a#`hcN>=Yeo%Fl0Yl4_L}kYbutK-#bk(&97_-WlG)`KdbIz&|1ID?DqmeO8 zA4gV3F9=;VT`AkSJ5$i^ir)?Oj92gi>PEQX5V!lu?3Ro~!#(Hy0IlGTanSu5ls9&m zYW7VlysaW<3v!)Wh%YYFb<1Am}t zL+{lZgldj+gl}%LNzv0$KqSXqabDxncx`~Wz9fJxHDJf;A8SRUmkv%A^rB!#x=z+t zvWQSRZ#Mevh)*8G<4mnp}g?LJ&4_PbV82cD;|}JnFWKHGP>;xIty-6qScfRucrD z2cE0<%nXK#?R&>w5L{5$k+Rg`S)1xVt9Vz7nig8Pn3JJkgCWW{{3scQY}n$vlc5wK*+BiFJlo-6~!<;It3vVD;O3W#7{A0 zH3?lVGLE+83YJZCj2#umFkj%<$wU2l*+@SN&N^Y;iRu)o3H2z?Vx{Ffb}mje-qNY0 zAB1grnEp6&o}6!`NX_=;rKHFY4%B9O_L?r!Ex{C0(oLA*om(hD>K{WHG0?MyX}dj5 zhjjn&UW#P9o}%iIUDsvM-fp^ly?B9Q(*V~&9Bz)&T#!a4v$7T+!oHssUO9j;+J2z? zb**k0Y9wQeW?XStfO#Glo{e-Brguu0$QGnYPT&|V{dcLOf-OO{dqcC1-`A?PO^2m( z@$)9iz_*a zDVi=ult9DrfGjYN^~rMWn+i-{;Z>A?di2ppZ{ZpH14Lt`1vSLD?+!CBszHWu#s$ndgrSj zX$j^JJiH=l$gGW0gC{96Wh1o%U$92uFU_P_@Qj;dBo03R@tP;(!}aj58RTN$TnH0>&ZzWk}lRtWucv72JQs*O=}3Z9=zlTA*$JV zG)eO`!3Ii0|B?p(kr_I>K0&3y$3Y;)p^4BqLKi6=64guT6o)o(w@qX5x}pFsse0FU zD_^?a*$sm=^4ESkFLcpyFbnx#luGfEq__in-W$rwaky!POLY0k$7RoK#Tx-_l(h;}g(6!2( zhQp$j-ZT7^`83%Xo5 z>Y_C(zcJmWi4ITVxVq1rXaFsOW>Iin6|XpaRj^o)x!rNuqJIlH=I@0j%(z)x!8v-s z)W#C0^NZ|U#P>&jPU=4C7Mp+0${|F^T+opO4Ke9Z{N8Rpifn1IlbN*=31UF`ys{`gP|64FJSC@jF^D3`3k_WsAbyqr~wR($apzKq}6Pt@CxTLEL zpo9`)l)))q0r~B?B9bl$s|mpZtxES_mde<3PX9g}?M+TU=2)lP3Hh?u%-VvCc}sO< zQU0I{^5Y!R_e#WIvDd7MjMXm$4TFs~03D|$ch!mUiU*PbX&;Ii?ZWA0iRH)XX@-PS zZV{goR47T#n(lYDJ#``JzFKMO)PrY*kofO zRCGB$n*V$fTwsxbHZLtqTPP@6VoZ{N?*lP04>4;>*&mdSk#4Ha;55r{f2`IlZ<5_n z*_N`Vr%vkf`Y4}+sld1G=UA>>fXTN}pH?0jwb1GW8>rNV&iy#!-D&UyA}7d2GTUS{ zM?#)As(A?5ym|%8@bCjgVWRGNH?Zo(8_R-?#syg2rOEs6Ttp$U10}5`d1b)6l_IxQ z#FZAqri~1v9t?ak3>e65Ded}yNar73dsa;&AEe1F%r;~`3tc#sAeMr5s=mPd!Pa78 z$}(bN|A*iILhb+ZN#K(nP{s)TERmJaB{(D5iO=WNK{4W%rNinIwWe!4G5$G^&2BBN zs!ss(1Hc3LxqNZel)o@i+>vdAn9(6;1*)2p@gdq?0B);QOf{%3#b$wP+ z?6gUR)KFi9l8YXP?<}$-RWrfZGW`pfD0KFlbsHwa;krO^hOkGM2hR@>%rH zw~$*b%O+jRbFUk0DEL*`(9^pZk^l zXGx`cdpR8(H)i()wthn6c+OFX{Uq=9%hv{OPFpE>7++x>895y;362~?#24!@`~yIT z^=e1d{}tHW_$$!j=e2tK3dU#sGr>5t*YRsv1(d0rlsF&)AP)#$+S2`Ry#=g;w2l)1 zfHe5u4wgcPg#UFB+F3?H0(u_|0>Fpl8)$w70FVG=#6{HISI@HD+>uPFxnyO?egJBtx;$fSc&fB9P;kB(Zl*P4vlPuSP&0(-R zON)B4vR%Hvv!DoDB+9S`B)|IPTqksX+vK_A`RDbg?Jx%(?*F+dz{QGtMSZ+0#b$Y| z|D%lYl%|n{54K7G8vo7(0nHG`aKIn}P`;vSC<-y`o|mc>u}%Y3$C=sLGS*t=)DORH z0%&MHtzj!weu(v-N7J>oMDt=7Wf0Fvo7u%xqNu{RqD4d^5v9qK!FS5RZ}PoH;H_1n zHmgHpQEE%U!Kba`2;}u1D8_;BmcUZtLKxAHeG4~TXoB6 zdfCldneFmL;xOBv>8!B(VC?whe5K%>NaB#&u1uEXlSkafy?|m4xJUpVU)4Z0H`-Z{ zzsiSzp-A{efr}MS!a*cnl6U)z#mC*elB{iDbTnNlHK+`Qq}8Fy;fulL-6pI(IFITHhNkn*#(iPsu0#rXCFF&`rM=;sP4lCV_8D3H4HUa0QX(_C7fKbo$6ybU z0k6klgL&P}>ZSW-*JJWlGBgVN)8vyELQDW5mxJp_aeAXFyGfocqbXUlCJ zlOP)loou;+@zLCGrQiY6-2J-cDF1ITj?js00lqMyV4N+CZrt<_#IhqeE!~fsUh-Xn zGO&uM!ZS1Te~HBuz9B>yg@WR;G2&IpXp0irc+Yx!4wYHN%VYf3S8U(5Q9sv}2MoaZ zC8v1O*;w4COn&>V^R$G)8o$k4%ce&HP7rhFeSdEkOItsfZ3QmZfxl4_DEDQ@7 zez-8k0$&Y!|GKokB?c~cRs*JM+cjX-P=&j;Z|+CnT9Eqv`fKOVW3Q4>*n!Woc5ed- z>8`Yap9{NK8w3##)eW^D!@oF&Yk(Cnd4|j9r*W@xYs%WFyYr(QDq|%OcJG@rMNuxY zcCk{TmlMcs$~&)~rzu5g&bFUvjmwg2@!Ayn5&)M_B{PmwsN26rQssOE3SS^BY4+c7 zDQh(rKgx~3seQhyj1P~1U=XZyp_Aq~;l+CW~WIO2!fJ$Y>vL;L5|maYGY zv__^A#`giD-j9_A|JH$jJVas+HtR?)Lp}acKVR54B>5p4{9=3H4n5C=}w5aX<0@OHCQo>>xW6zSn(NHfX7vI!>s42JDE)5FadFNVkM|IVz4Q9jMlVcz8W<@= zWhDS#_87KDp*D(_6S-(D$JM6q2rdYKd;4Vw_Z?H!{AqEOjQmRROZbYYw)9ges%9&R z)n(f689ioeaHcCptAvixNhAq4^#8nt+7Gl4-Q*N-#^t}H$Csg-YrX9J`XTdt2O*=l z22*qt8*w2TnIJmOm$05EvtlHQJaBfAmdxf+kFt*APgO@Uktn#GO|epCED@z%;KkIM zrgb1_0XX#`{0m9H%$&*effF!6JzRBe?q|&o&$&JvTM)bG@tmuRt)vN@@n>!-B7VKB zjb*>fcpj?ir-G{rabr1tES&am9^K&o?a7G?J1;%n+?AAKg`AeCWlIvE)j)q7GLSuh zz3%h4F_|OKAwe@6Wz^};o#O|&NB@s??#Xf5+PkZv=g~+MrNXPCt9C6~A*1XDfCq$x zgj^pg+Wq(#w5h!=*^|HZL|SR)k>+6pC>eK?&HBEdtu(Y} zN?ODh`e*51=4YldCK4yZZ4sNJXqZC_sR?vIW3e7nFNu`~(X4SIkJ*9g-&B0DUSyl* zA8;;dq1O3^INg8ps}n0-J8tca3qh+TSt4nIiXo!{L;1^CM(*};0bkbgHzaS^0WcOw zFZY6|mLbc;+k(SGQ7yfb%2qpa(kQ?fZ+7Ys)rENx{v<&03ZJq>18(I!+BiuBnxKC*`A@%u@iYA^4hVED#bMel9!#H z64Qo7Yuj%wC4V^6WaH*oB>*vaZ4`VSXNh57I-No^ckS)fK9X)!dJ4FYCgf`#8nbnO z+*W5}0Vp>SIQ;zMTx|U1Q$j?ad$}475F}JUX1=TcChN99B1(7ttT*zUF1eo?+{%~x zSAH|En$bW!7Z3%hb6dL6=zWrHnwjPdl|mR&0x$*kkf2s~P}Cii{1<8qcG6Az%LyX|Lnaep4Nm9h$7>1z^D7s-6wzn9aucKn zfoc&+2;A2ata=_ounkF?f;3>2zX&+>s^s({f(1id^3p$a%sp^Fz5e^G2`VVc zm)ZwX0v*P_OBK9l9_Dz(!lF}BgVBDyI1*2Q*mkdNzyd6Z$MhFX$3MS#`1$2Mz`wF` zCS+^{dMl5=gR!AS;Kt3JqnK$bd3~^63>$L83Z*zu>y#J&YFq{?Ci6v6Gde zEO8c9514)$z?49|qv}%yuP@4+a*5*hkOCluq+LA`S!vcD+Ve_$hW5HH!H)||p1FpD zaV_F&U$_?#X+C&qydY{F03QWvrtu7sD(S-;Nyy((cG%_CQ73|}Zp>w)OnThGNLPn!Q=eYftC~PPP<_?;7 zYs0k*T{z@75HEz zQur!bdmY_kgZAH%qI_`iS^&_jk|l}t^a>#W1yZUy_7w9{JC&w!X3DPWMD+>blA){y zNA0tT3Km}@oQS?=ors59)zo6ta;Yy{FkL>p^tT_SrpP%!mJ+2M`$O|p0EP61^RAPQ z$5)NX*BPno&}aZ>l1a9a{aBjBE2=!%M!F9F#c)u?$Vd6WDc9C1!E8>;%Oigc3eKyy zV8Cbc<;lu0J3EIISrIO1if{T?@-@GK{W8H8%(d;ijB%3AR-kjTTNYbP_vjOOO(a+C zGfQr?b1=W2Oh{#AZrCG&rHnAf&mODz!zVtf1@*osu*(_RMnI7;40ffHRGsVNv9Fst zRv?SaN^@=sbY9*}`0oa9DzrjGl=IWpHRjgsJFajz8gW^|h)|FiE?Q6eZO5Dcb}fQ< zr0zZ%1{gKNV%vfF}Lsr7C`VtC=4)HR}fiDzVVxW(|s|7?s;9{KhrE#c99F!69qS>SWiV-#R z{Vw?+L<`DEs|93!Hj|fpWtMYSlpm0@@Sm4OLo~KuZ5lN=cm4osDILu(=R54cX;ud7 zIQj96elyEWsYa}gBch)tDM{(cY?xm>@la}k*Grc=+08wn!KYvS9R}Dh7y@nwfPZ{J zeDz$sEJ;j2G^)~pxVr=o?(P!Y-Q696JHcUam(%|~&%WC?b2V+% zt9w;_^?s|(5F5p$q~KfqeirzIPJJR~Y*FMmW?`JjWNE5i2_e~?oRXo7vkm_oLWbW& zjov0=5l~j{J$@qBIcivI?6Ruxd^0VVdO`ezHE#>W7J33W*GBL$*&x5bZE*1W8Kr0~~wM7r_G4(PEq<-Mrllya0mT$gBlBT=|&A_nf8XeDd zBPrJ^OMOCEaQa?C*&USCeYV|m4<&`4DiDkwLusn$D}zN4!l|%&Gc4&!-E2aGD!cjx z9lUfDFMECv&P(Tn_Q7xM{0s^rg0D*oxDUnIed4t2O@#D6Rcz08Yr?0EAE zkFr+W>3yw!Qr%Sq{K?Evg#(|guIbC_-VAC%kfI*ayf9ujnjCg0-M+2ZPKB+o4?j?m zSdgDy^Ar`QpeK!Sg-7-na(WG=+p!0%A@Dxbu$)wIqRa)H(oP>bfLV~$d@9o*T%Eio z)eqNZ&6Uq=U*n5(cB=GY3X8Adzq1&JBz6AN#;KErEC-bhU)j}3_$vwdUjfvO2*8f? zv?r}XSogm=mW$=mGLF0uign~t&VEsf*Y7KL>kh&x);NR}Fq*6tbYag1D>Zcw1?5mT zp3)o?c6g2cJG>s1+{&~#l*!{W(K<^(_`=ojWxv_W@%`YoWy9*Au=Xo#dhVC%R1d7J ziYct+a@jUJaAV2qig}LBrFmUUdZ5iQGLSzZNa>;UJXWWrCb0XVI;HjmC1B{%J&OJJ zd|Be@6Gh(@kso_1XfVb^mVV>b+WBg5b0W_;sk6&NLnfaY-!aovnwLXie9NhlEY}Z2 z34{CqX8V4Njg98tVp7Gv5wj3oooYdv@U*h0nf>>CMT@|5>!$jX$>|wqswTjG#Uc=; zC+_*A;n*xCgfZu=LKk_3TxW(1)ZyjC==~oPpf07}htIwCjoqctl6L{9DXDqfI zyuN^o$rlSD_H9rEuc5wR&fCH%?{#DX;h{b#oY3z@%zioPrcrZ^0D1QqN`rTK%;sRE zxVo2?(dWrwcl`WRe3DHi9zr6X$|Za?ojj_k8`u7eD^Jc7viYNQO2%i9zQjdIm%fa& zT*?o*ys`{WWAPs*csA|LciKL5MVr;+T}w^QAv_0YKli&mjTFW*`9mVjbzCxpfy}y< zH7N3`^sBA(>+uzYMgd)BPZ)}Hi7Fq3;M^9!4ekV(zoU$WVO9u&{9sX_%zk_zGcmaQ z#~?%bAvZxQ*OAg+Zpvh+Bo95&sL`21Lklv_@I*0qOFX;;M`}V)r}mwh_3YoF9f-%{ zMP?M~uX2TDm)4oc+f1GJ&F^Ai>b=ip!^|FktkiOlf0lup!lx2>hNFqcXTFIOCM^?8 zK&A3p@xjsG*#9^)1m^Ez&dBP3Ezt|C8Z1v60^fBxzA zdBTJ=@rmf52FWXKK{;4hh%EoV?vl$2JtEL(t-5tHhPBf(7=|)YQ0|s(A;s3;6V;S7 z^^V`Zf6upEmCnc)c-^RyS&B2KuO2veEU=uUn418Sf8b33qz~GZ9T@&sTeg!;OzuZ{ zp|4=5jdd~qlx|Oaf5iTJO?c&u3G1?jfqo82xtJ~8y6VfE9N`ki4auKI>}fyV=h(HH zttZo0%Gti9mr3RM?H;$#>mYZYK#KK?D^5@#h-y0EZ+Ty$q)YD|J_#GSN6RHhxJH_6 zFNq@tF}2(sDQeO1-2`DvVm>3`L)3q&Rmj?}wm zme5ZL!Qja2a965fi#iq;Q18xHTeLRPI-Dcwe0x}tJ+l{ouiiJ(K6j!Y)~_sLk1Wt3 zKaD+MZ%w~ct&9r_IuJyk(Kt{RDkjFaa!tL%+t%>euxzp2QfGS{q!q_0B1Ys&6kWrQ zl6h3L-OvjLE?+`5{9cY(i3p^FrVrGksR%}!0HeQDp?cjqXwVU)vrNDa}bE>H$ zBPph(5=f}?KBU@A_6+-ahcIN+I`8q1IPK-ywvsh^s&6!+v<@P#IUg6Lm#k-1zwuI8 zkAm78#Nd5jUnSLruGl92^vf1X!CkcY31cSB=$#=Uy|MX2EC(N>Mj@i7|VDq;tVz%31%lFI|J&syIW zbd@KlyD~pavqF$9IV0{ZuKM6gUsOA^B5{_q>TSRu=db+u@Bc2TOEh{ja+A`hm$z&z zGG}*ayuBg=e|s_J_f;|=q4hvLZgs?*m`MHe8ave`RZ>?Ox&XT^91nXamp=Qe{W>ulY zgkNID?ij9hq#V~UWQ2{KZ?F7vo7U!-TaS9n=Xmm|Dp{gMN-tGb#77M3pr%_pIN!fn z527yD5Tyjk1S{f-s~kjxTpHypCADc65MV7LH;+eENN(xP+d*wnEcZcBoBivJ>YLt-V=)3`O8mAu1VE{qlHR}yeS#-_WEH&;_Wnfl@S zj)Q;qd>Jxd)}G67d3nx9C}{g}YT`pMEj!1#+5M&)RCb6T>|m~)R6 zs14^cfGudgN6*ktQ4k;^fCs*{Pyso8Spz>p5w-i?(7R zv9tXpJ0s@5e>O@AB(a~jTTD~hs5RR>K3!FY0=gtKr(sQd3k4wam2&e?HLA`C&}`xr zwcw}z{h>F&tm`Wp;|deW z_fOSig|E;;*IWp@cq)ib(!S;#HlN?6q8hJ+Vm|{SI)a(U^Q!PH5i0Z}ncEZbrF0LKL|d zK7`uHSa?X4)f!1>eoVyg{}fw={o=<$-j);^=d;;M%k-uisV@npq0H7*ESb44<+0aL z|9hzJRk>2Ced6hG5`UnXOwxe9z1i!ge8Il-#mY)d{qUNU3*Jj|8_VW33WcOO^!jzX z;&+)1bdA?ql~xjIikI`d=MLe>nBz=f!eEM2TfE2IMM*6i7ocwKz4;|!stO+iCIV-2{5iUmKEYP9 zK;9GqXa%?cDWfo5VoQW=<5*c^18_A;rM{(`*!xtVtAOiZ#ha-XwY;A z?;;ES-yjb?r-jCL+#56bilrBXI|La6xiNI#kr%DNBiE><_WhwXJFeN^rP<6N8(6f}HAGew+JOqzYG#J~gahwd}cOR^XS3RL7 zw^i?NmLlvkXG=~@yNbzIt#+YBJ`aCj0PR3I;yY1-5M_4D(N7xQ&H}A)PS_C8fu&0Ae{au*;Ba1fULcd%C&v{L|%(WzCvj zuI(SX42SckBH@xs(}M%}QYWjfT2|@mnMtv}?JovT*NM~f-{F-AJ1%>X-eX`!A0ha{ z^@v58VfY}GMNEi=$!Si5;mK*2Q>K%@Wt0PrA*>}ch8^Qd-=;l2pG_O!XWu% z$Wzjd#Q6RYiBJSDcr=xMz~&+7wOga+5tq63R%duZQ4w14@-T0&(R5vBtSoUxQBCio z|E;~>SfQXm-qdrV2HSK-O`{47wVzIr(@*$BE*av*-(Q`hHqs)kry`9{e{QmFmbmha z6)1quy-J_9lz+qBx1AbXA3NI;f(~jxAZHXnK4BO9gU}6S@1e;cRo#Ag(8!bA@jGTnyF&$H;-tuMdNmxGM?0Nxch%|H zYFquP)B2z-tez8UF*;VZaNyFF#yn?J^_s--=A7r^T9`O*K!I{o`zOFEYRg@3d%;h( z0TB!lh=_`ZJ9i#0OE~Ep8DCs!Jedvx`calWVEMZzv@@Ze5)R=~2WVlteUBD;U7h=9 zY|-yOM|WRvpPBeD)BkwEGj~40iHl8tK?|6I@zjB1rIC|p+lcyyZKLSAI+u|!$ypA} zm#FmttgxROyJhG?kmMy6lnwbof{M2{cCRP6V!LJ2F2lFhzY;MmrSjLlEj{!1wFlQ8 zugTvMFF!0RxBdBqao{IF`(6~5vDFzBOm}m7M(!>X!P>+e1WM+zPM63&Cdl7?St!RC zQ+`D0&E`81N2n3INqxUL`UB@~bX*Sz=oH0%X6Aqj+aW!LpC*!pgh+$~^eWG=p3ZDj zGDtT+NG8v=;ETvxkM3nJTLj7esMaGheLw7pejCQQcU%#E#2$D zruK=kR@dy6%|61!hPpoB9+8V?MWI+ywiUsP?EFZ?NxI%ot7mPz2FKzv|58?@T4-&# zvPk@tNVI3=Cjj>IjncP(JdPW14Xfnu{hIc4B}h|?;lcIS%<{~{@AmEMtzg#B0$N2Y z(Br2NdCwO3JYC_tM4E>LBzDm269s%f-Ti#j>Z++zx}3cb9wu6w^$7D?IJ4%_I=)$q zFk6jLl2i~$mAsgdB?6VU1p<2d_QPGb2H^_@d9fX%uHw0CVOC1ek?X9K8!@tK=-g+p z*yLD*%wO|r@te*J)RGNHzJr-IuW87mPii5h&e%tbG)$(03h#LL4buue>7#{--vIbP z{J)ZF>Z$k{qhV%n`!vMhIROK>qCxvb8b1q=SZ~0!LgpguhC3<}^Ju1C(9NbXZ zi|;y(T~N}c)lJlUm$6RAl+EQft z7;eO5-0-a1(&q>!Rb4zF=yPJyC62*jHC~tNeHre3+tM1XTMnfdTv4$u4oEjS3V%$G zs6#}3cdZ$U7N#(dDtj2p9{vg<=gW9+#*nx8diStl^TU%8SJ0C!%ggm%f&Z_o2}TVA zOVG=dSGc2F3BiiG1$uF7wBcq%yh=oNcT^LbLkluToQ)Xo<&D;Awx@)y?>#m!0hl;_ z*D!<+VC_9*dnJc0w#o;vfj=7RhuIfQp{NX#<1aA|Gmt|B0NoEw1`gds$A1)0 z_@n~(>*(8YPYE-H?y$YbW8SARfj&#yoS~8K$<_zeV6*I3&6ArhTt_CIjOL`|_lb$CV66tIZqALulzU zbnA`H_rX$3aOQaFFUKNL-ORlH+KG|Ber@?~N?5d?NJ<>X-{SvGnW;hVrtp{z$j{{& zXBubP3%tU8?6L#tZP|HXL>@JNiXqW2caES8w09!6$wxJq6JsrWYN>WjN-l3QTHI^W z3bvBbqais!=a>rm#zjzN_7{)u9#Vj0%eH0s-0)Uk60XSla`wo}M%XiZ^YqJFl8WQ% z@_hN-mvt4^^N6KcdNx24VW zc-Z{r+UuvBBc;2=-0_wtN+7CH+c1$tmGv;haJlYpPJPVvgV4D=L2c3{TYr3iYSy-H zPMfzNGs_XHmr!QRa48_H`O7vH7`k4@wT$1-oGjFzdj5KX@A{dnS40ktx25T%BJAnu z%!eVMju39xlp~Y1VlR)Ev8#ZJuSGW0|tL-DbYMxpsB(M@jtw~F-w7&C|pp6|) zXNSy0zMmH}97knm!{-Odw{}S6S%hdSB6{>hPX&sT#QInj4FAvm)UfjNk7k2QpWa>3 z1sk5r1U0&TD+uxtYu@2*zp*sv4?NgaSH5thb4|4!G14wv&q`X4T+1P&@y41oKc0W8^d#Kp*#ap8P}d*nK%L?d!Vmtu%r)v|6ZH&I_bfMbJij& za4S%+QQ0jnBdt@?!Y5o%G9ms_bq*!eZQWfZgq2o@L+U@*S>*jZMPt$C`ki*ScxgKz zF*HXuEL$?T7V1H83kws!C{Y?iWHOc4QHIr46{F(NL9NA|VQ11mWT4lNP)x49?OcDQ z&Bi*v?dxKjUsuUQKXyV@MUwS-m9tZki;2?p=TqDY^S2WhKQnnb9<%K>7pChb{iDCa zv?%Eer(VB?vC{Pwdkz+{AH@i@{*+es$KPwvH8Py6;B;)ps;~>6`sA}%s8(vT1oh}% z98}0oRo$HMZxmwrxeA;%S4yTrNDrWrNP zz<*;ZGBRk1fAQv1-u3zla;O)}w{n1&hx6;dS59yVffI__^kH14&pg?xn~lEpbgv0F z8}pvlW}6)|Ioq9ei*}m+=;}x1zX?Ng?tN4d!8n(-Q&ITvpz)xEckc7wkr$JrX6b71 z+W^@B(Z(HO&K8=g`E*Z{xc|2%pu~Su;{idYUeTY!mcV}o>IS6qjkzsLuUVd_D6!#u zAvv4Eb1}n0R*1!H#`G7#t9)U=HoY5nyB8?HZSMBf z$f|Zr@x*g}$}KK5Jq4%;truLh8F-m*LTN7!QBgu%^+S&(w&Zm#_G=6HA-(>;VRJ(t zS-!*rN`7or!|5C|?H2w9ce*w4l5$7amu>4H<{3GHhfWvL;+a_L0;9G>G;&w}?yMKRgv8J6nxpx@n(nM~iRnRAj1z|>s$bf>EVGLE>c<)}+}mg!rRI)hz^ zQ!S<-+zorSJi|PcwNcN3Z25MdL{Y4XdwqbLzs0WXklVWMnBf1BAcFW4&6XrrCdFS)L z^ok7C{PrC~#5mLtFIA3OYp?J~?vr(2GnzDHThkpK9g8!wJE zt<{H_s5m`kD|DygV6%z+3%93Ck1I8WuKju8$GMR`p>(} zf}d8UqAO0YYK&!>$!$7OWcZMI>uRNclv8+-TePXW_^AdRr!tMZB#<RZRfutH z8dXY+jF-LMetF!2tig@4_>OnhsIw0IPfW_AUHIie>S*NvMEu#!SSl;)Th<6ur0CM? zRM0vcE#zgW8%y?}i!3$!c)UYX02^`5_emb<#?nOn2Nf)xr)#OMS1`RC2DSS1d%P-K zj>Ok;c;^I#m>t2Dr#oONwM>1vj23P^aPFK_q$t!;+f>RuOZW+CaLIyrwUeht)^6Ds zm7ARAE0F1+Y0x)!1Tm5mTSiXsM4$*X2Xbn}Csjpv+oJSgTs)mEKLi_!CMS2ByH>nc zt(h3p49VP=t`-*nKlg~AzmFS(cl$6$7bJS9o}I3}-)jUC!uZFLADAUEgX}KI8w%$*XIcmjn8HF5 zzEKdw+?cpmr)(usoSuU}cNbc+gqkI9qK(%-aRyqQM7+!d`@xYhuywj6QwieQ6*tl# zHd27Z=d49oE;QX)4x~8X;ZMh?XIg(oq-#bEWbhJgtcy>lMT z06D8j(q5qiMv7FSC6T~q&G*+@!4uLFEFC21fHl<5_njy@=$4@{QJb>vH~T+NS%}3ZCQZ{Z){XHrpMamHD{qP4*F^>c&xbgsJ(eAH7i?*R)4gG;wxTyz% zW@`JCHjl&J=8-M8!otm1SO?u*kwB8NdbSr_oo|~M`l--uqt20`%6cjamdc}figdrQ zLSnzzFouka5X9H{6nWq7hrV`QJ(w|_Ds4=ToohT%g2el#y{0dPu?$9%dOf45d5~%X zv61!pGBpwKn+f~ei*QgcNW#~#4Vq|C!|bGoSc0~nx&_4d)0Cye=Z-rRbc{Qr$-~9z z7#L0a^Y7pjLg?n4f9|Ouw5@0_(x7-uuv@66hBsxcst2RCNgwv}lGeTXbqAskpjZq? zsoLcOS@`;O^;+sf3{N??{9TKHo(x*HehP!(M|cWDW$f*};8?TS=z%r<>>;n%Ew_K+ z0(OMc9`PB=?`!^ig#No~9BI%^+O&NL2Oyj4_z!i zayHt_13D$Od`&lJbjMs%&`}+1HcmaBqEck{s5=M%J!bxi10$+i4e?0}WV;kpc($-a zlrqtio>dn3vdRZV9o3ofaM?cwrek2HVduj<|09UvQ@O;#!YD}XMe1g@&UVqw^652w z8W0nT@*5!Km*`k%tzGNnNO_Y!citAMOPKI2RQG-F36-82b*dlv9A20#3Yt%wQVNMr zie-~Pq(I;6W&lvt)dmc@A1R8;e|3<)+g6a(*-?t&p1nD+@GqTxJ%T(=9(I1PoUfW> z3t=kSue(aAzrO=VJ0b-&lO0WW!bP`DsqXB|muRSae9{VYmHRP6#Okr)3^E>Sp=k?N zPyPpKbLw7x9`~{uo$l&`DGjECIe#MHfw=uuno$g#hi~Vnp*4W0iUKgoW{6^@X(b$8 z1|IB-$9HC&Rh;iAJZe$$;xS`bshq0~)=oN(Q+xMB2((lU=d<@MPV3A(xH?|s-F~&5 z5qREQirDFw$#6Uc;Tx||YvXI7gZFb2p3GtDjUC><7cEbbdeXOrGzzHvxhf1Vi+h2b zDJDg%>pz4fEz!n{f1dr9NeRJ|HEFR7-@}R6Ze%T=uu1f`TJ#9r`g#e`B8UQQYY?U>*r-g|6P z{9|%m%}E;sal03LWlkw$*ntlmH9OHJW1g$*H~YJ1yofjW@r2`YuGvd3RpW>WJgBYy zv#glOV@b8`?@<&d&7SbkwzHdNywli1MLD}UzHPH^&o>b`vbj@Z;u8_ZA69=SEMpk! z)TiV!qqjf*SOiVa;~BpLA!cVF-&3dXPbJ-NlwK(XD|Xx(n)$ps*O2sswd9U1Az(rq zU&F=Vxhqzbu(xpiGzWTMe!YV4=S4nO7~=HK<9)TBOcMjEcS>ue>L3ebCZ!gWb4`jM zidd-NsU(nCH_1abpoE*Mxb`y{{rnDH6QLH0>3h6H*q4gcGveo_;(GGJfmO^wN8>Jr z8IO5v3}CCd4Y^+ziAcc3B+{E6ly22er{P;CvLe!YR}QL)lC=t=#u!U~^DEUpauTzw zzVmDo{rR~JOBYp)x?P4rfj6dPMr9J2B-SM#Wkzi$1MvIM(2I`{g*}G{Xuz;tuIaa1 zJ4=ojt3&MaIs}Zpko~bVnUulkXFt08KSCJ8yzhz$=pZJ{g^*HM%+-fpMY*$0o@ zw8zg-?DO5#5s*Vv7{Kh|4Oaw3TB8_t5cvD~hAyT(+YTLBE+k4k}AJn_sLL|1u?@E!}tH zZjT7#ZWm1Ea30m8fW0&oq0L|T)ElZ(=b4YUesU}}e*5|z+FZ{S$6QCi{~b5eSH+PM z5a#j=BePE3h>sP#gGktg)^EE%N_iH;1b|s|zq05zYW0a%H#HB|zI>?UI~HX9J{DafO>fH>)==h zLOf2ASQ`@D#BZ7a#NuREu-bf$?~`=-5%kKTm}E475xz)i*%@%JyDMbw=+TjhA^aNgw;;i3mYF= zUN#sV0Lb9UXD0bV4qH~!?6f6^Gu!<>6n1y{7}Bz6AzR)XPCd+jxv@@nP%}v+Iw7Qo z;i`P{e>|_Cm zqCcB|@a6ms{*(I0tiF3g+WDAniotBSjd&kCA?`^DC6PS})2!oOc%nF>sMQ?ZxsUVwYT#)-$5uU=!3MtB=(|biQ@4qPnaUVNMC7TMQxAYxWBSz?4RVl!w0* zX#R_q6yx#Sik~5^94Ju2Z>5rmkdx!BAPq4k`97(69wm+*sYH*rbQa-wkaUyWa$As+ zSJh5z#E-Vol1MLrVQQXGX~-`hp3KLYFUiyvXbZ}Ujadg;yt)xh-79_=m=$2niSChU zT7SqEo5BJkt|a&qE~GHS9q*`~KYCf$$JbC$8Up?yk|A_CSAf9xod;J{jMV6Zod zZ??&uvYW5MxQ6c&IZfQ09S|=O7b{NH;me-PrApCM9sdYhEus&YU}}t5J(nY`BOlcy zEMI!l3-0_Bnn~WEaySxuZr^Te2#QP`<)zCmrUz(=hh*WGv-%8w{s4Y+>SDKf6a_ZU zRm=Fli|(5LU>(!_ZG}3u2RIFKa;zyR*`eUC9De>5nHYHRipS)|#5+Cg`VDQAmSbKO zJ0dMYN;*sr^BLx{dCinRJoDhR3)6S0qnm4DDLAADT?Gf^kz3i!r|JrNeam)Ay30O7 z?=h_HMwGksS=c^+s1HYUP&>D-3YP(l1L-a=p1Dud0qo=^59_Z!FWFD8X*e|Ap@Z*C zkLxFzfoJ9}#kN;Ix}L}*!k71PFC0Skd^WgGXgg;KL1g{ShY~W5(KcpW(=T+}*85Bl zvx_I0XHHqp$%C7cebmChr@|I3`6bhgu;3v?^iI|iQgoJtL;uXkL~kyP#FFc*@2RbZ zyf957r>LCHU`FYS<{@DEU;eAYG_5LhIkGKW@Q$Q+Kt5@xOy~4>2=PQgM3fH%d5bSm zin+hywUEu7b@Rz4d@Wr9%p08WJ?7<0j?K~J{oZ~7_VoqJAC8)(;lw9gfC~c!@^O;~ zBB;i9ON3L|{b!GV;Q;pFiSYBw1IdgUTWFxzJQ=8U=7E;wiT#1GYl8SUH9a~W{7zmC zd%D}-jY!Rh7cLkQOQJK374c34nBW9||5K0|wVdSVI+(&2K4yQgYxY!IXJ;4+OHrSV z5#TR0>r7w8>*e`-HVU_B{hwolq^B^ml#<^@So(3bn!g&qB}(Z&dBDCVU+r!POa*GJ zQvk00A4nv^P{i=9TWhuAw+-Ao-#+sljuz|p;UH=W&?s*LLt$YT0|f4mtkPr6e$}Vx zlavK*iwg6!URF)G5U$>4F~enNW0O-lQ{g? zm|e28H`j6>sCEVmj*L^7;rc|qTDnnb)2qHTJMsx9W%;baTLLL6+Qg4H4;l0z<0@5q@1kNv_d1Z|A#ukEP1Yutm%9uXP1{ zu(9z=|8dDQ{3Yn5rLK>b3%sD)m0T&_ygM7L11X;Th=~NhN^gbQ?XN#iGq6m+mJ~~8NM=f?hNB4;P_(;<&|?T?x@a- z62yFap$hN-@a=X`y2^|DHxMGCFKYlog$Wf_7Ts^IhBZidI5Tq~xPWt~4G|77G;zY| zObqG>^Th!S`w~|}ITSpc-n2|ZjK=>Q-7L^8*`z)Y8`wYN!psni2&A1E)hZZPjV2df zBu~@eOMlw5H#MIsj)g@ttO(?X;2FZ7%>Pc?%-cw&Sh^+?V`T$~gum&Sg4pK3no z@_!D=sCQ2e)M#H13xA@VdsdbrQlI zvL0;-LBMrXT*eUilkcl#gVjHZQD@=Y*fHNm+5Y@EH2m1&d^c+vsqE*9qOynFLk6A@y|`BRK-z^eDkfx znHgG<9k3kBrwIFn9aYjc-tu+vtcREMVt}zU3e|zFvY=0#-YKA|u~S{97U1%=4}JJ! zDt0uPfZ}V)85qDFMbhVGpuT`7O`I2Ekg8-MZILSU47}0%EQft$8cr3VVSB)`=em^{ zP(AkmqBIjT4NworO-O4NN}t~oNQ+!Ls^|N>0>)o@A|+^h$62n9^5&OX!*pc!y6k2w zl@UAkYPm)2bfQr9#Bzy9ga7Ol1PrjIYFYkT-~PaF@9)Oc36Bu*c5*4%z*hI!tAel>v!h^579G)_4jmGog-~tn5#-Rhr3cI;GI8Y>O54@Y-X{9*7Dpy z<^BpTU;St-#SKq3dktmF+*t=If&W}WizXsSVVgkr;W%Wx6Qb8uJR&CmhD<;1Qh3L# z-Typ#;Ff4O$&&5k?HRi+q=X()>5p(>G_3Qj%LE0A#H|O(46i3|$G}&e0awp~{ijaw zlwD}d&rwGo>*LRM!U36yFzFSwKYxJe$X<55PSij)v5uVNpQjC_73HVW?vBE3&#fQYp({4_G`fcNe zUr;cm*s+@u#5M-)ufm)aeT)S++CdybIC7b>KElnW-6Owmb)6X^ZBi->k#RXNFdEE5=);zi@Y#WyhFjn}5Fiu_UKSp!$ z47+AA8)<#WC45qIX^`=s;>p<_^5**hdx)2AU1@Mnf6!+vULI#O$!ERoZM10v?NuA2 z9q696qEpHqiZe4eBl{o^J~d4)D!14F9yNH>%r1r~RAi%T zYiQPEc``Ll9XZU&bb8`Aeuo_o{uqljwf>o8q@q0wS#vX^fN%jH!xB;|b_e&Q@T!6$im}pT=%eBgJx8;htueLRlna z73Qm~$KAjMKjChmW@V4EC14svF2eFaAw$(?Fua-vc-j3EKx{1LJIYKBYvUM_QE%GKMJ06Ld6 zJ<6%$u)a&vUMtdTfm>uN7z(pO%6|w^aU^wf?TA7Du=ZWjB)+ z^DoU1`7W2wUvHZ-)h$w`Xfu~%l+f8qLI3%$wk?m{2%{Z zyVq_eo#bx6)-s7xnqh^TwpX_R=IDkmMb*2)uWgi|IH3&G5nHZfbse2ZQ%$bbBQ;yF zGVMFj6uvTK;ktcGCH1zmx#L73G&+7kNl7RQgud{l41t0hLjU;MSo3ED5fkJjqoO#O zPQ>G;n#v9cyBSM1iF172T)EQbNrb1>Q%Z<1WEl|UyKHQOywj`ehj-V#ygS2^>U`4` z)wVjd60?z9DUXs{M^}Zbz%3lx=FjT&Rhvk9lBe`u=OyUV19OQIb@yw={GBgr3~xwL zc~B#*0ph|M5j5pc3Y=S0dolu + + + + + + +MINGW-packages for Electronic Design Automation (EDA) + + + + + + + +
+
+
+
+

hdl MINGW—​packages f2f1ef +hdl packages f2f1ef | +community | +hdl awesome f2f1ef +hdl constraints f2f1ef +hdl smoke—​tests f2f1ef

+
+
+

This repository contains references to package recipes (PKGBUILD files) for electronic design automation (EDA) tools/projects to be built as MinGW-w64 targets on MSYS2 (MINGW32 and MINGW64). The main purpose is coordination of contributions for upstreaming all tools/projects to official MSYS2 repositories, and having them updated periodically. See Context for a discussion about other packaging alternatives for EDA tooling.

+
+
+
+
+

Context

+
+
+

Multiple open source and/or free EDA tools are developed and primarily used on GNU/Linux platforms. Typically, builds are managed with tools such as make or cmake, and GCC or LLVM/Clang are used for compiling. Migrating all those build systems to native Windows toolchains can be painful. Using PKGBUILD files for MINGW32/MINGW64 allows reusing the existing plumbing and, at the same time, produced binaries can be used on Windows natively. MSYS2 is the most used environment for building open source EDA tools already; however, most projects don’t use PKGBUILD recipes but custom scripts. Hence, the work on this project is mainly rewriting custom scripts for adhering to MSYS2 packaging guidelines.

+
+
+

Overall, there are a handful of approaches for providing great prepackaged/prebuilt and easy-to-set-up EDA tooling environments: see hdl/packages.

+
+
+
+
+

Packages/tools

+
+
+

The complete list of available MSYS2 packages is shown at packages.msys2.org/package. When first upstreamed, packages are shown at packages.msys2.org/new until maintainers of MSYS2 sign them and move them to the official repositories. By the same token, when updates or patches are upstreamed, packages are shown at packages.msys2.org/queue until signed and uploaded. Therefore, users and contributors should expect some delay between updates being accepted in msys2/MINGW-packages and changes being available in official repositories.

+
+
+

The following tables summarise the state (🟪 upstreamed, 🟩 ready but not upstreamed, 🟧 work in progress, ⬜ to do) of EDA related packages, and provide references to relevant issues/PRs regarding their support on MSYS2.

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ToolStatePKGBUILD (Packages)PRsReferencesopen-tool-forge/fpga-toolchain (static)

BitMan

Boolector

✔️

Fritzing

🟪

mingw-w64-fritzing (x86_64)

GHDL

🟪

mingw-w64-ghdl ( + i686, + x86_64 +)

#5757 + #6688 + #7510 + #7606 + #7685 + #7817 + #7880 + #8180 + #8260 + #8451 + #8621 + #8934 + #9172 + #9468 + #9495 + #9597 + #9679 + #9790 + #9997 + #10198 + #10449 + #10548 + #11397 + #11897 + #12901 + #13819 + #15939

✔️

ghdl-yosys-plugin

🟪

Built in yosys (see below)

-

✔️

Graphviz

🟪

mingw-w64-graphviz (x86_64)

GTKWave

🟪

mingw-w64-gtkwave (x86_64)

#7055 + #7158 + #7671 + #8620 + #8669 + #8987 + #9597

icestorm

🟪

mingw-w64-icestorm (x86_64)

#7304 + #8180 + #9597 + #11397

✔️

iverilog

🟪

mingw-w64-iverilog (x86_64)

#7341 + #7401 + #7967 + #8180 + #9172 + #9444 + #9495 + #9597 + #9997 + #10198 + #10505 + #11397

#398

ImHex

🟧

umarcor/MINGW-packages@imhex: mingw-w64-imhex umarcor/MINGW-packages@imhex-1.6.1: mingw-w64-imhex

KiCad

🟪

mingw-w64-kicad (x86_64)

#7444 + #8622 + #8897

KLayout

#755

nextpnr

🟪

mingw-w64-nextpnr (x86_64)

#7542 + #8231 + #8956 + #9172 + #9444 + #9495 + #9597 + #9679 + #9790 + #9997 + #10198 + #10282 + #10449 + #10505 + #11468

#546

✔️

ngspice

🟪

mingw-w64-ngspice (x86_64)

#7450 + #7503 + #7867 + #9442 + #9447 + #11648

prjtrellis

🟪

mingw-w64-prjtrellis (x86_64)

#7509 + #8180 + #8414 + #8466 + #8956 + #9172 + #9597 + #10449 + #10573 + #11435

✔️

scopehal

🟪

mingw-w64-scopehal-apps (x86_64)

#8676 + #8972 + #9172 + #9444 + #9485 + #9524 + #9997 + #10198

#388

Serial-Studio

🟪

mingw-w64-serial-studio (x86_64)

#7682 + #7845 + #7964 + #8180 + #9532 + #10198

sigrok-cli

Surelog

🟧

umarcor/MINGW-packages@UHDM-Surelog: mingw-w64-surelog

SymbiYosys

✔️

teuchos/trilinos

UHDM

🟧

umarcor/MINGW-packages@UHDM-Surelog: mingw-w64-UHDM

Verible

Verilator

🟪

mingw-w64-verilator (x86_64)

#7424 + #7872 + #8180 + #8465 + #8954 + #9111 + #9790 + #10282 + #10587 + #11247 + #11898 + #12900 + #13820 + #14598 + #15350

#2681 + #2685 + #3471

VHDLproc

VPR

VTR

Xyce

Yices 2

🟪

mingw-w64-yices (x86_64)

✔️

Yosys

🟪

mingw-w64-yosys (x86_64)

#7534 + #7606 + #7965 + #8180 + #8290 + #8956 + #9172 + #9444 + #9495 + #9597 + #9679 + #9790 + #9997 + #10198 + #10449

#2505 + #2507 + #2511 + #2512 + #2514 + #2515 + #13821

✔️

Z3

🟪

mingw-w64-z3 (x86_64)

✔️

+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Board programmingStatePKGBUILD (Packages)PRsReferencesopen-tool-forge/fpga-toolchain (static)

dfu-util

🟪

mingw-w64-dfu-util (x86_64)

#7400

✔️

ecpprog

🟪

mingw-w64-ecpprog (x86_64)

#7349 + #7403 + #9172

✔️

fujprog

🟧

umarcor/MINGW-packages@fujprog: mingw-w64-fujprog

icesprog

🟪

mingw-w64-icesprog (x86_64)

#7308 + #7352 + #7966

openFPGALoader

🟪

mingw-w64-openFPGALoader (x86_64)

#7351 + #7404 + #7641 + #7971 + #8300 + #8965 + #8995 + #9160 + #9280 + #10224 + #10282 + #10449 + #11213 + #14686

#65

✔️

OpenOCD

🟪

mingw-w64-openocd (x86_64)

+
+
+
+

Usage

+
+
+
+
+

MSYS2 (…​) provides a native build environment, based on open source software, and makes you feel right at home when you are already comfortable with Linux.

+
+
+ +
+
+
+
+

In MSYS2 there are 2 types of packages:

+
+
+
    +
  • +

    MSYS packages - these run on the emulation layer and are typically POSIX-only programs.

    +
  • +
  • +

    MINGW packages - these run natively just like any other Windows program.

    +
  • +
+
+
+

You should think of these two systems as separate where msys packages should generally only be build dependencies of mingw packages.

+
+
+ +
+
+
+
+

There are 3 package repositories, msys2, mingw32, and mingw64. The packages in msys2 are named just like on a Linux distribution, the packages in mingw are prefixed by either mingw-w64-i686- for 32-bit packages, or mingw-w64-x86_64- for 64-bit packages.

+
+
+ +
+
+

That is, projects/tools on MSYS2 feel like Unix when it comes to building them (GCC, clang, make, cmake, etc.), but the artifacts are native Windows binaries ("just like any other Windows program"). Typically, users want to install mingw-w64-x86_64- packages, which can be used outside of an MSYS2 environment optionally.

+
+
+ + + + + +
+ + +See how to launch MSYS2 shells/terminals or how to use Windows Terminal at msys2.org: Terminals. +
+
+ +
+

Installation

+
+

MSYS2 can be downloaded as a tarball or as a self-extracting installer with an optional GUI. Nevertheless, both of them produce the same result because MSYS2’s installations are portable by default; i.e. they don’t create any environment variables or registry entries on the system. For this same reason, it’s possible to have several MSYS2 installations at the same time, without them colliding. Find the latest installers/tarballs at github.com/msys2/msys2-installer/releases and follow the guidelines at msys2.org/#installation.

+
+
+

MSYS2 borrows the package management plumbing from Arch Linux (see msys2.org: MSYS2 vs Arch Linux). The default package manager is pacman, which is the same codebase as Arch’s but ported/patched to work on MSYS2 (Windows). Guidelines for MSYS2’s pacman are available at msys2.org: Package Management. Nonetheless, guidelines at wiki.archlinux.org/index.php/pacman and wiki.archlinux.org/index.php/pacman/Tips_and_tricks can also be useful.

+
+
+

Individual packages

+
+

All upstreamed EDA packages are available through the default package manager (pacman), as any other regular MSYS2 package. Hence, you can search them with pacman -Ss TOOL_NAME (see msys2.org: Finding a package) and then install them with pacman -S PACKAGE_NAME (see msys2.org: Installing a package). Find further info at msys2.org/docs/package-management.

+
+
+
+

Package group eda

+
+

Alternatively, there is a package group named eda, which you can install with pacman -S mingw-w64-x86_64-eda (64 bits) or pacman -S mingw-w64-i686-eda (32 bits). The list of tools will be shown, for you to choose installing all of them or some only. See mingw-w64-x86_64-eda and/or mingw-w64-i686-eda.

+
+
+
+
+
+
+

Contributing

+
+
+

The official git repository for PKGBUILD recipes targeting MINGW32|MINGW64 (MSYS2) is msys2/MINGW-packages. Due to GitHub’s permission management constraints, it is undesirable to open Pull Request (PRs) across organisations. Therefore, all contributions regarding PKGBUILD recipes are handled in repositories from users'/contributors' namespaces and opened against msys2/MINGW-packages. That allows MSYS2 maintainers to edit PRs in-place. Anyway, hdl/MINGW-packages can be used for discussion and coordination of tightly coupled EDA packages.

+
+
+

Other than that, branch main contains testing and tracking resources, on top of MSYS2’s infrastructure:

+
+
+
    +
  • +

    On MSYS2’s CI, packages are built with option --nocheck. Therefore, only successful builds are check, not runtime dependencies or other possible broken artifacts. In this repo, EDA packages are installed and tested every day.

    +
  • +
  • +

    On MSYS2’s workflow, packages are neither rebuilt nor updated periodically. They are checked and bumped upon users'/contributors' demand. Therefore, it is easy for less used packages to become either outdated or broken. In this repo, EDA packages are built weekly, in order to avoid them rotting.

    +
  • +
+
+
+ + + + + +
+ + +We’d like to provide additional features, such as building EDA packages from git heads, as a complement to tagged/fixed builds; or automatically checking when are new releases available. Should be willing to contribute, get in touch! +
+
+
+

MSYS2 borrows the package management plumbing from Arch Linux. That is, PKGBUILD recipes and makepkg are used. It’s the same same codebase, but patched to work on MSYS2 (Windows). Therefore, upstream repositories are different. Apart from that, the usage is the same, and PKGBUILD files for MSYS2 are very similar to the equivalent recipes for Arch Linux.

+
+
+ +
+
+

Testing

+
+

Branch main contains subdir test and a Continuous Integration (CI) workflow which is scheduled periodically. There should be a test script and a job for each EDA tool. Smoke-tests from hdl/smoke-tests are used before running heavier tests.

+
+
+ + + + + +
+ + +Tagged/fixed versions of the tools are built periodically. It would be desirable to have an scheduled workflow for building the head of each downstream repo too. Do you want to tackle the challenge? Contributions are welcome! +
+
+
+
+

Updating packages

+
+

MSYS2 repositories are compared against matching packages on Arch Linux, and mismatches are shown at packages.msys2.org/outofdate. That’s the easiest way for finding outdated packages. However, many EDA tools are not upstreamed to Arch Linux yet; thus, those are not shown there. It is therefore useful if frequent users of the tools watch the corresponding repostories and communicate updates either through this repository or through msys2/MINGW-packages.

+
+
+ + + + + +
+ + +Since most projects use source control management (SCM) tools, it should be feasible to have an script for checking new releases automatically. Should you be up to the challenge, contributions are welcome! +
+
+
+

The process for bumping a package is very simple (when explained, at least):

+
+
+
    +
  • +

    Fork and checkout the latest master branch from msys2/MINGW-packages and create a feature branch.

    +
  • +
  • +

    Edit the PKGBUILD recipe of the tool:

    +
    +
      +
    • +

      Change the version.

      +
    • +
    • +

      Reset pkgrel.

      +
    • +
    • +

      If the tool is retrieved as a tarball, update the checksum.

      +
    • +
    • +

      Check if any patches exist. Either remove them (if not necessary anymore), update them (if sources changed), or keep them.

      +
    • +
    +
    +
  • +
  • +

    Commit and push.

    +
  • +
  • +

    CI will run and it will build the package.

    +
  • +
+
+
+

In practice, checking and updating the patches might be not so simple. Should modifying them be required, see Testing PKGBUILD recipes downstream below.

+
+
+
+

Adding new packages

+
+

All the ⬜ tools/projects in the list are to be packaged yet. Furthermore, there might be other interesting tools which you’d like to upstream, even if not listed above (yet).

+
+
+

TBC

+
+
+

On MSYS2 native windows executables (or DLLs) are built, but the paths in the (bash) shell use the UNIX syntax. Hence, typically the makefiles/scripts of the projects need to be tweaked. Sometimes there is luck, and an Arch Linux recipe works almost as is, but chances are that some defines need to be added.

+
+ +
+
+

Testing PKGBUILD recipes downstream

+
+

Should modifying/patching downstream sources be required, the recommended procedure is the following:

+
+
+
    +
  • +

    Checkout the desired version of the project/tool repository and create a feature branch.

    +
  • +
  • +

    Create subdir msys2 and add the PKGBUILD recipe.

    +
    +
      +
    • +

      Remove non-external source entries and the corresponding checksums from the recipe.

      +
    • +
    • +

      Modify the paths to use the sources in the parent directory.

      +
    • +
    +
    +
  • +
  • +

    Copy testing-workflow.yml to .github/workflows/ (create the subdir if it does not exist).

    +
  • +
  • +

    Modify the last step in the workflow for testing the tool.

    +
  • +
  • +

    Commit and push.

    +
  • +
  • +

    CI will run in your fork of the downstream repo.

    +
  • +
+
+
+

Build issues and regressions should arise. You can commit your fixes to the feature branch and push again. Since the workflow and the PKGBUILD recipe build the head of the branch, there is no need to generate patches yet.

+
+
+

TBC

+
+
+
    +
  • +

    Discuss solutions with maintainers.

    +
  • +
  • +

    Propose having the MSYS2 CI added downstream.

    +
  • +
  • +

    How to generate patches and apply them to the PKGBUILD recipe to be upstreamed.

    +
  • +
+
+
+
+
+ +
+ + + \ No newline at end of file