From fcbd9b8d52582a2d106b75a4d9c9a4419f231eb6 Mon Sep 17 00:00:00 2001 From: B3tah3 Date: Tue, 20 Jan 2026 17:52:48 +0100 Subject: [PATCH 1/2] written unittests, pytests and coverage report pdf --- coverage-report.pdf | Bin 0 -> 98395 bytes diffusion2d.py | 9 +++++++- tests/integration/test_diffusion2d.py | 26 +++++++++++++++++++++-- tests/unit/test_diffusion2d_functions.py | 21 ++++++++++++++++-- 4 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 coverage-report.pdf diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..80a089d0682184fe36b258824cc2bc1fb16f693a GIT binary patch literal 98395 zcmc$_byywEvgnPwOMo(VNaTb>sOf1~VMu-)mp{TV(E;cHR(hr|TwDNJDML$R`>y~d z`Zt*Z3;+P26)`clH?)2GZ?0=^C}gN_Wnc)y!vkYyZ)>P)0ppx{tR`uNEeh9qT9GIT z3|(fl`%D*%mz)m{auwMtj3|OsSZzS5B_2*pHqu7RZpHn?7q)7uF>4#YeYSPBHA+PW z=Rt<^!cNj}KI4AC*0FXBzh4l#e8gb_^<B?B(eOmhFC$ z{sMvrzp3PwZm{2>5A#0mYggb|ylJ(7=(#Q6^kCT=x-%*BOS{FLn3E$6v?3H~M=~S$ zt6!v$sgnC#3rPk?#|A=zP*+0V25*0(KCnGdKk|A+!a5NtNUKlK8C{K$RP>PY94)DN zC!l;t*opZwRlvDW_|4^Uq9kK>Z1|dX>;4z*Ug#tuO*@JoK(atSSidg1`;yR8Aq^o1 zOMn<9LB--F4u=Af5adn8g3g5%*yKfxT-xvGE+Y+x3gc!HMp~sBAQVFhC2&78$cC*e zC;doQ;~b$Hq7TdP4JtqvgV8}rWSKB$$FSs*>@`aIs zC$eA}gP|{EK_WSR1#ZDImZl0CxM~j)3A{TW8kx6-63vtWrn%xL6R^2>K>|J(l^n1l zHfq~cTNM!nsSZ($ebfE{6EC}15Y4@*+EgDY5^gPI8`DSA(fN+XZ1e&$aM}XnaJ}-fKU-XhOm8c2x#EX4zz>9b><>xdEUKy zy)}|7z*U{_UP@rJ50Z(`9@<9s4Tw1i1v9YN2NmA{{C@J9>Cb)%QRCGp54*qU)^NF? z71ie?!1en(2>f)93E3seB%q%eb2${%B%HBIK94E%CXUBGp$uKr=#dfc{r{-Ti z1{Elzvum-+mpPQ%B*YUqOxA)$O(8I1>WS`jn?+IJk@%)l@B~v}7(qrhY+_Z=3pTu1 z3|ep7e>yW?BjL{t79}6!Bn~3!8a5IAER@(23{Ba(dTpWy`^X*J`2p!E3#WonAQsD4 zUP;MW0|%f=nJ*U#ULjs2^$AFil1`5|iHMZr5Iw=EVB;aEMQ_EAXaW^odc! zn~82*hv6k8baWTHmZ+d|rVAg>aBF~cBD`lWi zV!B2`K%_L%EEugPv;Zu!NXQ|42Ph)JK|?#5O>&8ytMK2qOu(BN`GU`SAfSGb6Yw>^ zc)|QgG==^)XH1{nyQTuW<0Nf0j2+vZB*TjxY0Jr=E=~6K(u`pR^7YQtO8{}LoBZ6fk0dE~~f6s-HPVnHqmgf_oeIApQy7eqZb zevlpn37M{TI0e*x;fJ=YyYGwkR+J{}IGybgfmXt~j7pt&8V^(TAC(u@$xA3$Q)h=a zEwZyf4(ac3#`t3>j$j5b1K@r9cO1q6&E5F6t`p`*f?~n@^DtupVD%9KuKv3?x;M|A zP+r3GocO`xK_7(@-P))G%G{5hc8PqKUU@o?9yNU<()Xf%DRihv`6@mm4|S1xxZPI? zlI{#5CY<|8vAtv@9_q=AvxJ_pU2tEVL1LH-07;r=va&nTMC*6eo{sA-K@EksJPm(q zW|Zsjb%ja_5k=Atb9}7ABt6_Ms}{oDmNWFy-_w(SBAL2ff^P{#31MKJfaV4CtU~KJv|nw4UllJ-!TCW_B5| z;99aaaU(px>^{4GUt6Gf!Yxkcz`agAaG|Wu&^sFquoBUn)tL0y3S~XccQ$v0G-&Z&@u>szWHxJ<- zz0rzTS-w~O>Dh>yj+zd@#Q4XFc-O>;n*LqJ^zSl;cNz1)%NXBfEdMTJdY7^OyNvl= z_HKjUj>=#6V5X)AFuyxA{~}|0m;LR~{MC--?OJAre{aX~-tNEX%=+H$zv#^NF8f>O zH~YLDe}?MaD(_?SFTND>-)jFyU+P^SB^PT$z#kL;9!o_BJ^SB6aSL5z!`~uR6N5L; zjDh}lLCny^_^UmDp5b>%(8}D(R?%8l|E(7xLq`*RLs45@m)}+5mT%shwbi@x2C%nv z_^T@c6MH*3Lt8;B3u`M&!?&Sh`!|4hjqP@j$MgQS> zGXI`eza=t&zn)dZ#MaIp!2DbGKY62!^a^zA!8^gfK!6~Rfy4fTYJW!P&F=K9e^g`n z4?Zx<-&5wl9k;)9rU%f|(Xli9n+cCOV6BzP}s4M2FOY#Jh)2E^%jY z)!~!4q59!qVM!r0U$%r~fJBlZtFrnAf|T6zR=r{$X>-<^*|&X{a{~eFb+mFd7w|$` z`}jXoWS>f$;M3>A$~#u3>=EJP<1El$2V*|w0QIhU@eL+-_zvo9eVZo6@RYdQ&)^v; zAyMYH8rKL%?~*?a!`wie1_8OE`_$#|JYEYVk(j-L7aW%2TX&L(MMVxmCluU%@_FM2 zMvF*6k12S4=j2qng3~fbgWtYrvA%8u%C0#keS+}=cpCk^Oj@##sP-di<#=dEepDMi9v)k5l za27{D)KWl4ECdG<_V1^o*mfwx*rDJTC$^=qr$8x2P^AuH%*z&N=v7ieqk?fouc)py zGO^H-b~xwS2&lWqr+nQ8l(bz9UwMJ9x%_loch&DaXxSI*sk$ZFtdEGxa2d6P07l51 zV8!|_@S;}{(?cc&5zs22kB5ZI4utg8h5_A`ufG*iW?VNufb82aX;T^^^ENO&A`l3* z$Ec0~1m`@vc`7KZosJ{sD7e?myd?@aQ4I#e!tD&qMG0^y2>Z%cq5^Dq8M0YY+m;DF zdm@8sD;X4cFDHCb5IQ&*2Rs{kSb216(iyF+7&JQgEZw(?>*|!L%A)^%8TZ^Wtp){aM=au`>S)q>;L;=tty#>rp7BBLDaC2S z6de7fLe9RV$fp$7&3UxNjrB<=ifr2^H?!-D-%`GL*`oZ)#~PMG(!)^p`w+5V!cvN{ zQv#%IfKmDtN=hO&H4>RxuQ^|j+>qERETKB4!ugAhjkJT7yL8k*_m|ek6i5WA8tH@+ z#`|X0y5(`juiA|zcUgUYDdAP|l4KEDTx~W(0>aR0Z5ub)+~8jaUnYV4HFSX~tZhaI zjBZ8wcs+NsN*^sXmyk z$U8kHS774NB@RjAj6U2eBd{`MnXS2ZAA6B%LJFJm>vEUvRvlGz@MDWm?`8GG#SRzb zSvXbRU*>&SN-ZNXToRJ1zpVz=FG9XAGst?fu zi68*Gf-mRzritevbl)@i6i+)Eh8)74;0iCm)f((#eeYs$A0!!T0vbdV!hO1Z+b>+4 z{EZ!C3&uk5Lou}IXh8p0G*ii9SM^T_Kfh~b?dWPY7rEWjY12Dj+6d#MdTmNTR6y=U zQquJLjP>~x%S2Gt3@E9|+u-t|A+x|X(X_bllhmzWXKjs)96X+;xmx#-m6&quEcm$3 z&Gen3Y=d_kvz9L)f3BV1HjXO|bWzu+DVA}!T#DiSM4kST!fnwd4VUr0ZTV-D-o)nM z_-2aA<|>ab@V&kuEn1~OI+=yQsEP`%oaDFmeVf5iih>SZ2T&Y3w+R5oqJ?EnT=eR& zZ&_yg=NbMDuywn{OB(tn+v?$m7mwP$;rjX{gpb&MSqoMp#=3_`-5&}r=}+v4u76#T||ax`FoC%TnHR0t8J@Peqpl+qR4|Q2sj8lTN$| zR%_RiEFYH9`ZramCpb6o6Q9$rA#2?aP9K*+U*Yanz_o?~*+8{1VxQj{b5T*2ejw^3-FWQW z_2U+32}if=m>CHi3%czJyG!x<__g4*ewXp+_UM)lrj4&DP4_!xYVYaH}kmpHOD&H|lHgiJM~%$3V|+ zzmJ-}vf_31`36jU)<#bMpy6l2kJ{zUpK7Gt>HJNWi4Wwv&Gf5CZ5NB0&&^N77igkG zmQgn_B1(8C9k=nCkKdiTn$FZWfN{PvE>q#5CIBq3;sx;^nRbSK_I`=ZbDvR|cdkKk zfmKwKO+56QB>EGC)|qq-?Vwy*=}?yTT>yQXJ_|e-J)5h99U`C4Ls;c$Jl*;xdULeO z>^3!uE4Wk-e`E2ib{apDvRM_jg55alRIY*j_;sxJM0rGd2n+k*Fn)GciM9x4%`>4) zc#gKYJp1YMujEWB>Q9vLce@G0lr$IUADp=@KdxF^sDvySFa?76^hi;fgoKT;27q+v z(0xfde5^P!(`(or$%Ft`g@bYPEV=@Hu1382ID9i_x<17bTjz+vg@D^Oohhf!1ON4d z%AG2kVmLWRrDD*@_)a}MF-reLxwAppR+zO6I?cCbOEbkq2#dH7-DM-u@o=PYTuftJ zN(@Nf@V#mqU@B+S85n_NIlR1TMMXq1B)LU-6a^Ss#j^`*0~+W^YDDw{q$w$jl$eyRurhZx)(B^1GGBfgDh7=TDP!T`D7 zFfy)$PFXF{obq`fjb#Wf+$dNrhBnaT;P`9&+uUMJG@t$a*c-?#z>;rW8S6j6@PGcAvpwW?SYq{QnW?d!+% zP}t!Jvt6>Kuu4UMlb31D#?ck6zk(|Jz(*cft#_b?GHxF<59eVHaR;ZmVl&0djlS+k zNHGM^$9-Fc0O5=c7owQS>c=e-qDUGDzb3C16%VUWkHHEewVoZtur;hELx8LeC$brd z!O$BTzd-}W)v6K$?1k+%rQOr$i0SGq+}n=B+?9_qe>L0-2RCGz?p5RRbPPsb4y#;M z0O+o>WJcH-5n;o#3?~;*LqhnVr3EljTD@Sd3x>@R9AZ*=67Bcl(4sUC2?8c47Zl(l?*Gu4wpuy@OVCUg zD?pa2%p@zu*lPqbVzaQ-1IM?zlv%3YMoucKSRMySRAd}8%#zRk#by@67sodQ> z%~4({c-W`x__Zs49_@?Ew%|%tZM$!skeS=l=iHur1E4s4@J^Iy4h9DucnkkposBI} zMT&Ne0xUM~+egMbtr>1kC>yv3M(^;;JyhkhAf@K|8)G;Q;gJXyz-abX@6`mXT@JO_ zInpn%*Gnd{gE6)iy^L% z_1Oewu6b+EtM#y1dr0@TxZBNA3**vL$#4WrM<7Pz_&?M!gPGgmUQCSR6Ag7&&l37~$W&9~&cVCXXTt)baKB&sQZnklXlBkh^YrT=V$Lgj%&M?oI(adAF&8W@Q$+-I z_o}_TglUu{lhnyZ8cjmEXc`Dt!C9zij~D@C38C+Y1A(THHWYXd1i2dZI+P>XA|0~A zgCa+C;w2sM#Z>~9s#IB8}eit^y{a35L1og~JCylNT|Yn0aC)y7wi3dtBr7F`_8>P-D>x zs|K&uYxO|-sHmm}q9i^!Cx6|!zyQPWS8IT*p$d*=T%f|! zkcAxW^Ko{z?C{=gVn$0iw|<5S*AOT1+KXFM`yPGOei`OG@~h-=E7?#5fS_KcF7M4u z1}tiCjn^!Sq{!R*Sz!Z^ecs9VVQ!NknW@ePtiM{+M|qH8L@DcSo{tM{I2ZF3?bLHB zHW*RziiM#&fN~+Tk$P&SQk7#59Py1jq7z?}8E}iRbbB|zo51cRc3juWL%LLf+X`hG z2K{m@kgi$v1UV;}_W*_Ip2LYa9K2lZSO!X6%2|-l31-h9rq6VUtWCD>xCInT2)0S< z%^GJ)E<`-0#_mK9i_NAwN41-0UM?Z$Fl{Hv$NS}o^^)V7<;QW3pCqC%EIiT+kGRk| zjkox0B7!LXlm})Ufkav~;_9Tv@8)3Vh^uC+7|mQ7+Dx@zSNL=~x82QRPQLEkOpcHF zan|2?$T{T!3U8IoTf&wP)n*Iqmls=@!k&bP`jH@H6}!(~bh}>xm-Ic}(6v2le(kZU zV}MZ;t`Z7{E$f~tj3!tc62y-*U<(X=23}t`FU-{(s+^%MhSBC|36K@WCIY%M`qi&Z zq1QuIJltbj$2CMV{H)6cqdE;qwJTYaLYv__7%ZOx<8#6s27`X4wqsLhM2HFi-4fJY z)aB+=h;x8(TwmL7w!owq1bbueSwnv{YPPeKM4)g6CDi09*T}GE+Gc?RQy>SIvr@<3qswcrhi1~uA{7ep>cTIZs zLG45uJ$Jhojdbk`7b_h4GdDC>?jBWiLrDzqQ5Ld_B5k<$mDj8-Rv{#>Nev~_su@jN z=*DS!B+q|&zpqk5BEj)u zxDjOY{1tcxK*K!96n92PfbOdKuGI-Y!~|r6)gBm=qSya`q9I_|kH0(_FynBf9(N@l#vKmr zxF`wPby|7&ZL=dwQc^29i&m1qsEt4$PI9N%>tt6Il^5qFmUStY3sRN~nnmbv`wR2+ zA!KSpAaR6TvwP3;xf*!NE=SQ^&Fu5p*dXwkA&n>BM4QMG=-Al|2VXU#AW+FJA?qkp zl`fX#&3$JEJRdYrh^HHc?e&Sot|fku%>96ErZkNqGPzb%LADYCE)&9`Z2iUMZrA$;h4Tf4^8tnP5hcYXNLTe+I_~#$T=(=e z_w*4i*%f2$P%+x(y@XzmZV%tED?)6SsI>bN!u??zn3(U zmYp<;zf$bK{hF|({ixp(;%!VjIAYLN_E{8WT>aa)zR=}q-G}Kgx3Hq6C<}w7`MRy8 zS_}UG2w8+^hJ$S2?ZwMqpxPg9a14o@DnUh0xCujXjmPH}Sf|K}2cmM<7pSaw8r6p@ zcB93RkIx!dMM*u8K%8xI$u$J=9BF-YiFzOTQ)+|`?VcFyTnesZ?Wgp9HzCY7Qjb{^bP0ZoXKH6tJ2{0QcH)Ad{jdlE3O@(Eh+uY|sL^z;3jcJUs6rEcKTngq=f~WOR z8vd?E1STxgTf(lARAgu5({Iu)DRtZfFBClWo`AtexwhQqUJ@}s`9^5Gp)&Ac^ZA~tF8YQ;24OovVDlr5R~vWtU8J2f zOv9pZ; z7p!^jQ$WDV8K426W@cvxP&3i9y>Y!a8bwdX$OO>(eTBHauDOXmzooIcA%O0;gx^m8 zoz%RchQG@1YP}1n8R%GkHxSgd{zHY{`uQzVv^TU+0kHjb!FxgMPvKpOHj~)^lWSZMtU|HMrQUu8Za=h(J<39voQRn(0?iZr6D5=-PJAnj#)tCe3`leDiv zJRMkJ;PIox0DC7DR$R>)J==y7}krOx;EA_O)<+^dy>``irbFK4UJax!jwd~|^ z*NGIr^Ijb&1On#>90@`STW*OfF>~P(iWbOhwQ?JPvI3q}K zM=((0q!(wXx4m`-A{GqQP~`S%g|&VX8ilon?Sljz$x;P{pKuWg7Y=BNOP-30TZ38< z;zqLHqCSmTt4q^L8iF*B1dK!YGQ*SA@@KKJro?h=*k`ZwfsOwPlh~vx&^lytyqSj3N~yJ#Nx@MVj8L4d z-<~ux`gZKwhgjxM4;98pbSHEiT5%N5&Z5Pujx<+hwU*B-8qf%Z@f4+V*1NhY##9?e zh(nDg(i@M49yDa6q9)>1U156%wxa8zEaxyc4hu2KUM=EU(~~9Tb`%yRI$v-*j_FL( zG`1gu!8+9XaV$pL)b6{{X3XT%(U{}RJwkb zmM$eoP68q)FVA}@7}|*15q*kjDOL0$SpJ!7f&atqua0;DO&iY#n5Y;*vF>xK5e}TS z@%-#4KR*TXEE=L|L*K?wa~nBPHX*Dfai+SA0s8B=CMx_fFkkHXfx((zmgO{jS^=$k zOs?_9)A-=&BjX`LMk!uO3TvYuvZ=Zy4ca6Vzbo$Kfd@ahuE8M9IksAqmlG z^nQ_D#n{tq%Qvemr;vv%*ynYxvc*9t+0t@_kH(OQHfMOU1gdNpzk-h)3wqcwegyKt zLsoLiIdBFP-!25DO&$@#*NOR1PwIqdNC}J4$@9l}gDH-Rv^B!$AN5Ig>m7|Dd{wr9 z|6Es$66P%x$(?ha*3-wbd@FDOs_^nsM_Jx@|JaBB*g=i`q)ia>1()F30kO8_soyI` z9%E#erM3@&q*72(f|;`(0|p{T&fF1BWF$L|!Za`Vb5Zszb-H=~UZHvv%{NmnoKcTH zl!YyFhl#re^M2b2l5%RUFnn2yEy<|%N69hSZRG}z4v;`$0p=`e!bPxj!gV|G5a{6_ zZON_?Qf!ak1Qe`ZZ&tT+)*d^25M9L=Fgv3zrtx|1KV9Rr-LgjDKK&YtfXguWL5FX) zq3G;zZ0)ntJStPZ)z9o}jugn9#FM9++u!3YMUWu%y-@x-5VQkAY6VN8ZudMjz-fWJ z9tzVD$pi$H4V;4PY#JAVFK60yCd{ii=eit#B&RAbSXtI75-4yWZX@pAMb*h0cW|$J z&!HiXLG!M$$Z}Ni>O4haSdYuz12M}8^|YTVVUWfdlOt0apiKLZwJ_wcX8GM zGkGm*-7uxgSTlq7=&d=3;ZO3O#^ud4_=#jLt`uy1>wAhu45ocKPOO5-R77dppR0qG zM{$3Bi7na2a;bZYtl&z^A7h)BUKEGB$F6x2*oG9j|K5nqwIyuJdXLxek+-QPBj=7? zB%EOF%2@R^CmFK^Ko`1hfo0|b_qm2~h*zcPRTe%YuLtTB!U`eWYVWg%cw5veJ%pm9 z!pB@*y^Ba!CZd5fu?+fWq|{~at0gzI)K9lJcWINxzOHVr$6k=SWXoW4xp<>CR14|Q zMBO#pB{f^0kF@)4`^tIsyDQEw>sdkZJeR8PKr4-7WzN548r#3%&d1G|!(yNEnM*y4 z)hpgDz*j^O`99*Des}_Ug7XM|Q3IpYDcT30f)xu{Us3@Z+ruY&%z#s%tnf2icirpu zP>gp%y+o#478{x{08gx%T>UW3lJYsmtcTcFmJs-Uab9>XB#%l6u7{pVt%Nt1#}Yp6;>qOsAQ( zvw4v<$nwq#ld%HOD+J_*M5aDUAO7oca4x|NceSN~;KR<9=f9>#t`2};TWX9y9RGNaadRFY?cJ)9EsRXJ- z3rSCUb|*;v-k=l55laclm^q4bI3M#l*6NPf*D(1-97Y_85W+!!{egv^w}>5a#%BEC z^TfV7c~>r$90p79A|doRR*t{=b7?<{PX*fA?Z#$LG!BEW#FOF&hlAefn?PCQ@6=%z zIX`<7$8pZ@iG51C+x+@F+l14qEdwpYZpASN1wa=GYssc6mXa_fqg_tfvVF7Ze0 zNu6sWJwK1ESIwVtc1tlo5^?CWaYxfbahAV!7VDU@t{G3hXCi)?sH`&AEUa1o%E@V% z(`F`3dduPT>tgNWNBBN`cMRN6#Bu}Jn(}FVv%*0$j-sTuO$%VL_T&kb%Ri)7_$;aJ9l z{vkH(>SGo@%)S*j3c$0(CPAeg?0z=R4UOm=ianc@`f#<)S4w2()iBYY^HnAN*tL@~ zjjvhRB&=tvEO;3!qK7kP|Aj{QL!5KxM&PZV9z)YT*nY%GZ0M|(ykO{cW|zy;K*k7axf-1@Vce~RQ){@KK!+-Y^G4;^+5wBX_DBo#XA`TZX5V$yUbESbpb zq?i$nU_vcEQ(JIVi2SH^_?Eg1`!oCK-bJE!)rEh;vtKG+#+XgL0s!)9__cKTpw}95 z@y;ek*JRkgsgk`@QuD(Wak?H0`jG1QC;0_|1Ju%J8~G?%3jac^{GI+vw9vt9>>+Ia zByfrrW;J11iazMFG&y1{;;)f<5|E{NrMZ_RVf{GLcI;ybtCu}>S)qlQ zE(#*6TA6aN8Ac@38by>E`&!X%m_fqwL>aUCM6XPsg%#5{QB@D?7FvTy?8LX@I@q?Q zesNxfOzEjo8Nolss{<$$k;zkLp%}}#dFNgp;7!R(apbw zt`FkM_vnjQTJTtg$UYZVuj)`_Ww?24dBGTJ_^|9JgU3l63-UG~IyrR?7gpICcTH|vmYnRf!UcFLMQk^1-` z*TDi*!}kg~B2#4(z~}$ni>p=)jQ1ILEY_+CZA&nce+RG9b%2mv+?##76GtII@QK|( z1fgh@ARLEq8;K_X=~&S}4^xWXIlKcA!!4qt2Cj8z9TQ?r?@SmX!}v@cB188K%tw~- zj@YLUldE@K9wI~M%myL=(=D_k)Cd~lmi}i*M;cr&=5mJ)kxvZ$)ii37wJ4rNV-^EMB^b${%TH``D>_s}A*S;Kof zxI>jcVR`@1rjDQWaJW=Po&BEE&v+ip3`KJ)T-jJ4_Iah|`Vdv3f~K{#VcH4zCIlpN zv=IwLX6psy+S1FN((?RIYit7>0r`p=Fe;?ti_(s|DO?G?MRpr@9q!QlO zaq|cFBzTJxUxb@XC*j`U657qZ7d;)9v_Qc9oB>4={m`9iRtr4Gn=G#x^z!&`2`5 zojPjUs~u%5zWXT}cAdcC5aN(VcNY=unjaKAN*z4*-|vsHDSvCtWjX_qu|6NCWd31} zdP^BY3R$b25DT`-(^({XB0_^X|Eh(Jz-s9KGF+){x8aO`+0B)EWP_BTi(7?s%=*sWLVcqC zJ>Km>1x0vW5jdjtTrQy-pU>5=`ZZG6e&i2r(6N%;*c`MOY4@Cv%O zq&;UTOH)^>vCWzH0I;u}QW9Bwl8aSRh}EX{<~@G9WP5|epu`hNb4g)ozjn8zLG)A# zYsWsaWGc8o)D&&h!Fuibw2pEmp&DMSPmGVkIQA77tao`P^H+omeyF+`C!`zz+(!7l z2tgxLvw5q0g?~)*vgLG8cv$e7du46r9UirSu z@|LufWK670YENg(Wz1wu$nMD=${zGx>p#dpLqFTNt9_T^%_O^Wf1q(Mz?*a01AX}5 zUehYRR_L^E@c_cD{c6TdKb!si5k>h~TdSnV@IOSQ|7?$ci^wstGc*4kmVVD4_^&a& zf9{h1pLWD+MGaVX0g(Jpxq5J>1PwN+%18`~Bxrf;ra8?DXxJo z>AS|Lly*<@>{tY@k&R~b!SvG*eh$xNB0=Dk={I53DxW(JHYMj8qX#`Y1hF}c4og85 z@{s@RuI$`V9|Pr~11eng>D5_*N;$RD)_k6M#7`X;UN5!a&&k^TlJ`9ZRUocsNk(zG z*Fmzn4O_cJwD8hJRYIYrw@1>CzY#fUy%}6rYG{1_dsY4?h#VRQIvdyQl++jkOBmK5 zL_fr!2)~GK<}oS%r^n4TG8RAb0%tBmQbEm+<#yEdrA5U|t>2msus|G=jZ-zGM$`jt zti<>=w%jmuK{)55)B^7{y<)0YfpJ_G!8vp)pF@T7gjF_4rrJ|v+m7%iu@6hz` z==wi6z;8J~S^R$@0jvz~B;YNVfc=dL&@-^J{m&$TmHqeK{z(Fu|BCeg3ki7Z=Xaa` zEfVk^JpR{c^6zAwKQr(DkOcfEtNj0Q!%ojc_ZFvTW@Dpa`-=!LGceGwGqE$!zdznvDiI6wTO(F>7Ipvw69dg#hS$Hc z3TC#q+CT7sk%^V&4Fvpy9lU2mvD47eF|yPBCpPd`+R;CAlUUzx_GdKz!3J3W4{}`S z8Cd>3P3V}z#Z76ZVXfhIlqacyaex?=G?Ft3ED}~Knw|iZsKFqMPe?HEbi{L=Sd$sJ zN}e318VnUI;3rRZ+~?eQ1xgB5=$;Oc9d%Rwti{D1t=egDew&gH1H+G_N#Z~WmZurF z-*{!&*6v50>a2Ko{eggi7;8ZhC%t>5EodX|bXh%r5d*OrcTAE@N(whFPL(29jZUS7VKVhyg0PXt6;K6^b&NV3rpBxCXIGs=$XJK z%_Pm8G-Mi7Dz-7b0Xm~)OnMj{@;ZY^SW4<{y#eHF%!j1x)nJ`G86iz$AqpuYUfQq$VA0H6wRq_0osMP~Vb=^W1mxyC_VTD!kYET2GAOOv z46!Ft8^{GIQv61jsjUnWgqSBM?RgwiV*2bzIu~n&weQ4^B;jN-BnToCzDUCAhv2Mg z07y%Dw}xQ96zI_tD1*bY737w$*;FZ?hDf=qO%C|HWN!$<>Vl#7qf6#{bWfQL;bg2E zY>!27>QZd_WfJB&ohc}+gh4Vwz*aLPck+7jE(R|ZKEc4BNHpXo_BVoj$^r4BguMf4 zp`_%L`~1c6MXY>dEC_L+GUhu0@%d^=%2vdh)9cN#W%PG%>s-M3Y>_M~?Zwhdt<&78 zM@_{myOAU|&?_8A0=T6TL%e!FL%61Fzk-+A<^WN!-=aw5r|r!FS+qgCDnd0=0E7`+ zh}W)W^NN6IjdeRnb`Q+nF(ybF*_jgVH2%0iHPL#4qvQ|)~uRzb_`BjhNv&fwLz%1x_x8E5QGQU(<8m= z=2KU$gxk?4VwUAPtk5gSignygoO&NsiMkdFb$tv-7~vuI`n%CN$x8yc<^sBhYd0$0 zMKQygjg4Gwp?{!feGv;)xf=a}=b!CN&T=`KZ_7pySe|4l5j?>f z#ENaf+>v*SZf&@m1D#ebPc*@Q4e>JLW#e79AH_M>awqQ{a`ZuOz!UyO|1;E4iY8Usyo-IE>98o| z;QeUZ=Y&7s?hA$wg77jG3J~gw#6f_gE9BDrd{9x^?MWERn$Wci^%LaRFRw`)%LuNL z>)A35@HJfIJkN|RchkpqZE)w8VnY@zTDx%;+^;EA{Q&{75G`WuzNFJlb$Dq(|mL4_(TtDs&Cv$ z0+M~5j~j4B-V*eIA3ccZA56Nz6h34LfP*OI+h>dYh(ln}RDfd`!T6$`gec8WEk#9v z;tuX#ec`!HhjHbT)#GH2{(;-+lqlB=EPZXoeXK(4aCWR*tNK&*(+l-Eq$TOSN79}O zH-_|bZ53atgW-zd5+_}AVFjrO6yZS^yzp5qVKR8-z9K((;$3Yt^^^FNf znir$J=ufU1+O9d=f&S5|CVyju)9|-#dX%gwufZx(9Lb)W17k%hQcU~(Oo&M$&?spX z6Gd+)hd`z4?6CYfT`{ERoYC#1n%X$jvw}F~B+JQU?BNRQg=WGD4Z30~?6~f$-nbx{ zt1v!w&pxVc>|rr)Hf#Gei-@O4s*kO=tEi_Q=aV(Xl@5opmQOETyz2Pha&_0oYs=(q zRhK+AokRBe@0TpGoo~{AMYKK~9tYeiu2@K>k}+kU2w@=Hk~1XATQvv#JfaERGw&$B zP2|GZzzAg`Ey`4(DE!eSJ>$h>&YNx8aWe*kzHmG`$H~r-mNWHsI_$=|ZrIFZPt0LY zti(zEF2b6ZXB>M;GNOYZ=!bSc2`td1zU>D7Bqt)G6&WJ;Rd=CDw#D(FN4x&nz~Od` zrK0J1A`En;k@uJ@mhIe;Fv;0J#pCfHJ!j1P`^6kajqL?Sy~u7K#^)@l&7>RyLw5FN zho9y(3p!I8BzPH!htxeP8R`HJu_ zZ5Njjo@^ecdPOv*D5p2h;=l(<*_vr8e1e(0G#JmTyZe&s;;e(Zr`2Qnl1LchQ`Q`c zsm_+Lb!0bq%w#sX~q7! z>Tw#u?pPl;ObFt4;h|tzip$#_>(s{QH5_#Qt{lg^a)GYA)kisacdlIU4Y{OT1kPb0 z^ma+KQQBEGbO|29wq{f5NQ9^nEf68V*{VB>wK0n!t~hAvR8$f&AdRnP(K(#)ZZK_h zU>VFRDdDxBv*K6r{Tec}@rohr%t8Yw$rEm)ct?Q8tN5n<<`naBw?O|RGY@+(kgjg8 z$%069d+Gz7)#`yKuuX?~=T-u|?>ag!PcOJDUP1&e^(Q-qs)sCT=`K!skVy_port`z zN6Ax+4eq#YF4o+h2nR8JSHUv+b!Y9LpxP1gnC3=4hFS)q&0k#fvI<==T+4xv`a`V? zPasXe#+`($EYsc6IU#4Xsn%s<51enW6~=8xw+LTZMEcbdvL;vb`%Y(PGpyEr%wX?} zGk56+~Gwo6?f z{#F3B2A{M>C&FSmjko4@I(B3E^XQ;tXGD8`@O5`Te(C<3h~@On^6hiLjb$K>k-B6q!%j0M# z;f-~luaDoce)KkO7GQ~bJlkkYG8cd4^5cc<2gYGV7^!_;ac97&W%zoZtoZVrEn9!Z z*>jdhk08bO9O*%(%l1MmbN~H|eIEh#2B{l$?#2SR^3bONr|9}rub>c=T@qfyOM-J} zQ&J~37lB)%{`LI-kGr!Bs%%TsG-RTQC+_a<2S^|xad&rjcX!vs-Q67$cXxMpcZVTw zb=BPJs_yAKeQlnQAR{MK{)N{A>!X&n26#A0^`a zSq*MD3-UPmW&tCgP)j#d*%fu_jF;2W+jZdjLBAG6F4m;*z}*TSWore>Izs^f1h=7F zqJ^+D-HGhu8@L1B*d14R@7cZr3$1+K$=vI4}Lp?y7Cn>+zPu4ZF)%o|SeRoWBrQNajg!{lNf|8K99{ zoE*#ubNrVA8ll_?)hYJ{7w&GlEx;*Ru$n*|G3Ti@!|qO+?cTIM+1<7`=L2j8RqW4F zg><`nQ9qu%u;{xnUQbd{XXYlIb>e1>2dAWg%jYoR!kHn;mWV5^}jOO=m`&1Fj zt>ct#s8r4Y&K<*$20LjnT&XfblEYJh=oHbRv^BRfySe1AVqq^=^JLOw^g{d6kUA!Ovg*8W5hPevoP(w0=LEZO>uIzFr1zE`NizSHm z4<$_cg>b&Mh{4r|i-Y&CDX7tj3%a9a<&$_N;H8!(8`;wm3LCOax#98A2nh7`m=DZ9 zZ=(emn75LHsWMza)E#oSOzosfKAtx&E-RE~b`dBbmBqLfp(me%cL0Ic7n?T*H}H3* z+B4C--8J})?jjd`kf4Y+P|P`d*puk|YUU(PHail%k8EWeOpVnG$uYBo9!#Vx0Y9A$ zh|*8a*V@Y6GggAAdb=9pAl5?u%Z;Qke0+`z%NpFBO z<(8)kcV}nEdA{QKGcOTH+s@N{4=0_i7otCzZj$zE!!WtAJun&Gl|CXNIx6X;m$i3F zYgo@=t16qts*d-bW{AhVy{J-gEa7XeT3{Dm_BlysKFWhn>j*FHH*t5uuuy2O3`y?c z)??WVpO!bk(*F^YTgOT(_NXB{pZV^pn{Dt~f?DQ#*BNJ~trBNqhp+Ffjfh<1kcG5t z#fDfH8XWLOF-udL6-UE&9w=&cn`&hqT5&hxO$H!vn@pH@X;mo~L+#V4i|r*rZj!7D z`)v47K))Fcc_mv$9$xA#VDR~yv~h88uJ9qG?EwS(*Ro)~7V_q8xlyTF3Dz~z-h+q$ z0%}o|)@SQd&y|H=0aoVWfx;Emvzt&7jhv+L6(zU?h^%A5kCIL@?8PakB`I-NKJh&8 z=3=09ta{F=$?4+`oF{i!0&c~YCQK+PM=|+**;V;Y)vb%9!EH*Bvlyl&;UZL5kW;wp z8GtMeX9|h0_d%qj`Ht6m?8_Kl$^nD(_eTk#Wh##&e%dSPEPo6ej)X|B* zA8n#LS?icat?=|oO0`XcC6(|=>YJoVTlZnkR~#L3>a?QJ{3)d?Cs{@VJ|@i3{^V1@ z=Yfg>b}H?=PNTG5_#y?9tiHKiBN)-o2;+-8PFF&;0r{MINfMX2s~FlMb^A|C+~=F8 z2b-q92&fNMlNrE>qlPY&P^iNU>)0c|Jfj5ZUwiCLJok=`TUEFkPe-{^uIFu`LdY5w=%gS<(LxQ{>5E-{|$*{^T z?iZXJKaw7JTD0wQ>Xtu60nWV*-_(e(nw=~blEjY)bQFC+(~*miA&+(-TJmQ1;kdIA zU|FwG1vWCw`9xUx<^up0V1%85pbD}jPflbvBH{>oTkY{_jKYuxGlUXi%r`m>>l1;K zdPJ^~pr;_|9n!Z-$Ke%j6>?4mN`$yk76!Y#*(e4Rh={qviP;h!HR?wf3F*E~NM(Ea z$+pQwxxoN-nMt7{wR&23;SxstO}CsxhH&dzBqjj+riU-Nye>#gc1hC+$Bdu#keuN7 zcs%}4hPtF&yIhbk+WLgG<5%1FnwRxu+L}NvP{||IVGb^s)6CP!dCQi=Q2qkPMZ`VO z1?J6{ne#9N3|urJpat$noyns0B}C0f^=friuzJXh4mTcOvUl)GNRJ>J@TfgMwl10; zQ6Rsx%J5}ShQ-h3yqrwBb%)KFT&;pIIC9V(SsYf+zz;tf2|}P7fDdpbs?92q>Myu5itd&atFo261?%~ zz2Gr8z*oT%bm4Wu5%4|wXbXcOLZ=&C=z?+UT@d-=(mDBb>O!}5ZHPj*b!=Qi;}~4P ze~><>sLs#OT)i6}U>SOq8J(@r`G8|>D{xi1hsDlEZ5h;wrB{IHEV=-O__mr!;N;T_rDK9 z1Bu8w=xkBF6_YvTbKjG!xde_mtyHz(P-ny1p8oD>)wb`@G7b^z-ahytF0dZ=_BCi6 z>NqB1>T1UzjHOL=t}=s9Gh|@I&gPEyw83L2Hv1zX*5hskK-rm`l=XqZ!OD6)rI*+Y zu|K6-5G0O!ZwF+3xqtAPWs~giq;)=QG+Ays-9&-X!OYX^RwK2xNHuU7%lYKB^khTb z@d`Z+@NE%mmX%v%&o!f?StdvF7^S>svE%ZLC)2%V<6D9E+b%5UP@ZLnS zFns1TAV~5{m*MfzBHY#cw9vszq4jl+y>wg)IZ7rX)+RAD4m?_{$Nou!D~Y>Tbfm}U zIK0R2__oLE7!`r=%z_61X^K6kspSrLjH+}C(CJGXsRX8!yb%GmV6urdzaeu~Zlad5 zz$IMn8@l_HQ8r92z;`3$Kh3-vFXbpc=m601kuy4L%o0*3);w$y9r(d8Iu4 zY>{IFMPuM5nlVurl_Ir*q@(=+SBNHRAGvVV$b07;lG1+476fk0{SlacVH#|W@o1{UX6nI2h(RDyf#RH|F0QuRg2xsykjxv5p134YG&Vz>WoC) z5B0Kg8O7pJlU8=|x}x_|lCju<_BOuwcW~wCBd>qOPJisV|K5lH;C#$%4FAZW`T#)x zxPdCN&QbJK*nsnHuIm3v_=CC94GEpt+_ zZR-eOucGKIY9rmqjz0;-fxoT4_<8=9q0wx+%Iw~N_^{%~RpqbZzdu$&<_~=Nck$={U;_Oc{0I1F{pP=7g3OE` zB<=5D?Vk=9=vin!;M_k`xxWp=LeEC?2i^NKu=}sx;lDc1Ob4K01$-d9-(UaVKmUXW z|AYl%JZ&!?P>@H1Q|ueS5*XM=Bd z4ehT_Yp#-C@qo1axi)w-JnR+EYj9sLG>Bf1yi|X=t*Sg4v|Y0S1)>`hE8dm2xL90Q z#Q}lFEwr2M%CG;jdD3r%+lJ-NOSvgMn38FQTLIZv4XJ&?A!@W4k<{^oe$L}mtY~dB z=t1jwqg=>vn4OPz1XioY&dh~>hEa4>UpIB?yac;juB5%!XwJTOwG`(Hdes1``GR!< z3=al<9HojVCS^|21=WEGjRO24Xyf}vxWI%{R0IoX9b>4NZVr5(PWrs!U2_e6EYWX? zin3J>g7ay^lJx`xs#K1WtvjM{00DE{+Ca8E=_DxGnFpxSS|F#pvBRiVR_jM)XRMGr zL&(R*J62u6@@Ig~)v{25rgZFl)f@pTFgFv0)I!h!a)KiT^DKz6wQCwzK|=fMiS(G$ z-HpasqPM7sWBO`XSf*OxXPdlD^h$3CD0y781X^FLN$tZuY=<@udGmsi1#(7*p)mK3 zXdz;9#M(SD0G7mHFgV4K=zu?OZbIh7`U3zbT~S7ZwTw$D<=g@N+HI`ka7ej^qJV|v z$>E#@BCEJql%}XS)&420!_N1K_!^p2s-1DhZEFwcpz}K%mKA_w@%IC>s znRl0VZmQ@p+R_AY$WJ)Fnf1qWb6(RUz~Op$&@S4%E5!s8A$SY<5J+FzNK@5C=*)qAfkEEV>twFW z9FS*1vKIzK5BN1)`eh8k@fYl&BFTxJq4F0VuoB7i&$=PWu*hKoe6uhLPw1jmVEpaC zUeks|$ymz7v<|J2=)wWEP(Eap*?4(1*CAtLhxTL+tF;to*%WOSOH?#csv81Twtxmx z21U9g$7UOVrtmoRJr1R*n#^^2`K^QJcwIuXt-i-Ku&% z?Yf6`CWO>UG`RRWaxF%C5Z)|7+~mdB4NWyqdlHF-p)q&t+*r+8j!DX~A3D za1c)?aM`c{#OCNm=jKi>B<3B_Y-OSh>#=YG1jM508QMzDAFr|XM@U%6z27L)Ec33* z?Aq)*^ztsnAW0(lZPp%zBwU3^`9B}b9pJ!|nel;Ur4JydO&s3NK8A5E9zp~1zMH$J zF?O`Ks5V|5?wE5wJv^PCx1IA;XH1Xb2yrpJs9R{W*FQumW36No#NR z+jJY)EBle6R0-{vZIC#uosMl^1!SwWjqcHL1Y{dP8qw*R)Db$e6rXEgR!Jv|Xa5wE z`x-1laEqxXL^lx(hWiy-Isa9JG`TxNe=Wl}QJzkPW0+3L8 z;L^)Qx!9cU6e$UbqedHeF_(J4K&?uSC}qr7K7EJ8TMx?8jiriJh1#9tZK}IzW-N-W zF9toVZeAMIK9{7jS~(+#-jknnk?8P9-$O}X3Z&)zbWZz=&We5f5ly`GKr00JlpssJ zL|Ej)Z?`w#gN6^Bo^B5v zxE}8V3(^KT!_sX$-4IVJ>cwdFKbxHNFZrmxXVgr%_F4pj8nG*B@eAhqk@O_7o(0)B zYjr!15MLIfb|{$JMm>ff1l9XkYc#HX2W6T_>4{<;1GY6rf$4B=7}olN5w$0YA%rG8 z1E+5#vLXJA&p+wYwZTam(=KU2>KLOexl(=I8TnIC=<>M#4AwphAT8{7lE(IAIrw=H zad3LDo8DwN4^8vcNE8*RTXM!Bhp)p&xqIN-^j;gGNsil+8KNycvjme^Zjm$}<`@FM zAPty$IZ@~=0qIf*cZy1*orW`ajN+OMl#<3}2>+{riE@pXdwWvi>rArubrK=`g`6^-q_j|ahQFz*5PEowB1!;Cu_E}}BzPw{^0P72Wd^M-xbR^OZ~UMxRI*EdOrpSYQm zXC%!G8U2^GL0C`Cl7@9R))^4ADw zeqB^pno@OPKV7KpkDU|M5?cVbz$tKp;2-pnuqYOmF?qB(O={Dg3~abYGol50;<}98 zp8It|8y;%4U{_t&ynC=kWT;$ zPkF|LmLabQwCsYJ@VA#WFhiV1sH`eccEy~s_`!MZ!!amJhdbvJAd^NZfQuC{3vlE* ztN8-k>FzWK_K~?~XOp+FgMZ6%R{8bzts>#P%ck*j-%mK=_1Wm+p{^>y_EHpxO*fFAPMK8w2sfC{vbkbF9w4#2J`fkAndf6Kx-gH;<6_Bpx#()@ z5o?RZL(N5ymCw8%K_ghrKAy@`KlHNq($aIJ<8!r}avPOqJneA8?z`4uzw3=dBWE4k zt*udDXgJLS+gc6vU=V%)>y^QaTA#%lZg=}O<~DI7rphH~CHL(TX!8ru`EkMp|5S+O zx0m`Xn#EFTRg6=k_oFV*Yt{YHwClL|{KbUg@ERJ((NqMp#0X8p&vneRZ^cD%L$RTh zG!(Ryw{cFpTOVqg3kec3%1*PobCZPdi1otXV*DV!31A+1(PRheX!oE_mS5(zQn+YhikmKUi&l*b*{)kAv{1k~b=g;tR zIeI*G6LJ?cPs(}9#){L+{N$G(G=DtV#PE_7`s0DILUhiq2<8KEB{L`n)g11IAy62kbswV2@E-lNC&k`V6Z!iHiRMEINDyv$@kk`8HeuL^0`@adOo+& zLRPFn4(^{q;V==nA9h;r)s#{)6u96!aK98eVl_^)*adps` zNnsDRAikNLCwDJ{;Jl>^!4o0e;hZ+hp;Qb-KA{41eN@^pO#PMU_9WS ztd9j4=MIOA2sTl)W%@BBrX-Ru8Lec?bR@ovU2v3NO&vgyfmOhf zJY<(Z;EdZ{RaF#Mb{cI}^TD@l#iKM9QlHyZjz}Tl1dea26+k!sXpomq()Ee zYEaPqSMEVT{y-urQXDbqZ@jff_8V{E++ve3Ir@lB2@8=v#=<6wDvRtxVOU+HUJq8 z33Na3mU<678`Zs(?y*g2Ql59A;WxHub{x}uV>sn}*^f zIG2WU2_DED_HXh0qJl&@d0>(xAqUE~MP#TE8PhrrV}^ChOV&J=D{VKt7h6`{O$+Bi z2h<`CC3f$WA%<>_V+8^G27$oL_#FE(d0Vg38%FAWTgfy~mORep)E( zfGBPM#^W_PqKx6a3rQm$GX)-3<9o3Fl0fQr6O^3x;i;wO-_m1Hc7NYhECZV@RgvS^ z-}u(;_fsJ13J6|x=2E{pt>mIbJ#9VW4 zQrM2-d9^~D32(mi@tm?}0(^tMhV-Bfj`!KRFqDB|tB#~KJ&wc7!Ra7sLHz}xE<=@l2=;g>H51j7r27+DdB z$I~<$gl(h6UV3^Z-*91hd zoVPN&e^+_3=J6OYq8nG2~`ALJFl59WzM_=Mgz1i^kD+Qo;-MO-{dA^aqyh$2#d0q*9MWs!k1D z|6Eq`h>#AU6G55 zimQ+(6McCp_gUYah^;NW*JiD^bGNq4r;%P+pU`EtyjOjRX!{gGrzoofAsh)d*S=!6 z>ha8$P{Q^%n1aG_6eQ4$Zde)|_oiO~=38#gQ#+YYc04>6qk@3l=rn)`n7~=JP7V3$ zOCIIi6=KLx08;Lltbo7td^>V5>kr|Ta#{( zs3aOiNym9orWmdea!v!T(m1(cdJP5mAk|k49x(b`fe=w&G%mtpYe^Yq_6|xxdIt}l z8Qpv&|CU{hNfOW{-YaPaz+bJR+#x~I7CvGd?>u3oCl-)S)L(htwNTpF6k(l|z`!B*~6 z8uI$gOC7E~Sml~%sY$PeC>yiFM+Dywh_5Gf4Wg0`$YF>e*mBdw0m;oAx(*NtW*Pf*QzHXxKoh#p@#C_{vqGet3z_7;ezf@ckuIe@fIS2g zj4wKXw)F$v1j-JcvjJI!!{FGtaB8l%=GJQ}d1Ke1Rl#_c+I*Ox+s}HK9bwf@FgYf*pk7`R9xr)4jJ7HB_ZAS@MZ{j-6;j z&3>3`Ckm@!npGp_!#9vzCs~>K$ZUf4FM6Dsbd;=3!5!Pk5AI&%qi;nnoH&n&>Wd zFL{_NEf>I;EY~(Vl(1ypnqt<$EV-1anojQ-u`O|z1YZ+B^(K%Fy#vLr+b;eal=3Ha zjhPwnj}Aqw|3+P7{R`@v^dCs8*l3=YBJ2vF=tC4bl($R*c+yV0?QH|s^m^>E(& zJywKsfn#J$Y1=#FIbkgs;)M{vrUhbN`lYdvS;!AcqObZ1XlTHRW49qya2${nXdVo> zSKuH4xsX($p*O2^RXFqc9bD%sg%*~kb?=Vzg}HR?eIty8xAzw;lF8G`@xgi@y0_tV zn_?}i^>WOqN;-7Y3P`O2*bJC)Mi;un=t7xS&8QX+AqdJuZJNu-DA^5-UQ>&@=;3(X%*&NoW#Iqs6Bn?w?iVKP^LU?E27g5%~tIB_avRMBBR{zOl`(q{k63Y5#+Vg*V^q&Y7 z(}#q{0HFVeKlay#{U=iOC$;TAA*;EPE?vI?Wm>HPBN@vl_WoYv-RVQbCPxCwsWd=k1=6* z0SNL*2R_1jN9X&E-Eo{z9-#(cd=sAYU(6>hBN!<7-4&UhPL~@$cgNqm9%*>{xcrcs z<5wE2FKxjQKayo6@pIjCJf$7i6$Rhzae2u-KdD)B<3Y36c|{@5eJ^?)o;OqK9z^}o zj`5UouDZA!KA~Ch-4p9+Il<8qEmu?S6%2n4%H82Y^`kiPy1c(I=3?=srnKP;yU7H{gOZ`xM@f@#glq{@z*H}KOzbS9|}L2IK#nM|?U zvo*gyVdweM8jy|2!Om0#n~vl2!Bw%#dCaDtABDyGg913yQu4LKtVse}7sz8onv9+0 zCT|$}v?a4f?C4zG%Pe_!kn(rKU#7mAA?}Rwk59&-0vzY{WWZyT2 ze86#St|YC{*E$is>-!_kU;#7M2FOA}!7b|GYdX?kQ=H>4!eWp=RJw#8FgTZ};|4-IFWxCFy#XmoMqAN4`0E{-1i^1dAFy@isVDKw9Fl(H_7WW4NimWLAe1fZPc``3YDcT`GvNE?$sqp1K!b} z)w({}R2nVSP~>QcuJk~WFfy(w$x_EamuhaEZjkXQCW=N@^4nHr(gX&?doN)*#3X%T zv_>`??0EU|<082Gi?4!sM)s}^TW@7tjmnpwsU*Mn&CAzsj7%GUvd64WPO?zv6|ZDj zJIdu2=OVZ>7(~O7GC0f2C8j-?rAn8DpVGFD_|{?s)_ zBAYrat3#ElnWRy9(dkbN2ZO6Bi&&vatH|-$l%<@~s=>9XG&zEJ_ye*!(V8JYj(*39 zwZ|dvc(XP!FXJtcDhwnN4#>`OLgbERALN8&rgO#6=H%=)WFCfl@z8C&I#w>I5Z7-Yzr(?SX}D7p z@(ZQ{u5Pc2bgDp7)2{Y-C+xeijrN6=;zrRXwmSdiQn=0SOO~P{lA~Py{^*&;N(%Xt zkMq{}0o09bko2x{8D20y5lfn5?;h$?EL9B~BY%bDAX7?>%#FtZ8uTPAeD6czgE1gH zI`qyi2gEXLX$$RV67-VaO%@UTd#tZUPlsU;FP|rcO@{)5p!KCWxmWZgInyL4p&_L! zu9J=Mp^3-k;W0xUuZsXd!t}_dUS0`j@)GFuH^I!3vx z8KBlKKp0a(OQITTDMjq*=ao!%-z{iocWCg7+i6#?s7?3zfNtzm3)?Wu8T_^m0mNOI zw_3EHOp8jWLIpGaYOXcmBjfre9zA~3Xl}0rDG_2!Fa*!f!J(FNVpG!*i&lA6t-CU+ zm7A`ZV`DL4;y$#OBU{P23X35bp@@OF8cf;=Rtq0k{U# zrMn742+_caye@_`dq_4KIzfs0QEkj^WlvJTC8iRxM{Ew$CTrq4I4-9{EB#MgK#(ZZ z2(4hRhA)vlfVylZS66&NuNwOJYlu+26w*fv;%uKynWVx*3B_DLJHZ9wCUpZp5X{>g z=mI0Divqg{TLG15Gg{l9YCn1D<5SCXLch5)GE&^Pw2iY(EGG6SAMMkQXu23_6x01$ z`PKGb^_(i4=glB!C>pM>lHE`>Tz4QP$Wl}6An4iZEsfLw9b1?2t6jlVVvb8ksO|u} zY*_919(Tk-NqUsEvA}p+wpNlX+$FBWoq559=>@qyo4Z4~ggx{?8tkym%a9dVFtxFvf;EzGs!Hdhil+1oRK&u&6_B> zd#7Va6$GurZj8x{0b3DYYzsAen1rrEi8^4%$~Hpr_=~j6FeEYiir^QP?9Eb2d&68Z zR+CMgf{T)=7>xy)kcC#!%IiG2c`0n*dPq9|2<#xKkqXhAoP(CAiCEx@@sA$kjd>jL z4EP>L(ljOTHV)sj_+B!7NfAAG&7wMSs1RX4Wy&Ys97;8w@^`t1)tkAO$7a`(>YFMz z`%XPr>Tth=<`Hu;$k_aaX55of4mPZ#jI6lr_LY@_5OR%5m+d7tML~TN2lM$38;;4M zPcJQKFQNQ{8sS`QNfLDFL6Hel-6E4I9osM#t)Cl7!L#M|h!#8b{5}{ltZvL=Djs}l z^s@r(nTNB*T#MmcYRiPnSyF%7dTxP6{n|o>xY|`$BpjE*upLN39aDt-!uxLL^Eh{1 zw&Sz=ZNGtq+f(qU_Yc?J>z2=UO5kop*@sr#gV+j0xzH(k4QHfQN|FXV`+5Oi*`|a@ zA}<({i>7mT6vwF9UuyO^JF{ngA>T6k$BD0>)n=TXQ=c{%KCG}Qq?PGOSXg^nNC(o! zNY8P5JYAljSmV&H1FBtiXV*1T)z?*8P9|@`aclt}Dem9g06R(Td2Fqj9j_~v+=!2A zP;N9pT+TrQb``}|N)?Lw@vy32NzNU+lcMSDqM^Y3v~E1W!vx@tk%pX9MIy;&!p?tL z)1RH#x9#QVM>ume2MCv%YASqn(&Ev0%r~63b2Drz`0$-=pH)RM8}j_QCGYIynM#dE z#LCo^RGN$NLm!#e6l7vs9nPy%+Qy9SskxZiEnhYxs>@L8&mXQ<_gm_?LihT#j3AZy! zR;=jwg*c)QGgr84Q=~#cOpa3S3g%d_U7QAjcN%4FHMN-9J0RRoFp}GH_w`xkv}h>> zN_MRmwSNp7=3VhYd+;JWV0+Wh>N-pDBK(*YqtLL6a5IJ|fv`5*Ib<{Xi^H@u#u8m=?OI4#x}<#{SdrHL?owIq<;c8 z-cbvzp3x_CBrC2$B0(|{8paJmn`EPDcxzlt7;6FBg}$A2H$$&%GuH0rjIPHS4l#h) z)7dB|T?%h!@HlzS&ip`-+0I-1#IQ=0d=WGBq*mXRrhON$F%e9DsPY7T5_T3gYOfFG zRt)6s9KXBB?8M>r7i9}=oq#rX0SgI!ehCS5LPeV76e;rpji$qqv1$EFEAKbm@`i7; z6}d<|c+aXtirSvHH6lo>cXyndfb=C>6WlO~K+j@_b9bfwV_3$-P@Z^UOT_)w*u8b>ruwCK)%i3lVhOwH=45BanK1_H zLCm(d&6${TUn1dnWJ!=om_&Sfq$f3XCAXT>c35FFBVCWcftpX~7s^Ar|IZc-^}LvL z7AD((aw$sDjc6xZYc=NOoC4dOJK{D#qN`mh>_Gk0;Epy5?aNdhLtMz>Ll24ojc&2& zbPA?Hya8oG+M2)h~k*f+(;Z;$(J`e)oxeT!A+>z3yAfg49#X6|2T037WLkn(CUPr(UuggvVoF40@y{g}m== znbBb8KM)&{9k*eeD7i#hMP4Js4WSmk-jOfY218ys0^5CU*ua};;5)4P?kG9g{@7jF ze||yd0mA)-n>2^JqHCPr4dI~Jbu2_sB?y?r7Ql4von}PCiZ=X=6#&I@!DG+@4ZhlKJ4?!ot@th zd}tTzWkIlegNR?3GNNY4w)BJlfY8xYkNn`h6tw)u*9IGCIVU*seXVV?fK>I0j4s-O zEJOplECINbcUgLTUHQcP;j!KG6T5E&-?HHZqO8-@8_iM15qB6YAKNnd9Gv*&Lu5PU zh3!}OAX=>>(^_zNHf~KGZXS*eXmzh-;soLZ;C;bBU|ziIvh#f%;oKFkxtwQd){Y1= z^T0wvqN(`MTj>sL{%7s|z)RXmvs$oQZ#mhF*dG;Hz-SzpbIKt!*|L@M3boKDMFld^ z=>muuonJ)1pTED{;~nw$PdYg{I$@ry1y@!E-l;`0YmA7SAkYd#^ z9YBrh)Y-l%CFG96#3mMU0`8rIvKD_s*s%u%A@{tG67ZIocDL{ygh81jr8B-5p0&S+ zOrrL{EO1?B;D_tL!mk>#tWgG`fblQ{hV(f8waCRY58{+U?347-aEsf!Di}`9i;qSX zXb7b}ieV83I3bt61f`HKEX}w^x|n0yC;pi{QYHHv)ET&#Y9N z*EScbRjF4vOvhE4YLu~}+Wmxgg{9Z^Ej4KP9jN8ujS6253rkOc%8Ls)6Mz1(f9U8N zLR@u7iApXA$X5g-zM@ZIA$VHBod~5g-8#N9&msb3M3KO^=n&0ZpFaCIdctF`>0bmHG|e>U=O0hVWUlFrQ=ncZ9o0uc=@yn z^H~5sZSU9;@#j$r3ecDOPY`!CJu9<1JYoG$PmAz3g9~`EYRvRc*bi-Q{5)GEfC2f> z;?le8x|j_RV1@2J>8LtdN+YkhDhE-t9^|6GvLyxaMlx)Po+xV-D{#~`Z)c(7DviPo(7|zggBhJbzqeETfK#hC;n%j0UYIzToYB)aAnguO)Gj96&4zQA5Ciu#g2%MD0ucai$a7rXUsH7VL7_yf* z+)q8vHx_I%%Z%geaw4}jIRajcB=Vuf=-x2gKS9MMM7hA+sap;>N#8* z$|$GQWWCq-P)!~N?Fn9!T6XU&PStmmWAs2wCJ<3EwR+Jm!E%Pzc)Xy`PSaPKdfR(# zxY-oR=*?;Pq7qL_HuSN3Zmh$m3;A;ONglj01R z6(DZ{tl6xEPB=sl1wmA;a|A>O#Yk?^9bxAX09J`2K4BqtI`gMGjlydt|E!7VXE!8A zG2zrC2vuvD;=C=ch@HW0Yd<{2ytaJfnJqg()>KhS<pJ`Y0nWj!rsx^1GZS}aees2@Z(kX=`|Q{7td3fHzARv z1;qqbGZ8H>A_vFX3{eKi4yZH_+o%9gVZ3EKNa95Cjy@|5hD7w;5I^mPQ*OYF(9-QP z1@?l3ZW+w#s|JnLbU}G1A;QuKhL<(GhwF|rIWKjGhLg@3_yxRB;%6XByk5L-Oy()i$irLH*`g z*|7UcNn$%y;Q`Z|KT0y3KMHC2`f2HS?njjye8{r`Z{K$!n`v#Kgt+wSKO zLs0p!=WqFRcPeCWdoaZB4TeN7``;f2DUr@!%h)>I(b?%9PryO_w+J9{i3%E9EmKC% zB59>w{Ix^4f$6>xc}pv%zcY>PaJl%QENk{8uVg^ezlb)1J%6|Sc9(|v^I9-KrtJG& zvCB5%N~r7QC4O~hT+I*Tq%-=kar3MP%!IfXXSD#%oQ@texj8w!-AD^>f9thHb*A?{ zv@vH`SI^JTU-OY@B}HvrJ)y-A6#5aVb3HuN46QU>eCZh9UQF?x#%V&#E6y;4UK7fY zxUZmlxoemS)@kd&tgql08G4ChU~_XD@BPuZYDEXn1F0R&x?keUpxf;e$kH21!5_{S z{U2L_T!9=upRDv=c&^>9Hy7qLSN0l*(XwEKh6Nl7lyw)@V66Iip*Z2q1G)vO_)O9wXL^;o{MP4*v`h5CE z_rRS`*~&(&g^Iqfkg*>vu`$sNYV1DwhvPXETF3ldII;2oZ1 zOb!fGfQ#I^0(p;4p(-UPxF)wi4Yf~N1uByG=^H{A94HW_lq-anP`J4jvF5}X zZa1V~%d$=SORHKT+!+_z#-m>*a zLoWQ~dFq`9pIHL!QMCA{_z3MhOJmkpwOh1!!6zOg>)FXe-9|qx^|m}OhiGY?cBK-K|X~wMS0a4QQe&KYcn)NHWN({X*vgm zO(K48;I|WHq5sPM{vaH`smBM)U}0eU2YUtl8=VmF7j#0IVGCb6_z(8Vl^+P9iES2gKcW5q~S{`#But9Qs{?)niWIcGKvV+^$WMPdONZJ5>5e12V)o_3(@kRiv zxgSwJP@9wOp!1}2$eKtJTxP3ruSPxdq%rSn%ppraq_8u3!I86XgPRV z=-_O{(7b|vD{&fB^g3@)0_V(;j>=o^@DWtIzs~62tmvP_L`D|Iztdd6UlbGN6y-$3 z`2J3FssGkd>>qIQ?`_Kdhw-FL%&Z@s#y)y;(K9i8G%EXl5l{LD-upA}WBT*c1%DCh z{x`+>uh}jG{Xfe0ztdnp{_p(*HvdM6|6@&&iH41if$@)g)qiEMEFY1dbRT$>jR}u| zo|T66cmJ}FK4NTae}B=R&VI1hznhEylVASb<$v(n|NTDyI-lQXev@NX7B*(a|GQvS zW~PrI)Q`l|kA7$$V==PO(EZWh4DV0pnE)&_fWHCYk6HftdIsiyG9>?W2w-OYh)$*Z z=#=)6qRK!+M^DfC5vt0}$V~IM4r~833?uVL)d6%&ENmaO{HQSfAD@Pifsy6|Q2)ow zKH_8PnVA0mDVYF_G=Sfst!)3=dhL(f>!1G`0e`k-|4yI(=h7q-%SW5OKX+bBLxr)E zoqhaY%)Mn$C2O{|3xyT#?(Xhhc;W8u?(SYtxVt+P?(XjHPT}qjm#W>ndv~9G?m6H6 zapQ}%f>`7d@|_vEf*jA7bF`cjTP_!zim%j~YI|$BP{*~4`RIw_b>6av|C^+`RBP3R zB><0~n1AY7qxa5yGw#dh-3?(CxbyG*JX|lK{s8l#Us(sDWrF2ZDJ&Z|wdd)3-&(dkd$?8H!^S;~Oqx%j6(IL{1h+8|mPbVD zV$|U>In%lB%_N0cM+59PmTt8^=y|Xwmpr@aMZUhr%T%Yg{SGU@bEN4v;nJTuq?5pu zB$t}n`x3;94`ZSJ5DRjMntaUN$eY~OUptgFAL zcVn`LWc2y{-2=1&fG9^L*0{F!jF*znoAn3pSH9X?T&miFRu2Q_Ex3}7)A>dDXPkp z6ElQQB3BODh$rhlFDXLG<;T2A*9)nM;a3mlv)lH=Ox|?*W_$8^ z>Ie!Q##=3l^fDuS9cfQ32NK-8X+k=i2yh+}=|tkR1e0=I{1_QZ@XP20D2l4DL#po+J`=p*{HOg^cSU&-)of~t!Y+;_bo5#s40xjphi zK1S%JY=QZHS*koK=@9%!`DSt5QE?_%b3w769E6a}B_f16ka9ebkP$i;OfT`uplZuR zP-p_-zKfqUzV>&*NKbFaL@>>SZ<0MPWlQf2Y;(gakq{9)%O>nVo;pW_)P6P&Uq(ua zG<)Qv4QVZBcOw=)dh+^?(`QroHQl0@z((hwnPkW8K;qb3S7bYdizOFBxj(E&HYf)H z``}1?PRoH!{#{BlYaTYug~Nr%#1ySS9zFD?D(X4MB2_Ij5B3&K9h;^8+bxBurx)lb z+z;IO?Axa(l*Bqr$nAdktz)ZtM-J1bZYW1heSBekG*1cxq}AZeHE>ycw8+R3K7GF| zThPWFjN71@(%Nn}qkbZIZ?+SObk36Lljhew_Ub&w$R)>GLHIPS(O{x2e5uS5IK z$oCdQ-MY=@p6h}QRz3V)_P+@(b6^$l6G@?L;n%pCpMIX)zJoq- zQOkE>nxje>l4>}p4P@l7d>2h?H&(e+xj)G`>^2M=3&9qRQ&V*p)l-Hm-ZWZ3B2-1~ zcAvDIEv4UlJrLX{Xd(A#lsZ0@ApQJttF~`F<P#LWlQ?3xs^qX9}9E}9*=dPfy+U@`Qyb`=KxKFO*@Y`tw>1qAP+bT zLnFc#Jr*8;5bw+63jMg=K`5!B51@b<0~+XBI+4x=75c}_OrpeXaCDp?F8Po`46Yq! zpha)2>#y>PBM}Q7atEHcf}xjU_dVLCp-Uc@FF?i>YhJIBu2ZX44$=Nky)vCsS3hrU zeOd=9*50N>TxB7nqD`#>)0zM?wo^zBK|txuBe43t34%Jqa6oLjI9^Z{6BvWNA%mA~ zy-I6KuNpdfwtO}7w}D!QwY`BZvG2Dl^KpYX&$@N5)AP6YIB{EB^q#qi?}jBk*(^@_ zvPrcF?t1Sn%g8pAnrD>HT5)xkCPX1=)W0V5$O2pGoeX$qmbuIl$%-UA$k|(RrzVCo zHOtwn5~n5>Ba&FLkA0z_tezi+H*_`4`ss%X84!ga}?= zag&0J1XI`z-7XEX~>e=rv<-oNN+^?k2toV9-p7In?2MS#98fIEGF552mGUdBNB;kp)K zH_>l(bpT)Axi}cz>?R!(wbR1ByWFI)OQb5+IzSgpB*k1uW{15J9x;>_&8Nj4OBBwF zf259v2T8G?kM4+bn}~+=5&X$-aQ$62d(i%g8D;d~yRyx32an-qi4C&z>lu!eDAx%2 z#F^;n`B*nW&x3Kz5p-gF&)i&wf3xTmn0-9HhTXZp;8NQ_-U&KWeIdp>CWouSN?L={w)xW|l8%JBz zZb(!XO!fP*pxo&BW)f)dKcL}55;q-?qke;PiOGk_%}uU>I5I|NAp;2)+k$G!Qlcp> zCyz3Nc*g9;@-6~ zk3>{U2H>j$Nln7$Tt7)d9Q89FhC>^CGOZpu8yH_3mN3x{tkN5}_z<8z46nVUd;?A_ z#*Sp2G@}<75L)ogle&~lk*VKn6ttwi0mJC_SdJi!xUss3xR2V!>)3R?uhQVxH2xfP@E@z6F05Hb zDh&SSn)xpdbOtu2e};Lm{q-90&;QE*4;<)Gl4iYhP=WV6feABxI>z((G6ktrPXaSI zomIQDbkX74RCdo48FYaV7E$ZZqct~m-iPEUlelTCJ|O%=6ODQC*xkYML~|OQBFYiv z>sIxuroKUz%(k{J?$fZ#taav2U(c%&tVk9EaT0Q6TM6G7ST82 zj?AqEub`QiJSUy6z72_xH86;0G=Il1h=c>j9T_G+SK#j8SFnltn=1a*N6zps<>CL( zM=l}7C!!+%|3!KDBewjPdHT zWTFNiN${o)uK#>W-qFU!!qD+ z?8d?HvLr&HQOk873Fx;wyc$Bi5Z@oB%PB!;2Vk()#E3wHOB2gZ)a$J71RlL|!gd5z zpGxYKD@ti`*uJ5AfvT*m%q+cL+5>qLrMRFz?cef8vCh0fJUv_qt-T?Z3{}%GbR5TJiQiZ}KXrBAjmWJK1 z9P^UViEbbp0XbYtK7cM+txi4Aq60_Mq6wuN_l@6@aUEL4a)(+l}gj5)Bk%>i~pa8tz#AW09mjowsL0 z#`6fOPVP0?xI}lb@z862m|#*nb3POBHBI)Fw*$?iwacm6eaX}0zHo)nWTM(w^7UQ& z9gJqgD+M^o!ZnG6oTpohaUGjXFIFn zw@5MRB;cYqUs9?xnV{cJOD#_rRW+^ZAJXk%(#r67XauUBX9J%Kh)>fVI3`%Ko4zcv ziN+QM?CEm59|}3iKzV!a*px{yRWqgUeW}TKOZO6>r4N6Nsc0}zAEpKzVeY47@*U6a z3%=70dy&2)-w1H>cM&#aII5aqopCm-KU}y$NgW+tAJ88N*w+FiZK#uV?m zsOLnzOyUIQ9(8KOYv{hUOMJ)Tp6S`kW29}zUt>ple^G3L(UGP-biRFmMQB2M*>O1` zixP$2W^eMPM?OhZr&<{XbVe92x(O!e3NcsZqwnMwS6~vuEJu+nv7h7;e^jnlUAmS zY18hN>Iqi3D`0dISyLF5&s&KY%pTM-nl!Oj;!(kh53-~!MQP_y{r8>br7LR zFNX}pzK>yw5VUtrFKDvwdV6Bq^78uw#Fz{Nasz|nCApVjd9}t;(Q0Aqk5==;N-pEa zQ0AHDakm;~)7MF-jI#cDJ#_r1$>H)8G={@d(oZp zqj(6E(+7|K7%C7M3Vq_{<_C63agqP(G<*4BP#6z%QX1z$1O?}Mzmp4e39`x&f5bfm zI@zJV@tiL!%_(Dw)f73Omae2MP^YOuQ75h5xSA6S%j~*CQ1%L$8`GUhs+7n&uQb#v zyao0SXPJg4j$KFM6}S<3*wJgZo1Pwas{$%7Of~hlCDgP8C#S7ZBw9qcq8PAg)+8N9 zhCP60Q{=EIIPE!GkF?K{8V$;Wi?_!=(xaCOPB(GhNt2P``%yJO+f9B)a9US?O;lDL zrqAXW9Jl{X-L&`;v3Wp6C=q?77-_$Yy5BL$mi0BTe#)xe^+D~Zhw+j5L+n`3Ka4gcjv?j4?-Ml!c0Rt$<*oFD3 z5?b{$o;s%O+iHo0jFlWu;Y!uM^JZ%k?(-h}30BiRxy|LC@7oCLO<9M<+OqgU>6vC- zwQ*ndq>wmD1FeP(YEjvvlB42o+7fcjc)F_Bcvy9fxcE!o%ml~GetLoAZP8f{InDl0 z(Lj(#MAEcq*7ayk8d6S5#vZF0H6&lu>X@u~Bw0soL1mBS$Nj|N_IYr=eN(^Sa{gJS zd0}P3f@F?)27rC8=ry@0Yxv9$hN!5sU5ro`schVQ=TVJ8m`4p< z_$nF3hcf)LZidwKWis=ahd(=PK|47eQ-|_*2^S6^(oj#S3MAI^la^^s+@_Mu>NHQ4 zK{t;%z@p`v`*5E@XRAvs za0pSUG^)j~shprFc6iGkIFyNO+o0L&P~Ec#=}Fpna>gvK7Ib57V8I+(Flv<85!)#i z-`<+=k$*3hy@e{%Iu0-UzBw-uaX9N%M@sK%r!&YV9P4jZ%AMzWqgIG=X5r9BDpPuU z)Fle&IISXSD!NL~6TkS-xXKipZqG5pSi;CYqhU8zmYZzIKwyaj!LQt+Ac!zsS+Im~ zJ6fQ!V3D*1!5B8(Vk@F_j1C>0lq)y9>$0}(XkvDv&ktgP`(jy|$4Fh}hK(C*V3;13 zfN?|EdUk)@*HP$}3W2eRCxSP|Y_2 zM-xfxR#9zBLMCezcivUd3?{;ageD>7AlS&kMNokFoS7GlU5#oE zaq$$J$v!>Flx3vQUXEB{hrj}k+C@0;6khCONMT_JQqz-;v0~OW9N}^|RYTM7B+OMR z&S?RtR-eY%7?VT3t#m)}d#lVSKQKq49CfK}$H$$TMl$*ADBvzECJ0>utW4K4G5zdR zK1#Tg@nc+vD~25?aZ*^yHu^S8)VNmb3wPSLZ?^u#YlQ6hy1u^dfv$dORi?)1+r72pq!24H2aH@ zP!@v>a?w^D7J76JFwwKFdY?(bu5Ec^PDZKBZrAD_nY?F;5>4UrP$P_X0i?M$7P z1uqiS9=7EvRa%*tR0NVXdMk?(6S+*`dk@_QxsnXhwSU4IUaQz+Qpiv+8gnvA%m1*; z8fWrsa*7uzm(tGBJoS~CQB0es3z^YSWN2_vdmO(6R zUP3dQpUV=@z|UPT$G&u8ZxtnB*_Jwg61EQ3GDa1*cpJUg*^f@RiY#;(HZ3KrN4h=)QC+Li7 zl`3)>J3%RBm8tsTy%?Tz>?_aL(INeal4u<9d$|?Xf(ne4kFI$Z(N4~g`;%FE-?}9A z`P>TIBlDg&*;uKjJ+wQg{MF6)z0D>B0+*A~xm?Zk&+rqeu9_IYs9&7&|%A=i`Iz1v6Lm$W%gqXpysbmFR=ntRNlT7J&xNK7B}Oj zW_#h|(6>Yrzp7_<#2l}QPv=hI(r{EgFFqMTLlzXV#7|GFO8SPuAG}V2rtg+%bvqUd z+`-c^zeKokqBM-!k}*pO*3Dc)XlxJ4ER9C8YQBf?y+>FbUshS7os}l^A^Q7eRcjIl z={M*ODC79;V>N`XrUH&xlDXEobg7%D0M}~NenIjcs0yZDm+SqRg~y!{i*xT7A zhWgZ+6k2$KxRFTP8g3$9%jWV_p{$8y(AKA6O@#+Ty)Za_s8g;?R5vl(6%dHoZy z0_lXTRLoE@7lS|mw>bCJ)YOHU0oZO@_Q!ovMD?>Cb}JT<(w^I_iBuD1Z;NNOAG73P z+wG02@~p|V$Dj2k7JgtEXa`tiplsA44`LN6krm_6W=h?zQ3K=Lsfv*k7%fEM!HW?2G8?U- zQZfVQ{%YLA$rBQH4Uy1w>#nRQqx~@K{BEcR6$7sCJs{&7<**^tM$LWb_dKA+$^v4* zXjZl{<@RGAnP6}lG{@K#HZm0gV-HtN64nRsVM5k-&Ud{0EnKJwOzrj`XP@3!PCwT2 z`Hf{+{e`;O7dMt2tQ_Rz6BYm#U>bnRBYkbIiS-pLdE$HWFhHHpu8*blrT;tl$P=OsjW_n{@rz@?U5j8}+7*86Wnw;h1M3(P+l+*kmupN% z+JgrN#c&X3c!-;vL_S6ec>zi5e%1>F;@pol(YNueBj*imR{suu4j;l8<;_QAIY4Tk z&snfKAomoF%H$A@h&H@mz_NyYumR$6LAhXE;*9`4`Jniucf|Rm67j}d%(Wa}J%+xp zD)@wTbY?OiUcaEn@(g%ePH*_3_~PtM5QVHNB!Y13h5^k2s)4ozzT4TTWvmooPQcut4UXxP=@jh=5SLr ze;2Ygm@-3Y3lMsxI?|gWK!L72h_zsmgE#bT({Hx_6iDTkB!sI!<%M!vRg@@HSXDGk z@k#VdbTrj8CQB6b_-6sos}i(Srp6hcFn5tF?05iBrwG8eCCJXN=_w2u3PgvqUE9kF z?Fhm8j8=+(% zRbUzcKQ=P=umf(^@?dY{Fw&trsB&Bc0tDjn$G-QwHImZxZP`6w?}u8_B&heIpr8x2 z`dwYyrtF6|L`qkud1mf;+?m1{&Kh2nd8BeRKc<^DQ(v-2SUEX&-{-Yh5j^uClNWKZ z1bK`?a-=?uy;0dM5pySMyvR;o1(<_>+a>WJK6|xD!>XHjZ8~mz_Ee7X_nf%RdxkZW z(*?gj$9Hwed`4aLuYI0!+&*ha z;U*U%{xk*ovsv9!d~IL9U3dY)ISbeR%zmMn##Xto)M$wQd6f~)kGBtnaPg34rdSDh zNbA0|FO)K-lvPG=MHg}jW%=WKdqvCwCv}CTZ?9Iea(@Z?&i2m2y3Y1p+0>`6j~k>`WpfXCdTQUIC`-y?VF#QrwfAJ>-%%(bNQk1>@(`Se9JHiVN1``h-vc+y44*_;Zga9%6MtF{4pAV^WWa6L9n_Uf0-C zq7%y=B5V?YkIJ(s^Luk)nKQEw&}1?FZ}Q4pXkKD%?YT|VaY?s>gz`r{ZcRg&pbsC@ z^?qs#2%Hc)F)Xt6^28BgVIVM{_X=EQtNOH=nhSd$4ew?hW*&(Ms{aS~b zf8tbd(uxM#Vj9y)L+IaHkj_fjQ!AfT8+tDd$77N}KuEbF&qV~roIBht zalWYk2S+>K8vdN3ntmFG-)XjsNLC@eEOHTqS$g*B9O3uswR`Id~T;ay2kcoHiA}m z{TQ}#zcXjZYWUdWRZb_Hv3 zvhg*rYc9N4o0ldSlw~-eu(IPlQ*#pJ_KUIpJAiDB*6Mue!nQt_RSh3TwD>foh=HnV zSDq~$F&AdH7&(&OtjuspJ{2LM;kq)%QWH!^&4Lv0Kq{S71<{OgGUiY79A<` zf|(8Y5=_!@L_>uj=Y907{Eypi)@}|})V@8W*4B8Xa$^kx<{FE6uDii}W#${EAV-hh ze+3G^HP?TbQ$NgD|HLxve_9-W>Dzzmv;XqZ{oSaJzj~uIqqwbl@!$g8rRaAHRJxjl z6LKVX2zWzcfppNY@@{?l8!t|QO6#KK08(7f{Rak*FBoJ7@p##m;Ta#kMA(L7st17Y zf7zb)g=E21TshT?i2}j7XWn6misUzs$`sOIJhyRkvh5}X1h`7aw#!17+E}<;$7qPN zYQ!^?$vN-Jrd?=DxiLZkUfR6g48ghbqFKz`F_-?V`GfZUD+`B4Y}Md5BP6wAoZ9=g zFLv*>{z0Pxqp|C=KI zY5e?<@EI5we!bvVN!kBuIQtic_?I*BpOU|nuB9O!t(1VMl!_uHpPi|$g`~nipZwDZ z`g{BT5K_~ze3QSu!=Jf!r0m?-~}QUCEVzhCpe z$*BJ=?Eh8iXZm|K^~VP~>N$LX2s~N^J4eG`75csPUqs^XD)QgDKNhO(&@pOwAopBsMvRb^8H2a{g}gMsxUuYr+)?!!s>Uq;&eJ}v&bI`%)Y=3mc~ zKZ4zV^BhwP2Sd9Lu4AF=U?^y)Z*B0$68|`(=<(R-*;)S0R2Z%T>7mfq^lr3wLP%RJ z`1MnZ!GztSVl}ug9%u~H5*JG_{Ac`48qlRE;7@+QK<$BbD1AbGZq$m)A{dTWV(ND-b+xbM+`U&T~(A`)~UvBvJ0CueYOK=hjB;kK?TNrJl5YZ+&oY#>k3RNmH z_;|t@76~mNeq)Qw9~t`(=SNNZCB-PMJK|ZU^4z)Hxouy?dsG+% z(&qgWEPKCmK@oUIcbF{QJqlN!6x#Y+CKQ^aZRhe6>}Ynn$H0^`tj9WuvJ(^dF2{^E-nu0Uk%TT6(JOwSX>C?tf?WkPtI6$>4 zPmwH3KbB6qWU|blT$(0w|2zA`FX$iyDFf?__hdbltFi=uUAU2( zp3{&NXjmm{LUCOwbfQ!%dBSrCyfWt1d#9IxctU;0^Bn9s+P+DqX|*eLwuLywAjQr{S&?HLm!kZb+;aNPP00f&t0pFJbDF|GStte)#{$=k?NJJuw9T5 zRrC7OW2fqlm)-jbYz5Xb@IK!Y7#8xyB7n8C&;*1uD!Y z%!v?H=oW-z)qbU#+Y=IlD@+Sg_vx@#b|*O1Cu&arB>TpZFjt7ouH#3KT5}gx?FrmX z*sHb|=C`KG?^My0{ULhv>Qu;Udj5^7CveR!sxP9g#60lYIp|^q+e#!9Jbe|TN(tnc z@gnig@y^tz35itR^+sw7YUkA?Ww^^UHFJw<7LXR=mMfOe7Nn=}3j6SG8D0{o8Yi`l z0>FLO4!oJ=VLKHU$}$rpMdG8oMGEbymb(o#Z5}bZB<9E!de;Y~+XCgnv?(<@$vCLTE2hAhPm z9Kwo`Q0m}b6beF?Y?6wF6AR*8YPw048aK>bbA63_41Cp^z2v%M8V_Vq8h^uwLh!&T zDdKOHbe^tzalQe(yHt8&IhIqJeq~Bu6F#4Yt)e7RFaLlJ1J&A>ieh2fy}zJCz}%Q# zY*J-dwsmFx2XugX=eEq-5hH2Cf5V=_-Jkg0G^{F4dE5oln0}UX+mG!~L!8$-tQ4aY zI`kv0|IjIwOqnYy)wZN|M`9&ttqphoOL`KdBtFHy*lZs`8XV^oPCt8gmYCQQbLz{abifN z{ko2_TFQg1c&zNO{>!}w{s#Tk8^MZ}(pPUjcNqTgU4Xv0jcNW8<}+q5|D$$b(i6hk zwDK(H%Ha+QVr!ItG?~c@VQMJWy7T6-m4f_=(RP- zv05{;1fO*&4)!=1;QLru_CDH2R%}Yph zb2MMjXmL}V7)D+jN&Hr>)>>rw*4q5Va%`dG2ZixiX_D>X&6TPANI_h}Lnx`XUDX7q zXzGFNnh>JK_~p)rUwI&+iOjl|&{;vsNy+Hjno%9uC)nA)K!@GLL^0K4pPZdfLW0WK zW*CRLKj3F1u@BLG_Cwxx(Z9Nae&bFSC@VOcMqn-~eyS3dl&mI(y76@)&LWWDM2ix!4Lofx*5#As#|7bnX|24R6r)5^N-SLK6d zMAw2V4YRM_$0PG>okyD;Fb!w;r0L?1t?4%6CsR3fco`rr?l3=DOuZobW5NEl0FpUr z=3pLl%}6S@JmyEXrCIAwo0IiC{{)ejB~3MD5%;gC*t+ZkCcJx=vyfJCUDp`= z&e|r9Au5$N@f3Y3CsvBy7JLW%KYl?6{Vdww&>`tbi>S&q`(xrng3VWBb-H{CWdh}R zHSGqJxRgON#fizIx{Sr6&sJj(Nm6C3?g%>rV4z_$Ogu&X%ls)K6^>?G5yHwIP`1L3uC3BB04^54TFhb0-8*ijkQdRSr^*N7KZInq=~2&eb5@Eq#og^2K>%~Qx_ z?%xoAe{~3Gp69avs2`2-7QdS1r_x3kSO@vb!`ZnaZF?USh%DYRhl2N zDemIwJ@)F*(x4LWo%eAMK{JPM`hX6)AJBm$EtaIn z#SGGQ7Bn42*Vye+93#kB>@(*rfZRMDwv0Eqq8irL-$I8NVTTWqwssM~+qVPm7+Uz- zFX*tbH=B9}O{mOWT3ss`o1jukDb*cn`VZ(}sq5L!TY5P1nj!+}s84+~jFLs5oQAh7r)Nl(K3H9j4;$iA}9JsbEZ(ti8IE z`)84ZCQ%>^lz=IK6n!zYMxx=1#lF8b~6mqoWq=->cyI}2S^p6=-b5{4PSqJ1o=Cp05737FM1tw_KLk%o3T~j?`nlPmK z+>s!Ubeh>-S9(m%vF0P^Aw~n2di5Zq7Mz+7=)jb|{up0_@0PAfUG>P=6R9n%X6D6} zFCW{#tS>GTiR0;)#)b{nD_dU4{)xbKF)Sb%wos}Su{6qEG(HF`Li99*EpwlhoYC|I zf_f1I7To1vymRcTNK^MPe@K!L@;#HI3Nr1de=io-UJ*u&ikg_^MpC<7-XbH_Z|LAG zc9hhqHcEXwrObKDtovRm9;9Ip<=!G^bs<)BZ2=C?2#!Gc=3v*ahhg>^-z{}BY|FEGj#UKV#qCv1q`{*`9bfyTS-t}6 z^TKEZ))@LMmu{m?MY1>%45nq1U^@NddLz@e2#N5(mEKV)8q14Znqo+Wy)E#5%8^W} z!nKk!8$Ld`eI8Q(7xDq93I{>&U(n%cN8ED#8soZQJkzc|HTO4khzk9H4yxxL&_M$2 z7j!`QCv@QZ4INHCphLn3ba*rJ93IxtRO|I+RhPW(1u6f(~eZvjQ>m86z{}nhR8;Y&f~&r?iTgD5L%iot*BdNGcX;0|nf0TavZXcq3`ga}5LpVXj;Js6dts4e)WSSL70j#SC^3O+PhV4rxOf zH;_rGkT%9{$9QRHKlk#{Crbe}CZ%0S+rS2g_5}#Wb4DSld9N>Ctv1VL>yHrqlg?NuQIrq| zP@MpudsTf@Ax(I6&~-R_@M8`NfjXLo=Rc8?3K)!<&65jdsvc%q0XvtfJV3SvQ z7L(s;BTG#+LCV$IN)4AW?6RCr$GM4lhG=QT zGJHE<8t7G-2GmfQN%0vx&iqNa;rNxT7Z^3HdC(FIg({k{xs@gs^95=*I`uu>JF5Bu z_DLk1W<${##5?p300t1)8}d~0jl^=V&~V(>9I)kMu>*j{07_mMr%20~FVMrg-Z{Ti zd2}7rO}I^{&i;4clTGiqd;`6qg->kngdf}iaO4T-U)ZBq}1}x+z&lx8N;>b4>g~ zmA=4bCLP%A>qY@NAO-oQk{)=*zC~qJ%Inl|Zkm4qEJ1jr=m3Q=No*b&0BXmM{1P|l z{O-R=bmh6DWrOf&)dci`8JJmpVh0!MFg_jGvZ&*3D5pkKl2mSBp-MFe%v49l zvZ$dbRVF?{u$9SQh2lW&BH)ZcAXIP2LU~4VJgJWKWobjD^km}|fn!!P39UW4Lryv5(r8jqEj?I$qq-E=&<)~dpV9PzuE)4egfWs%WuUd zKnf6PHH(lemk{meXV5{Aau6yYEYLJSGyuw0Qi6+9l5vnDaNWTI;h5U3?+P4OW)%;*q*;ow}P6O{h7a zN%Qtd5kPlDfAMP9#94dsWm?O4fD&PKXWQc3EXN#amlT4ah#Vupz4jZ=QR7H(J#sOW9W43BBMYvQ$U+wt0n|EaTKk8Sg=BuPQF^#;u}abln8u(tE2 zs5%WZ#-|0 z-W4n{sW78GZHZlz?@1^pnU%KGcLD3fY7h6)ik2c;}yOH_Ky^7cu>+kV=p z_6YgSXl>rkk!*bNRoBF^9XV6ZGMk7o&n#5_ZI|&&SopeKru?*c{VFPqyzU!xU0|In zbFMKnvlmE6Ue)`HBAZ{POvSm07Mj?o%hMtFt!~@uPiP>Inm6mKk11Do@SKkfF@?KguK^sJ(n~5KN zB{LJL(YjCM5>I{4Bp{eOu_VbnAQZRBJf0v&fjlB@7ng35nJ;A6%$^Z@BKeV8`pu0R zHsp56G!|S<5~!${*3DEr=W+>7O~#A6IQAr6A3OkCY+PYSWdlY5#Qm0+@ zGOgT`Ye_{A3Lte6{Wk9>3F4H(qmC078j1BDeLB>3mEyY^HI(h$8u(*1yBf%LY0pb%wL^fnCS@5fm@IdedEJ{O{j(LYs0x^WaEJ3u z&B_n%Afmqknq$=FqFbXC8hP0`25KotBU*tqZDjtAn zGyKVwr(qNM49Y!_ld@*YvWBHONErJ0&>H~Py4d4yH1j|EK0ahpW=6(;hHSI{+2Qb4 zLG@oY`2QI^beZ+gL47;-g1~MOuti*?1{QW6%3f1h2D7nXXQZl@O%qu63c=(^>I6M} z=e<^cT5WSiVmOeFs2_mhiPBHo=|<7*q>m~wv+3Gvqijf*kW<_AN@tY9ek@7>y-5tV z-$RD6rh$3L0r=uwDFDONz2$X=o9iWd2u7L*MLJi%IXPmF8e49}KMBI)^x@c8$kp+V zSV@69npTedAP;H3$b+!Lm}p60zjz(Q(Cdt|*~Q(8jji%_xpq)<EG)I~zL< zD-#Rd#{`Oh@BR4uqyF#f{RLY7v-jg~7WyY0!K3{jn?C-i^MC33_pk@8wD%eb4xV3}?|M6*!8w~4w4Xgm?>K`)+A6~26gvZpIztd80cN6$g3&Mvxh3`isXB<>o%AG64$Au4~#f{MFMhOyp zd51wPh;|xG7aHYgN0-E0hi*QFGd+h>KF%H)psc? zylo;-AQjtpJgI6wMPpW3>7*i3iCM$~9(#h@aky<2bHh{h5_D0cngQ&aD5n85O636l zE}a$x2>!B9T1KWKgXqG@MO{5^^Tb2mn#L=Wm+_u+B>G9vKL_8~;t?1xagKl+~ zZs}bx0(tJHCgR7ooX^B<&4Nb(M|{)kv@(7D0 zns;pWzR{l`fzY3xD%Ukk6!kL7vbTk$Dts$6KnWVR&lNdMTZy08-Mh9*Oov2rT620A z7pe;_WG*#>n$^4xFQ8u2epOm}83sozNfm%r*5+wy-yh$54yoPcBn=V=VsA$ew@e&; z6_dAJT7Nv-7Hi5g6U#PV4eKYap*c_Hg%`FLWn3Qo)KsYn{j(Uw3XlzqU~?*WNK z+oT}2Q4S8%ZS$1Y>{_j&WN_lzt`&?(hrX0^%e5fJ&z$6MpVA5Lu4ZYtxIcT~5IpFt z2TEB>J2T31m!*+4^B2X@nfk1Nc(CZ|Ty3hYOT1--ab9Nz5N*7ldVU{hzi#t{7~!#lB!c}?w&a%fTKdc?~xH|iRrsYLcv#z zS(xv8f?W0Z&cXS3ZzmbBR?XfMIJ#>;U~xA0V%UQ^=wskEgQVL$(hh4;9Nh$*0Sdl^ zr(|Z_9qUR`~8TazKZy<3{8~MAJ?<-@pB7_@pDs2 zYpH2ewK>vKYk zj;SX(*@wqvog%93J-KdM{QGG{^b;!=vF!nsJfihyB$r!+d}S**)(|jKal;K9*j0lY zGA?eNBVW#D620fI{lkIY?Kb9DaGT5xzT9tj?Z*^uNEO6P*j-y~u(@0oGZx>sg%2ar(Hsj56^pPJ=3{pr*AF?bgyx|E`@~QZifQl11e)HK@NAo*o>a1qFqL zz`kl2fn#o&x7H=rCNU zFh}j^t9!}H#Juyh+yUYw`&22+b5yZ%XSmP2WfE^W-aiL^EJKL=Kg_)aP$lWQrCqpF zNa5~KxH}Z??(XjH?(XjH?ohb9yL%PxE<>HZeNOke-S^J?^T*5t5wL@uY{)lrCz0!0 zYdv=4?`nx|SK9BLp`g%m9)MX;a+G&1uAJ~!L*EFgrQjrz1I4kY`QoMpfoPq7+>)vd z1G;nF9BhUA$$Ok|aQhFXivteaVKo3d3=d!K!>8Iocqqd?RpYiRrrK2?M7%;U+)d88U*6>FaY0KFkuXETYw$i1|JHHV1Sc8 zoT@uhdq+KEq6>}Y+dvvn<0q~jj+R_E-U)vn;Yh;fYmS#ggm#f6$#o<8lIQT!sWppK z!l8JD!g4x;1UDj6sSqxIqEwpvt^8{jTzf8sfBj8$XN7AT`0vv^EmavlEw8 zmJNJ1I*)T^Ay3cACn3-0I*-Aui8Z&iU0*~y{XH6GT3KQlIkYuF4jRJ=s$1O8EaR@F zMVUt>MXpEB&>?e!r5Ri^z~}*Ncfz9supTqtPA@}4wJq+3SzT>v4i9!ma?h-^WuZ>O zivwN|-eWunyuNG&lyzDb9qK@225H_DK|yW>nTBcNYxgh|7@gHOpAS@#H`nyjZG=ot zT((}`ER*eE=v9)gq%*loiPb7o+2$5(T`MsqbyRT=uPx#fx14m`g}Jl~K3&m3vcRH; z&G{cmc+{Y19=bfhP(!?G# zn&UF9TZ1+&E(l?K^{HCApYkSST@MdAv`%==8i6sLABN=iNIiH;Mo{Aud~3PNQW^C1 zYcd$Hg>vrT$y8(r{HF0qScV&evC+l!F^)6QBQ4pB@o}k{)$3UeNr%(wZTIMqKeLc< z@lN-_A`a(+J1}kqrxc~PRv2)kXW96m@P0Qe2A)7AA=aK?tl3;*yfDK9_t~H4G$991f~Z+)K?ZCHIfuPr$P0Q5s|ps^B?`cU@dd0BPHSdju+> zv~u*8p+-}S1}luposenS*OR1|W-l+N0)AlIk>c+>@z4V|oiG}CyKdRs1ZZOX)+l!q zcJGh2fZT1{gf6kxS$XS$INn)3Qd8L1IuH~y?YV9sHWt;0W|$6KTAmZQ^H+k+01JFz z3*%@jhK2;%^$q3ih&E2S8BV>Ndm!$am42wEjH)*PETCmE_qOUq7?C|d&5Iv^`8RuO z#O`jsBR+KZV@XW{kkNC=%|TbvQ*O_`nQ=ZODg7H_zTfSJs+qij=oY-bOTQfoyW7oCvQ`46AHxO8GqEP^ zK5IMcBI1&54NT$zkR{pm&{v_u@Ba4q0pFyD8QXJJ8pSGvQUk%nqD6PxcQox_GRej4B1KGE+u@l~bO!fMh z9?7@^Q%els2DaRv31KS8rtUE}F*qdD7sC;$(*E2&k65%7`32)R(VnLm1wz)5OqCtu z=l3S+@NZ*$2ybKO(R!(K;m)1Z5h+DHb{HRsd5rmBe^W1D9kH~;EG$8MEy6t=cV}oV z!UJA}B+v?%TNw0a(C()|P|Fd=LiDU$M%55sU*RRaG9GDy$|#1|JotOSFONNxKk5PmX5yZm19t%hh;YXOsN-mwN;O7s%Pb0GT>!45khHzQ60PWc|tPe|HRjoz3ht$ zC9s9S>DR{=Rt;-pk3Uw25R<197fw7OC*`q7oBV$wpT#+ax;PWK!^}f^k~CUtJNc%I}=HB491|`<>>Lo zxBRFmX4f_Yw(!BGkrm4?PSEpGc%VKg0#VGM*39bVHV#-0BGz*j6zGTj$#!#CShbBM zb`ETJY)^HU=TTy*w^5!quuot{wIOJ71G!}-LuKs6sS#!S50OaX^PYw117&N?tv-ru z@Oe1MyC*~z5gI-N*BH4wOWR>onaB5LE|3|hQOvUN?7E~Ls``ZKNm-c?S-jGjt`Zgo zF!gjeTal(he1v`@G!!|rq(m!lArG^jLW<+k^$JSJ(Yy8nd@%>IgzvM$7@4Xob2AG| zTY4*I>K>~FMeQB4OID`X0*KUCeSSqAA21~iG-K8HNZ(3|;KstwG|WdX`r{XM3Q=wz zgEibFG$iOzlMq98JJZfW_zflWxMDsJ+4Jb%+$QNoJkX zW@qyEDO5$*>4naYgh|3yygOG8o%m}x#=Sz*S&dLHQSWck`wQeq(~#(6r84jPv|BBaNsEI>~OitJ_yU`-6x;{=`a`q1|GBvpixlm+|Sb26Xfuc zz}8EIt<315v3Y=fgZcWSjkEyTi0rICzLrc3Edv`SyXw1y(px|>HpZllP#0N{-`E?) z`au1*;@qWqgJJnZGkZ}-#Jx=l_TjF{WV!ZJ>9j2pQ_RXQ%sk}KBp8FpwEe9`Z%1k{ z1uIQE{9a1gl$@W+&0`lWuN_G@10e?X@xj#BFF>SKRUHxoCw@f^@W(?D zwkQsb#6lR#=)n&Ixril*)1aw$()uGiqyCIN^(NHe4V_#)%sT#7XHoV#_GU+4=Dt<- zSuC5FSd1!{tR%4t*jKs8CqVtoQyjZ;-)NPnKnWix7o!H|jx7_K^fXIj5*nsTz}6~! z7=S(0aMG!XtinO_Qr;y^d!7*#=}8W6@`+RIoN$anP`##)BF*%2{;@N-+=g5OIUf z`30DOyUdK&3kBVAoUWv|g3CAVxs#&P;YG{V+d9TW*btFx+w4viVsp@EH}6ZI7((xd zVIwoH*MQ`)tx1$5OUM%>Sf2QFpNuub;xCOolAa*;5a|3hol3@m4SO~};9+|--x#ay zg1*7~!tGznk^JO1BfVnLf!GA>!tpjXTnAnI4thNMX-zU;9R^ps>=~$m{gND* zdHv*a-QI44+B4+!*y>w#BUtym7Ekp7dX&{TBSsZg)0r97{ewaoeEErBb?)fC+H}Ky z+3r>4b$Qj~wHMYgk&d*XF3jgKN^mZ!?;t!_pVK38MnsU(on;@W*Pektc=U!t2jFE8 z+wDNeN)Ohi$`95Nfe#HN1Gmxt5LvCV$IWun#K8M_OSg$@_bE^QQAO>ut^phQLD^x4`Z&?gt+#S?NQ zyh9#9@Ht0~Wq*y_aGxecz!Wyy+c_Whi#YV|C95@5rN~I&lk>g{2m8C|T#~f&*Xo}? zdvdFvzCeo4qhcTCo#yq%(!0N~ejU8X8=Rt;#5C}jw*#fT+5nX#JFi#0z4d!$HFyuK z2hoJfFb^RiPVmPeY3g?5c!FHE#kDk~AG|+23~Cw#A=)rfbj-#~V@B9dgz>G-p{_VP zk({fniy~dEw(M^OF|*3b{=Ry@>7nj~lQJjdPQSMCwW)39H2n;j&(bVlm0`Ss+Uc5y zIljdRCGIgFVr@#Cs_0#t|3I&Aj4(+%Up|gzNdzecz_B{ov>Dh8alxntGPs0S9Eqa; z7mt32;}w8Qfo4@|tk3s4qR;>Ow$J-|5iWIs0-U;g#s5}Fd2{dyO_5V}tT`6VQF}i` zld>-$lw?_qI3z*gPC9`_peE_7u1*&hE$#uz(mo)(r+DFZ<17uDBp-lxd|8_CWIUoA zOEKOIzk}{%-#Q|QjIFYSVVHsyjj9We5lD|p*zGRV&G)8nduES|&TnoP=+?R)fexA^ z6b+Ed?6CV72&O8X^l{4lm2}@x-om#i#oeYdIt!TLWH1C+^@*&NYI*U zTVsQSp#(Bx77^pC{_#f6LOi{;odMK)@+#TFUaS~36>@_vb7@emzd^D7oLW4ergoId zK;X$p&qO^x0Ag+Z1x$gZ8uVz1-XuEjo0Jxn*s5XMFh%gT1~$QLjiNS;E@iK3=zOR` z*N7g`5mJpj1sXfbGt1rcQp!?L&1}uRZqQYYkS7v$MC3t(E^%Tv9YMAFbEmw?P0m~nf>(|=yP z{B7yyKjLRhjLiQmw4Hkr%zKBqEbdZ&?WWVCJsw~i`&`SmmKHMVP~|y8R-zsREyd0 zR4kH`@kq%cgR7KTuGrs6Nn17-g6$4Z@KZrUKSNgjV$;)&g5Usu`eN0soxBF#R%JI? z`F8aBdEy7Y@N}d0lx#~3z3hf}j0cM_>^;)&!w~ zBgp7xYCaP$VF@IXEy}N)z|(V4gbA_Gmm!bw&4!gB^R)D6J3!ZXCKP7oy841UdIPrsHF z|GmBLAB&E^(pbNx+r(v*goNdP?;QN+lfS3i{wFa9jLdYnlnk`AxU{UStp9f~2fr<1 z{&888@sF#T{~E==t-Aho#O<%f^0yH;+P?-I(0(x4e{atF*Q)J*8FKrzPW*QtbhJ!V z%&bf-%#677AM4Ca3@pF!2EVrcC&A$Fe)NC$`wX-nz5n#AG)%uH`gb^c#t+oNuhRby zRska&9Th9X2e;q@89@8-kcEZr1Gn;r4gQUE|BszuV*FqdeC*%{h~NX{z)JtIpNuRY znZIAZ_SeZy&%jK@^noj2#QkrX_rLA$e}y6V?Mn8?vxS!Cck9cau5G_2{6ANI$jnUl z@8yRc)^dvp-1qGyDv3m5Z_%CDTO^q<1Cu=7hy*@>pI2?W@%xwz1$*qjE=OsnMK=e; zGC*kinuMQNrkM+`=GTonI>nBii8t5Q@k>J7<}(0^aHKJ{rI`OPS7%zycmHxVe~Mgv zw?;n9M7YlItn|M1albja*nYldH`#u^{OuDi#uE>)(c+oLNbio)WVRtf7u$PfhXwlr zV@Ep-t`M)wXk*(4|ETe{gRK4?yrjm>Y)<&D{Q}OL+}Bov`75LyWmWbIP&|37(@E>5 zJ3^-5Bg;r)+xcmzE_d*i$cY7e?)`m=rwMn^6$UA}$L7+?{bFYtbKsSM{UVRHUID>2j}b`sO4 zWU6oQJ8{yn-ODgZ{fxt(V}lH>O?&5Z_lnkV3N^)DAQ6Yd3Oj+?s+n9gq5ZI4Cnht= zTx3cE+#kRmNKk!WtvBcF(87o$WJSXZ=GkXo9rLU7-q^RLnwl;SN0}ifd-6=)RKlSR zFQs_y>t8%jC50Tl@1qEqcVE4lL|#|{&tnkzAHq*pAAm0G9?%Z*(3tqjeun>qKH|OL z%tx(sDSU+zY8-jq=5qd&EBrj$_{t&FWx?+Jj(UXM%Yox_9>=W1c>)Ne#JE28H9b)C zMkDI_ri<)>mdlLVeDHM)@hh&B{~l4g4#vUj`(_7}#szS=6js&~c$Q_CrL*t@=K`3w zhAaL@lL#N;KsDBa(XBXT!2Q<4n6wGt)tHd-_?FC*5DTai&@tlD``##6tba+R8GGfa zBv(3z_EW`A?gGRakm+dAZS18W_UA7gy)8ntYLlLq=FF?(j&d z=(FN@5u9VjVqjwmT3tO`vmSiXzHV*MGBGXI%B#|JX!F{K%yM#Bw`f|RQfuw2dq_mD zaFvSKPpkI zQF}3P6?^y+a_%*qF3XDx&yJ9*?MomHb96GjCAo!hzBDS>stP34f#Y&mR<5UNfexR(H zOjDSCyK)%QUPbb+-sHHJ<2(|ua$8?KY;@HGSO}H?$#(#iPm(*_kuAMtsON+5hl(ST znd`rdDI*MDZZ8ve>7Z5O_J6Pw4nR{AAbEf0xPGt`5US9kU`W!Z(5B4;P5GPri%|uF zSb`IL&K%iDmTJ)y9!T?rn|d1CVt`gTh^8v~qzyaZ`5R&^o*Z2B+|2wFAVP{Gj7KfO zId`y=Ot|g2NSyT`6-Vcqls*56;DY&Rn`~S zcvS#UBh+q`EwjnBuDk>>iFIt!ideuUn-rD|!7PmQv704gKRll+iz za!6JNgbD$w6wv&t3)rdq=Zg^6dfIfw0xYIFoiPLx=%Doy4O3 z3h{G}*234vazvsl;42AJIYMMJ*@Qx6LSzZTXLg1Dl7Ss2wQ_1WnTKJLVlNxvLWy3T zqj38;q~_uBjnoz2`s@Zj3#qsnEC~(dGKD53$HM@6E=sSFbgthJ3hDjnC^SqM8^X0S zeU(YT8<2DkuFJIj!b|}dnD&>c``(9o1d>#BarlAcK%5w}5Iv^iD9~;9slz_>x zS;kRJcX4iqzfmcxk@IW%fpKKgb0$e@FS}EeAN&*GT-LK7tY4Es5+w>DSYT$J(M{!- z_2~7{j1Q+MbTm%x&E@f{+V=5_sMzLQg2V~M@L9Z&UGhQgbMk@amiOfd3?7IT4o5{r zx(uKw^Qw6%Kl&phT%u7K;_$FALE8sL;Q+sA6rDC<<=E_Wvg*RK{NlBD+wudWptK7a zzj{&gQePi5qjEL!Q?4(wA(C?6_1PYoo-1qIvig)ka1jM%2y&U zfjFZuGb@^^(PRMnoV^M?k^cKAr4GrU=dvPs=ctny9PM*NpSeK=x+V0*;jMvjJon!D zC{}>@?z^erZ~lS89xR$ZcT>r}IDG2lG?a35JUW2D5ECr;%FUe|g+MoUWqnBMXQFUh zY+`~!+2nZn_7ih{$QNKW@23t#`SAji&SJ%N`S!2sgKC&dPYz`wO+S`fC90up(`n|x zO*IKWEdvW$^hth5^QOB;z(1pmj%`Qsa5!(|{r%DmvD;1TjORdE!U?#FGa1F5xIf$s zlL%aSer(IcJBLULBa)-EByE)@%6dvGUNvsjV55YZBA{x9RVGlB(2Wj5@%~l-ckc?b z#;5f6Z`%!3tS?!<=G$4>Lfp4F2Cr`CTn`rsr%F+*h2n;c~CNv5_8dZ%-{zro<`rzCYi>!xq@p~hSf7Sr`lrYiOx5S9>32>!=Jh2pTe~8 zJD<7yu{^+?Hp8l4Gx1%XIiEXZ8jsTgDp^-u;m?kEmR2-KtxmZfZfj>U1U@sww{`~9 z&w#B!5^ioc>}T%ISasTi=k5zIrHfe}B{s}GiZn_s~zsyVYNM;w;YzsU#I^F%P zR{&j7;%0gkL)Jq8=~yXh!CBVh5_4g*5`}Wgz0*Z&?&jVM`T6GFK)xv{>G|SdCQMUK zA?xittkeTz6}aNGJe!PR@C<_h5IL5@c(GEofm}#pMacMZc@jjztEhR-2^0jA!_{$E zmP=$~x#imZNv*%X2#A2YUbl&R{O4KQQeVI}D z3aX003jr!Fc1g??Bo1~~3?~bT3I`jmsnyohwDC1K?ytr|_l0y9g#=krmoq(IH*Kyg zSp0>w2*8AN6}fCDF21{T@X?Bd!6-N2h3ma@<(@8+o4A3=j%v(?lpSN@uHeoPe1NlH zp@mnhz}}3${XoNo0t^1WrXYK0yM8dzIlo`*u$9BqgIj8Y$c ztBm83k4A0?q7ss@L&P;if!Lwz$;{PfAXIFW!bY%>&CCMpfO|W1s8br z*aV=Ep}8h=!L-}IxPIC|HQKPr-hapcMFF)z9<}e@oIL^ba(*S!Yr^6ToJg3A9w&Z~ zChnVGjNc}N*^0Vp_2-Va7M<2`+RZeK0jX<)3VFrj28>ln*d@9v3e7MjO7N+pZ}AJj z_z`Q(E+!NZ(-Zs4$Yk z!vN_LII(=l(r5GQ{i@cBIg~UhlLPw2mg7dL>1^Ff@SnL2sa*`_2S@Bc0)k!pv zg!NM^?EQ3g;f)`?Y@nzE7R$}mTA7HIq2Lrq$IVCbqABbnc`-?e$52pp9%F9bOsE$F zBT>8}TI#nT=I|?d@!9m|SMp+U$FlUOq&ezw;xx{waU)M+65A4b?v=m303W!}w!++TRL-e-Xp@i~aqVp!eU$ zF#a*_{}jWZrTHyC^~dA#$3O5t>fLB*|LcCYU$Xl@d#h;Z82%i?V72%qL4Cw92vrjG zIaLxVpLJgLg1|36pAth#-YMc%PJWL|W%eAorX6qEbpkJi-< z?|x3l5xkI^EnJrjPW{P>CK==+W90T(a=YwluDlj9XmIE)xGP}{7}r3zs3&1FUj z@bW|0In*s&kD|2_OZYb$XK+u!5c9bf*K&vce7tzdxS!=K;4oj|hnQ8L2?VFV%Q+^p zvKG;AcEsJo{2Y;?Z7!QvF#tvTYUEdhsqWI1gs$c8C zNbRFF?R6BlL!=kj>uwJ?N5#BR${O*6IR%4lVlH403LLu?Su+VB@^sHKbfPYa&1HY! zj+GGfBd25AxXH6*AK41!;}k)j8VfJSUG89=JKvjqu^^=&d2ec6-&vi~YSPkqlU40` zHMfaZx1}bfKyv4;wyv`c&R1Mz4W_WQCUiwNj)YJdvJ7=H*Y>&uS-JgmR;1cqX%o8E zt1I%6!;5o5DX3$w>30GIf=BB1m)F#&GXiR&O)eXnd;zv+&6jO1I*Y=4Fs$B!y11N0 z-?Q&Q2f$6fnO2w{FRIu7gu3)YR+PV@%u%BHRAJHMI?E>kYwTosT0SDkjeXyeON3Cyzh8=6O+%nvhGAWXVorbAhMdipGHMeL?2xa!HMlUjk?xQZP*1;<; zsaS|jS8Tk z)H)rhqZi&0yrAN;GTydOeI7>KwZ{S`VdiG+W7Zw_nVVXy!zG`+wSMDt2kx917NS2n z+){bKP7kbTlBeNiirrdNGjk`9$WI)@59P`f0_4ZScn*Pn9^8WzhNb02nCK<32HhCA zPYQmA?eO;Um9olBj#SGFqacKQMCkAhV;*`1#KGO?_xJMCT!LDy{%SsO>B7RU8B|H4 z6(qoR1@}FCb3tgU2KpLoDi)11V6(@IzXg*HMsItI*vBtu&S=Y2uU zSL%nNxSX0Ta!MFBmRS#(HR|U&=+;<#r@YCmZcd1Yv%t+flEH?();--EKwF{9Ik=WI z3VcNAGpq+CXPE7dy+{4?gh=wBkDyE%OmCo5Kod0Ui`~QcGE9{ogHvu5w>SL5_56in z+efqP>POCd{f)XQ;{wu?GE3w(-xE55W~O9~)CWAlK(5RTU{k z3Y)JHU2APG3QiLx=^8RzWn;{C1NIIpb7W59capNAoVLS#I}oxmIc>O`35R12!FQNx z^RX5abZ9VulkmxsYjYYHu#K}lE2Iry9YRUvj(1`NxFB0%g=~h9I)=i-zc3bmNykfF zgp>4EM9LAob&ctdzYjg+WO0ch1S{F<=QhwO50Es0cKdRIOrDqF;gb{rfGZPQ;1-+;Ib3RuwFTT7BJ~&3N{SGO5$lBP@t}`vGOGZkVh`P8k zl-V)q9#Pj500;^qMoG`Hu(zblG#tE8E7OHctWzce2~nkh@l}IZwTV%w<&K}WSQ~=5 z313trf7O#c;i*g%X3}nijt~f}LmuBvM8UQ{QJZ3kMp^{$6h!n;BW`~WcyTU0Pq`DK zN0*A96A{Z$ZO*f8N(;}zYDptWC{O|HYar&K!o;_uy^TwXE|WY0BiDE)Uv#q)G7JAT z!3NX-PFvll;fDrirQ}>b zSf*eL+6~%pLhB+lPv1C8ch5_!RJR8P^f4ndablp<|LC5+>(gIZU(1|mU)q>{x$hG& zZU52zL)+cDkc)PAB+;0izJ+t35zRbl*KOfQZN1FuBS`?;xL7kmtb5mMo8FF(X|CX_ zgwhwW>wT}uy||kb@HGuJ3M?h02DzTgf{w0oWpctlAECY|(Ny9ID)k0+D^#_dDi+TG zSh3n99I+ydpW|n99x0=X6Ncee+jJ8K7n97du9|!s!)UX75!>1s`RAFo4ck`GEd_X( zLFfZReGzmvo6+%iGR7$gs;Lvc3o>vPqBz=?6j!9FF^dhEwqixr>Q!?>yO*v4l~F>w zH9qoAb@*YT96AjH?0zyT+>gLNN$!N}J+1shrxk5cKvVYBJoJLuk}CDLOOn*|e(K6p zIF}Me5zu{|wI+8wNY@$A+o-ccMgf~V?U6&*v%Gu9iln%DXe2fsf%uS45UVi7Yn!euXo1Y=S@%@Z7dQy%G8)T|f|B?XO z;U4K=L%L0?5Ubv79^}9Xmg*h%-pzx1BzwI2^7-s*RnjW5Yc0h6g84^WT3dR8u z75xrjW<;$5g%*Hn_7P%=RJG`UfWTV;uRsF2X)j5^H-2O+>XJ~@r&p2OwI})#t zOyFcl2@y`I7fg0MZD_f>rT>mW|5DQ)qc~<+D$$EIl+ax6shZk@My(){BGm04Y=y;dbQ?H4okT7sAQ*im?<#-87aM?RE8Vf2}?($iV zNQ1BU!PEp{A;w~c;KZ#bCe@$UHHnyErp;UcwbPn$P~cNb6PbHFfx1OKacr{x%Y_XZ zH6L4op1h!b@E9C8{G4F8a5o2_$>p$SO44?AcmD6W|4CYm?MuP2<{*Xi!XB ze+D6p1mx(%ghGd7hIS(FQ>{@ZW0h2uI$I`5Q8+=i(0D}PF7d78gr(s4E|my27jJu# zvDEm)AA%5+7CPrwWn$D?@LYx<>4kji#et0WPRwlI0VWYDYhoq!dHRl#62dm(cksy< z8FFi5@8HY)ERu;KsDE0Zb`~ixP|r2X<`UBJy;m$+m+RWCx}80r`b^Hg?*m=LO#*T2 zoPXZjT(NWMRgzkYTQ-wk2J5PsZC-o)NoXIJ{HSA=QsKUfY)gTU(p}K6_eDji@O#}(UN}m1Ngj0T z&`H(VXsPeaO;V%IK_vkrMGe=8h3*VCDY_4*oWDO{R%Nn}maM20jdDLL)ShUuG{C#9 zPYw|q_e{h{=WcBamcLMtz)!g^Ji0%ds~)L*6HC? zGrg*0r&H*A)zfg=>z)*fL~A<=6k+GvM9p(l9Mepx#O^$IAIR-2OVwHT{pLV~se6)& zhdG!`TNBg~?8$0l+T3ZIv&P|?p;Jz$3yO?e&H2FF1C`%O-DvUInt^NqyT%zSl~Muu zM_GyHc5PzYSe^O+9m=^~x46Ssdbc!d1Rv_P@v>+6Q+CXM2;P)T0NbUP}E(|T_X8Q z2TVxI>bgFZN<(#zgmj!Vlr%&%tTbfO=+QukK(bv})*!Y(ciybp&=&yU4Dt-{sTjV} zaxe}%ioBzy#sTQ)Tl<2lm4U@AItDB}Lx}MCvXv-M%7{p=HHM7aoG$$%7oW)VPq2To z2x1zOuGCTImiE^Nc!;!xeNR5NB) znt!Thw7eYJ zz~6&Ew~IO;Hu1&2I=EYAZYf_is`3^YUm}nRv%@1w%=%2V>gmsSu9SQgjM${3v2hj6 zkcb0BoNV3tlFXv?rvA`)Wig;ko49;W<|4*5*vnOkM|ikz*l){ZM!`98lrdR)Pea$=y&NMw3l$9uBkO+{+WvjB4>C2?FKgI`wd~hZANn{I{fDFMAGWaH zw*BRZqh+F@Wn}u#?eMh!xElP)>qYy!-2SKQ!++gp^hcqMo`K=t3QtbHn`mS9H!!Ks zyG^dt-Jfu#Y7mTvC&n-|Uer6OHCA_((e(7NBn$M#E}`hvpzHY}@d`r&rx8*>tc9U0 zWAlOgF5^U?OD$h8T8tRW}bez9lzdg}$t}AG?D>!AjPS{Ci znEJ!>f-?9k=WE#a2fTK|a$ITnD>mTur8`YCDw%XUj8(z0oqPJnuTr0BdG#Z$zZHOM zRQB+!A3s-iI_o`CYX#7AL`;piQ9aHC9KYGrT0-ZPRr%H?ie-0AlQs0RnG4m3RW={B zvOgD~=)8iLf4;Y9{=rLlvH;gwh_Z0rxzls}6tEkKt;`K^topu{^mNa(aj)QC>42~Q zimq$@36HCbptvIV$#FeKr6H|*l9rnv5FrKS4mXpWo*PpqhKDf41J#Ad#|xm5KDgh6 zaCh_)M0lJut3IkJt0LX}9MejOXo$Q>dpi35Tu@!*WqyOpUqIODUMK&6u0^~fhg~;p zX{Wji05)T0XeQLv|uupk2PJ-)|~3a+rjMz`@;Fs zz1ruc2wCtpPGCvl|~2IG}5uIj258I!bVLTt2plC1|pI@P1Zsg#8^JFqc04qW}|(9&}{)hxS#IE}5d z2dmT=D6>fc0&PHb&Aq9^aH4KNl#5y@-YlfDmP`g?BtZq;Cvg=K)4eOoo z+@a|U@Dz67i;bNal-+pG5|TpJt?AdQ4##pZ#_2Nj%nT-wNJU0R5azK9;|V$Ka@Y(P z_wi7O=@rnX`x)6JQ_uy4C_~)z(Jf2fUB~#n8rD^>4YEoQI;4InQ}7;*MnX(~@wX&Y ziG)fK-_2Tc=`7HFH@F;zOrBeOg?Ts>Iw@$9%wB@!( zx#0Aot87JKy}f*pnTVzHQhTg`lNWT!Yf{SO*t}MpS%V=a#!_zg0IuR_)2`0VJa)PR zeAX-y6wzuD6hb==JFdxJU_>*^x-d&mldMut-e5mnS!p-1Y5_^PhIN3P>9$dN7-M4l z#fBz`L}+zorPZkF3E-+GBA8FI@sePl;2o_@Z$#PYHt^e$s`V6h6JfG5u1+u%MB02w z4(^@F5+$D`65b&VIr?2)wKWj2Nl&x$g!#3|Ea(-$$zj)=v!7 zPNC!na@hD__ZE4FEUN=f_J`ST*_IFI<*S&fG16b|V2|z?LCaBf1F-^M1DRpI>*SqK@7}iNLbYVf@cb-7Ah(EbS9;Fu^~}dZJ2Gov z9?jp_z?HaXKo+*`lK*y9JT_$T(&JeG`gvYH6ZAx2=2cP1Zm)#WbO4HlhQ_%zNVwHX z{k5ws{X|CUX+W5*7%;jiX$6TcLMN@LnKiA(TprfqpziCqzC18S{4{+MjLRBOg-hvU zHa0ZLpx@NDJ2Zx-7QzG)ZjMhSnDof=S9{Z(k+}c}>szFvsd+zwQX0AV(eX^UT2=1w z+P3ITnMlHx=$_j+J#ek2d^sYBe4nPmG2v0X+ed%euo(A>@I%3WA>u7E9Z9sVm}A>Lb$>I ztX(#b<`eWOke8gBXlAN@EC(1t|^BS^roBz_=GJS&IphYV^W z^;rSo+(6JSNQm32hi4IPCBzXgQJx1Zm5*GeC6}KncTjj%fnQ>c2oT~3DX1?4pJZdu zBW<;}W=|G>4Skv#qEsn;8*YtcxM$rr5YGuJq+cSGA~Dny?{+ABW^J1wD5sJ$$kmlD zqP|jE4iZ%J8NFd}HOw``s^+^A)ECZ=s;h6b;-&`4>(dl6NPLR-g|g%I&L$R(%hb;M z3XxE2W*mnlWghs320ZaZi07)L<~nEaOlfC|XW*VeE~4v)&T%e-PnEW@kDKMa8{~JQ zuhvd#dno-%ku9b-z_P6VFO7l{{P7oVvn z_OIT3doMtvPHd3z9^v+|Vw-M3?(kg(4xedV2zHKR+4rec*PZ>`;@r~G9J1`$f<6M^ zfkedA7I7O%$^tV)&4?yR_VNh%=W6PhE4+K56|<)oL#vhmO1PUx2g@768S_k@D7Y~-TT3|wN-xLplcR|E30hbf zd;jQ!2ha&b`$3FeGt(h5$`#DtoJy<8@bgxHehh&pS6-%^5K!bLfziuA&0$@jwsf-QeAiI?8H5>MHa; zH?g3Jc2=wNs5Gq7&hn9R;M_gDf3btxLZMuuGvLC3-n$oI%aiQoETvewj2&~#7Vo5n zh_&Y^))aM>5D=QF)e=#hSUC^^itsr4QQzM@a4gFn120gA#N=8BiWNRSb0)%GsJyy# z^%>LH8i{CW^JgN_FwC%o2vZ7z0wPrTrFG?v=43LRWU5Zg)gZJ*Vv5ZE)F|41v~4k7 zR*G*3DXRuxML3db-e?rP8WihaTItYZ}> zZ_CVfFK59$Y@Au#KnIT=gBiiB@jTkPD>=zggR=xBY!RPn?LZ=|%UL*a+{zd~DJvLS zcmq>Wp|&JeY>m3S_|n`sAYBP|FFL?6Aad=ts(P4tjWtX8HlBsDUUZ>xTfNL_@PJwS z&%sV{5Ul*hb~yk5Yz`(GWf>hkKRwRuE^u-({Cz9EqKi#BwCIy=fH|O<`oRiUo|^ER zlEC;93f4Q#i9-J9Y+|?^LEc$)N`BRJTvl9)kJcT@sMYno&@aJQ)3Vi!h*X8${&|$_}@ZwQvBv~>2q^ps>(T=9Ds2-Nj zbeH=alOaxQ85gRcS~|liPlS!Iddw0Jv>|aLD}dQ$h(_}Hd3;O^^ri>^*3 zQKw!W?K!89+T@fXRS%FRaCG4YP@2TK1-Mxh+vAU|9u4@7D z+*+o@A~WKQKK@;wXN$2YS{SkId4~x||D1uYz4A?}as=^WGK*ZBs5YAg1(nQVF@`)- zktN{h{Q-^gnDyYJV|#|r>RA;|snHSC#oEXT$NB(TUEXbT2XkcV7_pokJ;#F_L4E-P zXV79EYG@p}YA7jo7 zD8)32@RtzqP9e(aoO*XACM3vn!!_Y_nRtfs&(4KC%PR>|t}8M>_a17n4a`4TV|#P! zk>5%G4*)(u!N2g%RRCZQYr@b3#^7C5nk*Pj^9$1hQQpzo*3!lZvSg4LAyT8&Fhapt z)Q~Oc2q3$|8a4-TO>{b644^itS;K{9qdlMmu%!kT(}eZ_!EC4mpf@bwpQ){_z2z2a zPoV*@sSwdNB|B&vpomnDj5NTVW(g@&XtLi@Y}Mf2iP|)gkCM@4vWV8vaJzk~u5d7TUPay4CLP`bJ`V3ybQN)yy@u*DPgFt&kPY-Kue=)+MVqv|gR) zU%idn#^2_-UENl=d&X^Zw=KGJ$=5w!SGO-Ia|ihm&xrbJ^Q((SS07n@boGhVexK%Q zQVPzN@M``EsiURjM{c$y(&0zm*>;;^wU|vtgDg87PFVu+w#Nw)*@4T(38{0MN+boS zGM0A4pNYQ^XX9o3$i7vXp$Lw^uDY4*Yu^!hCh|grjZ}}JDI5}keRXxX19#|9+Cf|j z9d!itI=YS}Fuezm@OCp>e0H90h3G&QfbY3gWE)m z3pcH!yUaYVJGPf_sUgpHu}l|>5v#BaTQvr03TI`><%!B5nFHh=*-Ot`{Vcu?MX+Hv z7>b!sND~6+02HB_vCQBxB{T2|UC9g*2ALU9j-7bKdmthE z!_Lt5N8X6MA7OxN4xSt%1}G_szaNK^K>}VjyN5!Ot>R25PNCBci&jpX8!H5Y9u@P6 zcw<9TLvsTw%uFmvWaG7o74c;O9GD&ophbmF4b8$O4V}f80;sFLGl0&`EYt8DbzT53 zPp%B$6)S_&{II)!I$GS&q2Waxg%+KetpTr_!LJ_9c-=pWkeOcb3qP2^Z!Hus-9aM67$8(UO0K1;qR z+z^glz-+$ehDTP;8oXi0d9zO4(zGg`kImS$pxN!_1mcUG{QE=)`z+vJ5*3-HXK<(V zbjq3<4YedO2&AnUREHO7Y}!GIxkIC*NvqIZnmI+Aq(<12nKUhpO=awyMescf^xFgE z+o*cgY~0e)Er>}Vkh+X?nRo&)@bLFCz=(2VxtuaKMufRS#lcP=RbB=Xo}(V!DI$Il zHBO$|M_6{Ffq;fevIfKSX;3>##vKf4&kn6(CkUicf71Qb`=-HODZ!FN*lU5x7)fnN z1&AlKq*S;#K5d;JshZ~*LeFnDOedyxQCX<0R<_uqslK8li&CCLz)!`L$^mdh$F znAC(3Nu9i^rLiGw7&b7yh9Sc<2G;Pg#yAMY@oQRFq(8y{^rMIp*%cX$9EtFe-f1r_ zBK<3b%o8p@4zNPF{21KUAW-=!63<$ccKB7g7jgyBEXA7>rbIqo5F0g|GsB`uZqaaq zF{}Nj?giRL!J72%#iGzsmOLZStSs5G_=kOc7Nf`OqrN7ug)o6eN(P`!vGFEX3)S^g zttLq|KG*_HZr}w|wg6u-5r7Dg7DJcqSjgJvDn zz;u)+Kc&L%Aew+S2O@?ha*V?$)mhz6u8jSA5GJnP@gs+GV~47?<$EB{xlD!ASFK8~ zr=or6(sf4O4^)n7M&DG%3mM%>a{WeZwED5@QYT&rdYoKN4`2bVZS-TFia#$A^OL6y zf`M|yfjmBY%R9x(hW&I_pVL1cys%rq6( z;57_W3U0S;_rBnI!Cm%#=oNPa@fIImVp?KeV_IYWo5~BSOHHb*+ogJaEG7%5e>S$ zD2`o@QO6O-QHS8@4G`ySMfk@nRKDkA4^gWp38NoBMod~|3^pAjepv*w9ke4=IUv=8 zM5y=svF>zZt}GrO>BE9mqP*5x<+W5>5EWr-az$-U>KSPwo)G|lTeQ$Z^Z@R7>#e3# zWQHvn9h#F}Rr}S}E9*UJ?!}2;%p3pL?iuOS+KZajT*O=wabLP1@g1r!}`0_(_yjH*HtBIl=@Prr(>$~Y{ph?yK8%box{#CE%4sK z-eKY&MZ-MbA;%QExH9$cF#V?{To(%5dbDfd~eI7S?P zdwYAEX*z9MB`uXIX{>>!x;qeQ9=2fOCR}6bw~ShjSOkl=?pan~MO3jSD~`R+v3BJo z6})yxKIl1C@uRf2j}Nw&#=(Zn5%&o|u05V~x)X6%BJNHFP|_I-U<$E>0#*8NNe`GO z22!ZYeW8#I-k}YQu8;TkrELN)$rNKHLj_}-U?vZl3MSzj6jmDvszwVHM#KPf%uH28feXAx~3BIGo7pf#dAr@yCa1>SD3foVCn( z3);8*@aj4BZJ|Qs3WuX%{adpZAO^Jqc@X(~krCA}8$OrbgD3{iEl5PtZlMr%XKeWHV%bx}WSVo7E|X4VmB3y-4o|-3u~r?IU}s8sQM0 zC6Nu0O^WiW`DLv0wKN$8c|~KQl_EklCedLx3=_v9v3d5)E|5gGmJ00UCX?A~j;VTvbV!ZrzLsgt!z%7laj)91 z4y!xW6DqIniSGGM6_PWVG14@^)ETQZ3&Ke3#WUQBv<=}Nfa5_B|AR=78V=}C3DM?o zQh|3=1-|4PqrJdYnFa}WOtA?n^|UXGIu_Hl)2G+gwokv=+c0xt_Ux=*7DK*3%7UHz zy<|gsZSC}l$hfwm7>LDu?aT3nU$4`=#Gi=KSs>e1kZl)!`b^38z>B4l?KBBktRgY> zPGjnw#wM^Ssmz*)=a&?jri9l-M4ZMpfUUcahBxrf16E5gi^xH!vBRm$aMcp& ze8ou(5e-n7SkhQPGb@Ssxr z=OO}{nj$5YkP#Q+MTts=Se1+l1fD4hQ<89_w|V|Vsg(6u!m2N2!#4ij&t|S@3)0ul z>JQELDbao!m$GZ}7#?PK0j7D-YWn6`ZyCqorLS)p_U`mDf{sKIl3~?dtS&bXyLP%5 z*AH+Usp#hz(fFpGlNDQ@C_3B&57GpB)NVw?Jzlak*_!^d{GO4=k?hQwS(xi`GiQ;M z-9=Yn9(T;DJ~Uf%)?smvyIGs8L=hGpT7un|;vSa)h{ zp6zA(*`4fBP+iaAe_>t&0=8lI`=rKWz?A62-ppq+8!NpXdl@4f4>cyW#Zk=6m~eIB zkNJE5v4a0Tjk_{W9^*&Y`%zuRXI71yNJK(53sXm6*@EPRDsicJSg;Bt;GtB?<-iUZ zKLWqeGomLBq69F?ITZf_WGT_5N?kTmWvM1)4yEYHudl;(=;}C*8?R2`l(BO5y1M#E zBwJsN)*;s_^^^$M(~A*nlJXnEaO~8DA1D>vNlnpg@uZerlf6{#&wdpDDD`Rl)0Bzq zu*XrL`@P~1H%GGB^tzUy*Bkanl`LmS1QT_MVq&@H3C|Pi6A8%}Z;iDkm!QSCQ(P#` zkIhSVraIGii9^be?JM!SQg@|?vJWcvlbz$wDF@>RQ!iv+iNBJ1C;m?ANH&akP83|6 zM~;h0IVGeEp4rN5TNi(>xI#TQy~Vgqxl7&R-4eYkepg~B>)9;d>DioM&2l%sR=L*3 z$+85xJsvk;kqKeNV+$!-G!oKKx-NvQ2202q_J%^?^5mU+rBo8k;ElSj#$%c!O0pPB zr=00@3b;W$nU`dzB+0UBP>J4j)Gv3gP2> z!`NygYYMUeUpH8-iV_ZM8e&KxMs=_Ys7UoWd>M)(2|un|Q#w=@sD)8GW&M%?m+|hA zQS_yBl=vZCx6vWO!q(-S{U|9;|c@rieXZSCy+aV``H*Ny)L|I6lfkA;oLS&tHRy2k&CKWot( zAtoL-UwZ0eX5sh&mRZVh z2M}L6)YCK8)02Y~k{)r%#|>g+b1mv~6IKgJtGL&}iuZR&3tY7(qX zWvuC&%{?uznP0OUiXDpoD*9IJow^UW527E$KB_a?OLaYUU#{O+w+(M&wy{I5A>WXH zD6pk|Th?sFR>r`}CLv&`d!^>ps1#t`PJ6%|^rroF+vV+shqSLnzZNsvGv-uXN8OU9 zHBHy0udBP$@?`XxrVrT<0;aUo5JJxbtc7t7Gk_JDJ?Qyt8T)iwts3$^?+^LHKCJjO zcyeT;_jxzjSYx*X^EPtUBu)4b{xQntY8wzD57l?G*Q=7=N2fbS9xU^^9b-FjuK$_z zov=>b*l)$X)_&`-l?Cg$MfWCs-fURHQr(Uu?oIY5hmx$8%qN-TvsgooSlhj5s%x=x zZ15zF7#SzMb(0a?(_PF#v)nU@AxntCG1w05fS|*%3NB!>n7v9j#G=ud+2}NzjQ|J~ zD!KsBfU-fOIbE-W_-cvxD7Xe9%1X8uktQhXdPdz7gF~Z|dpp z$q?^6>2=VJxo9r7weF$VLv?&lH*wh8Qku6Yr@Te18;T6f{z{mNk6KEGVit<(=qwja zO2}TaXk~e;Dl~B!*$HC56r5K&i}c4^NT-R>F*@a$1qu+&z)@$y@p!8EPgQ3S1Z~> zklE8`pX%kDik_ydvl2Q@{QaJ)u}vMAQCpL{(gTo)C8s((iQkABjwG%mRzYrL)PV*iGy+6R&*jvX1(;R60BVqHk~99y0jw z{Cn;_r#Sb5;c3N{1K;#mEh@#nuL5`7fL;RbT8V=XAYCv5N!6znWW7{aBjX+NGcqIJ zVY=)FqTr}mhNwGc4-zP>lOEeM*(l2ClzzTcA)z^)TxZ_oF}4FRHp0}9>+F#@JQZ!h z_yp?z6sRvspb-;-J8qT5UgEHh&`3Q%;z+PO`6i9jgUnC%6DL-%fkinQsMk|ER1M-j zL>QtyN?!Ywwe`&?N<8l#^GcoxIF@ls`K7`#ag~2nKwQsX!w;dM$cX<(+7az2`aLhV z;`w-mx;(HZ+N<^ku2BaAciZoE4BLj)$MJWWXQF%Yi}=UlkG&sB#{z%UPGVJHI_xX$ zTf|mdIq{d2eh@d;Wjd40LTMv*XOSqL5fOR+X-lRyrL8_ zX?O~WBN*MS6sv*W-Q9S=f52*$BN0}1(?D%mWP@cXu&0mxJc_K^Hmb2>Xet^gS#d*& zl^*`qmR7bS{`PGTe~9tO=6`Ldn;xJ*H>f7*#8Z7Pz&??8TvlhrW27;3^oHb(G6;htgF7N6Y0|_C(_Z1 zyI!RZeKkQms$o))h%^_H^*F*23qC^65vixX|9aBbMM~?Z!q4ib`k^6nT(?rkEj?d7 z);Q}-1DN-AnBy>~U{0cDFpaDQYUvkRP|_Bxlu9oqhD|!b9EtbST+TV@QXTj%XwuN|afPo{big*_q9u z!W^t6TM)fV5GR{WF?iLOJZ!+b4A^SuH|#LHVc-m;BR^h`BC%|^zN@~szQ3LusvoXr zcGY84uhfs$AF1c+ds`phMA?3|<6yj!R{1>KOS`RDtok6T4qT@%z)M2hp9t{Y02U>m z7$h!S60cL~BqI^r1B6EV_rd!$aL_aiy4=T!)_97w*{RdQW~jzvXDSx9jW}v6!7$Z0 zIie?~oERj0?sW9rnVyZ#4Y$rbyWj7y81nkW442+$V8e6r4VQJeit{F>ofUPe*09f& zvtT=a@A%pq=B_wj|Ng`eR%&V>1{z5@8_#**f?V^GiNFQfa4hC9w5?#z`qqM~I|SO7 zaq=j?n_rBw6+hTPln3jpHrJddR+tu}slLn|Xif>!gvG-3RxTcmCmW-U$+^+F$;Xmn zI$2CIUHPkwH(DP|zL5MhA+%ehu%C(4gu{Msq^36P$C0Qb>{laTUaAa(nRv=9*QU#p zf1z9)G9S?9MKh$qrOV8#x&lV8ZYoNk*fc3GF%qHdHYW*QF_Fe6(P2cSbU!&*^3j^k zDHW7F?$7Vc@5&#|bNR3)&<<>>t~9EyG@y=~9C(8RJ1Sjy7TU)bq8)tR+{tfOB7;d7 zISH905nE>~@VYC}91bXS^9C1h zyX20acLtK3JQ(b=!vo{*zW&=sAH22uZ;XB8+3|QGHaNa}$?Jn1SM7V7iEq;C5RE7J zjEwC9Om?Ff{^WC1-W}q}J5tC)<((#^8Ymi@$ZM^7OixWYN-I$WrqfXbCX?zx93wl3 zTgi6XOX`oy#z;3)8TUod^9w-()jrlKpiICiSU3e7M~)%KhIl>^M^zlGAft(B2kIFu zPyUJaW0_2e_!k594_B{u*jBZru2&NHyTX29pZLcx$0rC&(Gpj)*Kl{To4Lo?rzCN{ zh^I+YPEplkLY&`?fJ>aNNkf<)=9yl8h<}D>`HxL*gw&V`7;Klh-#l#QhG4PF%p$X5 z*35axj+&2{MKkH)XfK$1<1bYs)=x+BPWAtfk)R@*r-ES=zfxX}HHrz14QbeCPy@)T z8chKS*1}vw!(O95fP#Xb_WjdP#456Z{PmF0Da8G{*M)%1k^X;1l>KFKY)_v&#f*vk zRf2!TN<7~bS~b~hQ*@X}A)bE6gJ1dix3@mk_1Fq4AX2RbJL;RRD6an2x7HO3Ddv-d zfBD(TuMbU|#_oHVLeh9@{MU_5ue`A9dA}2|i2*qqXYWUGX4M(G-<_noU#dFijarJV zYNw;YwNN!u<(TfE0V+Paqt6~7``M?+fqg2b1u`dTSCc(96~basd)7F)R*t00p>mf9lvOoq=ZKM_cehAxM&GGQPyM^`&7>o$xy9rwGxnPNzqqZ#8tsf_394g-qE!N?}}V=)*FMq@-HJ~s>6g|QX);~n@7%wejc?Oq?y zvo6Q5gBgOwE(c4x_O)u~zToIhytL_yQR<+iK}UmJ5;Z+GHQtKU{B&;t$hqPVSZx8T zF97)JSAqdVAr<7946q_0>@kX>2m0cwU@%%hOPlueSt?RY`c+T&Cp5Nt_-J9Os~@CU zEJUgS05;;_VlT2r+~K5U;!pM0+%&gypf1q50MG0$Wv*CMJdeG9{FgiC2W-)Smxg9_ z-!p`_&usML`1nIZT`h|l@$6P64zg?l9{V3)Q#G;N8M5ptP+87XMbto-7Rl<45}ukR zYtdjVEm8TEXfKpRd!ZyZrMqrQcimJSx~E90dn&-)O`@R^WOp|T(u0HaL_vCrV4AYs zG$pd>O4ta^oS4$ZpHy}6-cen;`V5Zu&Z#S!0amEUMLtXutCY44p}QiIGql~I%=eJ$kGuF zrbE#R5pGD<&di4z<^)i*v5DSsEE=_1Ee4M}CJsw@7m0@Kmv%^RNSs7knLphWjMawI zUFqI*f0`Rg52tsfS>pR<(sbaH)7_lzZLW~v%>OwVwyR!N;No7^6TrNn^1dl5Oi2sn zEyOiVxNxIrH84JCWx$0Qu|_eou{a$chDb;&0mL?J+{C{I)W(&wjm_sp>3|@q%+%QH*K5UG&;vq9jLT?aek_yHoTJkfX^CF4?_vWv&EgC_JVOu9w9;`dq@YzHhqaRNDMoT!E7g0g)bu60wlZ`(L(b9q zg^^ceP(f9P=BqmNrOG+9+NzFyS2vPfHD)RrR5wz7?e^vx=Pn@Npv_;lTqpbFmg6PM zH!R<@oL#;`nBSnr>x^Q19be&cIbsa=^kfbzQ zLKJA`uXJl`>#D^BC`sYsDcFF_r*!M$#oepU)V_2{R4<+377)GX!=Qx66w-0L%e-jW zsu$3_$q&(7m~$}aCqLZhQ^877+bX|qzaD57k97ap%?^RC>Lw_YG2`KGFr~G0NG&s` zMrvBqp$5q4#+t?H(EJWMh73StB$`Qw0I$s>(V6McJjm!XqRW$=Gna*y&ymutoq92y zl8_jmzhWhMG4VQ+!6*tGFV3IWkXJp1ZjZ;O*kX~qhWoW$8Uy;hpj%th*-Wf0--`QN zceOIDq|Dv9a%ODt;&5kICo|MJ+{vI$rIYC-gQ@{^I(t`jmzneSMgV%sc-(4u<>QJ|kZl*w$F-^s3-fYsFswZ>;v} z@HQH2C5oQUBN9#*i)WbgUkF)g!d>g^^_MiQxXHEt-bD)sB5t#x<*bQz$MlHD!1KIQAB5Ew;3xgtz)V z5qQJloKukj(P4yP|^@G-8xX9QA z1;hVq^4AT+#$nS#)(345*&ht=DDE{Fir%7cjk3nJCfuiNux$uG#K<3q#=^{ye2e8} z_GRlw%tzKS+n?=H$yQQJ;Wn*QoM#<0Ty2$dOs%5DwM4GihT9a;r7XwiD$6u3s;tB- ztsf|VQ}~6p1>u+Emkj@I;61Wi2?xXBxy&r9V6<5sW}hi&4Ozm%Qg%7Fl)iX#3u1B)ORwwJ(srcdS zRQzx@TWmXHTr0^EI&`?FI=0nA8IfOKu2?Z+vpXD$H|z^}v*}PWSz}=2kb!vllF^oA zZe}6WG6&_55$v;=7Itcw(ZW_m$z#TeF@rUvg&mknGFF44sD@UAJS0+hv1)qVXfz1W zn85Hb81tqf6LZ3ZkC={{n10hJ@wa$nQv!eD&pTC#fG8uFOf}^yz)Bb$g z)h|^u2zF4b5pT2$zp~s+wjC11ZZfuZaDceu2XSRU3K~EIbgZ~S0>16WQaEKVVwi(E z2wuusWQcp-STvHvR4M{wKe&ecgDo*gg-U$2XD4>B0DeYGFmN~&sA%~3V-jZfj8&aO(tiM(KIGI{hf(l z-5AMP46zt?IXq2x{lt;(HWdSC89kA6*jYQ~`)yGYuU88gHNr1OO?a60eU9HZag(%39ukJcZPGSbj)ncfNKHKK&qSgUjkuN~7E4(6SHAWT zAthpjVZwr63@CmEM=e%sun9eu$r1-LQ(tC&p-1ZKGK|alSkV7rAP|(~rzJ^vx+HEA z8S=S9L5D&z(L)A= zfP8`yC5loRJC2mUfg-G=6xF~e_UqPcHX{fbSb; z)42AkWU~;DTP*f-mruN{KIJW zs)^J^foN)C=6OkvmYcD0;_0|Y(Jx{LZV9F06TiB=%Vj0{>;%}_0)Gi|qdinsoVwbp z?o^Me98z_axdz>d7|Totz7)?yGTw=55KHqC|QO-DDlM?zD1Nujg4NhL2Ta#)+GF?3hvsairt*PO}&KE(Uu1 zBbXOu1AV}<>2!pnBi=OC)MhZJsly4}5plGiKf(02xea367oWxb_|eZc54Mpo87A0p z1M}M7GAQjhTQJ7*e)&Ul+d$McSQRQo&kcaO`3gPfQ5yS#3%C#Z_D z$EX^E&EEOmEuL+fsCpU3O)U@p=jK@QGb#+T@_Ova{?4;hr%Cf%g)zHMH- z!~2Yv@jlBo!9)GZUd)(6W&9Q0jD+7UajbD{aBOmLjxrW?hYmO9Lz=D)X>6~y6X>Y- zIsA9TA~V)?=Ne`Mvx(WpyuiG{ywCiZkr;3IS$r?X)z{H^tet#~ZQzrhPC94=UdtG9 zGL^;$Dw^`ZHW|MlzacZE?=*9)I?|GkvSgHMB*sSXSG=&j+tR*S;Wr+#kbrVBwxkDB z2=;@XR6-#}k;{^Aq)*`)FJ$)gF{c0AWeTkVA?hR*#AwTuD^+B~2++k=_Ng_ej^Yck z_Q;pl?MTGEZ#?wad-;yX|2_k+?OQp|hxv)m;&>MR=J#%S{OW;&FTXjwe*L%iO`K>` z8tSQk9(7E9$R2?Aub>$EH`;@Lp#P>kCR$C)ssf=gu*Ah69uwszzy(;3#>)2~GV}KJKMaj!B`cSQ2%jmVewL5E%)^fGp zXYmZ=Cz~qX(!4`=3_Er@M29#1`Aa#~(>Z>u`c_U>`lRTGg~kS_qK>MH=}u9t?y6j9`nK6LC4Z7Kau8S`@KBE@nuq#R0pv7S)(wfu`OH>8Pqe*KR3M7XP-d zPm-)EE{kuE^r^fRUev$u>9d+Y|I7^iOo)XQKkqC^CTz|2SW6SG47Hu=D-hTRZhzuC zm&b;`y7l$-H@&{~!XMs;t)E^#{*Gp-EThi53SqB|F-0*G)!ln$;C{4Y^oo8@0MIY+YkztX}ou?^b1gyoZK#*(*=85~l7yfDtm; z?Is#jle0DDNMwzpLY1i8O@04>#6)~~{eUcr#<<{RRW#0L$t3hv33QFsff3inwqTM~J1I{3-LRiS~Z{^@*(m`DIN(esSU- zKjePo&-NOj-N7qm4??>$0M4`YZKm92Y(;a;x|P+fxYmSSA^;C&WnRFX$!G>!*36N} zq%scZc2RPQq9n1LD3~M^He>U1_+ca0^tA9Ra~OVheQnSv>vsxRzVlB=(U`oVFuc%c4-Io0@)7~;#4gabJYmp@xgXm z(MHwD=4^%ogMehMRx5CUK@vJrc7hyvu@ZG zwMA`_0tUKe!|cKRkBz^?T>a(8CSv&Hy%P`Oi-*`-Pu;^jI=-f&3(f(VdJ>+W2PLat zPi?v}`40c9ns<`iCEWG=M(GCmTGMsr>mAo>Tcz6^23gvcW~NJgQjH{4o(;u0B=XPV zi;#--ktF%d3ZR)T=i(dUKs`{1C=?41xOUHo$Aio&K`kG)9zb@*uGv|88Gi{7EUl-9 z(yX5DP47$}O>=2Xa4!P8>4p~!jKP~Ci1y)WHFJzU%<*HD?w=~4DJLtRWT}3$hyq!y zKPK5s2_+s#L=$0iWGxC>iE@!3rx`<_VQjFdk>h8=*wmL)0msC6S^STEeWGYV6&yom zO9&Lso<0lz1swB0+qSn(ed?q#vlf! zi)&ZVK6ZizEFxbIhK9+U4QU9pIg2cym?!a4AP3jsoAG_j%gnE}gqGK)X-`LLCMU^v zebG*QF7Acx8>`zLu)TPC`~UpIaE)K%2l2!B5tw#XrBYA!zcpFDAf1AUIiil|7$%Ea{UkG0x)_9q#Pn+ZJeY}4O*occ|j{PNQN~Y*#Id# z@T8Rgk8Aw@_Q&4~^I{Z+Il$ge-o@l^VLk@)hZ7x>r})cJbmFqfqbzyS|5BY1ilYb6 z4&aj~a07Y?jiL_pIGTyN(EVsWdILQJZ~A)t8oZe(nuDH1aU6y>G7ot$kG7+C(D`T( z{T>}fDYOXv2HW90b5TFM&En)ouv~=hnmh=58PII>ufT}<@KTh6`~s#9XW+`)CP(3& zrX~+hz71>NLchnc$=zrH_uC-X729E z%h7bS5B(A^f?OxMo_|~3hx*{C?_dueoqT`t59o&+Mqh$6-HPsl8t*})OqQL^?*!>i zptI1~=t9_fBYFora09DPCMRc2Zimt*&|jGh^D-+!Ju+w^T7$lV9)+jz7CMIh1{%45 zzlEQI>1X&){M%5sMd)gD0~&&wKMuz}jSk`l+`xDk4?HaoN~7hlZ5w(FuD=%@!HaM= z9>p&LC&*8fCY_V6$v;3Fu0^Y$hC9%UaE+5V5BtCs*c$dKF2r5MH;&%|ceoBcjEb?Z_UJB>l3U6r-D#P>^+@%d`a2IX(Y`~rMcpH8Ibiq6L z9k2)@%mDL8b{G2^`)jU+=O?GZncRRAVUUuQ=n{AXH^bAu5AOF#^ds~tcHsoBhdX); zj{k(2&dh=7J7CcLhP{K`#+~BtoH#o1@x*77cSGx+19GXih`xf!*B{9FvubUDOE#^Zuz+S{| zVuxUQgx$}+!y%62CizB~7Vum7Cxq9;l(;}#E4_YdY`k{7d;B*OXu>zKdg6hJ7bpHO zxnlBqsDB*Qqb$^PGt_cB$lzlzeIF!oKYAIxj($b!`d7?g9wc4`>Q#&D;H{PLe7q2* zPJ9kb%VAoH&x7egycS;q(puf4NN~X$Xo+&=m};obC7w9b+B=^p1qJA zV7IgX%D%+D$^M;VxH>M!wR0=D_1taT8{E&hx4F;wFh7^Sgnxv83Cx&gVYzUb@J-%GPaMs zm;E_^F+Ra+_+5NAdntSQG~C##%#o+%#YaH*xM$bN7ML6@caBD%+HX<9c3Ko zeQ4F2nQy>BKV>duwxU&BGyfU76rTI{`0L<#&tUGtwd|YRBk1>Rl=a9|%X-0+81u=;!DLFx~SYJ5#?2^krxP_cKYrw7GyLzrc;4VZQ-*e{$jn z1hM(I`K=&lkFs^>T$D#W%xh>Gw2j}xvLgLk1k^G$TqMz27Lf2vqTGl8^ab(Lq++0AWUcle2Fs(y9 zu=X&zPuR!*0xiKFAOzaPBOv9!Mi+q2`FFU!54A)6&O?uKbx>;!ka+-(cz9v~(qXz2 zy@naI5$Zex+IbhZ0Fd{A$;;plF9jX77G!0iR-UBII_R?#0}`d6s`4E{NEH}@;R z&eG&PlfMLhlLD5s9dM=t(CZ5HCwOiP*iqCpaW=Diavs|c8tQ#u?oUjHu>oB&*$2q` z1N4~41NID|5dRp+?pE$%CJ*&ZBR9@L>G}K)_E+p*xc>jEkaIp8+Uz&%>Qaw`IVnGQVXEMPISfcMM;HnA9Z z))JVO!n7Q0tZuNp&j-HL1I%a**s$w>g{=q6>r$952bQ-1c+oY~`nwkR(9OWehQQXj z6&TWHnC=E^_Fl029{^_b4d72Z!AATJu(hXwR z?fRqJs_y%}@5+*FS(fbla;!M-NzZbeNXAB48pjc_WJ@Nt4E~u!asf-09g-AkGu!OI z5^PSJH7H@pMn);L*rg=nkZ^J(Lna5d3Kt$s-sYQAF!v`|aWCYb^Z6$4b+h|F>pJYpHDB4is>-6y~ zUAK$Mg0e2!oK=X`j!y9^Jrd>X^@!*JXWnRPg!lBuqY;|4QaW-bsd&zS0qWBy~@mvs6N~QSL*#5x(xx>y@`eR9?{* z|Jrh^i)Esf2Q?vPGGEj9TyK22)h%cufjYS2ZBJ&}(eMeRFxIc3E#+t;&goG!sEKii zF&U#9)uTd_Jf!hry;VPuIh4f2RAo5nd&HfqstPUKyhf^`T4o@wyLpRCPoyFnva3m^ z?~(cSA#MFiOT9nqEH~1cEprqKrS|28(IuNKNq13-^)2Oa!+C}4<4z3>=_5VJZ7R{+faJT~VtS9~Lu42N zpXrSovPOnoITC8{CAg9lmMe>vHG70*X3??~p4739UzKm`uHn|&rKiKWc2)F1GpB3+ z2lJ?5kM--Z-odyQ%_IxCjSZ}j413d(tx%$d0SV_OFEZ7kW9jt`#)SgUB5%7MJ(%2$ zt%g4GRc&$RQW8ckk`=ag9IP^#c3o@FBr~b}&6#0c zbLyD|7H9Fycr>{<{rQ`hj=OmKi3A35fHv3rbz#Y5MzVx?2jV>B%2HX_-gZ2}yL}0r z5Bqet9v?*`*=ADe9!R#Kq>$FEPLK6wL-bhxV0^(zh<0oso>QpOmTXOAYha5nXoQ5M zRuNjE6oMuMyv)a5$|+Xq?^*~EG9#@fsgQCyPl?o77j=}R^NOK!8V%LThQv4O(|MC& z2`ze?ptBmf8N<7-;BAG)DJ+)=&Kg7-jYpOkU#8z4Y7XrT?NVA4WJKN-0Gdni-AT#( zF4{s}S=8Al)pb=d_AXv|GZMyj(7k?n( zTXIS9nPDx1Mcgb_a|0SK7C#+8(~4INhtKqA$%K}~W}&@tY*dXGfouD5uGdpygY+2V>A|rIES2d; zEWt!1T-<^q*8bF}F19xp6KiDOI5u^1(jVu)2Bg@=4xS=R)k7(5lnW8>&7l2_#IKzc)1RW1>&ab=)zq%`6?M5t?V!i+Fzw4oKmoL0m{ifhQEq$r> zv&r9_aNcL_g;)%KN(yln_iv+QpObtx`RU&~?4>`Wd$fT?;z!( zZqs{Y3-}Gd4~RD7i2E{l7oY*Xg?>GQm7NDvQ_I%JK}4F!1*8dqfb>w3013TU5u~H^ z7L^h}2p#FtM5TA>ReDvrNN-X^klsO>^xnRpSFiWI``-HAnw68YPxee^&Yqk-S;_hR z`?$(aU&Y4BYLp~|mfDc0VY=vJYKk#rxMCQ`iu9gPb~;Gbvf$=Et6h+hytRmHE}eEI z8*gM^Q8Io7*Ie`&{e-X7p{LP1ah8>}V@t_zSE{`y3H^4x4|@NAdc6}7BRR;8dXT4T z&;*L0BOze!V4HfvBqL@oEE60^!bOj@CbdAOrlhfNvxaq;yXKo%rPEV(urxwm!Bp$7 z&!Vu;1MTv-Gl_k-8Se#YCb<#KLV|dI4`_{Lr~ff966auo*`?6h-bjMdPLukI=SPpU zM3#hRBy^;vs)Ebhg=KhDht)l`gSFcxm#CJS%XlM{2=iH8(gOZW~mww>}s9ZHyZl?#J;7DLnfT8i%DF9MD?&V+rPaUNrVuO(i+ z+rHM-=c%BwPa-5O94OML9Kko;HliNhfNOw#er1=sv4QZx=7`TJ&AVbT-9AsOZJo_W z_@}FVHSd$7FGRFPl5frjj6{YcaBK>|!p3q0o2ZS4y=1*oQMWQb$xoO+!4g&Jtp7k8 z%86*inkKqMvn&{HziRjLWp|M-U98ldSHL~F(5l<*=pP?QH5{G$mx^c9dv7!?f!!}R zr33BEeUpCghUs!h`!M`#?*TU?dnJl6v@_51QnI}S=u4)gXyNJF_ll*e1j(MSogV>G z#k*Fm#MA&LCriWHILedZ!HUh2SGhs90h@rRq5h*;wN$|CqBk)9+WMPZrsmrxUXohA zLl_NM(io(QOBS~V71yk{Q=$|4P$+G|lI8L`syNMt~3M zq`zuY6~?hopF>KCqm0QM;)v_|VglznJ-5`?!KZzsDpxx2^kj~1ITJJDoYHLCi?4bO zNi?sg0tN=K7`?ZAKG&K(2q8X)`(b~%YDra&pj_bVqfWbuk}Q=%m!{P>+m^e1cyBO8 zFe0igF&2qX{X_SQSuo4Wr$R-aSB3^^dH}XDxHO`B%4AXVrXh+{$ASFf2%gB zJy$9{=PNJ9kr&Zp=b>XB0lLk|_m#zI0*pN);DT7E{@yZ}awxUyI)B z7c`GTrDt$SEOQ$;NYi8-Ivf*_NGS1AjOWh=D?(j)D6adS!6<4;*WgvtJ4Owi*vV>B zDamRsl_|;d7KM2;e7iB_O^oxe@K2Y@eG{=7Fg?T$ACP1iY*N@awmrLW`s0FQo+7Y~ z{j@>J)oh$&J@nXyY_>jbhbaB?lHIvn-%43Cx9*wiM^C_Lw%s|)`*Z#!PmDFQk03#3 zR*La7|E`vv;hQrF%my;M8F_uP)`O=Qhp%OAd6y_uiTlNqDi?Og8eu^O^%4#Pw-eOu zt7**m`VnN*fm}lC3S5@hsmHI&G1#0c zs!vl~r2=T(-Lon-c&bdN(J=EYQJwCffxcRTwmIC{ogS?S%@UGTi=!%oCks`hYms!45Il=;L^eZ? ziC!%G;2WcZO-+uh=3`y9qQI~(;-IN-&lfo1C(aSvtpy^6A&=P3nyxYy(ll8vdGkl- zr~n*-4wlJrGYRFAQFtDQUn7F9zSshplTZ&GvYb&WC~N?^2XsLlqXD|?y6lco8;@VP z-%ud`T5713zsu>Vq4jn<+w^Q}yfVhH&{}EJi({%b$S!1xZSt$G3N88`p)hQOUa_>h zx9A(;o9m>m$B!9H=4FLD`NwUEMXcZTkiN3LO)JPfQJq0Ol*e+b!&TV-Q$o2EzcHYW z?e#bK${PvNoIE-3J2q;C7x{UzBdp`a;E+z5E)a-mkRD_oN%COi+Dzo0>&)x{e$1L9 zH%;l}`hfel=m!V4CKUcCvT9Q#Ed|`MIU1xAy?-5>t_7cN>SD>XeD7lV?vlFAtBjVh z0tFF4e8!`#03waxm{}di`SlMc#T6YhyO@nzCcDU|ydUIt1EZBP#o7|d7b9sq!ciz- zl2U-|?J5mcvd`*a&8H*Fm0yA@lkQvOA&>3Z6Ud_~f+|0@inh^^E|#Sg#6AWwj|x%? zg2saPDhBS~6Sib3m>s^$l&o#V^o3lZ*26}Bm1c_Rpk3K%!L(43*=HxFCuTa+74#PC zg9cq85dkSI7aSD?A0)`?Y;&yEkNK*I9YMNcR~L0CkJvRbTNZ#oAOiI5gONliyEkg= zEF~@zXOKy*$qRyQqsV~pFu&6rD9v0d_w{9|$<*ppo-D}IZXqqWW9wjnlUvPdb#JWB zF1d}OeixOx@8mQx$CBSv&Ea$2Q0}9<>f2$Dp9dty_}XAcl}w{H&1_-L^!LqjKwNH< z+pJPaklym8j7LNEji%)OZnG3pjSqSQXkpKyJ%=5rtNbq4zrX;nXHFv($Ofiv_caG3$$q1=&{iFzXtV8Vk_u zB4{yh(Q=V`kzp=|+pSw+=bcNdd#CUtF7mg*s^OJS#zI~QAma=A$xHXX1Zxm5QI1^& z+VS!&;0tgr23mlEa_$D@vB-%=@Sn>76C)Y|+qof_+@cnTHkhEUGrREX)(8qbd zUODEFqEoee7MCW!sG8WmAT}sOqPY6~G-CxRgVmkQ7M$zbAnkcEOnA^Ul7FIe|C9#2 zq;o@IP}nd0IrI{Wd?|tVJKh+2sekwX6b%e-v>pRr_up{E2aHJ>%as<8gRk6NX9{p^ zDi!hK?9cUq^Dr+N5hORd#=E5PwNy`$QE0&Y zgb-a26ZOh+yBrnUhjCY-IVRtIdCJd^)Wy+dmBOEZqNBzku0!sZUKsk=^ME6j4OX%?Rq0{Du z9~M8jMkkK2&DYls%bJmPPpIJHst3u->Gm}o1Wb>#PGFtz0)M;6>)dyD0~f;RFukEM zeETr0>RGf_IjV0UC>q04MQjD7!{QyWiAx(t-3%w$fZ%Z3Z{{p#W(7EMkBaQN_OGV& z=gL0bN^3C{HCUX3kizVO4Bs*hv$-AAv25w!7X@-n!32l~rfQqsm5s0-xegYg47dB89r6wJ#9gn)Sje!#f7 z6;Q@j=B5(XkE{?t@b_vG_NEAH6p$Z1h)b^aWlt|{PUxR(b17q6d4&0+$EfekeD_gD zA&^=?{vY)(4f&tOB?ui&^hZE}kndpc-%;OuzbgU!k7)M)ewzLZpIzYBsrf4eK*;wf z{ZD*$DBr)5(0|%LUb);t;czZ~9w?Xx0^|dOe?5Ne{j2?(^Us!kKEq%zE&%~3 z1_7fR72xN+1l#|&0*6A;+;udX{qkD$PlcD4hl`&V4nu?4FT3}f`8R`yhldLchNGG8 zzee!4zFyY-?Ew5g4f?lsenZ0lR`cgM`mN*om(fCV`)xF>%}s605a>u~?)NBUzDTuu`p5AUC!7IP~U!VZn@w=zZ{q!E|z_IJHT z9i+_|?2q$8!zYIR6_o5-N{pIUu}8~6{)IBpd1_%TuBvoyD+6 z!x<=F?gVa;tiJamW@U1g2(kxXqO0UTPpLRC*qGLyFy2q&uFmeUC@XlCgA;b zucuW470snbh9SPokgT~$eih6g;6#Yhu^Q&vobFE#YeDmma}vHiU)P)vZ&+MCpv~<< zY9(i8TCU+9BNIM;40hLt``VM;A@v=C4)W{gO1G1omPLfBq>@2Q-N7_Ku@?K7&mKlA zQkFrtb1QcsiHRz{qwDi!g4{y@N6h|&9YaC91Y4V=qVcA{b5X54TTQcNiw7DGyNmd_ zUu3&xM`iL%614l<(%cP^1Kl#39{OZE$0M%9p9|mY?9DbVW*LyL;(Ut$mDSqym)08~ zS^^%|>%)28br16#urVHrPS8y=a6(dCZmmN7d;`|tFG$w3-Yf(B{%#t6(8*l^aSVQ?=aY{ zw)^S%pB63Np{qK!DD39d_Ib_>m?g1o?&J+tY`MYoDePSn**>2ho?hMA$-7dy!ut3; zvtSTy>or3L-!V*gYrSpU+mcEIY38`YZ?3)|)cs0O$?uSooAIKxaVYSCXtE6`(I-~l z+InA&nO|u8{MDvt2{k%#6L^}&AJbzqVOebpsl>(J0K5Q8I=KUL>EL+yaNK|u-`<#9 z6MGTTR{ks!kp#o=j)ke2gdonbemKr-LJ(krw~VA;n#t2=#kmuXRlQ0Ln8UczcJeZ6 z%<~JJ)U7_<=0-C-;-t}ggz~untN>e2-@jz4dfXd-D0Pnb8fq9`{`JN3;k=MmmfHa# zT$?8+-gxfUR%aXtV8uVX3g;b2!{bFRlzKoIP z!Ejl%?XA4gq!>}NkshG>RT#9~2C}$Ks;@3S&c_s6m&*L!FU?BUWt< zAVm~6xnSI(@3`VsFVFP4-%E12=jkm;oCYx;UsE6}HZ{G0DZST55BOar#HjehO5hun z_vA$>D$H|w#F5+PJIV=mqh_D7;$V&CxtU7rNI`Q_g#^jbc}T`f?d6Ic^Rj>>6Rtw9 zx2BcT4<2+^#(`!Gq8AaE!t*e*bW>eP3PkmT#Rp{M3$q>(#p$00G9A1hazF1qvWWW7 z>$1Gq!gAMx*=*gsaQK7O1#bah-0fHeoJvIzVj49!%hKv;wswxpT6V)eOg*bi$*UEq z;hx~QmpqM}WM~E|^WOgq&`%~`9aYuW%7;4}kdO5!XIk~Crn>8AS#mfzm#t;_dSdQY zt!8{8VAzyOs@hq)C(E=tuGv!A9cnp}eX85#kALd@xU4&cNs5&He!$m;y~0Q5vkl$T z2HtLj-!%QSi49r;sBw!JYJ+##2lC{L80vz{-=;T}*~Skozqwz2mwS`ykm6Mzw)=&e zN(>R_w+-dn=a|?Sd!dVLp=OFmGJPv|I8l$ zo-ZzQmAbhrI!*EXSUhP1bs<0=AoP14<5sh=K`)x1mjWk0)*1@d4{gu~eu+TaqwEmI zNPOo+&H)A1W@E~>tpl-W$o>T7Dy0w`+^s{Ru#<%4rCzLTqI{trO|yhNK8{*xlwIjf zJRCKyj7Save&A_+mAk9!@!r1hy&_2K>FJjcHu$w22svkn6m@Gl9dnA9AOwRH@`wK8 zHpc58%uq)7*G$>{jc)my2>Pc|H$kv&_xXm!2C2qA>yIv>yJbp6O22Norkf_nqog(8 zv8cEFG{$ruP++$tZ4ljY#D27Y;Df+kQ_NP}x5}X#4_H4e@Yu*+38h?4YIRsH>0>Li zHd|&a?A!*LRdy1MfW6G(*J9aq$4m2Qh0G2FMDI*R(FnBQ2naq;uuD_@s5cvt=wMuu znD=l>sOoc&l${$P(fqey;hHvX7lS~)?X;IQ`dyC}T}nEJjrBq|-d2YfkUbr+AwI~s z2)k|-@nr5D$J~^ej}$Yl;sz_1!W2;X>|(_#q>-k(MVO;F|D0jr#PY=v_M(p`{{I0mE_gQp literal 0 HcmV?d00001 diff --git a/diffusion2d.py b/diffusion2d.py index 51a07f2..aa39890 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -38,6 +38,10 @@ def __init__(self): self.dt = None def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): + assert(isinstance(w, float)) + assert(isinstance(h, float)) + assert(isinstance(dx, float)) + assert(isinstance(dy, float)) self.w = w self.h = h self.dx = dx @@ -45,7 +49,10 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.nx = int(w / dx) self.ny = int(h / dy) - def initialize_physical_parameters(self, d=4., T_cold=300, T_hot=700): + def initialize_physical_parameters(self, d=4., T_cold=300., T_hot=700.): + assert(isinstance(d, float)) + assert(isinstance(T_cold, float)) + assert(isinstance(T_hot, float)) self.D = d self.T_cold = T_cold self.T_hot = T_hot diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b4..1111425 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -3,17 +3,39 @@ """ from diffusion2d import SolveDiffusion2D - +import numpy as np def test_initialize_physical_parameters(): """ Checks function SolveDiffusion2D.initialize_domain """ solver = SolveDiffusion2D() - + solver.initialize_domain(w=10., h=10., dx=0.1, dy=0.1) + solver.initialize_physical_parameters(d=5., T_cold=200., T_hot=800.) + #test this: dx2, dy2 = self.dx * self.dx, self.dy * self.dy + # self.dt = dx2 * dy2 / (2 * self.D * (dx2 + dy2)) + # expected value: dx2 = dy2 = 0.01 + # dt = 0.0001 / (2 * 5 * 0.02) = 0.0001 / 0.2 = 0.0005 + assert((solver.dt - 0.0005) < 0.00000001) def test_set_initial_condition(): """ Checks function SolveDiffusion2D.get_initial_function """ solver = SolveDiffusion2D() + solver.initialize_domain(w=10., h=10., dx=0.1, dy=0.1) + solver.initialize_physical_parameters(d=5., T_cold=200., T_hot=800.) + u = solver.set_initial_condition() + + referenceU = solver.T_cold * np.ones((solver.nx, solver.ny)) + + # Initial conditions - circle of radius r centred at (cx,cy) (mm) + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + for i in range(solver.nx): + for j in range(solver.ny): + p2 = (i * solver.dx - cx) ** 2 + (j * solver.dy - cy) ** 2 + if p2 < r2: + referenceU[i, j] = solver.T_hot + + np.testing.assert_array_equal(u, referenceU) diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ff..2750256 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -4,19 +4,31 @@ from diffusion2d import SolveDiffusion2D - def test_initialize_domain(): """ Check function SolveDiffusion2D.initialize_domain """ solver = SolveDiffusion2D() + solver.initialize_domain(w=20., h=19., dx=0.4, dy=0.4) + #expected nx = 50 and ny = 47 + assert(solver.nx == 50) + assert(solver.ny == 47) def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks function SolveDiffusion2D.initialize_physical_parameters """ solver = SolveDiffusion2D() + solver.dx = 0.1 + solver.dy = 0.1 + solver.initialize_physical_parameters(d=5., T_cold=200., T_hot=800.) + #test this: dx2, dy2 = self.dx * self.dx, self.dy * self.dy + # self.dt = dx2 * dy2 / (2 * self.D * (dx2 + dy2)) + # expected value: dx2 = dy2 = 0.01 + # dt = 0.0001 / (2 * 5 * 0.02) = 0.0001 / 0.2 = 0.0005 + assert((solver.dt - 0.0005) < 0.00000001) + def test_set_initial_condition(): @@ -24,3 +36,8 @@ def test_set_initial_condition(): Checks function SolveDiffusion2D.get_initial_function """ solver = SolveDiffusion2D() + solver.initialize_domain() + solver.initialize_physical_parameters(d=5., T_cold=200., T_hot=800.) + u = solver.set_initial_condition() + assert(u[0, 0] == 200) + From 609d91279f45cffb316a1001aadc9fb1a4cd5074 Mon Sep 17 00:00:00 2001 From: B3tah3 Date: Tue, 20 Jan 2026 18:05:23 +0100 Subject: [PATCH 2/2] added tox automation and uv for venv --- pyproject.toml | 11 + tox.ini | 12 + uv.lock | 842 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 865 insertions(+) create mode 100644 pyproject.toml create mode 100644 tox.ini create mode 100644 uv.lock diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..2e5e28c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "testing-python-exercise" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "matplotlib>=3.10.8", + "numpy>=2.2.6", + "pytest>=9.0.2", +] diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..0bbc782 --- /dev/null +++ b/tox.ini @@ -0,0 +1,12 @@ +[tox] +envlist = pytest + +[testenv] +description = Install using uv +installer = uv + +[testenv:pytest] +commands = pytest + +[testenv:unittest] +commands = python -m unittest discover -s tests diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..b88df71 --- /dev/null +++ b/uv.lock @@ -0,0 +1,842 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.11'", + "python_full_version < '3.11'", +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "fonttools" +version = "4.61.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/94/8a28707adb00bed1bf22dac16ccafe60faf2ade353dcb32c3617ee917307/fonttools-4.61.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c7db70d57e5e1089a274cbb2b1fd635c9a24de809a231b154965d415d6c6d24", size = 2854799, upload-time = "2025-12-12T17:29:27.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/93/c2e682faaa5ee92034818d8f8a8145ae73eb83619600495dcf8503fa7771/fonttools-4.61.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5fe9fd43882620017add5eabb781ebfbc6998ee49b35bd7f8f79af1f9f99a958", size = 2403032, upload-time = "2025-12-12T17:29:30.115Z" }, + { url = "https://files.pythonhosted.org/packages/f1/62/1748f7e7e1ee41aa52279fd2e3a6d0733dc42a673b16932bad8e5d0c8b28/fonttools-4.61.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8db08051fc9e7d8bc622f2112511b8107d8f27cd89e2f64ec45e9825e8288da", size = 4897863, upload-time = "2025-12-12T17:29:32.535Z" }, + { url = "https://files.pythonhosted.org/packages/69/69/4ca02ee367d2c98edcaeb83fc278d20972502ee071214ad9d8ca85e06080/fonttools-4.61.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a76d4cb80f41ba94a6691264be76435e5f72f2cb3cab0b092a6212855f71c2f6", size = 4859076, upload-time = "2025-12-12T17:29:34.907Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f5/660f9e3cefa078861a7f099107c6d203b568a6227eef163dd173bfc56bdc/fonttools-4.61.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a13fc8aeb24bad755eea8f7f9d409438eb94e82cf86b08fe77a03fbc8f6a96b1", size = 4875623, upload-time = "2025-12-12T17:29:37.33Z" }, + { url = "https://files.pythonhosted.org/packages/63/d1/9d7c5091d2276ed47795c131c1bf9316c3c1ab2789c22e2f59e0572ccd38/fonttools-4.61.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b846a1fcf8beadeb9ea4f44ec5bdde393e2f1569e17d700bfc49cd69bde75881", size = 4993327, upload-time = "2025-12-12T17:29:39.781Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2d/28def73837885ae32260d07660a052b99f0aa00454867d33745dfe49dbf0/fonttools-4.61.1-cp310-cp310-win32.whl", hash = "sha256:78a7d3ab09dc47ac1a363a493e6112d8cabed7ba7caad5f54dbe2f08676d1b47", size = 1502180, upload-time = "2025-12-12T17:29:42.217Z" }, + { url = "https://files.pythonhosted.org/packages/63/fa/bfdc98abb4dd2bd491033e85e3ba69a2313c850e759a6daa014bc9433b0f/fonttools-4.61.1-cp310-cp310-win_amd64.whl", hash = "sha256:eff1ac3cc66c2ac7cda1e64b4e2f3ffef474b7335f92fc3833fc632d595fcee6", size = 1550654, upload-time = "2025-12-12T17:29:44.564Z" }, + { url = "https://files.pythonhosted.org/packages/69/12/bf9f4eaa2fad039356cc627587e30ed008c03f1cebd3034376b5ee8d1d44/fonttools-4.61.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09", size = 2852213, upload-time = "2025-12-12T17:29:46.675Z" }, + { url = "https://files.pythonhosted.org/packages/ac/49/4138d1acb6261499bedde1c07f8c2605d1d8f9d77a151e5507fd3ef084b6/fonttools-4.61.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37", size = 2401689, upload-time = "2025-12-12T17:29:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/e5/fe/e6ce0fe20a40e03aef906af60aa87668696f9e4802fa283627d0b5ed777f/fonttools-4.61.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb", size = 5058809, upload-time = "2025-12-12T17:29:51.701Z" }, + { url = "https://files.pythonhosted.org/packages/79/61/1ca198af22f7dd22c17ab86e9024ed3c06299cfdb08170640e9996d501a0/fonttools-4.61.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9", size = 5036039, upload-time = "2025-12-12T17:29:53.659Z" }, + { url = "https://files.pythonhosted.org/packages/99/cc/fa1801e408586b5fce4da9f5455af8d770f4fc57391cd5da7256bb364d38/fonttools-4.61.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87", size = 5034714, upload-time = "2025-12-12T17:29:55.592Z" }, + { url = "https://files.pythonhosted.org/packages/bf/aa/b7aeafe65adb1b0a925f8f25725e09f078c635bc22754f3fecb7456955b0/fonttools-4.61.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56", size = 5158648, upload-time = "2025-12-12T17:29:57.861Z" }, + { url = "https://files.pythonhosted.org/packages/99/f9/08ea7a38663328881384c6e7777bbefc46fd7d282adfd87a7d2b84ec9d50/fonttools-4.61.1-cp311-cp311-win32.whl", hash = "sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a", size = 2280681, upload-time = "2025-12-12T17:29:59.943Z" }, + { url = "https://files.pythonhosted.org/packages/07/ad/37dd1ae5fa6e01612a1fbb954f0927681f282925a86e86198ccd7b15d515/fonttools-4.61.1-cp311-cp311-win_amd64.whl", hash = "sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7", size = 2331951, upload-time = "2025-12-12T17:30:02.254Z" }, + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/5d/8ce64e36d4e3aac5ca96996457dcf33e34e6051492399a3f1fec5657f30b/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b", size = 124159, upload-time = "2025-08-10T21:25:35.472Z" }, + { url = "https://files.pythonhosted.org/packages/96/1e/22f63ec454874378175a5f435d6ea1363dd33fb2af832c6643e4ccea0dc8/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f", size = 66578, upload-time = "2025-08-10T21:25:36.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/4c/1925dcfff47a02d465121967b95151c82d11027d5ec5242771e580e731bd/kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf", size = 65312, upload-time = "2025-08-10T21:25:37.658Z" }, + { url = "https://files.pythonhosted.org/packages/d4/42/0f333164e6307a0687d1eb9ad256215aae2f4bd5d28f4653d6cd319a3ba3/kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9", size = 1628458, upload-time = "2025-08-10T21:25:39.067Z" }, + { url = "https://files.pythonhosted.org/packages/86/b6/2dccb977d651943995a90bfe3495c2ab2ba5cd77093d9f2318a20c9a6f59/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415", size = 1225640, upload-time = "2025-08-10T21:25:40.489Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/362ebd3eec46c850ccf2bfe3e30f2fc4c008750011f38a850f088c56a1c6/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b", size = 1244074, upload-time = "2025-08-10T21:25:42.221Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bb/f09a1e66dab8984773d13184a10a29fe67125337649d26bdef547024ed6b/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154", size = 1293036, upload-time = "2025-08-10T21:25:43.801Z" }, + { url = "https://files.pythonhosted.org/packages/ea/01/11ecf892f201cafda0f68fa59212edaea93e96c37884b747c181303fccd1/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48", size = 2175310, upload-time = "2025-08-10T21:25:45.045Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/bfe11d5b934f500cc004314819ea92427e6e5462706a498c1d4fc052e08f/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220", size = 2270943, upload-time = "2025-08-10T21:25:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/3d/de/259f786bf71f1e03e73d87e2db1a9a3bcab64d7b4fd780167123161630ad/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586", size = 2440488, upload-time = "2025-08-10T21:25:48.074Z" }, + { url = "https://files.pythonhosted.org/packages/1b/76/c989c278faf037c4d3421ec07a5c452cd3e09545d6dae7f87c15f54e4edf/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634", size = 2246787, upload-time = "2025-08-10T21:25:49.442Z" }, + { url = "https://files.pythonhosted.org/packages/a2/55/c2898d84ca440852e560ca9f2a0d28e6e931ac0849b896d77231929900e7/kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611", size = 73730, upload-time = "2025-08-10T21:25:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/e8/09/486d6ac523dd33b80b368247f238125d027964cfacb45c654841e88fb2ae/kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536", size = 65036, upload-time = "2025-08-10T21:25:52.063Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, + { url = "https://files.pythonhosted.org/packages/a2/63/fde392691690f55b38d5dd7b3710f5353bf7a8e52de93a22968801ab8978/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527", size = 60183, upload-time = "2025-08-10T21:27:37.669Z" }, + { url = "https://files.pythonhosted.org/packages/27/b1/6aad34edfdb7cced27f371866f211332bba215bfd918ad3322a58f480d8b/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771", size = 58675, upload-time = "2025-08-10T21:27:39.031Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1a/23d855a702bb35a76faed5ae2ba3de57d323f48b1f6b17ee2176c4849463/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e", size = 80277, upload-time = "2025-08-10T21:27:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5b/5239e3c2b8fb5afa1e8508f721bb77325f740ab6994d963e61b2b7abcc1e/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9", size = 77994, upload-time = "2025-08-10T21:27:41.181Z" }, + { url = "https://files.pythonhosted.org/packages/f9/1c/5d4d468fb16f8410e596ed0eac02d2c68752aa7dc92997fe9d60a7147665/kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb", size = 73744, upload-time = "2025-08-10T21:27:42.254Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/be/a30bd917018ad220c400169fba298f2bb7003c8ccbc0c3e24ae2aacad1e8/matplotlib-3.10.8-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7", size = 8239828, upload-time = "2025-12-10T22:55:02.313Z" }, + { url = "https://files.pythonhosted.org/packages/58/27/ca01e043c4841078e82cf6e80a6993dfecd315c3d79f5f3153afbb8e1ec6/matplotlib-3.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656", size = 8128050, upload-time = "2025-12-10T22:55:04.997Z" }, + { url = "https://files.pythonhosted.org/packages/cb/aa/7ab67f2b729ae6a91bcf9dcac0affb95fb8c56f7fd2b2af894ae0b0cf6fa/matplotlib-3.10.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df", size = 8700452, upload-time = "2025-12-10T22:55:07.47Z" }, + { url = "https://files.pythonhosted.org/packages/73/ae/2d5817b0acee3c49b7e7ccfbf5b273f284957cc8e270adf36375db353190/matplotlib-3.10.8-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17", size = 9534928, upload-time = "2025-12-10T22:55:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5b/8e66653e9f7c39cb2e5cab25fce4810daffa2bff02cbf5f3077cea9e942c/matplotlib-3.10.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933", size = 9586377, upload-time = "2025-12-10T22:55:12.362Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/fd0bbadf837f81edb0d208ba8f8cb552874c3b16e27cb91a31977d90875d/matplotlib-3.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a", size = 8128127, upload-time = "2025-12-10T22:55:14.436Z" }, + { url = "https://files.pythonhosted.org/packages/f8/86/de7e3a1cdcfc941483af70609edc06b83e7c8a0e0dc9ac325200a3f4d220/matplotlib-3.10.8-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160", size = 8251215, upload-time = "2025-12-10T22:55:16.175Z" }, + { url = "https://files.pythonhosted.org/packages/fd/14/baad3222f424b19ce6ad243c71de1ad9ec6b2e4eb1e458a48fdc6d120401/matplotlib-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78", size = 8139625, upload-time = "2025-12-10T22:55:17.712Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a0/7024215e95d456de5883e6732e708d8187d9753a21d32f8ddb3befc0c445/matplotlib-3.10.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4", size = 8712614, upload-time = "2025-12-10T22:55:20.8Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f4/b8347351da9a5b3f41e26cf547252d861f685c6867d179a7c9d60ad50189/matplotlib-3.10.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2", size = 9540997, upload-time = "2025-12-10T22:55:23.258Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c0/c7b914e297efe0bc36917bf216b2acb91044b91e930e878ae12981e461e5/matplotlib-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6", size = 9596825, upload-time = "2025-12-10T22:55:25.217Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d3/a4bbc01c237ab710a1f22b4da72f4ff6d77eb4c7735ea9811a94ae239067/matplotlib-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9", size = 8135090, upload-time = "2025-12-10T22:55:27.162Z" }, + { url = "https://files.pythonhosted.org/packages/89/dd/a0b6588f102beab33ca6f5218b31725216577b2a24172f327eaf6417d5c9/matplotlib-3.10.8-cp311-cp311-win_arm64.whl", hash = "sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2", size = 8012377, upload-time = "2025-12-10T22:55:29.185Z" }, + { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, + { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" }, + { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" }, + { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" }, + { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" }, + { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" }, + { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" }, + { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" }, + { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" }, + { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" }, + { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" }, + { url = "https://files.pythonhosted.org/packages/f5/43/31d59500bb950b0d188e149a2e552040528c13d6e3d6e84d0cccac593dcd/matplotlib-3.10.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8", size = 8237252, upload-time = "2025-12-10T22:56:39.529Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2c/615c09984f3c5f907f51c886538ad785cf72e0e11a3225de2c0f9442aecc/matplotlib-3.10.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7", size = 8124693, upload-time = "2025-12-10T22:56:41.758Z" }, + { url = "https://files.pythonhosted.org/packages/91/e1/2757277a1c56041e1fc104b51a0f7b9a4afc8eb737865d63cababe30bc61/matplotlib-3.10.8-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3", size = 8702205, upload-time = "2025-12-10T22:56:43.415Z" }, + { url = "https://files.pythonhosted.org/packages/04/30/3afaa31c757f34b7725ab9d2ba8b48b5e89c2019c003e7d0ead143aabc5a/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1", size = 8249198, upload-time = "2025-12-10T22:56:45.584Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/6334aec331f57485a642a7c8be03cb286f29111ae71c46c38b363230063c/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a", size = 8136817, upload-time = "2025-12-10T22:56:47.339Z" }, + { url = "https://files.pythonhosted.org/packages/73/e4/6d6f14b2a759c622f191b2d67e9075a3f56aaccb3be4bb9bb6890030d0a0/matplotlib-3.10.8-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2", size = 8713867, upload-time = "2025-12-10T22:56:48.954Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/24/62/ae72ff66c0f1fd959925b4c11f8c2dea61f47f6acaea75a08512cdfe3fed/numpy-2.4.1.tar.gz", hash = "sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690", size = 20721320, upload-time = "2026-01-10T06:44:59.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/34/2b1bc18424f3ad9af577f6ce23600319968a70575bd7db31ce66731bbef9/numpy-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0cce2a669e3c8ba02ee563c7835f92c153cf02edff1ae05e1823f1dde21b16a5", size = 16944563, upload-time = "2026-01-10T06:42:14.615Z" }, + { url = "https://files.pythonhosted.org/packages/2c/57/26e5f97d075aef3794045a6ca9eada6a4ed70eb9a40e7a4a93f9ac80d704/numpy-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:899d2c18024984814ac7e83f8f49d8e8180e2fbe1b2e252f2e7f1d06bea92425", size = 12645658, upload-time = "2026-01-10T06:42:17.298Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ba/80fc0b1e3cb2fd5c6143f00f42eb67762aa043eaa05ca924ecc3222a7849/numpy-2.4.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:09aa8a87e45b55a1c2c205d42e2808849ece5c484b2aab11fecabec3841cafba", size = 5474132, upload-time = "2026-01-10T06:42:19.637Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/0a5b9a397f0e865ec171187c78d9b57e5588afc439a04ba9cab1ebb2c945/numpy-2.4.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:edee228f76ee2dab4579fad6f51f6a305de09d444280109e0f75df247ff21501", size = 6804159, upload-time = "2026-01-10T06:42:21.44Z" }, + { url = "https://files.pythonhosted.org/packages/86/9c/841c15e691c7085caa6fd162f063eff494099c8327aeccd509d1ab1e36ab/numpy-2.4.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a92f227dbcdc9e4c3e193add1a189a9909947d4f8504c576f4a732fd0b54240a", size = 14708058, upload-time = "2026-01-10T06:42:23.546Z" }, + { url = "https://files.pythonhosted.org/packages/5d/9d/7862db06743f489e6a502a3b93136d73aea27d97b2cf91504f70a27501d6/numpy-2.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:538bf4ec353709c765ff75ae616c34d3c3dca1a68312727e8f2676ea644f8509", size = 16651501, upload-time = "2026-01-10T06:42:25.909Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9c/6fc34ebcbd4015c6e5f0c0ce38264010ce8a546cb6beacb457b84a75dfc8/numpy-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ac08c63cb7779b85e9d5318e6c3518b424bc1f364ac4cb2c6136f12e5ff2dccc", size = 16492627, upload-time = "2026-01-10T06:42:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/aa/63/2494a8597502dacda439f61b3c0db4da59928150e62be0e99395c3ad23c5/numpy-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f9c360ecef085e5841c539a9a12b883dff005fbd7ce46722f5e9cef52634d82", size = 18585052, upload-time = "2026-01-10T06:42:31.312Z" }, + { url = "https://files.pythonhosted.org/packages/6a/93/098e1162ae7522fc9b618d6272b77404c4656c72432ecee3abc029aa3de0/numpy-2.4.1-cp311-cp311-win32.whl", hash = "sha256:0f118ce6b972080ba0758c6087c3617b5ba243d806268623dc34216d69099ba0", size = 6236575, upload-time = "2026-01-10T06:42:33.872Z" }, + { url = "https://files.pythonhosted.org/packages/8c/de/f5e79650d23d9e12f38a7bc6b03ea0835b9575494f8ec94c11c6e773b1b1/numpy-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:18e14c4d09d55eef39a6ab5b08406e84bc6869c1e34eef45564804f90b7e0574", size = 12604479, upload-time = "2026-01-10T06:42:35.778Z" }, + { url = "https://files.pythonhosted.org/packages/dd/65/e1097a7047cff12ce3369bd003811516b20ba1078dbdec135e1cd7c16c56/numpy-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:6461de5113088b399d655d45c3897fa188766415d0f568f175ab071c8873bd73", size = 10578325, upload-time = "2026-01-10T06:42:38.518Z" }, + { url = "https://files.pythonhosted.org/packages/78/7f/ec53e32bf10c813604edf07a3682616bd931d026fcde7b6d13195dfb684a/numpy-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2", size = 16656888, upload-time = "2026-01-10T06:42:40.913Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e0/1f9585d7dae8f14864e948fd7fa86c6cb72dee2676ca2748e63b1c5acfe0/numpy-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8", size = 12373956, upload-time = "2026-01-10T06:42:43.091Z" }, + { url = "https://files.pythonhosted.org/packages/8e/43/9762e88909ff2326f5e7536fa8cb3c49fb03a7d92705f23e6e7f553d9cb3/numpy-2.4.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a", size = 5202567, upload-time = "2026-01-10T06:42:45.107Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ee/34b7930eb61e79feb4478800a4b95b46566969d837546aa7c034c742ef98/numpy-2.4.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0", size = 6549459, upload-time = "2026-01-10T06:42:48.152Z" }, + { url = "https://files.pythonhosted.org/packages/79/e3/5f115fae982565771be994867c89bcd8d7208dbfe9469185497d70de5ddf/numpy-2.4.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c", size = 14404859, upload-time = "2026-01-10T06:42:49.947Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7d/9c8a781c88933725445a859cac5d01b5871588a15969ee6aeb618ba99eee/numpy-2.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02", size = 16371419, upload-time = "2026-01-10T06:42:52.409Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d2/8aa084818554543f17cf4162c42f162acbd3bb42688aefdba6628a859f77/numpy-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162", size = 16182131, upload-time = "2026-01-10T06:42:54.694Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/0425216684297c58a8df35f3284ef56ec4a043e6d283f8a59c53562caf1b/numpy-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9", size = 18295342, upload-time = "2026-01-10T06:42:56.991Z" }, + { url = "https://files.pythonhosted.org/packages/31/4c/14cb9d86240bd8c386c881bafbe43f001284b7cce3bc01623ac9475da163/numpy-2.4.1-cp312-cp312-win32.whl", hash = "sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f", size = 5959015, upload-time = "2026-01-10T06:42:59.631Z" }, + { url = "https://files.pythonhosted.org/packages/51/cf/52a703dbeb0c65807540d29699fef5fda073434ff61846a564d5c296420f/numpy-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87", size = 12310730, upload-time = "2026-01-10T06:43:01.627Z" }, + { url = "https://files.pythonhosted.org/packages/69/80/a828b2d0ade5e74a9fe0f4e0a17c30fdc26232ad2bc8c9f8b3197cf7cf18/numpy-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8", size = 10312166, upload-time = "2026-01-10T06:43:03.673Z" }, + { url = "https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b", size = 16652495, upload-time = "2026-01-10T06:43:06.283Z" }, + { url = "https://files.pythonhosted.org/packages/20/ca/857722353421a27f1465652b2c66813eeeccea9d76d5f7b74b99f298e60e/numpy-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f", size = 12368657, upload-time = "2026-01-10T06:43:09.094Z" }, + { url = "https://files.pythonhosted.org/packages/81/0d/2377c917513449cc6240031a79d30eb9a163d32a91e79e0da47c43f2c0c8/numpy-2.4.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9", size = 5197256, upload-time = "2026-01-10T06:43:13.634Z" }, + { url = "https://files.pythonhosted.org/packages/17/39/569452228de3f5de9064ac75137082c6214be1f5c532016549a7923ab4b5/numpy-2.4.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e", size = 6545212, upload-time = "2026-01-10T06:43:15.661Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a4/77333f4d1e4dac4395385482557aeecf4826e6ff517e32ca48e1dafbe42a/numpy-2.4.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5", size = 14402871, upload-time = "2026-01-10T06:43:17.324Z" }, + { url = "https://files.pythonhosted.org/packages/ba/87/d341e519956273b39d8d47969dd1eaa1af740615394fe67d06f1efa68773/numpy-2.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8", size = 16359305, upload-time = "2026-01-10T06:43:19.376Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/789132c6666288eaa20ae8066bb99eba1939362e8f1a534949a215246e97/numpy-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c", size = 16181909, upload-time = "2026-01-10T06:43:21.808Z" }, + { url = "https://files.pythonhosted.org/packages/cf/b8/090b8bd27b82a844bb22ff8fdf7935cb1980b48d6e439ae116f53cdc2143/numpy-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2", size = 18284380, upload-time = "2026-01-10T06:43:23.957Z" }, + { url = "https://files.pythonhosted.org/packages/67/78/722b62bd31842ff029412271556a1a27a98f45359dea78b1548a3a9996aa/numpy-2.4.1-cp313-cp313-win32.whl", hash = "sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d", size = 5957089, upload-time = "2026-01-10T06:43:27.535Z" }, + { url = "https://files.pythonhosted.org/packages/da/a6/cf32198b0b6e18d4fbfa9a21a992a7fca535b9bb2b0cdd217d4a3445b5ca/numpy-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb", size = 12307230, upload-time = "2026-01-10T06:43:29.298Z" }, + { url = "https://files.pythonhosted.org/packages/44/6c/534d692bfb7d0afe30611320c5fb713659dcb5104d7cc182aff2aea092f5/numpy-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5", size = 10313125, upload-time = "2026-01-10T06:43:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/da/a1/354583ac5c4caa566de6ddfbc42744409b515039e085fab6e0ff942e0df5/numpy-2.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7", size = 12496156, upload-time = "2026-01-10T06:43:34.237Z" }, + { url = "https://files.pythonhosted.org/packages/51/b0/42807c6e8cce58c00127b1dc24d365305189991f2a7917aa694a109c8d7d/numpy-2.4.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d", size = 5324663, upload-time = "2026-01-10T06:43:36.211Z" }, + { url = "https://files.pythonhosted.org/packages/fe/55/7a621694010d92375ed82f312b2f28017694ed784775269115323e37f5e2/numpy-2.4.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15", size = 6645224, upload-time = "2026-01-10T06:43:37.884Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/9fa8635ed9d7c847d87e30c834f7109fac5e88549d79ef3324ab5c20919f/numpy-2.4.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9", size = 14462352, upload-time = "2026-01-10T06:43:39.479Z" }, + { url = "https://files.pythonhosted.org/packages/03/d1/8cf62d8bb2062da4fb82dd5d49e47c923f9c0738032f054e0a75342faba7/numpy-2.4.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2", size = 16407279, upload-time = "2026-01-10T06:43:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/86/1c/95c86e17c6b0b31ce6ef219da00f71113b220bcb14938c8d9a05cee0ff53/numpy-2.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505", size = 16248316, upload-time = "2026-01-10T06:43:44.121Z" }, + { url = "https://files.pythonhosted.org/packages/30/b4/e7f5ff8697274c9d0fa82398b6a372a27e5cef069b37df6355ccb1f1db1a/numpy-2.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2", size = 18329884, upload-time = "2026-01-10T06:43:46.613Z" }, + { url = "https://files.pythonhosted.org/packages/37/a4/b073f3e9d77f9aec8debe8ca7f9f6a09e888ad1ba7488f0c3b36a94c03ac/numpy-2.4.1-cp313-cp313t-win32.whl", hash = "sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4", size = 6081138, upload-time = "2026-01-10T06:43:48.854Z" }, + { url = "https://files.pythonhosted.org/packages/16/16/af42337b53844e67752a092481ab869c0523bc95c4e5c98e4dac4e9581ac/numpy-2.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510", size = 12447478, upload-time = "2026-01-10T06:43:50.476Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f8/fa85b2eac68ec631d0b631abc448552cb17d39afd17ec53dcbcc3537681a/numpy-2.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261", size = 10382981, upload-time = "2026-01-10T06:43:52.575Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a7/ef08d25698e0e4b4efbad8d55251d20fe2a15f6d9aa7c9b30cd03c165e6f/numpy-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc", size = 16652046, upload-time = "2026-01-10T06:43:54.797Z" }, + { url = "https://files.pythonhosted.org/packages/8f/39/e378b3e3ca13477e5ac70293ec027c438d1927f18637e396fe90b1addd72/numpy-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3", size = 12378858, upload-time = "2026-01-10T06:43:57.099Z" }, + { url = "https://files.pythonhosted.org/packages/c3/74/7ec6154f0006910ed1fdbb7591cf4432307033102b8a22041599935f8969/numpy-2.4.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220", size = 5207417, upload-time = "2026-01-10T06:43:59.037Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b7/053ac11820d84e42f8feea5cb81cc4fcd1091499b45b1ed8c7415b1bf831/numpy-2.4.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee", size = 6542643, upload-time = "2026-01-10T06:44:01.852Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c4/2e7908915c0e32ca636b92e4e4a3bdec4cb1e7eb0f8aedf1ed3c68a0d8cd/numpy-2.4.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556", size = 14418963, upload-time = "2026-01-10T06:44:04.047Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c0/3ed5083d94e7ffd7c404e54619c088e11f2e1939a9544f5397f4adb1b8ba/numpy-2.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844", size = 16363811, upload-time = "2026-01-10T06:44:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/0e/68/42b66f1852bf525050a67315a4fb94586ab7e9eaa541b1bef530fab0c5dd/numpy-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3", size = 16197643, upload-time = "2026-01-10T06:44:08.33Z" }, + { url = "https://files.pythonhosted.org/packages/d2/40/e8714fc933d85f82c6bfc7b998a0649ad9769a32f3494ba86598aaf18a48/numpy-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205", size = 18289601, upload-time = "2026-01-10T06:44:10.841Z" }, + { url = "https://files.pythonhosted.org/packages/80/9a/0d44b468cad50315127e884802351723daca7cf1c98d102929468c81d439/numpy-2.4.1-cp314-cp314-win32.whl", hash = "sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745", size = 6005722, upload-time = "2026-01-10T06:44:13.332Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bb/c6513edcce5a831810e2dddc0d3452ce84d208af92405a0c2e58fd8e7881/numpy-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d", size = 12438590, upload-time = "2026-01-10T06:44:15.006Z" }, + { url = "https://files.pythonhosted.org/packages/e9/da/a598d5cb260780cf4d255102deba35c1d072dc028c4547832f45dd3323a8/numpy-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df", size = 10596180, upload-time = "2026-01-10T06:44:17.386Z" }, + { url = "https://files.pythonhosted.org/packages/de/bc/ea3f2c96fcb382311827231f911723aeff596364eb6e1b6d1d91128aa29b/numpy-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f", size = 12498774, upload-time = "2026-01-10T06:44:19.467Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ab/ef9d939fe4a812648c7a712610b2ca6140b0853c5efea361301006c02ae5/numpy-2.4.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0", size = 5327274, upload-time = "2026-01-10T06:44:23.189Z" }, + { url = "https://files.pythonhosted.org/packages/bd/31/d381368e2a95c3b08b8cf7faac6004849e960f4a042d920337f71cef0cae/numpy-2.4.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c", size = 6648306, upload-time = "2026-01-10T06:44:25.012Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e5/0989b44ade47430be6323d05c23207636d67d7362a1796ccbccac6773dd2/numpy-2.4.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93", size = 14464653, upload-time = "2026-01-10T06:44:26.706Z" }, + { url = "https://files.pythonhosted.org/packages/10/a7/cfbe475c35371cae1358e61f20c5f075badc18c4797ab4354140e1d283cf/numpy-2.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42", size = 16405144, upload-time = "2026-01-10T06:44:29.378Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a3/0c63fe66b534888fa5177cc7cef061541064dbe2b4b60dcc60ffaf0d2157/numpy-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01", size = 16247425, upload-time = "2026-01-10T06:44:31.721Z" }, + { url = "https://files.pythonhosted.org/packages/6b/2b/55d980cfa2c93bd40ff4c290bf824d792bd41d2fe3487b07707559071760/numpy-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b", size = 18330053, upload-time = "2026-01-10T06:44:34.617Z" }, + { url = "https://files.pythonhosted.org/packages/23/12/8b5fc6b9c487a09a7957188e0943c9ff08432c65e34567cabc1623b03a51/numpy-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a", size = 6152482, upload-time = "2026-01-10T06:44:36.798Z" }, + { url = "https://files.pythonhosted.org/packages/00/a5/9f8ca5856b8940492fc24fbe13c1bc34d65ddf4079097cf9e53164d094e1/numpy-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2", size = 12627117, upload-time = "2026-01-10T06:44:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0d/eca3d962f9eef265f01a8e0d20085c6dd1f443cbffc11b6dede81fd82356/numpy-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295", size = 10667121, upload-time = "2026-01-10T06:44:41.644Z" }, + { url = "https://files.pythonhosted.org/packages/1e/48/d86f97919e79314a1cdee4c832178763e6e98e623e123d0bada19e92c15a/numpy-2.4.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8ad35f20be147a204e28b6a0575fbf3540c5e5f802634d4258d55b1ff5facce1", size = 16822202, upload-time = "2026-01-10T06:44:43.738Z" }, + { url = "https://files.pythonhosted.org/packages/51/e9/1e62a7f77e0f37dcfb0ad6a9744e65df00242b6ea37dfafb55debcbf5b55/numpy-2.4.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8097529164c0f3e32bb89412a0905d9100bf434d9692d9fc275e18dcf53c9344", size = 12569985, upload-time = "2026-01-10T06:44:45.945Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7e/914d54f0c801342306fdcdce3e994a56476f1b818c46c47fc21ae968088c/numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ea66d2b41ca4a1630aae5507ee0a71647d3124d1741980138aa8f28f44dac36e", size = 5398484, upload-time = "2026-01-10T06:44:48.012Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d8/9570b68584e293a33474e7b5a77ca404f1dcc655e40050a600dee81d27fb/numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d3f8f0df9f4b8be57b3bf74a1d087fec68f927a2fab68231fdb442bf2c12e426", size = 6713216, upload-time = "2026-01-10T06:44:49.725Z" }, + { url = "https://files.pythonhosted.org/packages/33/9b/9dd6e2db8d49eb24f86acaaa5258e5f4c8ed38209a4ee9de2d1a0ca25045/numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2023ef86243690c2791fd6353e5b4848eedaa88ca8a2d129f462049f6d484696", size = 14538937, upload-time = "2026-01-10T06:44:51.498Z" }, + { url = "https://files.pythonhosted.org/packages/53/87/d5bd995b0f798a37105b876350d346eea5838bd8f77ea3d7a48392f3812b/numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8361ea4220d763e54cff2fbe7d8c93526b744f7cd9ddab47afeff7e14e8503be", size = 16479830, upload-time = "2026-01-10T06:44:53.931Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c7/b801bf98514b6ae6475e941ac05c58e6411dd863ea92916bfd6d510b08c1/numpy-2.4.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4f1b68ff47680c2925f8063402a693ede215f0257f02596b1318ecdfb1d79e33", size = 12492579, upload-time = "2026-01-10T06:44:57.094Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pillow" +version = "12.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/41/f73d92b6b883a579e79600d391f2e21cb0df767b2714ecbd2952315dfeef/pillow-12.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd", size = 5304089, upload-time = "2026-01-02T09:10:24.953Z" }, + { url = "https://files.pythonhosted.org/packages/94/55/7aca2891560188656e4a91ed9adba305e914a4496800da6b5c0a15f09edf/pillow-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0", size = 4657815, upload-time = "2026-01-02T09:10:27.063Z" }, + { url = "https://files.pythonhosted.org/packages/e9/d2/b28221abaa7b4c40b7dba948f0f6a708bd7342c4d47ce342f0ea39643974/pillow-12.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8", size = 6222593, upload-time = "2026-01-02T09:10:29.115Z" }, + { url = "https://files.pythonhosted.org/packages/71/b8/7a61fb234df6a9b0b479f69e66901209d89ff72a435b49933f9122f94cac/pillow-12.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1", size = 8027579, upload-time = "2026-01-02T09:10:31.182Z" }, + { url = "https://files.pythonhosted.org/packages/ea/51/55c751a57cc524a15a0e3db20e5cde517582359508d62305a627e77fd295/pillow-12.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda", size = 6335760, upload-time = "2026-01-02T09:10:33.02Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7c/60e3e6f5e5891a1a06b4c910f742ac862377a6fe842f7184df4a274ce7bf/pillow-12.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7", size = 7027127, upload-time = "2026-01-02T09:10:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/06/37/49d47266ba50b00c27ba63a7c898f1bb41a29627ced8c09e25f19ebec0ff/pillow-12.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a", size = 6449896, upload-time = "2026-01-02T09:10:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/67fd87d2913902462cd9b79c6211c25bfe95fcf5783d06e1367d6d9a741f/pillow-12.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef", size = 7151345, upload-time = "2026-01-02T09:10:39.064Z" }, + { url = "https://files.pythonhosted.org/packages/bd/15/f8c7abf82af68b29f50d77c227e7a1f87ce02fdc66ded9bf603bc3b41180/pillow-12.1.0-cp310-cp310-win32.whl", hash = "sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09", size = 6325568, upload-time = "2026-01-02T09:10:41.035Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/7d1c0e160b6b5ac2605ef7d8be537e28753c0db5363d035948073f5513d7/pillow-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91", size = 7032367, upload-time = "2026-01-02T09:10:43.09Z" }, + { url = "https://files.pythonhosted.org/packages/f4/03/41c038f0d7a06099254c60f618d0ec7be11e79620fc23b8e85e5b31d9a44/pillow-12.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea", size = 2452345, upload-time = "2026-01-02T09:10:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/43/c4/bf8328039de6cc22182c3ef007a2abfbbdab153661c0a9aa78af8d706391/pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3", size = 5304057, upload-time = "2026-01-02T09:10:46.627Z" }, + { url = "https://files.pythonhosted.org/packages/43/06/7264c0597e676104cc22ca73ee48f752767cd4b1fe084662620b17e10120/pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0", size = 4657811, upload-time = "2026-01-02T09:10:49.548Z" }, + { url = "https://files.pythonhosted.org/packages/72/64/f9189e44474610daf83da31145fa56710b627b5c4c0b9c235e34058f6b31/pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451", size = 6232243, upload-time = "2026-01-02T09:10:51.62Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/0df458009be6a4caca4ca2c52975e6275c387d4e5c95544e34138b41dc86/pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e", size = 8037872, upload-time = "2026-01-02T09:10:53.446Z" }, + { url = "https://files.pythonhosted.org/packages/e4/86/95845d4eda4f4f9557e25381d70876aa213560243ac1a6d619c46caaedd9/pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84", size = 6345398, upload-time = "2026-01-02T09:10:55.426Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1f/8e66ab9be3aaf1435bc03edd1ebdf58ffcd17f7349c1d970cafe87af27d9/pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0", size = 7034667, upload-time = "2026-01-02T09:10:57.11Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f6/683b83cb9b1db1fb52b87951b1c0b99bdcfceaa75febf11406c19f82cb5e/pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b", size = 6458743, upload-time = "2026-01-02T09:10:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/de833d63622538c1d58ce5395e7c6cb7e7dce80decdd8bde4a484e095d9f/pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18", size = 7159342, upload-time = "2026-01-02T09:11:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/8c/40/50d86571c9e5868c42b81fe7da0c76ca26373f3b95a8dd675425f4a92ec1/pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64", size = 6328655, upload-time = "2026-01-02T09:11:04.556Z" }, + { url = "https://files.pythonhosted.org/packages/6c/af/b1d7e301c4cd26cd45d4af884d9ee9b6fab893b0ad2450d4746d74a6968c/pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75", size = 7031469, upload-time = "2026-01-02T09:11:06.538Z" }, + { url = "https://files.pythonhosted.org/packages/48/36/d5716586d887fb2a810a4a61518a327a1e21c8b7134c89283af272efe84b/pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304", size = 2452515, upload-time = "2026-01-02T09:11:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, + { url = "https://files.pythonhosted.org/packages/8b/bc/224b1d98cffd7164b14707c91aac83c07b047fbd8f58eba4066a3e53746a/pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377", size = 5228605, upload-time = "2026-01-02T09:13:14.084Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ca/49ca7769c4550107de049ed85208240ba0f330b3f2e316f24534795702ce/pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72", size = 4622245, upload-time = "2026-01-02T09:13:15.964Z" }, + { url = "https://files.pythonhosted.org/packages/73/48/fac807ce82e5955bcc2718642b94b1bd22a82a6d452aea31cbb678cddf12/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c", size = 5247593, upload-time = "2026-01-02T09:13:17.913Z" }, + { url = "https://files.pythonhosted.org/packages/d2/95/3e0742fe358c4664aed4fd05d5f5373dcdad0b27af52aa0972568541e3f4/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd", size = 6989008, upload-time = "2026-01-02T09:13:20.083Z" }, + { url = "https://files.pythonhosted.org/packages/5a/74/fe2ac378e4e202e56d50540d92e1ef4ff34ed687f3c60f6a121bcf99437e/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc", size = 5313824, upload-time = "2026-01-02T09:13:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/f3/77/2a60dee1adee4e2655ac328dd05c02a955c1cd683b9f1b82ec3feb44727c/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a", size = 5963278, upload-time = "2026-01-02T09:13:24.706Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/64e9b1c7f04ae0027f788a248e6297d7fcc29571371fe7d45495a78172c0/pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19", size = 7029809, upload-time = "2026-01-02T09:13:26.541Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/c1/1d9de9aeaa1b89b0186e5fe23294ff6517fce1bc69149185577cd31016b2/pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c", size = 1550512, upload-time = "2025-12-23T03:14:04.391Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/40/2614036cdd416452f5bf98ec037f38a1afb17f327cb8e6b652d4729e0af8/pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82", size = 121793, upload-time = "2025-12-23T03:14:02.103Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "testing-python-exercise" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pytest" }, +] + +[package.metadata] +requires-dist = [ + { name = "matplotlib", specifier = ">=3.10.8" }, + { name = "numpy", specifier = ">=2.2.6" }, + { name = "pytest", specifier = ">=9.0.2" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +]