From cd94fb39b9cf23f6f158bb42bfc26092021981d6 Mon Sep 17 00:00:00 2001 From: huxc573 Date: Sun, 25 Oct 2026 09:01:02 +0800 Subject: [PATCH] test: CI records screenshots instead of comparing them MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The release run on the GitHub Windows runner moved 2% of 00-transfer with no code change: same OS, different set of installed fonts. A pixel baseline belongs to the machine that drew it, so on CI the tests now write the pictures and stop there — they still prove every screen composes, and the comparison stays where the baseline came from, which is the machine the interface is being looked at on. --- .../screenshots/windows/01-connect.png | Bin 96971 -> 96980 bytes .../cubsync/testing/ScreenshotBaseline.kt | 20 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/desktop/src/test/resources/screenshots/windows/01-connect.png b/app/desktop/src/test/resources/screenshots/windows/01-connect.png index 04a11910c3e77a3d37d9070205b145c3948222d4..2e8bc040017859d44568329563b679ec7435d024 100644 GIT binary patch delta 34202 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 RW{JK?OCVsBG^husDMhBh)45|StDP<^W7+|Ek z89M&8(R0rGpL5=G-tW4;j|*j(y=U(y)>`+y?zJ|p!~;0ufy|0Qq%Ss>dC_?XImK=w zefFf^7wd25I7D@dSlkZZSgVTfJK8hROHGw$B-CGOPW$1*pV&hdJ*OkT;p z!1MX>WhyG))9#7kKR6iTXoN;uuf7#a7JBqTIqM?1vEp6%PVb(DjaO6V(~3&$!50+! zGIAfWKzfaI!VwECnXvHuxY^KoN zs4JhfBjy@#8j>C=TWm<$r)8x#k)z0y*(0CFHgK;hS~grTDXb_3@j4*v)&H~Fx|g_9 zn!J;@jGatpQXm$us|jDDIOp}|l%u(?KYwHDQ0wl zS}0}7>t5PKvI^^qmW5#!MNQ&+Gutr6&)nTd$ws{TWA>daI^oWB`*~__`oaR?wmHiZ zv9*1=o#QA;?rgY_0i$}(1*X>G*{N(&8rx#&?^+KKW{mhKhLqQQqE&cw*t*a)nLMvF zswPN;_Nkxe6n0D98_C7f=bbKcT#6q>#us%-yUM2XW+lTPaCEQHUBy#`(Q0oOjP&q4 zz~`CMSRK$A8)Z~GZ2Y=0NMLBwgp*;=#D z%zg|8b3zjlt7vi&OCfPm9wN4BSswL&orjOCtt#v0yiIcN#iJ*6FFLZD>nW%<)+ezo z=Xd4>Yz}g~d1Ybuj`BC-<;xPO@(OnL&5^b2vGSATNKl4PgDmcYhF)KOleq-NY2zwF zgqTXJ`OW8v9UF-FzWfgDo$#*h@s?ZO<65j0gKM)VD=x%x%k>^rSsISqNl+0X2@%N1 zSX;bQ>SH8s5X;v0cz?lcNjADBO4in%l;xBu0v-pmqdnayMk^m(W02p7-ne|_igC*c z<@);1ygaGh+1Rsgzs`vqahaA-7g?Y89a=24k=fbt2@6J^t9Lx)Ewk79K7oc)A`mx+5dvG=Lpz{rRz0<3s!v*JW$m;P&i>w;Er$r&)I@zX7B67`0oqv#XHG z2Cv}G_hVgV%UbvuwhQ~kyw8isT@ev!cn6CqzRg!Nu5;+hUd-dl$&4M@7so@tpTm~t zHy*x&9seANY;jdzxBbEW=3@9hPIh+Lr}OiH=JQYIM_l|BvBeU^V$+-(0+QCFTSR@1 zocVHJZnmQ~6yLPf@$vC#bn4r2Gok(_4O`^zNkrjZ7|fjc_-v0|!9x1&IXgx#uK+%V z=W@rx>eG931(dW5XhhJ7Dk--mrKR1u9@d+>Iff9>vU_9f}?Q_Hfc+-SbyWt?2guSg6zD{pHnff zjP8=}+2elx+@3ucjLL-NG4#cSJksGy7v?`}{W>4GUPo_`rUZ*2?akP;|*mXaw zvm3=pIuSAQhDf@iW&SGoXnF2%&sz3-x^IyS7)<5+lk^f}n`_qM?ZOBzdVfqu@X^sm zCfEIE-O$6Ut0!+F%TrCcjZElzq_d4Sgez%~Tf==$@C?K)k|*wtOlNGOxhtb#tms#V zH9H1VQ0-kd;~36wEio}c^;Pf0pHW5eXm6=Lr61sZTzOX(uGWzVH#fQMT+$G+_Ux{& zIOZ^Ve+|!~qUSd|(tZ?zkaW)=<~TX|o9e7_Il zHa0LYa0Zr?Uc&34^X6fjDyh+i&%Z)0Ml5Dr*}dxpiO*}ep!JD5?Q15jM&1* z^Trjh8I99LMeGw(T|CWQJfBH1m3B|zn!Q!{P(yUg#-o+ z1pTVy+$)OygbTR;wYL9iZ0P!9{;RdYoB#baGyOjAy>Rfk)Khv%qt>@_RQx8NB)rSC zU}=7rfRU03ATy~FK2-JK`oF2ry$Ba@QXXwY;;ly;QYOD2V4A5FIlfm^!=~AwL0M9= z81Zr5{1uhwgdY-EYN`jEmpE;Co6LM{`D}KJ_K=WU$C}ZKnm~qulF2R36hJI7~iI2JB)XoA8;sD z)=mhqBgE=Sicl_LtVZgJZ5m6Qh&A+dHFq(cjA7H4H4E%-X&)3=)!E%1tAN5z8#(eu zm-xleGVXkrQGx4Kh@qFPT}092M!lwe<%fbcZ`<|pDrHQkbLIECG&&PW$;pOquySvsA1%WDgYv`Ty)&|FRTr?6vVfABQ`5NL9$q-V3%sT13;GWsZ zD%n{|<-gwv`;~o)Q|&+$1LNff{tU2%CesA+5IlMsCHKGtpUKiye(Ps!_`X$NN0<4k zQE|tf*I^dTJ!?o>spU>W_k-{viAJrUsUw5Wi#}e&?hZj?6858+Vx!<9-7#teiP!o7 z)9^B2rlovsndef_e)vFgtKT#vHf#IlVYiS#QwvMaqid>vDT=lLgYYTiI1bpPDC(rt0H zVSM1tA{GC$r4O`*KUfe9VY`vfrlnxMwqU2mKMp@zB28vla#?EKWzY%z=V_c?2xz9Rc+w!R~y%i6BjhHnhlqPVkbuqP0f?M?lMdQ(Sk_CB@!F%dg(`EqYN zZ!no~!O)e!{(?3R%Z}Oegly7LUS^^g`5t~)nBE%(URrp~*x3hV;@9zydR<2~*B72Y zq}%R)*g5enx@O$mMpwfn{k%&!t@?Z%!+5VS#V#{h;+{qwjGk{QNxq^9sA_KL~<3p;z5`YH2v=7DP)E^O2OjBO&)7-bp#7l;gEn6KxMpHMXeV#i_Iq<_V@PB!eZo#@(yHZF{QV*s zky?$^f&%-k`H#MSFmpy*Jw8V##Q0iR_EU$dA3EIyb0lF;-XcC^f-g2*Uj&_tR$=)|}<=Nxiu&Q^JvrSA1*e z6L=(DvDgko*3gGRHR9t_fu(}#?cJN{=p4qp&>d-)V)BoZiI4Y>Q@?!w1A|SDokWkw zH(}*(vXd_Gp^^G97O8vp?|t2GN9!vI$fK&NT4W>t9-%(wu~%l#fzZ9rZcxLwiK%%2 z1N@epp6=gKe8)fM`>=n_AlED5u=;c7HrKXX9Rz9n?xHt#t4cO(PyCuJYn(mux;Ou+ zwQ6NeTz%+iV%Z~Zf8Rr#&NssO;fC^2Oi?hQd*Oj5eSDUE8q!V53JS3y#>Q~WzvvZ` zpVzL;rdIOk&YcG=6r{{TLYl&n4_GwVc^wksa%gm#)vd*)6~epKhD!W(@0P z539eN@06CDlENUhw#G6%Z-0%4O(rt@#zl_`U19C~;@dC2xY4={$@Ph%BNe@!5}_Jv z++t`11bQnb^X>z|vbtwGkc0{CAm4p5rz`ICRL0?pR)aCG^mF5c(Zt4?Qys(rKIa>7``67DY0_S~LD}yRR zt8r4GP6LI>`Q)@*r9)Kb8KqY0!dM8+@g_z_Z`Hh2vP#7s3=1VCEJR#OIp}>)c#x~w z`Gw~>j=+xMDryOhVpEk)Juj1rh?=`nviD5l?Q7TcP5Zfh()zlM{Z&aqdut+e2V<%{D`-Cke>#)p$VoxEV1OnT<(yyrz7-9$IifNs<9)lEz1>z)oT=)}9SiMCT-_m?^v~KDJ%zpQG z`!^mPcy$Zcq!zZ-%u#Z;KXN{}GL9kpX5-=}dN?LQM762KxquM7%CiS}@H&o$5NAETFRA zt(;R%Lxa_~Mz71DF5i&Ty+1EEFVyq(ZLtFv(2M*wIYDYGq1m;vMsDjoxU3h?{Q+}= zqS}i@z@y?KxV?NrJTnC;tnwH#KutoqSFnksJi<%K6|bfqdraiZ-ranR^UT+9>E|m# zi@63izcL-_(Yp>mANkR5m6#b-ekvzEAt6je^88+EwLQTR5$Rx?^H{Uq)w)nA5VYr##U=&&%N*RF>N4eY(}OE7Qqr&h{Ay*4DD3bPFmwLRgHy)%+xzg)d*Ua;=xhatq!` z<=c=EZz0NQwv%1NnYSywE9HB=W$remWNa1}MxMmndrxsCz;B>HxV1U@k!hc0+uj@1U;L4R9EQbdyFNy#_01r7AE2ovxaVkONBg27LH0vpJ4f33w7j2FciFEcVz~H_B zGgJz(`v~wiq`8~w|6K}nYN2}%@m|09P2-me;=g7MD9^+{tZa=Hm<>%19EmOYLzOY* zCn%OMO~AE7Mb00!qwsXO?GGdsrN=;270u1rO6dPAO8EtPW_iKlakIJR=Yu*{Ugt#+RH$*S&n4SETBa%9HS0UN z^mn{jp8tw60iXQubH#tiKQ(#w{I0Iohv2v9^LJbJaX!0x9znL>(0uKh8ku%+BD7~? zwQ5uk{TXNahl?2)=cjn<+IrQ*p3iSWdF;x-A8$R1uv*j5o-iTN;(Ekl$q2pY% z1`|Wi(NYe@JnMJoSZmuIA4p+emM|$O5P$mlehSNeI4Q)amU&ejpn0xg-|p3P9#Je{ z=CXz#Bt!I1@$8sjBZQ4C^CBspb&=*xVYQS zn=nzJ2<<>Jg7L6$hnA?#Y>QcfqFG{_-f9+L$05UEu08Q`RC&g z{TZh|#$BP+{=#oPiVFzhkhkC=8IzNePyw!UIYKNlvSv_D zSvhdn)uZCuAv8pY-k;mp8fjF=;c}C5u9?vR$^hrXn~Kzp2@t33h-MZ2R=1}-?+Dn& z2{Rldd^qR^EQoaiaRJ$O>B;NY(XPZr!Nt+=wv0z3dq_(yqZ;>7SUjWCOy}x-VXrNF zNFcW#Nu_BWR58o=ASQMl_-M9aBRA4D+m)>X9E?#ax7haQWbflXpUXTv3cwUXu8?-cdE(DNF1?uuOPXCW|KDNFBNqdOA8TOBEHB zJDbaQ{e5UnXH>#?4DNSe1BDE=9yw+wfRX99+j3y#x@XexdT%Wm4VTYV@RNxhcXF=*DK@df1K0PtcC3ny9Z)hU6`PN+q0 zZpqM5x5BzO_9DIOWDs4WAZXDx@pDF?B$MZw^T51*U+#=frdhaCam&SGsjv! zS<1g25Qwr$THl(lgu0w-yw|P;=TA;fBJ}PK6YLS0UDLW-?65V*Xg8xeTpuy;v@|a@ zM3l3tgdrq)JxW>z@*6_`JBAH03W0q;_0chM zRv023?(-_tM*<**oXJw*}v>7H$+O)wTG)Q z>7NG%9vAkS=0Zk9m_2^9AKc5-b+V08=Znh~&6U!LtEU_W=f#Z9)v%S!WZ zJcGQho~{0*q!r~>YHBJgP+X=|4stbTKOH*UPZ}{r%w7t`Z#tQcF0ffcRyT%hGXn6M z$YZ8kglxl%wX_G4P6?=E=B7a!Vi2HXW202*zii}nR1w0ELtT)z<44$B>rbq=It(G?+f9W$io z^CoL?Dx96h%3|s2*jtc-9GgH)E6b<))ULFFN{o@ZeM=F-Ng*!qocg)=#^ob<2U3Q;as6?Oa~9 zH!IjqU%uK&Sr%gl?9{}>Bu4gu9fv9l@JgSSUY!{B;+_`5|KoQOHPuq^{$0;UaOu zl0`{tL<#CrK_mU=zu)1dIzDw=eRUAst!mTadOQGp=-F4m3Rt+fR3SQ1x%86lbM;2D zrm|08`Q&dl9md#M<4)E_W@~G*Jf#}At)XsenqfXVnxP1_*0bl%Tm=-h@xeZX)b@+5 zZ|D1K46DB+X#*o|G9SdOa*n zo17DtLno24U%N4xzv5F;lH-=h_tE<6Bi%giE!TkEr>smS{0W5_%Wuh)`JvM_ML+5B8qOW^gZ(DefKhX(c9BO+14Xyxjp%o{f zHMPil?21HW_0`W;S+9Pmx9EV>10;tvXW=BLh-EJ?QfZM?k;NE@(`x_83_e zcP!ij23dagEY*9c;il+hDgcn)U-?2Hx83o?N3=9dsN_JEk4E^+TM8>kXb$7^(n{{5 zj0@Ppz1~})7rRSb(e%5<0ssmjP4T{#-v=zmsG(;qume!kFyrVa6a*?Ohu+rM1J^4Z zcFHDVBJ8@Z_7dA`t|GAm}Q&yo}O$j1)>U3+KVwNkkNvMvZ5wr{%7>`YM_GMQNTb7*d~qOR7ThkkQ_-Xsqfd^V0GT#qn^Vou6U5i4(>1 zvv`*0Lxc3JW%h5@w+=Fc#>8qh=i;)SWb<}9i9;AW5s?4_(V`vO_Fp zMr1gcZt;7GJaf<#!M2lY~4%QV~l8}5um?tx3S<2egoMilS z3>&qEM>9zAS|F$aHVMa}V>{?gnDylcn{uZNZjksvdo&yyw{*EX4B*Y)GV$O#9(%G*OGBPq<@}FRBCKkr+vA%*PS{DdTmLlZB z0Q|aW&f%Z)M^5>kCt1Yd4=8aFLTDe-r&+8ptl#H4OSc}}v;pj2Xnyspuy)N~kGSc4 zHHtUIlR+xI#2H}Fyo)2J)H@6Z6^Wiv>#FiqXJMX97S^jxBta~!uNUnFL%H;dx;j8P zm4Yz9_wX#v~QrgD`5-qCIf-XBT@8z<&tKB;GY89IX6|yby z6VEvMIn9=C8Q4THNH?iyYjcG4(q?%>(AqNXvK~2*Rv6De!1v_Ha+V`(os>MFQa7Te zZZjEoW_Rx@?gM-zLqiCpbDb{d`GSl=uSDY_8df++JlESs93Q*`_Q=de2QqgkFFi!(`g|srqauy#rJ*=;V<3dwQbyLq)8qu;@ktm3_ z!lbW$j2)#!T>L;Z2Gy4=%*WV3EtHCiiq$3ju5Lt8%06@3;`kl?rGDUq7bdLVDXtk( z2D1UnbQ)# z4NDq+=08vdV#4_88nsY+s#6he%6swb^mlM4x6ZZ#BobD`U1>SKJ~S4}GCbwQruUM~ zt`|e1?mktx%O1N=Wz{wr`7>Rd}y=pDZz)eL-gLR4>1pV-A|wcib*iX3s| z`H0cN^hcXSCY^)U)zf#yIL=%z)&!}3QA}5H`Aw1j_x)f6s>u^xQBQvjRH2?2Zzd>$ z#KWSlQ_GtjP7@|g>*Qg#0GI-Mc&)@k_3a7LI2}E_6d<6*9huTN+T!Qy8(hP}?703_ zSrSStqGsy(uCExzRYV#mJGO;9rm1{qJx|uXad(!md5j9{)@zq%WUvn`OY*|_mZ|d4 zh{&$aY(svFqQX9wmiyJX0|p+7D8{bDKY(I+M?>Cnwn~DUwDRl6EjMp2$hCt&^K|y z)mGY4_Z~b5s_1V*GfL6v|6pXyc`8ejxkIBFIg00$%`%$6QCNh8ga)>Su;1kE-nlST z=j%sX??bLbA|{>)jKXbX!~mMNQesPcsg+H$yXx20)(1b*)7=R#E=nkSS!hRaC?=TS zInDH>vT1dy@`&~8z>D96ucvZ?ypjZ_7m{xo{wXG}yU|^83 zVaCj+^jKcLvoc#3;mmy<6h*hTdN;%ONNLj<;GliY)z!5d;84Hi8b z?US4YrZ31P=8i z8xMkqA|yWmixUwzA$s}>XAKzsBVBO@;K~qk0-3@cKi*_(Bc&53-=Q#yBnvWRKofkQ zGNK~VnKy4IbkW9UeDOH$(D0?~@59_26ab9O%#Jq)oKN_{4k`ln;+oX;y4D|Btf+wy zGjgI|hcj_$={e9+>+juQ3gAg8kDcDg7h{d(f5Q;y#wbSfeo~JI=3s@|LcnM2KF`a1NdA}Oc zJMaJgeZ)-edWInuO^x;Ek5`DUn-vH?J^j&Qa^Tv3RLV@hOuzob>Rqf?sE;S73rvZP z_u<=(rm@DO3Nf8k{h4qzV7DF0 z?OXpYfi%fbV9_-~PmeK8`%?_TXwbNSB{W{T009ub{uKuH=gj}53kms`nd1K&qKN#H zZmCseaIqhwi%(JM0E3};yqniN+v;R`?>S3Aw$eREZN3c7MNxNv|H=JofhdG!Zg>UK z76clUm`&S=K;;+;rBVRyC=ION0KT%e7$M{o5Q&wCl5o$Af2J+c4Fn`AOAgAxx+~L= zd;`aWS}m0=0iqp5!QoeEar^hz*URcLL=F&0LisE$DqSBK(J`~INb~aYGPAS$bh}sd zzwP9BZ)=7naQrFE+Go3;fM8SSY$xF-;Z>HTy`go(>7FFP(WEni1;j(3iz8L_ql?JT z!FebrJpwL(yHh*6k^)I5_(=u32DmekNbFWrGbwyXMP9YJ8E}##9b~D)J1`)3KkyW( zW}rh{n91Ig}-hxxkv$2iV3oANV<|s>dw!v`lAxLf6hb* zZzuw?e&H5qxyFV>mQvaZ`#KPB(^NIj5cw%;#@493r%Qj@vi|}HROIYT0ztXj;|fV+ zqv1hYsMtda`i95_oZX-nv6Qosy>cLu)QIwKVt5_shhqp>SFzsvtT$)n&T$K=q^(6^(U^z`EAuWussbdOMmUVgY78jx9U1v8+^HEAy}sGOdF z1So%gn%1}!)@$Le528h_E&Dj{XD6tcIO0|eDmNgj|Ngxc6@kpxNf#-)8W@XqYK}Sz zRfD1xHzWGYOiZkE3u@n|^UMob8U>e8Qa?Dty)`lFAm`g(i|Z&w##hEsCH zb;l$D`}_CrkxaJeT5%q_;C4&jxdOzloZOP0&A=Lv+;upwLX*I;;@mE?Q0I*&h&91s zain&<&aWjT_AGl)&rB`|A>E*effmN?>jwk?tkB>pMG}pTO6MJuE5K(!N;+di0(IEi zq&t_me9lYVd-h&f;OQkZCkY96X1kIzdA;D2_nzIW)H@%2k?;~CJLz%njTI(7!)Vnm z!@E%L@UJU32ZQ_Cg-oI451?jQub+I=F^sHn01;PL37I%Hygcn9z}jirgM|(QO-O&F zntNC3Q~(}JY4z$SV%{ntBuCEV2L!3+?ZA4DWIc%3ENSeJ(;A7N$e^0pGV)`SwF=Cut~Dmk$UCun{jIm4qEYlk z)UCGUT@yBX(Jj04lH6-r>L(KF3i6m zhjpiv%m#B+LDah@h4W>~VjDl4B&0)93^{W^ONie13QBMDGJXXCGa;EA?BTIYKX&bU zXg+d!N{_!#{O!eZ%)xq8FXUqS$-RH|8O71Zw@njDv-KW!kNY-RMr^twkC=)YN3-ir zQ!wXzE=>SNd6N7BmzZKQ8jmhWp^8q$%j0w;w^Nrk?&$hK!nG+;BNcJ&C-nqcBGYhK zW9C?#0Ct`@{_53wTjSyq6fB-2(0Cf7yh^NwJ`Eki1Y2e7UqL3qNJqLXjI)A=c8$gJR~rPg@>obS;)dpszM>8(Ebl*HGYDTL2&_J{PU;u;& zDT6jb3O21|ihl)VX^@TK#ONVpj67!ele+h291v~V*;WM~(N}-zlFCn4e6h0&*`=;q zq3T!S6Vq~YJMtEx`{d}wg8~A;>T()|wV{0o*lg_bJ1@>mU|6W-um+b8>mBC&PfXSg z->ayWjEcMBu1;Z+ms+F0h_?RJI~0>)yUxtD;+X%4{c%W0hyhV|<}1|awPvQA9u2XTeM=@hJ5#$~ z8*H|);PAnA5e2)>FUZU<2?@WKHG_VQqaPWdvXZm^4UBS&`QG7c2cY@t{mqFa)Ye7> zUjX)fe|c9tr|eW2B`U{_jHy3(V}2g#I4!RdB)pTkc|L!3SJQu-K6i%nU;y-lOiVBf z1*|;jWG?^3u9$y6SckIcyb%fM>iMX?ZYFm2>!Y#A+dPsvSSh;zZK+P{yP3XiBtf{Z z{z^tfJ?)FyId5*Ymae1vuX|8aZNWbfQz$@%auem-KFP5qd|1Pb)`eRN=Rq}GgMy)% zq~tH)`h!f93JpKGp!_UwXI!^n=fNM*JTa8cloU96j;fhRx*uty5o`z%AS@J#McOg! zs;I}jlwQyu2nH~5gtAwl9<}fpoiVHZ09LV(%%NHGR&E4HpY{Fu64(Thqm0Ubq)$m| z;*-PEo}gwM{UNO4sAguXawxf`Nte`Tx8vj~mD@Kii_P26>b}a`Vk>qJ39RnT>iIhD zc^udFOTOkmiJw~}lpbNxb!Xs_1NSVB2UBe-2_ji$0xP3~6*GeNrRv|o9|AmKc`&=w z^|t1Tlj5EvqBoSvd{oo$X0GO~DKv8jnN61wcR{!B9pV z9oLnf(gKGr(Q6%HL*vqoBS;u1s~M00(?_(|X7@=yh&Odw23a zZ*Mf37dP6QO{Z&u>_UP+hTb)ZC5Q0!Prg;LJnxuq)K^k?aziNEB@xPEf7_Q#&L8uj ze~i6~bZ2e3VgdDmI}OxRiJ?tai@lV0sJPa@xK2CuPchNBOeX0%r9)&yYo_FUyZxA` z-U>L$O3nn0Qh<%Xl*x*%VBk;zGzIG$7Bkj3BQ9QMM1BVbR9W^<*($P2S7ibirtuqj z5nIF}Vc)DjjdM^5NT|h?ob=_8D&#-PD228VLNh}cUK>itfD@;3T>vMc`{TOhp;zIK zKpRG;o0iuXKYMQh3ZX3t!VLR{7T4;^(_u?kG}1G--Tzd+hplcf{4Lj?LUJh}H&?5i z26^i^-XNz7pS4eB&vz_~8ww-?XEO5knLhtA_%LIm_XDTQ=`SKKsz8g$J~BWbWZeeH z3#DlB@F*ei{n0dg9`+ML9Mr(eyk#<3p!f8hloSNobP$h~#Kpz2_#<1kKmjDT4yF_p z)jqq3D#Zv$%t3LPp1Kg{p>g%FX$9m1pp!mM3@SED0;W}m2aySMhQ*6eLZ&eA`d|s& z0;iUxnn4h)Yhr`m8=R(t36La+7tow&@K8lnDZy;iU#p_iV|6lA=s z!TU~>M{$?wqT~{~N?mb-AP#U+d_pSvIX!y2&92KpS*~yvw0^Y3Z@lgoNsu&%4gA!{ zPznIH5K?nDJTMsuF3%aSR-Yo4sY|&Z0s0{WBe`|}815x^#E+uJn}L!44#-m{^FRj? z2U(2-KLaT>BY)L1Gqh>8_%?L2E;xd7p1?!qq+o$Gh-H6m`~Wq0hL9I{s9inD?h1h4 zz`$a(w*(t|_$a2P7H^=vBB>J(dcXBRR^@TP3E1pUgY4bLnj+{+GU2zK`l>w&g;2J} zLJm`9ayjA(SPr>}FWYg*(knO;JvW<9?T2Wfj1>h9bZ< z+RN=3_|HF9;xBBT-@6|qNEvA0fHHreWiaHd_1aTH&>_l0+5?~uVhr$ytI&6X*7j0n zQR#W48uXQ1XZ)F@@b52Q3ggF*!xljX4BynpBrBVjpj2@(WfSq5z~1%!xywS~5!Tb* zh(s}XEJc|Yrs42jO@}pT4%6L${E|MbzRyr!>)Owcm!*1@+<@6Yr|;AxR^9sC#37#$ zRJOk&DLm1^IS6f7^?6=%oM4*JfdOaLm2lt-U-PX|DQak>0+vGzW8I3l8yn(Priefz z#UtIyKXPlVgTOc8z>fm2DfW`;G@Z3oaxEn`J=l){o8I>^qUl?gAyXZoOeq&PN zn6a=TOrxR)x?x5#e?#lmNtP{FxkquJ3}Jsg74sMY#qBc04+KJtBjj@?>%XJW4j>_T zkh1ssnvYh>0vs_2h~~;EoG*``_=*xbtC2%=wWU){rwHjnPRq=8UGhpQDokK#9M~oK z$}O*fga60G6#1vj^q&(`v_tRG5wg}+Az$sWhr0App4W2hF7(-(=dW4g9#tOl{=d(ZTVmt5})OS|= zsVTkswNA2c4YE*-z)f}Z++?}~9ZjWq;gQ&8jl*0ZxI)pyWqIw7yh@e(;K}P3K*ANX zN@F@+9wDU`cYC30v>DFs(%3&kB-Gm#9qgHb%nIc3J2VS;yx^(mW4s4qWN8IXATGHr zD(?!Rf&1A>TwUF@l;hSxY;Ele3yCR8aB~*3GO`L((E%Ba6%TUf(7b&e9&G}L!v60H z5?F~A=xaoG&jEjU=MouC6GT9ePD3g@oEFP=+-Ax~Cj(p)WFn(QsE&ybByuZTt5$p}eR8>$+tQiMEUU_E;VQp6! z`u|C&|Hf3IA3EG1KJsKb^o$Xl&D7OB3x7z&AxhSK7VHYp*3l|NZTBt4EN$geVo9B8 zLw&-GlAZUx(&8_1Y7y#VBxOSTZrL32g^qsTf*nY7a#EiOHswJ^z&eU?!Dsf<4ci6< zZ;|FZnRg1KhgH5RzYC_Omy$f9ex%42xKC~5FdM?Yy1M6R0)^M0;xyejG+ z8jwI^Peo_YmF0<)mdHnW;Twzdx^}b>Ky}66c-Nxz15^In>ZbL&29VQN|CyX3|06qv z&;Bc{5533#LCyUiFNtvO6-7S`F8j|P5=9UHUr>DiJ93KrkL>jS3OP+>P%_JSIFZx( zwgzp*b$dZFoo~j*0i7+)nJ&m*Ni}2Z1eDqTD?j~zNlz<8q@E!+sGT38eiQvqDe7NA zb$I??5>)?DPnE;}ZLbbA7xL8?JTypA%H@MVrz0?g`HPenKu1OXT}XXn1vMO?0(=`6 z|F)7YD>(j(D(e3xqKdKfd;Nomy1vs@yfT(p>$Ee7L~6+WVDQ6#V~C2mdZBjz2hZzA znREM3UD#74&3}Q3S}NtmUc;xEx5Q+i)gtCpZuB84lK5K>rEY(Ze=nkHJS^{*Rpq8E z_w&x3IEK?Fo^5U2TArCI9D2Fm|K~=ovNDg;vg>kRqnG&T$Js?ezy6c&-}|(8Pnq>P z5nMoIeDD#$Ki!%PtmvOxBTp?U(ZGq^zEgE)qB%Z=!C_PHk$v35-XgmdBYMDCcwcL$ znU}b|kz_!KLk6i}T;_NQd@tJYd(p*ya&-($B9%F4Wk| zB2?DW->h>?6chAmp8RrgZ+dQ5*NC=5b4$?A@#nP``C%0n=GVg<37z;JyUMryP{ERa z{Mg^%GE`GtLZ)nsmuGqtrq|X+_}5n^Gc7=KOga(KYkq?brT=` z>d-Y_<5bXW-_i&wqMEH~pXt}G?`H+<6Z1w&zc`3Qn$Ju=59D)<@=LC-2yyqm*^Jf!7<1N2YRl35>JKS)}jBJsG7U9&0uVPa=uXuadI<#e5ljCoG@mmjri`Ujuc7WbMO zJ2q5PXDGQ!5F_*TzVsoH!x?6pMbF#bo~)?PdG6^DO&UEp-EeP1)D z)^^DBy1MWaF{Z64!U>u?%Y)`itCRH`b3`paHgiD zy)~M5VK3Ov{rs8UvuA0{lOCH|{Jt!8(yyP2>v2ImjYm~(si`PWfieleBx)#=YriHdL9@S z{bXV43_lLXaWn4rOn~UG*pZrt1sfiHFITPY5gIe~e2p<=v0pw{ z?@?HI+UlzPqAR%1x<(o^7nc;+QHJ%70}HaVjQ{xlE$Jv3N*X<<+EfE|i?P}W_9wUE z>dGYF_zw?{(qq%+KKXu+ZDTf zh>3a3deqyjp|{_L>y!o+;q#4Xn37uF9d}9l*ES6c&&VjbJ2$ngH8UcZ*_ezor$2q- zAIZ4`2h!^5%$5YS`~Ad-(?|zl)b3Jj;w3{ppJ&%c?AgASSH(1M%nwqdS4~1Fm1Jmqm zmvm*`CqHz2*RI2(3{z=(k+j)nJhfxqWw;+dI5*C~3OwAJD3lZyM9hS*e;2W=ct*~y z76TSp*Iz-lRy^p^%QZz{*;+2PaTDH7%-r6o*xB%H)ht#eFAak*3DywY_A(tm%xxFV zP`|Nemi^tzp}P6#PUKDFRLbo&lcVH~tL(bY`N3hKCg+%*Jb98B6(#Dwv>h!T7{v)O zllxjn5X7a>5ajceb;NVKtqmgI=n*rcoKG8ej2cux>89)8SqKhab4|^48lo6IznsA-v(?;R&okuc$4?k;X z2Xi^Zi*}VYHe!MMkGaG3_hs|yT1M5j#@L2@)wPiVXrle$1!Y+U|vp6rv^nOKDn?Fo1-Qt$K@ZFm`LGG z$tQ>731oJ%35-CDbGv*dUtZuNG!vegSD(;zII^GY);kKr1;TszL%@gRYa z@y0Xou78BXx|9|JI$})OA!f{;Yj}4XQ@|s$SKo9YqL9(JCiJ;lCp5YMg13$I&~!t9 zwX5=OZbjm<*2kAN7^TEL2vV!N&$FqB-n#Vyx}k=zpzSfjTwFf~*I*U2BCQECCQhzp zaA*xXBLbepAO*l76d`^8J~#enSFoN#dQ?=D)Jlk-U;nSbr<&<2rgM22PtD;Zb)xCL z0~eZPSv7KQ!=1*7h2TGed1q;m9StETP0Oy)@-n-y=j^ee5B$H>2ge)p7&uH>>kx_^ zN5-%40higzio>DBQNJfQt> zFrYzv0*8|0IyV^qJ%7r9LR?pHY|F4d6`yO#@alo1BP<9zdqYp4pI`Lr*ZZZzV59*N z@P}K76UJJDeWe?p00zvQV9xR8mIte(5+Jp2KV)ihiTP&!}GlzLC{1B#NZ>FU`ZR+6}nfulfXvCW_?x| zrSuaXgelq0Ja#0SJPQM&7L6p1Q2;KbC?v>E{2XQxjKD^($QT6Q;ClKVwaI}Tec&+l z{pAq;QpFD)zY2ieRo%Pd^-KF`U;mrk9EBxr?rwCE&Fsvg1HBhMB68L`5=KBqVP*R9 zJGL+>2_pKuT6j=k;N`IT5iW*~-_LKJHxm#R)&iDVi{Nld#!~M(E@H`~?%!_)qQ!RB zFO71~g{EU{U@Jf(Yqi1|+f)wqo#nfi^~ytS*%Rm$M3MLJ-y7#FJn#=>)zWF`H_U;k z7*-cGo2?i5h?y)O2v?GnUas|qvNaz3N-JgG=$3O{*JX6If7gxyXI?AL=ifUxfDAk@ zDyie%iA(_lfWNoHB6Cv(xPcA4Il5RTR<;u=Bz>ofJo${~D9`iKh&}r(+O|tK7^G(D zZpPip%Br9604w5K6IR>jj@dWul@Z{8+}v_S=`-16yAe=8|F~Zw?>i(VkLn*it};JA zNPE`ByK7p^V!v)=Wa!qS zV|K$0;w>M9Vv8I17;z>K0Qvz)lyfH#AU}X0-A-QPNfmB48+Q5%73qlC^{}-KlyKdV zAn`pD+VR`b;#HQ8hg?>0V4wl}oL^87UT4gxr=!1u&Jm$;?NO84b2x_{jn1&#wEdB~ zK)PhYxTGQE_)Vw`Y~i<$9z_Hfmp-a}wSQrjX9XdN*FFMlDp=f!k%^hPn!3+)lVUd~ zNRZWBJv0Q)8M?CAg>oBx;%`PzasY)bUaqGk9GB3^XzckDAh8glxxtDg!wX2BwZSrEZgmYQd`btpq8 zky^YMHB9tZT7GZ3Z1{IYHMP{{=Esq@Voz>MHOKu_AP&@?MJJ+&z55nEp5~CDI>Ojf z=#p|-Cc;D+{)8EPu^-p7Apq9!77%(`6>TQ_dP$F*KK&8oalvzBQqs~2LF}3kS8{$a zmzO%Ngm^wLNZQ zIkcgwJ2T%M0cZMTiPr8umU8kWsw}0)KUg_=7A-E` zmB+8?>5ZKR7YytGs9q{#3;b>e4-bB%iQ&|W#74A|lnf zzudIhzR%K>wUv+ZSZ1KJCZ(+u!7<0mtYc#wdQCAC-}f$!ftWUMKEPZ49zh)nR2+I; zW`A~85XC_yfoUKNc{5M@5Y49fJm+=L0QTfP1HYkr%5yPMRAzJyN~!bm00)d$`(Rde ziGHfCN3m`X5uV;{|x^@A}!Bkad1?2l2n0wnLFA2TQo9dda7Uk&y0Mf7~hfEJ8R2)EW z8^AW~dcjvAGQ1GQVsQ8FV_<;#_U{$cB(buv+;fbJi6(jY;I4oH5d(YXP*)}~HUf-? z#t7?oiZ3|5<6mdoXTGcY$>KYtPykm>0wg6JhBxzRq{Z)cGz7$XxC$L?A70SJh& zc;@X0TOk4j&5gsg9G%&^y1K8}(u6x8AT|-$1G-w0YiEB-gnogFmMenVR@hK8VN5f3 z0({u^l7*2J%7Hsz?L68mZ`}4fFZ)fXu zPc9mAZ9T;tP%nZ==G4 zviF1CY(BO`tt`14#Ka|coWQ)fS*@MoGhOc5b|_ZHLk~ngnL?*%_LYenuR4BKbo^il z%EQfy#2Qy%!JcR`yT}fQ#a~C45ay(!WQ5#HZk<|sT_CS$iMQOSv&px&x%&x{Dlsh_ z2_Me6#PfqX4ompT6kNx6sF#)&g3tv?`k`0M%(&&SUuaed^h+BUz!VB^rFFgLvR$2D zZ}W_4c%{q_#sg43s$C zlLu_;*a34(vtU|{MVa0Az&%S$OllHst^Cv~FPBVvKq>Pac#I&Vd5tt{jUCz!ZnI2i zk_(*XXl1{ABinZbe|+wM8_%8!Aj=Qyw0tu!#&Uh|jXJu~eGXt7Hwl#zlfDk2J#?lc zt*aZpaSzP&4G&mA%nZo|`_B*8^)~S}^$fK+Gm=H~S8+laP1z8z10YRJ>78ce7FVv5T z;9+^O%aksj6pS#Gv$Jqyrcc;`6u4a(0;`c-l}qbgj+s%Oj{h8CRUI+DhnY}tEPuJJ z?GkFZ!Mim6&`0_NeMPqA&;Y2G$pAqL;Y5oC4b5Sy-6M%H|c+qwi~_ zo~qm&(~{qAcerxpYt+&P{B3uq=lqY>0aR_Oy-5S2M0Q+v_HOpG3JZI|7VWlu%qg=f z@nd@W)v)Huk2+7<>d`<3{_w{L_Z{NgVZc^{rgu1(zO{vD!xakDR1!9lv$i-}Yj&yja0{WfyS zaoUk#*V~1^$^PK1MQ)#^u|YA{=G05Sm8kHOu0cH_%Z%SLi2I9)$!aN&fc5rqBikvT|~&|2d(xKIqXSfzzjTu-I|aWjVM9$D!jHi5qVn z5597T92_M5T8p%=3J>SVxtcKv1&z$)@iODCHSN*4-(Eir%)kq(ldVM zZbY2k)o)nRt>*>-$G~XZoUJkb#jZitt1` z!mEqucb^s&z53wd=Q5eBK!d+y70I!PfME5Tvm-=LSaT=?Bcnmo3_GEdK-wssoA^U2 zlXqohGCQjn8|;;NWRb#TaIynFZVZ*2ad&4?<2XJ-vg{a%Byx>3TPz8+cR$L#KT*_tV1VLTD|U2*4d zPeo5OJ3N*E|1yb99vaG94R>En;N^;1+Hu1$ig&j*q=PI77ik#m^4wrVqSIwpM2Eg` z$aY6yFeR60Nwh3SIeTuRbAg>MU$uMUAkwiov~%;JMHqXmYex@@=-}O7rG1#MeCz}od&X4zaj&yt%mzpOm+JAb+woh zXIiD5r^A@N4XDuxB40D;Dzs)jaP&8s%)#QQud^mhI^h3Y#)Bv0nTQvDdM#7WTr;!k ze^-f{x~5r>dd6)TW{(n(vvZ2aMXwf3ER+c>O8Qa%*~U{E7Yu!}8~+_Q6<{;<)8lga z{%x}$cT$R$xoQCk2ivgo0806fdMKxb9E7-ZMT8u(9?Gsb6cSbcMezmLOm@wjrQ3Z# z@E9#EE$b?eS8>nONcbO}16R72z0h(!jQFk;X0P`AH;cDbh&TJfblF|M_WR??=x)E- zMJ1b{x#9bcV*cEl*Po3VTMt(B5!vNi$~|tK5O! zKWJxuY;Dr>tJOW;FH!6?n5REE`6HPU(6}N!dFi91^Yl?QJp+TcL`-%;fx%NXeSWor z!^4mOX#eup;ewS=sRAEz9M;S%v6>LqyCSC?Ea8{JKN7{K8s<CS6myt?6;YiI${yX^3z` zLLfYTr*>+~Ph|U-ZnjCKR;GW<8TjuAYyYLb=l92FqzEZEsm%-i?}?s@TNCLD+Z$0W zy7%tM+Q`Yk$2FzxPda(_wNX!fnfb(`3oygE6xD*10MrS50+2|0gai$t&~C>d!KFd^f7L~(fj=ajWN|%)3#Qe0-dCS zb63%ml2jRD+;jGexST@<*U~)pS9Q*ARp81ybInIq24Z>!_j})L-v6vR)9uY_{|Zr` zLcq5m%cT5b06HNVPCi;DJ*5g1fs-QAzgCRN)_SvHom{(Wn>G)tcoKeH9|#uNUJ3hf zarv>6MN|F16{R_+%5aLBrhS}rMYJWNSD-#4yu<8zTww=FZ!90#Op5;_ZerF6Y+aa}6qZ&4qDsuz~V<(`V4b>n;_}e^Jaz zt2#&izSa(V(nxII8?ZEZ&m7PEYJ5Y8z_(El)GbFLHOr33t>RX3)g-Y^2ZF7h-_>HD z?K5J=8b`aaVe%|VYpR@`IAoIL)?eHFlQ~^`!#1O>dq2G4b^?iep}c54G_7k z{Bp@}44C`YmSlsC^Z7VtvOYf0T#{$~Gi52LdVYDTm&mv;)S-6l$@6jzc=%&m|7f_{ zJ_^s_P00L`d}d4`Np-vHZqp0qtsDr8#^!RIV0Mu{{puVcY<3+vNOK$rYZ7kHe615W z^wvIRsaj`lvB=+Ou1Rs$PX?vwjzGpY{F7xm6i<}BszUmqB37L$l* zXb~nQRdWlJx7xZnx6VifPY$ea&!?X?lbezW6Hr8w%39LTHu`^xb1oeqi;nFI{;~2r zZF^EGj&)}foc4Ys)t&RosdKdaW@f*~CkONmhtoI}60QQKQJTG8(-ps+I3A=5_oY5P zeCivUa|dk9EuMSjqZThXA2j`_68mTgq+x5s4 zx{@%4kCwuIW*im+i6FggKJ=?Tj3N^Fe|)i+9MClQ+)w(4gE1WJ3?D;0`*Z8;ke|%R zEhZzZ-^pIkNaDRduq`$xlQJj8Y`qQS2YfXw^Iv~-sorA9?`~9Tkr02sT5~I$<%sEQ zo!_?{c~93s<;Q-<6s=w-CL)O|>*Ec}G2<3L6}M(ZgN4hPS0o>GJ1S&iDp$<)LC1W{ zx+LD?KQ?J8SZ1r8-x9)G+hN<>-pfRM_oE;mqdWP_dk%NaN5~bM-2oVJQ08IyicKoQoNn84G^|yGZ{!T< z<^A%Md=|~PbLOZCP%db1*9#Ai6g(kk1}QQflb#U)Vc`{a&aw{;riC9eIh;!@pg{JS zEYdB{L7dKVHNn%E&&>oihL07(`1ElSv3TwzS0|c5FcTt{E`*4-hU4zte)Q-uN+(9K zSSjQca*W~#92O=Cq_)UP-D5oKxMNeCKT>9fe5ew@nqin$zpnX;_2)u zwj>nrGu5#xQjiB0^khDKCoQopkx&)8@-uQf*iyYMQ^R#=JUTFw6So z`aP3N%$gb#R^1JIsRGTNc0^0<$>=9HHh)bbB!aDrm>{KZd@|poY%NIY*Boiu&7u}K zc#|X+h^7YFP5L|2ojGJ2AC(R@6sKuT!Z_0B@rsqPR-8_FK;DvJX22OCEab$H~?22i8$ktw=*$V(9;{MVOqX3Azf z%YPqAr2NYM-ae#2A79Myx&A2jUHz0bV}nF(jpAI7GZS6J4>`a6SY1imwcO8a+-JdA ziB@onP=EH!x7lxP;KAl=XD6ha?3Q-Jsn<cU+od7_ zzOD8+)_*UVRkjHo{`7cc#f^5gx-jnjsMZhfhET4gm8nh~B?Orq+m^g?-MbVnJ-fc) zlS7kukda;aJ*qN`Zc!SqgTC#|?ZYpZxzD7EC{V9e-*eRRBXrV*VlnJa7GTJK%v)J& zmCfldj5#?g@LhH@-Xu*>%lSNUn4IwG?!L3z;1#K+ z7dx!TAmI@azH`{X@g~dUs!d9apNxMkKN$YTLqpk?tV(m(y z9HT%8Az;t|js_ipO8WZ+XxY7i%{5}?uZ86I0iI9wwBUQU3>4CGwb*$9~>UNdzT-LHGW9&UOJKi1^nxC z;pk5V1<7rj{)NkT@+tG4K3P@r>rE$-L51SF7DO8PpUS4Rob(XKN*8yB{Mds z|E9ic$W-VOltVo0&Dw}YCldsT4wo$V1rWp`m4icDlN2>{t0{hG4WZ2Ic6(q>Q0~M=;tP0L zj-s^Sdy8>-G-5hi42s|WTdNhSu)*xf(Pkl!*`By&-@>KSwx)j(qva(M?({1Q^L535 z#dO;$S-}zQHhUycchk){t2iNVz;Ik5%cQc|nn}sakFt#QzW#1~4SbWyF;fa@B0dQgH$4mpFOUI&!62mez@@UTYv%&KuNajNNMLS3We-`6S*AX}r=3uU8Z z)X4&uD+7$S$x83FrLKB5{RP$oQU$r^=7zu@h~fR1xlcJDW)4j5&uXua z`W2!gQ|E)a(Xvs>3vPIw(sOv%&;b12Q#ofjwzLp-VYx3+filHIkE<)neOs9EC5fWF za&h>p!J#75!$D-*@@+%FRdLwko|2L><_3nhka0%-Ba*v#*YXX&+aT&fZsk0;Pxs$a zv~HFsZkol)-Kl-AKlgRe=G_v8o%fb?2=AB4New7%HC8aY_%`Vp8(QRm=R*RIb?l{$ z7ucGZ-Z1cnj)~czm<>lONeJ%VNTDhdF$wAg#9p{(reW?_0IPoZNHq>&d=%i8b%9efO72gI3$zJw8N)+W>Us zv%ULPWp=NjwwSzBpT0!}QfKx`B-mWB1Y~A`{AeGjGXB`B7ERXtxnJ+I`6+L15!2&rz zjeoO>t=#UD`de<8kY z)j(2NkAqC2g;NtE9lK76HT3b@9e|z=>Lr5YW|>i8w~tFVcVmqWY*rb;0y0DBF$^ZU z>3W%RxUGT#=e6OSb26zSczbZqZd(5EM4^fI%wpELQ)mBhm0xb%aXo#Bb6IA-9h1PSjB z)8X&>x1Y+1`ERWApho!8;aF!rD`TH82X6ciK_ial^jZ}lizaYdROi7(UWWaD>FT)d zjctE|rXmfokohtxEG%ST9CA60K14ug7;3~wB>oITE2~$O*(`l*__)WGW01p?!{mDv zNB|2!p7+7Ui=Vnr80cD@qT7A?`0;?|ovc-X396;^OpP*?)OfjaIw$olkq+J?ZAc+@ zJVjt~0}{9_Y#I3Pa|WhHsuIW1&x_%xDw)ru#>@6S z1LG}jB{+z{<(J{|$nCDcO9uM-%Blqc(a{cc^m)(F*_4?0a2r~bLXRFl#ut@6dtpZ- zK_DruI0xw8wHyxdrw)wt{>`bhy=$}$(Kqr)~0)nB+2W5w)JQQ|3a{roP zC;qvNB>;q=sLS5p(7(EY_`)P2iF;;nM5Wg`v|jst)>rLY^ENw~Dqok~0T{XDl$0}o zz=eV_6v_Tn@(ZDq6{O10)ZkfO`Pmcj492yWTzEh5Lp#J7C?VQLNl8gy0spr|2I!H~ zCrf(95JHwJH_pAf9MsvG5t;~bXLm$7jmorUPse+-_`A_s23B(Cf+LkDe8HnsL*-ntF zj|8AzMwN`~Hk2`V-{WL+#>F2t0O$m!+=}gzC$_da7o#_d7&uwvUfkgcAYw04R4D4xku!Wn#;6j9Pw}Y!ahrc3DeUwXN91p@tU9w#_S3+dM;g8*)NQ8BLSw zcsSdKnVBTY;&8W*1H)r5njmd8nZQ>9vgSDl`5wnCjg~T{X+j|#W^(}w90e;p`R1yD ziTYFNCJsq&d9APu8;cGyVr-%C=|+!NIM7$*6a$zrbz~*{>Ha%BIny$6H!fXzIGR_? zaB=5jHqZ=9?uk0S0u-kOTMtD(C?~!o1y8WMZ5$hp<6jAx%xH?Sui_*j)Kd+Cne1^C4k@$)5!%)DBz_co~i8IyXTEk874pq0J~yH2nSRSk1cai zm!lwr?J0x-g9jP_hXOF-rcKD09Pwxd=!MjpFT95jU~%jECVDr|Ubs1TfQa9y$%ej#u=NUD_(0?DTW*9KX&v^?EdasW+N5Lx zXiQpa5K60VRTqiafS4ag8Kz~%Emg>~5xhT)zDEyM)^O}#09>y_>1w{U*b+gP$bSY< z&tss|A5WI;u>)`gA|P;94~4H@E{0pKSDZs`{1I=L*?g3AR;Bgx{XqJ$XO*-2LdC!A z-3oClgXEe%T!W&B%}?H2*Vnd(?{{J5!6z*L%39u0$|VN0_b(6Xs7n1`4RObEPbY>| zlSnV{r>T)(FuW6xvw1ZENwo64o1U zi8WHf@TB~?k6_eUOi!c?9jR}9&RsKdmNMIT3~Emqsb$fG2QkM*kLz6g{F#A)Nw?vJ zm4MfWQyV+Lgo6914Lp3n)#}2>j_awKH8mKzU{9R}ElI<@&JR(eiv^=wW-{8`!NC9T zB{b+ItVa)=CYT#@t(B7;WPabI?9_<@isrc@&{5Io*T#`Z8U?7${5JzZDbol{ZG4Rq z-JYP+;{2B{e&&tbWOu-48eGR_fRTfN-$n1}PW*-0(H@vq2LeG&FT1w(#7h75G$<2J zZFDn$XJE04`-^d}fsX4Fp!Kc%E9r?9*BJKdC@Cpr&eolx4*(eO5LdA0)X#r%Cs3`8 zK*W&WQ)WV^&M@g(s1-*k!ECS=w6%{}lKz1v3A$^I2F++n}Wa$Kh8-x31pR zKSzJO^+mN<*by8Y0>T3bJZhzi2{=*dS1;x zaYfVVXe9J1Nwv_q-$aHEeVA4OpjmoqYO1CgPE)h+Vc;bb7t2LY+MY0Q#-pndNRvI= z%bccUI#WG=x5cH{Q9>qBaFX8t?o3BlO!8ha zL!GV*Q4C5LBV&N=ozzr2AB=GU2mjAguZ08H34Di9$HrIuFjCqMfEo?{04#u+0zy=F z>Jb)}HS=nKY8CJ`FCy9>9C+@@a_ulLGQSViA2+|u?;G@*@pSV6y~+=54p9IQ>^%ij z6fIMsbHR@~qn4o{ckSxcRsaaT1q^RNfq3;K56nC9JOS>8s;&((dK1gEzm?FTxvj_=`YuYCK9N|w?c2z+m|nIWH51_zxDCiv*(T0 z@ENv`AHdrf#&m|DH^He2`JYRk3a_8F05l{l$>FbcP-}SPF0z7D<{5ev}abl*)8d?d^GG2J_2LZ9)Qpke}_8&;19Zg zINW?^eBK7BC zQq+o^Tw*Mucr;~JK8Mh5nfsDIc8#Rr!LUz1O*H1V{erd}26Jo+9sX|Gxvym&otK5? z*iV2v1T&?QpsU0IKyZL#L6PcU4kHq(VV73Gu>scr=PbKAc}{+LNO{Z}$--1j@Yd`* zl9s6-)#U5==%TH_du}VsW}f_TWU;GOgY8f#ySxfasGN=U-yHL^C2ReVPn9duaj7m; zmW*kd{_!AB+1+n0rtx@ZIMrGWUFsNaw5%ycO`rQ^$D{$^?Y4@x&BNJvh{hxXr%(s2zdS*0PEN& zDEtYkX|I!kOTT|NIZ4PpC8P$%58lm~Jh=OTCKJYdmtxW-A%WCLZc59oID(&wG5X{( zdiRXqq{_t;Eq&fau2|8WLcEn$FM1iTnp37&@mX0v7jHio&h?Iqp+@JD3xatT(&d)F zrrXFZ5F(+g>f5is&lhYMW!olpEF6Z}y^F=p!(VrvH_A+Kt&ayJ7$%#Y23fnEqd0O0 zq5>wKtyacu{xg7L0NHWL?S;1#K6%Rx8qTcrI; z6lokT^v-n_7i>4n9P!20m(Gn?_!Z0GQh<>JNArSE7c{S>3Eh|o-pYZ;Gi8Fp3P=us zEOS5G8(b5CoiTz(T3$7k6>3R=o$dEA!zp+&?=hz?T)Prvfy~_2psI99iF!U6wFn*T zFNQafRWMUlcy1KUQL63%Luf`XV&c?|zO6ld;{jbx>uV5`#4)T+JI_Z|%MKXzeQS%@ z+yjBj{IFsx_%lN*cQlaigJoATmbQbB?4VOxjM>UeK zRL*~lVLm3)cb**M%eYyY>Sn}x#4q8=x2s{2u*9iMk?No6ZPr3{rb##Np8@&_CzvW* zq2hIp9J@Nt7cD+Y)9rXLLbN44UTnE!)x>G7ZVnL#8ve}P#)wtKycNgtaNgGj5ios0 zuJ2XI*B^`K?W*bGwW;YoBXmubfjK6@4&5}I7I5sIdM11K)6-MAm052a*c^UNoP(N7 zRcmm{*Ru79EdgPL9B!gTX8W&^XU`^YOE;HrlNDYj6Wyd@l-ke%`H8Yk*sk+&n~G!7iZUkYJRutizYnQX98_Ox z`EG{821w+ZzW$~1LbCT|GO`m0O>O)9F|3*}y_Er611EE*H(}>$DObInc_Y@-qUKRHURKo2hJ4ziFwoZ(@6~E zEMxChY!{!hT>DTwD2{A5(9?U2Gpj(h)EIe6RC4unc~XY zCMJGXYVK74c`!>i%yJnIRGyn`<_Xb*b7M2oMdubM15%TqHBDw63ZNd& z^Sjw-Wtr~l<>Jk`=!5}9MTMT}BmL<@*DA;t;Xs@3H2e4aG5W1T3P^A~wIWQVhPt2{ z6rrFpwdmDAWf#2>fAXrE?IXL{2Qeai$Qobe0tLrS9U#|;i+y>{A#F19x0Yn!H&eVmgx7R^3?=(o8led9)!%GSJU#PL78y=s8PqNxn!c|nm7hoNYTMfyQuDE3tpxg2k5$|s zVIT00@tRv9S`;->Z4KDjb5-pZ7WNoz6zB+8BkY|#y`00GNobiYo9Gk$O?XQlW_( zP=o{#eVv?jfRiXY){d-?vo^*ZVC{;r5c!NTly!9dWX=}@U z_pbS@9RyZDbjcxVqI2uOL@}GcvTK_?EEFuAWCpflW{{uWM+ST1UE=KsGr7~*(o+sKd|4Kob)JC+2 z2(B|^A2|+zI`O4T%5SNpR8KPReJ6tu=VIn|j@)V+=Osz{_+iM0NFLd>z8d55b4GEi z&UdzK%6WdTj^$Pd&oW9?O+V*6#wI6q)`VP7vt2b0<;#ViKX^pQ)j9igekY#VxU8fU z-z=jo*vOW_Fg|JM6KhqpH}+1%nd71#S5|K$C@wa-EFZTr0K}O${>Ssi^nre{Q=d5_ zNM-Qq-Fke-*}|ab9pOt2(~?q0VtopKqi%r-witx8z?K|GnCtAVc#Qn4{^y6-kF z*}opB%S|oKt(g|Q?9Owjzw5-Q?0=#?I3%dU!3Kc4TR8mYXM!@lllLexs&W5Cv$@X% z#9Ai5DY9NO2@E2`-uk7vw9^U=7Rog7{3*@bJo(RB3Wdp6xO%te2X=b}g&pLE(rq;({1Q+$qf+U&w5^&nNOIj>eycr#Kcz!^g~WQte%>N{;eF Q^hRn|v@Yjdy7BP;0h+b+WB>pF diff --git a/testing/src/jvmMain/kotlin/io/github/cubsync/testing/ScreenshotBaseline.kt b/testing/src/jvmMain/kotlin/io/github/cubsync/testing/ScreenshotBaseline.kt index 193ba4a..a933f4e 100644 --- a/testing/src/jvmMain/kotlin/io/github/cubsync/testing/ScreenshotBaseline.kt +++ b/testing/src/jvmMain/kotlin/io/github/cubsync/testing/ScreenshotBaseline.kt @@ -39,6 +39,17 @@ object ScreenshotBaseline { private val updating: Boolean get() = System.getenv("CUBSYNC_SCREENSHOTS")?.equals("update", ignoreCase = true) == true + /** + * Whether comparing is worth anything here. + * + * A baseline belongs to the machine that drew it: the same Windows build on a runner + * with a different set of installed fonts moves two percent of the window without a + * line of code changing. CI therefore records and does not compare — it proves the + * screens compose, and the comparison stays where the baseline was drawn. + */ + private val comparing: Boolean + get() = System.getenv("CI").isNullOrEmpty() + /** * Compares the rendering against the baseline, or records it. * @@ -57,9 +68,14 @@ object ScreenshotBaseline { val baseline = dir.resolve("$name.png") Files.createDirectories(dir) - if (updating || !Files.exists(baseline)) { + if (updating || !comparing || !Files.exists(baseline)) { Files.write(baseline, png) - println("[screenshots] recorded $name -> $baseline") + val why = when { + updating -> "recording" + !comparing -> "recording (CI: a baseline belongs to the machine that drew it)" + else -> "first run" + } + println("[screenshots] $why $name -> $baseline") return null }