From 4207645a9a6a424b1cec6c53cd0d98d5402f9d1c Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Tue, 23 Feb 2021 22:31:43 +0200 Subject: [PATCH] Time scale: skip invalid data (#8508) --- src/scales/scale.time.js | 4 +- test/fixtures/scale.time/invalid-data.js | 50 ++++++++++++++++++++++ test/fixtures/scale.time/invalid-data.png | Bin 0 -> 18667 bytes 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/scale.time/invalid-data.js create mode 100644 test/fixtures/scale.time/invalid-data.png diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index b4f702d25..52ead3523 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -47,7 +47,7 @@ function sorter(a, b) { */ function parse(scale, input) { if (isNullOrUndef(input)) { - return null; + return NaN; } const adapter = scale._adapter; @@ -67,7 +67,7 @@ function parse(scale, input) { } if (value === null) { - return value; + return NaN; } if (round) { diff --git a/test/fixtures/scale.time/invalid-data.js b/test/fixtures/scale.time/invalid-data.js new file mode 100644 index 000000000..fa5faadca --- /dev/null +++ b/test/fixtures/scale.time/invalid-data.js @@ -0,0 +1,50 @@ +module.exports = { + description: 'Invalid data, https://github.com/chartjs/Chart.js/issues/5563', + config: { + type: 'line', + data: { + datasets: [{ + data: [{ + x: '14:45:00', + y: 20, + }, { + x: '20:30:00', + y: 10, + }, { + x: '25:15:00', + y: 15, + }, { + x: null, + y: 15, + }, { + x: undefined, + y: 15, + }, { + x: NaN, + y: 15, + }, { + x: 'monday', + y: 15, + }], + }] + }, + options: { + scales: { + x: { + type: 'time', + time: { + parser: 'HH:mm:ss', + unit: 'hour' + }, + }, + }, + layout: { + padding: 16 + } + } + }, + options: { + spriteText: true, + canvas: {width: 1000, height: 200} + } +}; diff --git a/test/fixtures/scale.time/invalid-data.png b/test/fixtures/scale.time/invalid-data.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdd9b95d9512bb71206a4171ed28c6a728f3b45 GIT binary patch literal 18667 zc-rl}byU>b`Ueci0aO|#1(Z}_sG)HPDUn728B&lC1f*eTM{)=er5mI}x+~2+D{O)hP|GsOzuBD4XW`B1)&nKS!3?Uk7iX@llFX7lL2t_}YSeXW5^ETX?v=)IIGs3(+-n z8PPraOu28c8uD58Z!49)iyef_=O?o3U~_I^MA!H&nbe6!pXBimo#>eoV<|e(=V>Q< z)y;21s5rYwM5eCG1`MX#_V%g)Z(JW zQ)_F=)5C`CzG$}@56%OD;7c(;XK-Rj~h>B!4Tx!s7^rA&s6$*ra9MJDc(TA;_SMy<&|X-OdUF_d!_ zHnbc#w;Oueb@v}f?8W+ZDos6ET$`tMo{~<&wUC%WSjBb5V=0T^l!2uzB$)eZl#864 z@7S0Ei@?)xO?!$cZI+DLR^DXur9b`|U=^K@1_G(g4XLCfi!VNCzJ*(1bwAXx_+na{Gf{tT4!tFT_vZJuw^AqH$Q%dc zX)1Ya$rutoQo0FkqU7XaYi*b2Xy%-f2LE^kieIi;eE&yU8+#w`+N*O*JL zy#Dkwqoy{B%>iD-5kB;8V}RFNeLs)Wqb;^e(N`po%s){hLxmb2ZA$${Ea)Pb^W6{u zJqqbay{N@Il|*T6@RtXkI^e%`vLr+!p-7+YUJ+d;_pkn=-b(|*Q%?Ob$K$o?vF*6Z zHMu9D-^@mb)7r!9&x#jeO6QaM0?g~aWc8sRVC15zL_}%wFaI@fGgkVaAvk84>H|03 z^wAlFo9d<-;R%iBXUDoT?sMV7=B+(zPD_0xWwon4N5YfOhK{_PAf2&s`C)wmISvNb)aXF*=iOU{r zJ~)HI`;R5jXqgYUu)|G+49OG8JtqIj8eUCsUp*BUDCRgecuZckZm8MS#CU5h%wmDP6~FQ3ZAY7d48j2yJG4F= z{-iHStnB%>yUPQaifD6iu<88?LdwG9Pol549uqKN=6ayB$aMjH2mkiy5&76Y&JfwS z!s15rZJuL==|h$eCW$5PS8FS+N;?L6jc3tjXQn#C)R}D=3c|jpcTr5AxI_2_t@l<& z3b?vsd1KWj59N;b*0?eiBV+i@KI6BmB?v05H|`sGtW}OZDQVoh)TAc*4PVdqbhliM z(sDTVWxz9hCZW~M)aXw)6P`+X^?6#&?@E+7QoJ89t?fWh7J}R;3~_3TAWBo*`S$N2 zt<;mMSx&=a@Q6;#F{|NZt6S#t9v`xv$!oKXrkkszfu&#SyrJQAZ_=^ts%{68O!DUO zMzgOT2|`gtVqznO&BuBM!Ne|vz3fY<>+0k zQK*ba2E&!XFKy7CAPb{e^{r5j0u*nuu30}nlmgqKlU=(P1{A(8)Z=* zp*p3Lq13S85-5^MlF-nyV~(KF_xx-NlNtGo6O?0l-j?@E>esn#F#XWn7|wejLROPC zfS=f2_|8FcNPIXg2)c0uJ946g<%&h}B$BCmi89zv@O0I(el4J$-i=G}X7{7^4p$MI z3}EV}b7S@lr}hrJFE;s-dMM;L43V#7+7Z?_7A2D^VxK}xCm^Q~Mth^3$+M7{S<--- z*NEG`>5xNtDjXxubwy}(z_MZWSgC?iU56&w9~@RWpU*qf^+1dE1gMJ&4kUv-6$D3W zhUR)zTAO40Y|aceccMNy(+SnHBAJS$Eqlo%4@?dZ`+a#DJ@-GSF$~z=OOM#A=N!$%tQ^>vwN&&?OT?+P0owwfaDhXGL-A zKn@3XbS2!e`VUBq#F^wS69hp{0!a4b%ZrX(w{q@9GQqHXMpk#n;k#Vz{*32BvfE4) z^V!cJ$6-yyKa{@j$WyzKJ&aPN%IIAAemotWuzyhKxwHQav9P2^`|LDKnNB}|x|`O; z_c)B{G+cEY9!T9y?cjTi0udGNgtVJfB(8&$-i^^kG8qdq^CYWhj9Zn}S#vbKB4S(!CGXroCJh@tyTHqjViA5+Uf`drBxyufs zHu|;lrYP91@iKD(pA+|ZaTn{KJx<;bgBlIVvja1%uqbRkJ1PU=dav4UItyg#4;gj- znujCzudC?ju4y_b?blQc%lX;`w^7uP*ZZ@+##rP`^*PGJK>K%v zybhkzi96?V>y^ok!fhbqh}EKZx+O+i(;GfC$aVjl_eWn^Wgk{Vk7y@)+v6J%Oe$zB zC5-?Eb^b<$yMuWk*fmXE@o4?vc-Rx{iC_}l&Um?{E|d4pfJwI32S41w;o)Ix^sdL! zP>y=+n6a;+QlpU<^b@AhAC6z$U5h@OqTm#2Wc1N@fVP}cY zZhKI``-&F2q$Sm$T)1Wl`*xTuJLfnViV8UJFt{V%X4P7!LT(^?OP^FEq<;c;y^7@1girS`YnA-Yv(o|Yz&x+ z55#Gz3z6_+>UK`sXpG;)8X<0V%==)uXd%{^C)UuF4vN{8i#FRzUQ};|V&x5S@ zh?+$JB78a3Ql|pej9&vy{V!r;f*je@N-A+LmdEf#mcu69o?5bae8nxY@13#?uvgbr z`L1i&m(?9iqZQZ-pqSh8m(=_mO26Xv>FuM<`tWqVE@rgh5sFwE%A%O?dp;3!T3aY8 zPq|Inis&_YdAw>n&5V?!>|IfNT_YDKMuf-Fx$-QAt5!uvvEup%LMg1$L+sq5U$DCj z=XN{sUV(u9{+h+pQ+C_KDIB8=#kDuTRZl6_TRd z$1Iod`#QR`@15EBaU~C^GUucT!8TsVeHb4MGW=yY@)}5d(zFSkWndNJ1>}qC*Tu1! zwUC`?cWGiDY$HMWl57y^+g_1bgT6c4Js*-*QS9qgH?r>FTT=#;RXr}NbB{UX^Ed3h zRB#3TY-_WdnEt>f;>TXZkBxNRcK^>;=!=)x+29hNkoOG7o0i{5H9zjdI zC_C<=4%uW27-Vo@!Y{;^3Kam&UN#2cLdFs`|8YEbJYB}P!QBB1j7jhs!bSj0#(At$ znGrG~AC+$qeId8nF=0rxC5s*#F`Jp3+$e@_HJq@ctsqCrfiXfaa1hV%UHU?R^OmGC zG1$2--baj3R#rCO`!OzH`iZD^yH7&sP~T*5clRrjj9^v>c?@jv&B!}j!3OT%0vzYU zMP9S@UC>0o{7CWB<9$&~E|1_(CA@Tk#t9!cp`9OY>URaF&AdiU>tOGy?vP7IdIW2U zO$1YSQ!L%tp#(e14vZEEq_+%qH8M?SyCvOeGRUmFyu6XLpwkqnWd!jxQ9k!(<7OYM z12;j#$p28idCmV0Y1J?8b)UYRIzKYt>`v^!V1bUO6y8`;MUoWhfQ&kh|w(^=w+KKj1yf7|Nr z0MQlO_u9yrnX<#IMVRC&(`lm>!s>}{Xm*=I+5FTl@Qu6BtUzaAx|~I|luv=OJ0)H% zZi$yME_7*P1;3&YYpn&?w8`7u6Jus8)H5ZkpbeWAs+*rW`G(fp`niMY5X=->@o6I;PS&HSoK~e>I z>H^dX%v3b}0_tUTD;e@Amouo7dp>wrzGz+{DV|j+sr$8r+qe~Rqp()vx8A_z3+A}WABo`zwu!jJyDSn8G!0<7?V6IV4qOd z$x&$PS!9H8Xi~M;u=p_^zt`Ml>AyoDIaCI0~<7vvY&N4JqPlld_!JcCx|-QCW>{4(~oJ$@_u+H zIE5!uqPM*P6M1Kk3JHHo>yP7?Ep9rp_Sm0xGat^?EL+Y_G({K5w&RlXaeOeb3G2!? z5ghXJ8inO~*xNVPOL7zw@m4%~d6PPa3{xsv+T*DXv^wjfq&I z1IK$InrU51mx z7}(aTmY3m|Eeq>R_ZZXL`^hCvwb7)wXeo_aEWEj#f`f4GkAud69kochxsZYbckZuQ zqi6CvaXngB32$-Qs|5F_|%{zZT8IIXkfLHNtN>D)woUo2$C*TkF)i!G*F72Dax zJOOQbEjJWAak1i8$`bv26$qYC?%fGWX;jsxn;W5EI`X3#M#Oc0aCc`AO;OUeC4-sv zp%I!6V84bt{`5(^ac&iufG1X;=H{Zp998q4J@TZ2M{hW|zfMW3@A20xSdFSk4 zP9`=MqR(O09`W{ZYhb6uMgwb33L+n?{bdG4V`@CpE+uFP;sI%j%JuNY3TNm~rO&=X zOPlSVmK_h#J!95%@Iv|EW=jC@7D|auE^+`;$^L>=yx!b#F5Tinm1J@46!-5Ju?T41 z4XJ+f%S5kajubbaA!>h=bw63`i63nC^{w3<)n5o^jraiE%sX=YLa;~hZ?{#yq2FU` zD=G8kH-G{Vzrbvfpon@GrOP7@Bn(BimLMf0hNY(#!v@k?MTzHQSOU!F|o`i+?E>}(yR4|q6!`HFq>X;mS-@_x2TJj-;QOSG!+I6l%&4x4){Af5wIABBLA zI-DYk9*^qcAKT# zG+;PQ7m$fE7PyQGASaA?Vc}LEXh3?$-b0gCVEhSy%moPhkQxHN(i0&fB2vwd(YLMC zexKys&gk}rf>ogdpqH}P5hnA(HK1=F%20(W__b77QS6pWVZq&e8!)^zL1X5ObHyy< z_IeKK*6{7mpYO;Qe6f{BwME#cAc6p$$6$@Kh3bAXfJE`tLaLrZtf&+~>{xkV(u3v~ z6YXPUNyX$y5Wju%Uu3n4Q%Z^KW# z-?Hz9Mlz0@tY#oDe*RPbgs0ewQ>W#_U#a31SJ+3xRFPQ<#%AbFEkE}KPEiOO@d)w| zHX12~-gPU2(@#|DZ-C%p<6GLKbB(EC_y!{D8HlV2bVi{vUKPAB=CP5g*I@jX(Z(L(AMIQq@gCr!2kviLq6fpZtEH)Pg z&2rnAaU9jNM7hv0+QD`sXp+kFQ%8pwtJupZyu;cg$qv*{e5U^IC1nyTR1Qi ze0s@{5AHyC4SKvD86Vuq@uEiTV;a{axo21rSnd&vx|3Jwr9l?J6@G#B-RNn{A!$RWydR^!`TS51| z=R#_8-H7Wbj4sK12*g1akwCiY*fiuIfqDy>%8RY1 z>q?SlBMpk>-HMi9m2_f@#ZkHK&KEWHe^-XZ)PZ3urA{XX*z~<6SFb>~q&QdX{6~3z z7LZw6-%-2-kq?K)80;Hv5Hh)&yytBMyWQdmG*fgKz0jrq#2nI#Z-)*xMlyky4U=u^%g1LcN$w#M^u$EmZ|dMkjogIhibYCssKug#ESg+Vq560* zYLP0BRXTW&{-@AMBajKtqP@N_2zdh4{8rbY2a?_DssI~d zJ46eM8!HmP;QsUnr~9+UYEq{=Cb#ZDF$(Ut@NpUNrbsH&<@I9m(HY8hYh#T4e9Xxq z>Vqson328u)xpC%Yi^2>N*Vq9JYZy+hk4M8KxV##ceT4eM!N)hS5Lb}1BXe2OmXzf zBgJF+Xo4d4y5UFd9r8(Pf4t&mk|&%l1c1{N&@Kc(^N zm9e=~9}zG-yY73~Z9M-5#VmyYBpdz-$pGvx^EPPA0Q~t%@eIqtQ$ELQEv#dtupJHJI>L;! zivg@3O!RABEmp}|@mHtY4E?mqKE!Mt3ceoEhHe(;rYq_`$s3Eofmg6Ac<6$y;VPrv z6&JxAaqpb&O{xRk!bvA&{SaNze7a`81#DJVE1A@_JArHMQfH-J=f|^TXP=pzQ5elD zcotyty`q|3FaW|S4w?NLkXEm_8lFy}ARg3MYsI5N z_r+Qfa3Yw;=;=Rj{p-z?dtJda7;kFh~2?Y&x?Fp)Ba6KTKOC!ska&G8!D&R^bDuc+=kn8J;h*fnM1PEC8n=XF}7DRyy2{; zz#V^Z&~&o{or!&nb8tVqi6`5y=d6`{ zust*5;|6q5KI`OG_^4@BE|`3?)#k|job*|0tyikJCca!mf22h%RCx(rWBjI6 zB)lh(*s?PL2i}w5{&rhT1QX4nO6ff{Q4Mg-B=F8r{+sn5eZ|J#T*_tI zjmmE46Em!Qx2;sX|M7{-fcbX11Lu%e-8qH)kZGNBE(9C|zw*Rd5?806?eLH1A@%>C%Z(RKf8i+sgm+$H1);$Su7fEwxrcx#=~=KkNJ0os{<&t zhmW3|}^{*vo=I#=>nuRtcw&mCW4dj?2!3*gbj4GNql1cu}_QCc_O;DYDk zK2duNTqOPD3=IW*w3#h>lX!a|{$N7Uw^DBBa2-e@^O=nZ>ge2%Kkqx>qsvoRvXVPH zS(560d68=VWV@d%K?GY25wS}OyC$Y3JYmJUJYJsjqh>CmW%ki`J35(A*)(CW+KI56 zQ6%80B$j=q3OKL?hkTve357h87qH|gIOJtD(@J-ck?2+tXMnmE&jWsvr(dp842pq3 zAaAj~E4iAPSpfISOj_^;3fGS4g`dS?jWxE!7EFJDt&7Ri7_zCVs?zSrJ)XZ#3(gPAnRBF`pl zN;q8W*;4%P)M#}U&D{@p2%!+UHom&Tv(#CbpZT_78}r=#2Z$#S;!iKQH> zv&P}!5n!bwl_DEw3pA%{!o%8cfecTYPxqozPk&h2f)MUn=#K5~=56MdIvR+~(k(F> zEHRcMu5%$0!@(1}$oFMbPR<`I^unZ_=vnbF14Iuj0`kq{$e8J3=MmbmZMvRK^*pKj z5IshCkBUW7E&~?X+c$Vm1~Wz1>+Q9SeFyv&QxcwO_zt)a<*Rlj5-93MQuSr} zAf|0*$HoZlA)__14W$x?xyX>qmfv>kf0bs=;oSGh(5B*1Nt)_HN`xf|ONHj>O1xyT zu~Q6Zs+WNBlnv!O9DGWuuXa|Z&e!4uK+p(iL3x5|mmS(Lh;!vK;NSmi43Pk%R^(kMFrML~c`nG_tCMwI@% zj8f6DOcc{6@$@{N=HGB3D4Y+1@*u9`{M+RQ5UX?YPu&1oVz1xTabOeBxnSpuFFRMx z^yDm1_ppUdp}IfsJS4GgFccU0zz&bFou4T5lE&6B01IsTcS8-Rfk-fipT& z#Fjde#GIZC=W03vvqi|k_+NM(M9nYFKR9e!Dd+O7$Mf}GflNu&tYPn+?o1(cQ!PxFZ*woX5i<^~n_KM#18`gGYh((17h(0>gI#qMhgs5aEo6wjAT z+t(URD`6#YVydA4{DccERSI|@7e4x8NDYz5s4+a4pP!p=SY0<8@gU1g5LC4Q{` z#V$|gbxk)1|vw#p!ZC^H+l@Z^V01?#<>_Y76NUh8^x zt_*jW%|w$I`KVA-#xW&_Sz8CooC60q|Kc*wD^-!{hs6zB_s1<$z2WsJnf{wwN!cpk zxVx{|HXnylpGK&U!-JT9HGJrEKmvhMS@Tc_#s^zDI94kYmza)KLb*N>;GQN&`fN1r zciH=FGt{mY*JoMwr-Y`_MQvB*7QWy9}3(^pK4N=yFwW{hYR@my7 zVRTC)$Tu0h8YHRsO;H`@B4M}nDdF9hzLp{N|7VU%qjsahe{n#A8c;*1V2rLaM^n@2 zk+&dx=eneloXzkLbQ;6|R-^k5xHOjryn?)D5f>@NQJkW(o&GeE-tDxOsB;CNB7}Y{ zOh!b(+>qQ~pLGsL5gat@`-e8FI1o5^83aa30#> z==Df?8(Wn6AuTbYOPY1$#(#%hA`$SCp;*Z#oU;H$f0)5pAd6Dcj{fe@M{)$R3rjIu zfLaJW`!h?dea%8VLkHg7COSdlAR+hv>UTkwQji?T`IQdjSUFF{V6{K77p3unewjGX zG}O^VoqyhWq}z9}q>Zcp_wEvxR`Mc_Y7BP(Kt(sxM z-Xx7%XRnMW(e0F)wd<(e*_0DI_==QI^_=ErrW)ztT{gUZzUY~ni3Jig;umnPpCg=FuK*nk={qROlT2Q~tnD>$c zlBud-VpiN`Wwn>y0O{M*BCoRS40hkMHUQN2ImieOXGLER6~v$`nZsrgsxs`xe_|+-<2{ zuXn{FVJv>{c@^xaT!fMLzO3~hw;ZJSG29eN+)Sh@i8#zBPpRHDWr3+`IbK_OfrD_C zc`F_bl2s|!L4^`;Q?WImd_CQx+ORi$u`$76Y~Oh=Sr-qFb_X9#O!oM_5WYPB5(rkO zPe~tu?G(h9FI6E*YggfOqPzgC6Aq<(5|u_dwm-zOx6l*o(mO|f-6Aa-hQmr+iA>Pb zO30Q`Mt$ol;Oy7jH76K>BE}Y*sH7wJdPF}0(}M}*s+^$8&2IY@#0~2K>RXrgtAffm z2HtJI6WQqdbua#8AVaU}o)C0eYJA@jli{%7M?5T$e^=3jSK z`VfWakv8DJg*G@z6T%`}L?~C+q{BiviSegn^L~9bcbfnsQ zt*3b40B{9K9qwLNh2+abCb%X7rV^)7#o84K+`-`c{FwFJoLkS`in103z+RdMJ4zk} zQ*Tq`lvPl|V%P`I_NgF8%$a2sd|Z&vv0aK_3Y$5bD%)U1waPlN_eUnes*$L)+fH&A=0!-qG#W@`=a?@YVy^HiOmp4S4=bxoZE8B zdrb(jBP6h3Lj&hF?(tqLC4-0cRkX+Ua(){HE+jc%f3QIUiosq6R8&-Syt(z@*KNRO z2K$aUelxt>2RUkQ>o=P8*PG9MmM1C;3|z;}v7$jKmdB6}qx7VmpBxkCM}~y(zwo1! zMqxg10yxgGdQ%UvDxKQg&)b)@;s1}Gyx2YwZapA-&K6>gbrd3*AnH=56+3H_x(Nvh zaFV07>RF!s8PAeCdtb~19)HBIUCA$)Pw`xjY9*B*My?Mv-?Y7T2{)B+GJ`Lh*#ZO| z9p`;>Ssa)}Ykc`Ihaa^KG(%1pe=EQ3&(1v0hX$SlXeVFqUgp?B4}}Jod4K~BbDy=< zBoCj6VV!7%#JZIkT3upIkWR|S%jC^Q(9Up?*+1+VGtRk-9`PI5oK<~f1077VhIcN{Bmn?p!Orh7LaKo4?YMDh~ zR)=4S-rP9?+Yl|_IDc>4u6_+GkHTfJoxQ6Y*62)MOR_&DtTY9oe&X4KQDzXJsgKZ< zRR(FezC?V&M^vb?>a1t*Fu-wx9t@D&oEalI>Zf&;LfHn*_G~Ova-Xbg8=y!gjt~^X z^R=fW$eCV01zn`T75{&HgysvSMk~|#Ap4J%)Hx=&Wp_1s)H|D=138LA6**@e@BCnl zquX3;B*C;^Vpv|*gZIze(gxENApcRmr~lu&J1RT#b;J9sR-3lhJOxWM zr(#UwSaDG# z{FczXen_y-*w}rF_^QQv?IIF>47U4eXL(4m7+8+4@fd6yIx#JuGyoi4;yUevo5Z-R zK=UZX{ZDO31qVi-nUQ7&_J`jjUj)QwxMrok#(v&v0sB*J09x2jfqd1pkyx+Eyt6;$ zBqOoZpUR8wPJ6dR@l)7s`$j0h)=2)Bt@+hF z@$bEEe=C%MNj=WcAOPzpcqJA9zHRlg)Aj~&okSDS)c*?*mPYOMXi4EAQ^W^HFHzL| zqfgtqiqns2E#BeJx|ww)Cm1jOozF`sG6kW$t$PEn-?%4q!nESiaK~bau@%2BKbIqF zz$_{=v7`x5ZCgP{kvxh?js|H*{_d`jH@hFxfd5~0 zU_jaQAJP~;k@_=8XWZietK*0h3jrr#g%iROPaz!{pS~z31Ok}tPagO&=`SN<68M4S zx+WVH0CTFIq)&c;zWn5(dH{X(XgIMDi_>>p#Qofsgr9#O%8wx^O@vyinSTnV*eWnS zy&uD4c)NPa5tZb!5jwQ z8f^nJgo;Ub?esEF4Gx61%ljCI*3 zvI!f~wcsE9_GYVi=2MK~*6jJ|tjwnMM)}pEp8EyU`(R-;l)Ud!2aam<6|1fkH@QDalFgxymC2b-*MWN)H}9xV~fP zIxdfGNvSZ!Qs;7ZA|(|v?oH)AE40)RhV@tT0=CMaYwWEJy!Hp25Fci2+Yz?97myS4 zAeqVa%i|0MLsi5hg>Gz9b4K=4Yy;Q+K&B$$ZUfjVY=8BiCsc0PUyS9+vghAE3TNv} zeRVN7srEe?lB3ncZ=n}u2pQRC&(HQRv=+}TVLy#v(l8`oJ=iJ$ZwCx~%lBlC*&GD;<)-s_ zPN|FZ&p+T2;xC|0*WBOKegZZauKD0>tDCnQ=#vXh#Uib~M?;W(n8AA61ifxbR&VoD`B>AjpFtcIPo}YAAcs z`C2+DS={9k!LPz@PdxO(9AkpL(3hj~P%jYtvDmV87#(!t&BfkEAK&A(YGl10;zoMA z37X`E<`zr3%vj4d2)VZ)=(?6Y+AN z9{zTGkyz)d2fSB?3(e5VJc7t|^(4{K4CvSCdN(p+m$72Q$!k}C&0u?Fq+rB~P<%*Y z2g^DIGP93^7++{BVf)g!^{coaUETWGN=8USLhFn)(U7wb)ZJN(=u2B&%JVtPZ!xk= zc7gZ0S-sarSy$|`XuG)e!}cp;mPd>9pFhsuSY0}N|G0G?MDSZO$pai@L|+)u%haK0 z4%OF_cJ&ZGK7>;l_A^S05`tge-e<4r^f~wz)SVv0bh{1?6~rKl^0JNWpRb4(h|Ca@ zUZb6Q^f8SgAY&(>4oJy?#P0~h9F8M~*#iYW&CD})!P)c{9Y|lYgl^RrQ&h>D0f(L3 z%!t?6E3Lg5PkWDrx4JJF)Q=dE>k1aM&KHUY%-ewK)OjBCz|wQa6e^BnqIWJ5u$yR| zEonYGlJ2RSQsZUYSzjg*nIboMWBU6j^4qW5VR+9GMC)4eCy% z>3Z^VXS(fb$0DFg?Q({6Tf-03Ln5kwZ?~n>ZEQy!UM8b&K=~YqgXZ?x%f4fJHwRwu*Xx-NE3qBVF~mPclhgzf7^>FtxM43vkPFPW?D~6{S9jHLytr8YYI6FF= z9Bgg@Zk2eXmo@3nhp}@Glo9z#Pwzafo&^oBo4-e*>g8K&l$3wqqF3sJDd5-AR8(zP zpGBk4AdPRtg)j?QKm1w0E^A3JeVvw_SHO0nB9t^ud?=TBs&2L+K}L5vk3tKwqGihX z&}DfMZc{X3jrKi1o+WhK-z9CFxjFbw`N-4iXdG$eSUQ3^3%$y9+d9i-Jln_6v6HN$xY>{mB-4)B41dda~Y7-N*GB1=B2jof-Mkr-P)5-qiXOI-Jo!4r32j*<+C&B9# z_3E_c+bq4QS7QbsP3guVM>K}~K_Ei{T!6U5EyGamN9@H0DSfZFKYg72os@9ld5q!4 z`l?BxCuH~ggMEL@M%_bvAo{{y)6fY&dn6x?zzDD>L#+GLz?-hbCa|7rITe>Y52;^g z9K8IfF*-lnVE=Sw<8dv^bjY8&?XO+U!`r#Yjd(BuG{cgKCOAj*-IE z-ORIMu`oW&!f4#njYt3pp+-Y_uEWo4d64&3f(8|z9)*$aUG@{+W+tj z*-8Ba>=;p~6-#`mT{@bMd3r7zIxntY>?Y`veY0t{fxgU&PG~W~*&-*|_0sy_YO)Wp z_+97?jo!3XEfqsp7Ia}`FRgtwJZ6B+DWUDrZsGBSvtBNbtOZ$}lHkoDpk+d>?}cl6 z9(QMYqUSzkv|CY|ohFSgbRIpy71~B$~npj)oB_nYaf)AKEyClvWcpWY0 zAWMIWG#{$I`hy9OjU|?B+-AMq-j8X;Hsn1T`3fA@^+y(0ykEivl?)mta%IL)j~W?D z$`y{%&wK5CsK9Ozh6dXO;bWf2%UUB}#K z={3%pb%|j_+Fc7Bq#15kx0WQG-pa)4=1I-hHKOlxvDYN7@3(ZT%a`x7Prvq;apU9% zIio+le+;Yvfs*OY_*>4T=Xc+e8OHiQRHoD|>H;h0PD*G{fO@THu{T~f2UtaZW#H7h zWm|h!yEhChcO-=;b%;SBp-@BD#RN@}aM9mmd-0F{%U+%K7WbLgvgR2p!Z)c8-ys^B- zOh1Z-uMv$H4G4&5uWTS7Hu&|`CwX#rQ|EW0t*9{pT+bf#DL@!JrZU{6#HU uYB^@&5qAfRrNu literal 0 Hc-jL100001 -- 2.47.2