From c5a71f742c8a55e4369bbc41a1a06bdbbf858a25 Mon Sep 17 00:00:00 2001 From: David Rice Date: Mon, 15 Jun 2026 09:46:12 +0200 Subject: [PATCH] Updates + IMX8 version --- OptimismSans.ttf | Bin 0 -> 209132 bytes arrive_audio_ui_imx8.py | 730 ++++++++++++++++++++++++++++++++++++++++ arrive_logo.png | Bin 0 -> 43952 bytes 3 files changed, 730 insertions(+) create mode 100644 OptimismSans.ttf create mode 100644 arrive_audio_ui_imx8.py create mode 100644 arrive_logo.png diff --git a/OptimismSans.ttf b/OptimismSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2795877e60b27ec44212d12d6310971af7e271b GIT binary patch literal 209132 zcmd44heI0A(?8B0Dt1LcY$!!Q#Y(jg_7Y7@qDeHCn3$N}lXrUl_1|lD@8Av&^!<50 z-{13q3kY|!v$NB7c6Qex91e#YFEx(#jn%dFI;xv?2zrliH#hcf-6h)D$N%IIpJ?Om z!SZjSkVB(Ahhx0%*4>F@OXGGV?7$Vc;n9;f=kIGaf8%p2N)26}e_}xG`1v{B>n~q_ ze|FjgV2++uhgkUb{OS3{NR&LdzYo7>pW_SHUITs?`}lwG`J2z*h*tQ2l$J*A^}8qM zwX~0aJScVa=KR}x=ceNl7ktAF!MEpco-R=c*xtwQ^;_@Xefs>K=!Zi*s&_cTC+|N# zegC|U5#akBuCJ)D{#Q%mV~2C_0oV9d)<|#h|1YkPa=xXRuXZ-8cYNmmz1mGj9KSi7=Q{YD z!;kOX{GHY=VaWUVUX+OTLBXxzhU=f5en+!5B)|7+e;mmgfjYl9I<-Sb6T@-_(9}L| zuA`X?zH>1?+KI!Z!v$<2E{wN!+tGnCq{ZZWhc@cy5ceEy@_V;q2#xIJf_wS%kaHf_ z;(KjTzYq7L8-}=Uv4;EV96@}paV8vf+8XNalK1w4f*q(YAg1Mehn7(94A=P(@X{#T zj((I5F$8!c_&+G&Mx9&uJcn+;#f(TNBgx1}gvil>h8BwGcC%9zca&>7B9Xl6v@QQ$X66*a&ytZ?B)WPZleH4rg_!E z{bGZgSzyY#0N2a!Bn{qx;<^xN#~>6wmla8ANEb_(A!PtkXgo`sxvs&R6QLjUW@zRp|DEYLOIaOP5rwIy#GbX zpz!Z}ouz>9yeI&v-nCcq-Gl!EGLYb2M+0g$q+EWMz0P)1 zFHVP4i*<}8zN-PZB(*#8zGm%{tfv(oPXm6Fb_yCBsQGX?Yq_Ad;b_1uP1+O3ptgg{ zBCt~WrA^wn^aGdznl|Eyij<>Ut8w@k0^lsd;ML&r5Oj(U7P8&p!RNNZl^Xu92j~%r zVG~~mNd3?!o%r0Y_2F}$<2A}4N;gU;N*_uqN)Cm;n{P@2I#kg(;pWP^JT8E=s zbmAUh*R6Fsy0jI%yFjWbd~U+$9=!8sB?KtqK-bF_+QMHR|g3}Wd;35ZsF-|7h9 zejdtP5IBbJbGckM~sdQto#19_Y0Tgt%(;?)0O^wp(gdrTpmnTn$q38S;eup>QY`8V^xe3)h9)!X05>xF_5nPJ}nZkHSv}pGPVF2h?JeBq~A2 zq+`~xfcl=bSuwBwo=_;V&aMn2?`Y{VGo?ut7FBp`#%#`8MS%Qn(g3HC=BjEB? z;=-W=X^sq&E3v~1)f7Hub)4lFd>4JElcE9UukqbYlsS5h&rjtyCm8bb_v+C_J=Bc< zUm0KM@4G}z=oaoT{Aww(bND;$LVKn?*WU6a+I#Jz_KUlS|KkULQpNmj@jK%hd9nUd zyxaV({9Gd$p-yYiej9xu$ca&E@yWf>ObYtpR}Jm*cx+%b$+llKTw`81K^tm+-r@!I3llKjZjEc!gVZ zh)&^wx_c{nMO1`EL=1|oNQpEI$Y-%CcEz^1A#REtw8HU8JQio-kvJD`9ACs+uwNHk zB|qM~QJ^;j+!Zl^0)Z4kln@FG4>UHxH6*x$1Z_@Y3}qB$0%aTp!Yigw=1^u(fGR8y zIbP#^0c9R#5ltqMM_EQ$LRoQS9Ut+&hO&XOF1GNxiE?s#l; zGP-wIWW-(ZQhd{y$ECee%;Riu_BwOUJ?CGgC2CwX@tXCTS2Y00&)QJ!VJ)d=ovUuD zZolp`LW$%Wb*;IGpY=`k@%mf!U+Srz8rmAx8h$nqKU*4mS{idLjk_(4hb@ixm;ajl zO}kAmn@ByIz0G6IXU!j*iJvWviI&D^>bh3Z8fm@XO2)ITyDi`Lrj69I{dPOKeeUmW za#Kg7<3Y!#4(cFJvuDz?@A={(4|&_Ylimkj@{+IJx9cN*c1Ak$osT+6J^ju8A^(n_ z{M6Ofb<{;&1n+OKd#3w#_sj0T-K3s9T|LV^mp#xy{OoP(9qYa5CH3qZ?z`-xJ_X~Nqaotwuy1%__zhx^G*UmZHbVSNv?i7l zFA|iXQSa#C=#Nq2=U8;?_Sl~>8l&;{@wM@P#%Y`;91{x@zb9ydCT~sBBu&MpUQJOl znmkHUl2Y}lwG^c&?MUa-ztfbd%iPFNhO&&RZJKXU})fzn;@MJ$5~weSGIJ@$-rM$;y*oPv{9< zG+&Hd5I>(bKg~S-`IPwitmE0kXT;CT`pc!uCzr&}=XalzdcIhFaq@!r`Eu~({g=eg zSM{$(UY);!b${LS`u1yjO>Z8(p||yKpTDJdv3JDJ_nYs3yr&N}AJQM_1AXlONFV7_ z?h}2Y&pV&#%j}oSFZ6}JroR68N?+-p*ZPN9Va1}Ay37xW-#5alQB$SdOVim$Q2Q;lxS)ED?HFj_!Bqw;quVU zKk&VAgA?u!yGG<_b#ysG_?+zQ^m$$UQWuH1{SjX(nayU>F(=;f7Kw%Ok=bz>2 zay~h?_AWnjL0emNF~h`y|GAFlfCQL5^T^iJsg}4^3m~FrkXNFSk;BiQFk?sW-$6|Q z;p5AfFA(EGP*QA+tznUp(%C;A=_ZY13lYXrEY9$q{aFTR0ZWq+|zW+$p!W zu8vkNrb!zfip42&-ahwoZ9Fs1Ge{#FFXt3Rv@Jz`M=0V%%_+Ah<mwBD9(?KzQt@1aIM>fP6aT<+rf&npAM{B4Z5l5QmqTlyIQ9uA@L~#34 z0>9#cX+O~?;QGs3_Hg@MFpQ&_tHnJYhwP(%&F3w$qrb?dECDg`eTOclr!Q#7c%Q$R z$KS$}`S~Xr;fL*Qb%A`Rg=a+17SyZaP}$~YhflVwz@k2n6gE_mr2Wqe^PdmAcr4_y z!1C?-+Q&805|q!Rr&(+bj014XSD3FD=Q_x33cMPQ#fuEZGT_Ib#9c|8*PqRzReUuh zFBXd%jSBR*108LBiF|zQ&4S)KUu@%cvZl`2IsaqvtPhbo^kyh<@HP>}}sofJDX>Dn&ZK{n1nD*#$NskW9K`<96 zdN6K2a9`Y~i)|#5q}%Uj@7}E6*}DIGt2sHH#GghpPiXCPiGk8(f%y z8o>+<7!RF@2jdvWKRg2rMHPi|RRV_2i^-3jBA!~Jl~3DSpI2zhQJQ1a4RZob5{krK5sx$F&q0)B1zd;xAij!u{=n^lOk;S3_!HU#>tWIz8TDT# z1#Qn-IFr)a=;Ox66{=erP0viOF1}fzh4JwPf;~(>-^nJD3uA)|pOIyeUs%XX=uk(p zM_JisL>0WCZB!udwu=)8O9CAv$H2zrnq6Kz-!6?Nyhg3*s}Uywb&K~ZztM& zn|z&{XWUo{b!%Yp{47#7iuZRo969hOn>rH&P}Xw0`F^gQbtMca;(&ZNNTMW*6%dOtH=;YJ8xQwb zV1!*mMg?E7^gJHuof;OuXb|NNQ(dOvU`H|VM&ef{?uA!zi9Z!O9VDF$4IM2lE7zC2K?MV3y9<;Z3<5NV>ZB1V8oVN0x6U6UZ zbe^NR#|w*3=jWd;E<9#kBISxh;~~`wWve8cD{}>nY{(NFk;vZW*!aY7Z)|Yy)!}6{ zF&UbOebA^gwZAyKn}`l~bp`3ky{TLA(PUo?+LUWBv@MIf2Yd{91)14j#XKH0H`DSW z8cePz;uM1NLpoC2y-=P4PD08pa6uZ~IL3W}vVbs|x~_&N`Ot+SaDa4aq?ADWq%<`O zkZd5_QU~GAF+t1(%n}Tt6Er^qgaI@^qul9OB$I?q&KAWT{0ghxx%6au`pMEMO-<6N zl6(1?a*yWb&ZcQ=adC^L&*tVHIm%*MrqQe^J*w(#av{OsOEDsXYal9Rw-deU4Fw zqt;Nq=o7Zoy2BsJ)YU;^OrBF`XVLpx`828q1Vp2sR;2gG4$}NZyWs$h#aCrpR^ww< zFOWr0uRrR@*wkOrzUqi9OGM1g213hr2#pS{nk~TU5Js|Q?-czGcSV|6=7N;lmB~Rc zay}O*GM7%%^XDWQIu1I-KE}!igR*}MzGx4$2`jxM`~*3IWFI;P*8wgjbB?Z7{GOOU z9g909e~RxL`PkXq#sO%yGq^IqpYQQ!P%<%yarFpZ!f1;|J?n3#=$Kt=7}T}bNqWei zxdG{;0fCTc=5T<1H7z^?b%2Tz&55)U<1g=m66;A8F` zjgF0v-T)lNFH8AnvjF4h!2iR@d+2b4fgOt}yL8eTORuBMWHpTM1c>@}CN|$w{{8Xb zY&bkSC||Xjf!+~n9_k+0{JypQeS;$NvDkb>y>eYcTsQDG>XL{uC$lqwzA39~bK`xU z-fhVm13TT3xo~(cqSv+YeS7Qs=0G=R8}<&A)FouQy3j5Rg*f!$S5XnAyj4tuWha{z zeXB24Wo&;sG_$%o6Pc0!th`*?`?kFNO{+;C&4h!yGcz|rk=din*7uFg@7o2s72EPZ zq#F!GWx8=6ai&U-5#wR!Iiv=eGQ6Xj0`j?17;*Y;ep!Mq3LQO{4nn4>VdYu=*7wz= z&$kkbO;kUv)vSHl#573j=%l|leRpE>$M*I=8^04{G4^|5QygLg-2^sIfu%C3MUAZ~ zvpdoHx>$IkBY1i5A^f%~0?E3VrB5xenq z1!$%+O9o?YaHp?*-81nQe98I5P*|A?_japE$Gbb5yq}@5 z@Ninb2#WZ6qr(Fe7Qz$=WFRa3!$LiVYgk5NL4)NaX09FuSGyHgt4M(y+!jrmG-Wb2 zG%$U>J+k@Z#`e$6k?r&8!P!WJ)ec^@n&GYU9P|w|LhgKPmP1OW7Cxu|S zs7q_hIUma32+OK~7gxk8?)~P(P9N$uGdq+T8npdwv%hBuUh{&bE=B)a=w~?31^Q3< zWayXq+rKth-_qFB)jAHojCBSe4mFas!8$Tr0)oWB*%sBPqBX3Lb>W3KAyo@a+{wbJ z>-KqleUZuCv5Uil7qz4fboO=*L=SggXf?sD1^n99>T7C?FDAE+k9NEK-7SqB-lpE0 z3%hp=wKAgpW})7$Ue=PGL4c)?zzzBSgEc{jB2(o~|>&M+P zcnUF8ArE|DdqtB6I{T7$v854gE5bxm<1^#%rkf*PI0V9h3=jzfBNGHsWnkwR)x3Pc z!pl?fxCXyDqo@c&IsF2m)OAYDvhZk_8C2>1L;*QR60}CEWTW#-r>&K(ec%} z$Fr0f8OhQ7OBz4j=nuDM6RGIT^9@l?bNM`Hy{|vVvKrQ7vJM&C;Sq+Me~MAMzVNc5i-Pqrh&DNf_H<`ggvqgL5g-8)Q*b9sr9X zBm|xVvVeHVhY_oq646}^dk26v-{+OkQ{X1-e*}NJ&?_lKMd%7uQ&H&AaA+4X049g} zE;NXZ7)UAxZhc={`+h6CzMgGq-1-K^f%(_zoMF~SO$h1+OQ|Ir52dAXVmCkv#ry|& zLngHp1f4gPUV<1~)soZ}%BuHqOe|W68k-EduBGDm4UTIprui>u1F;6PQD6Rg^X8|# zpwxQpVKDigE(_)Yjg-*4{z z*vP*>QKXhK&<@rTh)r#*f7^i*Y!x%^;pL)bEpR`Ns-&tctLIwcys1lBQJz(2cA-Jg zE`o)NiINpvS$IQQ4W*DdA^JXkHM+eG${!IMjLQlgU-%TuAaf+x+3yQB=_Ww?y%ZcG z7%|-na3263p4zg<1~&Fa2M0%K zeLRp3k^C4+2gcXAmFN{o6%MAhI$tNWXLgPQDm4EfWGB;F+$imHB(V!cYCc?*Sg%&nAuorYaK~q$WlqW4fIiG zOJnF^da8GzzfFx_N)(;!J5E6}CSr%Uf10^Z*+W;~`@uqTR0`i2*THDO&8b1;Dy1g> zc)(%|A4?P4<$n8RE(**}cGbPb8Nlo%Y<8hEJ6)QHmPoYWEPUpH1R z2L@iO?|xhq!fcH6)&y>d&*?S85^b5RgYFnCq|*zsqgomZc1pEJ7&Z!Su*GXAwr2>* z&MXO*c38&2EEIaku~LWhEWQi}pRL&S$I8o4_+>tOwly-cbynz*O;anhn(2v&X=``P zPEO762!zKTsyi$LkRtjcMXsvc4b}!ovtPzjvI$RD>^h;O3HE(aXoai8)D4z)=>9^z zr741Q1_Y<$Lw%ZJnC{J4q|wcacK?B2AXx}+7(~m4!wyX#P8D{HalaYyOKxOo_|gvt zhr^d@@;oaBCPoI%GE=kgttLi-XPL=aecTuNr?&ZLN82~dk)vm{nzq^V!FNkAhHZ0? z@xd4ZW(Enl2|eSOI}nitSYHf#v>Pt^LUfH!;k4lL}l@c!H+*z7NVfhQ8+#S zY{6foH)}pnuDkWiv~RqJ>O1ORQFuCR{An-UV{d-0-1@b?_H}FR!-})5zis@W(-Zf( zTI)v;$Ky*w>XqFBH9*xvN&mwED)N>p4p0%$;a?4X{CksZ<|3!xq8%Qg@W`4`A! zhV4cyNQP%IQ|9e=!gDka7ss6(j>dSMCo16#MA|m%S1uRV&(mG~U4g_%;B5c)6AT=? zJ38HgL?X}~?w%Y>=4c(x%+W|Q-Wzxtm3 zG=G|-A*8degKs(bj;Y*l7%n!;@DIZD5q~l53$`%XWl8*UF3w&?=8MT+I)wKaOt$g} zT_9AS@<%X5UPv9=9{l^`;LGoGE1X`;oEPEL=x~l9ODfZ(n8Kw-tFrSw zoDI%j53GgmkeF&fz-+ zxQ{&>xiohnR1Dt=12Tqz9{=osEy zYC^L%k}@UH^LJyPd;w4Y%SPzZm@e<>1HP zMAg(y=L&?&N(Xb@WmW6?=!!PKP&z75y=vB3m786tnwKnRS`gX ztR92!txSBGkE^Xanf7i@`p~J*D5&rUQgZc-IMJp^?zAMdDiW6_wf;Yx5tZVJai>QL zrzu^Q?aw_mL$1prRD{f&m5EkZip8yDW1+g)X}(u=DJLM|;pDy}tnpO0Lox6K5IL2> z!7$q}H)aqoq`fg9u%R(QFfd@_3EZWjG2bk1CTZHhU78r9a^p^^fiY9+vFKkj46^87 z0}+$rEeEN{p#;tXO7*k>LrM`egH8?uC1zconl`bn1&Ge3I+P+mQp5mdKw=xf6H2fE zW(e3_2dPmyS?(NBy>TBWU(HEB2NtQ23XRCQ#R%y6(?$KS-)>U<&^}0vkoq~mxk)N9 zBb!6+34AqIgxxy!h+8#8hjJKGiKn}NA10le27UWvf8m}V=H;07Z~l2WIeGZ|_V%+@ zqPF|(*++l3n)}=LPqNdP$e4LbH*RpA($4<+5xcepjR&jBUbm%B?KEFW&h~RlS4XeN z;4T{9e=4VPo3W~sA<)Xouml@jA9}7rLu$mz7)Y{U(hs&WA_dMy4O(mVz}o_rhNmU2 zN@XW^b1#i}`XW6&(JE=}$fO9h22(Ym&aQB@NEc@J33Qf;-R(5B6-8kv>$WSXQxuQh z$|Ncx!>Wwq)Rm282_Cw=%v^znQs(X3(E&YpRSMjezQJ?_b8VW00z`3*2c0z zt%v4dW8gv5svSlkOhx^F6GIk`jr7RccnZ0o{ZsDms+LzKh0pOWz5$?>w#Sg(sShrA zj=N22`7``#D0tip<68@X6buV$X;Q&a5Yfz%q$=Vh(ZBA%g#>fFF188afC0eSmHf7YLjm+y*C}dSXEG&#-E0a{HbW3Br;4!UviA#9i-bhb( zEG*>)9CJ&-3i_eS&{Xqs7{mCo2uZHxpe$_7rBDFlR!F-YOIpM2= zK7U?e?IZe0vMBdek`j`vwR)}zE_GRzHST(2B7nU4qq*Uh3Lz?bg(mF_5IZ`z%iG0_ z!SL!{?S*7SOsU!rlg-O@?8nJM(h&+l^x1GG_6m>**lJmiqz|gpUA%%uG8P1ZILt|) zDuYv`<(WKA;kH81-Bew-dq8LdhS=5}vmzYjo0Y<$gr?Rcu}g0P;IwuEZZi;CGj)b_ z!IIS+O6`!8(BVo8DJ-1mhm2+n6p**By_mUJNkFBjcA{sdwsw0d0ESTQ#1sPybAhXY zVu^^DF*e(56S~?P6R!}K$(!g1VU|vv?20ZmrsPnS?#UTr*RqLR_R5m)jEr;RU8dNo z#a6P@MvZJ+8*aFV&mP6fOMgZij8+G0*KDB80zM$ z7kg6`hAXZsD4;@S9Y)2*yBPsCd)K7^OM)W5jH_KyIS1RYQnlhrH)ThSHXHBOwi~o( z`!kFUU@8dyRh(e245}elt{vtL42^dyrUf3Ao`8zImy80gV3&^;N1>-06z=Kmn$7|%^Y*3Pp+S54vIiV5QtzL{WAWm z+iVrCv020jswDSq7BUu0yX|^LqaM~_-JC_@F=7OI?u}hdhG{BaHK_&_P)c@{ab3z; z;1!t|)4=?oaki1l^JCWGGMzD@Z0&P!OY zs%v7ChjSeI{#q8w{&HS*q3rC#>AHTzz{@+mIGDKR%3Wov!`Gv*3@2WT!rbXf7!o{T zaQ&skCEoS*RuEH?}mI+N72~TSgT?;lBqe z4o55Q{4U)bT|jNtRig#Tr>3RVPGW&0n+4Vw+DnKZr0ZB1;@ZFz3B`azX1IMEwYG!n z)Zw1!X1(ALI&DBJC$P^9_=IB}c7V~N78=O7Hewp(Ys=ZWGlL`<6sbxB3=uGNv&Kek zVUJimp>}gMvxRBL1)I7+4ujwv5kVrENB4GY38OnWescvMnB-MSb65H?GPZ4pz4Bbl zAnzX09~)$O{r;R>zdwL{RLvEus((jLMnKy1}dG!HY!(P5>+J@p@RL)li4wIqp*R< ze8N1NowjMB!A*~)`(D9$w^hQ`BrE`^#i6xiz4az?zdje&Rx zaYmP$b~BIyy->QNfdPqy8B<1jyvhoT^ib8X1suz9DL6GZeeP5u%xY8*N?HLX)Ff2K z0*}SF6rO<{D=%&*kI<~3RJ6jlg1c>pcmS7@Qsw{PsLLk<|~ASbsF5nsdCFKl|D z8)n|~f=w*movYH+$p3f?397QWMtuR|*1z4CxF6{VGqr+2E3mx2ALyoN=g|fnm-bECPlMconA_~J3IU-c8 zmAqnUt#-l+%ZgiZQo;&}oX_B5g_-NHi-|F_hExDofqbTXCgen8G|=v4z3)RJq1@$U z+sJ0(RV~yyx#N-eSfwEn{Ks;*@u~z&r@Vn&)Z^z{;?wq$inDR+982^UI1mya>66f+_pSybS>M zQ_!VIrBoI7evz9XsL>Ad?9lJiY_*Y=K-t18Kr-ff}hlW{?H#YzApSlo~4xB3R7eY=BkN!&WpcbLJd> zloPx`nbA?$2{4=E{d6peNG`0bQ40YyLb}l|=OPK`BcwR`@8>PaNZ8uqrTgIKz1L!& zGmkhQsUGQ`t;5J;GIEmk+Y*DdOZ%7X;&624oir{`2~KNHhrT_Qf3YSP(b$zpCiN|{ znzPF^S_{)m^KAd`-GKD*GsW1><|`I+lCb>%3c#jB=(crOknfwUlr!G z$g(AvO&)m39$|&CC63)A7YXk&LnbDo=qwE!m2udCx-!nR-^pBybfWOT!W?G)3ykxM0~^eWbh#i_bwsZh0HVX9XRZt#H{ zLOg}S6H9V=Q>B*rt#q!iGn{pTsbck(uyZk1&I4SiS1bpSL2M-Qz-QsyiM@m6MK|TCat3;?3O3l6EHdWQA{iIltI4X?dW&SADDPITYgdua0_iwXS5u)D8K}Eosg`1(jz>YtUV6&5OEmOA*`|ql+|Fj_ zMA%Cnu`&L}h^@99E_y=jltY!hPzKZp3fegP{&LWUr(Xu$1~yYSw~f+e6i)c{A5Hf ztgA3nbscodC$9P`WB0ps8mlU%MH=~#g*XlFv<+`w1511F{kSrsWqH)=)i5n03cD@$ zs)=dwuw*dz$KmwWm^G!Gm9rM<*^qydudpO`=~1R+)5_do#&$jIV)M>hD(+?3B~1%Q+jPTHdCN?u=;!LYW=fJ( z**TMI!5_56YiraMu!B@TJVPgqE)V6xvVc-Bkhf*uNYf8!9u2ImwRIY_}e^)`g z;=!^rA#X~9s6j!TakPL{npv}uc7m#nEynyAef1O%08N|blx3!KkgNaWSEIq&uQCQE!Ze{zY!>2I$HT2_rNEVl6ctltY>M=7VqDDWG|K0x&LKbL z{PC3t&{4i}&C=~r+m%TwM2l`u`4(jbccYFsE90$|$+A1y(&w9{*wpFUc)haSpUl{E zxtG*l%SuxgwszLH>a#4$mQur81LhF_5}mR>@u{V8HWSP>!CPLwB-yPjfi z=k~R)8@!u2Z|$79!&^IJ!y>h{GgF;+X_m4v?pQ394Nkf?)&iQ8wDSLW{ZrYVNFIx< zTx%0&jSBK|-Tj;;?<&MOGl_kvLWtvEBCN-@I)9E5{TcLF@%jB_6 zmHcbsnx{|>uZ8ay6#>_mK>lmIo3QQOJZNk3R1g&Vmjw3cdZP7O7#DQKwaIM53wm(q zU!&?(US;-LnBs_1qWx>q6oE(3k$o>jo_UhT*zH)(%^Fc`%;LL;;OTt$VBU;8$o|b< z`EJ?lO_1|}N(<2WpI4HXf#mrF>AC`86JV#4TfnFMl){EeL|(gG25ntpj(xw9-Dri( z;zpaWySZ!_A4OHCR?_Nnh)KY=s?wLFi;cYASYnPF*c~ZZV%{VDjZ@Sh)2`JWvI-M2 z>^tzvPz>Uha3u##_&_>jwJ2n8n7h1^}&7iSY+;w`I_bS1%^%~yzUh+H#t9s%2S+X8drgrnHSKfHj zXl^m%5y$Kn+iMJP6iUEV?g=nN1F{ylcZlC&rpwqSzhq7eb4u!AozT(0{9~RhlskpW z{Z9duLHeLl%scO+Bh>? zS@rusS8xwjquGb-(6(|F^U;=_9-GyTJ!h4j0$@U-7>~ED6CIHJX01WjOJzV+Cvn4M zQjZ>Du!SlbjJa2ns??;iU$s57K(Qasaz+%ZltR9X?8F6jrEm_IPWhguY&XAd(p5)eN9XbTg?RpJnM(v~z?X45V! z#nA~xz=gvgq)q0t9C&glHC&suGp!mZR)yb*o`E*UffKPKy+W+10C8GZIyfvyj8rN6 zD!l8u!6Vl~1lgd;Pgi2W^V?Tp!AIioYVR7y5>T)qLzRt7)qc@zjVm3Nb9k%LT+PjD zXXvaxtmP%#rQ4V;Hr-pc9<5U(q3X?I%=ucqDaVRESJ6>g#H;8C-@+~3b3R)rYfnl{ z>J+zrRi_J;B(7d{*pS(Yy7J&5vM@eor zkE2M7l@+WFe!FrMRHqU_kII3wzl+z{0H)?pOvf9+6IYMI0Y?A@ z%Bka#;8}9!T-gChC3G^Mmt>}i_3R{SHxG3f<^P}R39_#!b*zzRBST;q27xkaVJ%Mu zfey(v^Vv2*3_I9GtmO#D$e1d}Sv*bBp%o}cJNN`P5w;#>RfGv2r+kHkEk!I|O}n+8 zf*=`m=rFa zpH^_Dpe6FM$Ya!skj!hzofcTex+e=bCEFaRF@bXy@M5txttGbtR9jtsvA`>YB+c-O z*cI23V`IYNs(Bt_;m{*V9|EV7v&vC$PIcTI z>SS7Qyhl&dRWbhR6-$LTP^oGey{%F;_`_&#ohgCv8WrR4FX^5nDpaj{y-L-^n&oka zMde$a(&9PhqAS!X$H_a@>x2xb@RNC!xpDfQk+cd{{fse^3O1o{@nA~n_nOz28+X0~ z1MC~O$>^7Uo9Vu?mE}&H3yfW4aHx|h&MIp*&Au3LibF+nBuDb5adMOGiGa92xlrj$ zK%F_OoeWs4*BZ-_JW{o05mqcRU$J(@B-LuS9iW>WfT{?nc+OXjy`Qhl-QI?an* zTD4;FB}v~aSIdfLv`V$6KuG{nIa53*s<6*ArvxBMAbZ@Yyfzte#6*kr=yrKHRO;be zhfgk$@0dSK;#|mOV}1OP=>#P{2P*$^yR~(=OJ6SEdILL+;IK&Tp|N1T+vWf$8D6X! zc)A9c+M2w}$}}vEJmEaY%Ewz4`_Vq|bPZk(S)8<*%7_&lwpZ6e$Q1Xv29?;;`dhhf zcwJR0g(~8_(kuqk{Ty7d96xB?ww|3YUZshVGsm&z!g07@g_?`r*i^+sMom6h`FW#K zuJyFiNpSd<;hV5Orey0sKM;*o9s$??!I@|l#rW?}Mw98KVgQteIj_ZmS`|-M(VJU1 z|1=)**={i~mcLOr7qwy7Ci-v^{=H>AEmf>bH%6}1!dzH^z4W>sGnI6eF%b7t*-Xjw%6$&ZENp~P)CRoZw*uWY9UQKc(zG+IW z44^*2wqSy2GOlK@N=dMD;8w9%JuTDNiW^*Mo0VxjXSSG?S^2nG`eHe|P0>cKLbqF6xYLpos!;b;sGnl zCnlC8a9$51YZ9mEzD}PNb3=}*VyHV#+;IjQsi6P$Q0q|fb1{4^oLI+2s-jcuxF$@3 zPJvz)O?3@M5=L_8wffMc*sh5e;v_N;nRf)b4r9wa&ucOioRO+n6f-R4G28H5%^OXq zF6-TVf@x19+#nIrb z53^SyWFlLu8j_SGQOfM?>ygczK6&Q~?97RixBm^6oJx&(4ztAZ;*RSQ&q$W^U4dUg z0{G(((uyZwrZ59oQd zK>;V_$fMnV*^W5Ld{%r}jCI}S@c1GEe9}O1nzXb&c9$+J(0TsT2B4`)e0qa<9abq! z(XK4ks0A(?rV4Or0HmtHUZ9A-^QyN}fTca%WddxT$kJ-cD=3@K3*wCR8q|hK8&#J{ zsp{!bvL{44YS9y}k!Tk%2{1`b zqcTKHZngovPMPLn53Pj#3b^WUEgZ;Ln`*G`jq|@yoiU|q=m0qqHP26i`&kE^tURBi z%*aTF=CH}U3>9ZDRt46%V$2a@ zMPfes*N(=Zpe0o2wNzA$&e_!lb~mak5QhnmJWO^(OPXQKr}kQEU`Z!i;KjBm&1E;A z3MTm?*HT$v!j-mzXqirx(L5`LF3W@}jwP!rK<)O<^L#3fTCQvAYA*#ovKF}C?U!d0 z4|O(Znu#tvpIU8SZW}s@?`6}eBLzet1ZA_Sk4y2f3Pcq{Z^sb-*c$r3W(>*YPD>G*t}lz7BOLq5Ez*d5(=fQzx8vYZ8V4n{6WY@49fu_ZGi9_DRy zBs@JRc4h{t|xDV{;gMh9+6Dlp1%#Fl0KA4OQ z$p}18O&ar|eOqf2I7*G`vU@QSpVY)Cd9a^t9|d|>{y86DiW?A%shilo#{%ysle(`A z8XG|?FcY*U$sne{2{!Jr04>a&mclKJ%}Ri4^bM?MoK99aT2rx^JXDiO!-3#Ca)Vlj z+f;jD!A4=RhJNi2Coep4cvv=mB-N3d2An_YHzzaUGtfXTM!`a!ClU{J(iQMfrsjd3 zrsI_7Mg#h(eibq~Jc`kT;wZT@CD&oTLJxSUfq~q7jju3jf)#bREjH9*EQ^~+!^4#% zcr8i5j&_CpZC;ltcjr{e4mFGbd>xRSw~MTBB&YrMGUba^7}zTbjQ3ZStGi@EG|mpi zFGM|#CCt`i2l$fJ9!n-S+H$zAyesLrz-lwN&Z){%HIXjcnVG>co7tFcMw76-3^53~ z9#3vw##?Y=b}N?~El!}Brpb^4iTzK-UBxXb%6r#fCBZ9^#HG$<%t?T+bCPgu;WxFv zslg+<)i8L(aUidd9bmsY;K0^S+ID~rOm+aLg&nZVB0Io=rBf0SW;71zrKCRRyi)5% zz$Q*pEn85s1`DoE`#>zoknH02ThI#^sNkc1vS7h*Tu57{%dY15i)-#1j9V%7OWeN( z=V}h@7B3sb4k7AOGWw%LMlJML5~%A=LjoP(OfjiA6Q@?0_c#=jl~@y$fx^6{I5Sk4 zGezsaVoe4+C$J1qa%RZlB?_NCYl1gP1jGVz_pnyfu9rlhpc4675+O(_B$R0;(`=zo zAQd?L2$}#-fI$jip|f8OCX<7abh;@W8BC?{iLV8s@>+;<&Pp`u?4YB2eX*%%G`Z3@ z-nsjtc6=Z_iAf3GUlMmoL|Jc{>VOwtR$oM~SKKx###S{33Yx+|!s2nY>HdT?}T z)`XWCq!~pgW2oJiH1P9kH8UMjraH`@4f>E?k?~%jmw~kL&Xn*lC1f`sx!Qw}hPegs zJ9Jp+nL((lmBOuj=dw;izEf_F1HTN^gCm)Gfqr7T!RHVKV$ll7ggR^W0b4J}6gg!d zN7p-jk@TXIcN|4zC4!k$3m!Ml#zRw6Aqq}T1|!k2IAxw@3z#iD982aW#^xqwcTz)% z{(-US@#WVDrkHSrql7gAvXfMm&>cFma{d4{rx*v7CzIlVxDLL3`%zidrWU0Zjz_uj z`EgU_ukv8b4$28W2mz<+)Q+QJi(1ad#~@*Ogm`vJdxL{}bUJ>ruy8U?L7=<5O!Rty zI&t**0iAS8F~|vC843vg%%aAb7V%6!kZjew6UPe+#}hgjD%?c_1|;0yhBdvsgq7z? zWr_yh>GE+>5N8a^;13eqIe`Nk0cY_Es}xh>ZlI^z<&Q)m<*B%pE)Q{UA@}JKY{rv3IrOczNeQa7Xp76 znP{vXxVXH-gNzL8g(Mo!$^B5te%^o|5#*%6LSO7u_J?l%(edLW;&DZ7NN%na5(~J1 zaM>S?{^;5Ts=bYs6vi*?;GQ@^VcZS9WBgK!EK)Y*{2RlCRLqGbz9)y=J+Fw<@89Zs z&1wFg3g0^?Oy4_u)%RGz&*H*x{D9LY@bzy<4^EqdpTsx;bCxwH#`Ii0E*Jmc6-80N zxDFIZxs!C}#2N^ezcxo)3WL5606Yc1FCJBIZK#DrjeNykubZ0^GQZ)*en(uZ2U6-r z;d5njIFL!b$$LPC-@gU!Gu_Czphl@H*g-Ydqt}2d02)2Wpb_nqa1}ru7OtqS=^si> zKbT(W8#6RL?1R+KfXeP3Mv)~JqQw7WgJFO%e>Q_0GlPd6VLF0`B=nN`uAFrb5wCXyR0~w z$!4h-Ju!r~+(um%H)-fgOXE553oMM{TU@7GBUe-8NkZqm#orrb3dDoFs^3RP;vbgadVxer9F^J&^FT zy#FJ%f|oHG(=nxLwOCG)mW_eFyv>hKD6j{v&Nx2Hm3X)|&a}tD^D|FZOsALj48NP3 z@AR~09@84GY`T6#{(6cgQ5fLjKf!0 z)YLZety(^bIrGn_qpeLV`F>I=jLAA z8XLRyVxM;IO6zc6a;FS$gr!M)sdX+sK>DL%O~Eg$^InZs*v_ zcx0-nduwv))_7#$W=mu5aAfa;z2#T=?CH<7l{filV86TnE91hcW|^G5LbV)d|Q1_`UFQR zynN|N29r0(#&4~JCnv*^F+_%ao&lnMw=Z=sow=8~098`hC@u}?wPI0M#ytNehbRV( zvRMo0?1OarK~}vEOiT;}$6;ww53-s2snq>U_Ce}B%)r=KI6T2!Qlm?&++)X&2x>}} zlq-dp07PDvNG{^?;0OQOgLgykX-z$gpN|Q1P|&_my~dlk#kv3s^<~C%8)og|auTKl zbKbotBKRPOlt4OHfj~|;n9h-*rFeX4XlOYe$5@0PPI!}jV$a*(@Abm37uc;RwlqAH zkHzvs!%H#RfL7v@S@&Ra?uwKCPG2D4>+Hv7Tl+924QOi?J%r?>Xo! zCY|QCv!d$s`+^d3A*~bI;+$5Jp8425opnCFC&ay{ooBQkoApdB(|M0z z|5#vFG`$qzS>EN3n+J8xb@)5j{D__Y>M5Mh=-;pbgw}z>9^$liKB)xjB6#(8zlOXL zaJFuqpmpIAsCD#gn))?C4{!Y3IyN8ny|?*ubQ{Mr=*~cRX8L%VZoPFsyX^RQWIoz^ z?VacHX+!Ehu_MqO>+;XsW=!zV5FzJixH7Pyf?S8@WS!52X@AHs`rEk9`%i;;sG7{$awkZW(yYY*WaS$Ci%n;gu< zfPSD_VIKn4Edti~ca-r~1=~p#+mSp)kDh(*5YHrE&B5{QQfp zmd3M39naT8p^Z#>Jsd_|xE^BeRQr9qScf6IRofqI(>>m0sYi^_wU{Ap2)#Sr)TP5IkzzN@b7Ne8GKq(|A7Wha@n!@ zXL-7uAImPkTy&m);VcDA*zIl7#jJKJancEZ=us+z(TXhcs1zTDH?q(+9$-23?mzHP zqM$?H86N?{fu5G#h^&=p2$YoCS+$0{lH~(b1z@~prHDkNyug05robI?UytNP(G%%C!NQ=UJS31)^TpgLL_$A&WE+0SJ2!a~#ja{cbkecBNp`@0W1{dCa3 zbdcL=+t{RSI)qEnK%ccmh!pQx3;~zs09Ak;0lVt1#hwr*u@dWj*ti&N=v^OOd$q9m z>M)oM;xCj51~WtrJPPacKR=kBJ|GJFd)L0KZ+u>(P%aXg4hE+qkz9xx4nQh+*HQt? zRp{zGW<#rE*(&~k6wB!(ojj$dCluX2ZF=!*gZ}wO8^2yOoo+*s8b=qiq%;4-L>Ih*UDJB%}be2M-17y>7z^$MOi~t^jZ_ghH9GA*P;sYh5_2Pbv z-N71it3*k3=yTl9I!EVHv){9t#eheKWKsXoEsxYnH;9{ zp-Q2PyD1Q%k4KjeaZFYJOVQCv6VRp37t~JFMlS%&F_Gt1G6EQWNd&q$rKMmcxXamf zN9M7#69s2-O-kVY=Y{#t2i`AV6hZGC#D0tC^mcvu?Q-nkPJxyh;NJ%H`^fQwu;kQ$ zH;0Yf<#1YQSST2OL=B4LE{uf>u7Y-_v#Y!F?nSC&$mff9q%ZDvc2DU44t1nth&D7a zahrN*FuK%DckA)EOWjM+tu)COv>BjSJxr~SRCW=6P#8VmgTKDcT zCo@0eY(qSlrCa%b+!K`34~2My90s`JnAMB8vIaxa#;Z9e)nuc?GwIQRr2Frpct+ll zbpG-5+?)34lU!&pJC?|G^+r*}FW)f$7OIDMa1C>UNfCK{H!=~?eFk2pZqs|sX+jR2Ttu{f z?cLJo&{&$|`{}Xa#L~O9z(}I6FOldQo|_vUnxAjazgd|+3Qgp*JW$ByCqhTl7y}84 z_xBGD_V**Zd45P;3pydGK4ktUE&!>|s|7V2JP<~(uy{V8s_^v#=l(Pz_aI9bC`X~BGz-35f$EYhP1$1a- zU!&|}nr;h~K=~7`5y{m;Nh+cMdYP2i5 zPhxg>wkvw`*1fsc?NZvN;<2==J{9~|)zqDxTSJfV+c=g_wV?xof z@@#gnwWV<&H2-05@56j(071dQnP)4J2~0>KpRA?P=j+L3GPxcfCdK7f?g<=vdoWF- z?&c=MJJu(liSakF-rLgH)a)Lm>4Qlc4SGXut=QWKb`bxWl>7qmF}0)1 z!?nz?pnq+KU+dg2txwSqBbV&;u{6ePcf`3g$kKko*_Gl_-69YE3ya*%)&T_lKVy)M z?XPVu^7J$a!kuEW$nY#AO>|pn5&u$)ESmo#lMKd#-Pd^Y=xf^K=Kstlvs=OfYqiN3 zvR1Ik+8nTJ0GI++Btf=zb+hc@~DtYlutJiGrx^NdIdhAIEXJhwFd z5A8FuceFam_V)Jq?=|eRA)vZfVG&SU`&=TW|H?p{MD^Mh+7QdDeBH6L=IF*M0XUq-(AjSpI-^hI&^c!{)XjRj z8HiNorpA+#X4+pII=?cTX;Ncn&J^No zCB}>0tpD6lw>18jEp->VkPm8-q`KNt_g1#lHPuGX|2G7b*Nd{6K%CSN(2{|(MMwp0 z&cNE9ba!VcGCA0oOc36_x1+Nf_i3%DY)bMqv+OZR$9fZ zs*a+$D>+XLqv%?@QS|RpD_u5>=BYrH3<|8vq|??)TSc_YNEe0FZWL|E>9uXNA*uhN zjW#3}Hrih@ihfmUqf3U-@F*Bt4#@pCt+e-l)kqt{e{Caeh`)`IE{K1HaWrq#iKr6j z$LTmSbXYwZCzmlo(y)~!={NN5-sI#x>>K(1U~=-{ebc}|&)|!)M39W>63i~%!wQ0i ziw>wF*2QLQ@*L@^jt%C`I5CK)tYFjixDF>{Ux{2QyA}4t&gpw+E8-&UPonczBPwVv zH#FmopRE7t^fa}#dDHW7L99sMxhB#oNXNo!1oHG_RyZ_Uw(~@TqH7A<4cJ8AJ5JnKPsX6HL|jhe~Hme>i=W! zI~bx!p0{Uafdv;~$w7r(q7jK=9zii@J@cuks3<`JPrdWJul_z&H8tHcI~y?jd;ct* ztE;QKtE=O5k28~`he05A186${3{;lFgELpWXQ{!y)@(<^-Cp0Xu5H=6W$OH?@)ZAb zZamkQZEnS<9eK|?eB{8nSb-jNu;O2i&p|vdCF95q6C7Q|EY}c6_xkyvQ_CmQQ)l{) z?``hrXojkQ^qn(9hYl~kIC*gJ_|W~X=GKmm*5(3+pD0iLFb)=DpOwBQC|lAk{rms* zhxav?Cl7~=4nMd%bmrbkr#ix-$8hx`wtFiqQ(9f+LQV6wmc2ZTJDSW=ak)Z1j?&uQ zerkI9RL5?dHmc8N>+74E>YLizo1n^P=b!wc{)2t(13M2N-r3*Lcd-9Z-sh&+*htMW z>vv?csI_dzm+()EtS@6RmWK<`6JcfR#NT&Z_-FELpTDPK{&D?)flf^e1GRK^;=C{V zY$H%`#=W4PurZI1UE0QR946Mod|q4}=Y;u6!m4P)PR|sb@|~V8Y`ebyZ1?U@ z@17J2ZXYrl-&Q|<94QeTC@e@pn^<}p>7+ZPDdK1py+0eT{%bR*&QERK(o$RP`@MG? zIOgQ;iUm4e*+=MEe>?0NZnJ_K*JFE@TJn%MzoG?5gp3OdZlr!pXPRW=m%5O?<+ z?>jSCT$_>2=n6*37_RiUj^M4uZQ0g`TesA0 zZmc|fuzAm)?JZ3`Ew?kR*iB3xG2`=#vf02cItCCyX88O`ICAEXUE+=8d~7O`ZSQ;U zcjua0T6+i2`$zs*bX&81UAeA;HdHVGq!ecaw%o@9JzxOGd<(~C2& z`X2d*3kGZzu#JwDgRTiwPRn>%s-P^%GyX*kmvaqG%^17%HntDdbog)ZflAB7nc4F6 z(~!Bjv9YCxDjqXOMB1=(*r_ZR!JxUOJ=j*aM|Wj&ag2w}uhDy^G9yR6VB|d8 z*yh#DOwizGTT5GacUueghNDb_lY-@#KNvj=^H(y2Zlob}cdn_mBbO~-+B}Tj-qE_f zwe#?8%%kkSV;E->7Rpn|9VN?RKC8e?!em-E-k&V_RKKraIHy(bm?{3`bkV?H@bs4rFN+pf+0v5!c+A?Zkg`eM4OxyfFOB#!96k_Jiz2p7{X8ket$p ze1}ms+ediR9kO5XK}Mm>3I^V@jqPs0f8DLbf34k-@!0npeB-;0I9qeKtwU}s*~rI= z81xn4g3IC98^>=Rwr01r`Au7BPQzVbiZy)Z2obA|7 zWAsQ7j5*g5(xbT%OVn^_Q;vsmaX`G#&@Pm%G$5K}?iFEEz%=K-OpN+pAvGg;OswW$ zFpusTi?|gG=PzS8Z&h=d5k2bJZ4c`?l!0i2_>RYS>A_g~@~rgta@I#?J39vkI=lM% zqFRy{iqV`8l!lr#IPS(JdBy=tUHQ`4g7i| z)m|_G#SD}xFBs)Oe))T52QQsIed+ovt)8~FwR!%)(V_b%FJC@+|KR24oz2&qIy;-L zH+N!hGL37IXeXu)1t0FR%<(1)zLwNI5{AQ#pa7&>?#u))x&h)B>~DBUyB97#OFiR) zq4}WrQnEv3)Y!}Z37(f_kG$F@Tc4>hk4E4e~c2U z2CdscD>c~?%lUqh)q3|#;bOdpVn5^d0BM#hv(!SnpR|tdo++|SPDLvfijQ+z%o6xm zu)^(LF$>suI}lX#gNin+!_nIuLPxj&ReEun#(Txrp4~GQFD*-@>w8uxYaR^#Av8TTn40*bX7yUn1fL*~EUWSencC+zs4Vv&SfGMJoPd@S`3okTrZQ_ zmE2;0tq;h)VT(!as;tEzY;}SfSkfb>gy8I`N?%~Cbg?XtASt`<@>YnP4o1o#%9Ha zW;8a#@f7-@)pW#qnN{s(7z%9$U}!T)T9@9-jm(k;W=NBJ86ZQOVPxN+m#JW2hRQ(+ z=8X+1)#h+vMW;83 zdl}UET%k*L&`5QPBVrHx6g4~g+*t0_P4`1#+j$ZD_-!^J$GIqu4o6L zvJC?F%vY>rnTe5J-&AUCU#3Q3VTMchIy*{QnCB56^<5ZDe!;rJSI>~}X^7j1w7on;LS|ZJs;tlb;&X(L1&%$)Jl-T&FM~gN+SC&CztLc$)+IotSfcP5<|I(MBgz#BSiPtpCGNgoOT2rdnUw|Iv&q-t1@u ziTr=JIhUK_*<9&vFTS~s`}9Cl4psi+y1lR2!1?+!6koP=@UplcZb|xs)q%W;P?x~FI!hOjWF4WRl zNZPxUvaKXH)zMP#4|e4vEGV}H@pa$4i&1*REmHXZVx_6X?wfAiN(OPw``&n4=t2;;D%#JX&A8(B-HHcLR%4Zqd^ldJ+Uh zNSAm&#_fj*-&RrwOP5u12iwCNj!A-^ZZBspiR@NKIPzZNagUfdPu^v~o1#HYlgJw7 zQAvpsu$p%=UB${IXx+(_7M^wq8h0|y*zSmo5%J+bv?=F}Jc^XlXn3F{*a?$l%ti{@ zXD~*i!35r2E!jS;WQsONO|p3NGpQqA_7D*dB5?ARH#?i4QsXQc9lD0L3R{&S6>TXf zsGu$3gmyw(GW8IglG3L0EUbxOJKHoBlSm4?SuzzM-rR!}%5bKg{~|&<;6u%N(H_xI z0lA^vmgQ?s@V#bm=*ctz79RSAAP&{JR?h9l`Hl-Y~`4e{CBJE)#>2ujwH&*oA2i^H1wL@)XA7(VATT4l@ingCb5{oycV$@>T z66IIEpSh4@<$!CEvWxL>;<2*u6ky2Efeef7X!2XmJdUbZ?v^gV()^xSj76EhSSgxT zPlLZ4J%1M)`jwC6SH+vB{k?qYDv!*V zUUBO^5c^`@O=g6ovy99X-gx5I@{`GoB7Ge_n#}E;iaat(K#A*mNYbicq`ki`vNv7O z0eveksU>TzA0&>q3+24;9Rf#P|Gs)<|HT3vU&Kkrd zu?Uq}IT9hC6Hhg4W7%aZ2s9=)Lw#Z2CYl_60wbJNw+__Gi!nf3j;K%uuuP+4dnS&EBL8dEh6Erjp zcQL*}enpt#mDnQvoh~gDVTee(epBiwQfzvhutgLVq%$b^(tT}E54?O(guF6xv=qVR zWNFfg4(dQHIYWIxnZBrkJd_b5t0fA(tnf&v1>^yD^RujM!Hw+)kcWgLY!%QQJ>{ls zUV_?!gKz8zLgUooY;xE% zX}zpS(~MJ;*cQjFQYzB+qRFFlbcIN(uKaMJfRqvvAP^E0Hep3MIYygVHfqLHRT!&K z29VscpSp2leS7@0>unxzU(y96KSEi&DM<^%gP_5k9RSl^Jy4J<)wnfd$y`obM2 zUL#jSL|UB8=L^r0#-x@`=o62Ynnfk5P?1~ZJKZu=mT8>D=q}e#OJ$^r-Z={!#_m$R zRypD$XR`x_d{^YgjUuh46r~to+HI)PuA&^(X8u>;@E&Nw%N2~MeLEQyD5*V2UF@+G#>!ZYW> zLmY4AimU(%UWGA>&BSsXXyH`M8EbiI>x%3t^K&l)bG zaB(^cQ0{#Qemu06Z-c{MUx)v3dUh{}&(Da<8{+;oAOHVd`w#!u)B+#G$354$%ljnS zDPOFBZ9hHEUy}yr$enTx1LNZZ{gacFTwrzm$^L=LLsG)rtUD`hP$+x z&Up|x3s|Q2PvKHtA{hjV(@Kn%7G4z}TlD8gSbn19EV1+9Og zEaY+n+|r;g0r&US_$?E;eW#A~b&lm)jtuUBt$nxuuC1l3ySd|Cb9;AJ7A1Ft=)kxY zpNF~A6G_jnfFiOWm~Qj&Mn=DKFy_w+?tw8QLd%p z5P4E+kSmL8u>r9rX?Ta)rVG<(Ck5BslIq8EnAm;pzt{hFVEXGb>;L@+jc#7165iml zYvV1U#GI!SeUr+gC!vho@kk-XiVPIs$OGud&Q~=isg6_+y>^N!dcqZny7vFZKi1QNKiiFm=bb?eYRq*N6L#1%a1NTP9la9n-@uGR}VwA3k*Nx_8-5yo7e^;rTeH7B98&ldX8k z6@{?$h&IXHWx#oO`^UwH^5gD(z%_v@o9I5iV%aBwpt@7N7_-l?@SbL(@*Ud|5o z?s#zO`n{c3W{3UW$=;Lu_n+*YaBHvqclPAl)3Zx6nSFm8xO*Z0$HH2+ccORy?CgFR zpcnT7d38t=ZGNIDPw%}p;UfG%GU5?3%F{sb-UDVE9rT} zyt(D@&`2*eKYwiG(1_dV*XLWi+kL`-RE8nt(9=;Wd;t?@ZmPd&0Q-gc)&qym)8z=ws1JAscd zQh9tZ`k&k4-*+$gE?%4A=gBtCEk^NB^EZ`|qQv+h^b$Jd{6he|q}uGOKq(a`Efk{3OV5(_E&F?`gp9a|H<^xg@L`h{=+qtH%CWr zuAZ2l@5ft(|E6mDA9*|WTwFMmPWg3pgL}qyjUL%^;n|@>3m5k^?HQ`U?Lk#lex`N+ z-~4*mospMdsWS~$$z<=jrN3$7FZ7)K=r-|MpBMI&{z>pLV$!7##F`m;=vda*f|%TB zkEd`4WkV{srUuth)@TQuJ^y$lKQ@-}C-(09kN1F+uZFEsoDSFK2IH` zzN~sAH8qKsTRkKOCXQN=N+MlJC#XLfrNG?SJ}s<@nEb;!a?A zDHu8e?jN4&L7p4D*8LBT9ec1pK!a8t#PWL;6XN4hIrn;Mly+lXZZ;G%-9{V%DsV@e zhzQ(2OH%ZJJODi5UfIkndf(6p-MBn5wD0r~9?Wj*Y48Vj zwWi%FH#;=wH}tf9-f?Wy-_~90*X`Khj~(5?21 zxgQ4)G^bZasv0`;hmNjXI{*36s$I#vzhemG906IU_+rN)BWUiIQ%-$FzId#`9cwD}tZFo?OR*dm{w~BQX z35I?2M+PF|aKD!hBf4#A8mLx_;ieD=y$5S{M5+{|h^UmJCMW4AYL`&sYg~p1@G3&a zB^8U?KU%4oQg1o#-%G7*FVh`vH(@1G{s1Y9fP&V4@b|9Spjc9G6e!NdCOC0-uyXyT~DNG;uAfdY+t zO3n&H^AVxY%{~pDnsg=cIsg2DW9Q4Ijs17?6AE zW~qw&1tKI1$VK!qquy!Y#ve5FG=ZH4IE{gw-gE8=>~x%NUtp)V-6#hXsTwd>13Nd0 zM}Z@axzti%uLY1s;MFm8pb_C;UDV^Lz233|gj#_lNQX_;-iTJA_AHK}Qb*)gVH$xJ zLE~exgJ-y}Av=2d(4KN8Lwl8j5nljb?R3*@L?YKXeco_jPdhI?y26qW)jCIcKu7jE zCl}f?&H>y-835JW4*0%IoeV-+oLi|NJ!GnNV zRyloD{{{AHz$l&?r#rN#o!z0m*6FEE1@LuFcXd9ngP`u}BY`6Wpg#h8J?!fSXlJ#i z(BSli_C}{ZwBwtvYJX;FV_|J&eq$jwle?9>Yn&%@*K&7^b1ru}ck{-=)76z{IpcfU zSZ8w=a#wTLjmO#C<=j2vyp+3b9P_y+xo5c-xi`7D#`9@zA@{*Jmvbw|v6g#h9Ita5 zxxbC`uiX3GN8^04u(mwE^6bgdy77Cy_~PB#!urhG+Uk3FFPSW?<8a8T^Tzq;tT~I$ z3+JV?;pA}Y^{KN9<~RnH^oC9jhZ8Cun;d=x@GH)|vy3a3R}g0&jV6aLwQ>kw zgnJ48Wd8`<3&1r3*9?3K%A~Z;t_5cuFl)|V(4PVF3gT=4%QDnD^c-$?oJT6_&MatM z0?ZhoM)`Lnpoz?AtazMwxWSqW@!n!O){*Wi(#u)t#A7S=ePP@nBjqTE+~knM zHJHzk;xf!N=QaFRo#)W!;9f_`T@C$TAbiz%ha6Jre0d$rq4X$k8~Ek$q0}01u7HB~ zNQugoYJUT%tmDq|{rJ7--$)Q+AE+ZLRsgvM`bNMdtDycQ{MHeV?36F5^XI_%6u5I7 zYYpat^8r3f486#;ont$}2!EB%`AyJAux}A-5tyjNo^Z*$=h`CbKEUr4!k0N0RHDRH zl=?;xdkJ*?4H|RE#VRL$2$flG+W zOSnIt&gn!9vw*$;brtG*BE(sQT!y-r7hQ8qXp>{%L`2;n#o(T6GeDMP5uK}JQ)&lMj zXp%jJwT;y_8vgSi24MHZ7S&TTaJyJ4qaJAh^ZFr7Rd+(H?Z*1!UJNis&{#$xF2=Fv zFbRQq0Bd#!aUA+EZqz;M9K(dA+O5Hus@AQen;kQ5JsAzS!zAlAxy^2i+v>Kt?dbpU zrL^0L5dr_)F1H&~)$RD6ZVpU!#yRVpbIyY~F5;`Q%Mb-u!HCzvXgBeO)Gbu{9kA>@ z=RUr@`x6)a^|-xm4(m1;;kpCvpgV-o+D>2nY-XVcVDxU-t7a9V-5h(U^ zFdEk%n#(`VCp0Nc!|Wg7jN$#vCH9{UrFJf_f*2Z_Y~uNF7b~nOuga^&yWVN97HglF zdStwMG8*u7d)8~hTbC_ftJmhWdmUaU9*OPtwt3sV9bS*u>*c(>*XQ+n1KyxFYazqW9(#{z?6X2PYJ^;)FZaV@zLej2&fAK*$F7`gwxNSHQtOj zi$w>H>7DdWd2`-r?~HfWJLjGEE_fHcOWtMgigy(dEtm_pW)@ zy&G5w|HHfG-S+NycfEVweeZ$yr}xl%PU5_x>DV# zZK>_49jTsFZz`9{r}|R;se#mBYA7|#b2qC0oRfEY(LK#b`h|LmZrJcsyHdMTds2H- z`%)vR{i)H^SZX{qk(x|Rr4FQ~QwLLrQioGVQb$wAQpZz%>O^WLHJdt_I+dDBolc!e zolTufo%c>&PrqAP937n*t(h5FpI_RjnHA%t7;|Er4vqEE@tU*Zx**0SF)oX7Rg7z5 zTo>b}7`Mc@Eyf)&?uv1bjr5Epn7$(B)-5+*uCA>}7!f*lXskXkL(j3fLvuCrg64@B zPsMm9#)23x#CR>nvKWH9=8d@Cim@ifh8XX}_)CoUVtf?igBX9aQNOVIVs&Lf5~zK) zy0NsdzWypbFX^XO15@Z9Z#0uDK{E4XZQ-wl^vv@7)3w!=^o$@wk<34Rx3Q2p`E+sZ z>AU6UOA8;iZaE3;^G}~HtZdYrdO8nq7;CHZ8#Qx`q-Ksi@j7=1m!1po&I#V?8&6-p zpU<2zSnJO`U0q(D7qnZqoH0?E;<*D=XP?ZkWzL!yHRpuna{=meg1YA1#^Tbmh0J*a z>76@Yf5AfE^!mlx!otcDCYOs(N1o2FFVtM*Y}Q<4%Ihy$z*QGPO3h^nzbxUGt?<;` z%8TsE{F~MFjkVP`FBb&g6{c)h2Zmt2 zZegyu!9kfDCMVop#>Wm;-9%y3+~hdyH+En=2%D+-BS`y?NZNk{#q>u|1AnY7uDq!E zgA1$Xwxo31q*QnN+2R6b+KcNow_mKy|Fw|0YXWQTvRBPLj<$8ny|A`2Gwj7Ym7Os$ z*rQ=aak4Wr!&un9b;}IV6ZkVxft@qM_WFQ11Bc`za0r{S1N`}P;o0KSlC;XqNkb9X znAnxUvKC9TN26hDc4sV{*|~UD=Av1dGg-+49#?fioYpq!l0{vVTpyUTV9x`A{?iyUXpNpX=2nYa%$C!BY;gW1_>+*#Wjl}B3~JJ zZ}CHA{gIGO7Bfdb?=qSYTk=r{AdDeK8j%co1<;r@^@HM8FX#vNSTqc^Ckv+G|Veb zc4p>{G}*dk-U!Bds~rn7GJJi&k%7aKB=rGratN3*A{d_7BkW^0)InDqiG@>Rv)wzc5L0ktwbWd;EH8?)@nBF z(PXzB_GvWjhutEH=B5SQZUuplJzAh)YG%c%2jP8&%t!-}SavI5pIS5pwnRn?j89ly za0tH(4x8!Or;gZL;DpE79*EKj;}{>4k#y#rspIUsc$K`1R>?c7N~EbU!sbYG3DS@@ z6F4k}+q#9D4+mtV4T)VE65F#@YhsUvut^25hLDDjQ5rv5`LWua#FNG+_P-4uWu!H- zf1_!U>}J_8F?ujCr|URr$eJg0oD$iBu-U+rf!4(6$-sReFlXwRE36okjh4_d{^QdU zWBg#o3a=A_!Cn+PJ~lR8v+{0vVQsZ)?%mod+V1Mo>dG=k_#5+U9~oqHW=_o6$-tZm z%tKYrR##pGK!*Y|2%I?;0F4FaRA6!$jE~N8zF?lJ`x~iqDb*rbv245-pRHRqUSbT* zo^{Vx-w9LJJzxAQ09;>`*$LVy<`pvJLZ`R*;-v_Sx|K!6$;oUiJx^0AWKtq9>m&)- zYB>eAPyz%)_z6a^lTC0F5Tk|#@|SV|8`D`I;1@@b2s;|Wl-Rj-i>9Z}AXSMOBrP$+ z^u-wx5yVtd*eL~ynZk1}P__^mWYGd8yA-I{C}jquR0U9y6uYFypqv!h8aUTv3y7e6 zTTV@qLmMUQVQ>Ry-Et}c0WKv&A{$b~ZOCDFLr4=lnb9T>j0UDK;H1o4#_=kA;4j=f zc|aHwhs^?iZZ?2B*o+LVEWAK(_!oCGOAF7Mk*SzhE9Wfc*+SVX@B^NhUo-L<^J?YH z#yvU5G0zstcFd1tG-w~?f(RUAw!;jBsVMA_N!u}HI}X?m>AwQh2RWppu%N`hu(a5} zE2+phq%)!1f`G!plQarTP|`>$MhQtOOGzZ5KskUpV|;8%Sf1tO{Ko1UhL>P@%SkLB zIs=vu-NN#glUP1E@!7)4>hdBs=U3Mni89+wq*?AJ zX^)mqmRn@Rg9x-d8i_*7-6S;HK0>ACljWvqdDIi7>+jwytSzpt)l-_rf%MdoL0W1L zWV>;4D(bAK6ha4KUtD?4*fS`D(2o48J&=LwWFm|MM5u#^Pvb472y{45?K<1V_8z*7hxX37hxd57vm!FjIk1XvMh-u(iUebi5}xD@r)?#G_X=eH(FwGH`7DP5*i;vCR>_apw*NKP4=IkLfM_`!dn2*Kug2&=~ z!NW91VhPO=uO^~7;zJ{ljhBmS&+0%KTh{B~#o2vX&jl*>^$ZnUV6W%Y0tcaZzW99O zC81!;dWIv4T}Dx2Cs0tn@e-a?4P;$sDa{BsUS_CHX`smdQlEiSWKrm#=z)V}QDCPO zkVzqiEx=Dq5ZVz@>=}+9*f}p^r}5#-`Cza}a{BGN`86D>vg#}FS!XY%pNo#24Pilw z69}ZB*eP;7C^`1YTIDJrOqUJ9DR2o2%CMXTfmPV-(Mb7~0%x}rFqL%>92UK}L19po z?9N(sz#c)n3QCy0q+LaQtQrwK)UIq0ri06v!>OR8#M#MIN8Dje1?UKu1(3Dsj3HDps}%ux`p)(EQoC^JZoI|@N{W@`Pu6G z6<)P(di##Ta57GPGA}=3Nnb)U3oFmCYR{0Fh2_xR@MeAun+XfgH#n$~oohVNp{<36 zCz#zYm|%9A;4HacFJQMOh~E@=7?3p9R|r${i+5PnURb8BodCEc^fKTKwvNSgz}jH! zWx#4_B_SYi_4UGvI_u`?Y#l{Sv+dm*T7rTXN0m@2A0B#*9g@NN*dZCLj~$Z1`q&{E ztdAX%S>@OvT&U;ZC@9XqVnf@-F%^6n#echDufiu+ui#53s$3iz_~76GvK$EI11`$h#H+~-eqd2>A6T9W9*Ek#L+*zJq zd+oeje!ct}`{y`kjD!gZ?X5>mI$-M2J|}dxd9^s{N?#aKEVWVcAO<>r`~iRZ-pzxm z!Woy$%;^g_Ks9r34*JQNo1|YS{mk{t&@ar~gMR7CMd+6=o`Qb;$|dMG8S>_Jii=~k zboP^IqjYe#2W~cZ{f)Dze)S~I|JK&P5B6uQpJE-M)jrOL!XM{QBYHLabV{E6+^HUX zWAq9Cwa6%p)`Lw$9gn;Ht^-@Q?3MrRM{7UVJtl?kWbohMH$D;7;Me-~ewsY-X+tyr z{Mv!q1GQ(Yx$IZmGLt*jQ~vh%`0j6)!)HK7aVc2)z841nQZ#d>Tma( z{O0W$KMTBde&hCLe}~`bH*D|5Hw4#P`m!gs`JG4G9(MTkL+wboZXoj{>$myse#5=? zp}N_6zlGBHo6@P^R}mb2K~ksxTeqx85!5c#E;(L~3o(DWuLs=OPFxWEqZ8lqM-_*v z<3BZ{u;eNp^5w9E)2Pj)P?{ct)6QEVo#La=Nv^^;3T?{F#3Nf_F4RZOBpAgJ$13!T zFX{9r@zri)(-Z_Mi5e4MQZ%~YQw-`aZuPAMZxohXstis^OWnp)NHIw-|CbC~NnC*` z4p}@TP8C7MpwXM4kAV2?g}Bqcp?9tK0}0CB=TKymp2Tr7y{~%T^!|n4r(WOu03p4P zgWhKeCwy1X2fg4vXw_-##m8-gvG=oyVQfgXkv|qjAJl@=P`x;xbsQ(LF5)EP9h_WT z0785eh~FHta~5439ok&S$-{T}EpZ~tIM3zu-h#p_1EGq$HSCGA+IzV7MDJ-3aS`fz z@15R|gcyE)l;Q6o`~%yZ zd<{c3=R5N~`GNfI{Am6Fen<1O`Lp@U`J4HB`N#R^_$}qv@*nb_32WgGn2Y@SyuRAL zhQ8Lm?!H{#P~YCZ@xFt7$NNt8o$tHacdPF~-;=(VeJgz%eSi0XKKn;330C&JIeg@F zg>2w#j5Ri4OL?adm*QVSEZl$%8@?s>@YyrFUU~TF&AT3k;Ti;QU*PJFg%PG32&?i4 zYPUcV{=f(E!WdO-!}m*sJBURoMSU#VIDdG23ou0ARVbnnXBnZBuToa6J`7vnt8kpB zY8xh`jeRLZ6^?Hr5qzK&O)89FLUsg%48x>iG9f)d$j%@{F0QZ=VNxg|4_~f21;I=M zWtj=b(LPCLD+-LdH9YV z$tcNQ6M|ZywnI^|6kraabnDq>YVZiesc=q za0!IqL5oc7@%N7{yLnQlnbX79iXZR)sP;RR=M9VU~k85x|*~8NA8xWWs}4Rx*oLhkKAz;#~`t#Q=`}y3or;%HW3Y_RFwRn1rhm?l4vfP z73$wjb{4|y6cV(+Su&W2afm^vK%!Vowy01pLy^!hh2wj-!BC8;@~l}Lot(X5s7wh_ zH$;`J6jQ;I;2Qo*j2PqL6H!&1!4P_3c|3ci&PdCX~03Gl8Q6QFIvP} zyh%mdo)o>9pFtbvd*yj*mCEAw zMJh#%1bL-{D8}B&b!pR1DGZfKWi!pBQwy1;LM<@YLy>eKzAGmos5D7RP>U%hDex8J z*KkdIAfCiMVJ0*)n>D>OG7uSk5+~VRX4hs>#^Gt2iWPX=N0yY7GV5lO!EGI;IhwHp z)t?T|Nmy!5h;t!!=}rj~?Q87Og3}~5IT}QkO)63_#DH86#D!snG{Qkmo!GG*ibmfg zw5fBZilXLDY2l+n*y7EFm@}!#d};3z^ji)dyzuc1OsL9<#e-HsYdqi78OaGPK$XB+ zkf=9jyA?f>RHOhaFFch?DlJGBsod0V*&~_HyEdfDVxVjzVXltlLrkZk*Rf8s1voG= z^iobQJ_g`BdHPS z<0*WMjE~~*5i)(ci6SV&v|-1mVu^&M);>);Nbv84A{j!W+2#N(25K%UmZ>;&Orf>j zk80T9l&C)|#%ntfMya7=<`m9OFZ{Z(p+|&SRv`7ta z8x--6J=l*+%-!Wk_z8u`lb3=*EK6zGoPaY!*y;Nzs~fSX21!^__i8gS_2x;@g_oGh)Splfp&mg!hMI?Z0`(N?8Po#QbEp?kFQFEpUO~NvT7p`JT7g=HdIR+qY7J@~ zY6I#W)L&5Vp*}!;gu*4e-ak-OCBLvL%8VaM)SwP9$fTMj=Ce(%?UFUf;>2b^yB*op zO5!5k*Zp4=Z;GXgRyRhP5w6;`@`Q~ukZuoJYuHBy zt+rhpi49^r)rleqz0!eK0S8 z4`XvrvX9sWv)G3j<_`mjt7a(Hh=HfeO5iieI-YC<<>Ir)z_=ed6qSMCAi^02O>w{h z*3Vj@i~{vb=(;U`$wr&;5o`g@cJjv!Po$q^9jpjD?tTx`#Zm@*7;_L8(Zv7qOdX|0~R2Z%G%_w-9K0t7(B-rViTWg^6|j0fZSt3-H*nOtCcA9PuB6|SPTQ> zf&3yo-6qs!YF%7R9EEpq?K7~^c{i{E>yxZ+V;z^r!yhkbYb10!HBb*j~k$#RmcldO@vw(_@ht>hJ zlQWaE$dXXGkX7tc49VHH3Bm~;Ly(P`?Lk_-41=dqkk(n&al<+68Qj&3VIfXJIIm|H zeB6~q1yt|{aYon@{^I@w8TU(w_8WK==Hge*S#jEuLke>jsSSd{=O7L-gsK_`clr$-^wES_?)kniQ6oFht2X*H&S6`KhW>eL;NYvS2(HV%p@ zN^qz<>TBaQaK=}#s~%5P{T1GXlTGkZnA!;5wo82V5i<&{@Zzfw;;WG4YeLj+n@ORD zcA-jOjBnhnAqE%ORB5PfDu%de!z9@iJ|0%gKMoglYbiy2$rZ;(kWs&=t2l;aIPopi zHEk2i*b387AEi!ArnJk!qL%$+b*AT@fA?m9ss9R&I zTcFif&A>O-=O`}JML`Hivit~A{vl_LQEOP!)+Lox~8Jg(GV>OH6>pPOTP4{IBb)A zZ6z^n>=IAnt6lNiZi*wAL>HI%8aU%CX-J6JlXZnqQ_?OUo8WClF>D;_D$JQlLE{@( zu_+!67q|Kb`QWJwCu#-I1jPOW5W~@c4u3>U2+d8AMplv;bvpua0+gXT!1dinR zQAmrnXaLh4^Qy?H7|W-g1d-%dQL;%uvC>t_iik(69tl$Z6m5hqOFU}0nh`klEL&$L zma&DAE3go)$zXB+xH~ykl5hE#Nf1eXN!W||mCu=`5Unq58_9T0914%8A)(@{cEP8R z9M|+Cn z6i9&F1|yPbQxgos9>UH_sqldpl0Fo6_bg|@NB?HWsB2tKtdtk#aW zZCyjelz2vmt(9EnPbn@ki?N_3A0a$Y7~0^lW-;m?H%+Q!lh8t4p)|Has(+zLkXp)7 zD%B<7wjM480wnP7v6dWrVllZKd}>t}p~$=z*vZYu4md*;L;)OK8kej&h6uSkLnJ`q zYySX=BBm}=5ON~oBB)CLOrdEEqD1X#7W!yNIg?^)Y&GpTNq%x;ogo$sVuJI^D?RE^~r+Dp9jb&(tEf9YSC)BG>_)7n2yhaY0Jt#IV8cqJ_ACO^fh zX%U3_tKIf7X=y5IYAnHNd?ig2Pr{?RLaP}KC6}R-VB}BfqcDkS$5$u~HSQ=awtppd zlYSJlrfr8;f={TC*qS3XB?WRRcBNf?BsDu!e9EU>2xqW-tDHrt5SnejLK-C0_^VA# zJ2u(XKW@h1;%a$EYZIEC@J1Sx-|G5)MjqD^YtP$@R`C(7(Fq0|mFv=f}di)q55Hi1(Z!KS=r zQZwPk&%_jr>K0R7CZ=FjSPd6^q)Uj=Z69M#f;4e#n~6id`G;$z35bWF@j zQjNlxG@^La-=r0dSKLL^NNlnB2gRfqfe#ysA@t)V3#Ed6ACoTeOl*QER5p~clP!d8 z#EN6J9I8@3gI#eN_-NYVFMg!+U$Fjd!o-{0@)y7bZI4`(GX8jxhG3Ke@>Hs#rVVB6 zWV7Ic)mr1HcrBO^zoaE0q>Ecjv8%88sas9W2NMx!lA?i-xa1ZUhc)3ggksU0#N*qr zHb${WLp3iJ939WcUqT4`7EnsJ>;`qD@sI|-i?!*b5dBksG1VoZQJ0N39$Vd^smFCf zj{-}1k~9iI%AfI3Thvs7$y61EAeTTD>Ix|#0%=2OxSB*0+k=&l1plNE%P+{5VA1Ht z{07U!1{vAxoJB*5xhRGzfeCXBe+h|(D<%VHeAM=}CZ+go{|c#9{PDC1GVZ6azn7`G zP?Ks}?P^MnqOPBpOQJ&+Q%idR0WT2kCd{T${K-dQZM*Gf$Ew`^?J&eK8OoI!f>0%X z1|}L?prU??rH7k|&W4Oc5{fD2;{r2}AgV3b{fe~^=pL`(wa=W!l@a}MRJ@d%#U^@Q%Y1QwZ=5C>L=7jT|YVpCOx7<6>Oi) zA~yM(KNEv&@PDj6CMRlBQz15Q8Vts^IV{EF#Y4!gO46WQtIbX|3T21QIF~s31A8|i%i@ymco5G6SxS}xAZQsJ!gvG#$P108UY8tAHk3vcsO0$6!n@OQC#EvPn z7#aniq-MwD5Bq{L72GBT!6!I$3?jLTrBvaHgTWWKDRpuGV(vnCq08ieVya8aq7X*# zh`+>;6xCnKOZ>h}FQjzycnF6o*gjS~ZoH3md23~!QdWB8TbIq#Vqz#J@I(yA3F)Nq!$EVl$-@F7*_bTucd6W@yo*#oynym{wADk3TxXne~N`*Y(*}O zCotkF)D?q?ueK;YgVDxeVrwcA8uu5Rwy)%-7_<%fbL>)nQU*-xfiT(kj#3P26F(M@ z(+9X<9%u4ra{cvr`xY1^XG9ZkGT`iz%JWp2f2N~^MXHWcAd z1zY9kLBjo(LMncZ^B{IEOWBovHSKyaeuN?FDuwg=hY>A84>;_xNssu=gc*N3SGKR( zzdmo@4};`LDJ4^LXwoz=#?OYdWB&|$l;TaavtRz)Ri&jFt(Qt;{SI)NGd1nDX8b58 zQP;1MH`8{?QB;clQeoxre*f?|b>vnhshd)W!bV-+pVDF}D78WlsO8lHLp#x5NGrU; z)lw6xHo3>6Sc;YSE2eM9+l9H%G}KhO2vYpwAqw%km`cBzzrF+^N>wqnbVVBc=#Omj zCvKy|H{7#PXu%`#4CI&D3UO{0kHHX)N%@KU*d;(=1||wiuBcBG(~ofpb%qw~#PHc~ z^(RyQqV&KoJl}0{p*E62QTWZeOnhV81P;$RiqG=s6n5Il;JuUvC+pNWE%?>p9n~(n zfp{B!4bBeSk<{qqoqngu8N#pC+2ibW+ME&mI-F7GpwsCb0kXVv9KU|&1bzd~tTX2f zI%o0Q$sIlG-J&UGB-zKP$MbIZBoj63)6n{pmF51j+fWBd*|Pn`wlu=B!s=^S%j zIj`}s%8K*WnQ_+fn{(db>6FvXNBEwF@&QFULHT%~h4f|CKeJA5{^4OE-%YtW=zT6; zY328Xe0Rp3f&G+w2KqVo9`rx);tXE zT07k*cp+@B`-0vta~Hik-aqbZdb7#(=`k$mW2s4C#oKjU*eKLAehnz`3_Kg~+s9?@ zp+MW<(}7SSJuZ ziGuZ;+J+V@Bw}`taq@EN5ApwV?D!qFYAr0?+5QxJ9!t+Ss}$Px53Ri z{ce-n?WEjoZm-ki=G;8&eRzk^2(Q6EC_;c&B;UedFwK-@5D0kh|gj>r}g+fv1_Vfump# zUc0-&4!p<3$&lW{_5s%ML>7GTTo!b^#tglO^H^y(y&GMUb zulUWm3;gEXeSU3jjvt$Q#gENh;K%0f^D}dE)X4CB6}@V<$ohHK<(cM3Y(K*KH0$?R z$FpmIpJ4qI>n~Y9$GSZ9{E+R3S;s4CfWOQ7P1eU*$K!7BUt;|d>kF*Uvwn>AL#+SF z`fb*ySjQ`Eh|A)^xybfstUqS`DC-AVf57@J*6|n|Vx4CF|D*i!TY`J|EkSu)dxl>W zlqa@lxLH&0RU63DTG)CaPU;YXR*L^gma$ouv3q#m?*Ifq7IKyPH~_TcmuG?7!~(a! zK;U+{AgZ%4-fIfooqxem+n08rAH?x4QVgY?35YThz1vA{MjzUylfSrVOJ^I&6 z&RrJP!UiG2s%_B#;w7k(#LZr8F{6~QcGTg0vS9O6(B)qB`}fOQeuqJub+ z*aun9v);sdKkK$^?_!@p)>EvDR2RD>HjQ52#S5b(=Lg&xx6bJdq`7pUi6;12f!!$B|b zCwhT#?giX}USJn`flmV0 zBJ=lh=wa5yKEn3%tY0j!-)El(tYgT8#BBRL?hD>>UvPupTV3M!R%f_hc*_045$+c* zbHDJG`-L0)-0BiPw>rap#8d7gj&L7wnWf)4>mtclEO{t$RV1@WW09yLjjuA~8tWp- z@kS*is>pwltF!DQ()bbEMH=HVP(Z$8T_pJ%wu=mxzGIGkUa&6x2;v~tb=Egn7fHU# z_E)Uq@kqc(PxPGa(t{jl`!&}8Kgusl`~58KFQmp(TlgLQtP+-XI{4W zPj-IrYyG{QIAQD0_=A2gP}H*8?Khps`nUZ*fwJ9SMWj!6{T9FDV9U{r-|AQ4H;gU) zR)5>>PQUp;hu`Ek5RiW~hiAjd?>gJr+Sb?X&-tzQURRylx}^<(O_&At z`Mov1*Z8Khm5_BD>}(~~_2io0>9-uc;@|N17yQ!5rv9=%WjOvj24DSUTB#^}e>Z;3 zv0u}Py7Tm_N0G>H&lCF9EfxL-s^nLPe9=$fYpEdZ|5_AX^mhm)<_CUzJLxxpf~MbK z@asj9_fokP`$vHTiTs}3>o^$yom$HH`fCj;hRQSg8%AaAXrOTVo#>`&i~hQvbolgZ z3V+-13~+-~YBA#ApKF$%mJRA%{@eWcud_9KS${hk{_#6oqrcHNZGHNq>T11beu8Uz zxBr|-GDI3%9~g>$y*2V{d_%v?@yzjRzuJen^v8ye*W&5#^Q4gLU#&vzkfI{21!hus zG#&qk{b~Q=^D2M&{0@KeGW|vl=lqSGJzKYQfdd-xT6zywJkWIf!Lz=98I7y^^bq!_ zyW#h^1{j|Ebq)EUM!$b$ufN^jJY~YFn#k;r9WQT!gxXFhA|o zj-=bud(*SEXKSC-eyZP@zEgiMy;AMh4AmS=17hozduhMse9eRJfH3dZtk7?4e9RyB zr~K;2pa}}24U{*QWx6f>53+moS-k5EhyETxGPK9g6whv9-rZ{D6&UU~M zR>5+ks7>KgL5$CwR*KW6Sd{+PxIR0IrHXMr0Y1tJ;T0dHfXXB4L%ELn>}Q{0ycR)W zii==Y9dLFetwNty6~JJ64LnqGk`~pN?NiOUP#>cC5mYrp2Q;~Rf*Pz2Vn(Sg<{M9m za7R<4k`&)zY-doqb}3YY>idbl2P^iCm7_~aG}NqsTiXfRA^QeYZYv zV0{L)gBgKO?2RYbeJ_P~+WUZ~CM?|`cOi#s$g2YCHRM)8$S__OAx?;wj>efS8d6wF z8mBNM&1s+Y%+3iW=5gLHgdk2%N~Rx4?L(LlqIjsC zDQ9aT)H-?iQautKz*V54I5a+GMkQpe7FE2MEQoFtHKjuFiL+Ir5cS0Sb;XK|%EZ(B z)H(PdEV15VNg)~(Lg(eyu z5LY7Zi<`hbjPKKx5}R%+_UBMk{pcLH=<7=sJvXKXQwQEDM6D0%K_r0k#3O{vLnS97 zH8)Z*Stxl+P{&I|-Q1#5sQDE5Jw+Ujc$9Ohkw8U6M=i1fX(=tS5tfcXmLOgpakSK^ z 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 I3a)hWf5ctb1^@s6 literal 0 HcmV?d00001 diff --git a/arrive_audio_ui_imx8.py b/arrive_audio_ui_imx8.py new file mode 100644 index 0000000..1bdca1d --- /dev/null +++ b/arrive_audio_ui_imx8.py @@ -0,0 +1,730 @@ +#!/usr/bin/env python3 +""" +Arrive Audio Test Console +Framebuffer PyQt5 UI for IMX8 SoM + SGTL5000 +Display: 1280x800 RGB landscape, Debian 12 custom kernel +""" + +import sys +import os +import subprocess +import threading +import time +import math +import struct +import wave +import tempfile +import io + +# ── Force framebuffer QPA before any Qt import ──────────────────────────────── +if 'DISPLAY' not in os.environ and 'QT_QPA_PLATFORM' not in os.environ: + os.environ['QT_QPA_PLATFORM'] = 'linuxfb' + +from PyQt5.QtWidgets import ( + QApplication, QMainWindow, QWidget, + QVBoxLayout, QHBoxLayout, QPushButton, + QLabel, QFrame, QSizePolicy, +) +from PyQt5.QtCore import Qt, QTimer, pyqtSignal, QObject +from PyQt5.QtGui import QFont, QFontDatabase, QPalette, QColor, QPixmap, QImage + +# ── Arrive brand palette (official) ────────────────────────────────────────── +C_BG = "#5F016F" # P1 — deep purple +C_PANEL = "#720180" # P1 lightened — card / panel +C_PINK = "#FF80D4" # P3 — medium pink, inactive text/buttons +C_PINK_HOT = "#FF33BB" # P2 — hot pink, active / pressed state +C_PINK_LIGHT = "#FFADE4" # P4 — light pink, accents +C_GREY = "#F9F5F4" # Off-White — secondary labels +C_WHITE = "#FFFFFF" + +# ── Custom font (set after QApplication is created) ────────────────────────── +_FONT_FAMILY = "Sans Serif" # overwritten at startup if OptimismSans loads + +# ── Audio constants ─────────────────────────────────────────────────────────── +SAMPLE_RATE = 44100 +FREQUENCY = 1000 # Hz +BLOCK_FRAMES = 512 +AMPLITUDE = 0.85 # 0.0–1.0 (leave headroom) + +# ── Audio backend detection ─────────────────────────────────────────────────── +try: + import sounddevice as sd + _BACKEND = 'sounddevice' +except (ImportError, OSError): + try: + import pyaudio + _BACKEND = 'pyaudio' + except ImportError: + _BACKEND = None + +try: + import numpy as np + _HAS_NUMPY = True +except ImportError: + _HAS_NUMPY = False + +# ── BD2802GU LED via kernel sysfs LED class ─────────────────────────────────── +_LED_MULTI_PATH = '/sys/class/leds/display-indicator/multi_intensity' +_LED_TRIG_PATH = '/sys/class/leds/display-indicator/trigger' +_LED_BR_PATH = '/sys/class/leds/display-indicator/brightness' +_HAS_SYSFS_LED = os.path.exists(_LED_MULTI_PATH) + +# Arrive brand colours for knight-rider pulse +_LED_PURPLE = (0x5F, 0x01, 0x6F) # #5F016F deep purple +_LED_PINK = (0xFF, 0x33, 0xBB) # #FF33BB hot pink + + +# ───────────────────────────────────────────────────────────────────────────── +# Audio Engine +# ───────────────────────────────────────────────────────────────────────────── + +class _Signals(QObject): + status = pyqtSignal(str) + + +class AudioEngine: + """ + Continuous waveform generator. + Supports sounddevice (preferred), pyaudio, or aplay fallback. + """ + + def __init__(self): + self.signals = _Signals() + self._mode = None # 'sine' | 'sawtooth' | None + self._phase = 0 + self._lock = threading.Lock() + self._stream = None # sounddevice / pyaudio stream + self._pa = None # pyaudio instance + self._volume = 70 # logical 0–100 + self._backend = _BACKEND + + if self._backend == 'pyaudio': + self._pa = pyaudio.PyAudio() + + self._alsa_init() + self._alsa_volume(self._volume) + + # ── Public API ──────────────────────────────────────────────────────────── + + def play(self, mode: str): + with self._lock: + if self._mode == mode: + return + self._mode = mode + self._phase = 0 + + if self._stream is None: + self._open_stream() + + def stop(self): + self._close_stream() + with self._lock: + self._mode = None + self._phase = 0 + + def set_volume(self, level: int): + level = max(0, min(100, level)) + self._volume = level + self._alsa_volume(level) + + def get_volume(self) -> int: + return self._volume + + def current_mode(self): + with self._lock: + return self._mode + + def shutdown(self): + self.stop() + if self._pa is not None: + self._pa.terminate() + + # ── Stream management ───────────────────────────────────────────────────── + + def _open_stream(self): + if self._backend == 'sounddevice': + self._stream = sd.OutputStream( + samplerate=SAMPLE_RATE, + channels=1, + dtype='float32', + blocksize=BLOCK_FRAMES, + callback=self._sd_callback, + ) + self._stream.start() + + elif self._backend == 'pyaudio': + self._stream = self._pa.open( + rate=SAMPLE_RATE, + channels=1, + format=pyaudio.paInt16, + output=True, + frames_per_buffer=BLOCK_FRAMES, + stream_callback=self._pa_callback, + ) + self._stream.start_stream() + + def _close_stream(self): + s = self._stream + self._stream = None + if s is None: + return + try: + if self._backend == 'sounddevice': + s.stop() + s.close() + elif self._backend == 'pyaudio': + s.stop_stream() + s.close() + except Exception: + pass + + # ── Callbacks ───────────────────────────────────────────────────────────── + + def _generate(self, frames: int): + """Return numpy float32 array of the current waveform.""" + with self._lock: + mode = self._mode + phase = self._phase + + if _HAS_NUMPY: + t = (np.arange(frames, dtype=np.float64) + phase) / SAMPLE_RATE + if mode == 'sine': + wave = AMPLITUDE * np.sin(2.0 * math.pi * FREQUENCY * t) + elif mode == 'sawtooth': + wave = AMPLITUDE * (2.0 * ((FREQUENCY * t) % 1.0) - 1.0) + else: + wave = np.zeros(frames, dtype=np.float64) + buf = wave.astype(np.float32) + else: + buf_list = [] + for i in range(frames): + tt = (i + phase) / SAMPLE_RATE + if mode == 'sine': + v = AMPLITUDE * math.sin(2.0 * math.pi * FREQUENCY * tt) + elif mode == 'sawtooth': + v = AMPLITUDE * (2.0 * ((FREQUENCY * tt) % 1.0) - 1.0) + else: + v = 0.0 + buf_list.append(v) + buf = buf_list + + with self._lock: + self._phase = (phase + frames) % (SAMPLE_RATE * 10) + return buf + + def _sd_callback(self, outdata, frames, time_info, status): + buf = self._generate(frames) + if _HAS_NUMPY: + outdata[:, 0] = buf + else: + for i, v in enumerate(buf): + outdata[i, 0] = v + + def _pa_callback(self, in_data, frame_count, time_info, status): + buf = self._generate(frame_count) + if _HAS_NUMPY: + raw = (buf * 32767).astype(np.int16).tobytes() + else: + raw = struct.pack(f'{len(buf)}h', *[int(v * 32767) for v in buf]) + return (raw, pyaudio.paContinue) + + # ── ALSA helpers ────────────────────────────────────────────────────────── + + @staticmethod + def _alsa_init(): + """Set SGTL5000 routing and unmute outputs once at startup.""" + cmds = [ + ['amixer', '-c', '0', 'sset', 'Headphone Mux', 'DAC'], + ['amixer', '-c', '0', 'sset', 'DAP Mux', 'I2S'], + ['amixer', '-c', '0', 'sset', 'Headphone', 'unmute'], + ['amixer', '-c', '0', 'sset', 'Lineout', 'unmute'], + ] + for cmd in cmds: + try: + subprocess.run(cmd, capture_output=True, timeout=2) + except Exception: + pass + + @staticmethod + def _alsa_volume(level: int): + controls = ['Headphone', 'Lineout', 'PCM', 'Master', 'DAC', 'Speaker', 'HP Analog'] + for ctl in controls: + try: + subprocess.run( + ['amixer', '-q', 'sset', ctl, f'{level}%'], + capture_output=True, timeout=2 + ) + except Exception: + pass + + +# ───────────────────────────────────────────────────────────────────────────── +# BD2802GU LED controller +# ───────────────────────────────────────────────────────────────────────────── + +class LedController: + """Knight-rider purple/pink pulse via kernel sysfs LED class (BD2802GU).""" + + def __init__(self): + self._running = False + self._thread = None + + if not _HAS_SYSFS_LED: + print('[LED] display-indicator sysfs node not found') + return + try: + with open(_LED_TRIG_PATH, 'w') as f: + f.write('none') + with open(_LED_BR_PATH, 'w') as f: + f.write('255') + except Exception as e: + print(f'[LED] init error: {e}') + + def _set_color(self, r, g, b): + try: + with open(_LED_MULTI_PATH, 'w') as f: + f.write(f'{r} {g} {b}') + except Exception: + pass + + def start(self): + if not _HAS_SYSFS_LED: + return + self._running = True + self._thread = threading.Thread(target=self._knight_rider, daemon=True) + self._thread.start() + + def stop(self): + self._running = False + if self._thread: + self._thread.join(timeout=2.0) + self._thread = None + try: + self._set_color(0, 0, 0) + except Exception: + pass + + def _knight_rider(self): + STEPS = 30 + STEP_S = 0.08 + while self._running: + for i in range(STEPS): + if not self._running: + return + t = i / STEPS + r = int(_LED_PURPLE[0] + (_LED_PINK[0] - _LED_PURPLE[0]) * t) + g = int(_LED_PURPLE[1] + (_LED_PINK[1] - _LED_PURPLE[1]) * t) + b = int(_LED_PURPLE[2] + (_LED_PINK[2] - _LED_PURPLE[2]) * t) + self._set_color(r, g, b) + time.sleep(STEP_S) + for i in range(STEPS): + if not self._running: + return + t = i / STEPS + r = int(_LED_PINK[0] + (_LED_PURPLE[0] - _LED_PINK[0]) * t) + g = int(_LED_PINK[1] + (_LED_PURPLE[1] - _LED_PINK[1]) * t) + b = int(_LED_PINK[2] + (_LED_PURPLE[2] - _LED_PINK[2]) * t) + self._set_color(r, g, b) + time.sleep(STEP_S) + + +# ───────────────────────────────────────────────────────────────────────────── +# Qt stylesheet helpers +# ───────────────────────────────────────────────────────────────────────────── + +def _wave_btn_style(active: bool = False) -> str: + if active: + bg, fg, border = C_PINK_HOT, C_BG, C_PINK_HOT + else: + bg, fg, border = C_PANEL, C_PINK, C_PINK + return f""" + QPushButton {{ + background-color: {bg}; + color: {fg}; + border: 2px solid {border}; + border-radius: 18px; + font-size: 28px; + font-weight: bold; + }} + QPushButton:pressed {{ + background-color: {C_PINK_HOT}; + color: {C_BG}; + border: 2px solid {C_PINK_HOT}; + }} + """ + +def _vol_btn_style() -> str: + return f""" + QPushButton {{ + background-color: {C_PANEL}; + color: {C_PINK}; + border: 2px solid {C_PINK}; + border-radius: 18px; + font-size: 48px; + font-weight: bold; + }} + QPushButton:pressed {{ + background-color: {C_PINK_HOT}; + color: {C_BG}; + border: 2px solid {C_PINK_HOT}; + }} + """ + + +# ───────────────────────────────────────────────────────────────────────────── +# Autocrop helper +# ───────────────────────────────────────────────────────────────────────────── + +def _autocrop(img): + """Crop a QImage (ARGB32) to the bounding box of non-transparent pixels.""" + if not _HAS_NUMPY: + return img + w, h = img.width(), img.height() + b = img.bits() + b.setsize(h * w * 4) + arr = np.frombuffer(b, dtype=np.uint8).reshape(h, w, 4) + alpha = arr[:, :, 3] + rows = np.where(alpha.max(axis=1) > 5)[0] + cols = np.where(alpha.max(axis=0) > 5)[0] + if len(rows) == 0 or len(cols) == 0: + return img + pad = 8 + r0 = max(0, int(rows[0]) - pad) + r1 = min(h, int(rows[-1]) + pad + 1) + c0 = max(0, int(cols[0]) - pad) + c1 = min(w, int(cols[-1]) + pad + 1) + return img.copy(c0, r0, c1 - c0, r1 - r0) + + +# ───────────────────────────────────────────────────────────────────────────── +# Volume bar widget (simple segmented indicator) +# ───────────────────────────────────────────────────────────────────────────── + +from PyQt5.QtWidgets import QWidget as _QW +from PyQt5.QtGui import QPainter, QColor as _QC + +class VolumeBar(_QW): + SEGMENTS = 20 + + def __init__(self, parent=None): + super().__init__(parent) + self._level = 70 + self.setMinimumSize(280, 56) + + def set_level(self, v: int): + self._level = max(0, min(100, v)) + self.update() + + def paintEvent(self, event): + p = QPainter(self) + p.setRenderHint(QPainter.Antialiasing) + w, h = self.width(), self.height() + seg_w = (w - self.SEGMENTS) // self.SEGMENTS + filled = round(self._level / 100 * self.SEGMENTS) + for i in range(self.SEGMENTS): + x = i * (seg_w + 1) + colour = _QC(C_PINK_HOT) if i < filled else _QC(C_PANEL) + p.fillRect(x, 6, seg_w, h - 12, colour) + p.end() + + +# ───────────────────────────────────────────────────────────────────────────── +# Main window +# ───────────────────────────────────────────────────────────────────────────── + +class MainWindow(QMainWindow): + + SCREEN_W = 1280 + SCREEN_H = 800 + + def __init__(self): + super().__init__() + self.audio = AudioEngine() + self.audio.signals.status.connect(self._on_audio_status) + self._led = LedController() + self._led.start() + self._build_ui() + self._set_bg(C_BG) + + # ── UI construction ─────────────────────────────────────────────────────── + + def _build_ui(self): + self.setWindowTitle("Arrive") + self.setFixedSize(self.SCREEN_W, self.SCREEN_H) + + central = QWidget() + self.setCentralWidget(central) + root = QVBoxLayout(central) + root.setContentsMargins(24, 10, 24, 10) + root.setSpacing(6) + + root.addLayout(self._header()) + root.addWidget(self._divider()) + root.addSpacing(8) + root.addLayout(self._waveform_section()) + root.addSpacing(16) + root.addLayout(self._volume_section()) + root.addStretch() + root.addWidget(self._divider()) + root.addLayout(self._status_bar()) + + def _header(self) -> QHBoxLayout: + row = QHBoxLayout() + row.setSpacing(16) + + # Logo image + logo_lbl = QLabel() + logo_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'arrive_logo.png') + if not os.path.exists(logo_path): + logo_path = os.path.expanduser('~/arrive_logo.png') + pix = QPixmap() + if os.path.exists(logo_path): + img = QImage(logo_path).convertToFormat(QImage.Format_ARGB32) + if not img.isNull(): + img = _autocrop(img) + pix = QPixmap.fromImage(img) + if not pix.isNull(): + pix = pix.scaledToHeight(110, Qt.SmoothTransformation) + logo_lbl.setPixmap(pix) + else: + logo_lbl.setText("Arrive") + logo_lbl.setFont(QFont(_FONT_FAMILY, 52, QFont.Bold)) + logo_lbl.setStyleSheet(f"color: {C_PINK};") + + sub = QLabel("Audio Test Console") + sub.setFont(QFont(_FONT_FAMILY, 18)) + sub.setStyleSheet(f"color: {C_GREY};") + sub.setAlignment(Qt.AlignBottom | Qt.AlignLeft) + + btn_quit = QPushButton("X") + btn_quit.setFixedSize(64, 64) + btn_quit.setFocusPolicy(Qt.NoFocus) + btn_quit.setStyleSheet(f""" + QPushButton {{ + background-color: {C_PANEL}; + color: {C_PINK}; + border: 2px solid {C_PINK}; + border-radius: 18px; + font-size: 26px; + font-weight: bold; + }} + QPushButton:pressed {{ + background-color: {C_PINK_HOT}; + color: {C_BG}; + }} + """) + btn_quit.clicked.connect(self.close) + + row.addWidget(logo_lbl, 0, Qt.AlignVCenter) + row.addStretch(1) + row.addWidget(sub, 0, Qt.AlignVCenter) + row.addStretch(2) + row.addWidget(btn_quit, 0, Qt.AlignVCenter) + return row + + def _waveform_section(self) -> QVBoxLayout: + col = QVBoxLayout() + col.setSpacing(12) + + lbl = QLabel("WAVEFORM OUTPUT") + lbl.setFont(QFont(_FONT_FAMILY, 14)) + lbl.setStyleSheet(f"color: {C_GREY}; letter-spacing: 3px;") + col.addWidget(lbl) + + row = QHBoxLayout() + row.setSpacing(20) + + self.btn_sine = QPushButton("SINE 1 kHz") + self.btn_saw = QPushButton("SAWTOOTH 1 kHz") + self.btn_stop = QPushButton("STOP") + + for btn in (self.btn_sine, self.btn_saw, self.btn_stop): + btn.setMinimumHeight(110) + btn.setStyleSheet(_wave_btn_style(False)) + btn.setFocusPolicy(Qt.NoFocus) + + self.btn_sine.clicked.connect(lambda: self._play('sine')) + self.btn_saw.clicked.connect(lambda: self._play('sawtooth')) + self.btn_stop.clicked.connect(self._stop) + + row.addWidget(self.btn_sine) + row.addWidget(self.btn_saw) + row.addWidget(self.btn_stop) + col.addLayout(row) + return col + + def _volume_section(self) -> QVBoxLayout: + col = QVBoxLayout() + col.setSpacing(12) + + lbl = QLabel("SPEAKER VOLUME") + lbl.setFont(QFont(_FONT_FAMILY, 14)) + lbl.setStyleSheet(f"color: {C_GREY}; letter-spacing: 3px;") + col.addWidget(lbl) + + row = QHBoxLayout() + row.setSpacing(20) + + self.btn_dn = QPushButton("-") + self.btn_up = QPushButton("+") + for btn in (self.btn_dn, self.btn_up): + btn.setFixedSize(110, 90) + btn.setStyleSheet(_vol_btn_style()) + btn.setFocusPolicy(Qt.NoFocus) + + self.vol_num = QLabel(f"{self.audio.get_volume()}%") + self.vol_num.setAlignment(Qt.AlignCenter) + self.vol_num.setFont(QFont(_FONT_FAMILY, 48, QFont.Bold)) + self.vol_num.setStyleSheet(f"color: {C_PINK};") + self.vol_num.setMinimumWidth(140) + + self.vol_bar = VolumeBar() + self.vol_bar.set_level(self.audio.get_volume()) + self.vol_bar.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + self.vol_bar.setFixedHeight(90) + + centre = QVBoxLayout() + centre.setSpacing(8) + centre.addWidget(self.vol_num, 0, Qt.AlignCenter) + centre.addWidget(self.vol_bar) + + self.btn_dn.clicked.connect(lambda: self._change_vol(-5)) + self.btn_up.clicked.connect(lambda: self._change_vol(+5)) + + self._vol_timer = QTimer() + self._vol_timer.setInterval(150) + self.btn_dn.pressed.connect(lambda: self._start_vol_repeat(-5)) + self.btn_up.pressed.connect(lambda: self._start_vol_repeat(+5)) + self.btn_dn.released.connect(self._stop_vol_repeat) + self.btn_up.released.connect(self._stop_vol_repeat) + + row.addWidget(self.btn_dn) + row.addLayout(centre) + row.addWidget(self.btn_up) + col.addLayout(row) + return col + + def _status_bar(self) -> QHBoxLayout: + row = QHBoxLayout() + self.status_lbl = QLabel("Ready · SGTL5000 / ALSA") + self.status_lbl.setFont(QFont(_FONT_FAMILY, 13)) + self.status_lbl.setStyleSheet(f"color: {C_GREY};") + + backend_lbl = QLabel(f"backend: {_BACKEND or 'none'}") + backend_lbl.setFont(QFont("Monospace", 11)) + backend_lbl.setStyleSheet(f"color: {C_GREY};") + backend_lbl.setAlignment(Qt.AlignRight | Qt.AlignVCenter) + + row.addWidget(self.status_lbl) + row.addStretch() + row.addWidget(backend_lbl) + return row + + # ── Helpers ─────────────────────────────────────────────────────────────── + + def _divider(self) -> QFrame: + f = QFrame() + f.setFrameShape(QFrame.HLine) + f.setFixedHeight(1) + f.setStyleSheet(f"background-color: {C_PANEL}; border: none;") + return f + + def _set_bg(self, colour: str): + pal = QPalette() + pal.setColor(QPalette.Window, QColor(colour)) + self.setPalette(pal) + self.setAutoFillBackground(True) + + def _refresh_wave_buttons(self, active_mode): + self.btn_sine.setStyleSheet(_wave_btn_style(active_mode == 'sine')) + self.btn_saw.setStyleSheet(_wave_btn_style(active_mode == 'sawtooth')) + self.btn_stop.setStyleSheet(_wave_btn_style(active_mode is None)) + + # ── Slots ───────────────────────────────────────────────────────────────── + + def _play(self, mode: str): + if _BACKEND is None: + self.status_lbl.setText("No audio backend — install sounddevice or pyaudio") + return + self.audio.play(mode) + label = "Sine 1 kHz" if mode == 'sine' else "Sawtooth 1 kHz" + self.status_lbl.setText(f"Playing {label} ▶") + self._refresh_wave_buttons(mode) + + def _stop(self): + self.audio.stop() + self.status_lbl.setText("Stopped") + self._refresh_wave_buttons(None) + + def _change_vol(self, delta: int): + new_v = self.audio.get_volume() + delta + self.audio.set_volume(new_v) + self.vol_num.setText(f"{self.audio.get_volume()}%") + self.vol_bar.set_level(self.audio.get_volume()) + self.status_lbl.setText(f"Volume {self.audio.get_volume()}%") + + def _start_vol_repeat(self, delta: int): + self._vol_delta = delta + self._change_vol(delta) + self._vol_timer.timeout.connect(lambda: self._change_vol(self._vol_delta)) + self._vol_timer.start() + + def _stop_vol_repeat(self): + self._vol_timer.stop() + try: + self._vol_timer.timeout.disconnect() + except TypeError: + pass + + def _on_audio_status(self, msg: str): + self.status_lbl.setText(msg) + + def set_fb_snapshot(self, data: bytes): + self._fb_snapshot = data + + def closeEvent(self, event): + self._led.stop() + self.audio.shutdown() + super().closeEvent(event) + try: + snap = getattr(self, '_fb_snapshot', None) + if snap: + with open('/dev/fb0', 'wb') as fb: + fb.write(snap) + except Exception: + pass + + +# ───────────────────────────────────────────────────────────────────────────── +# Entry point +# ───────────────────────────────────────────────────────────────────────────── + +if __name__ == '__main__': + _fb_snapshot = None + try: + with open('/dev/fb0', 'rb') as fb: + _fb_snapshot = fb.read(1280 * 800 * 4) + except Exception: + pass + + app = QApplication(sys.argv) + app.setStyle('Fusion') + + for _font_file in ('OptimismSans.ttf', 'OptimismSans.otf'): + _font_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), _font_file) + if not os.path.exists(_font_path): + _font_path = os.path.expanduser(f'~/{_font_file}') + _fid = QFontDatabase.addApplicationFont(_font_path) + if _fid >= 0: + _families = QFontDatabase.applicationFontFamilies(_fid) + if _families: + _FONT_FAMILY = _families[0] + break + + app.setOverrideCursor(Qt.BlankCursor) + + win = MainWindow() + if _fb_snapshot: + win.set_fb_snapshot(_fb_snapshot) + win.showFullScreen() # fills 1280×800 framebuffer + sys.exit(app.exec_()) diff --git a/arrive_logo.png b/arrive_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..419dbac6d865f5afeb88c86d447d2151c26bdbd1 GIT binary patch literal 43952 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
  • ^Wn8$^ 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 literal 0 HcmV?d00001