From 4d1094bd4f8169b93a46f05007a1cb7233a3f051 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 11 Sep 2021 17:49:51 -0500 Subject: [PATCH] polymorhic solving bugfix and added quicksort --- bin/onyx | Bin 435384 -> 435384 bytes core/container/array.onyx | 46 ++++++++++++++++++++++++++++++++++++++ include/types.h | 2 +- src/polymorph.c | 5 +++-- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/bin/onyx b/bin/onyx index 3fd0ae4f8b665f81041d4bf7d736c7e887020337..fe7a9ff27dc1f51a074848f2edcd91d554ebeacb 100755 GIT binary patch delta 46451 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 delta 46606 zcmZr(30zItAMc)XqbM&btx|f(mO>PwC|-o@#=Z^4zLcF%;d!26!p{sd24fqHB|I|7 znq|h=_puN6$-ZVu|L?i?mE~_fpXvU#v;EHR{Lb(E?zzv7qux7?dT(-&iY=Hg+ll`c z%+Dw#jb?6TH>RB}b7SAxed`)0%&EQZ#LaO1n~WvAbbB^_cgEIEr6p;9#_?~uIIx8y zGlF`5kR3WqlI;v;=j$24{cBfYL4RiS`=PeX5-MfqYrg>Xj68oY>3q{KR;hrHdXDr(mZ|t)+!~+s!~Z?<4lu+ls4(_w$^aH-dGgW zr8z@dC6|cFh}zbgm0KLGGE%#uFVUtJA!^NMa-)q+Lae(!;b9R(tWuww{ zJIgS;sPy2SfdN+3O32lY^AVbeGIpu16YZqgqrze%&CwWTt!i;7q?#(`>w}1-#AaOESN4 z^{|mWF*dcPCR&j)yL?>FMrzgFL042BZ;;-6*SD@+ZS-XYRhc5yW-jh3Q_91}+gMPh zNqW&gyO&yBU#lv#pvd|3F@JV#D7o_xP0RYvVZ=6iZLf z+|$SPafDW6^&49wes$AB_O>rI!$xmkP}TMf+B=3x4bpY{H%M9OyZ29Ljy@T&2Uc(< zho#>?{D4g#kbW^cjOjY1>yBJzf$cMLj?|Q-p&4b5^_8Tf>8Z!pd-_%rttGXHHp%*w z+zLs1<4hCvLCT?Y!(X+elNpo#3UEXVOV6z+>kai9V7RF*u{sT=wk`(KCx4$Ino#23?SF6i*%I_M#cmcl_EY-$8EcmlD{_SP9^36Z;HwykhjlZja z-}@tf5%_JDW|}~HfxxDZ0ux0Al{NmL0{%CGZ;t#{@ETywp^Zcjb%f@y-h%ih z#wLZQ-@IInwQP{#awV8M{qkB8z9r6hSV>QBc5RSrM{l9?#4d4Ic2OuFq{L<%xps|9 zt1?#KYR;t28PD(hAUSn>Y%6zAiO-mKcb&{!o@X@3=_E;*`3HHDbTMPWqfkjYoRR(b zF_$W&Tb?hH%ozzUK1kA@^j5C|rOO$kUY(Gn`Ng-d7YQYonx(>asQ zRZ3(()}l05NiUtT{O&51gF<{PCp@GHQq-s$lIm2`F-38vCYo0LG-B#xji`;$>$)bn zoU4)=@eUciq#$XrWs8?|-jT`wSY`!Edl_>*OU)}t(UL!zD@dNqV-2mYAf-w-EmbQ@ zzD)AB#8r}hVA2T7)hbek5qyX(i(;EmuOMc~WtgHMZhPKg*aJ(f~>Fr5iORU$m1~Q!2%w6qh5{sSjJ(q z#KU-B8ECoPQ7X?}&W^X)4i_sxIb`wdBI%eEOF`YF71C78U)`iq@HLj}-KCncRM+C# zM>-`*xt9O>O0^{Exy8GmFFNHcQYnNtUEdmTD=| zv3OR#vE|J_(psUw6{n;jEIyh_otC;6b80GlHG%i2$x=1A{MdHMWmlCn|@){B{pe1-CWA5 zGTkVP?pJn)2@_q;4oOl5W&Xw`p zVjEb)@2Ko%=7U1@HnT2ldM{eEnf=S^^rbOdn4XpFOFwU6FIls`G(Ur7O4lr{wlXJ4 zIz?T#v3|_EHyzx@21*|+)wi>;jM;amwL91eX&a5*$wsn9T`doGvRYiKN&&lBCFvG5 z-_6QMcj&v_EL8e|7Vl<#rGFRhVbh9t{zmn(o=QMRi+K;5z@>v0$NkKKNmr=ULG;_X z1GPTL8nPv=>4$?XP$JrXkgZ}p+fw&Kte-T~a_A6)`#5PSlg<9&wS3b~Cpy+^@2g82 zt=iKNe}k!uzx5uFeg(l&$|Sp@y0i`;S+ntHF8Lp4XOr6*%5 zG=p?9|Aww?l-&*&L|F&=1sBv{YU+PLrHjb%K)<;=96sk8Ov(O+wEU!u&@4^P|8u^n zsjo^mHT6`VkS&o|3mv$crgb2QM*PLfRxhaM%noc;b_eF}(Aq2PhtASej|%Ke>LbeX z&tI&VB%Ptlf3vE|z6N6_|CD;gbTg)+u!$FrXzsrMWK)>yAZ{0J9IW?@H{QZFvu2Y( z6ZNvWiDa~YHIUmW_80Q<@6--m_(QM{X4^SX{t4z;z9h(s|GCe5<^ud<&!)Yn z`u{M`dSg+vplk8y`=?!7l8UZf(7HBzirTeJcqo0ReC%4?j%wSgt{$i@9LDaKl$e^fKdw_d{u3VY#+&Gi+5Ptp7~j-QdHGgxx)90`OO)czvVe-d zDAHUMF}v@d$VA^wVT}c@4caz@N;Lm0t0AqT?6cSfrqXLXbn%e4Hb#we4QBgy6DaH) zYbXU#(m59Dv~2=-5#o&WemreC#|+XQdUuZbN-^Ylo(&D$G+xzO^|fkeL-5eFhIz3y z=|*eM!_{A;L+4qwDDUx@MN4DcEY1TMFZMGMGa~41?DAfrbQ4IE#u+mgEBFu zL7vg(*nG9s%J6Chtr*!KvdHHkO8_d;wAkfy3 z@&Ex$nZ7jQ607SFim5i3?8{NcB^D5*$J9EF(>%227h6PutG*4FPY*6Jy|1aGKIN^H zcuMu%DQ{Wg?Uc82;?b114vA-}{$-}8;g{J+>36z)nT0xs3omC1ixBQ@2?bnXwXoH7 zxWdBRcK$3lk(t8ln8J1mFY^m6y}}|(J7C1-gg2;LHzO5>o099GOFd4{u3%$4P2XH) zL2^1&Ou21%S%*#;VkmBU3Roq()4r?FPZ&M8%E~9}QhyYM!?9D$1z>WC>*Gf8(%bx7 zs@GRHzi8>Osj;W956oP0hBY4>r_Gt0qWm+lsO=(7>Kg6OIj?PoIVTFY+a3O3=IklN zO;Mho$gi3kVv6$pgs^a~0X4#%>Cy&jv#;)Y>VAPbFm<%)Uo7_sI`J>798^MV<8?mv zMoFIo^Hp^&&IHEu)*)ajX7azrqNJl$kzHK2{xSe;Vt*tQLQ47moge8doONS7j0 z?lst}1C_td^d%0AW_J0*J@bdVgk~w*spEClhH*z)cb)mcpB%f+0tQc>7#sR9-uT2| zE|WQm*|jh}!m^4p#fCI9xjiwYoz|s3an@`c`;r?v(%cyHI!FvIwKfK)>U^cW(7BtG*XfjbY7>8rGe~ZoT6>LiBbr62+dsTH&cAw3n zwF^3@DZ7PfbV!S|SC|Z}9BcPp5HDa%4!5>ZOHV<6(Nc#Hv6wMXM~G^m!MIK#$4A_36GYK)PNKpk&|>uC}P}W^(=8~3AfuLLNjzjWY^05nU^o@szz~WJj|}6 zswbfxqy6&^ny$Xk(-hR8^xgx?c9xLtcE1!m8VKxK8Ap>GuqhES2Z7>qQZxT-5U;fBvx+mqU3U$`6QP_iyw7A>Z9({ z9H4S*d33ek+>bg}ZX&<)QNHGb!nsPjC?@r$J;Geo~?G62I`M~7}Re{mYU&00jffz`+LiOr2O#~iXVL>$ni6oG2uO@Zo(76Gv? z^#ew4FuqNxi{WjDA2TsTZX0Ou9p=?P8ydl}F$CEjRUJKW{58P=`sz|&2=(QL>QWD& zt0}q8y3|ZHht&k>Blvc6kC_T8tyyHqk zKrpS{P?73_FuqP=d}%F3)hUw=n9nGHnkH34P)<(I%kLMb8+zCjcC#&3t2uHqwfc`W z?DZ2cW$j)pz6(gYi6G*W`IwhmI0LEMz&50ebwTAD0Ggs?4B6AV46wEa3q7UC(!l~X zPuYha|Hqml#He!@esT@9zsu@Y+hBoP%z9rmEz5wTfGNsBm*y`_$dup^XG#v*6NF_F zopMKtmF_6f^ygg`R5usH)@_f`_e{C*KF0CJOh9XxS~?*}mp1D)Iww5b9HDP9M`-}m zIjTs0_n2q0PhmgREx=m55dUlous+9-weftm6Iibl(ha6I*bz?a(oVvBt+NV!$4;^D zSi2PBs^^3rO!0b86HU3ts?{=FWUd6cxX{;ICrsLz&eZVFwy$AXjZ zBybT5Hm!h}o48P%j>gF54pN+Pw5QQM8%(%T*A!k zX(v2V_DPDM<|IYZB88O+ znh9mwwp*R0nLh2PF6|Avu4H5V30uV$V2->zn2~=S$s_p*^7pE})_GM}%+ySuV<|L| z?jKbqnzyzr#7&Jntx>?VDXaYn-Palftl$VNro=h~OFm9ydo;hl=!LM|*yJGL@~k>c zHyTu2ZGA)!pA15*YCMd^=J4qPj4tT!%$NE3`)x3@NN84^xkrd~5mmd7wJ?pE z-$&Fvk|x||wMuo{D%^K0R$pwcnpJY5efOE(iRN>=hy%t;n4tOe^ge4)V)t*K?6N&6 zG6!jli!>~Ug?V30has2;>!Wu1qfHd~M-Z?xSEoHWtfJJB?&h!tjz?CAJp>6@3YNGB z#XMjQUB=Z%0k{=gwiemC2S}#eTu#mpS-2Zi2Vv7+S&w4ovXZ?Oe-F;3dv_Ce-R#~!;a#OPI_f0 zIPoSY{b#`wLm;4R?2XQwod@*Cd9Nm7PV74h(%Wc!WFG|kSsFV|uxG(fgMCzEzXC~F z2DUmE@kYgpv`*Y3)?VsPOCPZ%$;-a~bca5q-26lA&`I4)VF%)DyE9S}M*D5RME=_4 zll@s_Euv9gS-(x_HnKh7Xj4}`Ht74BzS^!A6O52Y&0&Z{fR=4BMOK0=#QZe5cmz>6 zkw(6lgTt=D6k)c-Bb-+W}NiUwV7S8Y5sN(POPRMu=Jy^}dFPGl^9YdgW}Vy3bhvOS(vto-+?e#iaJj zYNDT?Gv9_amxwgeqtMgvBFg!DB7}{P{dDph0Q=hHADe}Ng;DNv=9gThFkr>rqHYTj zM|6$$SzQb1h5q8E>cwn(<@1jYF3R_la#srJnj<`3h=)Feb4Cv1iZT)hN1LX;fvU2j zMBHwd9px(?#!jBr+bCo_Vmw|Dz2^LlRbvwbF#Et2U=I(gEhMf7&s-9D|5nGV>99Ve;Zqvi+6hc49W~DMj(jtcSL- zg}TWIT@}^E`qR(vnLo?_o%X(mDO9jY|3TN^vp9BkI#tetX*Z(gc$90MhB}hf{v)w> zSee>Ztmj8oEA)z>#Zx&+<~;TRDeu`I;E~JHo)2u2cjy$+%|yMSz#|6AKASHsUr>+7CdYTeU`)022BU+?Js$%U5zS7_jz}vmCE-gANHlipYpCK@Uc^Yc zw3;~4!S@dM=yVSttr#1MVLw&|qln3VyQl~UjnWW}PRVDw)b&u&nBlP^tSu(W!3?2-aL)Maf{egMrt)o(7yZQ~yJBnh7_9 znZV>jMltLYMF5H8^A^a)oBHY#O!f&BDf7Bg8jY2CWmd&r(`RYQmU$ZUaG;j|L;EW#_Yu||q=;(=r=!plhAXmt@DjM!^x1G!95RX2BL z(%T}uDZ6J+KlhUTD8wqsn$||rprX8iEV3}Pp(yuckNHOtt?;86^rR>+=iwbGcBppn zjHa;CfW@#vu-Ga&aDSfK{Qs){j+QxaH@ptq?!e2IcEgq)ol;-VbZJKcs@=cNzHICD zbXxAfYc^Ys=u6DAgKFJks9i+BZg#%eN;NQRJW$mhQ^XN1C128|jt40;OBigtF7}3X z5K!gV0V?ar1C#Bv(&iRg>8FU!KCk||pqQQi#SIVGul1%Vd=gv#XW>LMLCySeU#A*^#-OQ~eV*+j*ox}ziXMJ2?)b5hHCM9ob=)|Lv ze^M>Es~!iY!TNCPD0EOs>hW>(YPSzSNa^tjwLmAOZMCK?!^oA$uSkegrlS7}lm({D~un@~r#EJ`}XJ1+6KUzQRz@2v*0O_R!K}G0*0((s8Pm%HpBiZIqX|l$P~)dg?04dgVnI^jfU07&tRuWLMQ? zX|f+2Ld$hLB&PB(VW?qM#KY)bHAI}P+XpFuvxHtgh%H&LRaR`-m;UguPj4nJ}Do*=d_@++dzxj}l!-Qu{#O=fY?6S>%_#jRurO^w|XyetC z+#*TGKIRo5PzeIj#;nk+Sh4e)QFA}tFke019(>=L0e+kXM>R2+j+Nv!q!7w0$ty^X zq%XyzoD6HQs>O9aWltmxFU5T-Z?0xL7bzYlSedO_as4N9Ay|bc!b>LFR*DBz>H(qw zF}H&@)ma!l=D#Y$V?Pz2X`&*oyh3t9C!w8t(5CWVeHfjZJ~o&WB&Bu%=df}doOt71 z1VSojb|lUR#w4^Y#4#%fS3YCsUG?ihw_ zTIb5k)Qb^(bK4-L9uj47#%{35k2Ouc9(`q+f#ZP^s44c8b7HCp2A%85)SNPrq zN;P`o#zP|YDA(R#%xfzKBNmLQ+K3=TycKO}7=x)MG>AoqZVz=(c2B~xF~y2Hbg7-F zn>%l;zuG=8|G92hjNad-oXBQ)d7}*>p)v+<3X7(L?z}?Da=_G)MC(e5AgvU=bLRnU zTNL?~=9L{~*no(s>r?B}yiGaB8KS?Fg3#UQf)OiQQ&kxpca@{F=um0wh3PZsU1_d& z8Dh3AX@6m2`QcRE198&x@2QIiuj_mP9y#8KMCxN@{r9xog9kRb2X(@HwqYNI`_PgP z(YwXgp{&PT#n%f-%+Q?3T{w|zxLBz<5xfg2^dl*=skkR^Sh_dr67`_7-UW3j&eYSB zdxf~F6Q8B-M{yBBi8s|$Ru<}PfI4A&s4cwUf8{?Dt@Y$VZ1FTYXdsgwxN4=By2LChGWBJjZP;cm4vg*hxk+%Ysqj*Egvg`RkEw_pQQS#TvnOH>;#YfEmZ+8eQdCvF#040ZZY4R5}S z?VU!Cz4>Tlg8KPz1GV(!MQNK4rg!@^y6D5Ju^H2-s4s7doJcEQ-ca(R?|l)Go}WrP ze9?tJrqT^x?p?7_pv@%+lU+GQouNuF@XDYUDt5?J3Mj)Xw%HnsQJxelz#O(1H#sp% zV||SBeGTNKKf0~C(e2`l?+wP+u=JNg`O0ylu;U~c^*u%0Y_;7>-fEzDrhU*S?GB_HobyAI&)c#c4d@p=4`u%@pi_G8%9P1;SI^6{o3Z3vo_qPNnk+U?UD|nd zXcH1dhEAAHbjn>xsYEg5`FHI4SlU>g*J|eVjoL+T@i4cwbJ+~_@c(Gcn+)1Mkp{F<>E~f!mYugt7;ZTym?XnIhilK z?RRmeF?fOc7z65tk~s%qjiQ)8im5juu!>%E5G&*+tm7FVHM61~U!oZL<$(l}!8Bj* zfC)pof@%eEzcR-vV!`W%*)uF8(Kt33S+>p>`q^8Nh6VASu$q&QWWW4MPw>RMaa|?e z+H1*49I5)8Fqos^7;@R@mImXIc(Z-dEjn3+mv3zEC_y7BZ`3o`8=S%H<3$0peG@nJ z43?$s5Bt@PVE~p!TBx>?6ZHe&(FZ6SaQ(3o_i6L%DUr*WWKg}R&6O+}rFyqvf?nv_ z`ojd`P5vSg*ePYKgRGnGCXCb+IoVq^m}ESJYec5AGH>n>s8RK_tTK0V&yG^nAnVng zSPfh48`H7Myj)M0c53mG;$d_z7!;bX1WX@Nyw|b1gbMdBqI*=28lxz!D)&#m zH^x@YudpGoaX7?{@~MbmapN3sQlgrfCi(}7)j0$-%?h5OxQ9&v=$_UuwNpP9)Fv(x z;9Uh!R2uoLwW{XlcWjew1h z%}#bo5%LJ(jXe4!sdZn7!@H@1qK_2>{UJQw!%kzO;lgSkD_2I*nGoK_pJ4t5laoFk z_AeSgW-yKTSi^UtC^nQgc1>&{6z86VhcLs(O3H9r9Ll4l0J<8=y;$}LdL7DZ)Jz`% z4|7a;Uk0xwaV2tx&7VcLgE{2K<6vfoq>u=IF&X!Ow}l;dt-;Gzt+E{6$d>OF&h8y* zK-_CE^hv-qnsz61Mbf{F@LMCw(1sd(aNC-RFc=drETkqchdU@;)RNkDZXIMqnG3$S zf)|Miw_U*#+z_QTKEEj}jy3~ma7~Pbd}&5a9?~EQVfm+T6Aum7EEHWI*j)7q7}Nkj zA_TM+4KMWGqQxM3S(8t6ZtkKQTs$61E1F!3SJuDaAVoCtOoUD%i-NJU6*^XM1pc6d zWB~nDi$|B(2v|K2p`CR)@(JT!L5A9zo%pNs1=oOM%fVu5BjR0_!Po)|Cvtflbq(W{ zi%%CEacrH`m*$1>0a9Cf8^%Li8htCA5MppFqyv)TN_A`VZgKAYMcwU$8R$~SVl|7y zfEI;b1}nZ^kS=wkAZrV^II?Bxk~3h*ss9^beL>0}L+D0rUZr?67S>#Y@wzg0AeFAe z>m^_DMEz#x!Pq!6j|m@Z4l|Wi*H>tHtgi+riy9;8NWZyY83$^C z$*-7NwPv_(wQ|ISlZs%9adM2{-K5TRAcE`J%7J8!;APnKzT{As*JyMNRwe#}G}&`I zYa`)W=VD^l#%KpREqsAp{0f4y0;weHE_g3(_ecA!X<}WN@`av6b$Knnn-!py+Sn23jomr=vG0o1-8jtj%9)8u+QRC1?H^|+5) zuYE`sN9;>>i!rrwiA_5?uDG=&U9ZP~kbG!lecp?W8%XEs^Qz^J3+0<4Yc*1BGYk(@ zTA``1un9=!6j3TuU?gvhFtvXq@5$1>qoa{L)P?x#!2NZN;@moPQLQZ7qrk67Q>B#I?87 z^V&8i2J*~@VxqAz?<=9M4{xliOuVfT>tlqwI$4kLP)=*?T~JLXY3w!{`=nrJXzV`) z8+S=X>6#jQvtZ8$Tf9_@?ue~^4JgqaVnbg=w-+b1v*MW6mhMOM25d=fs@#bCM&HfM z&yPT6EZGe={X`}$Eo+>kauQT6t>zwv>>Vb!CBwrU>w@GnG++=I1YDE~G@}t8hUtCX zh`*Lf(BsBDPHIOHF?@)63Xb75*ex%*8pCU{b6!+3mRGOxmzQcY+ag5GP5hDL=m&2W zwn5;=#<(r1D;cP(q}MBF8qlCv9$8yPKGJ}Ni*)hC@&=Rq_1w5VdT=tF{ZiBP^)kB>*m9j>u5Mqe1xo z&7h09h|mnFMK`_j`zaKXSw~~9(bz);+fiem7VIRA zZPeJU1pB^&P|IMwi}fem{E6-u-66VtoRMZWMIxdOZEwm0tJItc5qv?B`V)MhsWIML zgt?$0@qRM_8@-c&jju(7;YG3mNAro@)CdE^FAO4HD;=qWfp_*WT9%K8It;HI1>;mx3%j zLXU4{5yoU$d&B)IyJZ^DocCuJT`iZJ^AIMLqT(&NPx5H-64D$t#*x`QH>^_wUDORw zgh@LCMN3x1RSx2FmA+~l?nSRkc6+7>|8BeozoHKllO0wMHHb3hQAQkUZ$m(Rk>)E( zne6|2srp1eA!e@Tf``G>$)8rX%d=tH+x?1b~J>rFovZod*MvV(`Fhv*o zqLTENbh{<5l3YSU*g9om(fsO33n3Dk1y?yb)5p*TqsMQX+e}tUc`=23{vl@%Y4deg!Ru^GD-{#TLHoT?Oo;=&~*6tYyS3VWWNmn+# zr^#)(cS(I4p@&3&HGBS8NoqrD+wvgiD+xkPxEeGe2(ihvws@t`fjrv5jh^wK=IyYD zo+?2b+VKSLue4a$o=;*+OHguq-hr+DjV`oDg7e=Lk~;8v_`t*30g=s~FpBEPz1asR z>e`XVR&9aXDW4GvTTf`VIGWS^7EEj=FurtMuuM ziZjKX6I<^N;yZY2b(nzdgz;SG(%1pV;s+?LUi!DmEfI1>Kgx;CTkWvY`}1~2g;LHp z+{-`c)qCN2TO-|&DPH4XVJ3-f3F%xslnByy=G7`LM)t~p_t}Yo*iD;>3`I)5nzG1; zrP!O7iXFp!#%&tgna4QK9j=9!LD-~ZI@*~}_RfQQ$(*EBAAwy7)o&5i=e?j_T@Y7{ zp;cXYd422a*r(NZy<+DPvGlNE*f)&Vqm746JjOgAU+GSdyYL25LkjN7uS>0{L^nQw zy$YqV-FPbpd&d_r0 zvBH@qbmzMru52xb2d0nrH)kLeZzHqJLswbxKMj&ci`^T~#!(qkXt%ay{&zpDs`9c8ufG-hRQ)S)i?b{srAy0c!0xSII%}_gQ_fM6_Ob zeONjEIp6WTbs-v54&~5yeR(~$W&y40iw;k(OiEuqn<;Z>^taf|E75P?^6>g1G!W@w zyl)kMT$H5^Y{`^x(Y)3*pCVs$;gDzn3hsxMdAuRD?FaST4APXaq92cBvxDeXKi(=l z2ixFhov$xy{iO3>@<#|;I;2>>>yMi;&cm^NijyR)|G(a39l)(VvwX3C7%^k`sKt09 zCs^yE!BkJ_Ne{o{mA%5|s<}(V2lteIXz|q&vegb?@F% z;0O#E$IKBtzV4v6@9~A4dMZ(GH5^4)h!rw1Pb&06J4D{q92v^tg(hBmpRaVZViFrs z&In$cy_-&fBawPOa|E%6F6M@qme>7Y1kt*o=YaIn4L#CN*ZUYgOPG8@`L`2-PNbB~ zt@CjP8$Ciu?}QPEchzd{05`|Ng|>8+g!h5|%#kJ0uIgJpzLz_XW3@;}gd-rpX4u}& zKu1RMUQ%QFdlWB2O-J!G=~p_H2>AXeJ`qO^6;4g$@ob4VofyS^=}{u@%F5Z00ZF_r zJLaWvvIH{HhIoz!;%!5QkLD%IEq?j_bDN*}xx1S1l2(l7<*IgsoY1V3?W3?gVo^2v zvam>vDpl#}Xzm_U`b#EK$atynB~^TXrrdw=MK8vq7s{QB)NBlIQ_{Buz7dU1X;>uj zsYoX;YfBr(;K&81J(llaRN8W3EY9UD<0%aq&npF7bh9~UaTmli{5@{T81~(it#5w8OjEcA zJ63{zn*sx0Qi4u{$A*=l{3&>2*Murg<&}^Ig=iJ_#F-{fe_&spB+Wi9K+lY15E~IN(I<#PcU7Iy()q%y1|AFpXCh(kW=e zo7$$JjYq|4N(#6Ki_`BZIO8oUPUpd9LyD7>in=*@r}8qDULJp+Z*G}yO@FQ~gS+>! z47wt?z+PV$zg7ZsY=?*P;W+h7<-JSHY9jXUNkP&0)ayeNI+@B7q^=Z@#?N>qSU;|y z*$>sC_M&J4IZx-c0wy#OJ|;zRP07`b4v03@F*kXilG|K2qk?u2C`-Mk<2_rJ1N||b zcPqJhH`bsjYzrRZ8;~D5knap$ODJ##uU%`x0|`q+If2L>seR|^_t5kleA|Rx-xpaA zb0kOFO!?!;`vRBW=ML?ff!%o+;i7jOD_@l6&gOp9e6z7uHWNz<`1Q5_V+x%#~;~>cr)&0Dhul26FyT_y>Xv7CF0W_I`Tc< za(5$_xx7O~eOxxCws0u-f8cSB5h@KgZE0_?>_zRWhcltP#CAaeMH z4`VN%&>t&!DEp*`ESVG?LAC;f8$9kTqOq5 zH!FE5sU!_viMPLG6@r2E7Bn{ekPvjIz*X249x60-6@tpc2emmlxe9aAO3}m{twt3= z)P6M%{G0A+w419Di6z|Al+$nx^zra6Oed{qlnF1cE!DZG1)@kq*z-;|3t*YAs ziL)V1HUPPMQ{$`^NQw<{`U8l+4H+ho-8X3S9~ejH8=837Mi5_L*N{a5nQueh2_)2p zbl(Kz#5GN9pFjrL5dCH#4mM=QX71uvK3#Qf71RfoV?v0+Xx(Ps#i4efaKe$*sl*oU z;nV*aHYu^+i=`x@sSs)?`{hu&W1GE3gqr(jk8uDDK^Au8xVgRGE5-5FVW_0LN%8(@v!Y6zP_j- ziv%*?hP)FmgK2v4^mj{ATF+K|Bl$@*Ip`v-_{@%vHqEq=yD_{IhMAwV`HS0J@)NS6aZ zP94|8_6TIC4GB01q__=9708-nn%F&o#M+Q%htS+DYJC{J-XP#)4R$#U82j;IbYtfc zt>AgkSO*&tkqzW|w#Hc^khwM_ABa?qqK=^GvBR3cp(7CJZ$pBP0+DTqNg&G(X=0BA z(!hqaJ_h8mnLQvNMjok ze-_A%OpUWqAd@ob=~;}!+eS<}2cl)CCUH?9?QBTB^FW^N&^W&cWR4AyE&!=wL;4Ej zh(#027Ra|Yr1C`|%!ZhONJ}a75{COk!1V>(n_b$bmE3*_!lP}7*JU8CHe{keHf`0! zt^*O#)D;xHpP|uKUV*?28{%*kh~9<_63D(Sn%D_}bhja){{nfpS>wzX$RZo^S|DLI zr1Ld2cba-#N3VAac$fzJUkB_Y;NEQQMy-~+ps^-4B<==~+ka@B^#Yk$EZz?|@@( zLuLWNH#zhE!w4P>vXM_Tg| zXUZRcq;oG3jRsNdEAC(N^%Uu|TOl4a`W5QgwupAV!ufReBD(d8-z>Y9wBta~r%6d` z+B}i4MlzIcz2@z3DY#B94gmM?i#)lQ+Xb}g4R@m{%jBZ;JQo)Sov7p+9$Y>$Ph1E~ z#`*Iw0wM>+`5o>X$a)+{3w7}JE%kkaTS>bY(B?PzW-XK+yurPKKkca0TV6f+%81X^ zZmsqMPCX0v~l=YU|H|q#;ym`YBBz`{2 zCf>$-Tcz%oWjq8`|0Q(^-nl9zNcWEWlrM!JG{b4x6%Sky`;81o@5;lW6q?7ov1{{$tr*=iUWvq1LE=0{94Ma*q2Ld^YUf*1)IQzDLzzD0eZF;^ z5#05FJ{$6u*`O}`lKN1nf6ABCae_K<2yOkq=X;(V{6$Tt@%@gnXE625=ihpC{F0k) z1~;0n=JWFYgTB`ew?U>xc%v01S-aq4BXKv>V4h@9@>VVgkRzoM3wp?v*l(>C%#xRu zc%CFo-S#_09jJ~ZH)hKR(nLuf!^WBEr6m8tF3qL|Onx4f_zH(?ai24CFH#c7gFeAe zN4$QG7j(@Wked)cQxyp0O$8NEUzOY!*E8yia%TJ5bcExR$m=7Kz*zn(J>arWNB2QU za17QG9OH(m363jxD3S3Ph}rqoK(GgC?9Li{qhR}itz7E=QBMWmPC#R1Pc1o)H+Q;%Y@J$_ME zrT=gc^raeHTENpa_$ORWQif=-pMcwG@O^xP2uGrp9V*~*8vN`SV0?aywu+7x@RObt zTwM0>xzO|fbuwA#WKU1(34w1{ennvV5eUrw3Zs}{jQR>=PBs{wzrrXb7%;}-vZr^@ zSNPsSNjfUwBzyY2>hb@5EhiNBZx4!gk}DNuDOg+%Z>glS?8U8?H#EXYc6T~9%{Hsn zem2V5LW+k*DL%81a)d&i<AlR|6N(I0$u6Zo%T4( z9^OsAB9QVM1cK?Yv%E$=H|2dkIlJKFUSVYxSlL#Yt?fifuJUL$bpkzfmCLf86R3on zTvoitb3@yH)Cv!lH=ag->U0%(U*U1Wt?79b?T(S|Dx@^lD8+v&q&%l6cZ_RXA>lWT z(5aBnNhLVdDI_?(r3n{&9lphNz?l#KULdsDj z&M@1>JK88w)zFUHV#4|M;`7+Q=cb@r5t(LoOkaNZdD*F*MZ zNn_{@IJlPN<%x3mfI>VLn9BN~x?F1Q zizfdPUhTRDCkXhk2A>sPZG#4P67YNtzABvA1P$&f;NBX1N4Tmu4IUui5EWkNi>5qO zu;_5%n?AH6e_z?7-+!(Ce|p9W=k(WC81IEw%J>RnieUWo6^1MrQ(Mu`Xv=%RR|K4d z_isffeBmf-e}(TRc7ZYr%YZF^h3&f^>>RpT1}gj&*EN;X8mt%aP7Pj@1^8DLrnzOH zhZ!1u(_YYrYH%$9x7XkudjQuLu%{HLk+OD!R7`_o1pJg*mxVzz^h0$QRk%p}pP=v6 z;FG%muhQUl0yb;#MO-PwPrHh;MY;;Oiw57=3Am94_Z4s@4OVslc2QySFDu)#*YQ-b zETWdb;;D^zE{ms0WyM-SAW#r>6~q9G$D#1Bc-ja7?+#xPSTPm?SSw}4TKNjU)kN@% ze}!>o0vOLIIsn7yDBw#Pd}Tb~EET5V{!q+7jTjW=ZFqqt@z6xe)^V( zJa%c3$C@^3`Vbrh?u>qn`?ptKgR+L_OqE4l+emxaj0$$UKUpkaAct=i>ff z)uluS{`?9fNyP9gzQTATqSaYnVN4Q?5plEuZFzV4ia?r(r*SE&9F|0dukg(#@SVve z5a#=Wo(4iE3ub|IMT5NrykCQVHUeI&!2trEtHShaAjUpMqgR>)bx%a&AJpqf?nmrJ%>6-)xj*1~lDm_aFePXC9E5bSr=r`4AAYgk z60eqB@Lio;2g`Rv1?b2}%<*0g4ieM3N`r?AdopYA#8rS3HTc*{z+E)BsDK-3ut`Ki zl{8o6l8{|d6b&+FL#SB{5>udc;XR0Y|i)}gNmlwA&i^0ff6N3I6SHHw@Lcn7LjN^oW-{IDmI8F#SS-?0>2$%~P#|Z(?SO6Hu z2>}-uFpd*|i+(STqE8x8a3z@Jg+~8BZzNI$dm2$s2zMM-Z zNSP>|zrv^@7&uN;!W;#Cg>?O~cNBO=Gs6PFIoZ zvqv(yRF&OW?l`JYRqn<9>uoVsmFr6g0S;G_C;BgsLiv~Y6(p2z5UZ9?YJ&2t9PSm& z#qV_Y4wl=o?LDdFT<%3J(|J+47%cZe%Bg;Jc?}z|82>7W+#f%h)iOk0$;Nf3mmzX@ zcC;?F50yhpY!|=tV+yn2q1=z4`Jr-v&kT(=Q_yxrAj(!>`>lH?{t1Nu6&(in}OJ7SXjD@-&gIu8Ch8 zbL&Ep)#VVHRZE`2o)smhFu9&M;f2ZVrRwxc7*ZRiZ|HWIJhxn>Mxu+6jY=@w^Y1Hu zr6#NaU?pHR(mwcFXy<%dP+MNb_SsWp9l0sPEqJx+?RDhpjEd5|I&yPXS0z@bKH;(# zd(wd>hs(h%s{{QZo^w0UwQ#u#>(c=r5Xr&f;1MBLF6+=iJ7FY<+mpDU6OA9Yu)cVy zr3@F>pp*!?Hp^&FyCUS8Y;t>g5+PR-S6b@I;mo_em=9Ol(Li>gF?Hoq5$T~HZBM=Q zrF(%ZSaX#LU(!eAeRi7$u7dBmwL7aL+E8A7xw80oSt1dScu~7ZIfy-JO_TBLe7JR?;u3OWaa-Fu zCl@XE2>znwB7z$CCA9Jpnn0(buD7%qt5Xx)}Lw2Cp z#u&!Nsx+*z+}JU*xi$PUK$B$uW=CuB#u+giTBHrA)TZR8G&T9ZdxIgq{ewA61aM@j5S-A_b+ZYMWk#=7)h zJNcj#XZgLoTuLgHSmyIL6XdG$uaY@Sq}{ zVBaw`u9I9ra;9H9$<^4#QuI$J*}@ja)68$+-F^(CbKjs>PfJp@&a$6`OM#u`nUaCd zb(RC93iP_Oe3e}S+C|=stjvtAayYGU@6ejY=B%`k~}OOzLPshEK5&+43yKP2urO&a4ljl8!Z1N z*2EAwlPwIOi$mnrtZ@KUYb|?FqoMLd_J==Z4V6cUBEyhbX1|2dl;QGsEX7Z=0BMBW zlI49vtw+cSrCf`AKIvC#P{s(kJeyyJE|0)Wep`kdM`A0jLG?z;A$S8ac%)p8&3Qv} zM`9&!^QE05Aw9>JZj6*Gv);bsGzxAbjKW938cI+PVCD zGc#w(&d$v4p2^$s%lC1iY}*4{jEY{+-dVaMmBa-kETi zG1Haju)eVkRhr1El&$2db#`Hvu&e+};HLoWMvzgA_tOX8(BO%%Kh1>}PDH?iF0_xI zN4wA+PKUZs!AY|}&p?MxRqo#0F#K#gsw;uPEn(G;hk4Bj}=lqsw&K9M*v1w~w68{wfVW+L$(~5pGzC3vX-doC$I&pq7Kto zSs^Qvs!YT3=G9CJ#Cf>`nV(He3XDw2@O;5{NWiCz^6E^QHI2Co5t+1R8Y@#~Xnxh- z?jhAqlspZk=0gvsv2SpLsXU$C6h@UK;|z>e9zLh9XRuoQMWdlJSQ;O3&BO(}>KVdDvSzZk#%9(RX4b*T8^J90NXY6;Rc5m;E*mmFo2K^4n`}sL^*LHJo7KX~UBYbU z*=*KkT!re0FJdIW{F>f-!@FDVR58js6hb*vuO_ zdcrb^uFgkm3YAETL|bc2^&`=CamS6sxbV72KSx3uE7D0w&C^8v#%&4WL%je#Xfb@q z`J72Eaz9_*C*{4DKDn1q-Wh>&-LcQ+m(Rp-TE3EE!(tS+QlPLOSS$twt`_vRB^j9) zq6?0&!0fWL&BFHJS_odiF7Ql5vC%@Zk=94CTfz&26`K2u?kIP{ZBXyo^%eACk*$|HzwiMmQw7O1ox$d36Q(txOK9*-|0#GObz7MhOF6T8ph= z*Z~mpn6<2ea8IJ9YuPtWdB1H4jKufWhilTJwQNkGkuSJK_%4JZVzA>-`4|kK-an`C z7#3lyN^fJ(?PM~lvks55aeG_GIvM*@!aDY4p=r;wfYnHSmD_ne8!J3~N|Bt7drF_y zv-QG`?i90uHOHOe!3GRcOHk2`n83X=Qq_%UuDEe*WbK7ty3v-6?7Fb>B+dDS)vrDD zWWJKXKv?}^K%UW6^#d_C1PzgYLLjf|O80+(gAMG=2*`*~B~@-&{kV8aZA4wEo^TwR8P&sIT-!=?6F$nF1Q+Y4C zJiOzNG3eAsYOI#4bapdqBWylFWn!6kvCOM#^e;hVPx>~NwQ)U&Fx-VwY7W6A$J)*HYnR`R*X7mmoPaGnPM$327c_RK6z%<7Uto<^8w<-rwu(SsMBNklv%BF zPULVboMUO>fruJ23IWxdl41JsU^HD z&y#XT%|P5Av}p&cU-~#s+kgEq{Bcf2yt+&0x3Dk1T*MVo6JO^fW7avFb2y{G$q5*9 zmzwQFsb=5hrCOVR{%wW!10?KwE4a~|Yywr~zMJ4c9Wad%}cvv4%iETd)7+3 zO}04JTKMTUwcf=VJDtXES~;^RtgIb3o`koU<-6EWVbv`Xb~Dcg6K`pSQ68#1{*&?` zowFc^)0uNVHwb^~wVTx!((ukc3c9KVQoW!fa9Ho{kU29vdB5Q6xb~!cPPJB?d6us4 zW>w9r`6;Tkg^N8oi_Y1T!Tz_Lssl2%d&;^Co`t*5eJ3|i#Vz1HLG4;9OtS_M~J<6JcN#? z2I38f8o~AbEDhGm-y(AEM;=>pb->bI+(%i25$3TU-H+(SCw<1QqO z-zwzxDqHM#0!^yKE4~Ac`<}da?~Kw|cgi&m`nWrvd{W*8*IW7Jp%^_3Df;>Q>O;FJ z?)t;&bLA9v+Ts7T%c*{%HY@ADdRD8Jl0Z$?&X@rKAx-SU#UGYpKyw0r>UE5F3e9^d{1CGiN;#@_q!*5ocRZ`)<++pB ztM_Vf4>Au#Z*f|VW9}0S1Masl3Lhu7!v@CiyZ=z$w43I~vnoQuMT(2Z^f~4to#%A+ zMS999KAI_f7_)1RwUoBB~PBff@q0Ww)%50l0f zYC{2XXD%-Y2IM7mc^sD))8uaxA=hm4euZOh^#Lw_#=G$-EN>l*&_XA3sm19Wh@8ep z9#Q7$*d0X=yHk_KaVa0X@StIK;bKj=gbO!8sF#_G8gbJJs?EkkdMvLS0=U1`1j_@?2;ITH-y^z*4&*JQe?8A5s~SN(GLv z7D9S7wK)P0V58>Iup?}6iG;C6!<=c%ZIX}0AC3l`3e(*q{6*PxDxAoCut4RX$mR;a zoToF1Sjgy0E=icnjDJ9llbBB#;~b;mt#4@$$GKRZM7sXf(4@om&<{zhT+Mx_aQ_Jg zznx`#H5lFEFfUZ^mLPmPGfNPgbJQ3Za#7y4g)SyxZoKmrDM_pg|K#~7YhN%qnP+7l z)!UBs!i1x&Y?*QCpRg+g2I~gLxmAj3{^z{#O3BNk%t_dElN^p=VuSBcjxm>ddk(2p zxEG{djrCmay*_zM9v@*0D zjzf9Mv#-(9W2_y2|6?g!^%j@!C$p&}o7)T^xIF-4F)*NSJDm!8vjg(|G zdTkEGy_{OS({Qe~7JMy?=hF30;GyHAGxSFap1}Nig3WaHhZBRqs20`G@9VRRYVzH? z^vy}sOZt~I{3NS{hmZ?TvIgaT_>#}UCj89%Z<}_!qBZu}y)7_J-Y_VM!q1jpC zc~IX*KS|LpsRPovmVS{Z*5RB z@&|J@?>(S318&rV%JIjQb_4bSn^I=M$Imv zGOkQVF7Q})CF*RZR%aDae`tUs*P+fHY2yB?AnvS*3uxkETzpCs`*Lv?O`N_~4J~kS zEX4L5BC&JAN9>A?E&G%SqFfwx8yIycr73bEzdEL#Wb)%j>hZKd`5e}vRIgdb)q_L) z1}ev5$p*pFaNIis>o}z@vpUX)wxSN<*((BE{tXHGW2c>4smEnj<*OI_KI)F8qP*uL zkKE(NS(KUPY%0n-Oy^m_OW?)I71|u20oTy$ZrDd>FSE*~PZ+kNzifh0E+4x0{rL*3 z)iuSc4p&=;G?Vvf@?c%=jJW(P&aI;+!m-T@xgbA{n90zu7saDRH5Kr&J(`1TK_q^T z`zLbmUGhvTMO+^6+25w$>ptvEkx#**$Oa)4AH5X7uxB_|0vy1p`CGkD&0o#87)1wK=J2)x*Ol53e=>&nkK{gxRx2^JmJaWs zb=O#p5*6~YXYZlZYs}60Eqyk^UdWyIs74gGAz`}_<91V%>zKkW=Y}DA++N|N5ZP6S zQ}Qcy;Q9OrZ#wc|#F?wiPr_6_wSOV^L1378gu7A33y*p1jNusyiPxXxK9@c8NKos% zvCV>5+3QKpH(5FN+PMr{hm;erZ<$&;>3h`D;XWL0Fjv!tpYtTa=-V5tuHyt=p4?Dw z($GCbH}FnFIZC_1+?`%xl%BuMwI|a}R%z6GBxEm*QE@yYN&+8<%5iE{*oy>%1+7R5 zK_@T@Up-h3@f$2Mp*`psizHAwK2YQtyU5ind(se--9wzb<0Qr0WZvdh;XIk=fg#up z>Xcka3)n;tI2-{3B0s3!*dNP%aOSw5JCk}WXL3tJro*cb>c}KtSehrn`aD78ychZq z{@`OAX1iQFOw--~ZM_7FV8v8xmdZ}*e~UTSvmz`{9!m#uO?4)c*KjM=a`n3uPXarD zZo0*44QV?R#dKu?PcJ;l58FRX=&mNA&!N#7tIg*TAK^S-q8X3I_*}k+6Zr0rK;h`^ z;2Wf>&yJ6CA-V=#Qki^GG3j3$NBvWoQ|+wnyj=5NAX*;#Xd&%YaCir;OT~KYyzP{c z%DheI7poE5`#F5ud7DL*sHb!F;$OU-l5ew$#hdLwIw%jG-`(5j(`{DH`O>1CGR!H$ zy4%$vbbrk4f3W_(7eUP#h)t(qv<5u`tcpvphJ{z4US~xPiizlqVZl^AH@yf<` z+iCJ$R^6*NLSzK+8L>J9;GLU~7SLW!%VBuJG~JF`bm1;5Wp>D`GK{NC*Hu2jpbYpj zwYL}^<@F!)6#ds+e}=A~%=O_4J-2>rUj0H`pSwfjd0e&a;|L`K!{FQjCg%-sV=Dsa zduhrec>)_h>woT!9?8B47sz+M(kcMg@?Ciq0;5mjQ#YKF*EQx`F%TBmn?pPwf`#yB zxwsB{@)@Lu9J`dHd#qvCM6QRp^7W&x2$It`t%8o$aW3ZhvRCoE9QHIGN#qN)3CW{> zrRaOir9{BOJk|Nj7CLy3)%9a}*@M;L;T!|+nQ&E}$(`35QJ4!^4_A}69(Sn z;q>O-4NpTdUSSlMz?Teg8S-gHGz#T!GM2HKU$^=Vq7M>4-t7(NFycuF(`zk=w%=#2 zz6}wLex18(+OR}z_S5+@m|QoCPYXU5j8&~Qvs~6rh6Nce7(ViS2%7MHNuSFb z5jK}0BBJJAnu0SbVQox4Ig*b+`GEH?$MPTidbEpbx~CrIdEHw_Uga){-}rU)i~Pj* zP}vA}mv+^&`8ZfUG6DuBWfz$6g>~}-cCg6)OjdTF*@Vp#gRyp&2803Su)Wr6@EGVP zP=4G1$4!8A9DC}tG-xLv4DbPZ0--t$)OnoG!Ou%f&sHvDGoiAePeJ+d>uK3$B^3v& zfKNJQP>8`UQ1i{%$^pP3B3nrT9A@DhFhS-EgaKZV55l%oOXp-O8-drr<+-51Tl)r@B;^($pswzd;zv)s|7Rx?8hT<+y^KMwA1Ny&^T=D z=ds{_k03JwT}NQkLL>~o+bMtnTmN|h!2plcYf-jx8VFhp;5-;OjWC`#_XHiewn4ed~dB!uetEc~aT>aN@=KoVf|Chx7K8*RFb8+lnEmq>dTb+yl1CA%< zI{&+b2IZ4?($AZj^n;o@-DcfBKpZcaPrpRb1EyEFq(T2%cp;v!|2!V^KPDK5$hcuW zb5VXgUq=`yhp!HQB+HAhFx(l0@wrk=#k{s`%jMtAs##I zapw-}V@BjWf&U+{C%EbjG6S>&Jb}1R=)1DfJ=oCqc;Fxm7~pAB3>C4U3B0bP9rN>< zI9>)MSJ8NltJ;(xU@*Yt|0T?MBG`sVYge-=CxG77HDer*a5+8k1)%EzA8c&a56H@A zK-ro$Whr*74UNtoAL(l!nFW4HnJ%NfG%I#l-)iyMF0kTWm9&+ zfKfwW++dqh78p6mrW67;h1e8-AZ?&cnE|)~)&Vx9EASFe1Qr4{fz$nMW@T`HLLlVdx0J0r+L6O=%9?oncd^1FpdS>8KtcbDB+w0%`!KrrMN2 zfDu?T#ild{u1~fp;Xp}X=OmkAZil~&i8kdspc0T6Zd3XKA12ro0vZ4p#@m$9KoKBz z9NGkMe=Gt6Wr2fXHl;i8*BF};4b%pHA8k{H0t{F;%BC~}ZsC2^$$%5EdxTBtI0E(m z6dMZhO@*oe$A;OIU?4lxrmO(I0xl1=DPw`+K;mr;7j$|`r*{5}eCKw)oj&{*If~OR z{7>jDL=b;R!#SNE)2W?*FWQIC%gwn@{=?%Z(EI+WP1yiUe)!+P{NG0K<9}y> zS*eZ)jy<+1U&uCP>YrL}1mr9(SMIpZKN;!^c|TE6F1^FG4#WXfU)q$XpwYGQRZXqG zhf8hq-wXa-fd3bKm)r)Kb6MsEL6|NK0(GdXD6yb_2ZuU;&;L8!f8v?{Ntj>u?-EUf zF=@I%p)fkAsiJtaP?StRMR5sGl%CCT?5ijdKrrA7T>nNqsbW6odDU8AWwP41!aEl1Vg$T1-UM)n^$X3Pj{;W6S5 zrOaMkFwhJ!7@|QvIqixe6KF&?%#=XGx?|P^8r%cJs6hq;-wu2gXiT4MrSxEf!8aHa zAJ90^7=At=TiFX5F%VmafSLwl0zAZE@CwJU3oD)}6ES%L4Z>{x^iYG@kcgSLODGgD z^R5M&HUrZ=(3F{&6>&ZWsvALrKo5Y1fhL1SgQkI|fW8LJ1a%mO1S2rb2lWN@0*wF- z0F49f3Cd^lBSAf8!H{8CVQmz0R3z`NR59&1=6JpK>P3L^jEKtK7l-O_>fN6do zP%ljL!$8wOlR^1BwAKhDjJfP8(4b`~3D7jmRr`!Y!Yfc>peZY}mE&d{gsnmjKr=x@ zN8x-mat<1UIjIa9u@=h!qY*F$0YQC1mxA&+X)@=p!{m1i^g(?O1I+>r#_T0bnPHKP=rwoWPwCH24}u%UGIC!AEM7Ic16x4;n0?Q^OK$a6v`s z%9mmbD@qJ#in#w@pZ_-;;o^_l-n zz~ycRgG=Tor4RK@6+?_qXjimYy7IKb#a;Z0o0=DQXjw$)qaL>??qFz#0Abw?hGe`u z`P4vlHj8D+`L9)c>$Aq8VqwO`;Pdf6#eOwGDo0hXT>tq{;pWpc$sG06?@{tyQ_D_>PF?~ zG||ZzMb2qr4dYYt!&&JTMaC8`e!$qKh@lVSO8?eia41g0)5L!G!0}9)*h-8jk*$m% zr+Z>sY(O#Ko>%X%2xj5M&QSbr)zJ6!N)mU>8EluUMP5T!7G)EHyyla zGTs+UHC>fYv=O3M@EYe*KLFlk@Z56olEF)(PCN>}2U4|MqSp{Pl*v}U%*As+)*66U zDHpFSctNxdQJDKcgjHMh$1@TD(XxE%J;B=xUYA^YBf&Gcaa_6S zwX>C`JhJA+O$&snXsuY*2b%OpPeDl!#kK;2i}FWe9bp1KQ+p(i6C&!;?nh!3I7_+l zNbF&Zqk50UE@G2<*~$`1iV{oH>c?UwG?1jnqPuY;-F_^7WlSX}S^QFPsZVWWv7r!L zpJvNq2f^2yF3MsR=bql#N+E6qemwR01JQ=Osd$Fi#(0{(%|O=Tze3X~KpozqJzvNW zdkCS8sK%d&BeV%k1r>WX%T|7;d+U+I7k`T3!h+^B-SXrM)V5IR+6a1GeolasW@1e(3Xln69~pcBb8uhW;C0O= zph2Mq!-Bqa^|{zgn%*CS3W4gZf+e5=A@t~lSVJ%kqLP_n2c$V56IWR-W^^D1|qs#KN@uFGLkb_aH;pRqr)g)zWC1`C1%k zOrd+P#Y<9hLrelo(wZYEh1+jXL-B!_+?Am6yHMX1-ilR)p1r8eTXCWkgbDL|12v0= z;5Gze(eLrLKDVtLRe6VU2%1lw--&Gm7D;P3?P;Mu-=SQt)7M!@{{Tg1A^j$+>1vkP zTnLOIxA$UmWVG*lv9aK?kygBiax7)M7ekznCt(J!mmaUU)bZ$OkJ7*osJI~9&q7P{ zimO1UK8T%!z#HWDQFN0Q+`xi~BP~3Ne!g&)SlAl;Q8XFR#KwL?CwdyQ8F9~|fYODQ z1dGgiMU?y&83!Y!n$bkI6e6gUG9NR-TCjn&L6MyP2Dv9bj>WoY@Hw7gZ^wT)v1@#OOx9h z;#PZny*2(}J-&lFKaE=ZOLbjMeKc{RsL3Dd;uKosFO?A@Z~^#BbzDt@HML*)RgPa^ zF)cTV^b%_IO`)2&hAs}(#lFKdeySGAFka_-45vl`Fgj+GCV$Q}g{`_gdYs1Zqg$1v z^D}9A05^J`CXUgQ`=E=_{2?CTyHtzroG$i3pUDKt`{D@i_zgbC5&|c>o zR%-lT^&;=B^Al-o3#p7-+-gmHTklrK>tfT-w7!M35RI{3OQ^*}XlmG=Lj76oYBOnI zOQ}v9(+o}iUbpIvU2f6%mGtPDqm~QbIT}BupcbH%&JSL0z1dQFYjlf9*A(=!GZaG) zR}$He_M|@p(SkFruC1jnjDjhP8nuyH3c+61*=?kTMq>mWY%6URJWA2Pc2WX9VXe?! zngs6h_ELZBqx2qUt{xs*(Ff>dI}vwM9(g83c98nJd3@4xX&*j3(8Z?rBy^M}x+Y%M zY-TBw#bL=BqYq_tk-jlTQ}wRWk8YVCHEvzq=HjlpO__AD ztJDu_^}0zv8e^(zuI zxca-V%S}!+ybsJsu`cf;6*R(}b$!uG1Y^&wzEVFSs64s#lQyA`OzMY*6x@!6_m^6_ zg*DeoE>3Teiz{fUnab1e{iOuKlukbcqfEjmBUqXw1iR6|0n$X==xz*A@S%z$q?Sl>*a)<8FRDHg2Akq(+(>@8S?i6G qsv3>c>D$rL_ku^D_5NsSe?4LFVp i32) do quicksort_impl(arr, cmp, 0, arr.count - 1); , + (arr: [] $T, cmp: (^T, ^T) -> i32) do quicksort_impl(arr, cmp, 0, arr.count - 1); , +} + +#private_file { + quicksort_impl :: (arr: [] $T, cmp: $PredicateFunction, lo, hi: i32) { + if lo < 0 || hi < 0 do return; + if lo >= hi do return; + + pivot := quicksort_partition(arr, cmp, lo, hi); + quicksort_impl(arr, cmp, lo, pivot - 1); + quicksort_impl(arr, cmp, pivot + 1, hi); + } + + quicksort_partition :: #match { + (arr: [] $T, cmp: (T, T) -> i32, lo, hi: i32) -> i32 { + pivot := arr[hi]; + i := lo - 1; + + for j: lo .. hi+1 { + if cmp(arr[j], pivot) <= 0 { + i += 1; + arr[i], arr[j] = arr[j], arr[i]; + } + } + + return i; + }, + + (arr: [] $T, cmp: (^T, ^T) -> i32, lo, hi: i32) -> i32 { + pivot := ^arr[hi]; + i := lo - 1; + + for j: lo .. hi+1 { + if cmp(^arr[j], pivot) <= 0 { + i += 1; + arr[i], arr[j] = arr[j], arr[i]; + } + } + + return i; + } + } +} + fold :: (arr: [] $T, init: $R, f: (T, R) -> R) -> R { val := init; for it: arr do val = f(it, val); diff --git a/include/types.h b/include/types.h index 448e8037..481dd3eb 100644 --- a/include/types.h +++ b/include/types.h @@ -112,7 +112,7 @@ struct TypeWithOffset { bh_arr(TypeWithOffset) linear_members; \ Type* types[]; \ }) \ - TYPE_KIND(Array, struct { u32 size; u32 count; Type *elem; }) \ + TYPE_KIND(Array, struct { Type* elem; u32 size; u32 count; }) \ TYPE_KIND(Slice, struct { Type *elem; }) \ TYPE_KIND(DynArray, struct { Type *elem; }) \ TYPE_KIND(VarArgs, struct { Type *elem; }) \ diff --git a/src/polymorph.c b/src/polymorph.c index 7fa6442b..8320f48b 100644 --- a/src/polymorph.c +++ b/src/polymorph.c @@ -277,13 +277,14 @@ static PolySolveResult solve_poly_type(AstNode* target, AstType* type_expr, Type } case Ast_Kind_Slice_Type: { - if (elem.actual->kind != Type_Kind_Slice && elem.actual->kind != Type_Kind_DynArray && elem.actual->kind != Type_Kind_VarArgs) break; + if (elem.actual->kind != Type_Kind_Slice && elem.actual->kind != Type_Kind_DynArray + && elem.actual->kind != Type_Kind_VarArgs && elem.actual->kind != Type_Kind_Array) break; bh_arr_push(elem_queue, ((PolySolveElem) { .type_expr = ((AstSliceType *) elem.type_expr)->elem, .kind = PSK_Type, - // HACK: This makes the assumption that slices, dynamic arrays and varargs have the same element type at the same location. + // HACK: This makes the assumption that arrays, slices, dynamic arrays and varargs have the same element type at the same location. .actual = elem.actual->Slice.elem, })); break; -- 2.25.1