From 76318321f510f9d52851bfa22dcc711a5a78e9af Mon Sep 17 00:00:00 2001 From: mndza Date: Fri, 9 Jan 2026 16:23:11 +0100 Subject: [PATCH] gateware: fix HalfBandInterpolator backpressure issues --- firmware/fpga/build/praline_fpga.bin | Bin 199283 -> 199896 bytes firmware/fpga/dsp/fir.py | 268 +++++++++++++++++---------- 2 files changed, 167 insertions(+), 101 deletions(-) diff --git a/firmware/fpga/build/praline_fpga.bin b/firmware/fpga/build/praline_fpga.bin index c98461be445911372e524a54f2b40dda23da2511..460d2552f34bc7159462b0b0c610d8fc722fe1ee 100644 GIT binary patch delta 59063 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 AV*mgE delta 58426 zcmX7Q3w#vS+5U6RTz2-7&1|v>0b`g=0tpacaseVnm@J5(Q5OWnc)d@8U?FXtOIyKzbLWV)>hgss1=p3E*F)mt^a5J^ZOA(c6a8?d)~|Q zJnwt*!M&m58$%^3fGGdY{RpVD1df$U{NkQPBV|=8V(2JUBlv~F*NY%9euBxb)5VWp zN6Ir%Z&~F5VN4biv*^dzh@Hc7c#v?+r6S@C$H@94n22)`se4pZVc-=pQDiT~7&H9< zEFrgIw3i-+=}|Q@Ae{4sBdqDD9qpKYQSALXB}BWZ2%V7AeJ*d?I?}LFKG}s=fTDs| zFfw`ovhaKq6@`6RkU$97rI^kNIWikkRvf8|K;Jd7=OLMSRs zVq&@aoH|MVRw<0jNK?qR{sH_2R?0$1-dpO?5m4wxwk>vAETHCXgM%;a;pr&@Hc8D0ic zR|U;|Ntb&%Tvz!I zqryp|wS*7k5|lq2M5ql4F%~h5vu-o$}m@mkv7rk*6>0 zZJDLTg`%3*Y7u9gJc(8yu4A_fA-Yj$u2syvqj9?Sdo`!xY*9YA8;VfPrsq(6$CYZ# zF|QS8yG=QI#8B-bBR$;%ROQR>kd<$(Y-K1UoeeD*%Y93$X3C*evvB?)K{D^2_4g2X2`Tgp=@KYXG%u~Xt>8O=Q> zEpzn^^eLZ&4@Jr_6a{@4+uiAt169EApLmPfpm&{#D*d#3L{X_vHg&;#4MpYsh^dY$ zB9WbPcQVZ9mBB5#YKlTtZ5Q1Zy4;&oczwQ^5()DG3>$n*iYX#em>MlCDNjeeV;IdE zouSdP%`qsceo5`KEFZ(fw5RKf-N=7SfUsI<1Qg3_9D_+~z`!lijvBL|eDO-VP`~tN zMr#=rTA*l;`wi^SpxUWbV1Hod_a4kmS|tj{h)DC_j7cqT4s>eu2rn9~9ZUH|63H@j zVZ~7-vDocx5w007{b8RF#qNiGw_JSIm^I+;l%^HY_NgMDCY&^r7L8Jj$+A9<_*9s$ z6vC=C!fJb$^5sqHO~wXGuJ!UktL)b!>M)FN0gX!MY&js`{ejQr`shwx3i|w)RDXF$ zs8r6c2yYL4u1k3lY?~|RH1-DW?D&>E*jF7hm8!U&OWLbl+De4u5 za=)5hqssUZPa0Nb@o<^~Ig{+^`=v~S1xl0=!{#U5xZ-4)V&-|i6Z^bMTxIz@I*dgUkc}@l`st7d6 z@4eq^ct#efH4sb0%+a4GjD9%E7DZj5#;!^B>h(`U)TyI3H2p^y0^QX(+~_gvW*9gi zO?9?v`P3;Xqe=Ydu67|;!IYl_Xrt!}%;lB?L#+-CZbg}Si{Dw|40@Vs<>UaGraQ)L zb*X{)1G|rw=;%>%1i7cvW7xvn;jEIQUp%f4QKmVEKJO03c z?k;5Nw4jgQs3u%R`HwggR_4TaqV&TX1KlAMa$ifY>PNlnbFWa{g-{_Cx4Bk~nY^+? ziFpn$D-mxL^<`sNiXw%(QW&pEMmu7K<0vvBK$44$;{{uCqLx zfsG;YNa4BR0f^B-toB(~zuAw&2&RF;JYvC%dmiJ^w;aGqb zjN!$w2J|uKTn1>vSIdpO)JQBjD<7)XT%3poU4E-qh<)5`z~Bw&sZ0rcIXvQP?(F22 zK6LB_U&uX}!a7GgI>em`Z{7&)5mcG39}Qv?I$(Y8*)WHykV6Z&9tZeh;t76k#xEfI zaa4=B2(XgsE^6Bi-U;YxosQ%|)t~WUD^mcUTbvkHMqnWswx2b62F$~}uO%E63}qiu zfB(kSQK2uo%ju_q;XezBjCw}a>xQXj^J}yscngXYe0EU-?)n~gum%ljQ`Yb;rm&SI zFC4;*)mx96{WxZzAWTE>&b1x^iWJ|BS;?#H{T5YW_qW2z`{IdkT9p8oW3v7Um-$3E zdcGbSBYw7l8ibsQ8Rz`f;Wkv7 z>FeSA^wN*5HenmWcu!pK@c|(URta$$Y~j&}kpu(EE#D~{EVwr-XKs6LfEYx!$sCeP z{@3BVMH+rJpgJ$0k2MZA(26Arie-Ii^P3$CHp+AWda4|BXHhBV@DsJXz|XMm)nU5; znJJL7@G8@dMVI}q@hSwWP~ zm1;4J@{{^7%}fuMX7Wl=Z z>UM6Xg=>7j->57=eGAk-sq<+D+%ZZmR(lm3$D~o)ALiq3I`z16JfvKQWHlsSAgrMs zvyNE}7-6{rPK$H`Wo@}N%2s+MRBTuGTjf$bDH<;xp6F6jnonlLI#~RiQ!&&b>fQIF ztFWHIESeMP>+OiXSTdiCvoFz>yRfW)T(L^UBbYg)9h(1u7BxDxoQ^;AKswfGZ5qn3 zvfz`Gq7qB9VutI(z~7NU_o(us&@qW9v4~&hwrBREvmaX-dZ{}%Jf4=Q=tS{({czI{ zB!Sz+%qdFFr{J#AFFnI6XIi%`u1EPE*!eP!>KZW7hASMdSy~s5;B#8^TihtEpKsd> zoi1Kw_`qzVj8>Cx zb^MUDh*WTI38U)JEv{tFe*g_CieC2F4u%+$=g@6xY~~xM?qUCO_ydgf z`k*i34AVp$Rjq^#IkgTW?kRPhfzhdVST~)-Lr7O*L+inmYN~)<%N0Z|wD%)hE2JZx zu3^@G_{FD-5m$|}t_EHGFu%BCzIDE5-*<(7kKR4RXu7k#v!`Ax$$T=u{Ese!WW=*60A_J;He-j>!G_k~^xYGMaJOA}LG>lW!rDQs_XO%mZ7M7EM*>-qH*Qx?Z^Mws9IdO@M;C%8HxmkBka}4t* zXnN9if2ug?SM2DUMtXoXlsI9BAP|}`_$SQBOtI0cX+r_=wQ(#JM0m`~fI(nT;tF(1 zOb8_Km=PEe%7xX-U6j*JSL-=Lirw^33%89 zGX5JJBnJds?x!KV(tDEvT5xJxZYXdxV2&(m%c-F#i+nP|Ji=5qlR$Sv%byfhqEc4< zjEOX()qPc&xgnsB3iX_NH!MwLrVtQxX-7r6(H1?*bNnKvm%#$ zt37iyeAe3#s7-Ao=~7)84svhrr82FGE%`{Dl>m%W)p zbr-(NgTZTz`$9ve$=leiIp&Fa<&6XF;*sGS)+7kK$Gv?PFC#^8WhYIjxH;)k3z6P? z;T@@_5qCq`i-CzY6Lwr^z4o`78UJ~}R6Y^)<;{V9tpC-2j_|o=t$zC#n&{L9aQYYf zLZ(%D{#_U$(tPGt$xMr@Lq|tLO_b;3*3AE)juI8iOrio6rUQqmk|}rbr#i)tYO8E{ zU4nR9a{rwP$ORcMor|74yi0UT@6_}$km-}qsRYu3Pjq|o@~WHPG1jf>Eitv5yM=*$g7yu!!efu4yP)G&2~T;#+|ayafyA@Ah`q!k#673RQ` zHgSZ2ZA10pCGE+ z^rs8()o_cQ3*3OU2I*Ws&bbnBd)m&cC>CH8Gt{N!>k979dijW z?>YY_ADyh1CfGg~X_*r(SHH=DyJzNdIZ(*wry(koY~h6|*oCKUn+&-K7{b=wOPpOEq&q@=2=+~N zga4I}h%f0^%F<7twRXxX0U{jfKx0%dn9cONRaJ|HdsANM*-e#*o`2g+i_C7coa=|$ z#khMOf?1u+XY9q5tezhJ4q2ht{^(dkMy%94i64YxA&RN6?7|Wn@~7S|Zz62z;Wino z9dr~Sl_}NQVG^EGaWl56BN$KkfKG7*tljEP%%wZvJPX^E2bzbc5ek9AzyL(HqPK;2 z4!8|isH>1kdR}GBYq zS+eEQ*D`D13v(;%=|i~-M3ZkiwbWEpj00X$BL&wf*XR=bk=!D#P+e5|KJdx<+Qjf6 z>MO*-ER&b0GEuL^0u)-imd!S1qrABc$CV1qrt`V@HTEN*g8Ba@1rN!ljz)r^#xjv^ z7v=$eeyUpJysl8=G@YOpr>v%3%lx-Y9Mg8~aZHfe(0w*G*9{Vf8o@Vlxjf>rZ_=sl z*89v#=o)WhsCQ6^T&kIBnaBddGaM@lYXeiEF&ur; zF72fFUCMaM2v;s~4|q~$rYdG?_9jO1rFbTI^){em&kVzIFBZrBZjpzzd!$(iuByy} z^46e;$#w2SO7#(slq+J1HO!jj&_{7qrX9(0j~tb5taf7!F5Z=sM?=f@X)@SN=Txl; zr*UDXnqbMt*+f+@isvd;UDrqb+Y+-I^E8EeLXny)7)=pV;gzKe+Lz3e?wa#CE&Sii z$6&tjt+u=G;p~svsv8P6exr$ncux42Y_wP!5c0Ue{`++lz+C2&&R+(o1>vZe_;~`0 z94L*5xsLXh5i`v6XylAJsYXwrnJ9`7k=0gZ0t?&2)0c|TMq`I^!DiH=@-=a+P}~~e ziX5w4bmh=1bGa*RZj!Pad|1?eq#pWy4?&ijN4vNQ=4`~C+x#NNguHUYEc+iN$+(cN z+o=}eZ)i|l5k%!LJMWc9t%r5R>>3QLRJQGRReBH9C|$$ZoUk?RB{f0z0&9(m*F?gk z!siiG!84{RMFTsP*bF10ic|C?5_=TK7J43r@PL%vS_u37utmDCi~vCItvqRvddq^^@aEM|hKZ>J*b z$>ZO?em3I`{5q$%GjvJjKrzBr@L}Ln^vy> zi(YS)Fvm~l#|`G%%J>1AoF+N`txx{cZx>wIc>vAjZxTD=2C}LSWr)Q}AtIzMOj#=^ zw)(DcX<+3oLzylpA@nS3Wc`&Fy|=AhFpn+}+bia9aifI?hZlL-znoQKNqnt0SHs1k zNLfYsciA>ley4D^M)i&IUi?5+ATojrFRy;o_lUQRUT8Qig}F|xNZcWFa;(vqPYx(v;H?=MsFf{%DGN-?2G zT!*6TqtXep0eE}Rv`!(@;gv+D%7#0`x6aM?is<;YcWI7UDX#fn5mgWA3dxFv>9t@^ zAXj02b3bafu+MQy31N%`g&LF5ma;wvhOYp#lHY)XOn0P9@gs4y^Ap;Z)-Y%#T8?s2G#{z28^04H>g~3>vn_7jgUtR^0nWA)o*|IGdbBNm_I==xfGvpgSty9ZL z=18yz#PPDvK_Ee;IaV9uw(OLx5@)Tw8{LoE5@r_e6N;_uFjPHi-lv<+Wb)-Og`w#s z4xI8a)ZE;^xRXMxr62X3?~h?+svqeyeg*`)mxprG3c213(Co|XKN1pSL*;$#qJyxk zbw17xW*s%685^=5)N*J1;0~Q#ui}ofVtZM?Ov23R3}Rb$!c*V-$J1BF$$}ADe}_l{paA9r&1|p_Tk^X zu;dV6uEgba^e<@TtgWOSFkR;?WV7Y`*3R=3NvN_Am-|A@$L1`Uks6E&NvkW`iTDUa%XWq(EWMQ``x z8JMc2(TaTOA#j*DsDeG7=_2RDuX(>8*$`v~7wixwUkSgD`gIiQ(Nwzj zXg^ZNidQtcWNp%=E;K6W&s%7+tHY_q%69d9b%d!6I^>c99DUzDk!-xq4kUKebf-H#5NuQb}H2=D8pMs0z+5(+qtVu6iZF2!0i5AO3eM#-d% zY!3`EMiUszHATd7Q}sx%e$8Grp`dYNC@a$C8P*c9HM9QW5Ir53q$=HF z(uhJD)|s1o+GeXL4(Cx$5-<^m1|JZ^va6T{Uz2m?Q*cuTk%T~f?S#R{QCwS%>YU4R zTCj$Dtasr@Z6Ob44Vk@+)(#q>owB%ltH|0cAfmb%l8@W0wTl_XtW~{#5ak5hP9pQD zeU>y^R>AcT59~1DL|1_*8E=XrW3E`9;c5~1c!6fRDW9AlyUZFt_?`?>_+;xbbQ0ew zSRj9wc$D{r)DQGF@zW<@Z3YFK7nJW5GB1IWrGMYhLiZLr(+3~zh0Gn&iSk)mq?Ha( z1&!7g4sIlknN1f$QQc*VJR!PG`aQNZP2eboM^Niy{(Cr5Q;`=<97}#IcMKy8L`i&= z((F!Dip6*a-AcaLTV9)NbfLoM?zcL%(%w2{fi>P~^w*vtS<~4Cq0km zC2e)Ca#WRk(usB@wX8i`JT+#qP``+Ig-j9*)GNg6DPlWHTx5jIG4$1PZEm4 z!XdY}d6ujvpG;CliD7EKgR=3o*^Rpcec)S&0SNVOP_GazH*_|79H|ia^+r{+Y7TpT z$4`o1)-pY2s9&ka!j@_R-5Tx>K)<0Ocld=zNJHM$7d5N>0Xm{%Z=}l5il(EN2Z)*IKo&qwdG(s!s_pH#i^RsB*;9+3Arx zP#adMCs|Oh*RO#5sAr4E=*xR~r1mS{*AQ!}-{!VE=xv7KyI*R>1f=em&l>kJ`Zs(i z&)kFXhOl~;nBP3dC+!a~jw1x>bo}9XBlC1L&#PNujE1sUy04^c31y~STLPybcwA=n z8RG{H+@)O+yj*U{@60j3DB}KGxR!k)Xms{gG8L5eHeV)-%#BJ;ZN|tEZPd)s#Rq4p zy0v=$fHw2I-WK}66o46Ulbw6Xb_o^T?NUf%36&occN|u5i=J|ZrrXK);coHPn8D%7 zj-M&@)#C?WP>Y&Jq4X)XLwpY#_`70eRbg#5u0xcypH5yBw*8TjY<=D-?q$=n_d35F z^<5TLs~l2oHo$PuUs`j&9v6kCEWjy)pKCd3577f?0C~W3QCJo{em3T%E+4}zRFAV% zC*R+wSKOZ2zQ}3+6jko9|0*RL2sE}j$5qp4(PJ5hdUFFxXjIk5WkeHWQNo^PlK42- zNI5ut2GcNng@%|dF0g24Cu9^qHVLs;>^GH%*Y0s~J}D#9fPw3Tas;KjIR6q;wzzsk zFN3Y2_$%M)cfDz==0}`_!a8R7d)kI5dUWMsyiAwerCFb{8B|P#yGAVIFo!?W(uJ7S zbU$0YhNxoy;QU9dX!9A`3ID){Q*2A3T3yShykl!MvtW z%SPoMmF^iE8rl_{r{XD3{#)s-WvYAUURb6fFO^57A3vR`GHJ;{Pq)lq;P?%GcMRiQ z8*rTyVzk5cqz)Q$T)o7Jx~fGAYX2X05}PHhBl9)*D}Ir0cpew4b|zE-F4Hx;%e3mZ z|BaZS9<_p5f_ew(!BAub5z}L=ypk({FqQl8uoU~>VtqP^x`>8=$b8kf#_}Em4tTHm z=xRM@Glq>6FSS-IRH$}%LjelXo1z5~rZ9OgDwV8mbdaf-SX+uj;THYyPzBa=6$ED) zyH!=@sz`|2x+xc}44DpF4H->7CSk-Gx)4nXDPy6@6xfy(IREyIYC8)gIQ52O&d0i_ zB#ctscTGE@ zf1}H)fM}!mHsgLuX6hr+F+aZ-F0r0ns6HH24%25Uy+QBK!j$6?E5H_k_pw0i4dsVY z6Pl~n;wEVx9;r}&6fzxK`oL`}pty%*WX3qO`U;ExJvL-7Yvi~~Wpitf-lU@T=AiO| zKan42LVqYXjyWi=n)3Mv^Uv#ofAn&A-?A-F;K%>X=3h~JL-xwFg{0C$vzQzzgB%OX z;mon90mn(BDUxIy9hRSL0_Z`!Vkg6aPY^tPI0sD^?+VOU(0eD*6~g0?tMFC)Xq57C zhnYyq_J_SPd8&^Wt+tS8rckSkR)2K80=^SZO`DJ6`yirGIqm77q0K3BqS+xd| z8d&47o0j2sh}LGov9qCf@-?Eon52Tqy9o`WTby`)s>l;R?B#XkOuDjI z%r_430_s?H?(hlCYG8Cvnu0oe>3Lc)c5peY?I){n%^~M04*_=N54osVNzpMA{c*CY z6?a?4k4*ZpT1DjYV_f78G87#%yK$d^yuM}eG4IUN3S&gkWVGtZ*^Q|J5yRet$U`!h zw_WQM_2V^%;4+TdL1U}dwGdg0hOVVG#L^zNFlt~nnm8_N3DPYLe9=kHf@-|ldl zoj6Eo-ONx#f%x>tZbH;2H#kA%6PIP1gH{Qy2n3|-TxuIBsg}W6gq#_CsQqJZLv&1M z9!Q{==7N|(SOc@5d)}VYuvq1S;cygJiry=>5kk${bA;9@q^fD@E(qsc*BFJOz|+|J z@3#*^g%bC+)F2zo6XNK~Ahm5b(ch+6aB`jE}fZQK94Fm;Z=%`S7nF|g8QJ7v6#UA(C{p*`i97OmYVslk$iaz~6I zmM_7pSFfl0V~gj)eUK2x0+WFQ+2ub^E*B{WbSI9LiUy8+oW_Bb#@%e3`7DYMpXTXH zV9{@xrm-+NSwyZ`54-u-)x^$nVGSy=G7j_2c2Vqx)#AtRQ>^d3)0OQ89TpQ-P8c+< z$;0$SSHbVxhdJuTGF)45N^nKHXy_c5?=P6EmC{|Qc2TcYkarhVw~NSX;&@+}tj1Y| zO6N{ZbZ?%Qb?8K=<(GVL+x{gmFRQ`of>6HOCRAp|X34OM&5*B&$Z+;yL+l_Jj=V`J zHtxc}9gjN?=K;@PzNym6UAS$h{1Xc*w?k!w$s=CsCG}`v#C4l^6IFCJI#QYjDSw$% zG8>w-<7#!9Q676X6GWDkjygA(I8W_y*tT*F zjNINsZBpzbli-<$!6|sQ@Clt+1M={YNo97aIO<=|U_yCg#z6OT3@A%DdBLLF-GrJD zo#%M5MJ%{<5m!*@eeX%dHBRB&1@mh5E5m~Q$r)|VWPw*We`7rlm+*y?C343}5d+zc zSjoc?@%Y+3Z1hx-Z7W@9)s7p>8uxLwVl_dvBbtF1L6=w_UoiBZeKiPPd zR7FxI;F_5w!U}o+@MQuk7*9=gq;kB*7z22$8fz(+1*X18KkBP``;`_n z7FJy~(&sfJ!?_(Eneak;o);uoE5g*SNENQfS$^gWPHH}ER5sP#pxWYDj(z?5)J<6! z{xu70%{_Xe(Erzm+&6qyXX7PGrM8W}Pj*@^`&?1hNlH`jIufl8EAlg1>X`Da;Q+Gb zynlcvYzk)_?vsb$o&4~$n`lJ2C*-N$N^6BYpqs(4S|1@#(`zIRU>VX~N2ecvQe_(u{VowG690!UM>jp+F{3m|E%J zZ04(Hb{R9?9dGnBVrwqr;9=5b9O%zWMkY~OHAcLwQfw_|*^P<&nX^he-y8}I2+M`8 zqOIauvsJ5pVRM%+F8*<$_ZgLwIH!rL-@aTex@3#zybjjY%ycO-qP6RbF(pQk~o%e|*| zd9zVaSlpGm1Ia4pDxp@&%CiDP0ro2KbAS4)KjxU`!r{}3Sm~SI93)gqAWvemO3Mkx zH$G#5B|8qZEPwNTj!?k&+-5>IaLRxuE8L4uCNe(D^@VgR?&wOjV_c$(cGc`%kD9Fh zt)CBj;&PbZYxBlrs}YSO@jNW+w%=lgBT?AsudEASiYe1= zXCdfK5kVktt-Mleqd-&qSPPuUS>qooa^Vw`$1Iu=#8BWM9{h)^K00eS!co-VO_1%nPrv_=^7oJD!gG*}qy%SKy^-i@H~{i)72(i`SgM zo#m)ILA+@e@&J}3##MLv&0bDfY|z*fu>B8S{0pC5jw6q#&fM(uzQfpg#z_`|!m^)O zW#+_!)~TNv*x@g6&X>5-nCp@}P3=#?$0D{^IZ^mz9}ONKEX+`LbpPB$hls|`VS2>} zV#-GOg}mU73FyJ7aFs7yiio$xKhIORA9tul`2wgKH>e4_l+|wpvQ*|Av3qg%ZVuUN z54{?QMX*(02f1gqd0$1{xveNNHEb#WceUJe`QP5P6wmzCSoDeW#Xv6Sve!k__<1fOT%5riK3Va2p>^qA zW_mVQ9wuzJD!Nv&%WQT2d^-^D9yntggtBDIZwR!-=F*D-IVH8#;p8^|gkb#XK^JDU zHjG@vfp66&SLhUKs-bV~p33-%aJ;dd_u-rOR`RN@OU5B6BIckjFeYzzQKVwT!Bemp z4N-c}9CRt4e-F`DU4UGH3fwom2j9uTb zIgHSStm#OLf3h~1xE4Bgh)Zvw77Ohc4lQ+5ONgu76!+7q<`{|Q79>jImiYpPT<4^3 z;!JCAhL_H}c|RJARvwo-u4-p5phKeI_q@Mc^3Yn76%7;eU%Il%R{qQvM4jb}A-NY6 zy0QV9$xz}NArOqaqp&aye|1cuA#(~UqKxF!rJ}(?-RBr#a2uF#{b2Xt8=pwB&*8em zS80|7{jA?PZm$MBgDhuxIC3FJeC2T1&wGUVP8DjLm13?i_iBh{KE+px!@-Hd55Feu zfpv?+I=FHn>MbN1ajo!53b)GIZB&>&!?02-F|`Q{VoS3)dZo;^(cP8@Vk|x#juf=UZw@MN1Uf;m%`5Y!~7mC24gxGt4T^0Dv^-E{h?H7}5 zH6K@7+#yZnqWm)!wcRLh%Y8D@SjzJk#IOyeW8xb?BR+h}72ngmzDa)^7$%C- z69mS96OrNqhKj}5>fYLhMkTXvIoKDNB=&lna8L_h_J+q7<9{cWYCf0jV>n_=Dky$+ z464#Hu8_%fjG@zIl>ZS*hf?H>gl&nlx4>ymk4bGi1-qxM&Y`-NfNqUrE+)FEK~dLy z6rVX=N$B~5Lm$hkKC=UASS^ZI!tpx=f!AS=SpLa5>TcP7h9S-z@XL)5Ei$%;?OWv; zDL)kyMZ^W11{I;ODj!q^#G_;R7CGxTzmuzgQx!I6YZNzi97;c`M6yKj#lg2KmB`F* z0nGBT|4JLDpvg7Wm(qn#*{>51E_&drlZ-~DHP#M? z6r#hIcc}DlWK%mhFO;9oSP7!JWGDR9IqN0W8ced`khzk-5=f8WFNlLs}ny?SI%{~aVk@YlV+5KWeGQ&D?D{R zv-*9q%h(l_s#!e|oDBF*;L$vnkK3?XCsIY&DZ8u`8r8p$jjS!CgTPFg=PpYz9@z#yv6sc{)POm(EoY~yali- z>B<&vBkrlrA2^A8XRm1tp%4#p+w4 zFBLqdU5%SW5fj}rSD$^z?^ ze0BB-=J$c4e*X`gP-mGe&h&%?kAzJ)9lZ{AxY&r~VDmK)Io$8-ZO+an-W)-&?(df*cplUJ;8)N*S)2d{X@SX;HY16So?=^Ekrk6 zNDrtbWjxojQx@=e@_^*k-CE~~wU{B4_vKr{9vGVLldba0Kw_LhIVWB%y&ry%r=-j` zjk?Y*f|z%)$%FALR6Ld7K`xSws;FhbYO1~uqeJ(Y>acKFou;13y-ms}3Rp3j=mJwdkOs^H*sanGpDz}7w3<(23W z9uLW%E`663$)SI`KgxeO$*G|vJ3vyDpDRuV3?dx1VlAE{-~gtp1yH(PV%iN<3GB=c zdp~Mi_Y}SAa^n*%YA#FRt6^Q>U0snSi<6243fNTC*t}%j@;}48>K^e2rBi&II|j3=BqWs*+xmr-$~Ev5@(j^BC0S zXY`|_*;eKI+GwA;UnUwtH2AwR<}jsmmd{?*J8iVE%FeG5HC@#49OQm&w^Gi`oDfab zPM}25PWVWwV#r33n#-rm$;XvXYX=2f6m0LLCXX6?fUFYV(eTZ+|DUFlYBUUPmFJpYOcWL)Q4nM&k|4#* zcOrq0_$H3lZQb5CK1n9S87N=6%6 zRjCj11Gw+*!il7e*y*+(*&+VW4y4i&W^J^V zZ)=5c+07farCr=DZfwg!o!m^>jD+n1(bzOEaS_Qed*H>0WY?o;*kAAs7WPgf8s$8w zn>QIF>@{S^<$LjG^|)|Yq0d3XcQ-r31hx^SPqd4;qWJeT)K56|a4TnlYEy-Sghnd~ z9D&>Escf#6>F(&!T@EXt zyUU}>a2*F-Aj+?97g|tMmEm=9t3oMiDx2=)MyB-+S=8c+ceBhpX7&?7RpSL-qsDfP z;Gv!jm1Q0&uf7t`5?Ww~jW{2=A7Ar?G1m`gTm=mudAWv6V5=ij-}hsK78pTuWAd_o zjP7b(fca%zbi1D;Qp8a=99~Zi`5jJx$gPj0dD`nIr-~Z&aJ%@me;_Xi2uEg~0N#Oi z5k{G-f+(t4qhOZe6mkfm4)%-#1pfAbQ(G%)JsyhT11@zPYOT8;g;|lh6r+9q4#nfI zyZAA0=es}G!Lr`z71lIthT~rNlQkVm+2Nhi$>+(>P#f}e#Z(W-nRmdt)sPwY72AT7 zS9!x!rW^N(O!5avVHb=#!E=z4)_QrJn8Ce37I)sD>H?#k@=*R5>3z#XsT>Nd{KP`s zMTVADPt=PSO&;XG(8JcrDlJmkXh%4|B!(6GWvT2CSSq_7eNa&;=2QK6J4Wh7+a z@@6ymUElVnVLeWTdfkj8%=bJ^nCQpBv5vtUHTyaeGE>NX$Qdt&+%&auVYaf4qBsrbs%Bz2<4GKL4Z^r>?(Xv}1DO|83c;;vy}lyuoG_ zx zR<-vgWtRMC6Xno>$(;r>pDj3Uy#zZaerpT4{r1wA9d`3_)Far{!dOtIf_YGEzDqmU z^g>>WN(HEgghJ8U4yAiqlew2Jv}mI`Z);wEeq6(s>IUViOJMWdwwo3)TeLG@-z9P( zSFw-|UgXY1`KSYXn0y5>Eb~I#eJYOnPsLLmiaGT{$ues?Gk8=>>=dtC>xQVBqH*I+ z$&pYW{S{WKv)mYhIR3@2EVdFKdSaV;6)Y#cG2c~bWqWb&1%hXWGg5}=4<>(2MGaBg z2NM>EGYgdWyE*Ld+$3#Q_yKKeq3?yYz&6Kz;u&963ngR0h5=!@d#;vrq$_fmCLKrY z&AhJ7{CZcJ^RhBY?@O5n^=I5+J#f-8SxG&pDqNelR?ut$F| ziK@t5Xh}-jRCe;bgBDP%U9fB0Qc<06YLL$N+;0vFaX=re$*Ztc`PUuXN&WYq3?e24eZA7w634D02#IV#tq zZ1QL2*GYp10enrQq1&*Qj8mkWn)Cc4CZ6IKU2PPVBg~96{g10Vy5Gx~oUJtzX^XZB zuP4J)h4((}I}UZP!SYEbQ>7-9HMTP9j5*YMT@2JvSn-+e9T4lpUgaN?SR6k1sOl<3 zy-eZ?ik{u^E&fChEoaQEgY}mLOF-ckF*|Tp4?~hmjEp`XxQ^3ue$|s_S?jZAvbJnx zX*$az7xsEgQp4tOxlUR9&R01;gu6c_r?_G^53&8kUoVqPi^qA+%weI>n>?ev z{WGm{5;3zKL*jP<&+UG_dkg6phkSPom%KoSrQ)UC^H=6mM67kNDzJ`f1QB>8+W#ev zDODr5#;mwKdMif#NMn_kHtT*8z=)V2o$_C%TFG^68s<#R zbY?Ooh8NZWD1Sa!Y3{v)1pMZ(DW6j^4aXcp$WH&Sjks^#q)x%RJJ@~9;5yVym+F-Xb9!!O-kwsi%BP2QTT9=58F0m=+YxE=$vg{&)*W3x{xXJ z{JST}d4hwN0cIv5E^|x*R(QLLvoz&8e^K2M#nLhz>T$Je9Ai?orcLD%ugU(ak7qEi z3o_F}(f)cjFAvUux>EX0}- z-waDl37E~RLPP8VaUR?i-Q1VJljvr_P_|rfGW}P-_>Y>gn3(xTgLSblXIlJLY8hf$ zx1nJ+{}X?cIR@AK%By99XVB!>l_zwjFUcRJ&;Q5Lm%v9=UH_kZ-#U{?@+KPr0(lbx z1dQ;q06_xWB!EZ}hDF3kaX_ST`Ds|xsOa2D5Kvr(MFd0~1Qc-#g4NdT1*C!wFm6?A z{dG{Owr&Ffr55G?eg6Lae5^5@4qgYu~@jYV8oygdNvyO%CwvXZR6Kw1~^~fnh zMAOE2J5}K+=Tlh)@<&!iLju0dTP?aN^E`2M`abT2OQ zDzaSg?KU-XK?y(Q2hg&rgUbnj-;7JVoc{#E6|C{OnNw-T8!Rlm;c2b5z;{_>C(_&8 zBdwF4a(+f|rO8?Ua8r~ohO*EB>dB_r+@(k}6ivHV86<6lB2(T*7p%3q{naSP3&zJ_ zc`B&n8E^gRnd`_{ceS2D^cjyhQ)?(@mGRE-vknPe;R-;hPSeA<FIX!7etM?W2Jmm~1r{xMP^a#cRGzL`C8Y*S`*@dON zj>_|`FTn_1;pJxY6p%0iJ#U~9+SfFci5K_~Uz!ayaGg5c;HBtsFiIUz152aD^;D7j zq@tIqmy%ts(gr2xaw>(99hiF`FZHitd;yzLD4=}#^wLA;&S5*6ItR??D!E%=&uKAv3xz1HNd98*WJ^}m5Kc6`&seHiQ(qP+BTtjFXIRYQhL^-c2E z7=K21%J+b{W;hpwa|g59r_L=szfQVG>%nUuG)n%dg24NT?^=l0*iQ|P*~ zA7B90Ic8p|LBs3*^_syOS*E4oZDc53QJwhM)CwL@m3RfU?=leURCB2*3$p!?R zMXXBsrXG=(h|#6{>)X=-js1=)=B2Mw8u}*L@*I`DMA56S|CA)5tHHKf5~`R`6sQe? zH@S~b8F2O6bFWqq$c*^Qtmk_v!`YpUIqG;m+$_Sd34`j!y1<8(7jDR>)oWgU84~=L z{*be=OzWkDT8%&Pgc$w=qRI`&}QKr&LKz#<(-(@Pb2R@BL_uJ~+Ct1Y(V5 zfuA*2uTL95*Xmd-uMI=7Jx^DhGbjL?6wiU`isr=V^D`nF1ywYhM7 zzxiQY<3Mi;=S$OM{i(X*KbT?>@vI)b;z$04pZ`I}&-hecZyK;kAa#BTa>G5(fJ5za z$ac8`@t#A8C|nOdBo}qTsx;^acTK;Le#*t0;-2212HbUGJst@b&O*XQrGL(ov*;9o zu9Sn-fPJBM`Iq2L3+k){{&THWogg7-=|3>v(?uH(@1taUOFFqIf{NwV6}#h~P~|ss z>*>#cTv1%dRsT)0CmpO~hyN{LGWlD(5ck8zY(D1Q`GW8I6j11{*#-p@qiLA3saK)y6jR%MrKX zohw-@mNSZC#O%vy&u>FY9QZ6^i)cVcZ8L)PrHVJK!P*^TP3h{{0CCq?SsFv1Dkio!6xQ{q|`t##K1V~ z1X9J(`NU$AVJ1~()n(CN5uJI}qcq3#Rud?Q`9En#2+FP)f@_64zI^#@7NXAodIL3W z|K3U584<}fXg+)-(9af%WD|EeCYbe4;@hH)-MuM*j)F7koiy*F9uhtk6L0}xn%T?( zy7_qm|D(Ss>4VXLU2Fnc=V07r)+gWvxEK^M6s8@ZFqmt4X2jJWOq;ZA@t z;-4r7PQ{zV*oYj;!kUL;42rbF?ztWWHi@ipGed3)v_Ar0*EDIzOJskxJ?oFU26tf3M>@&jVm(@HTB zoHRknS5(=#;0WvtPgnB4m_6rS10P>d*~^;vJ!ijTwl}^rGT~@PEl3|M82^=nzrOR& z%OMl{*LRGO;6E;we|^ve&7hrc3$FCC;=D=3e`YEQccA&mZd2WcR`=wM6y8ZTcRyi2 zQVfwRd@zDkFba}(Gg^IHTHfJ7Xo|>^0{}y+h)<03JYNGpse>l`6|`QMhUzhlwHQoD zpckDG0D=dgf40l!FYl;t(K>Sh3!tm3IHE|Htv^2!f_i?h@ zZqYuUzXE*8UC=+S!X!w*q*i0mIq;*{cGyfy`KMq`Lu&U9#d*5p+@nY4pb4w07NoQl+U35LffCO4;i+ z2dK;IEF;0Z&R{kYBBp+#(;a%KoZkkD2KsIP*8&i2fM6At(H;w|6G0$j*z7cU zj-dFx4UnA%ph23B3JsoRd`cVr1GOtMj_=rLD;!>aW6CQ^C{G=uhJ}}(n28t=oCyS3 z+o<*z!;5efna!i%BpgUXGVm>u5pjvVY4C|dtcop*&|rgAIXAU zeG#N01XZH$#Qa^5|Dg6KTC1a}h{|DLpk2K|x$UJb08Q*~wJ-;6mOllg0b!k3Z{Et$ z808D{g*1bH{->~!^7#iL>FNwl&V@DD=DoxB3TBZ{D8KGdJ+jQPhb65bXFy5qXjF7m zYXOWUAyb>%{t%$9#nwj2vB@JVjPY`H-b~efOu|5M9#quJOtohmTxAraIqES=4)-_fiDu^X`YW#N|}@E?cG zMOm@u^gsrA@rsAoxR+NADR~;OBK5C}*2}2)t(u46CZ;d#}Q&P(NoE%rCFLxR-LBkF8VVHK(NsuY4g!(%K0m$IFZ^%zgg(Qy1f4 zl~mYH`7@Xyq5&ds(HEXbBKQep_(Hwi5+*NBM29+q2;FxXW9V``y?{F4Gw5l}<7lG+ zlS_Hx`O(YpZOVCY)_&dTy{;!>WZndzEMbZiI6dTix4Y+9|853c@DH^4*Ht8skewD! zAn(o327A*J(GLjAQ1|aQU{alge$4>Qu|HXeCZgsjL!q1Mvw42vF&~DrqVee_!(OiR zBGC&TWG-3r-qEY-w4e8?6SDVYFw7*wY8Ey^QpzVSBq`t~97o-E!s8%-E+_FuuE0}`}DneN*IH*HbvzurM|GH*&#y@EYasS| z$?hGbLQUhg_V*0dmbSrgq@l;`AiN0s#BZzW0-CW~Qc2voq^>H}mBF6y+RO50X@1T@rd3-z{FD_{zASjtGWt>dmMh|MvJ5G^|` z3_a8R_m<;39|e|R%oyd6{!SK{svF0*p7`QJJRlw=$OdQ`X7%NlY{Cx2Aq2!&Q=uLj zm%Yu?Vnho4{GSJ@E)0<$hk0?!iR}!8HAy*(n%VgJtnD7M;c*R$j`{0w9TBq}b`Li3 zAvMxWs&I@1ilAETMB*5jpW>E#!-PJE9%lu{<77J>dkbIW!+QK}_$zA2mxVDKUk4(^ zaY6|6nuZ>b!GUsK6H)dePtuL~Yz1(=dDI#sgp8Z3PnZvV`lD-+I%v+~!2$Z;sF7-b zfrxm#VVX_hCKcSYOTsj6HcK3>2vm_~e-wzL$m$_&MNMX9vMory-Mk&5#~y3f@c#?l zR|+Nmj4HZL88W?WiE3Xz7Qa~&Pvp}c8&q?6V~GZ2M%{)274|PN$HDJSj$RAVG}HK~ zzc;;L=PoN0$bFZ;-8h6!4))@SV)n1g@In3jwgi#cGc0TvLo{4T^15V>;!gOkgB;xs zL>Bn*lL(S>W2ovjXcC zHPPZ|(f2|Nf)}QVR9QUbt(01xc5C;dcQy7$n>@EyQdIAOjN$Yy*?92Y=U4g!h%mr(%kD@bv27{0~ zW@hjoSk=(K^%+a2AW;@xdjA$zkS5WREuXo9I?P!7%L@%AhUtq!ASaqz15D1;;j1%8j-^Sxv4y@1@9#r!9F^&alDpK~AN!`{ntpQf_S z@%c;wf>f-DODn=0l*;yVJ3sOqA3n&%;0PfL&$Y}#K6o6mZszQIz5|V9falU2Q*v39 z8mz2uRD(slnQ5Z$N9cW})`=gG_(6G;m9qXG*)hX?^!{6T)ykp5w2>g81O%h8v6)@Q zdjEZNBVOy_=o8*9p4GpA2&k$}uewAbGcVB?LImd})!50ly9uR%&Rm);Y+|;0sAe2R zhdp^JhE2Nvwl-7-F+uQkijcj6%$jd-_{GXc7a^nqQPF`AzfSG&kD`K7Hf&H5U;3yo zeZ^2u-(Kl8)ng&EFZhuYp4~TNar2 zgRZCDMQk`YJ}p{VmNJTk-q{3bwC@>|VfeS3sWn#-SX)u2 z%>SLdDn&4xmNQzl9lBS0+UrvUPp7A>#F~4x;1xi_34H-%9TBY!6H$lFCwVj0|Lbga zI@*(;RTjqadmXeX1^cuZ(-$!E(N`m3RW$t}2svRs62gj85QDkzz!nUzY(t61+>}Tx zqPw@a+{z|Jpf@aM#sc)b8M|y$p!xJ{r-O^OgvW`b>o71?CdQ@vH zp2YKUf?9e zBr#>fo>;EY zaX0dMxkYbLGaey_ZcKkA&>iw3*Wgw-g5S@5Yd=BWR*tyoWkS^mJAx?&%357Hf{1@H zThnmqLde&qP9)wJ4LjrD{^&pEb(P+Lj11qUU*iofx%8(5JmPAi_!Z1*0U^jSkg&n{ z2_Gio@8~rXfAlYg?(4kx7GJ&`z>15!K<(FD_bYS2ZnK-^$y zmWniBQ*^bLM=bFh{3kAK?*AOGJ?-V;aU|Lri{>d9+%aR*?Ywc|JDcoNK0UYRJ4gJ$^P7?&!xoB5k>7)g;{2CuY+b9;Bj&qa=o;#OxIwc( zsmd$J*Mo`A)in!uctmWCE^5(0ja=p1{gA?W<2b~YIb8e?>vv(~Nwoh^@Y};?xEqvyu42&O1dnrA?pTd4*nfu`zz#c;NG!5BGF_KntN zCsTeAelpYYFHGP#IQ>q|GN$^f3M#H`(VB7}e+a3HQ~H0>*vbk;g#KM?N)IW*;}-R% zjcdNUD8}uen9!ox(tN=0ln=fWq?uPaEz%wSclRN+KbpD}=RwmW0StZnhf#f}>^&FFTV)$X!*?62a)PLdl4}?twhoUP9-Zc>cke=y$pr z(y!AEpBpRNH3)vX05u~;D0RY2UZPMBnwd?vJin^VuWY6i;zO)h*tmJJ?H1tF5R5Cl zTbor&?|hD_+RAQaWHk27o0riNktb#L=(B#zx1u42+Lh6W0(T;v}*uVn*!q(d}gstKCc6>2Ldb%ZX|=oR0b zLqhGSGq^vS<*A?ZVUmkMx|QQsnnb0Is>1vha1t6DPer-oaFUoCn#5k?e;(%k$rpsY z)xm_KBeX)NtLxws$R7d_>X!HzSEN;r>7R0T(W)Y{BUDEyL@+ogfuTSbVA`8A5oJj9 z=9jsM8YoOx3Zmmc_K95j@0D%={woWH)FydB$ zMsce;y!tv<=71g3O7i{}mth(noy#gGPkt-I*g;Br0z#kXXzfqIX8GNA0?qM<3I)swGY!*_+&7+WJ?PeSVOkbRX znhkx(qrA*8s+J^*qcLV-g4G=W_vmzj+T}r+sz}x~^O}G^{EU~a&-gjUqhZr# z@2t-d_*s>EU8+ExhH`FHDzjm`%Xs=CuXudd05I-^;CQj1y6~u%YwaC-*>O?5SH%IF zv^v?=u$-t7*_h9~JOW>i1;-W&Urz|x_%f_Lm`_r1S#L@$K((Qgc(*U z|HwlF+_#x>l85SZBoD$rE0-w^irb}@^KSlQF*dKvy^9n{5)4QHcac3x<(14{SAPlH z=CtBT^p+A!G*ZYXFI6Pm{dq zo_Wtxp?Hr~Q%Ni8oEIrG`F*6~BDZ0t>ku?^#Ly7{cEH?c>4lJgG4@fC`pE`|#`_o* zlzTie_7EX`$=5e%+jCw?VY|&Mqi?NxP08!=5f`+~mz3;B<+YlL$Qm>bIU6Q~>m5!v zQc4>@d>BG4T4hDU%Zh^$u2}HbD~dzpq)9wttY~Xs$h3IJ6<{_g#&p?(l1TL_`{iGG zSN*?Tu;i_WR~)j&VT6tXvio2O%+@wEiTO*Y1a&wIsQT|K)}mRf-b;psV|yiIS5t7^ z0_F@KjnN4kCT=I9P3{ek-mS+yS_%8htabHGH z$%iP^nYmHf|BUNp3$i|Ng^)V^tuD@I={a>PT8``GBlohS3pQ^_Jj3{6$-(~pLk z8hJK;b!O2a+1pF$k1J_L62!-2tXic(0OTW_)ikpHv#5Q}C@RL-j<1oy!%2NBO`$&% zrjOLS5vAF3&kwG{^4J2y8_Uw*Y3y3EdC74bgHT}BBHUv)#*v%g_^%2)@Z!{e8-(-@ z%~@#VC^KDaHZcSpgOlivf5TbJt^)UZ&-XC8>WQdhnfI-E#T`CXg zdB#9^2jo%&g3>p%;L?ye80WatKOUk-c6$tsJk~$cg$%WVb5FpLLIGtyk?< zzKjyy=>qhc1>`xM1^INv%$P_~I>rm@0j@TztGk}tgJxqiwu$+NwbM>kBEnbMq36u~ ztZ{t@6v-y!%TH_A7x)I`Fz8xxe(Gyp$3laWZFrsga?LecTm{kclH2w_2)@(LT1Eu{ z5|ug=vlk@LzMwMs+#^t1vjne#>7A*x$Fh~#o9}4(m~tRyag5!F9=qEo{plMqrO+k> z8Ma`;8&FJa3z}V!io0RTacYzZWQql{qL*X*E7qj|bKG`P)t>$>2YpuOIU4@JlB-h4 z%+hC?Q<0OD{%ZGW=V?yg7!yrZd2@{p%@LIQ!upY(EJUQXxwCbDkR5>jOOtNfzI;uL zprt33x(2&!hkg|Ki1=@DrbnQrCF-O|y^3OsFsM5>!p``R@5jQYvKK*=^XIz>lv3;m zoFZ6;ATVOE?o<9`JpD96-G;_?`Y+|zZTI0qVJUO@deD4}-mjaW%+oI<@DJACugp~2 zPX6bzVZ2|MHW;n>_0rCg)A#W^1~4cJXWRTYv2c(x))7#``LHxjVOIVE!_QA@!=YKf znA(ea);Ql3R~Lcl#5QT5iQmJET-bP1E;V|VmFwDdCLrsm`^cH38`qdQA;12dnG36x z75y}D0do(U>h$cPJm(S$^p#JMI-2q>GHBGxR6m4<^2i^vnK@7C=}QI*t%n(oImk<2 zYhrFeneJW{Fb5(Znj7eWUYoqORx|4XKoH;`Jg5!wS}AmSj2}Io1^sGuvyx?Bm8I>W z5b8}@FC5JqjLLq*F7VOHT#K&fIUh40jB=CDxYpOI=D_3tHyQmcVo(qycL5b$04s#4 zWj1<)2io`px}+K9;E*uPxU4+@0|v!yjl3Cr3Yf}7PYF~Z7Q*d zpfS1Q6A_n1)D1V0b^JLQxu3tq?^_ zQr_ZK<7q)L@~`o@v8K{3JgE9H^!)#SA5>NK9$Yn2jKgixr9vCqIJ zZVNlUY|5FZP!WY}buEJpj`qLc&2jqL3(FN3Y$v8oqQ$`Lh&jbK_;Q4p_(~sYqX4De z&lU=deG8@67-zV?g*ZgDB#ixx!1?ICG13AvzgHxE!>^yKhgc%JQNP2JJ{@5m}%#v)VI?yL;rlh#OJ^i3#1OO|{4AD|Ja!xd9; z0~Ez}5e34;;ws_@YdRKwIdhy@&XuUV*|{fKSv}vbH0)hS^rYFl^DQG6Ak`@+{u9-9 zm%la5FvhaSsgMk3wnZdAruppvxiWo6?NWRB$;2z5GeO-;A9El5R(b=g6!p>k?*e3c?~fqSqgfjtWN*E;6K zXv#cg)X`MtCbUz&s~@l1nJC5zTHt>!;NbO!knZIKia{E zeuV^!n!fr0()GdsM@)A>>QM&);v7 z8;m&Vc>0&kD$zBH1L@F zAhX%)6SA=7Mp&or{_^wgrXq#(m;Wu1@?Pv7Z zKCWkMP}n%`+_jYjl;noKFw&F1+KK}C!Qv7&-OhX9-)9TmE@#`2&*gNAE-A;+2ccE3 z&tP*u{J8D6yu+hBr8#sYjCuSxse?y!e!kCbWF-PmR&vRy;#_WyG?ypzal{>{c{qXG z3rZ_EIcao*1}-hKJ{i4SnlMnw9un8=lfbjl>bj-xP`qy!1y?b9+x&qfYP6lv2i|1^ z?wU~HsjJUElJcufN)4$S0qZUG4m)Dt^rLewkU+ufSzuBa2t8n0tgs*dVlDk#EZcPa zY<I1EKTP6*!AkMebB~B=gqaF6q*Av5-W6?TdxQV@i^U=+iI~w0n!hrbUr@#NifX zh9Y=1Br9-13~_6P=%+gI4W*`Oe>_aN!8Pzc7ucW9{~TheMg^u`Zba=ObGcRyc|j1*+l1@ko&p z8Ve5zz`a)x9l`z4sy@nL=X+;_c_6$0{^eoPk3NZKU*DN0NTXoZ?}%K}=ami-CsQZE z-I|%Au-prphDjaC{4H3Jz>^!Pkr!{++Jd~{&^cjzca{aRPG6# zC{B9;Okbu)vS>pqw!R}K1GKZl26DpsPjgpMe|9#4bppVCgr;Er`(t&WVtCOyoE~pL zbKN;y*=|ii)ke_|ETj3_J`@Rk-faR@EfpnwM2}%a+JHW?yQ7h;wm1H*Fo_E%} z*M60Nqq5VO6n#?f;Xx{G`xcYa&fb4VNu<>2+x7visW9?wtYp-XBj|aZXNa#kRO|&^ zimaK*8?X+?79;#AQ>usy+v{B?(!zJ9@vp!U`jyYHv5a?5hWPR4u!A(H53Taroicq? zjG*tT_zJg$Nkr)cI*6Y|;ekh~mS^+nJXb^k-Hy9{9OyBfG059> zk>L!>P|fLbo-vY0Q_@5z1@e1H5~Z-yiv%HpJ%=cf?<8W}N-((4aXHj`wRcWJPu@>G z*|+}iytlB--Rdr;-Ul(1HuC#lNZ9i3vjezva-F$tIDgJX+oT}na+($(I(dFCzxLw) z;2m9r!>TMmLt(2ynI1=7$b_kk5~@jLgB6|59TiJkoCUtaW=~da72kFS(=QAQGUY2qL@^-gd_j5vs5B;Ug}I{T{d<^rb&`AfRH%i z0*hNGsJf19;4xd#R7349s&UH8u?k6dHnvWwX=s#^E=R0t2(8Td}O_T6K^zZvz9Eq*FIiwEP%x;L@Fxz6k^W|fc7 z8YJ&P+>%I3F)=wI$=-M(_&fzs#L=SrBE0cNbTA`o6sj5II$WHZ*?q` zf4Gs}_yks4GJDx;-W((?-MSDj*j;|`5iZ-4@n~;4>DM0ai<^@%rlkcpZ${OV%8Bi_ z5p$q;oEknr&L8pQcb?TW% z(29ae++K5uDqN_=-FmoYJr}?@O%$T>^M%&t`|>wcK4I(@7$ zb@V)z0Q%o%*MvFVQzlbOb-RY&POZ)!{I|e(#BeO|ttLmZ4H*b3Cy~?oEsf6qYiEf$ z%>zToJ(TGJ<$266PWG6L_0HavV?*KV1`MX?#9U`G#LTua1Tc?3OX@o!&VcMCKLb$|*g>JOdCc=)QWPqs; zY})D2Y^Zc)*9~7th4!jnqtKxw^Hm_vXrJv5l$feEynq@J%QeG|xf6>WvYOBc|HR^< zzN>t_uL>ss>O)+%Xz5gI0(N->DRIJq9NSGNqn>LF15d2L>wJqE`Vv9P@o zPU;1Jx-_P^Fu)QvtIsa%#J0XiRX^@FQCf41pqLTGyk87dimk+;tg$Xj0E6dY7FbN= z&Q4SU>-ENw&rTeRuZ0(sNsv8GXaNW~Qk<)4Z6|(j7Ak@@QZXXCd?+UUtOg^c+UWpu z8TeYsbvy35moAM{8PW&ukvb8#ZeC6C8zhanFHP+f-N&PNwyYl4#SkO}?T=9b%jz~# zHk@BWW84KI2td0QNxo9z@hQasO_Zl^dc438&AuBJl06hbi9ch25Qs(A{4SiK(-*eVoa}-qsjgHwzXSB zz_Fb)%gi>yEu=W&6K>fT^F=9ybbz|!K>pG$T^((X?L#$^D-`mYm@Jy4X0UFfg_4%C z&f*{<0I`BPZpL*~*6mzn?g4+WGXD8g$pI zCyDQ15xUs%r#^=jNeo$q5J@r^%)9h~$iwuC9ySf(&|S`9b6tibfF9OxK>BjRl%=?s z0K^Pm)p@?9HH$vOcZ`2EO<_|4Uuu3(gs~g;NEbgKI8Lv#6&hFcWFP7Uy^>{0+-Xkj zW|Vs*Hjo;Y6dC?o=_z;{0l}k05bN}s9!#bDnXG7v*Fv$6xWq^_LAX;4)*u5@F;e$+ zt1R$kt{=;OF2kY!)-jjVf!UZW5qN@f?#!YG{Cn!V=A}W5M4*HR%J}WpYwGk}IckoQ zd|2{UyR>>P`@Fz4zK-z4v_ykr5QQqEAix6X2ZLHT5j<1`h~1^_2-YkM7s&M@sUZHbZX1X$ zqVE1*d+&>^QX2+yW_kut%I=X^0Q;9)Jqf{$8G*}$M_(iH(2#$rjzQmW+A|56g)Dv~ z6^?uRBZks(Z?*u!vc`)Al?A>W=xGz|Bk%~lgsHg-8|oDww2X21jz)?1*N!|Uy+Ghq zgl@*k2Rt(2x&i2=&aG~)V<{(UUN_hIfQ88@?9=xhC zZ3*()*$6_KwnanWOQiJd(=;yWhUqmz))pZzLIA!BGrQl4*;w zsJAz~_j4_A9WLV*j(<@?h}uU{aAH0$aj{&mpBd^b7(^rxeI^i+j};kQ1AQVCSH=$i zT#y=g^B%nOd1V|9|7mi2f`kEP%7g4Wm0a>(B%JG*)6%F`*OgIccmJ=XB%Um?7r+mX zLRMh$OrLjZDk>E=M#m4~(KU90u;@tzGI3$wHuQl8zB|aeRl6odm8~R?gRxLcZOVYtN=5uoAfNgFd*3HO|qMJmX_+k!cM^ zLdE0U_cy9)o$q|FNIcAz=v{!qJLz0tl^em5C=77Bjy*~v5uy&C8jbG528R}DPBzIYHPzI z)_3*8#kQ+m*m#av1j`;#qxZl&7gV%U@z4AhrMv$DnSh$CeF8yLE;7sDd{v#uj_0Vs z5>z%*W)JFTEVpTK$7p5Y`&R5h?U$^LmV(p+SxMK7yQVU_alWvDfWam=cw%xaO;p)c z=V6zn4{iq1Ba|dE`4ab#Y9rzw^2<&*NuUR8QFnird13Pg*@|brkR_lPr!m$osK27l zI+mJ^8Bz!-{TQY+8k-ST;EGXoMQWEXL+Lw{K16H~9}`HTx(81f#K>3BWgH~Nnpr{X zl|)OmH3>ooI{rxnF}oD`*M{;g6Rw~AK$GWC8X<7ro48(zM(3!tE`2as=O*3VG@{Yf zC`QA`7U&;HWHPujq6?k&@nRryx>NJEYCOkNC!jtx+KJV8*CCJuN?(QreK^4pPhp*q z+v}`On|M|AJ3Pg|qB^psJwMKYO;f7^ALPcUAyqI);=OlUv*xAfxQW0=qwhA&?Y z=fGnUYu%poN>tIwvt=(7B|~S7?=^Llu>>&2=TZxzBpAGrLc!(DK5Eq}%G?4wD7<8o z;w-4=Hw2DkWecQ(XEr0DYvYIyyW14+P3(!pi38R8VxS4~-5EJ{$mB%eHOr39I z>kZ@%FRHUZnG8qGz(FI&N5S|nia3U_hO1SgpMdG}Tc}Yh3o4)t2MH7g)ZOX@!63M| zackrQ+FT!;&V7I^6KATY7%&=5^df$wd_9;y0VPw`n2gh)O}t8Fwx=59__GU$1&JTS zr6{eQ!(G9pw>Re8Lp4H|VJQgD(>tArTRV0!hN;2=d~p<(36UqmocY zHUKR&QVAyRJ6TTig$BFdj6i|Q@0ShQj65u|1I`4dD?}h6;5FN%*6NtSg`cY)Ccu_b zYC->t#;D4%kDf8ERz`?MFUFKk$9qyZLRz{Gshw5$dP82{I{gj~4M#_lN2>tv$M-u~LydZ(cZ^kSsY^|u zN-)j9QaeY$SqfM1ib&P`8;#9PX%>D(O|d3NkZCo7?k+{jUsX~^g9BC?)qti0?icEX z(FXjM1-1OU)6Dr{6%I!(>ubNjg-e(9D1$fdT|M_>i|WJ(X;j!!j@EFHO8-~uCQu;d z4`ww}(3~E4{FvAS!+;c(T7vm4CFn|yDDbI)?=-)uY*8{dBSn@K-i93=)#%=tg+wg` z#X0y$NezoyIgL!2YXoObP=fw?N=$RaIHD!=1uV9`!B&kS4sPW~;U5iQGdK`Ic^*xx zU^Fx`$-frqVI|aqRxmNQ>WRmGXmn$t3~UV)9MA_=fdd6_h*b| zWT#mD;kt`uv;g|@#RFKpWZsb8G|8FLGv1=*o6QQ$dblo94DjcNh!oh@=E&T4VlIGA z;MVMOSdZzQz6r$wXjFIkss^oQt!!)2el4b-N0nE=n+ zG=4OUfeOFSu>X6EZ+*aMK;JW9WbC^aAxYI;-bM|{B54=XsjL9@TbW{W&!wY=L(2|d z1Vdt@M1k{Xoh@WPOGAPw=;~;X_h$O3>R2kif(k_mb^CHN3vBpzPk~PT^&9N4h30>#9(s4Lp{>r?=*9sq=!9 zIgr9Az8c|Pu>)z6LgjXfWPRoZWRRx>aC;2|#)eL%2>ui4&#~;Pz-d4P5N=@#it_T& zM`|_Wl{hX}2b)!Y_-eNTucpO(1L^r5_yhhjo4Kg5Uj);RA+lhyFR)?C1D|=>&8P#@ z)6C}k@NUZJjcn|91pZTY>IdAOC-auqY1k6507NUD&&_h?)}@JVIDD-uFh4|n*Oc&P zYXMd`L<ka&|5HW#5U*wg*qDczo1GYKjq4zm+dWt%=*j&g0El3)$4-pN-@cVhO$O@@SFo_caej3JVEI7} zrch+c$;Nn@S)T6>(cD#m(>_Ea=AV@=oXFtie~Kl@y89S)E19hNHWFU^^KvHu^Wph= zg$l7jt;gbGC5Z9Rh@Pvk#pZtWZsuSE1pi$fU87p=Sa!ZBjld6)_`T#oxC0S!nHKjr)I=Y8R8xwzXr%NJyTw1EjnP5})#X7suUTNuzV)#i*C5@2HJq%ax{O z8s^Q!zY^H61PL0XPO`P{qk)8J+_a=QvcHT;jgx z<|+Q5I#;)3KPv0I1*7x9YI*=e4Vn*8XMNY8M(N<<$NjUwim~z6C{9OIn15*ovd;dz z|7xY7X_yD{PD0>VglhH;Z?v&QBD04%@aORRl?{hqO zJkYt}xys&j$)s2c8((NX&Db0Rm9b#v2`b!=*%0bjz&8d>HK+hegZ;9trYOdmr4Y#s zYy6@qh|^=Tvf=EMklpcn7Fq&#KEAob4H^7=QU2DE;6kOoP4B(qTBmd_>nE zeIxLVrI3jXn)_&Pk_aZmECdY5Q8P-@SfScsj-bp83aT-Lje~OBPPfT)qU?Zsj1N^x zO3bYCC2CSDL}#m=xAiS*|LMB8Y606dncGy?XJHwO`cle2^iSzm)U1M|i>b#zh~J}1 ze6Es19i+@w+ga#HD$kc!1vUIK7w3N&mH=b3+}H|To_(zv8w=iV?XfHC_WJeBcQ>zfXAlW!~yTuJ+SyHTH}$~kbv?C8lmkttI3v7 zz#)@b`}uu;Q1>Uvgb^Bd?I0M#CCZGZ5kgq^D$|+OxL8aJ{DTq*%14oEL&uMx*p3Ec zr{M1B%0B*ih}5uyg&|Tf#7S%*T zT9=3XvEtRrp{1zvTj4WBY9H>19Nq}?st*b6U{Lxp%bdjQx!(m?dE)XC z09wpnAF~X8p#IQ2@pLxY5F>7WGS9|Hn!Z!2pktU3T7Z?xac?j(wC8mP1Gp3rmYlw6aJ27Y=3RO%a^j5S-7_{5a-sUU`Fon zpZAwjGQ0atS_pBcReE7Tu5t;D1edu*7JP2 z}dBLE4l{uEV3rK0nvbtVW z8;eG=Xqu#wt_Z9}|HN`YlpYV@o23&$;&SYIRnm_AH>H;2PKo1R+(A|2dY%>D?0Mds zRVBmlF{Su)Ak;5 z`m4oRG|pJOJhFt@LPqXjN#vw;L<`F)z~Pw?)#(Nh8}=j zz36<8{#UvnC}MU%E0Yw}w%@j2VjM%mi+E_3DXJe5q^CQ&F{z*8;{jGbXokz_&EkhHU z3$0wrPWeQ!9r;rVl6P4&;qeFy9!f)u5z3FIspdu$5>+#!S$08BD}iBQ3FUxfM45xG zc!=zoY!{&!9|@3k0=gKQw25kjGIl*pHGU(_^KCYk&?agxGM{9bUc9~%6EV`zQ?K-Z zoX91Z_Ydd;zGRw|sMplq8|`z+9*H4zWBfl5TI@4BL`sGSF;3J$hUFeO&omu^e0%&S z#6S1psE{GAh*e3Nt#;pS_XBYtm8`d!5DI+cfBN3qTeG`b1MMoY=aWN|NJY7 z5pFRT;uq`@qM_n@4}Sy;?&sJ5RJ>~n(j|?W&T~+s|GF7jI zK)l^Hw9Ez2qVtm$<_`&f@p95@-oX*{aBS~;$@^$5UJ3XB4SWFD1RSMwW1Hi!7wt!i zWU2CtDWk&0Ces8-9+3%UFOxvb(gxl9A%pJ$51S1I?g8hy3h>b|6oK~-Efc5;?+@|P za+3h~%$MrqMbsXPLfnYIR)ZFWb_hrE`R2X2(B~sJ=o?a?6b4hwBVg;!jT|NIl_dti21W8vt~ofj(pC)d{iS!U!Nca zo_G=T7&4V}DY!YL-ABgb6{%zvb$&y?%B9UPUlT-opr-BtUa34k2=0C0*Vql*r6+na zeajLl2(7$@8jGIF5A>CR(2IT_7n zTt%q}HzrsGNU=itfjUxV^b_<(=4aH|kk3BRiN9=urTi*x;6Qo)GAHsLOWUU^o%83C zKySU4ni4S$VI2aA_tdeBv8AhDWtTlMUW(&tUIpoEOeuJ>S+HS!I}%VM*OU7U@6!ln z<#R@n;20E&Z2F9K1>IUfdz@?_T;KImR%Y5N&byLRjZ zqRUfB!;_FohkW+eB48gn9-LoITVow~s>in`h(E~E?)G@jGP;DAhsz*UVt2;BCC+gh z%=|I!-9X_`jCPo|O#X`x64s>d>OYZ+BCn~E{FoFBr<${PMe~#>b_91>x-&>5qF}luf(P6Y zf#C3|G=7A()*xRNJ~j0`)r=%4pNiBDn4IE)k$N)wj6d~=%k`clW@LGgU}0k6 zJklt1)M}z>p4b0?Pc++;4$GB{mC~vfBM$>>&dY{4%;#G~yJA|?V31MivSgynIJ$km z^7LG6gv!jvQ+dATsq8aBggs@a$KRcDTECEO$O@b#O#d4nr0Xr5Q*%h-op!xRHASym z^R*%?Uvqz;vGE!qaY3`{Wc@=Ff2M_=*t^nDd>^Kzk$C8NwFBC#(KGtIMYVPs`^vb1 zrG1eq$^S`>ejtpyk8Xg@Uy+oFN>fg`R$SU#OQTw!(jm|7)CNA` zCYuPb2$Om#W_l>__BK9j*grdsTaZ1P5450|e4jxom;0VqF1ecWnfvWX625-&EX;d{ zdN>Af9tOdBiG@Q{d1uu27O3OYfGZZfnb^w|Hh_HG^FP-r$qY6-1xnOB_lTx(EtFM9 zT1KXslLYvP1NF!M^1T^^$`M_q(;SWhNtq@f<3EHe!VBnqz&hOKrM|N+h=89iJCc#Y zED|PUbOlk>lU5YR`+w8+%F7L#JJD=jR_bJlXo%g3Q-umAvn|ibne4e~vyE+aRgG@nk{C!|31-}8=Z@pl z&e1e$1JW5dn-38{5NRfT#ZX4zZlU%BJyc&|=g}Jmxo6cOxh#J&f^#^aKE7P2)!q^ag!z?e>G|nW={iFFBgXK=Jsq(;^H_# zDWs!gA|SU6#AJ0!WreJ{)8G725SK8SN<#V6j$hp9u=g#MaKsKNWg8bCm zc{E!L6_NnrKh3^FU1?CDKKcu3FJFw$_50V5)d;T)_QnFM1IfU5`N zG?Q%xTtf+NKsxEqYgE@7%($4JM^E~u*K!lJBg^1R_!#!5K{89;JdRdb)tkqM(d5?O zy?is_If7b9N4-|`j^an?)!Bk(LT(E$u;g?J4UPQzk8tfO?6L4v7@K8NPdO+JHod$N z=vx|)=LL^a@SsW0@ZGC}s!3G*o#MvBR`P#c_>Xi-`Q_Q~Oc`}>w%2rcel@Vc^sUs{ z{nzLE3KNN1vWnORw+bS26k(a=5jxGeAXH(}-{%Mi);3F7Q?dc=2VHv%EI>IiTQN~7Zwv5z;jBA1*;%^hC{NdA0&5Q;;_jFqRQXrJ@AF^#e3VIh~ zNl9w|hN^g=`~!B1@r>>@g}8qy@abO@WS0(+_5#>@$^++X#gW2=7ubM+jV2s|x~X)* zITi}PqX`tIRn4~fhq8qXWlvi&kTSkjVc!9|GTt=@(+qj1r7o9-Q6a{W^suJWRwf8m z3SG#|dr)T$l;pW`(hz-)6#|<&KUzlJrRvfg`d~%( zdMpF*x6$xfMzYG{Gx8mZv8`h-zlukT7H6usRl0VIlJUtN6~#uUfbU@U$nu>_5q<)m zu@Pnp;ssBFGQ^Qcgjzs4CQhqI zk^1=d_0rT#GvSbP()CmLLX)tg{`Pb#8z&~xS|mO&7Z%zZN$xQIb_U(ZgUeqAP2F+Cp7iRNuf{|+UrjjJTg+)5>=FBQUy1T=oL%c3m z!2K`L*lx*?7H^ZDm^bH!PFSD%#&2$9FUa7Z;Z4c7;^et~441DC9x^F`h^KlFZ}GkB zO5FvO+^FbnpV0@e9y;l9VAk}&LfJ(7NJ%Vw%iY9Sg8fwu4+E;R>apJR?<`R+1G&;5&mK50&k!JxwSTFzCRd-DY zcMr*QR2cKoZK#ycy=2spP8nInzDlDMG!c*Kzm>A{-ss}1CNtgPdr=p3RHez6SRN~FfBNS?8aU&scf4QU##8DYGtmi8`Y#o(lsJwOPRyVt7Z zcx_|iooEba>>~pWf>lvtLLOf)&}G&*h@{3ntQqqsrQiaE)yS0>V|e6PJOp3_c|Kzo zZ}?2XI2!f?@AOPs$Z-;$IkzEg46E+3iJj-;aC=evxpG>OV(4D-ExsA~3PA-XZVvyo zA)*I%@pI@Th2VIwSPaaxZvWULf~29;#|IqBl93D>1^@rX9vxq!k)b)oJ60NuFlD-Q zQjmIs?g$81#d-4Nfd2s)b|43p^IGKa{*1KB z;4!Z< ztU(Yf!UNB$awiJw>xBW&XTw@~$8Ej6Eg6@^EztK9L&CJESK5~8U=kma02=aYdJ&qLY-nz_H`W6>zPXyuwsA|K?^rQh!De71phE7YmTt*|52A;g ziy}y+D1yWoR%R`3W$`S*m*H;Lh+GV-!u+E!o)-);=yQ<%@SIaWc?A#;ngO`@@WISU z2l6#k`Gz-T5&7k3Dc~+~n){A{a+rj!raJCuv;#i7<6)X*b6~`{ud#ONP!_5h4NHm` zbu>wx?0FEP7XsG_jtL=W#WsL918o0Y(-TEPBUoNQjm<-v&7tf%LglM~tus>r67u~t z-~`TerMI6woEucNiW;jG6x6W{bG}0xxZUDQ@iLQL+=@_o&}1V;HcZndhufhQ+e2*V z%gUMJdPEpdgjxe12D61m*FJCmf{$m zBcF*E#4Qcj88032jiNN1ANB+c807Y|m;{pXSim`2o6S-ZJiMm4Utzan0x z5*3@1R4F?E4o$>_L({Mc586TPVi@t3%|(7lYieQQ5F$jJxOJ{1ua;$8CLIq#M2h9& z{!}7gd#gpT<5VH@8S=Fu))6R^Q3r~~LQ!wk)Swhxe1P3Wp`l%8gpBhwT$+|$Y&%Wx zl$kMzib|hwl$gPqo6W6O8Jo3dg0NCXaXzxg-0 zz@9EO-cZ}P@JHoQ!)1bB0pRiuB>%cQ0@EcOYi}4UI)E#o!2A~4^m1Y@hq_F~s*LO1 zb3}Y4#)dB#%ld`b^|a-x=4Pyk@0=_4Z}R8oVnS^wD*ntL-_e8x^PTnj4gh?EMAN%e zA0vEq(zOPH>lmU?!i^3Y9f%mAt^~X%tB(vlG<1@qs2D%uEP1(!&I)urt$_7C zCcHHD50bvcb<$L*zl+A=E)evkaIGTyT_C$wMLY7f6`u6M3MYI`q@$gP(E{hymThCn z|C2%jC+y+gbVyzQzbSq_MmB1+nU4d?WMkbmVakYmkcgzP?;<052q=$+OMxX*f^1J{ z`W^v8^)1>@p(+cgxK;bRoX1iS)M+s=eJI)z9G!zepjaC5E%$5HtTO%Ox!-6*Us=5m z8T5?S@k)OkuT)&$9QR~&qy1e2(!qAp^AP!u=263kN^YjAY?tma4XO*cH|$ox@8i2= zG5W|(Q!_~J%Zy-Ps1#P)m-hna#4~Us$mHxg_G(>_3%x(y3fng ze35%Bn8SjbFJb=D#HTVb%K3A(W%NR)ftlN6Z502ODLoj)QrP3N;X4ta#=xn=^7n3k zztNta%Z#|EVHGp?s47$YW{F!A-9%?fVtZ6J!+ZP5rGyltxPmoa2$?}}($N1u&-mOs zh_6eTD$9?#M7;^SAp1^!%0_7Qui0O-P)jIi8X(00$&5N9_$0;_Xjy&@&u}+oN*~I| zRuu&APOWg!A+1NcdlOalLQ7#)?_a^-MS-Zf2|w~O!=KBU^pvMi`!i4Ft~5}F*!`|R z)Hth!!h}PftzAPnvA7;GM>+nB=zk&E==S3a(7>ViRSO0SnG>l;y1IV-=!SAUE8FR)DQQGsMoNc9C768F|6f2S^P_7>kBJ^vc80s`dY%mc2 zg6#nK4qCQf+GNIxW}1|pZf;}67TZO9DEp&>P=(i4SWXb3!S57IA3>7>BZSy&|vwCNpoPTmFr0;7V@x>5*q9hqP*(bDG1fb7rnlAhdyQ|3Q= z6EDfu^SNQB%=y2nrC(X}0`|~gC;mt1B<6NS8kvJ#Y*$~DO(jiNcd@F9#_WF+kFW|o zieoQJAbCh%bS)yxx^~OxIY|1ZhsfxM#zesphx+d4SCstn;0$(~v;<*4@J8vdM0c?z zwZFd_2WjTOGcx=(Bih$R!8H$wCi?rPn1T0Bm*-6yLJhCfTR`y`?H>4<<#=k<qzfjk`K`(BCg)2z({G;MHqr zTFh_>oIFosT_Azy&#YUm)ZX>!lQU$v1+A>)^0t5R%>4gl(uBMRkVc0w91=FyNt(mjqTuaZlE?G9s3(aay1PVPGeghe`I8^*_5cyHHlpE zO_$`A*hcWU43E{yjB+(MO2*~K)2V5jw2uKR6-avi!g=x+fwCUH<_NTf{d!kWa;5YA zE<-|iW~7V7(!NJN$*~dBTEJPPLK!H9>niyLteLD;!(NbnTsG2DZ&ubIcSsg~f$y%I z_0z*?E@0Zxj1-duHG(a3nn&U9m|Es%45C(dfY9IYR(8r;cBYL~M5w|7;=yonEl$m2 zb6<_I@tAQ)hOK<1fTzTQp6eFAOO-ty15cqWR_a$*Kk&YQb3pTNnN5D>HVT$} zGJbtpZfyt?)?3!H^?;zFXA@>gE*#VT2VkH$MTc~K&mdT7`cteVrnvyc)UtVfrhNz= zGWM@ndJFX%1uHC_XN}L{TdI>Bt6AKphf?MAnI9?XvClzkNoPZa9@)i}Gg5u48AcFt z@z-XAS{6wTUDCt#TKUek(=6}H@xJGp2xfNg{AS;Rv1Pxe4&+|&H7t7_j{T3=8o2Wtb}*e)#& zWO(|*)rly!dhE|Adq+NEbqS0U^_uv@qb?ra1sU6jus=j6hq~|GvQ@ zyKLK6UzNL(={Q<-UBM{0k5n_}uTV_Vrr3Ch9(&IWC9rqx;()uQPgvyQ)Si*NFKwAg z=rEV{7mp@u=id)3OqDy~gAzai_T=0U+(3m5k}E6jJW$Q_&NgKl^Im)i~v*-wWwiNHF ze`6zOgtUsok+0nQz8I8BuW92&>b3nra%f~UTkp?@9y*lFRAqDnTa@=^7&b>akH|;# zJbF6rsq*!E#RrBy=qpDSnqh>Tc?@|>HQY8xp7tU-he2=4#eH7EWTN1REgP$N*^PC% zRK5H5U0Yz=rV&Hq6@+z}Y7$J7rcR>ncpS&{kJRJy7}bJ&U+epCx@b$*wXgogBqK+) zvyfo6$@S8e+$@8-LULSlKVq~upOlsF`*YjCq6`h{Mqbl;5EL}W7*MU}7{rnKxyV+SpN*DaVyP1omAGRpX;W)Rn}LxXEF zydSm&P{C*J!~*Gi@9K_I%fWc;1(@7(64i|xfu{v1v{7i7L|w{rLAHMupn4WCZnR46 zSb9CR-$3m)c_!Tk{#fa8GVw{%>pp?U@SkjABe!KuH4KKG4W6=532#tzfX*5#zC)UY zg##v`))~!?@S$LGD*F0A6&&r9mX_^){wsxzJ0?g@1C>#_&}xli348M7|mY30G@0A}}ZD_^wD3X9$mzHfn$d{fe z71%;N@)`NsV+m|5QjsaTOx}sz6vos+GksGr;uC*pHjlAA0tnQw$33n5P!ft9`0v4x zM$`yZe_CF4e*=sm?(Wz;Bk!4!hK!o5#zXVJO88J9O;hNydmygx-j)})7;{dlkmWOF zZwZGfEVWmBLqscm`x2}yIV~Gb<~CFWaMQ+chR^v@8wM$7ha!rdSg{B}s$y>WU}Ch* z#g~n7_-GXs+ZIuA8DuT|h=IEZi=m9l+Tg)jFlZwcGf!9o1+mgnmZ5#g_(tgz01V$r z=H@b8S|k91!MdN)S_hki_BN&)xP6$lFXrYFbHMmc&{6bM^L1VoQWEf)j9OS9^qElxc8Fi0tw zexZAQ37Y$9ZNk8^&c^r8q{xNq@J<+fN{t2?OF-`sn8uWjm97N5w1b}Pc5mRga*dC6 zP_?&8^hQN~n9^I=C6^#~jfI(@;N1cWr{6GKduG>w>1yvzc*F; zPv9`nVZvYm!B-ODMG@T5x#PWQTA%55J}7ij20X>4ZdZ&qIpn+H<8q%f;8e-W<`%F^ zyk&*PiK^9ykeHY3s~jd9tEZ+U78!V;0COwjyB##qP@W#x)SHZLUpxp|=gV3tsvD?J zzJIo`NctGl76B_|z}Qw=zLOdaLOTSfe9TjA8mMqaOs#2p+PP8*`lfF1Gk|MAgaJy;_^mS#>SS=6ikrJXyEU6vqIJ`g*x97y#VYLp-`AQhnXL|Hi zOLc>?2QPOgGDHVRBFXZ7JCDt(UMGhsSW4;TRV-p5SPtzllN21h*3+A^&R)xM+wo={ z0k?8H)j=^hwWbSEO4IiyTN>a$AN2h6+Ii}@VE9cRKmZ zovlT-<#yEasBDClZ~z)HZ1+)D)9x$r(A5iQkYea124IUojCd+4nFh)8B)cJI<2Csi8MO)qBoUdOBaouH1NY3f+msnv z{j-wjsNzXUKc=n2EF>$ZuyKmtNkqj1QHzyAdF~QMFHR|2W|K1nUgqwn(CjBg*hY zcEaQuyY zoMyn-z87ONLB;Nr8#04qz&^L5EBrheCD1Dx$^! z4Qe!-X5foelh2kdV~Nyc6A6aw&e;3aX#Nno2SpZb%KgWn+|S6%P%L{IQZ|2&&G10@ zmp_Pd<|kQW>$Cu{&!no!h!~Z!5rR>liEpI(Ak<0U66Kn1oA5PHrjd)pA1O49qQdzr z4^LJ|R>rQH88+pC{CA(BlNles5XySgN%TKtdR3Pn+2v$(5C~XE*bs zmwQ>TKbRejw@=Py>~-3jno@?xZ&z!M_NG-J_>edlMT|#KAU8JK7rDNsmn+Qb_LqFMvNE;b_nwb^8BzUJUZPl%s+T^+tC#-w#XS1c zC_(qH5xr^kBYS2Hhr^W_`wodyvp>J8I~0N&_a8}bT|*^?`yOpZY6P7V_+2#C8z(CN zD1~yA;H2OFeo8A|lii2>*RAzkeMWv)RHjN3i1tuMN(P0oGfclc(o^%10RI6QuNRgY zZc4-m4(A6KOH88TKcy6-lC8Uz`Ujn2SGHe<(^(DThl_^G#LZE3JBRymd_nj+CtB97 zx+`qL-PRN^Rlfe`o6a+3wPlk{zP)Ai+!^`X2k_;8xV;ASBaQ82#=s<`o@SKi(D>>P z>I~kC&U-z{iyXJtM_PIUW>^Qq17kv2%IL;ci>Tzr8KA9G-q##D%XqqilomL{n%P9;#tN8I*)-MxeSNgAIy~Za<$r@1b-PwiVA8b;^Zp zBzCA2nIv~v%(DmVucd5gcYGs0?JvB@^f9kfabWHkR?}7gRRJBXJ8-2-0B!FfK#@=f zK)pzpvhy+Bt3B-E{Z1lfV+HZ1kWE{9V<1*7OOR&zwCY$bqj@B7OdF`G*=}K#f<>2Q z!Rsgo?;f_D;to9PxZs)ahtKLPL7W7+HWR{ckrfUajcp!Ka70~KSap;_k_|CK;Phrm zxCL!f1LXsGq!kXMDAg9yU5;;B=-?Qc+$Tj$7&)0(E#HRL78=r1z=_b0Jn0)ky1(DA z*hW)+NAh{66Zb&}%3*5dY6PriBSKrKrUbw+H@dFE*tMQN`VVsR`@bCw zhfw4hf1mwl1q3(*GSO2Hqgy20w(I1s0D<)i{U~E#U5<1rMXx>#N!6vtZ-_EzGd1PO zCOj#Y4Y9rWNty?5|0jJVB2*(;dq0|P5+&HU#RnFJDMd2N7azF!Q+8RmOxuT5kG&F> zsaCp(z8@rv6*LeyDF)5w>hH@%0P(7?+`;9nHKXMr4#IIO%jg^Y0 zYmZTIi<5OzD(fh)gz32{RI|8iVS$|V=&0QP&V;D3_crK6*7a|~nUF5#WDi7qW2nvO z2hRpt0@C^)7`LV=FuZI&AC5XCs9%3z3k4Hlb~UXY`o!LLD1kx{ICOcgJng2Gx4}OF zLSc{#Gdv`_K&@GPpe+X#P>T;3uafm}ul9$qaLuo%a8x97W5*{FmOn?D7LFm*fFfj9 zGPCZF;47m)luZX!2cevZxj%(hYa~zP^UDkbL7WhH(>^S4Gn`0r`MIi=oQ9v&^JX>r z86tdr@qxZ!EZ?j40|LT3VQLSw=arm#NTV9M$vStYdX^ay)*`E&L5{TQ zbphilSFCzhT`kt+?^8bDr$`UN8?oU`&?r|Yf& zE1caR^}!fN6>7dZjt2lO#nuJR^Pr9Fc~64vblq>3g5l#9D55=}y`jN%F2K30 z4h72dwMxCNwn7yPV=#{1*X4PxOB_rMxVe}4Fb+Blp5|>7jk8Z>5V;I|?2qDLIC*w$ zxR8R2?b`V;C2ZA==s(%{Z-Ghk%P&T*bVW)ec++R(n+R!gLlN+RASC{?EsTAmW$DFq zJY?{-_cH7QdvMVV+vTAHYQ-V6IgxY&ZrSr1()Hj%;IJyQWLD@7wJ%3|!h^ipwSY2| z>5#%@WZva&u*iaDxXY~@Tcc{_VG@6${sI1_VwlWuczq>IHIc5mW43rm4H`_Vmh=r}(iXUnA=rPZULgNgCW_)74Lv~66mtO$=?s+r zSE-`(kNSCoQ~q<)JXh~toki5pZGs)bq8^XDmYxZYMrPFst!Lj0Y;VwSXODFqb-e;C$3eJ^v1^l zE=-B;eNSWpc^KlIhQ<_6ZAOIA#hZhuX}~zLAH4$Ol6EqX5)7tX>(i6dmEbL1_N3I_ zi~ssQ8+yp}JKDTE{moRl^qSF8^*Yq}o0SMfYgwD^gLK|NUm9 ze)jqi8ut`%tj$w&+{;gMCCqx7+8n5q3|5dh$5CBLU&vd#vq14N{B2Csr21XMc)E5* zk|w3bEQ6D@9IJ7q+5oQ&NzI_`rwBtiBO2#;X+1Uxy9=g65mF~~5&2JP)29)J=2b;C z9Dm3vwY6d3%lYQeu11g?^B3ay7KcYumaCF}Q*31}@B;UM*4hM9_-Bh65xaDD#}N zG}_wl!<~PILf5j@LzD~0AB`RY%uT-_kRRHZz+Gjshyg$Zc~jyuP*aEM-ng4RELRcideor@r{?jc&4U}m3@U0n z%V^*Xq>9@w`uup$jyyJ@*Z7Yq@Dxp342KU%LUs&1_Vo}ElDf=xTfTwe&3;z!Tyj?X zE9g|BlDZiul(nT4QnbC}VL=XonhR+N?M=X4`<|`vWWV(pap?cP?7ARSjrIx|1SnEZ zMWX|4Bx{MlDF7z=vy#!>BMW$~WGC2CYQHAhM##>P)hOXpZwaJXC!x0QzkIyoeYDRZ znof|BbCL|hT`7%-6=NOK2wqO>L?`oU>i+RXv#4vdwW|qR=8ld}$)T9pN2y=+*TZC4~@SekWhEY99%0r^u_7;I(l$jyVh@R2^K zNl1G{3K)SYyj7#xUx?mDJ59X0k-*+{ zWcg|Ms)$(*p#Yem?~{;K<@y0H3(CHC*O1yzD%_j z)lO7&Spu})Z9|qQ^=>RX=5`<6=p_h&Cbe|q_<+#uaM2@I(`?jiz*%imO3{i?ik&I7 z0aEd%<@;DT_puh?Fy;JVR5e2b-6@&U8&3Ro=kF=N##REKMK>MpG{z9|S_}B6+@}Pk zg;#v@AucM8N+sicfh_-uAsmg%4wTMZkK{OL`Bl+|CBK^N%dm_Ifo zqlh6U2m4GYl&SA*L>G^Zm zS-IPEcT(f9JDc}G%T>%>h7u@fy6zD64C3L(g3m%5uG%EKi_yPW&{!b=b!zCy5Oqrb zMt*Do4gs_O1{-bbyGrh46&AXeNI~+1-eawC-*@zAH#3duwKM;r8Hel?GDqF8rx|>u zAAfk*#h+gXKnPx!*_ni+Vz$x<80ae(=Ol8dvHtZ}fJ6&u? h@B`G3Gs<5tc%_f|sxwP=e!F7lx9p!gzvaDq|9`efQ)B=D diff --git a/firmware/fpga/dsp/fir.py b/firmware/fpga/dsp/fir.py index ce95dff1..5b8a67e2 100644 --- a/firmware/fpga/dsp/fir.py +++ b/firmware/fpga/dsp/fir.py @@ -7,7 +7,7 @@ from math import ceil, log2 from amaranth import Module, Signal, Mux, DomainRenamer -from amaranth.lib import wiring, stream, data, memory +from amaranth.lib import wiring, stream, data, memory, fifo from amaranth.lib.wiring import In, Out from amaranth.utils import bits_for @@ -173,9 +173,17 @@ class HalfBandInterpolator(wiring.Component): delay = arm1_taps.index(1) # Arms - m.submodules.fir0 = fir0 = FIRFilter(arm0_taps, shape=self.data_shape, shape_out=self.shape_out, always_ready=always_ready, num_channels=self.num_channels) - m.submodules.fir1 = fir1 = Delay(delay, shape=self.data_shape, always_ready=always_ready, num_channels=self.num_channels) - arms = [fir0, fir1] + m.submodules.fir = fir = FIRFilter(arm0_taps, shape=self.data_shape, shape_out=self.shape_out, always_ready=always_ready, num_channels=self.num_channels) + m.submodules.dly = dly = Delay(delay, shape=self.data_shape, always_ready=always_ready, num_channels=self.num_channels) + m.submodules.dly_fifo = dly_fifo = fifo.SyncFIFOBuffered(width=self.num_channels*self.data_shape.as_shape().width, depth=1) + arms = [fir, dly] + + m.d.comb += [ + dly_fifo.w_data.eq(dly.output.p), + dly_fifo.w_en.eq(dly.output.valid), + ] + if not dly.output.signature.always_ready: + m.d.comb += dly.output.ready.eq(dly_fifo.w_rdy) with m.FSM(): @@ -198,7 +206,6 @@ class HalfBandInterpolator(wiring.Component): m.next = "BYPASS" # Input - for i, arm in enumerate(arms): m.d.comb += arm.input.payload.eq(self.input.payload) m.d.comb += arm.input.valid.eq(self.input.valid & arms[i^1].input.ready) @@ -211,29 +218,25 @@ class HalfBandInterpolator(wiring.Component): arm_index = Signal() # Output buffers for each arm. - arm_outputs = [arm.output for arm in arms] - if self.output.signature.always_ready: - buffers = [stream.Signature(arm.payload.shape()).create() for arm in arm_outputs] - for arm, buf in zip(arm_outputs, buffers): - with m.If(~buf.valid | buf.ready): - if not arm.signature.always_ready: - m.d.comb += arm.ready.eq(1) - m.d.sync += buf.valid.eq(arm.valid) - with m.If(arm.valid): - m.d.sync += buf.payload.eq(arm.payload) - arm_outputs = buffers + r_data_cast = data.ArrayLayout(self.data_shape, self.num_channels)(dly_fifo.r_data) with m.If(~self.output.valid | self.output.ready): with m.Switch(arm_index): - for i, arm in enumerate(arm_outputs): - with m.Case(i): - for c in range(self.num_channels): - m.d.sync += self.output.payload[c].eq(arm.payload[c]) - m.d.sync += self.output.valid.eq(arm.valid) - if not arm.signature.always_ready: - m.d.comb += arm.ready.eq(1) - with m.If(arm.valid): - m.d.sync += arm_index.eq(arm_index ^ 1) + with m.Case(0): + for c in range(self.num_channels): + m.d.sync += self.output.payload[c].eq(fir.output.payload[c]) + m.d.sync += self.output.valid.eq(fir.output.valid) + if not fir.output.signature.always_ready: + m.d.comb += fir.output.ready.eq(1) + with m.If(fir.output.valid): + m.d.sync += arm_index.eq(1) + with m.Case(1): + for c in range(self.num_channels): + m.d.sync += self.output.payload[c].eq(r_data_cast[c]) + m.d.sync += self.output.valid.eq(dly_fifo.r_rdy) + m.d.comb += dly_fifo.r_en.eq(1) + with m.If(dly_fifo.r_rdy): + m.d.sync += arm_index.eq(0) if self._domain != "sync": m = DomainRenamer(self._domain)(m) @@ -439,24 +442,26 @@ class _TestFilter(unittest.TestCase): return samples / (1 << f_width) return samples - def _filter(self, dut, samples, count, num_channels=1, outfile=None, empty_cycles=0): + def _filter(self, dut, samples, count, num_channels=1, outfile=None, empty_cycles=0, empty_ready_cycles=0): async def input_process(ctx): if hasattr(dut, "enable"): ctx.set(dut.enable, 1) - await ctx.tick() - ctx.set(dut.input.valid, 1) - for sample in samples: + await ctx.tick() + + for i, sample in enumerate(samples): if num_channels > 1: ctx.set(dut.input.payload, [s.item() for s in sample]) else: - ctx.set(dut.input.payload, [sample.item()]) + if isinstance(dut.input.payload.shape(), data.ArrayLayout): + ctx.set(dut.input.payload, [sample.item()]) + else: + ctx.set(dut.input.payload, sample.item()) + ctx.set(dut.input.valid, 1) await ctx.tick().until(dut.input.ready) + ctx.set(dut.input.valid, 0) if empty_cycles > 0: - ctx.set(dut.input.valid, 0) await ctx.tick().repeat(empty_cycles) - ctx.set(dut.input.valid, 1) - ctx.set(dut.input.valid, 0) filtered = [] async def output_process(ctx): @@ -467,7 +472,14 @@ class _TestFilter(unittest.TestCase): if num_channels > 1: filtered.append([v.as_float() for v in payload]) else: - filtered.append(payload[0].as_float()) + if isinstance(payload.shape(), data.ArrayLayout): + filtered.append(payload[0].as_float()) + else: + filtered.append(payload.as_float()) + if empty_ready_cycles > 0: + ctx.set(dut.output.ready, 0) + await ctx.tick().repeat(empty_ready_cycles) + ctx.set(dut.output.ready, 1) if not dut.output.signature.always_ready: ctx.set(dut.output.ready, 0) @@ -498,100 +510,154 @@ class TestFIRFilter(_TestFilter): filtered_np = np.convolve(input_samples, taps).tolist() # Simulate DUT - dut = FIRFilter(taps, fixed.SQ(15, 0), always_ready=True) - filtered = self._filter(dut, input_samples, len(input_samples)) + dut = FIRFilter(taps, shape=fixed.SQ(8, 0), always_ready=False) + filtered = self._filter(dut, input_samples, len(input_samples), empty_ready_cycles=5) self.assertListEqual(filtered_np[:len(filtered)], filtered) class TestHalfBandDecimator(_TestFilter): - def test_filter_no_backpressure(self): - taps = [-1, 0, 9, 16, 9, 0, -1] - taps = [ tap / 32 for tap in taps ] + def test_filter(self): - num_samples = 1024 - input_width = 8 - samples_i_in = self._generate_samples(num_samples, input_width, f_width=7) - samples_q_in = self._generate_samples(num_samples, input_width, f_width=7) + common_dut_options = dict( + data_shape=fixed.SQ(7), + shape_out=fixed.SQ(0,31), + ) - # Compute the expected result - filtered_i_np = np.convolve(samples_i_in, taps)[1::2].tolist() - filtered_q_np = np.convolve(samples_q_in, taps)[1::2].tolist() + taps0 = (np.array([-1, 0, 9, 16, 9, 0, -1]) / 32).tolist() + taps1 = (np.array([-2, 0, 7, 0, -18, 0, 41, 0, -92, 0, 320, 512, 320, 0, -92, 0, 41, 0, -18, 0, 7, 0, -2]) / 1024).tolist() - # Simulate DUT - dut = HalfBandDecimator(taps, data_shape=fixed.SQ(7), shape_out=fixed.SQ(0,16), always_ready=True) - filtered = self._filter(dut, zip(samples_i_in, samples_q_in), len(samples_i_in) // 2, num_channels=2) - filtered_i = [ x[0] for x in filtered ] - filtered_q = [ x[1] for x in filtered ] - self.assertListEqual(filtered_i_np[:len(filtered_i)], filtered_i) - self.assertListEqual(filtered_q_np[:len(filtered_q)], filtered_q) + inputs = { - def test_filter_with_spare_cycles(self): - taps = [-1, 0, 9, 16, 9, 0, -1] - taps = [ tap / 32 for tap in taps ] + "test_filter_with_backpressure": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=False, taps=taps0), + "sim_opts": dict(empty_cycles=0), + }, - num_samples = 1024 - input_width = 8 - samples_i_in = self._generate_samples(num_samples, input_width, f_width=7) - samples_q_in = self._generate_samples(num_samples, input_width, f_width=7) + "test_filter_with_backpressure_and_empty_cycles": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=False, taps=taps0), + "sim_opts": dict(empty_cycles=3), + }, - # Compute the expected result - filtered_i_np = np.convolve(samples_i_in, taps)[1::2].tolist() - filtered_q_np = np.convolve(samples_q_in, taps)[1::2].tolist() + "test_filter_with_backpressure_taps1": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=False, taps=taps1), + "sim_opts": dict(empty_cycles=0), + }, - # Simulate DUT - dut = HalfBandDecimator(taps, data_shape=fixed.SQ(7), shape_out=fixed.SQ(0,16), always_ready=True) - filtered = self._filter(dut, zip(samples_i_in, samples_q_in), len(samples_i_in) // 2, num_channels=2, empty_cycles=3) - filtered_i = [ x[0] for x in filtered ] - filtered_q = [ x[1] for x in filtered ] + "test_filter_no_backpressure_and_empty_cycles_taps1": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=True, taps=taps0), + "sim_opts": dict(empty_cycles=6), + }, - self.assertListEqual(filtered_i_np[:len(filtered_i)], filtered_i) - self.assertListEqual(filtered_q_np[:len(filtered_q)], filtered_q) + "test_filter_no_backpressure": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=True, taps=taps1), + "sim_opts": dict(empty_cycles=3), + }, + } + + for name, scenario in inputs.items(): - def test_filter_with_backpressure(self): - taps = [-1, 0, 9, 16, 9, 0, -1] - taps = [ tap / 32 for tap in taps ] + with self.subTest(name): + taps = scenario["dut_options"]["taps"] + num_samples = scenario["num_samples"] - num_samples = 1024 - input_width = 8 - samples_i_in = self._generate_samples(num_samples, input_width, f_width=7) - samples_q_in = self._generate_samples(num_samples, input_width, f_width=7) + input_width = 8 + samples_i_in = self._generate_samples(num_samples, input_width, f_width=7) + samples_q_in = self._generate_samples(num_samples, input_width, f_width=7) - # Compute the expected result - filtered_i_np = np.convolve(samples_i_in, taps)[1::2].tolist() - filtered_q_np = np.convolve(samples_q_in, taps)[1::2].tolist() + # Compute the expected result + filtered_i_np = np.convolve(samples_i_in, taps)[1::2].tolist() + filtered_q_np = np.convolve(samples_q_in, taps)[1::2].tolist() - # Simulate DUT - dut = HalfBandDecimator(taps, data_shape=fixed.SQ(7), shape_out=fixed.SQ(0,16), always_ready=False) - filtered = self._filter(dut, zip(samples_i_in, samples_q_in), len(samples_i_in) // 2, num_channels=2) - filtered_i = [ x[0] for x in filtered ] - filtered_q = [ x[1] for x in filtered ] + # Simulate DUT + dut = HalfBandDecimator(**scenario["dut_options"]) + filtered = self._filter(dut, zip(samples_i_in, samples_q_in), len(samples_i_in) // 2, num_channels=2, **scenario["sim_opts"]) + filtered_i = [ x[0] for x in filtered ] + filtered_q = [ x[1] for x in filtered ] + + self.assertListEqual(filtered_i_np[:len(filtered_i)], filtered_i) + self.assertListEqual(filtered_q_np[:len(filtered_q)], filtered_q) - self.assertListEqual(filtered_i_np[:len(filtered_i)], filtered_i) - self.assertListEqual(filtered_q_np[:len(filtered_q)], filtered_q) class TestHalfBandInterpolator(_TestFilter): def test_filter(self): - taps = [-1, 0, 9, 16, 9, 0, -1] - taps = [ tap / 32 for tap in taps ] - num_samples = 1024 - input_width = 8 - input_samples = self._generate_samples(num_samples, input_width, f_width=7) - # Compute the expected result - input_samples_pad = np.zeros(2*len(input_samples)) - input_samples_pad[0::2] = 2*input_samples # pad with zeros, adjust gain - filtered_np = np.convolve(input_samples_pad, taps).tolist() + common_dut_options = dict( + data_shape=fixed.SQ(7), + shape_out=fixed.SQ(1,16), + ) - # Simulate DUT - dut = HalfBandInterpolator(taps, data_shape=fixed.SQ(0, 7), shape_out=fixed.SQ(0,16), always_ready=False) - filtered = self._filter(dut, input_samples, len(input_samples) * 2) + taps0 = (np.array([-1, 0, 9, 16, 9, 0, -1]) / 32).tolist() + taps1 = (np.array([-2, 0, 7, 0, -18, 0, 41, 0, -92, 0, 320, 512, 320, 0, -92, 0, 41, 0, -18, 0, 7, 0, -2]) / 1024).tolist() - self.assertListEqual(filtered_np[:len(filtered)], filtered) + inputs = { + "test_filter_with_backpressure": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, always_ready=False, num_channels=2, taps=taps1), + "sim_opts": dict(empty_cycles=0, empty_ready_cycles=0), + }, + + "test_filter_with_backpressure_and_empty_cycles": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, num_channels=2, always_ready=False, taps=taps0), + "sim_opts": dict(empty_ready_cycles=7, empty_cycles=3), + }, + + "test_filter_with_backpressure_taps1": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, num_channels=2, always_ready=False, taps=taps1), + "sim_opts": dict(empty_ready_cycles=7, empty_cycles=0), + }, + + "test_filter_no_backpressure_and_empty_cycles_taps1": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, num_channels=2, always_ready=True, taps=taps0), + "sim_opts": dict(empty_cycles=8), + }, + + "test_filter_no_backpressure": { + "num_samples": 1024, + "dut_options": dict(**common_dut_options, num_channels=2, always_ready=True, taps=taps1), + "sim_opts": dict(empty_cycles=16), + }, + + } + + + for name, scenario in inputs.items(): + with self.subTest(name): + taps = scenario["dut_options"]["taps"] + num_samples = scenario["num_samples"] + + input_width = 8 + samples_i_in = self._generate_samples(num_samples, input_width, f_width=7) + samples_q_in = self._generate_samples(num_samples, input_width, f_width=7) + + # Compute the expected result + input_samples_pad = np.zeros(2*len(samples_i_in)) + input_samples_pad[0::2] = 2*samples_i_in # pad with zeros, adjust gain + filtered_i_np = np.convolve(input_samples_pad, taps).tolist() + input_samples_pad = np.zeros(2*len(samples_q_in)) + input_samples_pad[0::2] = 2*samples_q_in # pad with zeros, adjust gain + filtered_q_np = np.convolve(input_samples_pad, taps).tolist() + + # Simulate DUT + dut = HalfBandInterpolator(**scenario["dut_options"]) + filtered = self._filter(dut, zip(samples_i_in, samples_q_in), len(samples_i_in) * 2, num_channels=2, **scenario["sim_opts"]) + filtered_i = [ x[0] for x in filtered ] + filtered_q = [ x[1] for x in filtered ] + + self.assertListEqual(filtered_i_np[:len(filtered_i)], filtered_i) + self.assertListEqual(filtered_q_np[:len(filtered_q)], filtered_q) if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main()