B1oBDi6-7W>A_cEx#;nf zZrVOK8?$z5aB}^qgxan8;VKlS2D_k8a>s+Zc8j`gnjfE6KwIl!mKE8+<1oGQW`*d+ z)5tAlQt1`zx-|hPKTvyUO<$XGC%?*-(VXqdSz8x_7?)z@vz{5Ju|_~0KaHP zh4d>^nbgKk{HQqkjuT$^-~awGl@`q&i$d1X>A> zI*aY{f2W)Av@)BCm-0!xWtVvwlCvU)AOUHstSo~fn<_vS=K>Fc5Q8@aZbegL{2 z_pG|SBU31aUTZnPZHq$9O!tN&<%X`AdzwB5Y64SQAWYTATDnL5T#wO6Y1oc-{fJGY zY?b#wIyHJyrG#s-S~Z6$fd&%167rf!<=QQ6FN_5ZZL|%>LQ~-L@kUaC`D^d1Lg&`w zV8eng2_EVJfg9WD!s13)hTO>GqwfHachz*mXDjG6DdvrMD06ReYw31T01#AvjfkU| z^yoSAPHCR1yggPx(ui)(4rSZOyVmgz$gX@4_ Ve?kcJ1j;QW_NwIUTy zrpi93%U2*+Jz5h-d&Z6{!KUM5L`uIT!%&M{rKUEPb}n8?rB0k}PS!w~K+!P@eYa&< zL+#J9#nk{>LQq^6_96m5pXLY~SZ)L5QWF9kP>xZ$SfDy+Ai*Ocf7j+CJl~pNpvZ^Z zJoNgGud=Tt)ugRqYBj1y$eX#QWuFJlB4jFwd(Z@STFYUj=#bZPA4>{&FglD^-S**i z_pb^zBqpi4An$ z=C>8nzHIXoKD3;D>qhZC@t8;c@_!sPad&;d_>?MD82nW>mbjBeDfuvLJLeX9PJyWk zIbF@AJY9QlRJ?1dnihXkGuPQ&`&Rd!m| SM%H#wddfrC_f*lHF|6bjVOM3{_}5A1V0Q{hXkTr@wg(mWZA~Yc^K=6OVm7xDS1nBHifsH;@x 7lb(dQ2eeHb^PzTFJ0 fzKd-UjT!9vx&mdFc95NcO&^ko9LlIzO+IsMp1IKQ zg?^JWn?z0NA-zHOo7(z7aeM3D1pq _Wv2-%xL%d27E18yQeT~!Xrt^r=-$rAfgYj2Vo-4~HEBx-bmpMH zdHiicVtD*zby)?ZNdO+jD$1z|gbz12Kkes%m4mM5<#F_0PlkFJ-C$2Tc^>wCKYi~j z|2T84XsrhA=wbO$ZvAL@8>&x!3B-5iR;V~ZXv 8RI23XE5Htd zk;{P894de-z|4Pj8$AIc!s{bo(bBl%U!Ve)fIe+cxQAnEjLt&phP=!ct7s3HkIFcu zIg$+r99vSkdmlLUVrg#^IQo(x<^4PHPaHh3HL$cL0+*hfSLe;zJ65;mZ`WtznAR)6 z^eLVlU@G#Jb+ Y8E@OD=;u1R4F6tdjD8n~-y|Y7mAm*e?@XO1#QA`Seea$3d zvdu=1bs-8qLS wa<9h01~9_DLT`z5;%a1dZ}`6I9u8* z1>TzQM@nDlV>Jfk(8bRe 0UM z;)Rge4~2S6!zG6PuAZ?qu(BVQnCInKoyK40CUyuuF%;QcZk?56UgV(}x_VmivRh&@ zIO4+^5Esde+PH4D`-Pze?E0AwsPe`U5atfdETJG*VYaKiwM`+n-C!g){{*m=-9NyJ z_bq4`nNHWu cZd^rJS_rxcI` z%PtKtQUY)RH)O t4SHe#@ms~u3$Nzi4< zMGbD9IZ)u3LiTY}@oR}j;yc@$4t_2?slm^l4nKWrty-{!bz8sKaFr^nxprjD#3>f& zfXTCY-2qS#Rrmd_;&qVrP5}YCPPj9LA89 kf$l zVvhDVBVH9h!j{ur_F03JXxZV 4=wu*Uj(vPHWB)hEJ0-eV?X%E-2K16A()ec#3| zNLGH}jTelakL5f=UsTsNY_x7W+KYU>wtWL9tLSeUAA5@sh)n=QwT1#OKQaN>Cb8=~ zpV)a|Lq)`rI|)iQsJM!DG05Uf?5CL9vzD{i?(S|o&$C`hKh}pzqP@3oTE;TBi3nDN zOT=OJ;h#yfxzZ68*wpJs`9sngrfXqC17(b|e^qexz2cFIUG9JK{%MOT*{8&q6Q1 zTzK!Li13-JGwQkjDux-{m3?AEgVZ|MXFV&9u6taYwFzS64_F@5h$|?d!SdGnSG5ub z?4V{qMrGlS{vO}#$#|At?k*)aEN3u5%`rpucZ6PZQj`Y~8X2I0q5OWr^quK`t%h%E zm8UH#pK8e16gIvQT7B0gy;MM }Lyw%GHoaC2Q;RrQE}feGQ@3veqQtukp2%_#di>$^=z|biQ5( z|I#bFbb1$1=sxh#>LgW5yWLJG!xr0Oz_qDaBNXbRjFZ5QW^tWHkFf7M1LrB54FPjy zqk2i+@0hB}k9ZB`2VHw7pfB2ME?3hZ_gr7_O{m_4@bd(=m=AT}E<{X>>vwhiAMsnK z#|uvQo5aUvsx-z#L(%FzndOHrTV(*LM9IAu7)dkhHs2(6e?nRwls35LAK3)HGdQuD zzd)3}zPoSA7_jC_{FyUd71r+Z4WapwqtCxJg?@9C^b%KcsI^~g{Y77oAGccYv 0*fc!u#Ur4O~tQ!=s3>fz|nVGt85KsKvdV+J<%wHwPbT4Y`TyLq4 zHI}04S(_ip=UE3GTb}gID( ^U0ai5p*5b7N^q2zccmoPDipDSI ztsUV|66TB<4$EJA_iL!y@m+K7?>$^KCx}QFLA77qbg+;&GkwDp9N~g5lkIvWsm>uF zRx!$Z-yr&9t$e!Lh;3!-RQ4L_&fTD-kVV|ilS1zs%r$ gkEi228 J&FrXcaL5k5q4~4xbN*edV(-nvlh2D~hawBSUf_+62m)JVKLY4g(~m*2npo!h z66U UQD)y<92unxU*`TiG%~PwBx`TcnOf zR%dBpVS;7(+HOx^)?>jZT6sBZBGNY>toNBIyo}bAYBR Q{mCW@?<&X%4g%ubo-!V3#4TvcB_Nh5xZi-X}d*3&YA_Ez{9{kenOU1uu8gXmu8$ zN5&tyc6#+i&YQuWx?=*kimRI&0Ananwm$#i&=gTKiHuCT1&RQ=)$;VAzJNDnYoF-v zJh5KrI1sWNHjv=56#}C2c-)DuIJ(hkzHJ{8nuh?aAsD$ATCCnwm1g*JVR}Fpsg&Xp zUTL26DGehR3v|C2<8~tzBrnN_QsSPG%WTyvS-IZx5Sq_NlQLnnrRBX_tR{B$T&XVD zSK*R_QO36D%AvPgwiISY3w~n&`!X{-0IOX#)p#lAvndbh@!m2gZ0Q~GS7t!>CEcps zf-D99u@Y~+jipXZDI3q`H pP){zLe%GbZSn~wqe~V~ zN+XfGvp;rvHW@74R72oXMl2Vdjmcd&mLxTE0HL5en-4Mb?t1W{QtNCVHql2c|B!g% z;$(%aV0>z+N+K9pE-3pvO;fr}v3dd#K|W;bU}ExKE~_~b<<^t|_{ZRN0uZGPocYi@ zZ}O%uwruL;j?mhpvIj02M|{S`;Oiw3ZmnkO+vF@`D$xEFQ!^LS{!ZDhE{jAn(gMzWSM{;tNjhPXhMF0(sXbqM!U%y67#)|#` zuPAULCxh+pio<0WR;g|lK$6D9vw^4(-IW*~S78^#f27S-kib#Y{#9k$ZLz% h^NwPe@tYkWVB&Qe@N2nWJ-kLz=|!I0SY9Z6tr4vrx0Ig| zQg2n7#OS*LbWH4$VYU&1H>hW3()UbxH&G6i(c?JXdNMe>ny`&YstbLeH%yfLkJaB@ zs4wG16 &%`s?5#73a*O4_s#-AGuAV!fV z3d1@i6~c_{sn=Z_d8g%ix8bH|Gj0@OUB!~J8~yfBfL=fi03vk%F~D)w+I)1d3r>jl za&1faeps_Z^YZ6vNzcn^_vrpWyzzU=#_ 8Il1yg-o+(`Zt}obe-E@KYDlxa0b0bO Ss8I9J)#=UKWp{DS@&;B+V0z`4{qw;& z5EEcW%@q3Hj}h@(2S3_|FJ$2qB1N#%_tnft4|V(hV}niN4aO>SDjV0l5<|B{gXrU9 zQKUWcR{HY&_ta7%k{)dAc3WG7Pno7Gc(8S_S8TuC>eo|qAr@;PRGU(6=br(*7_(^V z=EOvzca+LJr}h2ThrBcwC(4z5`|fEz7zk6j6_E=M3M-+#I+O&T?5~}nocU!YZ@pVT z=yt@Goiqfu@+2xD5dyq0#nhAARoX_rJBba4766C!6@-ZinUDZVxcGxjj~@VJ*q3+b zbR#^lJzc@;b}H0E+|u2*uQHFbvw#mUs!b03z K9}HpzrS=_QZh$kbx)Rl@{Y3rrI!`v;Oxd4V{$Q$`+2#0S z+RUbK!kTNxrU8Xms8GcF;LN~otFOfKmndn|KZF2U|Mxt_zaDD&Z&rHy|MyT# 7Iz;(Tlb0Vh>B81scP8;kUXrDV4XHST#2xvI~^pWn)|3MUBdWYPS*X zk$bfFrs4FK&Ooj8=7t@0_fhVE(5TBJJC|>Sdn3UbKbVfY9F=Zp?lR(is3=VEKW` zfvB>$(%(boC|XMeX-ZYo(+y*K*M4m+d($?;QKOsnF-d7V$(6pfbCIFNg%$FQWL>`( zpCD>NETjulzs>XJ{tBY-!xH9M2xbS(pBC~zX&4Bhk~$MwDv#_rB^D+Yyk(;HiAtcd zT~SqJ>>hjiYFSj?!16ZAJUqnb@%CX+77`1B|Eb~sl+q>zTdC(`S-}dHd&T&d^I_uz z@lmZ9?}*F=wsRssD>RQO{|8d)=zSR8a6=)rMULaIw|-llhQ|eKd(%DsZVB48Ma (A2LXv}i+WcMOqhG(Uqu7hFvot3<1p%fvMpXi|AEil68pb$6GBDb=mMrLGH+(7 zlRs-dci>$A_nqIz?HrqkRMso10C&1b;1O5nt 3xKdX}R0k-Pa ?mL=efE^q~-J=uxzkxftWVE25 z)_*!=>Q)C;wmdbh><#z*xF*9I1C4gPr5*6Df_Rhj6_}GyQ+Iph#Mu;sR`Pex7~Dx- zUEdjk_~$pN+67y#Zy2jNJr$Z?U5nK0*NXnurYKe9l+t63w%(zF^?8zdlxU~Kl0tF| zaGouCcd;+c4cIFyseDLkIBu<8`iN*pLk87JjS<8b(dr^oUO|sl?JAO@wS0JW!h_;m z3Ozd(vNn}Uc5J#Se_0{`X0S-@Ckz}JE`1TJMe5R-`dQsySvlvg`kiTA%|7@Oj`&^Y zsw5^1t|@5J-=k*IZ&Y?+Y=5n*0;f%cbR(-4&TbGAd6Q 3<~JoClJqw>9SW zO(KSWh$b+~+>)Wr5-w3UD~^k8h&1a}DMi~PWksX-_XdLtwty^!@(ZZho~ZX3 -HYe zwH6_$e^H+T`ch6Z*E%tr3Bw;8kO&}5J=XMhJtTa%=BT&cnSWNtt^PXyieMo;TF-qQ zU%`=R@RyYY+OIu6E4H7gl;$vV=jQ6nl|kWm*TQ8XF`N8v{R~rwCbTyxz1Puw%p|XI zEi9<{P#TJR1Bpr?@>b%zE`%o<&)=Pp8&Dqi`LzEpa|={MF@C(@Cl#H)T7IPP&bw0B z)p5#F3rL`ufN4DkomIUx6gCR{r|#=q%!^4?P2;w$n2e3m4vrNj7XmFGGB&{jiZ !6VD!um_AiNVi=hyFh z@BQ%q@RqNX%w+b=p0(F{*0Y~Eu3N@*((LB6jhUwQIM@)CPXWDY&hV;nNdr>ZZ wiihIZ _;)e!Iwt2~J#4c1& z+sn;X6v?^12)Ed!8Ou^GzIio990>oYu>p|cMN3*=gyj^pM8UxXao+Ltc9*!4EdK}5 zOM>=A*a x(NDcE`9yyFF+DQYL| zJ(4K&$(Oj4E+$l7_`VD=gbNFWC#OG^*=HklbOafR{~0s^ka~#BI{MDAeTV@ImK#cH zRv_F6g-t*9+`ogA8h_RyaM^4sbzRaFfMq-@5_Ht*#g)+`Zxmd03&C6<=D$y~$-Euq zj$kZWA>0b=BbDf+T%9)$O)dL5n7XGi2COf&?kDW98F+OXqn0*1GEe=Qk%P!=`0wal zg^C-k-IvGf(OVH3JYi8uG0Pf1FXQq#D!o8FY;4zB_R&C N)0VlK~_HV zszurl3_Pk;S*jDibW;KmUALJkqX1gRZv<7l^F0HmSzp z0kzL~ycl;zO9_GR_0i HY)lOXcGaF!X8ZEDf+15+7@v93_Uj zDO=ixEW2)QMV+C&@}d1!T3SUVI%)LkM_s7HRUQB~n40xwGxjde2ikCH$FkGC!rwq< zt0A8sue0lvYULOhlJ)X^-^L~rnPOtIwRIO>=?l;#Q{vpCP;4G2m#%N52)cIMG~|8| zXeQ;l>ZMp>;>KS!@tHNX`5l3;Q@z;pz2w5a%Jkk3aM@1#9XKWIU0ojBiso zEN$5nPzx>F*C(xHHP3XjFMWDaKkyxESbb;O)L9DK|J4DUF^uPWUEhS@nW8biCS4~D z!O-7wHq5S~*Oj%b5KCO6O%n@{i|)^>YF!+!BfgXx9t9fIcaO?^C1|&jy%$08MPHv; z_(q1$HbB#-Mo--+p`!^~W_0Krk-v7MZ}%5J8h44fg>}X$d<1ovDj1Xu-mh8vmOA@Z z-66f-t^y9{@-3M;0U6h pN;4>z7v!IPIZ=A&L~5;5`xr3|B!z=dN)SAV`Sw; z;(E^$C`okga<3M_AK?_A 1p0ob>CvB< z$RM`u+`GKJx#%#^%=mk|QedB1y-~>bfVZ*S6uEv@zH9GX9zA|(22!uhs9{OQ^>{M+ z7i$yxqS4hnF#5D<&GwGt{0`}2l2svAKB *?A(3aX_qd6u zP+?=k02vKA)T`C$s)NpdF@a%g)isRPo@9q%v@5j4+J1N8D)ITT=%na9-KA^VindpL zl04o}ufK4GC981sM`>v8<+oo%$zsJmWn({~S$^RqF`hY&)VR@f#TWux z)OgGRoBfd3qc_sGN==bBf!E^SlJE;|ird`q`s+Rq_$qB&r=-dS seCr#{j56y~SdG_Al$3%JdwYDk?`}n^!=RKxq24DN ah<&7M%khjwNDd!@!dL $6y@1y)*O664#wbv zUy(GJ5_1LO!EeVMZgS)1BuTjGo9>fkg{ZG }dQ*dm;^n%Lo0>bwz zhPpVF>|F=C`VRQOLSo>>!z&%0fn(Hr`|JFHaN-NS$K5eYDVj{c&7GM_F<95`Bp2}` zNBG0R5Ben!uO*f{{UP>xDrd|W^)u=FNBe=>XV?3iGOwdrCbeVBR(f~sy!K%5gV2f= zSA{$|FELI>ASs>JC{?l}-Cg}IiE@yAYHj4XksXl~tZ!RV21#0qJUe~5Yar{P()~LC z#Nf`VqI^$Zr7588kGemu)RYE`uzv|-TCg~cUst6`Y!Yn~dHq&Dn7BWV`r#z>V_-HX zkfj;4GV9R1X(}r9jJOrRT3xW4Lx`S~44SfoQY52$O;v-|m+CY)ADrc`i6@S%&>F85 zGj!zFq=CNH`xCC%((Br41&<-Dk22-orK`sR{b%+|e6EW`m}bz7#O`}GA8Z72?sImk zCNuW-wLhVEH}tgO6-n35K0K>)Vi(MA>IF^EM>*@SpL7d{HZ9h%bz}kbzj6p|s`n=0 za-H=(v+s{8`yggE4bB=Q@wgGy3lfJ(I?{=uZ}k)Y0SpS%_OVsl$sWLYnWs-G$f6~6 z6)>R~#$nq$q2bEOdsW(T-){hAtRmEuVU23c0$DuKTV>hK)d^}}a6oG}_%gb8r=JG3 zvzNvg>DD=Lk hk=Tqvb=CMH!c#*8NdAM(lPIr$sQrJ$SA?Ir%kwcOHM6=!+6xrgfci5y)=E; zvKWW+4pkQ0paG9)!fF;-<0@v6s3}&ykbP(GvskZJQ(JPkvqN)- 9yq0%w#n$iOr#I$33e2pxAx@ z8qcWlgJbS3P%;CS?ZI~3#;4@`ln}5MK?l4o+wP8VaBIq+WVgXflDv& 7{``+6DTwx5I>~6}X z>ThmI&yp*nt*or9XN&pZOU}BNDsJ-zZPoK5o4D`XUoq^a>k^|)4VA6qD`7p^aLvwO z2+Rn3z~?4-_Xdz9O)>EkIgvVXFM+w#A_3F6cldnjQq8CrH4!R+-Sx1(UgIq7bv^N9 zo%BVWo{_;#*A6guob@a4-B^94`*!GzO^4kx#-eYyc9^Aqg-$DM5Sw>S>1#lJ)VrNp zPre?j?7z!31Dj1KnrC;t!m?%x#@MIN#bT3v=WX@-3WHiZs3lNfCakRT$?uno_2O9c z8rnh~qQ4-Crx!df)Cv=0j?nXK@$U*}x?RPyzeWT3Xc5y5(UNs}+}wmz*McR3^YC4+ z(-al7V2sJ_vvkskmowR1BCsnAg7XV0JR() #jYO&<%!XvG;+|i4Xd7Y8o8KRe{ zp$xEU9x&0Zo7q$U%`bo07P2h;#5$}TN0tK92LN|!m80tgr}+A}^{`=eq|~6A`VV0J zCvCmBi29*UpBAMnUMD Hf*??wysfJ{?HK{ zy%~du5qtls70K3pj+Ni*Rb4jk?G%n1x$pL V&1dLgt9b IIfPxHJ|l00u=6eiGouy2NEy#xKokK|6*^0G zdLL4NFX6GCY`QIA{AE!b_!^`U1h%yzl$uN4CIWf4JVwk?AgR^4rMpnFz~Q&7r++?} zmLS$vVG%f^o^Bm_82^3cO>+=+8F>e|zZ4*TL6oPDE!f}p;gtbmqh*X}%D*+#?!TNC z;=zSsR4ac}5~Exw?y)$d>!}-nNisv>JLFxh!sox_VKgs_B{$07(Wic?MWCrXwxE=F z$q$^i1Yl`0JM~Xcxz#K&?M8UD$n!3-xGC=R7(vTA>lzcy`IBb|mk#JGnKS6qQiZ$% zi)+Xy4D>8&QUnZC_`yDEiLOI%142jS_s3GA zaC6SB;z61fY7lKs+5j=ErbtjQkcRIDSS$sobW3c7V=Z!G*V>MLy;nDMm+cX3zm2q| zcN8McOePd neU0xtNyP!hJvPiH_cB18FARM9s_aG?a9eqr==9lFK^PVNnNowrV z(G0Y(Y5p{>+&W&wNsDPCv)2n?92^Lw^w`00 AAUX!uHZSf!@F a*CZ0h`EB~4kC4Grzp#9Zf?%{f4~zC#lc*Pct9TsCbM~^teDJHe>%9QN<4E|$ zS)BplKdsE>{V3^S?GYdgrP;J9s%GTMJsg4k9%MDc(zbIf(e=Pr++$yKd5~V(UCOSq zp37rkP^O4ddiw7HvTi_MOUn9LOzu@(m-oO52FN$vL-)g2$A8bQYjORWun?5XZ;!Zo zPy=Ps&fcSz6gRp^g)z@w{7fX>gNe@!i2V4TQIj=X>S0lc{<5OGoVJ)`B)SdsRdrm2 zYHJeOYxbWR)T|exrpiq-e33?Sg)f@oXA z1JW%f0}_8S;cFsb~3BcJb4v zr%X;6!~^ii9$pK8Ag{q&eWJ9C;WVp(oUP@vj`~0?c#;f`W#>oieSdJ%D!gg6^$u2E zyF-7T*wsRVk=+waFtHMPreCWIshQ+QQKCw^)I;NLDkNuK$E^iswA4e+CRWB2_f)R* z-aNGI$#i^f1FN9ul%4UT3OGsZDm*E)opFWlnZ!dB%=bL49?g9aR{F9ez86~nsd1Ll z0;;)(PbhPecFBD=S_QN?AJpv6W%NKVeWD`Qv%*N#(8CnLunr=pAmrs#0m(=6d7^zb zR2v^Wf|Ge-^Hu+Q_)!i6@WB3YtIo6DhK ++gikd{wIrU=sOs gbQ>KDl2^h|SO>a16hqq~) zNO|)HD8J}V?g{&)NhHrWLj28)0J=(US;)Y(X}Pl?W)XvQl~{%{?z8GsYC3?|Z`kQ4 z8EVp fbRuos^rC^)oWUL+t@-}Z;L-8anY&!&e(QDtcT;J&x0Pd+5ZIy4156|Ic)?(fLM^`PB6no zE6M$>jjfVl%|fuLQoE^KrK8;FX~fKR!zH}oo16bgXy7k#j)Q6ks+Tk@hT3nb0fJ1R zZ0J|K==n!m(tu_|BCu|uH`F?-onap#C!yIs?XimO)8KC(*32+{?cm<@Ekkke*;# eFte^s=~wqG|9H+CR9j?3exzl>6XCvjy*i{SJmVnXa;~nXcK N0>;YUJ04>4O{R8ju zUqc$Jf6pi#|0wY9fRT?SJGJ!1aLn=*aNJ+_0w8++^9BIOlOrC)QR-hw5r8=PR~`gN zA?vF8I@bMdA@d(0oIPM<>ypDK+ke>nCwz(y04iUL{VHc3$)r!S|0kLB7-1wxn`BcR zpfqsymFQQUuK&PBQ6KM7g};B)pMVzi2>-pU8ep&f3qa+!l)sZ+rH)b{sXvRa)U*As z4*>*#g1tUXgL?YF2^ZX^{F6W%SkUfA+3ok(Q6Hk?z;XYbkNOuh
?yzKgYWb-B1_K9b{Qx?Ap{b5M409K;8#wEy9}fn32pD_+xKH+Z&g zDtx(lX6t7joy8#1eq3Q6J@RA9YnM;4p}J2BVd|Yb+rG%~Rhk+D{V(k~fU&%MJ{K^S zcbqx$sUO=^2B5N&bUe9TCnCSOMrHlaiM)TDK>vSX`G3bR{%@}qfCW~0Y!@eQojFCr zOZU&7_g}E|$$$Rg|8wN;!hRP p(1Oo+1-Oth7N2K(iMAn}fOxIz_+N3!T5-b-zenMf|Aqjdo!ml<{DEO>sA~lP>&R z6ca$$z81>#7d}sw`@^#+wvXB*UnjnaL(5^kK!Cvm=5~g=qGcR^el5A4Rf_0GRM6T% zZ*6wS{Uto7n*9G%=@h(-fe#Mq;iadfy;+kJgJUt%iiK@=5m#o}8r%_DfAjGGta>!> zTzg#paoA2@PEn9sY_bgQbbstyVC$r5{pCUh%~l^yx@*>pS485Zkl8hkf0@&%M7=Li zOAGl3 mj}B7NrXEl6Wk&yF^i65vNP!- zY0qNTm zo0{@29AINlQ6-D1ybr?MMEi!YL1}Eu{PF<{43ti{dw0jVib*?iqru>Zfy3Fu3qOIa z8BNY4_TJ6i?dt`IDQ6%*@yd*rHd%RaD|!#!>eq_;-a;#w5SMbAh8d6&9Tk`|_qt Q^h@W)CE|7hUy;E?xm9Js6oKp8A{Za5e77A30lJq9zQ&34D|nmn(dPT%Bs!Tb9D zmU`q?2kYR{IC-)G=uPScV{g)Bw*USByE{5kOA*@a{MB8 CI#7;3PadTSZd9=Q`gJOKi$GSX0 zMC*GAQ=)~6N6%5SgyS)QDunMDE@$W(t-{M+v|C@bA9}$qX#ByBnT4Y)NHXMQ!mTIM zz;(~KNuC#hV{U9sbLfr^A%#N6OYioB?mR+Gid=V6aOUq0h0M3l@IhO1s>ckU?2#Lj zT#a!@{dUkZ*xd~4MR>FIl^SKwVK1D0!%3y&T?D{pB6?e9csuhyyRnp|Wg>w_5TJWd zb-e!N$O*0O@oA{^Iy98$e6C Amx7M**u2_Xay04te2+J7m#$yNm2f&sSY0Wvb+FRmC&}fKgrD5`dOP{f*G;*n9N@ zJ8ml9oEEKo${4~#&M-dI0UG}*ri`&WsBzR-l40vk(HLHW4H-57wSc$GcF0Q|c=0}K z>9MIXAz@P~U63E&tYHrbGpOl}YtEKymL6R8hL2hdC!0Wk=G=gzeg*#uSZ@gjvjW-D zk2(b6g#2 zryU90r&{W`8-5dbqbix1#>|$a-V^y85DL}c{^s@>xdSuisD`qJq=!Z+xWGK-q~$Q4 zCeCwdH91C8PHNHi8XmD25mqo(EE#jwY-`=Rd*A+gn@0pt3OQbfjwFV7!0R^x#65N^ zW 4Z$uRB`y9eL!}_|9JZ(z;e+tH`T3iCv8S-|XKc+wJVGr2xkOV6 zyeOvq`)(kj+?3hC^gz$ORx|$h%IlnbR+{w?)!-@8{7eT~1XHC!KohmsUV`Z8;wqM% znPiU|shCIK1huD})OyK~ShP811UqfmdvJl%?K?GD0u+4)hj3=oz3{zL?Y#evu9f{U z9|7#g(B#J$1fETE3?TCIXr(b@moE=iThXh2Ycbp?%hUYOqwePhScDeb8HCWY-ob)v zRbEBj`Y%RMS2j7D5f+StNINYZj1YNzaE$P-)zqc+r99`XH$A~50xnKgZAHv*WCc$O zlLg^zk<|7mC`fUqmH`MZRHA?l3Kr`5#ZWDS71moNNl*9QrWH-cqkbALWe`d#!$S@7 zgPEH>6oi0W>L94*6>zeJU(UUcoEp718F4X{d7cBhGx|@WqU;@A6ti=$sezbPl^0$h z{bcf)pi4%1p-7G()f)R!(?oH-vj>*&H@&y)C>n>7P8Hun_1hrZaKZ6XUt#x+gIuO= z%+VutTBM`_U>zazV?!t_zvC4a+pt;N)>1)*gwU6}i|K<29!r=!0)~G?sSxInk*>~= zanh582vq3R!J+M=Hr-dutjx~i_-ds~8ThWo-z#(;J8wM=v*C{UV-oG;gD)zZE~r_E z!N^(_MVJF8%$*n2eJt;jJ!nrcrm Otd_D_2ysRIy0y~qineJ@ky~lM`R9F z$wmYiq! x dNj-)>c>TOWT#2|Eidp z2xH@wLe6`6XmDP{oZ(}N6c&q!RR3I^mSq-UjYq?6UoR^94G^=ZJ=aB`%xGi_Akn2S zOlop3n|{V{P Cj$3>M#llu7YIQvT9P=m? & z%+($+4YKlStrSuX&c95xFsbzbE}YcKb0!%%`#**EN;*lb@j-ruNFr-{`uboC0(G$C zE#*-;H}m9ZqPzmo-qG|X9 R>53SKb z4znuYt!KPFWHu$YeiJY$1d{>EPDdLJH*#9PemmyDeR*~BPy&}aSMw#kNZd=0WswC( zk7>(`MmB~Sf~ Kx3@`N3XzqgYY$+7$Rmvt+;}oECJz{ma!N4Q zcd~Q~WU|H4p4N`TzX^F7iRm;kfHkd)Za}BUcdPi*w2wNZ{L`G9y*Bv4a&cOv8_(i~ zisPfFL|z67eH0tU#Xqxm`yk{t#DsfE7Bz5P_l~P@k*fN9&9_fUSqK&WRNhQY`gI!3 zr?-&-(H4HS*K&eSHJ6Szy=mRsU_va7tKxaX`4;7(0qMmxxs>Dd%845pW< GxUL&jzmiG~w=r5aCKZJvLFqpfMbl0Lc6Y+eoSo?95z> zShM?7j__!fq^~XhzQHMjye#kF?nkfZ#-Er!YbU
%zCQtV`cYYvuNJLGvsAut=m&>!=?Fw zk>Z#P&LsbCOx?tfK a #9teU!;L6@my<++Zyq|L$nUl%Y0e7!*x>^@eUC z#c(gD)Z(gEPPjkv+m#))mJ9-vkn2{n&nZhY?Asyj0?!uivZzKe@ fi^rEvP7-Vc?Mczy=sG6MW9ad@foU)(0Z6G}=I0+arRpPhgl=I|Vqv`dk z<0XeSeyg%AGgnYI|9Q^!61jRF{n_c8h3#=dq~Y-Q+JN5c`thS=McFCe?R8E?P50c{ z@3tDZL&xL17k9UcVvoF9PmO(ig_Q-1xb$J`T?m*&3gR2?CIsM-3LDo|i&l+rg^E;b z)>@Th*6pax>E`3ri}WVCCB^Wnr~nx}dULF2_tl}V9#zWm$S>T%r*O7p*NW84sDyS* zMObwTw3_TKShJ*2>qL3vYjy+crxI7Q)d7crph3m_qd3k~eWNckfRD#-j<@3$pGM@0 zT)^uA&!%f3>L1t2Y}>yr7+#ifG=&}0xXZN1Rv1$^Dk^zlzCjQ$5@qGo$n|Y58S`ap zdU*w7o*X1<4eGfZE+PA4^5;hur<3CCGAS5M);gRUxlR~=JP+m`Z;Uu3?}$G+qr#rU z+HeZ>tp;I`>azFJyP*KscIq2Qg>pYA>zpJ_b>5X4&V>0bsYMzU1D;B|$`@8Av1Md{ z#qtJYCrS$XUzr@7MsP$?EFJsY!k$51Ka(&kKk>P!KP^_#?1j_3+>}?nd-=FUNQ0e0 zSJxNSB3W;8pIgy))sZ8m*T?3pIWV~L42i9ObJjSuEzZgsYb(C!G8Im0L-*cSrhuB1 zEZ0p7=tW(nyLOe$iSD$df(DB!4HK3)@7RayH;<%&!ok!f#sMj+Y&oitCCxV82Y{Sp zzQ^81K3lz0{zBXQVTs*G-`$0Y?u(GAwTu>{o%#LZ>I0xppuu=bHd!~RIyO|=R)+KO zM7*IVht0@c?L&%AO5i!Dc<16t_EcoXtyUJk$+=vp3B^0J&EvUr+DS{Vi6zq=J~v|dbe#eVCCo=HljK2@X}AnZQ$%opXp=T(XqPO z-zEL|CHYiVC2(sCLnwE14pYZ^B^0o2bOfj=kMM3;!y9NxaIdGQgwCY32Ot)vZ=S6Z zRFH^7cV+Y(`rdj}|8`dWVz6r9>GoHR-w_d?HKKnw4z5l*E_hSk-U^4V={eO@LZxkw z_il^WojwHfYBFu=en>&EiES|??9e!xWM$Q$hF@5)ULW@NS@RC|NIDz2er6%EEg V#s<^BU-cnG;qNmhx3!j+J>P_}@9?R&IzF*CC7uqwhk#LqNu>)#vcPO?3B`elZ9$ z)K<>Sq8PQQI&fQnTG aBY_s24MhK{V%Y&V8_ z(a+}JPyyPA!gKk323Ekf*UBW`+1jS=D-9ZlLe(S9{xTR?s2n)KEcj#wU22s0qU3#d z?xk^Y-UflY)6$E{iEcP<^_HzmiN)tH{k-~A$EOaY63-s#%wa|s;zzPx4DM;MK#gt0 z4=1&aQ_alEf^^V%ymr?)x7>S4ahU16J`HMZPO@q}UY_O$v?bT1U*dJZ9l4z^5~xcx zA)b@d)_X}X>v !LZviYEyFEW##NlH&&`+E<}nCzgmbg>l%*pdHal8fz+?;?}gY^ zg*f+|j@sjz5&dlYP5hjywjKuLP7?3(nq0?yVrPnMymvLKDfdAH`v+X>p?3X6tEdg# zGxi4>;o84ht_%SRxVWg3{PBko&Rr&ZE}RF58KORd{|&*OsK@IX+AqGgTGUHN3w_(N zNK)sAJ+^Y}qy>tsy};`200-X|oAXvM0ML;`;i}+JY2dLWr&Pe}w5o5s%X^WO(ZiRQ z9t*TQmM^Ntc?>bt3%zej@ml>c7@zlvXGhTHTFcx_SY&d9fKhz(1M!@)xvi+Z*tZ|T zF9lr 9tt^Glmx%70k_sOv6M @FI;68CMi{*kEg83tihfmlAy*YFhg62l1%#oXY4YvzW;;Jo!1M9hWj|-{k zY&Oha@O>m&4*EFn7^kv)=o|ZF-<|53W%hHlpZ2isX*xnJ<|^OGo!<`;HWaFQMbGwv zxYD63Z{Bv7%YfLgeBazX#$^9mk-dh-N*-~1Zo2ZRgc-#1TwS=7ev^n%II3OdiWMgh zSk6!U?JQJnea6>^+tf)Cx-!V0Hj*{p?$4i6iLc)Lp~MQ6R*}G3aV;KXJDu_PU8g6R zpzL1JYJ7mGn`&AZw_ctv&e&^sn^>4Dm7KJQ;PnonHlD rPDv7H0= zEz6Y=4kT@$UraqaFZaG^i;@l_=6j4BXTsAnu_}c7*SNd|g3JL$-pS V@c&Nu&YIJ5uwI$}J8RsGaYqd@h3hg`8}3VlvT$ zDJw^DgbbJY_$Sq=OK~v&B{R8W51>msEgtYCKSQ``KaAz{S!`9JmRr+nfX1=mtGx<@ zoN8y7WMZ#Lyc|JAsIm)lLDBatf_z*#xRlx~I|e~wD#T^oJHW{(`_Mo6DoX5PRtypt zllOW|ZZz0VdEg5ZkBZCgF&}tZJRR-qIZ#r*Tkr$0&0V$gFs4ggE|SzpqNi?0Bphtl zCtzRx(hF#mk=mIm^kz48#tobBQkNeNS@ysdSy7BuakvZWb$0qq{@XE41Sa+Vk 9~$kR>&y65= so-x+GPN zt9v4|FBTEF^J)rAs-3%t)!I@?o7`tI?beNCsv&$yHAE>^1~QFrGsEm+rPi#3V>xcV z$5=ht1o|yQWPNW({9K(LLtvb8^ kvdrsy**c^WM%&8WMvZHknvr`jAm2TZ)L1663&7#4xb{gfQyW%&K!vL3N@_OIw zs#pE9Jx<*2vw&Ok?GphBh{x)6=zV%%%S)hH @!YrY^njF=oi&-T#NlY~r4H}2cGWt-#I!!!nxlTop_$~FKHp@vW>#Ak zH&SuN9mvc8P41323LDYv&U`+{scCS|-f0#VY?@9U0;6w{l_b1A8WEKDyIN_U=5xta zX`p@oU%h@og({qz8ME~nSBSdpNXwA*86NPgqGZAu!oUPz2_&y>V$bXJCO2{aU_*Oe zXd+p&sXyr!C-nxbd8|td2lv#Y>jevy60c0KJG &S-O+hGG43TJH zYB);n74}NcCW42kds}6uBzPoQjR0D?dz>57Vt$ei_4x`y+i*Mjc=ogHx`Y&Hhlsfn zFh(k@_(v_~ n6O1bzKy&VEZnCYV0aP z?OU3HW)bw+cYz(w9@&0sb|Bq-9s!#`3iv|i+Ara{%U9j!{PJrYk_undJr_@w49+}} zy=fNAyhmP}9?44Nng6Jm8rDq`u8bC8y^%EjaTi@F^;Nv!oK}t1!dC4bo~ptF`r?7Q zh4r|bQe6EhWa`pWQIg9nrc<%G6zJG>X<)IQKeE)<>jeaO{v?HUzT0Qs0h+1H3?(~g z4hgNen{GnW52fbb3;WkIH=Me@`}SLGNO{sD4Pd9nOuz8nZs_+eWpU&Eq9cVMd@(*H z+d6D-b5mkHt5|FPV~v2<4vHo4k!EUBZ_+{b=lfKi&J1*4B8Uc~mDWFxOWOpRnAUE4 zCEpQ<`(!FTeiAjj$ 3Hgl$czux)D3 z2RLr`Q7`9q*yQ5&RUicp>^A#npYM-1&cU|KjLej|MBEV1%27##nbiYmwx$bdeL2 z)5UrZAe;%~W3lhlhwn`feyD78vCXI}mcz8A3UyxxiYBTL7T@Aki7{{Q*YYYMZnTX1 z#okjj-fV!VA^d4RJ}V_mHD9WEs)&8SoZkKwGiANmr>MB-3f%E*&Yj8nsi&~5GyFx~ zpE|{({PrFY8V|f`{5zqi*FRGu6iMm=ZYF9v)QWj1q`YVqXoDx g5$S5bl$b@sYfipUTzKVR1Fp v- zsb~xb+O}#4S=d?5#0?}+JjuN{V -1l3^ETkp4iFX zYIq|UnCa~`m0P0yXn`A&DH3T{pyx3i(~`ct{n`3xLhG04cD^`Xo=?$>f9wx$nQu(> zq9hh 5*^43ij_^fc=}pF0?B$=ii2R$=rLQ4w!dZ6WD&h?AeU+W1U7Jxx6X z4Ad`>Yg*xiDs03#bYnR)ej5M}rG+KecZ+l8Z(bmI&YniCMDWACl&YVU+XG)N2#~}l za9()#o+j0sIj`io%~S{To>^d){Y9tNY~z+8B-DyWj3f0SuqUcS41VrLu7pLR46t=0 z5z$iwWR`*b?4X%eB4$m+d_CirEQjEy^U_Rk!Ox7yaLBd}tczxs61 *g`QBCY{mn9)!{oHhbn_V>hg!RiKY+Y;< zDxTs_?dMr%?|Uc4(mAU;bic6S5Q4RBY%Ra;tcm`}1_+?H> QfT*$i})*N@akT9wL67Rm}xO&D7#F?xXL@OCx^ z3BptLFY8Mw&N2I3f*$?$5Z9Q)9}AFQmDqD+G3AGstR!K>B|Zc1IxZpGx$~3*(;YZu z{THB{?eR243K?0CVZh4}IiFMOqtRCw^0PN;n&0#!+u*Z%hxtc)nvA3WqEhQjX-e0& ztvC5gIxp~>sArfSNJ!{QzJmbOWksO6EMaNqi&q{*s%SH7nEn)pU40k69`2lAgj6LN zIYzJNF#>}iVpfSiNo?DoDXo5tP}p((QlsuQS9BB;LIHJ;4#YWqL|EZ3Hg)(0WG+eg z&Y-xmPwtC#=#w3}`tTB2u|`ENn74*uMY5m7o88c#&AtVH3^Z&u#{fl8!{s}e@Vyr! zs=0+8g3^h*pHuZMj;i?y$B@*#U<_)xwsG4!LB>TETRr0qS;kmZZ!V;sJIDB49q5BO z?^+?erk(c)u`Q-NjNA$f_tO$> 0}%n8})}Q`yxA&0Z0^DS@z>8|8&!`mhs0-=GG-oQM=}aOhx70$7DEk F224W2rNL zDHaKUVp09cW=t<_wDIjB$0A98vEMD(di3s43Q=uybRBr<8Mb=& wlZ@7lC;kwZSpa%~ex^Jjp5x;AO8Z FH zs?he^b0hbj+<$+FN`RwaY0bjUw)8{Xs#A`>!|q#udK-`684NH1tp?3tO`-H`E6;Ez zcfs6ka*&ho_PcyOde_1TURXZ>UjYPIGPLGwM`e>=faiZufc ;AsMNx zBlVz16_7Wdsl?F#%y;*H=Cp+U9G8cy{=c%dBJfnRs3HE3?;;5WIYx>9aT uOf_=)W%Ge*{jx>=UDQUj)S3T-aCzHD~ zX7Ucnc?0nkpXg2;{c=tnqHr*)O;BQxzel5RxZ6&U-yT%bmfw6@aqji)%fJ72>O|+p zbBCAPL#~X#M}*05f#la3c{aksJl}e6q;eNk9Q_UOr*UlU^4kfke#yHnuo)WDofCqi zK7BF@JEOi+I35k26GxwR59wQV+2ih(-@=6uv;8rang^cItDX0`)3rUv7^k}6mGU8f z9<=f~L!-%i`JdAY+cM)9`uW-FX4*uZPMRL8%ec(#y<_G+7Qi>deYncqvnPI)dYZuJ zXK^m9_RZ%{Lzf%4-cyg`>e30qH*ot5%9)*Q3h~5*kK|1e-g}DB`uL0{x(=%@`yB4g zdM$e-#|${sc-dA?%P$AKQ9K|hwzgJ`94y`4Z%W=*o!l8$q>SgU=DJoPYzJKi?2aAl z@Q()H{W$r(pu@@SHylKd*+6saQxExf>){Lm@%E|b4h>vkRa_nlTiy%D`)Snbc6P?Y b2!{-#i)5jehfed Date: Tue, 30 Jun 2026 12:07:40 -0700 Subject: [PATCH 3/7] Fix fragment (#7129) --- upgrades/matching-game-netframework/winforms/cs/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/upgrades/matching-game-netframework/winforms/cs/readme.md b/upgrades/matching-game-netframework/winforms/cs/readme.md index 6dd6e695649..c5e4890dd1c 100644 --- a/upgrades/matching-game-netframework/winforms/cs/readme.md +++ b/upgrades/matching-game-netframework/winforms/cs/readme.md @@ -4,8 +4,8 @@ languages: products: - windows-forms page_type: sample -name: "Matching Game Sample (.NET Framework C#)" -urlFragment: "matching-game-net45-csharp" +name: "Matching Game Sample for WinForms (.NET Framework C#)" +urlFragment: "matching-game-winforms-netframework-cs" description: "A simple matching game using Windows Forms for .NET Framework" --- # Matching game From 5cefea2e8bd9c48e861822abd46d7b3a8ebd37da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 09:47:16 -0400 Subject: [PATCH 4/7] Bump actions/setup-node from 6.4.0 to 7.0.0 in the dotnet group (#7131) Bumps the dotnet group with 1 update: [actions/setup-node](https://github.com/actions/setup-node). Updates `actions/setup-node` from 6.4.0 to 7.0.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: dotnet ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/markdownlint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml index 9725ead47d8..dfad68b7b1c 100644 --- a/.github/workflows/markdownlint.yml +++ b/.github/workflows/markdownlint.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #@v2 - name: Use Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #@v1 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #@v1 with: node-version: 12.x - name: Run Markdownlint From 5fee0c35e0e8efc02a5234ed55bb2592f6d1b0b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 19:25:20 -0700 Subject: [PATCH 5/7] Bump actions/checkout from 7.0.0 to 7.0.1 in the dotnet group (#7132) Bumps the dotnet group with 1 update: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v7...v7.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dotnet-code-metrics.yml | 2 +- .github/workflows/markdownlint.yml | 2 +- .github/workflows/publish-mono-samples.yml | 2 +- .github/workflows/snippets5000.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotnet-code-metrics.yml b/.github/workflows/dotnet-code-metrics.yml index b60d01e56ae..40e607feae9 100644 --- a/.github/workflows/dotnet-code-metrics.yml +++ b/.github/workflows/dotnet-code-metrics.yml @@ -22,7 +22,7 @@ jobs: pull-requests: write steps: - - uses: actions/checkout@v7.0.0 + - uses: actions/checkout@v7.0.1 - name: 'Print manual run reason' if: ${{ github.event_name == 'workflow_dispatch' }} diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml index dfad68b7b1c..30739b8fb2e 100644 --- a/.github/workflows/markdownlint.yml +++ b/.github/workflows/markdownlint.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #@v2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #@v2 - name: Use Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #@v1 with: diff --git a/.github/workflows/publish-mono-samples.yml b/.github/workflows/publish-mono-samples.yml index 9772de59305..854c5327666 100644 --- a/.github/workflows/publish-mono-samples.yml +++ b/.github/workflows/publish-mono-samples.yml @@ -23,7 +23,7 @@ jobs: build-mono: runs-on: macos-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #@v2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #@v2 - name: Setup .NET SDK 6 if: ${{ env.DOTNET_DO_INSTALL == 'true' }} run: | diff --git a/.github/workflows/snippets5000.yml b/.github/workflows/snippets5000.yml index 95b2ce7ae7d..5bc4d507de3 100644 --- a/.github/workflows/snippets5000.yml +++ b/.github/workflows/snippets5000.yml @@ -32,7 +32,7 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #@v4.2.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #@v4.2.2 # Get the latest preview SDK (or sdk not installed by the runner) - name: Setup .NET SDK From 86ff8487361a6f32549d9c9ab8b14dde55c643cf Mon Sep 17 00:00:00 2001 From: NN Date: Mon, 17 Aug 2026 19:00:18 +0200 Subject: [PATCH 6/7] Fix casing and wording in README for Rest API Client (#7134) Updated README to correct casing and improve clarity on Rest API references. --- msbuild/rest-api-client-generation/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/msbuild/rest-api-client-generation/README.md b/msbuild/rest-api-client-generation/README.md index 8fe21759673..79d752238d4 100644 --- a/msbuild/rest-api-client-generation/README.md +++ b/msbuild/rest-api-client-generation/README.md @@ -1,8 +1,8 @@ -# Rest Api Client Generation +# Rest API Client Generation -Nowadays, an application which consumes RestApi is a very common scenario. We are going to generate the Rest API client automatically during the build process. We will use [NSwag](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcore-6.0&tabs=visual-studio) +Nowadays, an application which consumes Rest API is a very common scenario. We are going to generate the Rest API client automatically during the build process. We will use [NSwag](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcore-6.0&tabs=visual-studio) -Our app will be a console app, because it is simpler. The kind of app which use the Rest Api client is not important. +Our app will be a console app, because it is simpler. The kind of app which use the Rest API client is not important. The example will consume the public [Pet Store API](https://petstore.swagger.io), which publish the [OpenAPI spec](https://petstore.swagger.io/v2/swagger.json) If you are not clear on terms such as tasks, targets, properties, or runtimes, you could first check out the docs that explain these concepts, starting with the [MSBuild Concepts article](https://docs.microsoft.com/visualstudio/msbuild/msbuild-concepts). @@ -23,7 +23,7 @@ The complete code version is in this PetReaderExecTaskExample folder, you can do - Newtonsoft.Json, it will be needed to compile the generated client - System.ComponentModel.Annotations, it will be needed to compile the generated client - On PetShopRestClient, add a folder (named PetShopRestClient) for the code generation and delete the Class1.cs automatically generated. -- Create a text file named petshop-openapi-spec.json (on root). We are going to add the OpenApi spec, please copy the content from [here](https://petstore.swagger.io/v2/swagger.json) inside the file. Why did we commit the spec instead of reading it online?, we like a reproducible build that depends only from the input, consuming the API directly could transform a build which works today into a build which fails tomorrow from the same source. The picture saved on petshop-openapi-spec.json will allow us to still have a version which builds even if the spec changes. +- Create a text file named petshop-openapi-spec.json (on root). We are going to add the OpenAPI spec, please copy the content from [here](https://petstore.swagger.io/v2/swagger.json) inside the file. Why did we commit the spec instead of reading it online?, we like a reproducible build that depends only from the input, consuming the API directly could transform a build which works today into a build which fails tomorrow from the same source. The picture saved on petshop-openapi-spec.json will allow us to still have a version which builds even if the spec changes. - Now, the most important part. We are going to modify PetShopRestClient.csproj and add a [MSBuild targets](https://docs.microsoft.com/visualstudio/msbuild/msbuild-targets) to generate the client during build process. - First, we are going to add some props useful for our client generation @@ -86,12 +86,12 @@ The complete code version is in this PetReaderExecTaskExample folder, you can do ## Option 2: Use the Custom task derived from MSBuid Tool Task -In many cases the option 1 is good enough to execute an external tools to do something, like Rest Api Client Code Generation. +In many cases the option 1 is good enough to execute an external tools to do something, like Rest API Client Code Generation. We are going to continue with the same example, but the ideas can be used for others examples. -What if we want to allow Rest Api Client Code Generation if only if we don't use an absolute Windows path as input? Or What if we need to calculate in some way where the executable is? +What if we want to allow Rest API Client Code Generation if only if we don't use an absolute Windows path as input? Or What if we need to calculate in some way where the executable is? When there is any situation where we need execute some code to do extra work, the [MSBuild Tool Task](https://docs.microsoft.com/dotnet/api/microsoft.build.utilities.tooltask) is the best solution. This is an abstract class derivated from MSBuild Task, we need to define a concrete subclass (_We will need to create a Custom MSBuild Task_). It is prepare for command execution and allows us to introduce code during the process. -We are going to generate a Custom Task derived from [MSBuild Tool Task](https://docs.microsoft.com/dotnet/api/microsoft.build.utilities.tooltask) which will generate a Rest API client but it will fail if we try to reference the OpenApi spec using a http address. NSwag supports a http address as OpenApi spec input, but we don't want to allow that. It is recommended read about [Custom task code generation](../custom-task-code-generation/) first, that article contains useful information about Custom Task creation. +We are going to generate a Custom Task derived from [MSBuild Tool Task](https://docs.microsoft.com/dotnet/api/microsoft.build.utilities.tooltask) which will generate a Rest API client but it will fail if we try to reference the OpenAPI spec using a http address. NSwag supports a http address as OpenAPI spec input, but we don't want to allow that. It is recommended read about [Custom task code generation](../custom-task-code-generation/) first, that article contains useful information about Custom Task creation. The complete code version is in this PetReaderToolTaskExample folder, you can download and take a look. Anyway, we are going to go through step by step and explain some concepts on the way. From acb39ceb13f910ae0f8f6298059c59102b749c41 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Fri, 18 Sep 2026 16:44:29 -0700 Subject: [PATCH 7/7] update action location and use full commit SHA (#7138) --- .github/workflows/version-sweep.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/version-sweep.yml b/.github/workflows/version-sweep.yml index 7c41773a2d8..5c71a0ee242 100644 --- a/.github/workflows/version-sweep.yml +++ b/.github/workflows/version-sweep.yml @@ -35,7 +35,7 @@ jobs: # A composite of the .NET Version Sweeper and the .NET Upgrade Assistant - name: .NET version updater id: dotnet-version-updater - uses: dotnet/docs-tools/actions/dotnet-version-updater@main + uses: dotnet/docs-actions/dotnet-version-updater@cdb3719bab6025f7621b04044094048f597b1ae0 # main with: support: ${{ github.event.inputs.support }} token: ${{ secrets.GITHUB_TOKEN }}