From 9593ff3d5a0a86d8a610c80361a0d8881bf64aba Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 19 Oct 2016 15:25:17 -0700 Subject: [PATCH] Use FTDI driver provided by ftdicjip.com - Fixes lost connections with FTDI radios - Modified code to only test vendor id, all product ids are let through - Modified code to pass log output through to C++ side QGCLoggingCategory system --- android/libs/d2xx.jar | Bin 0 -> 133019 bytes android/res/xml/device_filter.xml | 36 +- .../usbserial/driver/FtdiSerialDriver.java | 345 ++++++------------ .../usbserial/driver/UsbSerialProber.java | 22 +- .../qgchelper/UsbDeviceJNI.java | 16 +- .../src/qserialport_android.cpp | 69 ++-- .../src/qserialport_android_p.h | 3 + 7 files changed, 184 insertions(+), 307 deletions(-) create mode 100755 android/libs/d2xx.jar diff --git a/android/libs/d2xx.jar b/android/libs/d2xx.jar new file mode 100755 index 0000000000000000000000000000000000000000..6610490d14a9a033ec212e5bb7febdd820756146 GIT binary patch literal 133019 zcmb@tW0a-svMrdEwr$(CZ96M%+nJTNZQHhOtJ1dZu5a(}_C06sK6~`-(QB;rYsJeM zF(aNQV#-Sa0V4x|gM$O`yV;8Y{Fe^|05E`zh_V2Ugsdpt*Ej$G5P-ZC82DcnfPb6G z|BnYF|FQVL50(*-l@JwCQl^y=y_cDskd~sMor960p`4zaX;7qJWZF4&pp}%NmXMiq zE(eB4J;xZtN~JJ+K_ekOE~I2XMngG3BS{8Gvb=M+b@=g*o2bZ?T^9Ot3E@A#zit8& z0N~G!!K(lFCjkEQuc56q-T$_L|F>uSr-g}=k@&)@0uAB2D8A&@DS+s(;%DXf2sF1)(t@mj^RP7EfoT z4`ZmO=?g;zgp9%vj$A$j3Wofev=wTv7d?G`pMefY*0DGtQ8E>`e2h1i@Ju4uzX`TU zjh7u|Y#WjZIghU)fA{I)Yx)e zU)+4RX;h$35!W%*6us)*&+Oq!E8nuCDq1hKG$ec7exsW1l`J*<>H{n|>8%Hc%V<`hLLo?iDx&9u1LOk~?|F zelLvgF##f*FkAKp`qs)nqS5~XZVIYV(L6csVVVk6*T6V!SQ>j{2r}x`)-Ssi)%VlG z%G&G4Uk*JMUmFtq0|3DOk5~V1hyGVs@&6rGXDdqy8#P-8OJj$BVj89T?TWmF@-6LB zpD^hO3?2xNj~F{{61E0PuoMWm8F+F+Dj#1f(&*&!OoFkRrLjFdtY_WyD7EzaI@F-z zQ_{Swd8i!jXHd;Qhj3rX0P5U z6rPbs7Au`6H=W?>7Rh7AJUBNnG()DXeSO7bK@RtT)1+1lV}l6WGd5g}9w5hz1O zjqLec4ax7o#?ATGd*rOWpn?8r8FrA}q|e@F9on$O6rQp?Diq?v3$9n;Wyc0%ilB3{ zVUa%CX*WgSBcNAobDzY?3w!O6?TX!?)%xiT)@-hss}i#M_fSyp(Fq771gitH5mJ~q z_2)Pfv(^Yh5KZKzp*d(J1uYI}W(o@|Fd#O2I0MjT%T+h59FBH`m050@525BpC=!^i zx+@X|*agc)mrHYk78og0)lq)c7r|sunTOn!-mbuEF213-UQ-AIqhv@fk^}X&SOmt< zSw)761NAT!$!FT=P08jYBeBc2+!rVQC0z)gXu~E%FMt40Q07KDC5~tw%2}2|<1(i4 z@t@J&H$Rc?Ro1Em0on#jutY7AZzh z^m~!?Q<@PCE|J3VymE4};|?%2 zzcU60do-Dy#d&{-bD%cY*i61V%)p-6bq5rmqv9Y?T`qsv#*PU=7a=9=sL8E^*?3x?y4ni;_IG z#5P54U0zD09hQ~|>+G{vP0B`@aL`mY9B8&>+Z{pHS|tYpl5vaRwAy$M*V$D~!9!=g zRr=WIof$3hIP;&Dbzi{l>7_eW#Ba5UDMIDOeJZnD>A^hWTiZ&ici*Er#8r zU|&fc-^h2huA$OiY1R*7af9H%u`SZ)SwCTK>vD$^?F!_o>}YI(Zqq^H5Aib^OFQX2 z<(x!PrF6i-(IC2g;CZxjUO|xsigRrmgcCEG?|Ql&>8zAgQ`f zuV{i%{ZtZSd8w(Xsd@evtSaWrgH2%x&bfpon8J4;?uGO)oxYHl7)aJFY?uGkttZtg z;&s{1mD`8+hR%>_Ilj$y|B5%tLq*LrF^Q^X;WS9bMK`N5#%R%I|HP&Z#kCas&SGkTianNi-197V5{0HQ)or`h zIv4c;wXp7^|%+NUFiA{+|zHd`dquU?>qH6H)}TBQ&%HQ7e6{jL2oJ70~W0CrfZ3} z420N6g6;iqdOfXx)mDXGerddf@^IGue(;9NVwcZO_a5IXmfGw}#b|dqYg3tvUtU4o%&I5Jc`tNU<=XMJ_*}gx~`+vjJ3ib3@ zxEtCkHA>FdaX4^UuO;(M*fF<-Y`bLd>y)ry{?PsFaNyoIS|YwOBa^IoY}b3o`E&UG~`RBf~L z8PkcgaF0TUn=YbNK2DA(@@SLKuS%xNq(CWP4@W>5K{uEIU8E0R33I;{iC_y00~*8O zm|4*tQ&Szf$GtfmcP*b2 zj%T|crOS{FBjXigM(6~Suy%tgOWJQ;SagQD^~t>M+eIbm{A7^-J&dZX>APl6j?n!& zb4e39%y%+~yM@vb^)XZtXaWkQPADu@3hG&s@7@o4h^q2{ML2E^P1$28-WFgut|LwE ztEc&jgmFkWN$$H(eaUi&n=D~V`Fz`U2au8!@}laFT+4t}>s~YwoG6K$12QkhE`%}g z0&1K|@k z4*LH+;2Hm3JSl5AE{Gz3sn!vRp~P~+gQw`30dS#J1kNgEDDDw6Q#k15%7ASx&&OMd z&K1XF->JQTaNiqnIu+AjYU#cpam(-IEr8)-Opn7FA(ExfWpDDB&OB#LT=C&$e?sgK z+N9B=%eq-ixyQcDYh-O~IGLE2-pA5Km>JCr2k%0|eTqwL-zuku(%W0a?RAgrA4J~- zZonf5U8`V>A7Bc})in;rrYUsS&Ia&eX*@7uI~bFrW>~@?d`@Ed>5X=b@Ao0b6#jH& zWf}{Q#E@-!w<~9SD60jUqE~Tpy~~($U@E&(q%O?Y)U3ZD0hK<$0PR>`Wsf8RZlsPk zr;DRBV%Mf_tMCfo`T>`c)geJVaA*N5h5-w|UT>ncY()dT8yL0^{mC_DojFJ$nfy{U z1{8iTZl5ut6{WI^(Du%eNs6UwB`#-{Z)%k}q?X7)=$Ijv4enHb#F`Mw6p7-RKUO5j7i9r=saX?HQ`5HR4h={;WGY$mw~+^BuP&Z_2VNx{W~u?H(GZ|6$afU)kX zoU~~Ori@PKyZKyY`Kxr^F%PXY^rUtXB$M~opt0e}a1E?Nw*+qik{r2O;$qpU&I3f*k|l+60BXs=le7dbVp!h zn(R;D3kA=VX+6XD12o7#^$O#0W^%60^IpKaV(hv3zQD$x?{xWw4&Strm?3+-o4^9`v6xYPDd<_Zg!+=J%ptEk}nSF#X?E5a7&9H2h z6qbb2Bb>)BH(;8~^Pi=XT!Wq-+XL|_nglcWFEozNdl87dhuI1AwK3BcQ<$5EcgOq{ zgXW}*>nwj_um>5vTbsWVu>6=LkN~_l3#q6fvwcJdJ~$=_ zSeK|n7-XC<+}y_cDu&iDZrYVN?_k7N5LsUU-i}zLnu9#P67HGv*RHvJxO8+mVM2@j0dhwdDIJ#JMFMpS31elHf26lE@YEN zI$JG3uCu@(v2W_y2{vOm?>BQR+JyGAwc&t~9$08jv|>UU7LMtq)!rNjdKKX@8Nhg< zx{^{8M(ICcOmj!x$X#(;IcndoA-z8=GY#h;if305^>&E)?Q7%xl8`2Waqs!j)^9eG z*V3HBa6dHNUjF>6@j2Cr{7E4ImX^{W+S4snjvb1-(6CJ*xz>LU?jJSO4jPKnpREh+ z|F(7UuQe3?e}>b++{M^IUf)6A+Stk1!SQcI6SU-z1dvC*xi;q&RZoHd!v!nwFFiD_ z(cn9OVaEH5f|CxGuDhtGGg0d^^6b*#@B9bAguj`)PkZoUGOqbtzSqTqhiZvcNz?TbvyDnI17xOn<(ypN|kw zj^Ae8%^H<{sy2zfC#QMt zlGP#8zU4aMVr45JP$<74pG(`WlFbhsfQg8H0ybtInlE=Xk7>|nqb|g~8fA7OmgAon ze|fWH(lt5Mu2HQp?KD=E+61Gtde`M$>QQ4=Z`bVPcEeFWyMxQ%>|Y*qxMu=PIXX(L zFCMhE#(oD`?5slsf8>*NkOT7r!UrJ5z60g?=&`hi z6*tezXElyY=Dvr;lS_^)s>Y)SJofyOD?KowzWDisF&v`@<)eMr`faZu1rOW=N@}1a z7{g!2aVA9Qh6SlchUf*?nz@wi55c_!q)rkX11Y706;ozd| z^2h|sv3Bj{0wW0eGgt+);q&A1)2xt;Tp(y4iQPnjXY2#Ja+7-o>6sYD#}}V0zyx@S zNB1Q&^caa-e<$EC$jF~d*wGN@D$eu4CloiFZ9N8Zo7f^4Uwene;Zr{#4>RV?7)94b(sHST#7mg8@rer8cW!i z*h-r_I?37^8UHgjlN6-n*7@PTNDl-eDa>=>G~a$X0KlSq6rJVa7mCy3x9xQ|v*`zP ziJrsw=M0r8!fD676;KXOt2Qcn?l5k9HQc|LJRR5IwE(!(Z3zU_W+A)NH$9GzO=kCjn!^x7)|d zQl*In7I$^)x&9QHCy&FCxl_mVc@s1%O{C9239Bui1@8HvD#GKH4zE=3XcSA8GEPHx zW~egDfygr1*ouilJ|1}!Mvrq;owm3ih2+xL_*vZeA@e&YQT2&Q-^B1f@$k~II0S?G z-7WYyFeo;m1hG4;^=uPPL*Io`9m^5T>NnHSrc3{bPAuC^zJURvducgq7awGEg|mB- z-}3y0X+E{_S|6tVYY!8+)OWhS%8k#*46h-S^%FSGj$Yny_CN{k zmTT+D8#PDanT?e$J(LA(V{`ZZAq*Exr@?x)zf;JHEFzg6i0#>POOtoVbL3B*?r^x1 zt$)D2wg+-DF{X z-qrm4)O_^SZEIpmh817h@*Hz9$+7J^?YedB1vKOJu?iPz#``@a0$Y4By_H=LQ&%m& zc63LhHEwac01pnv3Q9z)m^RM}1`24r>31_+U;LO6ki}4(h^xzv2^Gi{Ak9%ROsqRt z*r-ZpIMT=HQ&wl#UU?6QBbiBf3)h4~!4;7zv=oJ)~Ym$FgEo3|!pqNp*{IrtGPshAl7JdkjQK zq+fmM=_pGyc7;LaX603uzoII%)P#m8P<@hW>ZS!tNYEEqn46ZChMTH?UR|46R9hma zIzct`gDEXTWIj0SWYiQ_7kn(<8PliCteO$Z>B2ZU4}fo+4JSp(Tt*Rv)zPG7Fh{Z? zcI-5w3Nd4CLe|Z20Cw@`CcOTLi{r06y;*5`IV+@7goaWdJUqlH0q-;g4jPb@)I!Aa{-KKhq@Yh#&_m(*IstOi1xHD)$ZK=Y;n_=Eny-Hr`PSzfr zH8hyPC&HqP?fl(dA*UvuC6qHuNIR;EpZs;%i2o4hgs2uy7;tm?ha3m453*rkgb^`^ z+?fWBj_tB#u|{%!24GzE3>aZw{nyD`{UEBj+^?z4PporLJwS0L&qU{B5f31pEI+eK zl2r_781Z^)0Tb*@div7M2(AvHUHMALsr=m9D2b}mOUUBh9<;N7x6=^<(F=+T!n+sJ$63}lf7z7TB67QksevZIoSIsgyvG=_!5M^G zN97N03ZHC5J~_`5DW|B2Zfx7|Fd~B8rU#T-DB+<~X-BB#DoLBn2*?DXej%+B&Ocil z@B<*tOX*uzHuAl~5s>SF?c1{y{O39kGK1HtFs`y~A=M>Vzyr1TZ_TosPCqE;%jMZu zSGOB@(am8huVKTZH`XyuY@mb%0a@d+Ve)D*dZZ&Dha*9lydX!QsqLR=I6=$<gHyfb06yEa<6AkW!s@{hVd_wRCcJat?AJ=1MV1x8F1S(x=R+iobV8VrK!hK zWogMX#XaCIi@|gr0O~zIvN(B!J$Kf2f@U{j>6$45jZJ%qjm9&?0SC2- zNn1=}%q4E1#5mgrNnr^zSO@ngDG^U0M9ygzFT!+On&sc^vwZNe86iY1gMd`cH$PB8EdyM{AE z5Ow9*J>KqTV@}=CctV83rL1l)H%k|w9+1qS4v$bGi?O39giBmuM+ZeiuqwhCIS8}# zpu~!vo}EDq1S;GQP$SoP0=s-9YT8dw0(a3foZe8nf@^=xmA}8W3uXO?Yes#>)*>fu zaGk>bXR#hcC9{S>z&5~M&6WBXHp77Sr-$_`(T6u{Ux zyQ-OP&?N{etc4hytmXgw43W(sKgf$Yxu$)?T980;63qIFfF(?21<4QdAszkBTlk*k zV?Yv?XYij>H%Kb8=!eD`>CWefMypVNTC_feehPbuXdg_{-&(B_?9}SuDV&9&RUNjb zz2~{mgCQ70cQ8ebbi7WWiP+?{E{58OJZ0I$gAz7y&)OSC6VNz~YQ-S32*V#of?>B6 z!e7L>D4(o=2)ys_`ZX7R_okO)H>qrw91<+@Krgp^D&is0S#+M+mv-a7YV#sG&2YkC z+Q9*(v3ZQxV3X+Rm`|BU1Tqo)UQzVV=X~ysB1B^twKwy!cui{$v@uF zX&U7<9r5I>Jeg~g`#zzeyoyP^4P&Kt%o%>hgr1zEADi3*Yw}ik@pdq%(;yQbW5l#S z^EH3#V`2)V7GGGnxL)m;kXE#K5BgiR&?1Hpo#D64*KPUy$riYy@SLev(^R*n<0R+$ zP)TkssS@2eoUR<0Aowu;7d6Gg`tN zAzO}LmAkt)DAZ5lQZ%9~(pWEIH2W90xw;qWtl$$evrz4-d&apBWcJ@v@)KHg1ypp) z8DPq|jWhx6H@Y)#^6IR>b&D`bk{~4>St%2=U>1!vY27#cxm?6Ryt7DwN<%goOB+BY z8Nm$ids%B{p5FPFMOKYkt#+H7IcDoEZ7V$A-{p=f!Bw&=XjpCPHH*(MO7- zcJ#0+$n4odbT)wUVp^&l>7M&g3D}A77i`bKWqFa{coCx8(8Y`+e=fD@LNi*ZlU|G} zj7r1BxoSCiM8X;X?^|=~5@*KIDq(7~0&_ByJw&+w!bnN(3HP2%Icv;v0S}*W{vy=X zcXEvoBrdVNKv?}9vT%J=AuQ38ep+AG#k|{egVfSgCqiL`MDS>gpy(N>zH;_~;sL<} zyfx;UEA~j-9BO~-Lg5a+Fl7<>hfJW=k{<4B$~ zO{J{FV}&d*kuweUwMKlY+Y$tjKB8#d<|P-)Z)%W}hE-?j>rlo!@2uYgI)pz<>PBCZeHD&NUd$JX2JV{r%uI=iudM_J zbk9D*V_g*00O?A7iteTS&wv9YnTy%SusFZdlS3(Hgu_2=&py&`YNB_Sl4Emr0uYPU zTyv2=={UiNyw}}Y`e(9P!GZtysaqd84WkR@x!%PEmFM;NOyJ^mQG{a=Wl9QSHR>Nffa4Ux4g|N$BB<#C3 z!s5od!N%f7v+IV*25ZGX{pc^e?_zBQx2uDp{h@6UFaeNb5O54cE4Sxr5&r=df8nY* z?~WpIMVeq96#t?^I!7m&uPZGjx>_?18u4lRTTlPHh*dpP%{n0EN412%rL`T- zjt3U?o@pBl>RokhA8&6?Lm$J{*u(ygnfp0fxeY()TKw#z*zZ)M$%-1y!@qOl1NIpL*3EEeC zRGW4v5SOXhb^2wYWD{y9{5AS*pj;%`X#`>|@%NB1QZVc?3HKdjnF<3lMH}EG!&hhK?b|J;q!7GDqzT1FXxb#?7zc71ZSuU#Y># zx8)IJ{N(GmjGGH|-rHy%bhqR>v%|bCoZPMj7T! zE>O1uJhn%+30`XS>AbsM0B{gg7Z%H**-?S=}(FmkmJB>lS#hssDZAh`%kOB&L@abr0CnIp8 zkm*0?!++o#yL?F{M zk>&&-8CuLIrcs~58;J7l2v!u{(uIsw_|0nHpDN{$AYED*FO(+T9xtktBt5QFJUce7 z?Cy}=x4^iIy$}e?Y(x-1zf1B!_u(Tw{0)zpJl`4PD!{RWWAKD)G@{vA8dFa-kT6Ek zA0sjXj=|H(nm`6)f0md3=_UB?BfE|;B8#A2Q)(x~{ix8cf$kP6XGK1JU>?AY6NBN# zUy{=GzN$ifLG6}9>_&#z1-UCW?xct_LM}5_WMxb`B`=!~XpEXf-f*gH468!%TI=*9 zs|a}>b4UtD62X~@WU(gkw-vqKn%*zdKDbC!<`g;6G*@|onInz@t66ByVaKDNX9?r= z^!?h4cGn9BPmn=%^&|0*!1mGgf%8d}>DAOprstqw?)fitTo{?=Zyhqj!2a0TJfa+- zZ6y>Fp`Fs%Y@6&@%$G0qaL_w`Cjwo%jiIcn9O!oiKOtpV~{+ zSFBI>ieTeAM!Oa1pV}+k5%WvsI)zY!kbbo!t<;+1sKUprcjRaa$qo#J_lO50Mam^! zahi!#C)|gWoVso4oJn+jmMh{ssOXAXxKIrYHlZy^Zb%C2)}%hDke`&uKrc~Pt#gYX z1eM^pOYm<1Yz#EZ4%vGqVgY~}P`@(me`#Smr8cXS4@tg8S~aM~ygDaB`9t zB5>G$agmhNpw0_3W*Uy0yWvOQoyVr078?Ne0$41{v`eK@y_g6|RvySS(Wa#uqVv!c59CEK zaMnSkvt_k{@9V>5twg!8=WH3IRVKbBlBJHm7vUP~h}I+tr0fwbzCn_t+3XVO05`vB zser;aDJnE2iE%Iy{4y@dyh&l;+RQqtYcaDN4*Ht@WTo;;*LvouSCsYxx1BMlL9u>= zE5z21e1+i>{fcGU4oASocOauGUwO#0jcJ|aR9g&A0Ib!BXj6)?-Ib_&@Lt0sVXOb1 z#zTu2#r(<=fwGYMha;W<4STre4e{hB^4T3jddWv(E^ecl3kglEvJQ z%#U%p6YN8g#hMiJf;*`*m7jU3ca%DnAK}&g_nL<+?XvD!Hi}!h>xpcqxEJd{?IXR{ zrFX166`ewK$r8w(IjjphjfNZS_O?i zV?%2cA}TOtP$-cXLA342S`T~EI6|RC@Ht{9pRQLVg|M5hWbF(^x%?-@v$l1EpEZ56 zkruw;G{N>BYpU(q4m}=*b%6Hjj#)iSH%A=IXzAE z=4-lBIFQha$SIjOBbk##+D)QUL}L&QEm}F_eS;I+f4JNkafvw3w9XG{&@%D4!ou~3 zryGkf2M2=Y2zlc_;;JJ=DRiYMF1;g&z|Av15{!p5MbN({R=k@LSbQov$6C+>vy{ce z;iX)$UO<(Hl*xJf=btH<2cZg8DBKsgdBR%4zM{6cB>IjMVrI6UVLdYC$R6g5O(>(5 z7nSnTnz!WO@!|T$T|}UfJ_HdAQQx{he~+Qjedl=HYQ5~a-V9yuMzrikxb8+g??gQB zM!@Yv^z@?n2GQ{b(((G!eSzwJ;B>p8b-$2#-O{}nxC!cZ-lcip&Z~F3v5cXm^XAe0 zWbnS#>}0*+UO<~;@KWIUjV5CFLa6kz_qee>VmIgqft@#nFOnf4OB18mlt3YrA+^xx zHNJAB5T`1BsEI(c7;avsD#-GiqERwKZc3Bmwa&JyIo6|bp-ir#k%Q184gb%V@{2-% zlhA@Af5t&L<}g%=T8vpe+ReHW@G-+kY*Fq6TnO@L`|es=ER<<*C3Yf-(l*XYOlwv- zV(`M;t6AfkMiP@JOAPod9@J?Io5A%8MHilznsR(TvaR8Vp=n)fQyvmjxB-KAI-M>G zkw>#qbgXP-_U#N$%Ud zcUol9+Xm-Z(re`y$Euolk8xh##e7l*7xU}v6-e8+ykG|^uJtQD@Mhp{yg+C8l*YdS z|7u-*PBm({q5}Z*v;Nl!fq$Kb|96ptu!xe7qJ+G%oZ^2KImG@$7FA)+|i@sX9g>drXQD{550jLkS1srzvsBxMx^_l!P|aWC?jC7jL=Fx zaHv$Se$g1=z69!>8wE4KBDwdBy=TnkueR=xKh+C*eea`(IHuy#BRWiGwTQwAIptyl z7_a65Op*^BQW_8ZEG?}NV0)6RFig$WvOW|iu%>q!xGe`(1jqiqI{eAQLg)xVj?|E^ z;>^!O|6YynZPjb=#o$v1TnMppEt!xgtGf8OR@Kh|4%9$reSNT2=t9QQYRb_iz?E1w zC~Ywta&pH&Kk|K3{?QI!x9`CkH*f3}yr<0fSL`H_RacU47zZ+!$r)Xw@v zTQHHR0|*F|xr($D&q_&(WNP7mP9%jv;r0IM=9kf?n{7-^K4!7;`-b8}F zNY|eW?LS_HF&u#*Wt7?uiO1QheWQ`(h@cunM+LT)DZ7ZVV9r2A6D;Ev()i3B3({}0 zwO&wc=2!iw#}raAhG|&0*nX%C-em14rxydcRnyPTvpWs(@fwQd;dDWF5Ot!97&Ryf zgt1~&=JX-&NSNb~wswUV4?dJVX!F~T_8#J6MB{s%f%eS$)^rotM4U6a7)!2UP114# z;dtb6FMkW?WTE7sV~rE@6DJxc=FZt8ycG?4^w=x(0Zv&FOUIk-+(<%w)P>y2}0!c=~@g2mhZX zODO*apotSRBO~K~5gh%i%8B%UI>gY-+|J3?PS@J>Z+%LT(qBUz=sXMW#6wSsDtFNAYQ=BXtx~13QG*fm#ed7fj{+9DUF2}3fYez!4d3M-PoAwopTEqz>DnR@B7G1lAya-&m;Bti%z|LM zh+D;Vw<-0CvEl+cjOb?KHcU;ce0LHr6mlf}4ga3mE2%Hy6V9nnZ!c?w#v z0D-PUl1%g{<3_=yADqY-feu?qWC>wEVlQS$02$DUCM+g@kGnhQQ0Sou2xcvr7wbNM zh|c0aZ9_oPSA)Swj`>5VMLgBs5@&9t-6;BF7(!eLsl-RKun84on*e zo;4rBa*wNC1TbE$d+(E(3hb9Oh!? z;*UhXZ0a^#mi(O5*8hThKoW4SD@w=$)ZORy;Q5M_mI~H?U4n{6ru|QUR|NiLDR6z#qlD9UQ+iU zW}Wk-L4bd99bkkFmWtI}y7gjRK+CE~z}G^K_+`G!x!c*B+ci*j zPK}7+A;@?@8s39kCtgF|%7fvg4eE_wvJn`3$tbOi(daTlT*)V}bV%n>>HD-)>mnTnRF;G{M-*p}o zYihxp84Dl9E1Ja(DL=8gQ5YTjXKqp}(D)AUzznGB3XHNubLOlkcb>)zWm~_i|Kcp| zQ51n=5#qU&QcplE>hApDIzJ55rM{&Sks+#5HzM`3a$6wT_XX^)bf1m^A|&*Om74xr zTKQK@{?r2h5K{hc{o~)5h$`#;#ZJ1y#wO-A#*V~7;(wI@^14DY!vBORDoIOefggEf zX1qwTLb=n=-#_0$K@;+4pOi#1yhKL&CbIiDFt}!MBU2+g@0&vBc6Mhp6E8dOdmi?T zs3I&zraouG*!9P^=k%IW!|Uhqh#UZVND%skVeHT9suEQ!s>4OiqcNn;j7cNLvP`F? zrKQg$hou@g3rA4}O%b(;a|ScxSnYdU&$4he@6`I_<&Q(q0HQq8WT}=xYkhSP&`CWz z`3jYDn3~_@?nyE|AQ39fU}Tk+P>O3F7B0p0YYP-_?o1<5VMu4wi58_wb5 zi_<$sgT&Yh2OyhGnfNl1ePy$GScJ8cX6+UCCa<5+Z{|J1E)mITO)zbxUO2=_cNidJ z*6S3KD+eStlu`~Of<+ZjY6&KoTsbOt4LXOn@;==anGlC)2pX$g@jV+VHl)5oxf$c= zE=AS{LZ8k?&M!4Gg~zVyTl6P+s8VKrTUNW5zR**oTO!ayZ6a#Cy{tk5@1ul?ee=fT zzWDXO?Kwvv0i}=uUk!z~wv_!oDDLLj4M-Dt#fYU?O})b|9O4>OUZ~uELbZyx(Th3w zVVNm_UXRe#|E4!z=*{iAE!D=8W@^>DI+RZB$5=SDXtU4gyP4f8hE73mv}i)<0g?kC z`hj_3Z|3(3Y)6mL2u&eW61LTU^cLSk&{Y&3V;ZEP^+ZWxTTtmnwOan$ICf3R*yES} zzP-ZwhWeAEangy|AXo7;D=0*P<|A8UxLVEoBRV@Y=(A#2-w#D7P`kXdwPzu?MgcBG z=`6ikytV*4>{ozY;5&i-kXSAVvN$-g)`%N~gMz>q0z5J=z_tuKxGz~m-k=SsR=8K@ zU8d2`K(N>uMBWf?@fYqpkbbnd5O6r67*-hx8kEhu|CFJK|lcQ8fr% zp>Ek1&^wuarO|~zTY_y;FR)kIUFtjNLnFn@s~x2gJJ(~oOp$b9YrLQPLfO_Y}!+~o-^BOIG*2+@1c5suri9n!&-ljwL;nA z6c~1Q)~YeeER-^9p4ntgaE&Ag)Xj(H9=<*8H-Q_2QV4bvWe4p-UT?KpxEA6dHonPp z886XlioFAuBi1KhgXG=x7u$I*8c9Y;vE!EB^ZCgo0{YZgPJ|bf%RG`?P+UTIEZrNeIEcWH;s>w@+Q+(d zc6^wRIgp)aGy4A)MxV+|O-cFxmiGS}H4S&?BRz0mZvG&j6Q zmu10Cc8c7BG*e=^4RLGn+_6yWF?i^PUoff?sxD~{ah{<4g)v$k3%uta-W~aG<6{5H zy`2At7>laN3Mos-$^Om13hRF$hUZyOtzfV?|Ma0TK#2_Aiy#zlgfCUGy0BbZR#BP< zPFMZ_{2l>A@VWu|Ah%~lrtzjEXz(#}5?N*jL>NiMuH%zu{yYI}Cf|IgmW<^eFoX`zB7p>c|iViT?&fc|o!x8kkGKI)a7Z zDiXkT>y30 z=vSsN1Fxa{UEQx^D%tcG)(+nXZSGZwPQPI^oK))5c)$EKAq85zb(?AA0`s63R*4Tl z%Z6=FDnev@YSZuGQD5;)5>+kx!T0BID;aRl`#AS+ak=BhO3TWY?o)=4*Ud#iqDfvB zpPsfE8lL^yT2gyPRm=R;sOy&YJA#cX2XB{FtMz%F$}_Q60YCq-uuiSpzy3>RzV-hr z+Dh^g{|M^8(T?A?K@>n9?g2^+GPX3Y@;&?3wDS91U746_*10ArC|N22(PFeJd%5Sr zrk_$AvuEk1FWq_b!;5@BEi4^E?avbLI>WJ>iOJOG^XnFgAF4VCI}e9g?MlQ2w_WM_ zC|J#U=6>VKuJY)%t`poaZMj`2$`sGjClNS@1{r**tQFOUcu(%?)QB=5QvU9pY`^bx z2guJOP=zmSL3(gaT-Y(~xEw!GWzyc3`6-b02Y4wH|tmYhIQ_h||Knf-x^uC)oTFMZcwIa=-I1(p4YZ{IwlY{oL_F&xa+hAum-pzIILy5Fu)iTKPkbx^y3rQ%dFM z1u@#9jL`UQOrrdNdf)DGo+dmq+h3(S^Lx8aS>ktgW3=@#RQKvQ{peh;<1TK3IL zV%d}@NA~5>7aO;w&&YiZ=U3316E=`nA8kzZ&-GOyoolv-)xmDnq+=;;|F1uM4+cKG zo_;_4$6KQRUxTO}y3-GLQ!v=p7v!=uHJO>l6ytfd@;pNJ%e(S0mJqvffNY<) z`#v&y?b=b9;Scw>$sA^s+-*S_DOa~abXKjae&(kO1n(Dt0y3to_;jBeNfK0Sm zahfhEy`N?Bv*wuv2_Q${+kp3wEp(y*>&$IrlwZ=z9frn6;dPaEimloObDV^7MR)Z^ z$boBR3^ZA>fMZZ~Cb)O&3yS?{4`wcQLS~Q=x25cF9oVSYQj&7fnY$y=pNClQw+*c> zxv^y|m?pu7ZF1-5>DK9h@!V{#bhlW30Pt3Wn4nw}!0$+=%NG~rsDvLMpeBm^)D3a= zsaE8O0*S<*ARi$QQW$>aQ>RKwBppM$ozaiHWG{eRQM_on%wkJy-e!1BzcF1cx7h({ zuzDn3{=Zmz2PVrFEp4|dZJU+0ow?Ggv~AmVrES|bD{ZsVwr%U?-lw~7-|ve)efma6 z%pb5Ko;mc6vEE4^{9Mo(vm{JSqQ>HYS)POc7ts6^fTj5t&|m*F{QrLem67}ppwhix zK!G9T%X4;KQIYk(A(w|xMW$1(EQN%EB<}&C)0A2Xgl|V{w$YQ)zJ22zW&b@bq*j}n z%H(ihH}(GJ{`t-JS0##mKws0RsbgQ1!QE&dfoP(Ai>2b}7g3YCQ&+}el~cs_j@t3` zv`hiNnDbCFz2@FFHuK6X%V3c8hU&D1RIiN&3m1?&h}ojQt9g(uIOAk^Zd_Np#OaPa zNoWiVe#Vb3nWfqxj^h+AX`CrY8OVWNSDFDZ0=*a9)B_@8CrSQAgrW8*vptAwKSD#x z18sObjXE848Wp4i%PyL=pd&7*Ph#W~&E9F%bkV!r)kY1UKQ?1!`NsPqM;_wpNwYVA zWi~BD5XPT+{xSF_n0g1FoR+r^iKBKExa69=p&ubWkW7|L5tN$Y zwTt3y)x${}^p8l_=zsCV47a=|U#JP#FX=>DR;m#G;)$D{WAhhJt(f;GvoD^0|JyvJ z{^QO+Qf~E2ru&PhI_1v0H-G4LoT{+bObQ0VY=IxxULy6^n#KxQJ;G=E_mi&V-?e+! zQjqYazi;w_!@+p!?CkFl1-2wcAi!bm5Z$FUT^8Ybd>b#$*Q7N;DR*jIgua<{F3hG; z7F2Cvt!__}{2}u5_dq;7&h`fOzK8}Zut40cQ@ti#q69h!BV@kY)IIPv7|XV!QG!>G zp^P$vMDju);qmV#TMugr${UIGwJda$fuifJo`?F^04a-@PMPMNFOQ9_zuUAC=SYOH zTPo4!c{5ytpB5qd%0ui25Ysdy81;D_YG<(d4%eWS6;9mYVh`DI8DGm5S{m=U}_Wx-vR^(SyQuw#XO;U4NRYVv% zTritymfj^jj=P{RO9wq!2xu(K5wCLyrG`8n6&oW&5jDfb!PXC+tsVdlc5vMSz7ktf zf53H5p&DCY&x=7{=AH1l7|(18=ka+vHu+|Y%Y)$y3=`J4;H+0)FGpvIiVx`akr>dg zl||}&yKl6u-+)=ICqc}mLfLL1qVNCFh3bicg2jKU-J`wso}9@fL+qsG7@m@G25C1g2wN2%hp*$|*p2T+JN9=|tSv0QE~ z6@7s5zus6%s^*H?A6`s3S@!<9NR`+;>ZI@#b)lY>e^P~lD>-D}6ix9`JbPl?(Q85R62)^u`p8J{M;j_ZYGhAy{=)g?&(!y?G5<=dRFKd@a871YDhZT*u8+A%GC0l-DvrTm^qHH!2zjYxV*g&gkUS9u} zdWkuH$Jt(V(i${Yn^*DND<}CoK-lhiojedfjyYZlyK>|sZ{lruOP&selwDQ=<|5oE zL(fK{I!3d<#eko|wu@vYODTi&!htaa}6*B=vc(dK0WaGK>|L{(%>vi&8fAx9htz7uuhRoz`Uqx18-DfxfH-@&XNoPHTg2DMZ`bSgHTILmkU`22;1hY`JcDe+>H@3ZpGWFy zo){|VJb|$BgTd@D6;lJ)0nf}#GB`PZ>qa$SY@9tJ|S`t8V2;BKetyN~m_zz+~az(5{ZG`E<2tuGr ztL^74Dl6J*+Jbz_gCX3HSdK)69g@S2Mv_xGm`o1FGheTtU%R$POaFk)RaLDjTp|-H zn^YZi3v|MTJi_W-`V%XZgg{F!P&Tr*;K`a`tpY=XK(W7B ze!Z}g$>bthXI)0I?9=byBMJ{l*WU!46m~!LzG{u-KW!`iWj*$9f-+8ywoZ=!(Ift&>HpFLR?6<*1;}S8 zQ?ObU))dvD2OtJpsej*>QJ4|Bg>>x;fS`N-%HA3ZamWwfDog*ucsTxr@%jDZ`xXS3 zn;}G_FE8Uop2iSH+SC-zywognnzPLFMrykQ05eG=*{a-RVA=p@Kb8n3ct;GQ>gocv zoHxNgMD}T4b2WLPZ^|lI{eGElCXzM!C53@O+_V6j_ha-L}_0vSty} zq})I`gFOp56R9lmns}a;VDZXkpZSuZ+5oIIh#JjlJWps?8723R-i0vWWUL#_O9csy z^MkKh3y~e_lf=PX%a3DW?+((Atj%1u3YW3&uzi0D)q80wtBl`SPnE&_RK>rJI{co7E zHunE7%D=X_+~~3eX#Ac#*d$=gwerhmYr6ErLLo>^hTU=!;^_?oPa0p_kH4fl#*I=D zY!&K*$qc4Lo`dnB!&Rk0q z(z@lmwyce>y7jKN+MMzOe4n`PL zfuWY%AuokpkJGj0jc{?@Mw;=A!X!g23N-_Hv~WazR7)W5U}F?Trlo+$zaofT*>T(; z5rK|^zi4Eo{JMm$BkE{1F2aoL0(j)v&S1!1UoEsQhP{L4we4S}pzbrAa0Q`V`Aw`Ta0KHtwARRkm2 zxMt9m+TUq#7ZV^yUA8JO^Q((O(ji07v40IAdgWq+NW4uZ#pCCFIF1tQRZuq0y` zX`jp6_Cv3!?2oticko}url!LP4&;zRUW z^@}qxL}dG`H5B*Sv(6Qrt4%nI&S{ex>3q1oX_$d_JAotJ&_#q} zh45~$B)K-rNkqFg2k1K`V@nQjg-f4Zqp3etb$+^=je&S*n-=%_aabv&`5=zU*R)Oe z7FzO~UqTExoa_9)G=a?wG?`eLP}T{dsaM=KKFzxuap-+SMhDS& zVo%ZdoxnsyR3A0K19Yu>0#Mhi(@g{TVOTyRdsg>2e`iQe8pQ?!qL+^y*{-`K&%=P(eF!#PC@sCbpweAl}V3+%yhM*+K=@Bk!Vzg(4dBEc?-7h zhF%j0t*SSZ!q`0AUS^y19M?P3)zqDgO3Rpx=Bl*~dq4%1oXUpUIqE63eLAi|nJj*z z{FLs4)S0*n*w9-sq3Ltz?0iLaIo+&zC%IQ~O<2ys!7F+tIqrqSD|BbUwJ0f;YdN6B z^Z$pWm%{FTxBK-9o&E1fdVjq_QhE+wmK`FNdM5v#KfadYUkVTrc^K;TyLUdnRE4sZ znIw$3fS+!T-m2zS8A&0F6$9-%3Ho4v;Fk*v<{_*3AJp`gzbd-}=kLESd*EtP`S7=E zwj1x$Ys^k*cCTZnWA!lHHyY;5w1%-)6ZwmD_bR9m17@bUc36Gc3D%L|1zZ9=%9BrN zmLVXo`gb;=?-CzW>;TUvJ)i?`J4*4_&aPK&fkoU?MhCFiv@#Dd5&4Zo= z;l(M@&ex8dmCnN{K5!e`#6uLuqME0>OfB`Ve#e`??(1XyX(Nbaj*5`P@U8D|UNs`mqTBhYz%$?PbwXT|4^pD5WlKR#w&o-Nm> zzrEb`D9JFN_c{-Os-x+jl7rjvBva6K_8J@6PgZcg*Ks40Ua zuiz}eLZcdr+bO`)(lskOIuK1t1Nyoow@9sM{Fs(zSy*w5OFhV19Wn#u+*z>#RXA;Y zF;PzjE(R)8>$WcBXj-siUT3L*!!D_n8rd>;UTL(@C|a&tzUJ2@c*g19_wvPc$U5cD zi}=ltL3{~PmiR1R#_gMdr}Y$$;HuWG08oe-CF>z62q_3ioP;|atzfCiePSB%Nk9)HJUzo{b`U3;H<%AvZW*4-=O3EKrs<@K6nfQ)x!c8L5K2T5Xx}LP z+}*S*F2)I`X{8KJ9V|k>0mnTjhWqd#Ey;RTZ$-I_m>R8%;%TNyb`|vj^nmru4|!*c z07-)8 z(lJl4pp;;bC1bo}yYTw=*U?fV=!7wxP`pZotY54}& z2@KW^X^^qfjc&zvvG#SMo5R$!1fh)RS|lYlL?^YQ=O-Lfulv}P|Kz}i-Xf&-!y1_H zN`M>LUpquK9U)}31KKDE32|>-5ARu6&&3P(%A#^j8_4j()UYgT?SDAJH(684eW4B$r_ zUC1%c(PlkeP&UYYToToznkFs|+~Ha}u-H9J$GF^(7kwPck6Tr_bEFdmrOsx6wbokYEKEqOGNY8xgA`ck|3!MRTcwSi{=1K(#X;PwSyL* z)A3|zOZqAFC#YKi-|}%4=yui0ve27MAC{~mmZrtjlQXL8(o62Ai1`jW)z5@en_8vm zZum80i#-=y?B@7aHU|&%#~YQz`XH-6U&o=~5OKS!>>XdP2=_lt1`Pj`WT5cx^0eGP z+KR8m64j3#;A{p0kssmD`4)&{wP2n4{kD|EQ3NO zzymCMZ^zlLXc}i)R5jOXaW#{mOeIlKI78N^u_cIU8wd_zIl{_Wo~VjOA#f`MIL5bB z9y{nrbLL(C6lgkz4VXnm*4P%NFIphUpkr~%#l5Uh+i+xzfz`Mle$Uq;SA%RlZnc+p z2>2Q_eFX*dQVFPsJz=DuJjCb8Z&dj+I2(Fc~jFNX8oY)#82+Zugv&V8Od4IWGI`DKUSqxic1LYO{=l4AIU(E6W7Ipx2I z@E^H5GjUbd4+>c6L{YX(o@ui7vASc{W(onIMrZ5`b6Kf(Zi# zEYDnf?N;x7nEoEBSX!iyY$X+q+{~Ea2Y$v8X!>+>1G-GPJtuzDnX$pMq#-Z1oT3Qz zq$wX|I;sZKd4_V?2@l|gE{Nk{#NqAKT6%C-qO+(qY@d1&y>#8x42 zk~BoIaf7$KrIq^IFf94{u%Afz$76=1NKjnm2F%;yUuKbMriy*0{fT_25v0|}xNxNe zasuc?pHX^P4^$$Z&w)7k(xsjyk8#n)FJ@syn6M-@#HA<4zSgBH{9;22Nc(=uqh?72 zjzmjl_}Hi-4v=)vZ+>#s@>S}f+~y%Y232omsvaWmcC&Ldr3Ffq`U>L=>bE;QtDfQV zjN>I!x$HFbD>r+HN*3~ziO@QXX_17%>jctc5v;3r;l>JaSjh^mH-|{1!+Y=l$ z#V-RfV4J|$K|hDYq?TS-ai?9$(6^e; z!5YZ3X0a%tlD5I5@wf>AFML5Cz^0KFtG1vNA#Mz-)R>M_?oa#rA%z{vzFL1u@}_qJ z3fCV1td^K2L28PY5^UiQ4EfU*c^UTFk0}_H!~!ipJIZ{~CXR{nNiKO(Lc2C{UZ1!^ zkXzx4ZPA}|o1d`d*c_t;9|ayc8rU1baoiEyhjW8-ZP@Q1?n=gN#`oDSZqjX^r8w`T z8d9Ddw%nm(`J{Gb>Yx0reX5;W{L8!0?xwXgUr%w5@JMNH;LR6xp2ZoFRVq5~p%<-dkh5zb# z`~M-4C#Rox!+fR4nXm7K{MQmW#eW}Te|fY0Bg7JwwPY2IFudWYsj0!$&=l;x^M6my z7E+;tW>$k(0eVx*Lown$%hG~BgTKIopc!LUsPEEf6svX^azwIhxGut^Yqd-(EiDbN zDt|REa_@9Va>{jL!1yYr&l`_!S(k2`mt3CjkC`6dnzo3jpolFY`txxKxJ#TQn@vnO zRt}uoxL$(ZcP=iKOd5Wf2MYUn38cz#5{gr=)p~dez#bt%1-HGDu!G@^KivhOLA!{P zM?D-%CdqQwr2HBtCHEiA;}&h8$gVn?6@xqlw-<+`7mAj7&ff-67|rjbu#y!!G0!7I zN&1t*HS&AtbV`V!l6-}?aDb#@3>WXfFfFH9BHZjn8j__dn9>F_R`)m*TnQUWjwBz5 z$}Fhdr~srqoQY+|a{2iEwWr zgPt_|^p<9qfM1G2DL$CS9w1`-k{&LkPP!uHRJF8{rf2Q zcA)OibH=Pern6940OCE)?EHn00EYM6qSBcPr*lB-l$OS&b8T>y)k~a{kUW_l-o=r&EvhqSCG(d^lATTE1V4bBCKncr` zR@qj|kHTt?fPt)jM{qAu>wzLaNSDu+mC8z<$8Y!1qmn3+471u}LK~S2TrDHUYJm(hh;)UZNU&4*D6K^Dj9o&d6*GSIC8T+KMLhtl3 zqD0J!=B3$m)FQBjug=#M^meqvP%@BIkYc^o>4P^E@CZFk%7Y-*`2o^Dbc!PAqhya= zf0#S&j|8XsBH;HjL2w z6BZB<>86olcKmMCCwHV@EF)n{!;NXr)@j-!u24#sH(mlQke-BS4&tKTBW~YZEn4aBW5VA+b?1uYg2hDH9*}Y`|vgvL|8j^83V+Tg(hxxE5 zF_4&jl%AWIPzJ0CXy*iawlv5bj}(rrQn*BmnCF%&kgEYhRs$kQs$#sdXLt0fV7g}S zsHRmESQGwgS~h6-6SJ)$B0kveWc^0-?G@_9@-Eg;)gkpMLAa0HG^}ioonm zzrLmM_?*c4a!I6yUAt}!tGu5VVvh8K35;W)A%)DVV_npkmK}lS9vy}2+C0%TTGAfR zs3@zr6rEKT*+U9}r7)lB2Fvl|QF%}diUv?DKXVYp{M$B!q#RVPeO~lN`mi~azxr=FzjY7x?j6%CI&=^I?2Us~3p)asPS2jmL@vkX2C(Z>@sK@EK z)PQsgqir!tJ*9v@%v0ZCcN4D%bYQAfHp|XX|`9j0uJ=FPx=k@gc^@=Fy8kuc&3S)>)ZN(q+T&}63v?IB! zKO^4>?^=R9&U$TN`h9I}1RJvmHOQeW?wHN~BP;M|_{ZedJRqbV==w>%pEu-*4DoX` z^a)FQ%HLJsM`sI&9HpNUrAVpaM5rs0%|1VX1YuJ9I@P zn%VrLG!?46swgg^e!w{#_P8R050^lQTtNbdgkjQ9ityRO0L7}H#@p$F;rOPG*n)?c zRY+N;x#YVg_CJL|hO&g3p;lHiOJ$qIH%O&1YiX62YiXV9{CNnjnt$MW)TTxD>~Acy zXg0a@c;I>Ud|iFbc>VC1)B&r3$>xY9kX^#XC%>HToxaf;6BS`sul0PsxoKU<@dP_X zo^D1C`(>hHO0KwpA9kO_=5!wBXd%rGa^N}5jx|d-k|pb6SfhyrwZ<&FNclb|5|p=& z=o<*Ts5Oz&q~6USTP%k#oT=ZPx=>(NDOGuj?RP)nTZHx{+V@zzq3Kq7f$(X|kPw76M z(l>oSpy&WLvS)?n6u340d2Ydn--5OXd!E(ls2(jPTuuDKMT!}1z6>NR%o-wh$N769 zDPB~wo?vbm2O~g3&d!4r1g*rjH!)P0++M%7`wjc5gb>-xd^P4aAZMN zg?Bb-9pMu0{&#Sk97Vdg@G2&5!Q&}7wOhAlX^^`gc+`cjt%MMA4LT^$z<0JJgFs|d zAg1bAYt-L*6zdJ5`rEE`gALAbr=i-$kx9_aN451Uj_MTW%7|%IiqU)`CM+gFg6bu_ zNKAeu(Wdqr=adU$Zt)+dg+9W@!eGl{K1hFHDNkf&NMYvAB1qL6Vv-0!ZmZz<*@{iC zg=}-!T2`b?fhk$H;b>>Dr%yOnh(>x$0Yx6w6maad&tdkA?{`SOy6lX5BEV^eRq0as z&SXuRiy>5Pc4ScdCsvfBwR00vjwL07Do&jsnoA--3?V_;xN0*YQz~xJXfPx1m5cM< zw|~wAwk=adm@i0F@#!nbD%Vux)OO~GGS!qg<|A_%Mi6|rk?T`5A+E}pt|WvJ^Oq&$ z?*_dI2O3b3WL43op>bC_6G~W~-x-wf)d;I%-d^K@VV|A~LJbRyzcy_K6biqNVei}_ z0Bgi;wT4%Jo$%=!jb8TTAdC6>(T&wW!BY52mO{bRFt*4y_Is%gKwRu&8?O_Nvy^!f z&c4jRHp>hw7AR=2rzPCrq3R4_Q3N+g9^7M7;>BFffBeZIg|1ARBen3j-$(he<(OG*cMRVECaTAo{Wf6Opy0@xZi#fDuJcKU3J(Jgpv>6ZyJe zP((Od%l&yQGj{4>+fXt5XktL~peBrnosyo4vn2j^Y7l>#P+w0`LefvO!O>MiI#;y; zew<{v6RQBX1QNy)8=)6>DPdIQ5zh?SYpsmE19^X~#eV-I(6&ay&lAb^PzC9Br^>L* zl#(5*R7DSB#E8Ly=|`oEBrI^2>jY92JQX|TvIO5hy4f%%;FObNu*P8e>K5&scx18< z1i0ofSK{W@jg21Fb9%KT17S2BHfXxsc+|x!F^&5(>?}T5|7-9kLszq-S^b zIdrj+Z=o496zL`1Q%af%4CC!cdwh~Z>|BXI!U26?QRV^1z+ zNJ0Q+CvgJoJmb=-n8^erf^t!y>AqG!^N%8o4ibKg*8?pF~1QW?vlcJIOCtjB@ z0GHHce#R&0a^E%1+Gv+UsaZa)zfAQdHIyfb3H|0FSLAbX?G;Se=7N;xTRLo@kImtx zxpjRI!9rd@8fFlKxE$C~J_(4RZU1eLW?n4)NO@RrR5*8_+cVzc@P-{VmzkT(5!!w0 z5RgID{xonGUMEiF+;&o@N@^$3oz)=|*}6-r3g(bXQEQi=OIL4-b<0%k+M()&Lk*V2 z9ld=`5@*YOnFY04Ow(R#sRZjgz62DZmH{=zMj>_SeM@ZG%EYL!M}D;>4mKBUj-JJ` z8nZIxsIW@mF3`oAI~q-*boP)Lwx~t$)GmEi1CD6h=Dt&;zVyQa^wC0H9&d!%%`rQWNzyq!nODo&nyhG*JyzTMgJ!T))WvV5hLyKe19GZs zV_LbWA43)@?Wsf_+_R5okE=s5R>PR^XAI1*jDc*kZg*Yyhn&ZGJ1`F~fI#gwm`PU1 zHQG9Kh&UlG2*Hs4Q$nAqA*tCrTbgevbMWmFg`k-B7vz~EtZ2CmH5;;Mj zxY3UhmN;&Is4zVp7o8Ot?TE1UU+1C|*M1mTR}uN3{Kmju)z00EJX_!748k-EivSNz%l;XQD1#f^thteXbvGQz=U+L6IHEROhOBE0e-yaK;?iax{g(cgbhb@=Qx zzEW9>?1~lgS)5)n?YGH|t@-m4AyUPWS)H2sg_^l3%@juVlX6pB(hZye*^BPnP>L?A zWVKvLCF`~X=k3-|UBE;_v==ye%k77K3|;$MMTT#nzOs6}re$E;63pU&5$uA1Hp&G3 zht=0Ud8A3sSYx}CC&&zMQF!ryp&0dd~OO~^Pj4ynrYp0Y4Gy4#xTSgFWRWNkG1u*Ei9z%bk`g$7NxN;Lqf7UOp) zVFmI41O&di5Tsuo47Wa{b6BAn;Jm(RrI=_k{5wGmH?kKu+Wi_%usDn;t;2L#jArqI%?&G?;g#E-1>`s3!swQEcmRtlFkXF{q+ z!{(*wl(8HkG%iuHUhS5`dFA0TAa>U*^~=O@U4@u-8|X7>qeQxjF>i+~`5EMK!w&4C zg$>bk;xRv;7^l7`1b&%qGx`#0FOI>giXB)#BuY0V$~z~DEdTUAP$A9^=4>A&uN!ma z8HqsR2%e}esJBJbpcf)jYtF=OgXY+=uCoP)5<(BBj4;Xrr|Pe2xOFc?JrieA4V=)d zqw+Vo1Ii3!MLWUawruIpQPt}*4m$6Ot*IyN#p@86vlGeGoqMD|AyfX; zM%9;5pYx_N??Sz|r#g97p8I+(cauqtToex6*^RUbu`rjaZ<6-#2ldi7t#6q)i>pR$ z>YlX>mWV;CEkgJ1)IS2mjy1XMa|E=%X%cb44X<`vR`;Rc7&MQZGJ_uSBww|v) zVvqrZ5?-UQh85Qe1N>R9aXcn&kC5`;dVS(HiP|Yc1YI?8220q(1b2+u3AG2(d)euJ zV=t*bWz}KzP~=hC*wG%m^J{;zY`0HHUmqG%!`~q~Fh-*T?K&9lp?aEa*Yxa1HX%s6 zKlOd{WVfj;4wG3{UZXZHW&|5x-PfkrkZkj4s|;BKd`5(@UVAcm;vS4Lj!|)+2&?4V z88jxkDQYV(9^eP`#e3C_Yxe{(RQ4aJZL$U(qb$>CqLi;%DwMinIoky>1Hw~xa7taX zif2HnkQE?yjb3K*KCaFDOgpq&%vMzLl4+4^Xn3B|T zI^Y{*ZWs#;6CHhw;mim~45e)HN~`Q*QwX%gDh@*>HVFD!W7dkgg+}G!lMHub<&eSo z$u&IppUuaO^pRilD`^>Smz|I6?;o8WU5_^-L)k#G(dg~AkdvV#9;dCd*Fx(_LAYE$ zC#=6#OBxH)g%?^AUzYX@M|>-iZn=E1kHy0bsKB>U5dPrlsAi$8*<-0 zH&)*&wYIJ@gVRMSa%E7Xe_)z1*|L<(Nt3Rp%aUZ_nEA5Kn9ky_=aFE6@SJPzoR-5< zwx5^$GuUJ8YvD!2u{-V9FmzU*scKz>x+&?;UOqYBrFp!lXysboG?%!e2@D&e`g~Bo z1psznh)%S!Ha#&nl50(4O|Pv)>mv!%^YyK#=MSZ2wBui;fOO`o^XWOk-MDyzcK+>qs~vDV7iPGu;<}AvvTB-GRrs+8S0n z=-xzm;W&sbGm0Z?hU$o=8e9$WM#(E}-f$ve9^ye`B(kensyv{+X?eIU53Dm_R1u-B z+3KG@OUrm<)p5$ZX1jdnz>HhVM$Q>%3FJVnVbW|Dp zKTs@YIr#PDRRZVC3c!*XxOM7A(%^OF(%F1!&G0Y-{6YT0Qb$xaj{NuNylH9|NDR(30aV zWk?pTP7UY$W^3(hx?CUU!=8V*hA+scprT74j`4&f^NurDpzubWj0CfmSGrU8E@M0> z#2rY&6O%>9o!Amq!6=ctf4(9=MUr?ZR2a#^Bkk6g9q#Dsc0nb5hbq$QSTh@a<0~>5 zBcYt(f<04dlaqmIxKH;QO>Bc*^Y>_}HnU#lET&eLPDjZDtgmtuh%5>=tvUpJIUxOS@Ja@T-3>dNUAEv3(o|vDg&I-7w-Y&pd zqg1>9HlILx8Oz?-n46ie8zoSVfgsnPpJAD>(tL1X{!OcuzohiYuD3NJ=@l9?*t4YE z#@YF?AenpP?ts3ws;IjnLedv3=IF|BlpDVxoR*VhYOC*dmlN|o@6C2-kj%XIV=67Ty_(o>nsFq_L>viuzdw_um)+9`>NBoy=DFg zaZs%QXe3fi=~Fz-QnJHAr-pewI`(X|P43WD@(6W?q3Z2nNi42b!s!!#G*z@vCHf(G zX&xGgDI|0)Yq+2*=JeA zND*0cwXhosk&MC8p*`iL4F7idA!z)~-x}J@7*62oZs-r&5;)<>wS(fxh*c0Lv*n{^ zPVcGro2kf|v5}K}$qGKe*ckC+d3kRwH0DHJ3e$E`D@~f%m0sW!W#nO(tu#BZX1|3! zS3!>U;o z>HXFbGqVEjnqoTf@g8gBQzo7ecaWMhr7q!0? z@rXI$a}jxoIeml-H$)wAx5W;<7aqwfx`F$T{g?bi+3%wDxuSNV0AUu(y*B*{&8RX8 zV@!MAQB+g6=g_WbblXO6Fx6KtV3(J%FI?WC@YiV&-bC7O$}sJ;pih~BVIBSGRB8O6 z6yT@@oq8^y^4Mope3a&Fgz`}Mc!Rel(Ak{ralz%bEJSQVLo5ZJ>g&ekKO_fz2R#hJ~R3EZ~jC|0>E`DwxK#jfU0xpAAWH&0JEN+Ms z&}ZPXUb_8SbXqJ4)_aTDHbngK9wUIE3VXUuPpS?v!FLWGE5W*4RY`FRcLWok7{q|s zHEtL(5lWL8QYPf5;`ON$voOz^Op|MUlK85(}{yr54*Vv9_&b^+9cW(XTDfIZ;U2gR>DAtar_|O{}qz} z+e>K;h8=*VXXXDVTE~R%r|WrP1<-al8V)dEEODDlHk-gN-7Xxsxx7^3IMZ_8P7XEQ zC2^k0FFwpVvr6PNk20!2ciMK68B4|>2JL7j>{kWxi;6);gF(BaZr)NniDmf&7&`~{ zmf@Q5w!)!!o4<@VBqv;DQ!BR&)}$*SZ1pkM_Kx4gtWnbhs={g|5Nf&Ge2{uK$N^y# z<1jcOpJzX#wHHSrw_*WxrGuQ#v5Ob*GH7r=@#sJknLidY(Ju=mTo?FsJb-e%``d={ z@F&`&I&3|n_vTFjuR~5Z?4I2B#d4falxJtE4Hq)N3;l1v`X6am^}bnA+r`%7i{+j{ z!O_V07HdiQV2NdE2%RYX7Nq^Ubl=M!!xpI7J@dJdMh=BWo>S=#P-<`T+dJD|UaA~i zF-{fBVv^p%)45uYe$FO-YR@Oi~DKs`K`;Hf>Y`N;tMJ`wXTzX z?}yGu4o~H~HqwxAQ}aQx%6|A|9yK6>Cl^#bUJi|0exrRUDwq-YgO)Nvk3#Jv&0ROG zdzw0!nBJO2R#H*Rihkhw9z?#fKbq6uNt-od!-K9&>9yS;Vn+p9p6O4>D>G@||6tC9 zmqA^R<3U{%1<)LOKl;RLibIM|R#T7b=y|+>5*v{ZCqkk0AH+Jb*-m~wtRbd(GplN9{q`$q3P zO4KYJwe61CBV~`{GMtYQH)Jc6)$MN&6g?d8s+=_leFLK%XL4Nz2>!kA)=osX!~IP0 zK}ff4@Qf)vI!1Woa6Lv>AfO$4eN!eGt0NZKPCC2qR2t8Q3NXa+?ddf+wB$Bv!!k?-IbX={?(y{DBuk)lcde)w}>B!vY zO06AJ_+^j`JXkx17*|^^y|S8_=|c3bv`WAjIXnF^=&HYMN>uj{xnjNZ7FN_k#c_lp z4aK{jxM}S10?c)T9~$q%AowvD`v4!+0Po-~K-^|TghRw&&azaI|zVlBA7lXIt%#fy4KDr%0eOa$MDeAFqx$q z8H2L4UWNqy^nR~mGB%SIb-u(DCXPcL?c}!I!mS}1ff?>T0YApmaoG~w>;-wx)GBcglz9}L8;E^Tf1EnHCKp_O}DTDZ# z-1ffAs7WKiNxX29dcnQQ!vd})%i^F^jZ)@{aNhJ(p_IGfK0)-V4j z$!}IbuXX!7S7q^I@H!Z3I*04Iv9Yn+rGXJ|lLex6sn32b#-KUSLbNFs2ev)bnb=tx zExJaT-`;?{;0gC6qKvB3)XEtpZT6`VXr(E(b{EpRH;!E*#L_(%I4QS^mhJFknfN;WsAi(Hx>3LryI#b}AafmDhP#JpvO0oT|N$-Hpe`Y=a?_a(?x_Ykq8| zpF(F8WolVe@QI!jh@G_N^m7?2rQgoDQ=P^r(=)X+6tcxJZQHX+DK-?!v!4%(3{)Vl zSwdYVb#|}( zw{ZCJ^*0C9Axf+#b{>L1v6U-LO7>_s!WN`D4l?ZMpK8?sx!09H8XbrrN%O4L7-=HlPzY$PZC9ss~{MzZs`Ic&jkNA|27*F+X^ z9X~_hSFU)pxpHsKuU4c}tPJt^;a&7$O#pt{sDxqc{*W7XKh_ZH3v#cy1hy`I>ev8~ zG<|ZTGFjl)s{ySjJ5@oI!5BSwXG&8bny_CB1JGop1Rtpjo=QpQrh*gKZ(d=XPu?PoHgn1?9 zqhlu#gK#Y<&Pyb?e!9z0t^g_E)#8MT%`kWYO6TqJ#Hj0V$TBCE7)W{`t7e2aN1pJF z-j5@Z$OOwp?bc{TQGPw25pw4ooS9JvWoAER}u{U#WXVI+&8OC?iU zcN}FeJ|Vqg$grpA?Dsn6Ag6#c>%eXPd{aTk+Y(P(AxAa8@r3SUA=D&YaX1U6vRs#m zoxY8D1%iH3V|>+w?&FW%{(&ieyhqG}NeT!mX4upv&)V;_41#^PehRr%qQ-fUcs^l| zhZ?-cF4(K4=%nB-(+T7)Ta4qjtSM$&yvECR-YT-}^qC7{wyN6x98o+%gSq6v3ftrh zcw*>6h4tPpwAt{<)L`3=E*6+E{ee|RM8#h%R=^g5GOsb#ST>Wu@(BiMLtk6I=97Bt z9lrmH3+${G3EAZ*{1zkZ4a(|0UjIOrP!~nFqtqUf zy-n3Dakr?LP%r)jD>Du&f-h^(+EZj2aSWzmkfeVhq6AqHzq}ZuBC3g@GYG1=cjU5t zOMYb*a~+*O%=MgJK9_)RgU~Z|Nka1Jf#CT|L0S4(ywO$h6V6ke25BR~1`4i$l>J?=b5+0|8uzW8Cj;3_x9Tpbns_2&fFr0t&hRb8!mKn@t#{d z|8o5QL)bY7R~l_?zQc}f+qP}nwrzE6+h)hMZQCa{I!-#7+Vc8I*Y|ZI3jnzXI;i{LBhl;Y2&R zh(CwtzK-|5@I}Wg1U!OYghxYKx81c8%M_P{eT8~sbK$P^Y@J8lb?@rr9O` z@^N7jkg;4M;t(U+aH1yZEs@|n1)3z@&6J~`(Y}^~W4Qtny4iX#AKw*f!6`^y&v51d z0b5(NErR0IX}CVl!Xhs>GUPDzIXE4T0+&OA^I^h9@{?y7_b5NiE7naSB)+gK;f)5X1$SdA$#nUM0>L!!{d$AV#f3M=%D zv9(^+-cSCS*+*(Fj~Kz!#g5XF7=vRMhem;Cah0r0R}W5XD7|Mq$>(IqZ4=<1cFYaksfP6BW27RU_^w2pJuVB4nIaWwq*7$e;lT-i7`n{kUHxK>8~d6ILcH?j6HI zcAn6@eav6ILn>9Ya7FekpjoYuxv6D0kscE|>`grw32}XfL$|^;p;%yA-2NA^{P8gI zEZGX_uAV?G+`YcDtirW#YJk-e1PW|ZRn!o-Qh`e5AAKc{PX=M7dXH5BeWL&z9rJuV zSfocBFfFflP%|{VoqC?NlqkTrh1OOO=LtilLQ_C{`sk3T5tBSH5k;83ApybmwZku( zED0CCYyvjYEvU8pbT~`TW1DY z2Uc1K^4+&?3P4zo>vNZGLp_=RA~DipOstb0*vh=UOJq1!SfFL3#MrcR>SshKGF5hv zj>cG!)#9QL<`yKJEStn%g)>mXmt}+ltxd@vWNB)#vZ`D3*5~?9_tv3RX@5^_PF?y@ zZ=`9dyRPc0o&?KQ#Yfx|!dV@P1w=ktqA45O6R{ZBMv}6z=w-=hMI;B1q;u&@G;<+a zk`)%d>9lL);)38B+fWfCi5Fgg5WgVu@v_Va^j7|*yfY|c_p z0ZS0M2j4Q?Q(hCgwr#ju{H==ah$Zn{M&vn$#nvEbq>a4f7$;zR!c}QSz=9$Pud*(& z)>*CPEj}To7J{UkL4Bt4=r6NaMxqSFD+~UTgW%N@w{k}K);zK?rhqrm88V$-Dg&Wj|ooL zOczS*CuFhJl-<25(Ukds)I?@!>KNA;YQ{s#A9qP2rZLr5DJbQP7Xt;-T&*Uk$!87Sy6B3yV(A8Bx*v>iL|qr8-PFdE1+-IWWi zZ9|WCMC51O$V}W^o1;=GWNVqY+cSC2g@mbv6Oy;@snpDZgOrQG0Zv#8rt9K2rUAv< z7vMcamZJmGIg=dS>?y6vXLhN~&Sl7M*=o`>)ohZb#Y`>YX3T5MLy{__l*-sJkFAsJ z$QQ0Y%J~I-zg7DwH1Td)HGC(&qni*;nr?u*d#t(X*dmAiBhd3Syad^>l9i|yCuz1@ zbt*NZAEu`_>6hIn*P(9svus$`^ercf)kYUeN6QMp0XSiyaJV zvuja0Q|LsR%Exd6Jl!YV-i^>qd$=)rQDiQZH;H;LsKQE#P6lPajL%f=Zhe+FV8TfE zih@eaQ8Vcn=Cnn3)8r+_(m4H!y)@3SXSW<@FvV}sC8i(({uu-9Ek<$5?P?gswC%Z2 z1T(jLPO2G^a~e^nbD=iI=!~!#OvjQx{bxC^-bgR_=d?T6gQ1Sbc|sgu0qJ$_l-ZT@ zV1TxBIoj_)jZMaP5{~W~#-rIkE=nbJhQd}2I_+FoJ8ti-Z2u|Rge!F{_7#jPbt0A; z+NEhCwiFnbwzSp%8QCi6TlgrY-#uGxVx)18JyiI{a(~tk7*&S9+A`cp$_S&+pO4V& zpqLrc)(F7gH96pV)#F^u1;A6y|0XdsrJ_DMMjt@KlEWmW{?JAt$3Rq8-9%XC*5qD(e--zIZ@d7ES& ziff`J9$SJrbojl6Wk&+&dZm?k;M4qn4+YuqPHw|EKhifO!qv;=iIeK};haC|_&`dx zA6(obIeKPr^H({s?Cu!X0MrbdClZ1XtyN-ux`rlbI5_3V&taz$`mTm{{ANM_6pd?D zWB*dMcUpbhc3s4lSw(b_y__pMe}f(Im96d=!%I*6f$XoBP;1+U7pf`1uBW@r4HjiR<^PI5tM_jvN~H!$!`+7G2C zj?AZzgfU+0^P;@}^ddN?IDuNa?lsULJq2B}Jw|Z+%)5SZ`5!9>6=jClLE*+Y@VK!pY1%GWDt_)(Bv7Qbn8 z!WyZ7`v<7`nv`DF_SCQNTE-8Hz!1q728j;@YZ$nOpV4I}~`xtHax((nsxn6>jTi?gAFPv%Ekf zyH==gY2}<}MUMHGY!|8^3FHky!M2FSO`l9X<|9CE3N>#4xE^dZvbt+gdj`O*H26E*t9^>V~fV7j4O+UX1~Hl8}1c0 zWqke_bGi|6GzTb+d5`W9tf}E4+dqt*@;s&X8ltDqI@P$irpGTk6UhPAIDW>LNzvN@ zIxL+oHMVu;CPnHUM)?Gn-L#u=;m8Gd(0Rt+9%E5nWN8(JNyx#={JtwS2oPhs|SB~f5$_QNpH~Vf#}WQC(;$HK4jQMD0WxM zk*IDz>b!?LTK*Q9vZ7JC6MFzbOaA4JERO1d)iXgIQpJw1H^@&pCUxo=l3LZu_|e$m zPa}p<>r|B{ek-GD%BM6Sn&TJ47xtkKmJ#LTueX3uHc=D6gZbCaQ^1PMl5Yq9w%nX2 z|BsSXRk`tuKV!6;d44)OMDHd|&8&c{eLX`IrnF#ESfxI9hg8`zfQQ8L=7Qk^FVXt5)k8pR;rso6Q8g7sLc(ccL$F>rA zqh#7Un&^Y=&fu5z;$HaWTlfW1_=WEw^#Sp7SQ2K@PxAv^51F3~#7_wP1LfPT{5F;& z#NF~sQ-i@6SnPdt04=R-nH{4DV@^q!mm zPeI&U82ypSbdNnTW=~1nTNM3)7XyIjsriy1`U|-l!LQ6WlOGfA#)YGC<^XUDgZ71E z55>W1;c(&EyEP)e>W(GiIY|#j6o-W4o^Y5_j8z}jcN{PT{EQuci7xKYqAj{imjz|F6XSk9+O^Au-3OTibj~%%9gY*Rk%*k~oX5crC`{t{3WTS#9H? z8?lRPv01V?ZOyu2JX*|}aaWQnomuOet0bhLT3Qaf@?$|{0wq!u1XMO*ElB(?^O5DZ z(4Z;=Br1BpgH?iqUzA_2a~?Mww~8Bho_Cl}vb}q5vc0b_o8@;tG5xDObi?HLW=za@ z*Z^>w^#{{QN!hm6c6PC@@G#?!<^0z0k7ZMk(qa1f4{e-=BT8moEGyoZZ7D9UpkQn| zH~n&*smw-X)jH8D6B-7u9?$+RYo@Ymk~KG{?Po2yT9pFfZq97h=<5pY<>+|$6HfC< zlDP%~yi_w?)@4THGF%z%IMi1oNoem2B@OZM2c(GC87jtW@Wamy7@hy%s`eHD7Wrrq16m5$=DQwR-p>J3>d(Um~)Cq zLSVmLRG_v#F?p~w;usDvZrmv2^{ilm5mxFG1h+x`@`l@m9TLMB*z$F-b`1?MVFFTk z-8Q)5@%ha-L5}N_Niio#rkC>1)|_+^-nJRJM}6&LyEV8ERc2>Q=jk()_mGk9%|IA! z5H;9#IL*x8br+`>|BRIIl2-uC8iWsu5-MEP{kq{s)bWQikQNodswktJE_VFqKB+0$IFsxawMheLWV+FkQa9N-%Mi=?2P_7v z6wC}@vPhPVQ-^lK4#4Fk#-X%$;#==mvJ-MkK;BUr54jWb^~C}A+^L*X>F04S-{wrd z2Kk)hdUG?6X4Oq7N3bRgf(c93`L4GbekMas#kFvuH`P2h`#51c34BK!x8cT}sV;Y> zAZ3gN2h_!Wj_zk;n-zwWl>O?OP2M=<2TK&4nK_2p{l*Q9Jah;Zz4f%LFj6t(Fgy|V z3{=dM{_VD=zJ>eXM+0=#r0GPrSnf)mzqB^^h!J!r-pk(NQ)e+f@aW@t*bll<+NwXr zkk5O9)m^%#q6TE(xiP)hsE=}C8lS0phPB9TU8OI3MMMt$N=Q8Xr>VqeaHShAH8?Y- zO_5UvPv5#!G4pg|c?G$(w9gdXWy}~76fh6hIT-2THZ#DWa|PR#qEgHjrn4#vbnaZo zHcPZuOxyUA+!NJWY2Wo)KHFz+5f@g3_yyAC}S)+N9P#XAFPJ-5y`3V#+j#r=Y7EJ*nzOj9=`|Z*KqOe ze)8O1xs>^ev5aMd`r)49(XxxSJ&D@OH7p+rsn9%sYT}tsHH&1Fw#4bRQkNdK zPsNME&;Hc;$@ygI_~m-n8+C*iope%P2th(2sK%~3GZ6DLa-kdz@<9w39icFd9bxI< zo0yHK-^g{tzbD6kcqz`~&tLi>JMxCCHo>ydmo)g{en1s>rQJ2YtCqgeJr@WldKC3* znw#O?HN$>mDF)&Zkfg=4gp?Z(UnR1~hI{&3(-<6iQVeRpmck`Zg%GuG#hR@9LZ zu9XNF|2g$M$!`@5)*W!?82{~$E-O&KnlKbZU~~^26@kJipmA#pDdiAq$5zl)@CY6c z$Pz0ialsHi%0)HIbROzaDn8!fNeHlm4k`y<#8TBZoI7+yMM8#E)5l>YcpDOixR$I@ zTp}o0o8!1RS`GRZBunP=A>Hr@+ci3X1v>W}>Gkom2{iw*mSF^2bVLpZ?S`Y+GHuc)}QJSFvhr-8$qxeSmZs;(Tq7uJV5FMUtf$E~ftmCu4>nt~m7O_mcK}IfFMBVL5TWXO z1t9z}W3co!i7iVVi9qZ^Xvrc&K`CvAIt68@du=+12&{kME!&bLkGHtpXWDCPZ(8Ml zlu=AVFdoXf7eD$&Sr5MX$n9u$>#c&%Ze3|T$%GEY<6tohJ4fFMbY8*QE}BEglk@OrSmY>Q739_AzQ@rEENbm1je=h8b_#b!BWi`gI#Sv4Ng!gAQC;4 zQcbJxt{Ly;f?8NZO`PVyXrLkrhq9Ls34{$5iHf_*Ix9E#wkpJ#)`G`(CJba z9RGEg)GYkhHaIl$LEmK)S(ybRncMw5!!0QarNXR}dTraOaCp{_}GEZ)ZW@|5`3(s1z;H z{*!@ICC#<9w#7CDr69r%|2oHcnMsW@N?JwjM%Z}c@R>zc5d`k+9*G+`QExbsl>L)paITQ7Xt;T`spXz#!A}X*pUU>Ud45R zC>!MC!ex=LaK0n>wSvgTVk30#sIX`B=%9ag-E-j?z0rIJKl}UlKT|0FM`y=>?iFVj zLl;-)e{GkLcxmZxC#R6v^rmIL%RzHpR6zxF@E~r{_#TR2lC`i&23g~rM6w0B;$M>~ zdjt4;-$qU%3D;X&-o1mE$GPvXkKa&VBymm~29^&GJD!OM2D4);(Zv+Y%#jDpp&ccs z3>xP-Oe*HjftYx4V$)4S^*JgtAR7=_LL3&j``Kl@!iL>TD} z5o%Twyq#UffIsgaIhPHJz(7hYBtxi~cGEPduPdevUcEN~^#8mqh;D3lXJ3Ck-uy6Q zYTV_|)BjQ9Xj3%gK=rVNZBBeN{V^TdpuPLt{b|j9dB>6@>CIDb$hc(gGu@p|Pqrh? zl0;-&PK8?@Vq%~h8X4Z~VO%$)G}(>i8wC{*5| z7Nn=C+W@2m(OZI)UnRpRolE81l@RWwLb2=A5X$q|_F=9SJ->o?S#j`R99l)2{s9oI z5QOE<;t*m%H}=c-sOBhTD_Uw{c-3hFA6^>Fl~33$~!n!Eo)~t0w!Xl%Nn~nlN_hMveeW| zG}NL)XGR5+sMRKjJYQfDVbl(sG^gSz&@e8P!pNvqJtz{xld5$1rWH$i%Qv5XnN#?; z(dvVjs=KV=&zbO6D>h6xwT?wPga}v3ctKYmvqLK27kFT4F z(j&Q)T|KV@1S0u4yMzxSJ9#(g&IWP5e0uK(ki;7kp~w{!qNdyuR#{2R2f`@dL(GT8 zI{d%>Td)W`Nu3}~7YU|rKTV}f8tbBoCMa|#qUX58Or2EBbW-PmC3<208gZZqpqbhW z$TZjylNLYoxbjjWf`639Tfl^oDuxno*C*y^q(NNV|Eh}x*BEu+>6?(m4maB^vS$vy zH&N7N@b9IL_R>&MuCyRy5=0d`t^SykFmE4;Nz#`xV$Nq_U3l3B*Q? z5k2>=9|Y zS-2>_>J+6`(7w5ELkoEY~*uO4{m zx+N;98uEpPzz;35ea{Mz(%c=(5GU>$wM<=aFVEag(9&U|?)S|>-1>e8cy?oJ+#rzs zSYa6E$DL2P3=0Xba3{Zr7#FM}?;^zOwdG#Ru9lmZo%)?W%iQHLlIqW(d}S!#AMK#d7NlAfi&IDU2YA0;G~zJ)bbjT>{o{~_N`vQbRrp-qH+hDd&ut1}v}x{OnLmvsvGuqDlDG9*3DRl{FuMvN7$2=diJ7{R*^ zMpq*igrbiy_u@p+Bz1el*~IeUR^qduDOztJ87h5xxC(w@R~V=2;MtSnp) z(o=PzDtN{0Me#<9DEosd`gKFuMj`E3oAx+L7pcpC$2cxwZfuw|7ztP6h^JO)UI+?r zvc<|^+F-f}Z_>hMKnjO82jnlP#TVh(naIw(_Cz84TFu0jAM|=^OgGmN8cK8Oj-IPJ ztgtg`t*i?z>%wbpvMX)IgZ;1;BIXOJeqm`TNZR1D88x4a4&oU%Y}%txk255XEkY$f zePr3VgTWiX48GGPI(k3tlaBTQL)012`#^y|Fc+D<2nX1@9N?ODMc{p)b-(bw-I6~X zfLxA>`%Kuv>>0;PAR<$Ni(>IncX3dZ9v~(NFG)`68nO-v0y`($Oer=ns1IeTXQf-` zw~{vBV>2g8wGkb`31->_zJz>3l>=cqdi+L{3Podxp8~hv3B-yG=SQzM5eS(tXU*wg9jtgHh*EJdT!btaP18fnf`hn$k?!Lqx9#U_6sAW)@PB}^Cj_3*n9oLxlwi^9~P{gnO82a84`_~V7WDq4_3%R+L=GAaP|cHsbrjSwL+2uI;Kh6PFa^|(gQ9T z!Dmd6i;usMN+(HV(j?RAk{EQkKe9kXtdU5z%^*X%#MKC7QToZ%2&JpUYBYj==rf%} zx|SniE09ag5wIC$Q3y9ujKV2K=oVsiiqghLaRnMc=OV#^4yZ*(+JX+cWg|_4ia^gq zs_~F-Oa*0IH%}0bII}SxCq@Sy-$4e-U)Oy8^WrXxI|$MDEpoy9o5)4)`0vRO?*A(p z5;6U6WMs7tq>qZ|LhZS`ELogMV!VI^@L*2RI|KrOkOYz8AR%OHV3G+ih$PvR%nwCG z)Y?ZeT`+o{yYS8qX<)jV20e=Nj*i^QQ?K3U>PjEgzdJHyNsG@A)eT+_QPZ3Yn>!Di zTe@6yvRd`H5{i%=V~X7+ThN}n#|4@ll&><&gGSig5Y$A4a?4ts8#!m4+DnOX&k};> zjiuEECsAB;f4%^vEux4RIIn@2y?bdZBoPHr06epM@X9J{ZWS8Dh{o>KJg_W-ee`t9 zTk`~T#N_(ByGYlWxdaD_GWm)sk71WT-zN8O%S9l})2JIuN)L9t(iSw7c9`|nMyzm_ zZ$=nmWv0=bsIs`qNSnMucVB3C3BIw`X_K)*-bny3P0GobYG>s`$M`3xxGl;W{?foA zG*ENj6fgG<;cJ}0A{crd1p4=`V8d)AR<43}<#x4Dwp1D5YwlyDMzFvy^gqW8pyX2m9s)lih0P$%HP zvWybmkv$a1K-4ckswthb@Rrzct}$N(mcQb%FP~`5coNAww!ROEL~J>BM%HXvz@l)(Tif=w5r`?`=l4z6HG zD8n}v;zMz;E`^kgpQ_d*YaDN`DEC*_fLUOt7?F&{B6X5oGde<>H?S$4mL0gsscSb;haFG7NhUO96 z8l>kqKJTC+Gpn_52y%1J24tp?W4%$2EF0uR$%{m+tz|{6d2285r@&G! zxTO5ZX_j_^I%b%Y6|fE%H|(0AX2Ig^hXC%McB~pg_o}M$ni?8yRkqqDqhp@nofKWk zvIeo$3aZEi#JYQnSc7a*rdegLoEA7SJ3)-@4u&wi0<6^4T9{~vV zDx!L*+81!h*THJR!I>K!w-w@?_u|N(pu(1-JyiDog?nA8BUtwSynA@apD@1)IH%-e z=eeB!bi7eCS~3^l;v_Ey=Cs)a`I2p6?|csLlyd#bFN}SE&T_zi&RUXR@2x3W*;#v+ z_3&p`dpVr#&AKJ{VzGvZtIFCXSp=$lu7iy0D*{#Em<9WQT?Ud@uFJK}PS+OvQcM2! z42dJ;F&j8=2-o4Hc%+4Y!A1``A4Ow}M`UtRPj+c6CYSYyOiR`@?Q8O_d=)+0B;;am-UE1uMCy5BE$H+xgMTs z8t#Ib#d2ul<|1l3(+e?QNBLshhm{*YbEVAl-ys(_4wj&3jK!^v1lbMSrtX?Mz5}BEkaTxJCJQ~|3pHOS%FDV1(-x_;zpaA9 zxNm){ zf{A12c8^@71`K18=VQ`ZfwkLZD*5ab8)FzqI`LsEI4;Kzpll9=pV%Db$}!f6=^UVx zXjs^77CHK}n`)TaKSvR%N?^@-ojofWy_Bp8Y+MY0LfD^WekK|d^NRhMMfwTjy2oKR z@}?=J2p=Vr9SNGH3q+qXE@)4V{?7U%Cy5&^%L671sJf*epX4Kg zV{r)STGC)>B*#^bX4na2a^O{^hAdE9h9_0_!sMo4AjTiIUAUxn+*hwr@#9<*f(c2s$;4Vy9|fE-r#~D}#W0u-lbPaL$2#w2svTRljbi zW+uZVCZfl}j&-YjW+*gP?)*q@gZCGUsXzB>7RG5jw_kP|f@K3eM{5b;VP!ddP^gH$ zucw6*bd0w}{md9t5V)NP2GOdVo6Zu7jintK44|6Y`uF4NJYsk}*DVQBcX@};;o86i z6JHFua_Nxr7^xGdq)Pl{h}?z<5C^5 zde>BJP)2xvWA^SxZ0pK%5kn;N!oTeebH=9-B46jqXUBGj<|esKP7j6KmgVH|Go>@N zE{gxK=B^`43kyq(^VaRRswtNAKTQ&m+JX#g+Tr>0trYgZ&MS<4;O z!nv<3+Y8*uUOvck;-yWTSyIl)mx6IZw)R1p$i)v>%{`y1l2d- zY)Jf;5e^}aID45l`T9=i?rT{idi@R(nW-QzK;BgdaiydJId7;;)0hhRO#~!7gjQBI z8^jh*h2T)21tjm_oa}rd<)qgD5amN|FlU%8EY*f1-DSPwg(M3k zlqVQ^z)yc6e6G8{q@p=7MwU4}8j`xi}utZnm3+ zow0B(hZzO|mI-))E<(a;;OR&= z64cpgtU+~=mKg*UK=$42;J7i@ZzUf7Fa zp#N8tw&V|Pa5q{QhD0`Z*b7BPyXW=UqN&PBh!ktIz>8`OpjLD9)i!)OIUHg`Q;E}X zrli}p3d&Q6RuB^Kd#qlx2NLUa1My;aR;4LYu@qyvl{O+~9@zsoI=*^WhJ6O*AY*17 z;j9G|cXXwhYt0!-mN6oUZFjgnC5V|_VWe)Z=}Ok-$w><@2|dGzDvx9!Otq)f^~h;? zN=;8&{EVNx>M_CL06p|%N9;aG1ROp$wId`qUL9!73-&K3L!36$`;HB=`re%!qqqtd z!2J+H7vSX4KzSVL2`W~8p~0om1KX3&&#*blr&nJ{R2$q*%TT`qXqiJ%E!66vi6%0~ zCkGs%JsKegA@!`R5rwPwVUy%f)NN%F_VeYS@mkQYjvJE7r1Ueyx1`j5@HV3`o$kF^ z9ko+aQW_3X?E6O0i}=PGjP2U6VnV(Of$BfTF!5+oG!1oR7%f{gKSmee?AvX|Cl=;P zAsPEEe)!ukPEpz4+Gm^U>epXVrB2&m$;?v(zzf$a#CLv_TEMxdIMpX;;PYy(548f$ z$@m*r*wt8;8U0qRv4NpW088HXHE0gw#hHf+P=KG5j|y1|fb&nn6``+Dld ztun{8TzFenk&D%o0sj05xlW~&Et<*$-A^b)525Yx>>k|Chx50fcvn0b0FM)NuZ43y zPdrWrE$vda3G_uVS&zQ_x0<(Nv)b-g!_kvWR;CO&pp;;!lwc+qu)%^n5v|sgMy!k9 zU4*Fvs}UxBI-bqx>iY=lh+NTRR8E_>;esT_LSbu?M^@&Ek)^P~`{!Gi`gYW}+(WFv z{#;23LU#HJVpRcfj<^F;GY2a&t-U+8s*N%@HV-T;3d~KRb9N}dz*7bFg8Fk{KSsKZ z9bLw703)XTOn^L6@)%uMTNri47>UpuNxoga@`q>>rV+f*SL~iX;s}CDr&tZQ z2)DDeU8z?xvBeb^)mYUHl2`7SN8nauf?`h{ALBP#o~AoW=U9ZF$lUQzkC@w< z>Ec#1pQ6x5rorARk)Mu|9i%04hXm5=dB@XF4^@_O(C86kK7I-mh0(B)&baPH z>bqBL`zZi!R4dYK^_7SCxtioUi4w-T%(!%YjA}h+FcGG{_0Atr{ zHO89$u$OJP=G#$$QFaX0r@TvdtxsGc9QGnFP^L>Zr00~JcbtKc}$JnV(NbXI#1ogI;L?Trly?D%=s(9So{uSk; z!r$j9pyytawaP~ck|K}u9`XY-@I&^o-3KnP|6cM=I2Jx=|2_lSvwd+Z9I{9yr zLDL7X*!L)u?&tu=8#i9x9o?DTf|B0kE;RCe3R`+Iu=uqz%GoQJEd%KM7C}kA7D37{$`i=O2n#qw)s}u8tC_N6N87si%;hDWEpX}b_UKINjlGu- z#8+HHZ&TDFTsi86st9v5 ztXG~DxRVO<#Fiz!L_3VEQ_k^}E>ml4o#Lw?=_s6xSpLD3D~GE@8S&C%rqR|xShdD9 zoBJ-ApOS4Quy$$uENRw0*jvN4(#PAjb>g3ifzKT}Sye0gl4H9beMc5SATk#l=L^ax z1Zd+2tyCFY8SxzaBq4|9=id7U*gXCGPkmPvUu#a}wqm4LB1HC3fB*a_|JdrM6aBgd zKhwAcjkg9O@C*pbV;11TT&b6ycgBvtK!_VBz=fyChUGcLt#xjhd{3)^QTF#K4$^i^vC zCY41@J<~q@n7cH9c>nKN{yO~bpO-kN4_D4ygYmD3_g|@hf136#X0l6egGuhccJ9k< zk}PeJjw9JJ8KZNuwTEUat-|$ETv2Q&(z}!z0{kwUX<(C{jiBILjjgcEnv8c{$XPcT zqj>qZ&z#m0X`Yz5gVEerpoP@VP8TG9fP@H?tnJwjMBO zNhLUI6P1#8;IQLxPU$=!2o!EbdAh{91uaNYXVVcUmPnUYOPAXIQ6kfA`I$?gIjOE$ zxWJHCC8l(lBr@pD1sewepH#J)p0I*jq{z#Rg*#~c?V;b{a}e=~A>=qT4ms5eCM?&LD>B}g98y711cPA^RSIG>Z9AU_) zq8Vm7F_luA8-zL$KB?C9$sAElDY+T`IwEtSuI7+f4-!u9=8*CH5k@V)2XW+$QwfDr z#^n&08Jx6)l3i5_Kxt-2tH9(?y^2~~lEIqnH*!V5D>??iG$-f&aY*eznpAR}pm?_3ihN>wZoBXZyr4>wvYf8a;UVT;bsDcG$ks6x+dn=?x8%8VcpS29;_y&@5}!H? zQ&X{jd;2sZbrrHKGyFQ1NL3Y)h`P+y*jK7xQDmP|P2C9J)Ttz`sn25bd zkk)1RgsUSRZa#;cFh#x?`|O}jOxFb>bZvtkcqLrrYAu{z=gwmQ+H^$Qkyo*r z$G&uaHO# zs_Yty85_Xi*8hkuzlvkY4f$sS28FdW>nHMpJMzS8-7ZPi$PLu*qf~nA?f}PkOiFN5 zoX~ASCLb`g{ij+SU%%{UqK!ztUa4n2cM#u@=4&)$cVIBc^A!|q!kqRUlv(mBqVN&?@y>7z@0X4;!XW$OF2VBePtb#~APx7xr_qR)ve0 zyMOSWb~mNSMLq{{Et|uJf*SAZWx;R=sAk_+L& zGw`gy<%8%HCL)q0#2v<`7DkLE5@T{u@pe7V`aa@%IK5D%{OQVWi)ckc2|+X!?94zH zVI>-5C4pTnX;!_K!mb@lR1FnwrGi}z^fE4!d1mBlSh;I+xI^pqgtcXLw#>9tLlY~Q za^azhAZDX6(CC22YmC6R5VP&HZ18yp{lzihi@V22_opWUsRy2lApA7LSpjIZ4=PZE zCknM9PyYL4A48m^FwoLp9%eb}a4Lj9q(tCl;c0ddX3gt|bdw|aW&o}*`^^Rh?CU6O zp})fO1(!#q49Rja+-|3zBY9pp-+Wwx6iXc{@$J7~_0)iDK1fkv9pg9pq*Mi*`(L;h z%1bSCzFVQ|C5K=93LEdGsQ#g(4MAIeIR`A@;J|VaW3lr-UF{= z#lf3E;ST3;^+hCue4*-NZvJ8E-0C23-zNV1B#^9h%i<;4iSz8Zs;wh(#^dHXxt8DS zB3C$Z={luXAq~=v_;W={Xp>kJvEj#Bg{I}Pf;G~L-0kA)Fr&x|!I^<=XKPE+G+#?Z zbcrn^5th#(5*^~U{O*$QDTp<3SlA(3do0I7B3?1>P>zFK4V_ng>NmK-^G_$WUf?Es zMC#K~A*ku`Y|UO;DqZnYX-a(NG8>`L#{RgE*6-UFIuVwEng1Hn_M zf#m#@aX`EbX|54&yV49n0nA*lswb+PQNhRzQGYP!x(w*jWEUog{5$cdiYcZ_FXX~X z|*n<mju~}&=GC57oRFeo5IQ(8dmjILK+|(L&8urK8-@iKm)$gRjKhTyD9T+bV#-9LgBJ58`%Rj~t=bR~sDaQ#^GypKhAmWNDftwu-7p6i9 z)KE==5X%rEG~E43w6uj}CEG&@T-sc7opKaQMFlHl>zE?#BDeFu9tkrL?zQEdQs$hP zihyIb%o2pM!Ebpv9)9rD{6KG05w(oFY|6}o8hJvqyS~#cpM8FDlW)4YbD)1t>S2l- zxT4$HCQ44)t$qm#D~orfWtl1v?dxAyk%W1Wv9vA>QJ0G*wVcS3hPe_akx5eAcehPa zD6lNt%iy2ho~_5@F`KPN<0+X-!r){XVld%g`R2|4Km8&s}Nlc zA`AUbUWW~5$0tFSZXN112#O_@=yzyGEdcYL1=KP|pOym4fJdJM8!9q)v`v__3$vh8 zDNFj2$52V=H`hAhB^>U5Dy6d%K@~Tw((lh#R7lYPncxEO*wlqqXfBMd947p4)*;v*XsAw_d1>v^ka z@RkdkB~i0l!Cnk3jkhFUNG8#|5X!@J$7LE6I!zOM5}5-Xh#t?j8W7wUN4ujUAL=zA zOwWpT@C)pStc9tW6T!~Udf?n9v*~x-qDm`l1rr|fq!o9-F(tw27vB;jk>mAJe;fOF z0Xiki8Tj9}G7nfwJ&40sBUXUV6j*1A(-3IkS~`%c^T$;sL+ABtTOdaJjblR;ojgaZ zmG%&w_arg`Jw~*x^xO$;^we`Q`bP2SO{=v{sfsL|U!#QV)Eu3!!p(=!i&GZ1$!y(W z>#v*H9M%&GRjGsyu5_}8igG5iBG#6Js<6q5D;j#3$}X-nEEJ*%{;?=Qubd5S zv`{8rirP>7fS#5=<%e-9omQ42Kgb1TI=f=s2>qx0u$Dg?Mrr|)T_GE&VsTrbfRhh0 zlUdAqQCft*V&lY=5`@~ zYF;sjya|VJ+!dUqq#v)?te#JL{Iphp!IvQ4M>{`*_v3QGJc(kF0h(&0h$oyOw| zzq5w4vxcOzhOE<$xYLfH(~hLmEpe+keycfg%Pnq;En%yw@JXleDfjzNSbJw5ndjbg zC!M+XpI9d!KTbaIPd>m;KFCkJVJorRB_&%`ix5!ynn8|;C7vx9rw z=u>)n;oFgSHc46r24GpnB;{y^J3?)u=98A^z-Trx=~cF?5H;htMrct*)$yy<09xm- zD(fJiIFKrJ-JEL%UmL%HE|Z+F+wp_{+>g1!6mh7H@uqe`4JjQRTQ8T>6D^<9EW3=K z3R_{0(&bqUuF~$8-uCMW=xp~E|j;ZRSrURTC0_PW1hxL$x*Fr@`t>e?sf z3rY#tpeQ~w*0T^3%v=S?*dRHw^r!cS4ZwjVltGdzj8P*Ay^0nn$r>g3JhyzoVt`r& zSa%aBt2vB)!XL6_b+{v|%pF1-rt<~aZzEBqU0WNf^W`Z&u*UiwgbVCvNiMjqMOyv^ zT0x<9;Ow=-v`QU+?*=LcvGs7EhKkuLoj{=mD~D279N78l;az4{!FGUQOSV1Wi$AdM z!HIKHRM)&;s>&b3+0bHkx7$ye6OO;sJt=eGe};@c8UnYm;Q!I^$k^EiTBeSWFH*m z3mEZ*EyAL0lHBJX9#(jQZI1{PUkvxNy#8HlB@JP21Y&R4pjLXK6dcU?2l`qPD4=WZ zFoTDCkXobT7t*_`5nSigDidQdqNzBq(fhIJE`7e7C}?ev;U0j6$E1a)o%k|x0lXfJ z_lr6`+kYMk>OMU*m1XV4`VzFDQ#>3hME?K-eAr-*Vt)2cL3mdxVp;3|X_UnBWM=y`{=k~^qnj`BW_9m2`CF_Uo1gE?&yXNXdkC`{?6YK;ozt^Z0 zrVB3ez@T0pHvoywE}gzC-TTFA7`GNCU}+O*ANe5}Uv+l4tFR-?C0nq9!l0O7Q<$6` z?JN`(ZySLw@!3%n>Fp}Edc+U+s4=xYe=0S~J3h)wHNrcb=&c&>&25~E`8ziCydHDt z#7aM)3%2+)TE3i3ptTE^@&SHgQAo-nsz-^@Oa~5K}8J7uzH=8DYILYQ@xK zfR&1 zWVf(h-wE0bAssPYcN*$Xil6tc=!JR+E*Q)!s?0bZ0{rL6sRD0=kjSDs#_=njM!ME# zYyo-O$j!wabeAURbcDs_3s*5*Uv_&wo}a76*fKeHCz1?{1{$ZR$=%**IYlO69|*Y58w3aCnqv(L(LXxK1r)?zsHK{m@LUIR!b_d|cB5{-J_ihF5&|#T`YKaq@a5pWiLO`w9E<q+aYRee{XM zuKSfV^|3wKHwO(arL` zC?Yr!26I11xF}^IrbV2sF@H)t1cxZ!v0WUkC@VCpqkh;dUdWt!&TdHj5I?#ZbU^r! zewsCOaM{o`IU8k6WrsSqY5OemTj7yFTQ(|lnqfOa#4wTlt}54b3_-0t#%RMX{vSul zIC**dZk0=9dU106xL*TF+(X9l(G3i5w zH<(!mO8vZyV51l*3+67adBy3M5+1M!2F(MY`{h*aNUH)AGN2>Wo#DUeQVT^k zo4_DG`Alo!@*-Ot!P{lho3N&&T*hKc2j|~+1KdN#_)OA+`ZeCO8=seXZv+>4Zz3K9 z`gw0&6JqMv$fKmMo?l!ctv5k9UUqRmbLp?GK3o^p^;z-GV&dmE^&PQ&VmWMuCKCL# zyzKkqfB3TC>&*+k^rpp@63a8PCX(d<1`n0Vn`VJVM$hLBu>)a7*Z*2&N0Vik3Z0LN z+|kZ|3#`MjWu*<&iawt4)&eHip_PLVy^I|sn|XoiLH10&w*9>C((zimiBRckW4#3I zeFz|_j<_oPy)EWA z0O6Pjz?f`-gVL@16uLsF*A>s8i?8PqFWe#Abr1RTb(dTr9ijccF47J8E4qU?QYQpa zcWAn9{5dS;hGF!%a9D0cJ`XYvYb#~4ehme|>K-rbDR$tk#8#TP@Ym`}m!_!tR=vvA-x_Z%I1k38xw-CthuU|X3)#t;%jP|}VB z2(h&7Y?6*OFC)jBVE13^U*Zzb3MJoGM1@-awEp$qPCS2awkgWV{Ku}Q;=1iTKRi!n zkanszbWt#%j23N~#o1P#{Gq>gp`-*B3xT*d!0;+6*l=}Jc1Z3no_lTFx3>RGK45LV z1EG=OWcoO9xvKH?{_p|jXVW1~Fhp<1ZgkOym9b`S#<`f$=@u<|bl#9H7?8(4N7iO~ z@>t}`i4M_kG_o`}z$|=qm#nX^1G=?j^Cif}y^TT}IQP0d|DZkJRT13<4@pSn2 zqaRVQGo}Zn0|b7y^fvoHQxEXQwgsmCOu z&_ZJ?Y;NOec3VQaRZua4N(=14+NMbb$W_|V0B)f?lQqID4Z4oxIY;Qt)3bxH+tRda z-n86f-m0$-icaCCv*&7pjN*l(uWIWtv3^DzjPJDpF>xeLSx5M)AU{XQ|14Cx-Y`mkpdf!d7b+Mk& zl&G%rnO}0Is5CVphCv*BF$m-9x@@VzX#(y6foX*rFaA8s&9Y^~xX>FhI$MAEqn`z+ zNJG=?yBCao!AJDemb#m_{Ir>K+KCcfJ`cWO>*4K<5Q5A@8kY~!SDTMW zP-UJTr_dmYu5cejUp_);jKV{50FO4p{0?Pzb^5+?*1WNwLl$QPjMKdA`f{J;VnogT zKnD^L{ngbEsW)I?zj)>DqBn*4R^j_F@o`|7(Hwj07H@i_rH^ zuu`0%s8WJr``QtK+o-V>`MQ{ac5~-;PFoQ6r?fsI2r@&U#>8EH6v?N6bY(#lWX?Ve ztGto-u+#ES5JeKl>BwFHU07H52c*Ap#@hKu?Ed#Exz<1C4C8;dmGQsij5x8dqJ*l5 zo|3Ynh^&~h_`gypIbKSx?=NeGLlys9c!e8(Dl|)Im_>A?Xb3`ZhyZ}T6ljx$1YSf< z=x=L!+fOLaBUQ?KfUw|>ow zru9~g^3(XWmCjREuttNL?W)F_Hy8*6LDxRqbVK?x-IFL%Z6}Bud{=8#aAyf|6`OH~ z^h4M*hJ6DCSiL-@`aKL`abQsmn5>y*Cq#Aw!E^0q=cfSpt#v$jLKV*mByb}UQBV!R z;v%gM9wsrbH8Y|>Bu5%8qai;Tmsq~Zu(w}aL5gR5n>pcN59h1O`!1X9#9vgpx1a)X znJI%MDuEoZZp79|5x%Mfg}zG&UxN2!uhGB!$PELC?Qqo*vGsO>b`Ai?1C*e$Q1uQb zMUH>lBj@@b_cA%k`4H1F|H+i7giH?nu~d6`h32){Q>>2kc|(I-ck}mg_em%|&T8Lb zWBD%@B>($n@xOc2|07P`Nm_D93dq6BKLTvvlHNWDBQ}KN@=N{1OVBi_8=8bbIu`P9 zjKwV`8?+H+q8Q@0_X8PjdcU187%w-SqU4F-K9<(b?k93qOXhRCyS{$VLsbB`(7>oXX+2&d!+%ik2o%5+7P-;@!@ooAcv@(fN9b0FC8KkvNPbE9-E{7g(R&IV5iP zHBTL%?OQMSEgcZ!Z4DBGJxnQ|f6~F^Xj_t6QLYnTu7msGMOX7Fhu7H_E7mk7 zyIHW6yLwLs!}yA~KOI!C>rN6cIx;|?&4y}&@H&{FI;qHE!qJqTT5%+4m+x-KL2R+5!h8lLwWBc(itxfnrMM(loUbIuAiF9vJfLDuZ%|i zhnmfjfzlp_O?!r()*j^HoD>AJFcYx_60O|=pn2jF+`aG)0=(5j?U#b-9iYq{5B&Am zB8b0fIt@gFcr*13rJ5S>nsG5ygA^L_aU3o6426#HFR3;bf7=s7K%O}p@O#Nr_~S%c ziW$0W0(yKMO?~+`8h?TlSKw-cv=H2SsHLIV-ReVh$K$Fx!=;H58BXMK6?L_(W+}`N z!_+SLNN3Elz4*k&KGrMC8qHi@`dAsxC-Xdg4*w1fN{u2=V~anjx~{}&QN=>(N%7D& zm6!-HGH5{1^FWJpR_judM-sC8^OfY;CL){VkK`zncFHb^iZx@IDx3KYDu*`ZwrXp6 z4N4ZNbGAi1lAg(r6c=iozntYy;uJZvBP`#wNMhs}{4gDRRu9-VvMN6!7>0oNQTJJm zLKw!=j5drm%(#uI8F3kKncky*5DloC2xG{hpGC3nQxFZV7;_t0`{rqt^*ZGX#R9e6 zaJFfniCUy3GM8Fl2E^jp=gfgb8DJ>QoOH8Dk7ANO}ML z04;(16JL`36ZSDNiW3V7swn*n@Pg<5uGBzxd`EgEGG^u!&GWE5et6`|DiYB0i|@2l z17O6IP?Nt%ZF){RHb0W6(x7CZl?2myngJH`GKBd+QO@b z-n4#F@W9+F-0cbS+4Ibwb7nU!Z`k45pkMLcGao=W5q(A0g!bASy6g`YnYpvR6}h35 zB1Y5%l8bM{J7#Km3vPwUiGXl$ml>j11!-`F4cr`f;SW{wfrA)q#f18-JPrHbo6zUx zfIt{*eqQZ%5h{D!7;__o`De9WKc(^fJP#^I5izt5@<|92?#DGa)Js3?<6zrnunS^S z?MH+p|IPgKnY?a1g6bS&P{mc|M&_|{kK>VM@a`OBuz58y;;QzFQg_cz;7xK^!wilN&t&?T%1Y;YdfdOez~KkrViXMO_vcx{ z-N?&}j;K#pJ-K)O=vwSJLy?PE+{{$1s(4z<$GPTf2{K>-(O`3#XAE0rSvOhOMi*aPvwY37eaDoh76ZeIhw+xbB& zK)EhdjUN>iL97^LyjkmR#Cdrq5&9q_E53XIz|?MS=>Bdad6~EiA9MO;{wUZ{Vk1We zq|4C3#Ta>FWCso0XsY3*$eO-yFD9B3_f-LE@Ut%B87`k=wlawN+w&`-(?DOs-Z}=Q z_l83igzS&IhF3fravoLRtQRODSdDo1bG%BP!giFAOerRCZ48Vr-Q2h=X!#`3Y;lByme-yt-Jo3n9=)+%h_+-~(5T#-G5ez=R5IErZ))Ygg{{C$}wgzvM*1P3S9)r!aW^^H-AWFS){ zjNV=Iib#_(cW-}ryXAWGUHQD8ojCmnR1eFO%_~8shSd)L^X?x!@NfoXQIaNkc&l_2 z5uP_73=IRB{dE^2IIiAgo*HPF|th)JbUfr|_mfwV_(Q~Mm}F6^c5CG4e~XW&776*rfDpCrgM?$BSM zI{?#+xvG2IZW27yz?6nw+y{$P=_vn7iI%iE6WgU~&e*AuiMnX&n6YF6l1vU=%AEt1 z(mCUr+Mzs{P2&k!XT39pQkm7KDZ3w@j)8gDqIXk}2>Iaoh-$8?N`J&sfZNXOx>G<( zem<)nC@TAb$&mPHRVjj00)#nPeDzB-QUU_TCI{B4lF352V6l)0(;+d&qLS^TMKn`_ zjAc!RvuM^pQPC(+VjmMrM$*cf(L%6bKFU+ns9r)Nnl_P?r710G{+N}bX4WX7pl-1+ zK(t1J33FY#?N{Aqp%kXKd7;eYD~jFkCib)7nAL?xYk9|U5Kd%UDKjDFD>W34`U;&J z1x`Dz(qIz03nzu)&{#O?7OCohDP>As^W;s-#fl;RtB0z`*=$wEwLeD0gY-4Ec8kr! zcj3L;=p`5!LmERIL&*C~A(LsQUQ_JTEzdZU zC9rz%spc}jG}v}vFGh9NR_!d7FK1&mO32{Map3B(Vr%hYPxKx=qjn%fZ=g%A0Vz5L zFgp5>b^CjHznIRAFEG9XK9OMmZspllWU~CzTLruFs3gsoxBSy9Ot)B zT1%d`oP0lD9YFN)=#VE6SVeDwJ#unDPSx8xlw+}%>1C}e_AS9OI*Zu&9+8nDB8{#h zOG0$-B^pDFe3K9*r+%3@LoARo-?K|9(n-GQvOhp+<7L@9T59P47_I=#n?p>PC^;d6 zM=(9#MSm%urgs4PBj)92;=$^kOr0ih;8ubrlMDEB>cQA!CQAfE=<7l~l8p z0{Kz9rdqbxq%P&J$yeIQ7#t=*Ku;3QP^N@#l5wIRl4r2n7wkI{%;2y)l+8EhPWx26 z*GKD~YnI0Gl*57M^YQr!#1C2o?*$E2b*b^1z1%cc@;&>aGZz~|+=CNJlswP~uiX!9^F&NbFZQ8R;xl%}5{ zn5xea+ri?A191-5URug?fPsi+njsQjsM3(*PsQhI_{r%|xXs)-)n#~C&Lpb`PdyqSj^OQY5w(Us10m=X zKVp~561)xM_z=mV0r601DpBNui2Vp{2SEo#hGKCbY{u#|`7G5eg)Eh6CWoG+JLd-^ zUdA2z2bg8W&l+|3I^w1xcDU9m;%m`(*j@|D1pEfV=m`T2Z$*$w)W_TGhY2XFhn)m9T%kT3%n=uQ&) zRN2WmBJ#(bX|_+LJhN*^V91~Z(+<0i^Nu${?X1?Vk;(}#?P={j&2u!2qja13lQbHg zTIo{e^`?2Rbsm=~8ieu@0xBK;WO=WPP@mh7xOKi`q+3nr-Q@WG0!r385q0|anKRj% zkgWmNP=7IX*8F&^`^|8=ERefVGCopktS_D&wID~j3|Y~wa5~fK_iQKPm>hYV&^)$T zK(=p3_g(~peZAztzE;+!bhbXM3IiArWQ~Yp0Lk;8qb9B*j>$TSUV)wXKjS-zf2Ma5 z{!I2(x}|xv8MS(^l7DpFrxFeRL znO2k#j=u(0JOqgZ0|G>~&pf#Tsa07|JNcVk+j&;xOCC*zNym9!$5(mYlie(e_BLSq zj=KGd|Q~ z>ghr;*uT>>4COWFgfm3vgq3EUwIgO6o|Xfx`0QjjG*uVNwbSQhEe`Lrv0E3t+iVP}^0W7kPrcxUkN3RIn?TQL^~bwI?0)>t3= zL}5%y3?w2P`a*QoDDoHz$3cfdh`~}q82g?yLv0612Tcc2p6LMqrK#CPxu`e*u~EC0 z_?X`%zkXuAq-r-O%Iu9V6VKxmv z;JeK{w1PS9?^>&Ht6nq(77+9p!%fd;y3;+0DfT*t z&-bY`REGH0UKgn6UDHmW(|C^($U|#p$`o8+2uHdUDBomv);Vr)!r^(Br6*hQ#oxey z1Zz!YTA(4U917z|3)eD6xtxp!%qX!=vf?bXjEdn_q@7;op*i6)WXPMo<}cFS<+n4Y zhdT0FQ;mHGBQNp6Z&EC7HDt`1CNIEU!GrlK;1l@H!h8u{kv>4gdvqD)2wkUjGi;e|DOyvP$0-%oh;(94!T5{lwmn0C5aqgy4BpE$Tpgz0&HymA5I2x}XoQZaYr(Od|M)CGnP2-cU6U+Bssl&Y5T+0csz4Gd9z>N&NYzTm%%V>2KY6^SCV0&n zOa0sn-=DxIOb8Ogv(KL2Yeo{rDbeXgMzp$UQ=01z+vSvm{@d+c)iHDkaxubW#bhRq zwa$*U){eD~zcn;hsVl5;%dJyXS;r|elaphIREa*tvvP?BdRfT!4{ESVdHF`lF!fy5 zUGp#lgP7R0z<|)e#q5Su1jY% z1Ovx5@w4P@b7o3Ky@L`d(eRlm+!ALhwZmreH)sSa9HoL-4^_c0#x_Zv$Z*x9hlH~N&9)8f| z;oSbUkEDs^@>v*@*}!ULGrLyaC}Y*W1Y1?o;A(j>w^r3CW>vGqTlJy&vKV1GLYMV3 zCeT8;4yX(Eqvs{>^a>pj8j2Q@7NR2nqBluj(_Y11#$Jb>j2^_NHvpep9XSYOJU~T2 z7#?W=!dBjC}X4STm8bKf)VfJt}vZo&}# zE(<~*l3+p~!l`9)78BJ0jcSD-8kGwx(>_iZlgoXG8b1_`y@#q}0PC}3kgH=D%xi$m zYY6Sq%E?WUEm+K5dt+HP9@bSuhx;+8+oItM6%ixu+p+GO*_NU(#@`pv* z_0}pjn9*&UO)`HtCiE02ucRUJfp2+U8a!+zrUba@49%EI1HiGgzy$G^AMCIStjQ zA0&YjZ!-b-@P@X zuge0cpY(&Jb!UtmMKD5heL?zwk6{wS@49M{wdcqG-8D-HuM$#14T9jF;!jp9gkQo% z%Y_TWIZg)Z^lNHW^{ZmKP$^Gi3d)?-yKmfm> zmG&-)_rd#*)OAMBTsP&lh&~K=Yzw*e!MDdJ`hWr=A8{N%8A!>DMK6Z4>NPSa8GCFF zsy6>Lc#g<4#Gi*F5V{>Zg=?65ncn7^W{_=xZIq6nE;4rvZ@p_s50z`6`-~lz`;Z-( zd!gRgnOG3JJd@t_o?rgo}?GJt;U%Dhna$AKR zESVI?zDTplMI`L@1RA8?k9)_QubvPm<{xKwhI%DEN#Lf;%FLd((j+#4PA~TKq7?NL zu1%`6>1*{m++Arqhm&Y);loq1n+f*a0lqNB#G%B1e)-TA5i97T+Y-T%uOi$RAv$8n zh@2=U=vN^hIyJcLq=TltX$(p4D#uhf&I=Htg95o@55LzJ#$ZX$Z)!tAcqVlO1xOfm z5ejxXu(|-2y5hil7wi1nza@x2NuL3l-zC4mcL4wIgA)Je83O}f z#PqY-6bfAFmk~qi{oP6ZOR-(=F&AE1&p36@gx zxk4PFi2dqr+h<*tYn==^cNeZw&DCQbSv!;Qj^QEH7|j#k)r~&T!=|$hU>-w4>onUg zTRPN8f1R?K0)>Xi{PJuFP29bBTOotS1LcYaLxv2dGTGB{&Wk=GmgMWP#_|YZpb}fG zM*P}N(GUl{kQ@Gxo7^b*wXF2qXcSfNdR5wr(>A5gHk>r&Yd)}LkF}euQw{$=bvIG` zk-KOYvdl)3d%(Dte*Ef&V4CTs#A`EC%w)59=DPVxvqp$I5wcR^B4#AGeX_+)h?^0F zi0#NCB!Urph&⩔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 DZ}x9w literal 0 HcmV?d00001 diff --git a/android/res/xml/device_filter.xml b/android/res/xml/device_filter.xml index a149a80b5..782fae8dd 100644 --- a/android/res/xml/device_filter.xml +++ b/android/res/xml/device_filter.xml @@ -1,40 +1,6 @@ - + - - - - - - - - - - - - - - - - - - - - diff --git a/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java b/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java index ad3627ff3..5ca036074 100644 --- a/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java +++ b/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java @@ -18,6 +18,10 @@ * Project home page: http://code.google.com/p/usb-serial-for-android/ */ +// IMPORTANT NOTE: +// This code has been modified from the original source. It now uses the FTDI driver provided by +// ftdichip.com to communicate with an FTDI device. The previous code did not work with all FTDI +// devices. package com.hoho.android.usbserial.driver; import android.hardware.usb.UsbConstants; @@ -27,12 +31,16 @@ import android.hardware.usb.UsbEndpoint; import android.hardware.usb.UsbRequest; import android.util.Log; +import com.ftdi.j2xx.D2xxManager; +import com.ftdi.j2xx.FT_Device; import java.io.IOException; import java.nio.ByteBuffer; import java.util.LinkedHashMap; import java.util.Map; +import org.qgroundcontrol.qgchelper.UsbDeviceJNI; + /** * A {@link CommonUsbSerialDriver} implementation for a variety of FTDI devices *

@@ -167,6 +175,8 @@ public class FtdiSerialDriver extends CommonUsbSerialDriver { */ private static final boolean ENABLE_ASYNC_READS = false; + FT_Device m_ftDev; + /** * Filter FTDI status bytes from buffer * @param src The source buffer (which contains status bytes) @@ -219,261 +229,140 @@ public class FtdiSerialDriver extends CommonUsbSerialDriver { @Override public void open() throws IOException { - boolean opened = false; + D2xxManager ftD2xx = null; try { - for (int i = 0; i < mDevice.getInterfaceCount(); i++) { - if (mConnection.claimInterface(mDevice.getInterface(i), true)) { - Log.d(TAG, "claimInterface " + i + " SUCCESS"); - } else { - throw new IOException("Error claiming interface " + i); - } - } - reset(); - opened = true; + ftD2xx = D2xxManager.getInstance(UsbDeviceJNI.m_context); + } catch (D2xxManager.D2xxException ex) { + UsbDeviceJNI.qgcLogDebug("D2xxManager.getInstance threw exception: " + ex.getMessage()); + } + + if (ftD2xx == null) { + String errMsg = "Unable to retrieve D2xxManager instance."; + UsbDeviceJNI.qgcLogWarning(errMsg); + throw new IOException(errMsg); + } + UsbDeviceJNI.qgcLogDebug("Opened D2xxManager"); + + int DevCount = ftD2xx.createDeviceInfoList(UsbDeviceJNI.m_context); + UsbDeviceJNI.qgcLogDebug("Found " + DevCount + " ftdi devices."); + if (DevCount < 1) { + throw new IOException("No FTDI Devices found"); + } + + m_ftDev = null; + try { + m_ftDev = ftD2xx.openByIndex(UsbDeviceJNI.m_context, 0); + } catch (NullPointerException e) { + UsbDeviceJNI.qgcLogDebug("ftD2xx.openByIndex exception: " + e.getMessage()); } finally { - if (!opened) { - close(); + if (m_ftDev == null) { + throw new IOException("No FTDI Devices found"); } } + UsbDeviceJNI.qgcLogDebug("Opened FTDI device."); } @Override public void close() { - mConnection.close(); + if (m_ftDev != null) { + try { + m_ftDev.close(); + } catch (Exception e) { + UsbDeviceJNI.qgcLogWarning("close exception: " + e.getMessage()); + } + m_ftDev = null; + } } @Override public int read(byte[] dest, int timeoutMillis) throws IOException { - final UsbEndpoint endpoint = mDevice.getInterface(0).getEndpoint(0); - - if (ENABLE_ASYNC_READS) { - final int readAmt; - synchronized (mReadBufferLock) { - // mReadBuffer is only used for maximum read size. - readAmt = Math.min(dest.length, mReadBuffer.length); - } - - final UsbRequest request = new UsbRequest(); - request.initialize(mConnection, endpoint); - - final ByteBuffer buf = ByteBuffer.wrap(dest); - if (!request.queue(buf, readAmt)) { - throw new IOException("Error queueing request."); - } - - final UsbRequest response = mConnection.requestWait(); - if (response == null) { - throw new IOException("Null response"); - } - - final int payloadBytesRead = buf.position() - MODEM_STATUS_HEADER_LENGTH; - if (payloadBytesRead > 0) { - return payloadBytesRead; - } else { - return 0; - } - } else { - final int totalBytesRead; - - synchronized (mReadBufferLock) { - final int readAmt = Math.min(dest.length, mReadBuffer.length); - totalBytesRead = mConnection.bulkTransfer(endpoint, mReadBuffer, - readAmt, timeoutMillis); - - if (totalBytesRead < MODEM_STATUS_HEADER_LENGTH) { - throw new IOException("Expected at least " + MODEM_STATUS_HEADER_LENGTH + " bytes"); - } - - return filterStatusBytes(mReadBuffer, dest, totalBytesRead, endpoint.getMaxPacketSize()); + int totalBytesRead = 0; + int bytesAvailable = m_ftDev.getQueueStatus(); + + if (bytesAvailable > 0) { + bytesAvailable = Math.min(4096, bytesAvailable); + try { + totalBytesRead = m_ftDev.read(dest, bytesAvailable, timeoutMillis); + } catch (NullPointerException e) { + final String errorMsg = "Error reading: " + e.getMessage(); + UsbDeviceJNI.qgcLogWarning(errorMsg); + throw new IOException(errorMsg, e); } } + + return totalBytesRead; } @Override public int write(byte[] src, int timeoutMillis) throws IOException { - final UsbEndpoint endpoint = mDevice.getInterface(0).getEndpoint(1); - int offset = 0; - - while (offset < src.length) { - final int writeLength; - final int amtWritten; - - synchronized (mWriteBufferLock) { - final byte[] writeBuffer; - - writeLength = Math.min(src.length - offset, mWriteBuffer.length); - if (offset == 0) { - writeBuffer = src; - } else { - // bulkTransfer does not support offsets, make a copy. - System.arraycopy(src, offset, mWriteBuffer, 0, writeLength); - writeBuffer = mWriteBuffer; - } - - amtWritten = mConnection.bulkTransfer(endpoint, writeBuffer, writeLength, - timeoutMillis); - } - - if (amtWritten <= 0) { - throw new IOException("Error writing " + writeLength - + " bytes at offset " + offset + " length=" + src.length); - } - - //Log.d(TAG, "Wrote amtWritten=" + amtWritten + " attempted=" + writeLength); - offset += amtWritten; + try { + m_ftDev.write(src); + return src.length; + } catch (Exception e) { + UsbDeviceJNI.qgcLogWarning("Error writing: " + e.getMessage()); } - return offset; + return 0; } private int setBaudRate(int baudRate) throws IOException { - long[] vals = convertBaudrate(baudRate); - long actualBaudrate = vals[0]; - long index = vals[1]; - long value = vals[2]; - int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, - SIO_SET_BAUD_RATE_REQUEST, (int) value, (int) index, - null, 0, USB_WRITE_TIMEOUT_MILLIS); - if (result != 0) { - throw new IOException("Setting baudrate failed: result=" + result); + try { + m_ftDev.setBaudRate(baudRate); + return baudRate; + } catch (Exception e) { + UsbDeviceJNI.qgcLogWarning("Error setting baud rate: " + e.getMessage()); } - return (int) actualBaudrate; + return 0; } @Override - public void setParameters(int baudRate, int dataBits, int stopBits, int parity) - throws IOException { + public void setParameters(int baudRate, int dataBits, int stopBits, int parity) throws IOException { setBaudRate(baudRate); - int config = dataBits; - - switch (parity) { - case PARITY_NONE: - config |= (0x00 << 8); - break; - case PARITY_ODD: - config |= (0x01 << 8); - break; - case PARITY_EVEN: - config |= (0x02 << 8); - break; - case PARITY_MARK: - config |= (0x03 << 8); - break; - case PARITY_SPACE: - config |= (0x04 << 8); - break; - default: - throw new IllegalArgumentException("Unknown parity value: " + parity); + switch (dataBits) { + case 7: + dataBits = D2xxManager.FT_DATA_BITS_7; + break; + case 8: + default: + dataBits = D2xxManager.FT_DATA_BITS_8; + break; } switch (stopBits) { - case STOPBITS_1: - config |= (0x00 << 11); - break; - case STOPBITS_1_5: - config |= (0x01 << 11); - break; - case STOPBITS_2: - config |= (0x02 << 11); - break; - default: - throw new IllegalArgumentException("Unknown stopBits value: " + stopBits); - } - - int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, - SIO_SET_DATA_REQUEST, config, 0 /* index */, - null, 0, USB_WRITE_TIMEOUT_MILLIS); - if (result != 0) { - throw new IOException("Setting parameters failed: result=" + result); + default: + case 0: + stopBits = D2xxManager.FT_STOP_BITS_1; + break; + case 1: + stopBits = D2xxManager.FT_STOP_BITS_2; + break; } - } - private long[] convertBaudrate(int baudrate) { - // TODO(mikey): Braindead transcription of libfti method. Clean up, - // using more idiomatic Java where possible. - int divisor = 24000000 / baudrate; - int bestDivisor = 0; - int bestBaud = 0; - int bestBaudDiff = 0; - int fracCode[] = { - 0, 3, 2, 4, 1, 5, 6, 7 - }; - - for (int i = 0; i < 2; i++) { - int tryDivisor = divisor + i; - int baudEstimate; - int baudDiff; - - if (tryDivisor <= 8) { - // Round up to minimum supported divisor - tryDivisor = 8; - } else if (mType != DeviceType.TYPE_AM && tryDivisor < 12) { - // BM doesn't support divisors 9 through 11 inclusive - tryDivisor = 12; - } else if (divisor < 16) { - // AM doesn't support divisors 9 through 15 inclusive - tryDivisor = 16; - } else { - if (mType == DeviceType.TYPE_AM) { - // TODO - } else { - if (tryDivisor > 0x1FFFF) { - // Round down to maximum supported divisor value (for - // BM) - tryDivisor = 0x1FFFF; - } - } - } - - // Get estimated baud rate (to nearest integer) - baudEstimate = (24000000 + (tryDivisor / 2)) / tryDivisor; - - // Get absolute difference from requested baud rate - if (baudEstimate < baudrate) { - baudDiff = baudrate - baudEstimate; - } else { - baudDiff = baudEstimate - baudrate; - } - - if (i == 0 || baudDiff < bestBaudDiff) { - // Closest to requested baud rate so far - bestDivisor = tryDivisor; - bestBaud = baudEstimate; - bestBaudDiff = baudDiff; - if (baudDiff == 0) { - // Spot on! No point trying - break; - } - } - } - - // Encode the best divisor value - long encodedDivisor = (bestDivisor >> 3) | (fracCode[bestDivisor & 7] << 14); - // Deal with special cases for encoded value - if (encodedDivisor == 1) { - encodedDivisor = 0; // 3000000 baud - } else if (encodedDivisor == 0x4001) { - encodedDivisor = 1; // 2000000 baud (BM only) + switch (parity) { + default: + case 0: + parity = D2xxManager.FT_PARITY_NONE; + break; + case 1: + parity = D2xxManager.FT_PARITY_ODD; + break; + case 2: + parity = D2xxManager.FT_PARITY_EVEN; + break; + case 3: + parity = D2xxManager.FT_PARITY_MARK; + break; + case 4: + parity = D2xxManager.FT_PARITY_SPACE; + break; } - // Split into "value" and "index" values - long value = encodedDivisor & 0xFFFF; - long index; - if (mType == DeviceType.TYPE_2232C || mType == DeviceType.TYPE_2232H - || mType == DeviceType.TYPE_4232H) { - index = (encodedDivisor >> 8) & 0xffff; - index &= 0xFF00; - index |= 0 /* TODO mIndex */; - } else { - index = (encodedDivisor >> 16) & 0xffff; + try { + m_ftDev.setDataCharacteristics((byte)dataBits, (byte)stopBits, (byte)parity); + } catch (Exception e) { + UsbDeviceJNI.qgcLogWarning("Error setDataCharacteristics: " + e.getMessage()); } - - // Return the nearest baud rate - return new long[] { - bestBaud, index, value - }; } - @Override public boolean getCD() throws IOException { return false; @@ -515,18 +404,22 @@ public class FtdiSerialDriver extends CommonUsbSerialDriver { @Override public boolean purgeHwBuffers(boolean purgeReadBuffers, boolean purgeWriteBuffers) throws IOException { if (purgeReadBuffers) { - int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, SIO_RESET_REQUEST, - SIO_RESET_PURGE_RX, 0 /* index */, null, 0, USB_WRITE_TIMEOUT_MILLIS); - if (result != 0) { - throw new IOException("Flushing RX failed: result=" + result); + try { + m_ftDev.purge(D2xxManager.FT_PURGE_RX); + } catch (Exception e) { + String errMsg = "Error purgeHwBuffers(RX): "+ e.getMessage(); + UsbDeviceJNI.qgcLogWarning(errMsg); + throw new IOException(errMsg); } } if (purgeWriteBuffers) { - int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, SIO_RESET_REQUEST, - SIO_RESET_PURGE_TX, 0 /* index */, null, 0, USB_WRITE_TIMEOUT_MILLIS); - if (result != 0) { - throw new IOException("Flushing RX failed: result=" + result); + try { + m_ftDev.purge(D2xxManager.FT_PURGE_TX); + } catch (Exception e) { + String errMsg = "Error purgeHwBuffers(TX): " + e.getMessage(); + UsbDeviceJNI.qgcLogWarning(errMsg); + throw new IOException(errMsg); } } diff --git a/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java b/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java index 2e25a761e..b689ccc7c 100644 --- a/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java +++ b/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java @@ -18,6 +18,10 @@ * Project home page: http://code.google.com/p/usb-serial-for-android/ */ +// IMPORTANT NOTE: +// This source has been modified from the original such that testIfSupported only tests for a vendor id +// match. If that matches it allows all product ids through. This provides for better match on unknown boards. + package com.hoho.android.usbserial.driver; import android.hardware.usb.UsbDevice; @@ -230,21 +234,7 @@ public enum UsbSerialProber { * @param supportedDevices map of vendor IDs to product ID(s) * @return {@code true} if supported */ - private static boolean testIfSupported(final UsbDevice usbDevice, - final Map supportedDevices) { - final int[] supportedProducts = supportedDevices.get( - Integer.valueOf(usbDevice.getVendorId())); - if (supportedProducts == null) { - return false; - } - - final int productId = usbDevice.getProductId(); - for (int supportedProductId : supportedProducts) { - if (productId == supportedProductId) { - return true; - } - } - return false; + private static boolean testIfSupported(final UsbDevice usbDevice, final Map supportedDevices) { + return supportedDevices.containsKey(usbDevice.getVendorId()); } - } diff --git a/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java b/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java index 6520ebb6b..183d5c257 100644 --- a/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java +++ b/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java @@ -68,6 +68,8 @@ public class UsbDeviceJNI extends QtActivity implements TextToSpeech.OnInitListe private static TextToSpeech m_tts; private static PowerManager.WakeLock m_wl; + public static Context m_context; + private final static UsbIoManager.Listener m_Listener = new UsbIoManager.Listener() { @@ -90,6 +92,10 @@ public class UsbDeviceJNI extends QtActivity implements TextToSpeech.OnInitListe private static native void nativeDeviceException(int userDataA, String messageA); private static native void nativeDeviceNewData(int userDataA, byte[] dataA); + // Native C++ functions called to log output + public static native void qgcLogDebug(String message); + public static native void qgcLogWarning(String message); + //////////////////////////////////////////////////////////////////////////////////////////////// // // Constructor. Only used once to create the initial instance for the static functions. @@ -252,7 +258,7 @@ public class UsbDeviceJNI extends QtActivity implements TextToSpeech.OnInitListe tempL = tempL + Integer.toString(deviceL.getVendorId()) + ":"; listL[countL] = tempL; countL++; - //Log.i(TAG, "Found " + tempL); + qgcLogDebug("Found " + tempL); } } @@ -273,11 +279,13 @@ public class UsbDeviceJNI extends QtActivity implements TextToSpeech.OnInitListe // calls like close(), read(), and write(). // ///////////////////////////////////////////////////////////////////////////////////////////////// - public static int open(String nameA, int userDataA) + public static int open(Context parentContext, String nameA, int userDataA) { int idL = BAD_PORT; - Log.i(TAG, "Getting device list"); + m_context = parentContext; + + //qgcLogDebug("Getting device list"); if (!getCurrentDevices()) return BAD_PORT; @@ -366,7 +374,7 @@ public class UsbDeviceJNI extends QtActivity implements TextToSpeech.OnInitListe m_ioManager.remove(idL); } - Log.e(TAG, "Port open exception"); + qgcLogWarning("Port open exception: " + exA.getMessage()); return BAD_PORT; } } diff --git a/libs/qtandroidserialport/src/qserialport_android.cpp b/libs/qtandroidserialport/src/qserialport_android.cpp index 675805a45..9e8060c03 100644 --- a/libs/qtandroidserialport/src/qserialport_android.cpp +++ b/libs/qtandroidserialport/src/qserialport_android.cpp @@ -46,10 +46,10 @@ #include #include -#include - #include "qserialport_android_p.h" +QGC_LOGGING_CATEGORY(AndroidSerialPortLog, "AndroidSerialPortLog") + QT_BEGIN_NAMESPACE #define BAD_PORT 0 @@ -91,6 +91,30 @@ static void jniDeviceException(JNIEnv *envA, jobject thizA, jint userDataA, jstr } } +static void jniLogDebug(JNIEnv *envA, jobject thizA, jstring messageA) +{ + Q_UNUSED(thizA); + + const char *stringL = envA->GetStringUTFChars(messageA, NULL); + QString logMessage = QString::fromUtf8(stringL); + envA->ReleaseStringUTFChars(messageA, stringL); + if (envA->ExceptionCheck()) + envA->ExceptionClear(); + qCDebug(AndroidSerialPortLog) << logMessage; +} + +static void jniLogWarning(JNIEnv *envA, jobject thizA, jstring messageA) +{ + Q_UNUSED(thizA); + + const char *stringL = envA->GetStringUTFChars(messageA, NULL); + QString logMessage = QString::fromUtf8(stringL); + envA->ReleaseStringUTFChars(messageA, stringL); + if (envA->ExceptionCheck()) + envA->ExceptionClear(); + qWarning() << logMessage; +} + void cleanJavaException() { QAndroidJniEnvironment env; @@ -116,13 +140,15 @@ QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q) void QSerialPortPrivate::setNativeMethods(void) { - __android_log_print(ANDROID_LOG_INFO, kJTag, "Registering Native Functions"); + qCDebug(AndroidSerialPortLog) << "Registering Native Functions"; // REGISTER THE C++ FUNCTION WITH JNI JNINativeMethod javaMethods[] { - {"nativeDeviceHasDisconnected", "(I)V", reinterpret_cast(jniDeviceHasDisconnected)}, - {"nativeDeviceNewData", "(I[B)V", reinterpret_cast(jniDeviceNewData)}, - {"nativeDeviceException", "(ILjava/lang/String;)V", reinterpret_cast(jniDeviceException)} + {"nativeDeviceHasDisconnected", "(I)V", reinterpret_cast(jniDeviceHasDisconnected)}, + {"nativeDeviceNewData", "(I[B)V", reinterpret_cast(jniDeviceNewData)}, + {"nativeDeviceException", "(ILjava/lang/String;)V", reinterpret_cast(jniDeviceException)}, + {"qgcLogDebug", "(Ljava/lang/String;)V", reinterpret_cast(jniLogDebug)}, + {"qgcLogWarning", "(Ljava/lang/String;)V", reinterpret_cast(jniLogWarning)} }; QAndroidJniEnvironment jniEnv; @@ -133,36 +159,36 @@ void QSerialPortPrivate::setNativeMethods(void) jclass objectClass = jniEnv->FindClass(kJniClassName); if(!objectClass) { - __android_log_print(ANDROID_LOG_ERROR, kJTag, "Couldn't find class: %s", kJniClassName); + qWarning() << "Couldn't find class:" << kJniClassName; return; } jint val = jniEnv->RegisterNatives(objectClass, javaMethods, sizeof(javaMethods) / sizeof(javaMethods[0])); - __android_log_print(ANDROID_LOG_INFO, kJTag, "Native Functions Registered"); + if (val < 0) { + qWarning() << "Error registering methods: " << val; + } else { + qCDebug(AndroidSerialPortLog) << "Native Functions Registered"; + } if (jniEnv->ExceptionCheck()) { jniEnv->ExceptionDescribe(); jniEnv->ExceptionClear(); } - - if (val < 0) { - __android_log_print(ANDROID_LOG_ERROR, kJTag, "Error registering methods"); - } } bool QSerialPortPrivate::open(QIODevice::OpenMode mode) { rwMode = mode; - __android_log_print(ANDROID_LOG_INFO, kJTag, "Opening %s", systemLocation.toLatin1().data()); + qCDebug(AndroidSerialPortLog) << "Opening" << systemLocation.toLatin1().data(); - __android_log_print(ANDROID_LOG_INFO, kJTag, "Calling Java Open"); QAndroidJniObject jnameL = QAndroidJniObject::fromString(systemLocation); cleanJavaException(); deviceId = QAndroidJniObject::callStaticMethod( kJniClassName, "open", - "(Ljava/lang/String;I)I", + "(Landroid/content/Context;Ljava/lang/String;I)I", + QtAndroid::androidActivity().object(), jnameL.object(), (jint)this); cleanJavaException(); @@ -171,20 +197,11 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode) if (deviceId == BAD_PORT) { - __android_log_print(ANDROID_LOG_ERROR, kJTag, "Error opening %s", systemLocation.toLatin1().data()); + qWarning() << "Error opening %s" << systemLocation.toLatin1().data(); q_ptr->setError(QSerialPort::DeviceNotFoundError); return false; } - __android_log_print(ANDROID_LOG_INFO, kJTag, "Calling Java getDeviceHandle"); - cleanJavaException(); - descriptor = QAndroidJniObject::callStaticMethod( - kJniClassName, - "getDeviceHandle", - "(I)I", - deviceId); - cleanJavaException(); - if (rwMode == QIODevice::WriteOnly) stopReadThread(); @@ -196,7 +213,7 @@ void QSerialPortPrivate::close() if (deviceId == BAD_PORT) return; - __android_log_print(ANDROID_LOG_INFO, kJTag, "Closing %s", systemLocation.toLatin1().data()); + qCDebug(AndroidSerialPortLog) << "Closing" << systemLocation.toLatin1().data(); cleanJavaException(); jboolean resultL = QAndroidJniObject::callStaticMethod( kJniClassName, diff --git a/libs/qtandroidserialport/src/qserialport_android_p.h b/libs/qtandroidserialport/src/qserialport_android_p.h index c10c41cc4..4778774d2 100644 --- a/libs/qtandroidserialport/src/qserialport_android_p.h +++ b/libs/qtandroidserialport/src/qserialport_android_p.h @@ -49,6 +49,9 @@ #include #include +#include "QGCLoggingCategory.h" + +Q_DECLARE_LOGGING_CATEGORY(AndroidSerialPortLog) QT_BEGIN_NAMESPACE -- 2.22.0