From 54cd048fda087a1f9ae2070763e751d676d39e85 Mon Sep 17 00:00:00 2001 From: Dynamsoft-Henry <78675724+Dynamsoft-Henry@users.noreply.github.com> Date: Fri, 13 Feb 2026 10:19:22 +0800 Subject: [PATCH 01/73] Update programming-android.html --- .../programming-android.html | 154 +++++++++--------- 1 file changed, 73 insertions(+), 81 deletions(-) diff --git a/_includes/sidelist-programming/programming-android.html b/_includes/sidelist-programming/programming-android.html index ec88b20e..cf30afb1 100644 --- a/_includes/sidelist-programming/programming-android.html +++ b/_includes/sidelist-programming/programming-android.html @@ -1,70 +1,23 @@ -

Template Example
+
Barcode Scanner UI Components
+
| + | BarcodeScanner Single Mode | +BarcodeScanner Multi Mode | +BatchBarcodeScanner | +
|---|---|---|---|
| Dependencies | +DynamsoftBarcodeReaderBundle | +DynamsoftBarcodeReaderBundle | +DynamsoftBatchBarcodeReaderBundle | +
| Scan Ability | +Decodes at least one barcode available in the latest frame. | +Decodes all barcodes available in the latest frame. | +Decodes all barcodes available in the latest frame (TTL Overlap Mode) or decodes all barcodes available in the first frame (TTS Overlap Mode) or decodes all barcodes that appear during capture (Panorama Mode). |
+
| Result | +Always returns one barcode result. If more than one barcode is decoded, users are asked to select one. | +All decoded barcodes | +All decoded barcodes, plus a PanoramicImage that highlights all of them. | +
| Result Editor | +Not available | +Not available | +Supports the following operations 1. Extend the current result with all available image sources. 2. Manually add new results or edit existing results. 3. Save to history. 4. Export as files (.png, .csv, etc.). |
+

Auto Zoom
+
Barcode Scanner UI Components
+
Barcode Scanner UI Components
-

Auto Zoom
jvD`_~4MGSZ zD0C8pQ>Glct&DFy)7ARo=%m=r)F=xdCwQzFP2H*|ZJ($9yx={AMpzK8Pf})3CIwKw zGrug7q;C;9)k|m>MoLHV=nh$&+!tB@xrcq%di~4=%+k+XIU7eAl^4?#`zm%i0DK7} zhS{UDL4y0>fv4Tqj=>2dVulM<1+P-0K~#@Jm}9Qfl6kHWITLxeL8v!4ee~0I@gLdg z*OOK;4^Ae5?|zFTunyBm>cT?4i!!lA8U(S20WRe02fWap!)8|~JiNyH8M}@J#x$Uq zP(btc;>gJ!qcsn;tXj+ENm2T$(|}FXeG76<(1BWGt}c#Psf;|hK9Gvg(NkGBHMDSq zPH7P8^);1nP?>)4gS6f$am1yh7v)tOHmUz!}TaoM;+LNBG&|b2%lafx^ZS)mTSq=I+YnXZ-`%!qb6TToMO)`QVvAye_u6EkQrV{iHO0#4f=W6CpI20_}W160nJ0Y-CGP`xU&g za;a|FXd%6161}KDD032u zKSrMAnLeYypj-z<>WzrMYDT+cK9-EjyAPgNRxheQT&)zzbr)V7ihqQRBWtTmt%gJ_ z`OyXz{2T$ZqGK=LDF2i4T?IEYZ#yUkWIcnC 4q)@!^GX!Ga3MBiuCo)!jH zZJ_3!6PeOr;s7;g3Y<%#gt%E7@$!y5 {*QzCqY(?yrz5^cAC4EEN2{qf zSV;ixqGrg@Qc|h+jyeAfVBg?YTDVhL&-^P}8+@w1luZPE#5cJKay3IkIgLMfS_z>e zl9MvuCl1fEE&Wrvgz>&1J>`{GGbYfc39!}iAHz)_!_`Mu{P+8(z4YEl=~}lI8`@|S zrfQj!wTd!GRw6c bjA4R?VVO63f!~7$ z4W{iv{NYZGL89GQ)%%33%wq$4oM?x5sOg9fE)NqlsDV}rRoPEkDZ=}HT+4J!zmO*< z`VF)kf+h$htRY{Ns4Em&&hQX_%}%moKF*cS(U=_a?XkE2I_XE}(LG)1RTKnkGL<)J zM;)%xyXIQE$HI%nC>gwLoZzZA@pG|da3Vj;`~rtsm)GO$j|cg&9{!lvm!E}InC+qv zzpqL5*)_O7yT@yCtiO(ySlV!+qPFhxk`ME8SlH+O{>M;v=ZfZqW~O)L;6zoU9e7B= zb0v!D-FqTO+DpW*v?NVxG&AX(L0nvJZucg^COsH?R-tt&Bd&gMYcGGrN!N+Aj6ok+ z_N ss=bn1B#B`{8k<+1H{b^|Oh8^IUHfXX&zQEwRoJ9S-~cnaexSkw&P# zOhh+qO8UX{b KT}HQXg_pd$gb7wlyM;~M+)Y FnOjqm1>dG{^!_8+1oB9&zNS1#7)>>cLhClAP+C>U4$wecHpx`wk6d#lL+16RDk z*_5b?%kVEV+}%YzM40_O69h!B{>IC*F^IsenVWmE^o&}Lte!Hl&=h4M L!97RPYsC$eN|*m(uW@GXeuEAf>L8I8?S9&DHQHSdqM8d80hfc z#I!wS;0w}oZ&=Ch@Q`e=fSQ8pQ_wun+UegHhmh!SXzIJC`dtmfI#E&nDeYKDTCQY~ z^+tAOy%=rggksIeQ}In#EdJ~3TTD6M?|JWynEnuJT4mq#gycdbqZr_egl*MfkAG46 zQC9D=)AxJp_SyP3 2Gy`w5q!igUG-qC%tShV2)_j^^cB!p94% z-Me%U%_$1ZGjMU+PWRs)b)xp8a|MI+tY VG)vOi zkO1qqPD`%|LN1a~2OG)>>V)@X4w6#Z+wkypC|vs8JaRXCnSlyfICN$l1y6Cj)v}G~ z-WCO-52`wYGhaAYTS}1jO-@ZDv8)ku;C8kBmpM2ogjXkKc%D3q%*P7;l67D_D^Waj zHS+iXEF4}h`t0Kf?F{DStI_;s^jBjC
c1~ z1B8jv{!VaaOlFSAR?J1I&fusW29}`u7 CaN7gkxcle%Tw{Cp+3r+l!7oSF1z zc^h5A=({R%7@=95S$QN+gCL*GEi@=h`0mXp>vNQFw=Is;y}b7$RgMswH?AdvL5P2# z*P~@Ith4Ot1AnXnQ@jr&PXD6Zu&KOU=cdh8x973O#E_3c_~Zrbk1sQo)CbxLf8Dr` zb`{*gnv+S3^A!KGG!6Z$%HFMQ&@e!C0c~JBZyJ-ZVTE)Sb^LAw{9P9}F9z*Yp{1M$ zV@&L;x(M%mQ6E}}fa|$lq|Apna9;;T_F2Uuf~om0KX!#HZ|_477NPaDF0$s~J_gIr zhVg4Bu*!re1Eu@8Vp%C37S##_V<|MS5=hS&M3;y~47UQ3 R{dsVoQ`r%1;PQ&6d>=jx^y~|`fDcN zE*%Jwx1z9VH9twHy$L8_#)syZ$zgGKgE-YSYvm+P(|rJoQhNY?3E>>5Y!=t8UY^Vx?ry`f zSXw80)TWNlp0PP$`Q3+*_s54 d8brX>QZ1XUXul7tJ1zAt*Rk#I=o_Offyw%}jdX zMmm-UBZ3LAro-jl vhm;BDS3HLC-aPd+p+^!7wiT%u?7 zd?vcqJso+KpOuyqi)gSEq*tY*bpg?J6&qT?f@m=kD+U;d{l$1(afG0HJPX!fNCl$o z(et=2it(JTS3z|kX2dYZA{sam0y3a9vNSN$A)J(-kMG>PoEY>rM3cX{t(ITNJ*ovi zIt&TMD?%vrLXNDn%8t~RdqVcpEIWcuPl;`m60~!PBKMHS`?heEffq5jV(fTd;CmC! z^)ePF>XcLk8cyO3exQ52*%U4cNj y^($o6*HbzQ2px>6u(lP3mU;=v zxJdqGzH=RNdsMHgEjV8Q*t9 zTeeL8G`pR2up0rdcizBA={S#dj} K&F4BISNx4XMraXw%8PU}ZTaD4@&;fX6=j^OrIb^n TC$~$#qsgqxc>1;){ ziT4izu+dCg`}sRX?iUV69t~Y*ZP%%qBc1z@^GHB;8bmM7e^qQ_FyUPX1NDgr9|_9+ zfVJF9 Xp11o}QM8^EgLJ-0X0w;p>VYdf1w~BGRL3-T=g6(=0_i zHfHHM5I9{7c3dJSNS0Vb2e%T!ZR81uk#sk(UsmDT3Zq+yMjOOvk31&yCg$}Vo0Ql< z#7NRu(^qpDnq+`;>C+KXGh3lB lyAe`sHT>I#N-R#O-9bKzA)RkBHq|
OfCOg1Iz(yh6z@?dgwdsGx~)0+q^umbs1$U%*`cURda~|CO5PgfYH9ab1ny1v zSE6X~F>Bv%3-?#7RBhq)%+iXI*CK0LdHW5n*xkam`?l-leQMQcpXQ4G(V>OCTItsJ zmyET|rLH!j`@9*RF?`-$`hJgI8G4O*t|U8?^EPyV&{{4*(^89tpgeb0hh3Q-IZ7o@ z%QJ?@0h^4HCB*XcLZuB5RM#~_1%~(+C1l QVG#T%z5d1_0tqKaMMkN1crQ_}Ma}m7*D0vM5aM66&m*-yw@3+#(^R2= zwWaJ$wTH@*@OcqgfUi6Y=j+eli)(PMYC&*$QKT-ge4M0WL!7rA2H}fXdiralYHaQI zdt6iuhLuQE)jhOH-iU5`?B15ZY#ck!wm}*HhCDsW46kOsJQQ+c{{qPl3JB&{-1r5) z;&|R7Td8ZVoLd2 d}Zjny{qQQW1E=P|_v0xkz2z|FLQuh#U&AQ@SaTC$k_SP*j#K-!M&&@g+EcYE7 znu`spqvDO`+;34#oM_V~R#27Pg!kWq0ew#TAx2wsSs#1>&!EqaEd~3r;^sI7f$eow z>OBUz MU(nARQ G&VsT`U3o>>ksD6YqeG zBD1T>$~oGlZ8{cRBb|>k2$ZGQBjBbPMsT0VSJK9)8Y?^Do~BJ{>8KF~Ownd>CBqtS z+Vk{K^G&NHz>GU?8rw$;_9N4%Ntw{$hO0e6r767DtH&&CfD|aw`<)y?k^Zex(m}=< z!{4*OD*{kpK-T0ORjpk5w7vN4MgRHxv<4qMl-59J4GyW9ib!diib$*Lr8!?l&ihsP z^r}b>`8`JOLuWo}e*P{!{FM81@(}AD9TE*oc4i9o7HRIHHBLs}BWzorM$XK@-Lk@w z5An@^e5x_$_^1WDwZwI7Ik59YX>fO8JD7WTwQG5)iKjIN4*#+h_>Z@Btk-b5v<)2I z305Co`HD}eum(4a)EkbnINvvh&pD#tbn(gEwN{~_M8FOh1iS}16VHA^DLhFdhKC-E z15$!DQI;XP#AwgNKam52` l9Vqq YVm{#o5-Bx(q6 zTx|D$EZDecIr||}^s#>!)46AL?%wK^p`S}Kn$esItp?ZnP5uw!EWpR(5G!8|rcX}} zu7GY@UDB9&qo-=>v9~C2ZvvFzZDI+ycC=(m7x(bx?R~-~M9n_w%#{N
H7cIaQ^jORuzKjzug_fYq}WzLVPW zV^xSxi*u#4; @_aiuyor6X(RN>F^S9QFN6voN6oXe#uA=mH+m+$J-y`QyB38 zkX|CW1NfIr=ExJC?pGm9)r^RMBrmQzvY+M|=~Un7^DaGzLmL}jrAK&4hkrjfJKV%O zG22}leM-tUsv?|SI7Sx@qbxJA5pVVz+$0a(gLHa*T8^Qr@=x2lZu&X@)eDiY4iUV( z l>}a zhX_ONOP}y_S6&2@^oBgD>3YM99c{x^Zlzx1T!#p@!;-?SPrI Feu`}v zDj6KBD=gJ?Uu*^+cVAuVJ-ps2JpA)*K~|c~VBlmS&{&}{zb9*%hEIc6OKLw4%(nHH z4075N^%Q+BceXCwofahs!K{J$ihEaD*g93lm59HX;to^I-s@6*%6z}t$1^|jaMn|C zN)fKDgOG1NWto}zr!ulF%&nWM7{kmvty5zQ%%1^8PnUvJtiuq-fYdih^D6wmM_>K& zOlBod7>qH~2`TJ!su!4#tn ;ocoWKX9u~O+UGL1B4xX #-Le?8q7V=x$*tOk+KR-6J(q|%;Ny1b}Zr)ujT==XtqclCp>%UGH${xWvS4h z!aszx+;SM~DII!1Us2irR_G6N_p72DJ_e$4b#E9K&>jEq*|Z5*XE>)~;@In(q6UcY zMZDparFw_ ( A$C#+ET8iVz9|<_yQa{8lX@gl 8DoTCD-OU*U_FT4%qeHP`t;sYu)$Fm}MS3)vECTqud+$rp&DbS8Qgb4|D zOE&H3qSO%5C$E23(ZI5*1{KE!G& BkA{~=ASe2Zr=VKk#E%VVNW6J)) zu`9e8imF!AVp@}T=QZZE^zzt-F|F0XCM{FZ{l`~a3n83ck<$Tp0t#Le- PiZaAIXt6W__ zxsp^G`oeVx*ss^6hQZnFrceS;Wk&wN;58odn=Wrq{e3vfLxnl&ua%nMX8m16BObAM zw7S23>Aq=7Y1n9!U@t5-fV90<(^BL+v$SbQ`tDaiG+q%uM(Yp;2@CC|5zV2CvF_^Q znc+Fm;i`JTPOjP*Lm+d?l5`dOQ4x^to>}sJ#44*aJTOateC)87%gXowyEELPRl-9@ zlJ~ HV8$JO=7lx4 zIO7wlk03Qo12cjNAyy=v8_`a(dO0%v0j9TkfM4r3)&CTA-5yREiC88@Al$h9y$K+$ zr)o%Q0|Juy$YbuN7_Djkg=$)0r* TY~ngBbbW-PQs)zIJg#u1??#*#>AOoHvKZa+-1+#QdFme@0l7ZqPMdRQ+WjoK#!u z(nPc#Ja3ia?$5lyY;=JrPDwr}RZo8@bRO& 7~XfTg)5t(@eUVOy4i1#TQZNi3g zt0U+<*#p@3Y+AXNq2cmpqp_V$OV=xugQEIeJ0)dEHq|>CZ;=oS#s-)7s_Y0n?fiQ; zMrZxUFEC?R*$iaIeHO33&JOH$0jS9Xrr393-e#)e28Lz)2FohAK5@;)rFRtMhhBQ@ zljR7fcy13+$l2 SUs0Tb;|>LCbf=Si@%qQ{?3Ov>%JQF^Cwo zS@NFII#y7_tm{X|WOwx9Tw$7Do%ao4qCRJ_Gh%2Ubhe#?K(Xpr;3bYss!Rw4+fUzM z-*7K0nVgwDBqG5$_ld4!2MS4GzzQG!wsOM@PrbUtdPT%jgR7@vZGzx>- za<}i-N_QUWqm8P=jfqB+hYm5nO$vNHK=AmO;ti);hdDzv6zfr`hlfH+gMZ!@+=LIW z!Jd@~|N5+6h29h!!v$(F6Je*nIW%#)Uwa;oSQu^>c5sJ***0VHvuClavys+2T^7jF zdi|;r(~f2hQaRfFCAgb2Nl%8{=y9y9pL^4jcBRFXUH+w0hjMooiHotO1`IGF0Y z+Htrd0a2Z)n=*KF_CD+7^dP%CfRjPqM6!^j*OvEd=t-uHH8(A*wpYu9_eBx5dWnB3 zXO;|(xGygCw#n3eX)@G~U9k?IG{|Wp=su1P&318uM>AfzEdT}KVwl`M^TO)pT|kvP zy`hJDSbvk(i>4vnA`B~A#Rncu{q$O3(Bx8&F?>i~b}|ArI13!rH`>g2%w#+^;POqU zws&J+h89xP!?#dDddv;p12>n{#a=7Jb^<55h*=-4y{u)}N_x%Z#**Fq#>8j=CUz>! zn_a?Mk4u;Ft5>J4uh{8C7H8|4uUc@7MD?$PkFT!y1~Rf^+m}j`UQ0NG^r# mQSt; *jv5y9-i^UIVo-y*7|!Y_^+ zqwM9jst{oKyEUS9xbe|F;XL)l>YtB%$E>r+QEvcmzH9mChaI~#LT^jCq^*1sZzSu_ z#S0>?FjG2i+}uQOS(FKXr#~uWUHNg+n(l^g2x(`zPKYP4KEKoLj&kpUF?=5vWLn9y zQD-iY61OtXj;bM*styn;O5T@H9Am2N!VoXa;d<;?T_wTrE3slQ-k|P4)yIS)@*cT> z!OHW7N-f~D$*7>&-R$U(3kPMKd-}AY@WD6!{n6uOb*AXu>$7-v;0WUhTb34fAU;$( z4xAqP@R>7s{^hD*Y*AC139I=EJb2}&cnl)N2kuXiyoH+3R1KLnZ*$-=BQ%EZzkI5e z 5mih*3v6+}-JJM_U)?ycMd zd4@}oS=qY|zj|`V((^O(Leb$hlrpHyBNgf_ILh^_P1NeZxS_bzP)2zV<>>9g&Y1Bp zenQ`Kz9^o0Jg+uE*v4B>j}UJb`@AH!Gx}vMHEbavui0LuecH%*5~GX{2Q>C!FcVum zU)tQ$ypu-ZS9(7lWNd!CIs5ZHyV_3`{`R2*?bRvn+-_`|zrkGDVo&ohVZI?*G-Ywg zq3LqtbX94Zf9ML6qb4*R-8gMI`&5)isO7X4ns}9s#wScp%4aVt;p6@?Nw$%E>6qL9 zGZx);F~p>6 cW`(Ldq}Z&-ENbT%`K8$I@Ze!z#w zmE;8M)M}LJQz5YRAq}Bwk>X<)Fs!HE^atb)%{`ZV?PUCca)H%aC$& {8>qgZe7jHK(oJ(b8TF^R##P-WCbRVJ&Ayi@ z$-RT}Zyltm%`^{#!_p2o%^e8bkH46Y_Qub~uwFf9r$!cj(d<$?5yQIH^cVGfP__4Y zEwGfCrR3If )=~*55>@T z5xEP0-KW97o670_&sWQL0rm}O-Ue2_!%cMk_aWDC%Kq27dR?r6@^&&Q@%7EXW8Pt7 zPn4qj-6F}K_Be-2wE}f<%6U^8su=CW6 aRVKDS@= zmP^F8AZ(Dw#cf*f%sTdQ7~{y*eq$_4PIk5aV+~s3Xx=>SEl=^LJ914&w$sqGXDyeW z)Ltus|3D&4z*o}FMF;Ni3 `nPYU;#JwAb4&TS-3&hSOQDV zd?uB^%3hOPB)|~q6MHtaN5d4%OJN#fv{5;N =)aJ00u&W%Gq=G|b%v9jk4RK9)!x*fW*^ &p$=&uP5*PuXjozU;in660lsP5suUO+oR=UFJ~ zbk=M{$N8yVU3r3m_z{9B7t3#*Y%azkYAqm&*qyWq`{=3T>;-6R83YyW`ifj)w5A07 zmfY6|`!?(P73OWISH{J|kPB9}SQ%Tat%;Vh6ph+N3d_jhi74OWckpif1=1rFIl4+! zQ@ch;T_cGfEn~@k`D>5v0<9z6ZVHB-vb!26@hia)Xtbdk`?`B>ev^^;L4LnM>NYt+ zNzq waDKT}nCds~Inqy5}uyJ{e3qapZCp8pTHu!D7Oa7TFW7SFSXxMejkJI zW5h?AnTKCj?~w$ +GamW_G;GlS*=6=#~_7ik7C;8J@5FQqW33O?eGb0Bk~} zNK6<>`;WP?tvKb@*jW1}ffL0E Tvjr gX(uf9oP5Auw2xm?10L_ZQqlHB< zGdS~lt1fm}9P#HK&m%d4_{XD6ZDoRIN}b`8%hFA%eJa1*#No4W)of%DOsRy40zRL; z5$HR3ba>tNMEdu!a}`ROT!wWJfVf3d34L;wB2Cp_;#ZtPX)Lwplk129%AHg+36S zNxEXRb~A+NA3%s4t|6wU8~}<{h|xCu`+Bmt!6M-Pz#r 3=-kk?~^St993ic$IRKkz*GB04l-Z%$q=$+hOP!fm (yt+ggBs zk%vZGN^o7N%@=H}CB1$DLt b5P#a)A-W~`Y+0wcKXd_&XGiHa(>i{NZSzcPtG zl6F+MoS089^kxSr$Lc o0R_2ed!qx1#R^6w_9UjLaJ^FB78`Km2VPfEsNu z@_CO`Q84w>Y@v|>_FfX%FX^9mD21|BlNa05k~7_<7{N+K5LDsX_Dz|xAutjC*#Sn_ zDK^(=$tSC+hO=KX&UM0u7^CKHEqBSp=I@Kf3G#od1HjQ425^V)7{7EMu-nZ9RByK? zrAV^X1F}k~OvFrnLbk{oZ(OneyK&Jh@nl`Y6%RHnAK17NG@*~ER2lb&06|>F0h}vV zca!UOt5~3EqiZ}jm71};0LmCmsZyX6kuYZPYO~*J4KSZw5P6Lch$}h@^ckxy*B%_- zNy9m+F!e#sr7)^Vwa3GN`Di=OeyM|V>TO0+(XlyhSvkc>AZ6FPyf{+L&Eeg)`fY8q z-AFm{e$9Y>2N(3_di!K(;S6^2g)w@MoRHUB?){8@3^>V|40dXCxhKY8&lz~{*jPXM zNk{^~ct^JwRt#DyO|wq;5yBLH*w_^!RUBL3Rtj|tmWW~XcirZ ?1xQnU1)l<*P zR@F<1z-@3l=4N5A3YcJ4z}X9DSjL$YYP>_VuCCY9`uNNt6H8_%T{(93Wn;TX*Ctu# z)dA$;ul+iqR>XTlZa`yt?G7X`W8WTjz-42ibg9)duAWU8vD9jOcYpSfNk!R=dY1(4 zs*c=GcBA_q%B1*j?(Jaf5{( Fb{9gX6T%g76?-IxmPdkc} zvhWdMh`%D{Ro90-8tG@;eWpDVZ=q;sV2y!F)%aeM0AhjCPx?MFte2i2nrvM!top^E z^`5WYr2(Ma#qL+KO}^@MUvvsQ*CasfO+4o$wM{%uZ?I41oUR`ogmXOy^zP9af9^l% zWrwdrlqx)hz&p(vRv7mDxiPF(2D0Q=5&=kSX=7PK&fW73fK4_E$`qq*lqYQ9HrHqO zjVR2#v@Z?(l?t5#B&K?6;)HzS<5&bn%tmlZUyiWV3@*sm@^gnFD9FnCJ~!Lb3d)3B zz~v$T>NJviZdq9E{m4GkOBm<+whmjmE4Fb*`HUv}Mo`$ #Q7MgQ7om%kSfpkmoKy_c1%NgI00gpL(cR-x{P>Hlta5O!;paZoL>{DfD6yLaeD8 z5`7bt%-Edy0?qCB-7lfyzo1{30A`Z+#JV+=Vso=QjuI3nqM!b@0 @!J)2$b( 2uqPli;TB%;V` zSdS;Z+i5%4z$WAgvt84*N{leNJyU;-5yR3|s$cnAy8-Se0VpWaI3aJ|*SUB$#m5Lv zA>vm(KVa7Y4E(5UP1;bLGB#w>$h{s3{jUKg#Jl$Q(J#^6Tw;6c_3=XNGbQ#-bloh0 z#W~C;i_``R!L3PFj3(q&4BI1=z6-BO=nbI?w-h=w_=~?!94WK3`TI8S8q3V! !R=AH*#-!qT) zyEL>kuVQZCX3-FOi81qIdTy3?42b*w*xO@l<1m~&K{CKVtRJ277}&W2JJd^OY8RWZ z8`_vSJ(H=(2X6s4fccK_s~F8_oR1{K0vUyW@~oAOsx5BRT*7dw_D^!lx8N!`gBuAz zCeN)aKraE1l #=subY-iW`EY8v*(EiU{Wvv0q_aP`FG1^&1aAG;e zyW?+@Zx1ao#*zKb03nqD*1N^;odfdm?C*O&s5^GaJ~l;qgm=a4@a@f(XW^YgAIo 7U~=0+8b{{#(y)B2Y|eALG+<2!5auO#7fjyyr! zG>qjbA!!XxE&y^911lT$-2LCzwDf>fxkmR+S~A&fKf4_NLb?=)YXB|-xw8d-qVLig zfYs414u1+n9_|@E4Mo0*YYaFi69Q#S1BgT^e#&alzJ~glRHFg_PbFl*xI?a`YKSCI zi+D)(Yj`$%n;eKv@os(>W&I1v4m5KAe%@i{SACd4^7`>T=)g=m*aD~J#uzU3{#zVB zJpCir#F6n~)fLy*)9IBT(MkBT_ls1@&?XEkN{*oSbhZ98pM6`_X6NcBB0n+MDg`3L zP%}7e$Kh~sQ0F)lzJDbIFaJji)7&`0fNK>&E_9p+NydI(Rrx;7xUf3p`RBa6&cTOC zGmu3_z}ZS9w}6(Kwl3A`b~gn<|AoG+XtY#eUSyE87_HBKbl$h$6bK~OY7tgtKRo}( z(|EqKHrxkzc}TunRJ>a!V$R;@e9nngB;x$gLf?aOa!>QchrDU0Zz3|({VO7n%tG50 zz45gxMQgFVp79zjla0LTwK@y^AOXk_Y?D3@I!y`g7ywFX^K5Ldu55@sV_3)ix2--a zM$0$*DMkYj4!%nyMPUB|zR_f>hh!_eJ9sh&!2MIfZorulxT2RNTd!Q658TM)xG+=M zRox0vLEt0%hIB*I2vw(~9s$^1tZGP{aTJpP4U*vhVFutYB4o(nGO`oC VN!>FT;HLO~`qaJanxe>`-IBCRdcAt@AL5kFu5hF106MkXgm_-GLXH8W z@N=}sc4Mj8(xuWcrZu1nHy#1bO(M$|V<{ENHsw6`g-*#SLWr8GmB?*cqo<8Eoksg` z6*Y~VoA c**NeL>MW2TiYdobNxgt3VOI3 pNtboV`wwwk?QN%U$I7 mh)mS$XiG(~^$W-L*aKLxbQ+u$$TM!p6A=Z*Wp~ z9a~%#E>9H6h8$aYA50v1)+1Y<{!B(}skV#UgXMM}>}c;Z?FW)#!0O!DPJ1Cwa6Ryy zv@*VZe2pi8cgZTgS^z5fE--o#7`;Z`*k+uo6Uh1Ns|eWRaFOdJ{KEv4QCOeEXkvm8 zO`<)25Bx#>#|SXSXc4?@V*H8tkeDFQ;}VV37UyefiYx@>jX_{GfFzyQ6q>)3GHzo1 zLC215NXG-3d|xB*|Lenoc!cj7@@SpFlLKqBN^N;Pb2*P>l%D##ob-S1^LGH+F d{{pD%P@Z90Ubi#@M>o zqVVPKXbvzxred^=WU|V|W5qLn4C6zxG=CmY{jJxPt^b&>5INkSH-@!-)1OI`l?bqw zH_oEASu4g{7%9authdLuv@`<_VB@wNJGb8k47jd_VOg2O#gC=f2d_EzQvenVC^hN% z0yoxYC7CN1)8A=MJKmT0hc4h!*ME>j#1(fpU$`F7?|L6$LwbX-*!JwAetHhC;S={U z*>7wC^y^R!);#ih&uutUqw)}#9%?PMwL(oT?#}cv Ml20te_g~lkm`d&;$`g>!Rq7y`D9T%y!sUNt;O8g>AO&&p zgX;gz7)g6mMz%Q|R&DX`#71@F>VR9AeabtrFH-)ITD=KyS5oK3b7C(GOU>*n!JWL) zvt`FFZR{us<@{w~%Rf>&VFuUoxVL#rI%x)0Uwkce;~yc%u=Y&^z?nx {lqK|32q9`l8;y&Z#R&D^`o4CFkJ-@9S wC%Dv=DxG}$X-#Kw3|xr{zb7Y`Nxnknx36-XYuh~lh-$6`u_(Loq%I! zqdL9|xvQ<0ubM_(hosHbBE6G-T>yiisI8J)HpqUY=b?Fv{sD3M&n^;Mm&0UV@6<>U z$tD5?y%ECl+RZP1 0gGVWGa#-U#D-kl#57)MUBqWHe=_yz!Z zj6uBR@Z-jl8rx|acybG>c7U70xBHh55WE02n+T|#=id?+X#a2qPLg{G$XYL@ht*|s z%dtDY3R#h#NSeFWzUF#<&0w+%!z%x6MEDaN5u?F=pKV|pk~VS#(r;^$Sqst3J_E=8 z&gcfW$bNC99zN0Y0+8B1Az8yOYP72E_b_uXSn;1Joe$z%+s^FWL3 @7_yu8pE dfdRIJn(x5(Rga%m;0Aj}oh~4EUHo2GW9Vuyq`r46;{v;qvE~^84#|#O%1c ;-Qwedwy83h954@^@pokC@0N!2u(@nA?Urz#J{Fl%2_R}=qfI9Rp!zkMW zdni>`7<*qKY=N#+rhTv6@A*uXamDc)CyQX3#BFL`4KA@c3G3RD`MBMVKdK6M*`H@5 z04)D+L{#SmOb}k4W01t5(5!eMec6zrjLQK2{W1IG8UO i-0D1-*et`_Gx?X=XqcN7h(L=YZ zZ0-O6pd4~+`Hk{j#twXC`B$4t;T;)2^b!oW%r6H!Tj32m zAwbbQiOt_Leu(-Tx_S*Z#eZz2XWwaW?r_U*=;W#|jc0HxAZ1xug2P=ZeER#?DU$8; zICfDq_5{En6FLM&AOyl_zhtRpS)LH&A?fL87!xJc72UaJw7583sln9<6;ISQFh_&4 zTetN7=I+H7H#Rk()9=j12S~b~ON!!sNKn%cd{OvE7W6bBs!cYUypc zw2M(L)3XV}`gOH178hS8pax>w11fN;4Z^OZcOuKGK6eceTxn@*>N;3OY6yy4yv*i} ziCX*9BdUVE0{@oOS9L&P8XCHy0AXu?#lfmz|JH;)Vy&+*FeqE<0`p~agxwVe;B9(1 zjmO?t-I}n_U*{(b7F8%mnwBd^nYI)cw60Q{U>Ylnf>at*$=2l-_$ZoY-#Tb(hh?5n ztcx^l9VC6qG{XlEbdXp!b0QbcXhUFl02|b)Ta;Kd%*`|-puiR6gY)pxNvWn3-q7Qx zQaaRbBqYh06_l5++LJ|rxw?hP!r&Ymadky poZK>BJZO!9X6kOjO?6s8$W3k^Vb9TZ2f%&mk4F4F1AHsSkMlXoRS>HLwJ4oF>t zuPHJS?aRKzby0q0Fvw$7)v-et+_WXctz^+tU;6~O`$4Ysd{slgM#4Rm-u80nDO6yi zcuRAb^OD)`r%>Tqg`~{)kyyZ1fM75#=v^CPRdsS_9vq6ihFBN#>bcQ}^$kPn0jquw zU0$BYZ+%heq9h9X^?2HgZFqxq=0B`|y1cE8b2>#crR`Msl}D@FY#67)yH|E^ZOWKn zJwNeTi$%6P{V7nMVV2;5HVXx>7!OK*qz6S@7wDkf|Ew_5n;yG}F$m`Xr+s0BHzhyf z8a+Se8ZAE}U|@wEq2;KZsbzJ`8@ps}mi8WYaBeC(Fxx&O_>z%jgO5W&w`o~Mstbem zdE^d^gTKRKoYjkL`B_i20-g|ttL;tDiXMMX;^67Ri;e{iU9k&e$kw0B_y@C6Cy+4` z@X4QaQI1{y{*U5*tBC|5+1d+N`zg)RM&uyLmr6alI}VV>GB}f#34c`U&(yo1SG9M0 zITY-d#WFXGTYM0_qSJ&o!+N6bz-uQ6$x>$mJt2JjGd!G`LgIW}6_dbnHDs|Sl$f%i zNh27+&k#oNF*Iv1naU1F)(2OxI1ftlIIl}I7^^dc6(gE``w&{;!U{yskRL5SG#WI^ zph5V|du?t?BFsjVeMec8y8*n08iyi2%PfVPHliokrgoyqZfmQR6xo2tV@kYlzV9|$ zT_hfoU8%ATMov&6KWH#4U8ES8i-s=(={0r!`5@V^Z}S#0L^+C)Ko5`Gi5dW_?%38R zFFf^^&Y~cPBqJbxA(42%J8l*AlF`S)6_A3rm!KLNT;H>8TWCz<(CB9VOHQ3xO(a z4)(kcnjE#rnJQEXZ`xBy^vvM1_fb>>E} 18`>YZg}{sX-m$HA!O?xdcvI5j=Y2F1-%GE^IEoR zT+esm(__jl56d9?vI-j5u?soM%7vlt^Ub}cIxU5_s#J6L79iB(J~NXmoC?C5Tq7pd zh0oO{w?>R;Z;9^j)@ZZ79CS!NI>lWVUNZM=u5@+A$@xdC(W>>Mw_-jXO>QkQ+K9dg z37=jUE_m-^Xl6e3sf5F@Z}Q??Sdf8#R%YezLzCt|zu&+i*gNF97+LxS)qcJyjpaTp z%W*M+c?MZVwDiV~&r?~3upn)2{k2D88GeWpTIP^VDKrn#) mEYeHTXhG~V$Z3zRi X0j(RnCeFS3KRRleqf#J5nE@NS$M{_;l8QK1ARsq<|A-?AH`+-ds_8BxA z&YxAPd3$+XHk=s~iu-VlWkixDJ1ie^APY3QYuMspB+va?PeM3GTCfQzn~vwWj#R#y z>@c$v HV=F#N|$k7&YeQ$v>kdNt;yVEnDChP`JvmO;7b%2?Bn~C zEo#JYwDs)awqMkYMA %gKoV!9yaW^{Tp^fY~Ea+aX)`LTn=Wo|aKP7U6_RamF zZx4r$JXD&j lE^U+c z+4|toDl9ChFkbqrfamX+J>rUdZ6T_=!>R2m@-0Myck8(sd6RXrn=!IEN~-_|vzm`h zl*GNRA85YASphBdg-6pv1rPEvR4sksarFIyzw$D2vih&}*3X`ywAu%0N+f+yt?Gu^ zGkV{XM>;;e9dr^&UuIcyZpJWM#}eATGSu!(D$}#G*(J*E6k2$%;ZyMf5faf`Ki@%V zOWzWH|ef;L$_V#gvxS!H0a|A&sj9H#8h_C+ntf#xz8O|J7?`>_+E}^lfF$&QnKR zqb@%q;jH~8h{E~z)3Tb$TrW;em!?U3jqqmYgbg#x39?$qr(;25#Llhap2eC6#rNnA zcONpFy%{t9Go|&ck#+0h-LrZXj#d%97K0xT3znM+4XwS& u7VeAS0u+Oyp<{DPu`F2%t5x^6QXp5d9-ACUI_E8CFjE(Wa}F}QEsXO zZ@;=W%T!&n&v- 3O?_)r#plv|A7O6~FOOfL@>DtrUkLVC zFdDRU@hy@>RZ7(H=Ns6@$-= 9yC z&VNoouH+jdBLhQrPK<}E=J~h7u41j_HML_8hB#-kG@R911)%H%6lC z0Ihb9Nva*fAaaRVb6RhBYYt~sSAkDqNFS4v(p3;x7$>de_;nTd7luk>I62V5;0faN z5ka|~n@6E^RL~Nx9o`Vr=4H6AowRU7aKpuLpHcnr_kss5MhA= zAY{9&J zi^xLuo4~T#{VF^`?8CVim2Zrz8!{G*!;GpMI1{v1|H;ksBoW-RVX}X3i^zKLM?syQ zYf!>K3VNUQ{AasdNE{%)O)i@GLD1+}`&vRhi#re;-J{zobwvIhGepM{8WuKpsm5_S zId+rCzZW_XZa%W+DjY%9RE0H0(PCdLu-a>z7a1dP|Ng~Z{}xtZR7DI+fHet5%3g5z zMm3E3p+CBEqUxt&x$Kz12u_)Mbj8A$IvgRJNDbbHn%n`+En1kc%ZVb*c5wQPh;Jml zdxK1@MSr@qBH?qJ1Zem0ss%kZ@~Pri-a;Ap6*DR7^X(T&(I(`n#A+ARbh37E!q^=8 zAbEC?lH)GJuqwziNt8S_Hj20~r7^h=vU#xs%J!3XyG$697oii{^CgM6qWMZ>i(Uc` z&LuDA-I4X6%NB4+37>-dy`=N#J})a7bY fcCsdxK2n13qYiti>MUBa=n3y`@B>x>t+z$f7mzuOb-LsIEB Og^z|5y z3cyp=mbs#^F*6Y(xq5C$Ld@$ zWe#BM@D2zb**oTH7@D`bq6Ymqb*mk~nhguWnvXoHm6VroK04dAK167msuxARca5I8 zZzk?O3^vtLPFkb5WplDHcSEu;yF^)(t*ac_GN|MtG+$H_N4Ch~ku41*mXQ6_66WID zF3gBP__G3ngPf~B8{bQB9hkW*fo3YE47a~A)QmBdZRP3^IYMj5l*)IC3F;ij=JZ!} znjot$w8F&^Q>A1j7t8P~{;irlf7#nIT8jB|uO4oL%|!HR_QRoeQH<8 D|`G)mAh8JhI6lUxFyF8`ypF(9aZZWpT~2?>0k|aU?Z@WUPZMNX;RLj ziCQ)nEb2jrxWCs bZ7&T^Dn!0t91T~?&1*OF2(l90uN}6SzFj*fvEeWT zsy(=Bw|!HUBWiKIE0SA=UZ`ug%?fX!$y*<2JGBqpcvWxr4j)a6$^$&u@v?11)dqYJ zw8-RfK%z!ce{@?ycw)4003o*4vFVflMa^MxKlAwDu+dqjRu7Ic47 JjaFAvYp@m%WSWWJ zXG*1Oheg9J7!8JrY7P6bN_di_jn6(%=3Kp!oQf24K2M20%CM@I4b{P5U7c75ZNU^Y zNTUX)E}*6+Uq`Yv@1pcfyLdZ%ka~Ba{=(K$*AthuY^xycCEPmQF67tz-%)Kq`*bOI z$7wZ_*6A9e-8-#cnqFyrzcOm|ra1jNiGKAEE0FP~^Ho ~0YkQ!id)J@t *;AVQCIIr`u #DpbEH0{t_zHcr^K$7Cl-dZTH}!CEsZg%yqwNrOL0W!Z2r@>{)=MQ_Swh^=PvKU zOEJAxY`|dPQd;d#FX#7Y#`Tec7|D$llW>SiaM{5vMnU@^!COdf_>+kdn+%4gkj{EU zcu>3~!qvI*T_pPj{wjF_&R22MFh69qvq9L5#a85<7YRa8XhIgR2yWDkV046 $ySV6#x33cTET6S~;Xx=?d=La;1(o!xk{OUgvGu`>3(%Fqm8#8~ zyTP$9yFa(r^HFeYWS=q_q48A1H{6FFP#yr-E0UNO`FW=%P4n}f?rmg8EbNi1*5JZM zZoeY0aWRg?C< z9mquK+C}M1yV0WK!m_7=cJAF!Ck~|rF0*r&PA0oUoshoa5v^C1;?Khel#TFrMBinp zX>8VaLCx31-A<7<{lc9R4~F H6>6Y$gLi4wd!FkL*pq=v zhFC!BO%py(oqD)lHw?$`jG(*oS(D1FOB1AeKXT9HFn3DDYl!lB;kr;fr&2}eFFF^5 zCRAQ#EVd0kJl4o6PnVT>eL^}D&eJE= R ztJ6wwvGF=W2J~cb{Mp^W(Evv^md`1>+o2a!i|%;ZF5KP{zZw>!^o%u9LP@4sT(nzY zl0>gmOeFmkCFdKm=C4I{-;SwJYisLSc()&FaTc}+pQztI-=Bf7K8}dCjxdW%qE{i} zhZ(V?N>&(=)IU(jn8`mh567Z1i7P95T*jHKvD&$x#1l4gD=GQm1`p!fwC-G;zaHlL zE{y2)nw5ZA8w3(AfNsKbYrHPvUh{sQPE4HX9> J!USX3H zFFVgy4UZLF&np;D{~KgB|6- {N32ZKE878NEKaL4(UQamclzKK*9zxh>1LnJGo2HcM;OY zmZ{xy$#`XOsIM!9N+>-_XyVSxx`S9^Yc=_@peefP*(F~;1-Nln^DBi3%sn@ii}z0N zLS#m{c(HLVJ8Js6x-F#QC>qlvbjrPZh9t=%$fW~jqQmCnC+qSfB8wVE+m5r;`ZhZ_ zHAD%XvDJ!bi~Z7k;6T0PT<6I cCWDkk~u9-EUP=RUE|#>}5@ zgNxmj+hY*t1Aj^qd1h?MkwwP^UkXCi#`}78sQo5KimK!!u^E0% OAJ=0NkzEeA90cXW#9=Wc{kOEPE%$686svZ;lv0 zR$4~i4v0sdk#xpGd%o~U{b(1t_V0p^#5aAT7ot4V+FVH|RSdFJmz}I)fP};m^(?9( zfz+db)+hpc+w)SGuiLKFUR&moYb)e^WbFj*_|~ss1P6RhwgE3K(_VR5DaZ(OAO&9j zS25o%^{l D7$UO1iW=g?Hi6KQ3F#1T4Gzo-DO)o6~>S$2DS~{! B%;VI z_E;NXyPml)?l&0rHGeISiY*5h*n#vc-2b~Tk2-iO@9e*RlZs`(c(GL{Ya8BcC2O0F zrM6*dEV)!$^snI3;tsss|39Bx0eR^=Kw$N6sW)}^c<8e_TOrj0a6C{NWA+4d49fa( zk13W*R=owJ{|u+EXJ|7If!NK;jp-^)3q;>VF6l8=`Irvu@*!)5F{Z9%cHgo!HN=9t zE<2Y@Z9aAlWBCE;puF-jQISS?-`v*JR0orux|BuK>380n_};JtzB0ey@M+4qp@4Ex z;`?6$l6`bpe-IP~ckvh?7WL_*{a$7A!+7>pO&txE|2-;0G2&@IV$$!a+%PZQ0*VnX zMY G?B`c_4t_bIm)sC+5lUSJ)Y8`N~&$#Y;J$pt5HbmCe0Qg@2zo(0Ur}bQJJHYp@g= zKFeBv@iw}CcnV}lJq3UiP%}jm?C-u{TXl5RC3mfQ0l-E(eY>J~Io5bRfY=?@GRc C+m*1Ri z56+E^Ys%TYs@ELc>MZ&T5G+wqy=aHdykl$k-b%f)J%oEsIpU;c#@GB- 4O`vL4?p%u67*_UQ;&zeB4je3iheLN(MgZFx|^IOrV8x-X%n zDr&}K-Dqt?n=4!oLtRXI!M^o15l +~*vE;rX(0dR_3;75V~{QwtNAU@ z)w{N?RF$&_%e`{gb-V6$m;Zh|% -U26sC^!5Swa779vI%$&E(d|IbHht z9T#o|xE}vsYk1hAY)ek&uF4~znp^&7HPwAJY-v5Q6XCZiKrI3lMhZl*BE4((v9?|U zHwBN)TKRRcw#!`olt}1Vt)v{ ElUYGXA+~%8VpUM>-roe?_ zhF>qPd956}l=H2~JEVqrnuI<6q3xW)8wJH$72Q^4qsg%u}6! zZblhWweo^u>?yJky=y~+E3e &T%Aukymi}!rPL2I{1k>%O9<*jgRINy#;v#4 zE(x@JtymTG-z99c!auDGz*N}ST3Z7Q (Bqlzw@N zalE n{U7$8S~qKfSwfD_pdH#KH1p-#d$0i**`` znE#hD{Wq_ tX8&R@!M2E3||vo_E){ XJN4=GP zx<7<5_|CHR?MqrrM4IX2|`P)`F^9+x_>~*kH!6X*D zKD>BB!QK_}4Ew3m$vv=NNT|+HhQyslfB!7x+9CYVcLkpoF9A3m_HgfjW_quWm$Qva zaB>V_thJ3q#>}@j6hodgDMXbf>IH49q9*$-e>^Geos{-Zj{Vy5N1ZO~)MN&1Vp9e8 zV3(^&rNMY^R!F<0sM}A@2$o)$74a1`fo`SZ31WNP2#np~sC4%RHDeQ4ZFFExTI&uu zrtmPau$D$D0ZkgUfz3zB=iGCO=DSz7lBGBZwD~|)Q7@D42o%67EH~!<8DMFd;#O_h z4+sYt1WQ+M)XbftGza=of-M=o^LISJ+JHsxS8wI ;dzfv!15Ro KGO26y-(#WNxUv;@PqgLZg^^^5ATXjCYth)>|0(2cX;zZq yG_Apr>QcW^OI2r)J)| zH>P0K%D%WVieTn%q5fRP90lZTtwQt<)o@wF d}&6(+l^BHhr>Kxu}$&~ zN*U&7+C;!}eJ7rN7$f?KK3?m*k^1yVMf)XM_(ag|MKz`BlZLN-3VJ2OYRjsz3OYfv zEy{ID7_I$a@q%eGXUw+hmDBUYl?$T%}y zEf>3}Oc&)ZTxJV4kGr_cxwn@LF9rY%A6Obsc KpVm~mjOM TRp9F@%Ej{fT8d z?F-d^2||P8J_a9eNj>wbZ{xF34Tu-rUk6`hb-OuT9qIKqv1R+lcl67Vm%NE4+{KA) zs-kAQ+80IERv1z*Ku=|+1c*L8?uzL+3G(GtmGhIq92pBc5cnyQ^CqJ9?Vka!jy~@# zc&!#F- G6>Z!b% zf|yXZpcx&PprMfo8~*nn #ae7Y6LqqS>{NZTeu*6Fa e>Hrl_^Y{6y(=0wuUH4TLcKGpTs+{$=^ z-wK)6K~xN%{od{O6CUq0bRcn4hb?Q4>Rh %>Mj?Y(+KP|_x7{-wJ)L&|=Qp8h`%{%upr0C)(ft+e*wcZW>f9U$} zmz)i+z>-9IHcnw(fqTOu_B8>=%Z`6FA=oV_6jk+(gS`G!-T!{O@;+efx%x3F)HTaC za+;d?J2-7sfing$t+_(x@zdx#0iPn5@Gz9`?IJfdo^p=zHu}p)2euK=XY+P$$A_P1 z9sWKxJh1Me4J;J)4V?w TNHU@gL9x;-*Ic4?P 1pF!oabF=$IL*;w@r zzp@KNGIW&Zej%+X#%IKmh*v;fdY}o=Z~1kDE^Iw2H9+5WDCs*lhDYA9-itK34gISN z0rmu*bXo^l-fv33=6To~x($dDZKC<85d0KpG>@2V_>ys-A9mm= jA*>u-i5g@Dwd1Rk|w5Qf$dH)ph=(6yTZ%xwTLb z;$O)+pg5^Ls|Rd3S|?lWz1!(KbzlUQt_#GdsMLk*O-zu5Z;%0KsSYTN$LBvvI`zah za)ZJb@&o8GP)+Cmtmf4Kjq&K$0A%{lkJDFNRtIoNpxEKQ1iA#|D&ba4F07D!1SptoKQ^R>9n=ATji6FoCN~ATO4i1T`12f}% zJqQV#oT8DW5W!Hm;vU6rKH_z~`zRoByaUe3%E2*nLIpj^OR&O%raG|kmK(^mJpi0i z5mT8?!3rnFvbg`-%Lw!?& Q>FSX3(t@sTkmo!#4l@?Hp*D?kB4{o1}?$mK%Wk`#=YT-1y$R)T9 zAavh}4+r-JiQfR5zT~!8%3m( z$LDh9VtZff}#}E{W2TD28AI_s;;7bA+t{@i92tJEj6_NlsUI z#S~ZrFuB`C0$B6Hc!aQ%l7rJWRgi%woDdtBwScq49tab3F`Xa?K+RvHaPk1O0#JqO zu?1*pCI8JJJ-(C6dx|zWqjpD;(Eh(%_&|H7A^~0D?ZEEGvplZ0ls?gQDaDQCT<#eD zP<+t->;tIGFV%0{uXF4e@Ohpog*cbhon#8 UH(-VEk!F_T=}JaV1}5!wB4+RFCfg7I>bZ( zF6g+_ tafC%I`T*RAIgVQR4RuV>f%)Eh8E69@Rkz}iPYL!o;Ew?V z$Z*_3LEF7_6gR~b>{XN&)a)E=wDg!azI5ggXuOM&$OTGng5kI4U+U%m`GMzQ9T$cA z18p5}nmh#<$xzk?=AGdCF3+i%{2>jjd#-R3AU2r`UrL~Vzh*V?d~( DQx&+Xrl+6u?3KB5EuBT z%c|6Z!Oaws-Ajg52T&HR!O2Tx0SZ^3qOl5qcQ;VLDptVAmpxKdSknn_z$J!YNg^LD z`Ne<}Z^`(^0BXRLtTn#m02}{$%ifEpDf%$!HBjt&CO}Sn@iBhw1w-F|-k1XVl=;sa zhXOFlzi+JX=}oI?i0v6=y`W}x(~~d<`*alOlP9IiizAH(w&S4;J(W*p^cP?@cfo~A zxqW{Rng%Ea_ fK{nu6RC0>trvrejC&kd(=2kgYiwgyJgA1M>Gt(baDtP|58-sobU$EAyCQk$DCv( z0cjfG(MJ2~z}C0>-1A!jm<~109JvUSQ#bB-^5Rb8C^c0vmvYGKetRCAbWXMZ<0F+U z>o*}ed%C%Ln>OQ~$BN%ndw#?BAM@A00nClwiBS)a(Q(P!m=bIDbd#aY3Z%v=VdM1G zgMk{~Kn F*Cp#SRItA#E;vV=rT_#;%bx>wD!MKWJ=y7LE{yV+%rkcI7J@B-&^G+! z0UQf}`cB3_jN5jNuTfamvOf=dmmJ(1y=2g!&+dKvB3h%sq8{_V08rSVZ{y~k?|u9g zr3oBP>5TG$9e6P8fcM_%H?Z_8rZM0u(Wr2KWxv$0opkKqUsw2ST>$0+$o@_NW!!hg zqz>5eoEQe5(?OL?=hRXzWw8@ty|!o5F8X^@)_9qnS|xnz_m$r2O9hnXo^ziwj#r$~ zLFRtlAb`nBQ5aafw9ayhy-Lf?_5brLDroz!W^twU$Nr-kfWEOkfbmn$KfeV4(@Vyq z_!f|NdOG56yQ(3jD1~=oV@g0p;RXEapP69+_s%#fw4z3JfGW}cIb+ZLRo_>?1=cuX z-TI=l5M=9JoOHApDSez+nx-h=x4WiSt^%zL`iaP59ir9OonlGE8C{kdOos>uQNORd z6^)A2EldaNsa~(xo(CCu=OSzu1s!PhdkTm<7=^lPnO79Cm33q7b_z;m){+woP}2<^ zm+rLfK=VqKTs{hl#;*oX`4XuIW}g?haL1;1G`>4zK3?@bIW1M2xp)fwmP-#m!`Da| z#vju`K83mwU1Oa!z6Rz@Ig6uUtU5_uHJ(SUJ%a%Xd9YS6R4J$M6OWc+1PZ!1Fot&G z%ba5ufQRL41ZBSy@Hb8qy03wqF`%zJsBew2{K}|g%BhQDmzweGm0k@60{#iWbQ8Jc zI4v;&on@rA@oc}vqeSC3^-wLst2%%kU2dn0aLZKfx)m!;eU!D=w+C;ksnC&G@&%gu zp72I@ask%vC>S(tUobwlroMGn66%cK_`GW-mB8JS(gqg0rn`ZUvWm->?qazU 6nVXM{E0IF9Bt;=SQszT@Q^#V{M>ntM-%D2=IU#rPdIu=E|LG86UrTPV3|2 z=GSnevfu)Y7Tv&xN$tPHdhQOrAl4P{ 0`M?Pzz(XD zegY6w8q~dHoawzgvBhiEk0kvn!ec5NvNH05w KTM=;)`ZE)MN`b(QpNj>StPK>WmbPDj z>(b$zBVaHph}l*7`I@!;-{;c m zt%j4@e9AX6@#*)>Z|H6-P-n^nOAGEk#~ )B^!Bjr^Z=zt1sQ^1t-bA$(Q(=g#9 z`SBT2_unUD`vt9nBC&-)GGfWL5H}!lOdPGfp7HHnfm6-#gm #C(OS!;%`xOcuGfhhO!>T4wlZ z%1L0=kLh8-*IGXO!LER^FKfq6Z4+D 4kF7YQKHElcQK%NHf$Kxf#vtZcb}MjrvW=kvivjmXXYY0J^dha z=biC^0>EeVyg)5(K#4Q(DzW5Q?NA1+r68)`EcT?~&+|Nl^;5e<&57C(ZK6tiAH>MX zJw9S8-`3kD=cqSL_!qyVI-TVkwkBaZ)xDh0e$*bvF^MD $W$%{|P9~@mi3wC-p zpr+MP#YLA6-Qt-&^4bYT&PTsfKyhN(j_2gLsYZ^v_0(!#|8P3oTt|e;#3=*$3bN3j zY-+v{4umIG?!VY{aXWXO`T^_YEitC=c|bHtN#*J9I5xZ`&}^^4wmK&JnY*L5wWpGJ zw`1(g=pUV;g?41&LMJ-DMbj$!N{DYA8>+#L7poPXbZn<|1)U8h%?Wp1z3MIMS}Y~+ z=Izd${cycSz~ zSWU@9dG1mmKqLaHL?wLAryjRLT{d|z8P%k!$8v8Lzj2>GDj<{Q0y)&dM&YTavG4?M z);=8Itt+=u9goDo=d;p_7NI!P$pw_GG-kBD0b8`E)ke+ITUE>az>mCgsZrKn^-_Lt zdz|(MK)nuJd4uW+gX%oOQ$-xWa)nmRMOQ5oumJq+KwEL~NmvL?Lu2>@MkJLW`8hl; zww575TWb|{#K^_$;N+?<9lKJ@1NrXTJ>}@-QSDrc*SH_!;YpWFH#;mYK%;ieXSpCM zp~p2^wu19%wUKd_>$OTVZkmZ50{3~%+|OlLfR&mv71z7c4Jr*pEGuzK6>n;0eqp2# zA(OGi>{d1TdoDjZMtruA&MF3+m>1*Me5^ ~ zVGLNqow$S-Zt76?+MNqP=cPR#=Yn!pgJuW|CgVn$ -14EvLt zE$0 jiybvas0CVUR>SN=54R^ryxT!0 zz)}zHHF|gX#PPR>qi9~*CUwVL3|*r8!wdaol6F~(wz5LJN-K$)v6sbxkVhan#K}5V z0vXvABwl$o$_eA59bUCCtR`D67<6B_y-+4+qb?^%*^;^iyU7JR4zH@s*hM2x_*=oN z=tPu9;X)ds+aqgoE^-$5s@5}4D<^n&{me3a{+ZpObNI9SWu58WU2X92)`KOdZ}0j@ z`3uA{&PP>LH)W?ye$QzH4*OjJJMNa9I{Uo P*)Yw;3c8WzOzs zc{#$;|FTw<4$IvaYJ`%lPkYSTV}wTu5h#XXl|Bx>QoX5i`f{itO WI&SOhB zqp`8o+A@Kx;f|k{S=jb*;hcIq3lErBI8E@wr`qTS`O3vBKtu-{(%qrGANXp+l; zv(_oUp%IkyHP9^yn{Jvnm71?Xn2l c%J2v}ts<=<)ciUz)};(*vV~ z`zKF^t}&w_yWFC398rt(4MPiv<~fZ8S8rPQ`b`rttA>e_4anL2U5LYd*94_w&Ghdk zDAi5R<@u=r)tct7cjSLAe@0$25n4@}4Sx(oM)Yy1=U1IYo<7qaM3cCc%O&mdxMx8i(;(E bxh-&BRhpipI8ZLd&mE(_VXx@``C%=wojPy%Mo&9Ntg|w=~ z{EGDAM{C4m3eF|R4sg`Z-Ltp-9P7U-Af`8d-)&bN9c%eZ5xGq=RwPN0x+^U(`KwcS zMLY59T!!V-V_kW;IO2TYZr6ZCg!$7?hUD9{{nvWyM&EmKi#DTI1O()+cQ?*BX|z#y z{h671+q?4m)BrP=(d08fhB^PfTGVX;;&IFwyHx! 36j-ylIh#DW{n9r@F1Q=02>*#3A>d9yd?3mnZEfQ|RpU`pcFvC$JxkiEO zk? |OnmaFn2VbA5-qyr-*0T{fiNvKf)@DIdIz z+SM=b7cp-q^oJMu%P2)MH9-McvR6QsjmX=zH6UVZ>#K>*H_kYk(7>UmfB9Jd4__J# z?Dd&FrcwQ&WzO7+Q@yEilWp1pd{zRQR8h3xZ!-OB?#zoZYQ|==t9M_yXz@anANAPh z-_lK~!#byxD``jHHNR;5qeAu5o|-CJY%Wk7LA1K9rQt_kZs LQ5!`4NdAnBPnK3E`h-#U;Zfe3P#QH ~AX86)LHPWGe{%E25 z0dNvJ^ZKma#lo; |#Wf?=a{_g`dm)S{zMU33N=dpBkvPi;;An%ah-1~C}IazVSi zOp8O7yh81F%CGCqz?J2cr3RE`sGY%`RWK`$-GC XvnlHTs#?d)thGg_F0&7nhP{a8m%w smq;++FKIOt%x^$1Ud~mNtNAmU%1yYr;Fcf zKK)5OCZQw1#TyVYh+Bf=7NISAR gISwt>@Aii z%lT@pL)zktFf8fZ-%Z0hK*4zCeA{UhpN#5^`{ZODBpYm( #R`G!NcN9Hsj5#=xtBs6k##_O;K4bw3uBeJlyOg}(_ zZIo#Kd%*IeN%ZC$eFaBPoyTs_cHe6uiSc<;FG0e64eJMhHsp<96qhB$2`efLkjEJD zf7cXVD4c1glq22jqiY-uuWfsfoKvcrQ+L-dtJc-FpH2ie;?KD1WQ7KEzQ{v)gv>Id|vZ{ z96u98RBt>Q$?)0c+@#~8W6UKa-jJ-@F5kOVyu*hH3_U{)1(%uL?!G78U1?Obj6VgO zYsI{x;kG)x7pb4ScWg_r<@(G759&cy;Jk9E%@}jdK#OBZbOwkqnC(IhMBu8#Y^|vo zG}c0vO|fXUn187x+!9!udGSbCkK`D}a?KG^{rS%C=r?zRj0;!m!G66oS!G8dQfOw1 zMa}5RG8Y=U5^yRZmT6~oU~`REX7Rw|1>%sW`o`6v7gZ(iH}>`E^lC^y^9B*tV&>>n zB{z1s*4dVTn!Ji~mT> aFY4V%|VmhsZN_%OV+`Jk+x^9C3)E z5NsSk@08P5#QQ`qG#+u6>4NqML1an&=A$-ZD6@PnJ_OK@4~|UQ$F!;W9lmh^wKXk| z+=OG5n&Vf9cAkb7YBst{KB?Q$#JOGdz6Toeu#&?=LQ*-IWm>6Ll45{Ucqp|pOtp0z z{k$*+haY*B-wMl0b(eNij!|BgSuN}i=XF XPK#w!Utkcbcc@jX zn(a9eE#Y&put{Tp9u27(eAb3qFiK!r$Ya{8>7A_b=WfF@c_+9=S=nh|N1eoa0zV61 zQ=CUl6+eZ~Jvjn#oKWLpm1N5D0Z2C$cpGPqo!D%5WCswEzOy@G-|C6qHcHox;w`{o zLwsY<&6`p>d^ Y(U_ z5cT+!6zf7%)=%+cw=`W6uFy;cx~|k7L?vqvP{S(^(8uqn-!8d!_u;PV@oh{*Ub6Nk ziI*Hkmclp^!Aki{qUUEZD~Qyo5H7_-UKth}44ukDyqoLx`3P*#7^1~!z$b)hiTA>V zVS hS`Sf%OX@pG6xQ7Rn@AqfWH z_5SXDki;=1?I@CWR=rPS$DEIzs`|kCyvh;J&~12_Zvp6fJ^AVSfd#gYNZLhSJQz+_ zfjTTF?1DTrME8YN<#!~!mwZxA@Vu5zC@c*w(`AXTEY^KwwNL2kz!Y(v@ndb#@5r?= zhk0!u>ZlBBz&yJubrq&>KRAB$?QyWXgngQ5!koP4Uo0Dkaex;i%$JuklkaLiGoYlF zi;|_vdo_De9wA*A>NC6rh{8N7dFa`FDgXqVBg4mfpA>At0ImVxN8rZ+s=|iLaMY z{j&E~u4`!z*H)S^XPT{}auSKUDL`(AbK)>IFtW>^QkeWEi8_%Tag4BhrdUb2RUye$ z8T_8MI)FQszNxxD?CHV>b+UI5X*jbbbfYEy=t9WG+MBvRjIWt9ePjc?9DO7buBNxa zQTg)K?N5#aTT~Q0xBB3+=j!rPX|jV1+1x8xf!(aej=rhI);|_iGM~+ZnBjffM>h#T zN;~kK#)fz()Re~;GrAc6S8eAW4|Ur2@%C_McO6n~CTXbA$tLH+HjGXNg*1^c4vQIw z97-C6Xm@QY!cNWx<&fhblT#R0ieXY@#u#I?EumplG*pv%zB6>UuYK!^>(#Al{r^gU@_gM^5b?6{v-t~^#u?UaN0NqfW=lZf4<bTq! bQ#3pcnI(uAVH$ z9YsZ+zL0|ZT>Ay=j^XaY*@kBFqp05#njSjc9g1GTd|AEAFjt<0;{6cPd>dWEsUHfc z n3SINsp?dGM^ggI zL?RBB-A{@C=eb)^c(2_Mo9_%hciq%q8~N%kR<&Qv!JgTiBL|LxN4TTC@+Ix@che zgz@2WN&SI;H%ihPG5~hifZz1p0SO S7o2wD)^ylgb=@YNqKkDS3b0kg zlGsy%bS5yH64C02vt+tnz2}UVPvdK~DsZq;`FGep!ssyTAJ-s(f2$ zeLL#T%gIK~j`nN{s1vNS5__P~%v+Hte2IHsh)Ps#K9_0F+aJvk2cbO;J>hnE}z zp`nDFBbL^D&lCbdS*c6M6(I?9O5?}>?eDS`iK#_*cXToIG_QI7tsDp! VItoc}zo9pn`uf+O zx<1|Kf1kaJ46LN4%Mn9B#e&!^i1T!t7&8?zk`$emQ@dH!dbUW@u9Y~1{awRsUlSpq zOPOX)mh_Qla*3C|6Zpq}>NI)mr9&<9wQ5>Q0sugGx$V`FeHaL3O5`a$*szl^jE)W# z`C6GmE bUN0jFZN zE5QX78O{=$z2EZ4xkP>IF(}}Fx$8xBd}l?1@1CODR9zbBR4unJ{><2&`v&g|e%M$9 z_?p79nC)CE) >(?M0Hy`x88lKO``Ag3?$!jU!R%?lc>k=*8%ZimIc9bfXL-c+TR);= z#Oz>UOz%$b1}c&7?q+P#9b~c!d9z=ha|a_J%Gdk96>d;n1ww(P*2JM`>R;rb$T?$^ zSj? m`r86dgg zf{>bsH;{08pEbqVCZcu7*W1NC{h(d-xy3C7QF{p!kZ);Ar-uCFwgu-1Q;OE~CM$4F z_Ov1O^~s(cyE6~DKNy=9w9dHyTgG8l%NKfb`-9fU=oVjE2s`;^yklKRPv8r8eUn^X zQv_ft`vHQp(9B|{1~>F{Z $%%3ccai#uTjYGN~*1mK3G6A(y;Kla=dR f@i4Tns%zjs-9DJnCmS+$Cx2jfg 63 zI+N~u2d-vo=R rBbWy}waw8hCZ67tJu&vyR21)*8{vv+iLTU$iLxdf2jQ7H-Sv4aj|zoK zd@iq@2Y!1}oL!O&=z&)Vbku462? yz)v2XuVbasI$4xS z=M@BtF&8dC^!Yb_Jev6Vgr@Jw^vn{~s^*A0kL8z|s9(kG#Wj%6z*xruahL${pn4RM zmyqgSgjV2{M6cdemOG*;H!p )-^h}|U6S@u50y`z+=(C?0m7f2{zi*r)@LoQS-RyR+3*iv{^p(6vp_kw%Fl0UM zvq3}PZ%0W|^%;7ZuwyPuN6vhY)7=L5O2&Z26LV#5Y-#K-B^Qj}`S_ABI&y-HV<>!U z9!`do7SWuc!OM#SZmT#1C>8LE7nl<+kzLvE5v&?S+otu95}KN60aHu=c)_Jiqw{M8 zZx!n3BWm954clmxgy~+LTzim@Ve=cWdiqTfOE@(bJhGN0FJV{w3rmVIL1q%fhjCsm z4Ba-UCTV8s qN7Y#D2l&YbZ*r z;HRYdvBAAgKu_s*Xh*bVaJ8?ZxA{Jw@6O_K={{kO0}pbaQhHy{uEP~Q@4PS)ie=Az zr!Ak^{PmV$nf??QkaCl!*5WILBX4@n&y)}EJFtoaa1ozj7uyhhr-2NU^5m&z? ?~kVlgwyY(k^SnDCz3=*kAJ_(6qT;2p2}!t!^W*7l&ZTo1%j zSnf>O!0^7;9!>>;s(2i8+ySF4?O^(`61)a1=)?M)2 +;yrN;Cu7QkvIKW6=LJ7y&9bAa+-ex}oC7VK u3_}$A$@nsV7vtn&@QYN>UtTSYTSQae<55I;Eft zgMWcSRwh)ry;m6o_2u=)L5!Vi9wxC~Sz&-JRtFx)b!Rf2UhXUZRZ#{Oc0`YdZL(AI zeFp;2V^H04%g_uVBuf2OqA;DJ&ni_)m>vvz_xe;swyEf)Hvo{9DpWEKuNb=j*m8d0 z ZXvG?NLY0-pVXsh; z5+9Nk;|IYzd-O)!J1izRO8crau0p=xW;PbZD?PxyKRfRd#mjrea8JD@TW{$G3y&Pt zq4;&&Jd>T2HZ(9Oq{#pjhUy{0aX{T!Eb|z2>@H9L>uTWHoI2IYtfeRWqy(HR901NA z6;k0cilT8z_$RWXDD%4PY9*;LH7L`iRdo;`+ME9@AB`Mx4qp5+x3XF1L_0#O; * z+k7i+8b9b=4SY3&Ld$Q{fZE_+nkc+VFomYXj}7lgT#K=J& r z0*Ro~3-;d7JYHgr?% zxB#i%B!1P1OY6Iv$Rz`fE&v&+v|*3~UEY7~K}!`9TjE*zSF6@ UmO}ev)nQods zQ7@u%=c7W>O=ycj^tG8ET1H~o7sE8~EtSCw1bXpABnuWxx0h>$uj~CP-AA8HKTA?X zn>2aj5GxNm!wQi*x}`2BeHYEx(fBK1Q6IZ>dL8T(b{3dy6L}X*jIB@nI#gMtn@>tl zS>`0qWK_SgPG)F%1)6B%2`4LpWCVUdOM3Q$)_y|M66~~(&zO;~ERY|~=XLz0-2-ag z@gL80h%G(lrYQ^AaPEmN=oG{&G9dEq>u2R@1~1foCDPILCL?cO0SvfBTJSk(<(x61 zosEdPeZkhoZ1#{zsiOyll}s4 zb*Wah>C84-dx_umaB_xMw`F9y@h)0D$H-DJVbM+i{cI+^Jf?|c6YsZ>ec|k?#q9Tw zuzi25-kK)TyO-9 XBag=8LDF&?NGid=fz8GcP|uo R~zkP`x~F}Myr@9q?|BU*aSD3Qu#&l5p`B$BTU)w`+b$< zodmxKeMu)+v0`tJq%GlRcmU=U__5^v{|=b@D1&C}e^}I#Q Date: Mon, 9 Mar 2026 09:56:06 +0800 Subject: [PATCH 12/73] Fixing titles --- programming/android/foundational-guide.md | 4 +- programming/android/index.md | 4 +- programming/android/introduction.md | 4 +- programming/android/migrate-from-v10/index.md | 2 +- programming/android/migrate-from-v9/index.md | 2 +- .../android/release-notes/android-10.md | 2 +- .../android/release-notes/android-11.md | 2 +- programming/android/release-notes/index.md | 2 +- programming/android/upgrade.md | 2 +- programming/android/user-guide.md | 4 +- .../capabilities/add-functional-buttons.md | 2 +- .../user-guide/capabilities/add-graphics.md | 2 +- .../user-guide/capabilities/feedback.md | 2 +- .../capabilities/multi-frame-cross-filter.md | 143 ++++++++++++++++++ .../capabilities/single-multiple.md | 2 +- .../user-guide/capabilities/zoom-control.md | 2 +- .../concept/understand-barcode-results.md | 2 +- .../understand-barcode-scan-results.md | 2 +- .../user-guide/quick-performance-settings.md | 2 +- .../user-guide/scanner-additional-settings.md | 2 +- .../user-guide/scanner-customize-ui.md | 2 +- .../user-guide/scanner-improve-performance.md | 2 +- .../user-guide/scanner-multi-barcodes.md | 2 +- .../android/user-guide/ui-configurations.md | 2 +- programming/assets/buttons.png | Bin 44183 -> 39619 bytes 25 files changed, 170 insertions(+), 27 deletions(-) create mode 100644 programming/android/user-guide/capabilities/multi-frame-cross-filter.md diff --git a/programming/android/foundational-guide.md b/programming/android/foundational-guide.md index 21bf7e9d..6a43a249 100644 --- a/programming/android/foundational-guide.md +++ b/programming/android/foundational-guide.md @@ -1,7 +1,7 @@ --- layout: default-layout -title: User Guide - Dynamsoft Barcode Reader for Android -description: This is the user guide of Dynamsoft Barcode Reader for Android SDK. +title: User Guide - Dynamsoft Barcode Reader Android +description: This is the user guide of Dynamsoft Barcode Reader Android SDK. keywords: user guide, android needAutoGenerateSidebar: true needGenerateH3Content: true diff --git a/programming/android/index.md b/programming/android/index.md index 443fe32a..76644174 100644 --- a/programming/android/index.md +++ b/programming/android/index.md @@ -1,7 +1,7 @@ --- layout: default-layout -title: Main Page - Dynamsoft Barcode Reader for Android -description: This is the main page of Dynamsoft Barcode Reader for Android SDK. +title: Main Page - Dynamsoft Barcode Reader Android +description: This is the main page of Dynamsoft Barcode Reader Android SDK. keywords: android needAutoGenerateSidebar: true needGenerateH3Content: true diff --git a/programming/android/introduction.md b/programming/android/introduction.md index 8640c153..1bf49185 100644 --- a/programming/android/introduction.md +++ b/programming/android/introduction.md @@ -1,7 +1,7 @@ --- layout: default-layout -title: Introduction Page - Dynamsoft Barcode Reader for Android -description: This is the Introduction page of Dynamsoft Barcode Reader for Android SDK. +title: Introduction Page - Dynamsoft Barcode Reader Android +description: This is the Introduction page of Dynamsoft Barcode Reader Android SDK. keywords: Android, Introduction needAutoGenerateSidebar: true needGenerateH3Content: true diff --git a/programming/android/migrate-from-v10/index.md b/programming/android/migrate-from-v10/index.md index 05dab669..97a524d1 100644 --- a/programming/android/migrate-from-v10/index.md +++ b/programming/android/migrate-from-v10/index.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Migrate from v10 to v11 - Dynamsoft Barcode Reader for Android +title: Migrate from v10 to v11 - Dynamsoft Barcode Reader Android description: Follow this page to learn to upgrade Barcode Reader SDK Android edition from v10 to v11. keywords: updates guide, android needAutoGenerateSidebar: true diff --git a/programming/android/migrate-from-v9/index.md b/programming/android/migrate-from-v9/index.md index d5299331..b96941c3 100644 --- a/programming/android/migrate-from-v9/index.md +++ b/programming/android/migrate-from-v9/index.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Migrate from v9 to v11 - Dynamsoft Barcode Reader for Android +title: Migrate from v9 to v11 - Dynamsoft Barcode Reader Android description: Follow this page to learn to upgrade Barcode Reader SDK Android edition from v9 to v11. keywords: updates guide, android needAutoGenerateSidebar: true diff --git a/programming/android/release-notes/android-10.md b/programming/android/release-notes/android-10.md index 169c2080..c7ab45ba 100644 --- a/programming/android/release-notes/android-10.md +++ b/programming/android/release-notes/android-10.md @@ -1,7 +1,7 @@ --- layout: default-layout title: Android Release Notes v10.x - Dynamsoft Barcode Reader -description: This is the release notes page of Dynamsoft Barcode Reader for Android SDK v10.x. +description: This is the release notes page of Dynamsoft Barcode Reader Android SDK v10.x. keywords: release notes, android, version 10.x, needAutoGenerateSidebar: true needGenerateH3Content: false diff --git a/programming/android/release-notes/android-11.md b/programming/android/release-notes/android-11.md index e54563da..59dd084f 100644 --- a/programming/android/release-notes/android-11.md +++ b/programming/android/release-notes/android-11.md @@ -1,7 +1,7 @@ --- layout: default-layout title: Android Release Notes v11.x - Dynamsoft Barcode Reader -description: This is the release notes page of Dynamsoft Barcode Reader for Android SDK v11.x. +description: This is the release notes page of Dynamsoft Barcode Reader Android SDK v11.x. keywords: release notes, android, version 11.x, needAutoGenerateSidebar: true needGenerateH3Content: false diff --git a/programming/android/release-notes/index.md b/programming/android/release-notes/index.md index fca844c0..be5de000 100644 --- a/programming/android/release-notes/index.md +++ b/programming/android/release-notes/index.md @@ -1,7 +1,7 @@ --- layout: default-layout title: Android Release Notes - Dynamsoft Barcode Reader Android SDK -description: This is the release notes page of Dynamsoft Barcode Reader for Android SDK. +description: This is the release notes page of Dynamsoft Barcode Reader Android SDK. keywords: release notes, android needAutoGenerateSidebar: false breadcrumbText: Release Notes diff --git a/programming/android/upgrade.md b/programming/android/upgrade.md index ad4f8022..2b4d79fa 100644 --- a/programming/android/upgrade.md +++ b/programming/android/upgrade.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: How to update - Dynamsoft Barcode Reader for Android +title: How to update - Dynamsoft Barcode Reader Android description: Follow the upgrade instructions to learn to upgrade Barcode Reader SDK Android edition from 10 to 11. keywords: updates guide, android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide.md b/programming/android/user-guide.md index 373e3e6a..424981b7 100644 --- a/programming/android/user-guide.md +++ b/programming/android/user-guide.md @@ -1,7 +1,7 @@ --- layout: default-layout -title: User Guide - Dynamsoft Barcode Reader for Android (Ready to Use UI edition) -description: This is the user guide of Dynamsoft Barcode Reader for Android SDK demonstrating the Ready to Use UI. +title: User Guide - Dynamsoft Barcode Reader Android (Ready to Use UI edition) +description: This is the user guide of Dynamsoft Barcode Reader Android SDK demonstrating the Ready to Use UI. keywords: user guide, java, kotlin, android needAutoGenerateSidebar: true needGenerateH3Content: true diff --git a/programming/android/user-guide/capabilities/add-functional-buttons.md b/programming/android/user-guide/capabilities/add-functional-buttons.md index fb8b8652..7e3bb8df 100644 --- a/programming/android/user-guide/capabilities/add-functional-buttons.md +++ b/programming/android/user-guide/capabilities/add-functional-buttons.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Customize the UI of BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Customize the UI of BarcodeScanner - Dynamsoft Barcode Reader Android description: Learn how to customize the BarcodeScanner UI on Android. keywords: BarcodeScanner, scanner, Android, scan region, torch button, close button, scan laser needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/capabilities/add-graphics.md b/programming/android/user-guide/capabilities/add-graphics.md index a5950319..2de4baf0 100644 --- a/programming/android/user-guide/capabilities/add-graphics.md +++ b/programming/android/user-guide/capabilities/add-graphics.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: UI Configurations - Dynamsoft Barcode Reader for Android +title: UI Configurations - Dynamsoft Barcode Reader Android description: Learn how to add basic UI elements on the DCECameraView for Android edition. keywords: UI Configurations, Android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/capabilities/feedback.md b/programming/android/user-guide/capabilities/feedback.md index 90af130a..8bb04055 100644 --- a/programming/android/user-guide/capabilities/feedback.md +++ b/programming/android/user-guide/capabilities/feedback.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Add Scan Feedback for BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Add Scan Feedback for BarcodeScanner - Dynamsoft Barcode Reader Android description: Learn how to enable scan feedback for BarcodeScanner on Android, including beep and vibration. keywords: BarcodeScanner, scanner, Android, feedback, beep, vibration needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/capabilities/multi-frame-cross-filter.md b/programming/android/user-guide/capabilities/multi-frame-cross-filter.md new file mode 100644 index 00000000..49628d51 --- /dev/null +++ b/programming/android/user-guide/capabilities/multi-frame-cross-filter.md @@ -0,0 +1,143 @@ +--- +layout: default-layout +title: Multi-Frame Cross Filter - Dynamsoft Barcode Reader Android +description: Learn how to use multi-frame cross filter for Dynamsoft Barcode Reader Android. +keywords: filter, Android, multi-frame cross filter +needAutoGenerateSidebar: true +needGenerateH3Content: true +noTitleIndex: true +--- + +# How to use Multi-Frame Cross Filter + +> [!Important] +> Multi-Frame cross filter features are internally implemented in `BarcodeScanner` component and not customizable. This page only introduces how to use them with Foundational APIs. + +Multi-Frame Cross Filter is a collection of result-filtering features designed for scanning barcodes from the camera. . + +| Filter Name | Description | +| ----------- | ----------- | +| Cross Verification | Improve the accuracy. | +| Overlapping | Improve the read-rate of multiple barcode scanning. | +| Deduplication | Remove the duplicate results. | + +## Cross Verification + +Cross verification is one of the most commonly used techniques for improving scanning accuracy. + +### How to Enable + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +filter.enableResultCrossVerification(EnumCapturedResultItemType.CRIT_BARCODE, true); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +filter.enableResultCrossVerification(EnumCapturedResultItemType.CRIT_BARCODE, true) +``` + +### Set Criteria + +- Frame Window: How many frames to check for the cross verification. Default is 5. +- Min Consistent Frames: How many frames need to be consistent to pass the cross verification. Default is 2. + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +CrossVerificationCriteria criteria = new CrossVerificationCriteria(); +criteria.setFrameWindow(5); +criteria.setMinConsistentFrames(3); +filter.setResultCrossVerificationCriteria(EnumCapturedResultItemType.CRIT_BARCODE, criteria); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +val criteria = CrossVerificationCriteria() +criteria.setFrameWindow(5) +criteria.setMinConsistentFrames(3) +filter.setResultCrossVerificationCriteria(EnumCapturedResultItemType.CRIT_BARCODE, criteria) +``` + +## Overlapping + +### How to Enable + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +filter.enableLatestOverlapping(EnumCapturedResultItemType.CRIT_BARCODE, true); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +filter.enableLatestOverlapping(EnumCapturedResultItemType.CRIT_BARCODE, true) +``` + +### Maximum Overlapping Frames + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +filter.setMaxOverlappingFrames(EnumCapturedResultItemType.CRIT_BARCODE, 10); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +filter.setMaxOverlappingFrames(EnumCapturedResultItemType.CRIT_BARCODE, 10) +``` + +## Deduplication + +### How to Enable + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +filter.enableResultDeduplication(EnumCapturedResultItemType.CRIT_BARCODE, true); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +filter.enableResultDeduplication(EnumCapturedResultItemType.CRIT_BARCODE, true) +``` + +### Set Duplicate ForgetTime + + +>- Java +>- Kotlin +> +>1. +```java +MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter(); +filter.setDuplicateForgetTime(EnumCapturedResultItemType.CRIT_BARCODE, 5000); +filter.enableResultDeduplication(EnumCapturedResultItemType.CRIT_BARCODE, true); +``` +2. +```kotlin +val filter: MultiFrameResultCrossFilter = MultiFrameResultCrossFilter() +filter.setDuplicateForgetTime(EnumCapturedResultItemType.CRIT_BARCODE, 5000) +filter.enableResultDeduplication(EnumCapturedResultItemType.CRIT_BARCODE, true) +``` diff --git a/programming/android/user-guide/capabilities/single-multiple.md b/programming/android/user-guide/capabilities/single-multiple.md index 3bf2f4a1..cfeece49 100644 --- a/programming/android/user-guide/capabilities/single-multiple.md +++ b/programming/android/user-guide/capabilities/single-multiple.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Scan Multiple Barcodes with BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Scan Multiple Barcodes with BarcodeScanner - Dynamsoft Barcode Reader Android description: Use BarcodeScanner Android edition to scan multiple barcodes keywords: Multiple barcodes, Android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/capabilities/zoom-control.md b/programming/android/user-guide/capabilities/zoom-control.md index 996b7930..00dc0002 100644 --- a/programming/android/user-guide/capabilities/zoom-control.md +++ b/programming/android/user-guide/capabilities/zoom-control.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Zoom Control for BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Zoom Control for BarcodeScanner - Dynamsoft Barcode Reader Android description: Learn how to configure zoom control for BarcodeScanner on Android, including auto-zoom and zoom factor. keywords: BarcodeScanner, scanner, Android, auto-zoom, zoom needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/concept/understand-barcode-results.md b/programming/android/user-guide/concept/understand-barcode-results.md index a1cde964..19715da4 100644 --- a/programming/android/user-guide/concept/understand-barcode-results.md +++ b/programming/android/user-guide/concept/understand-barcode-results.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Understand Barcode Results - Dynamsoft Barcode Reader for Android +title: Understand Barcode Results - Dynamsoft Barcode Reader Android description: Understand the structure of barcode decoding results in Dynamsoft Barcode Reader Android. keywords: understand results, Android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/concept/understand-barcode-scan-results.md b/programming/android/user-guide/concept/understand-barcode-scan-results.md index 737d64c0..840e7561 100644 --- a/programming/android/user-guide/concept/understand-barcode-scan-results.md +++ b/programming/android/user-guide/concept/understand-barcode-scan-results.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Understand Barcode Results - Dynamsoft Barcode Reader for Android +title: Understand Barcode Results - Dynamsoft Barcode Reader Android description: Understand the structure of barcode scan results in Dynamsoft Barcode Reader Android. keywords: understand results, Android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/quick-performance-settings.md b/programming/android/user-guide/quick-performance-settings.md index b7034436..82f632d4 100644 --- a/programming/android/user-guide/quick-performance-settings.md +++ b/programming/android/user-guide/quick-performance-settings.md @@ -1,7 +1,7 @@ --- layout: default-layout title: Optimize Performance - Dynamsoft Barcode Reader Android Edition -description: This is the Optimize Performance page of Dynamsoft Barcode Reader for Android SDK. +description: This is the Optimize Performance page of Dynamsoft Barcode Reader Android SDK. keywords: Guide, Optimize Performance needAutoGenerateSidebar: true needGenerateH3Content: true diff --git a/programming/android/user-guide/scanner-additional-settings.md b/programming/android/user-guide/scanner-additional-settings.md index c1cccf0d..172585cf 100644 --- a/programming/android/user-guide/scanner-additional-settings.md +++ b/programming/android/user-guide/scanner-additional-settings.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Additional Settings for BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Additional Settings for BarcodeScanner - Dynamsoft Barcode Reader Android description: Add additional settings for BarcodeScanner on Android platform. Including auto-zoom, beep, etc. keywords: BarcodeScanner, scanner, Android, auto-zoom, zoom, beep needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/scanner-customize-ui.md b/programming/android/user-guide/scanner-customize-ui.md index 2b768080..8ad49204 100644 --- a/programming/android/user-guide/scanner-customize-ui.md +++ b/programming/android/user-guide/scanner-customize-ui.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Customize the UI of BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Customize the UI of BarcodeScanner - Dynamsoft Barcode Reader Android description: Customize the UI of BarcodeScanner on Android platform. keywords: BarcodeScanner, scanner, Android, scan region, torch button, close button, scan laser needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/scanner-improve-performance.md b/programming/android/user-guide/scanner-improve-performance.md index 2336eaf4..fae22d35 100644 --- a/programming/android/user-guide/scanner-improve-performance.md +++ b/programming/android/user-guide/scanner-improve-performance.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Improve the Performance of BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Improve the Performance of BarcodeScanner - Dynamsoft Barcode Reader Android description: Improve the performance of BarcodeScanner on Android platform. keywords: BarcodeScanner, scanner, Android, template file needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/scanner-multi-barcodes.md b/programming/android/user-guide/scanner-multi-barcodes.md index ff2b63a9..13124a97 100644 --- a/programming/android/user-guide/scanner-multi-barcodes.md +++ b/programming/android/user-guide/scanner-multi-barcodes.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: Scan Multiple Barcodes with BarcodeScanner - Dynamsoft Barcode Reader for Android +title: Scan Multiple Barcodes with BarcodeScanner - Dynamsoft Barcode Reader Android description: Use BarcodeScanner Android edition to scan multiple barcodes keywords: Multiple barcodes, Android needAutoGenerateSidebar: true diff --git a/programming/android/user-guide/ui-configurations.md b/programming/android/user-guide/ui-configurations.md index 8e41e286..07876749 100644 --- a/programming/android/user-guide/ui-configurations.md +++ b/programming/android/user-guide/ui-configurations.md @@ -1,6 +1,6 @@ --- layout: default-layout -title: UI Configurations - Dynamsoft Barcode Reader for Android +title: UI Configurations - Dynamsoft Barcode Reader Android description: Learn how to add basic UI elements on the DCECameraView for Android edition. keywords: UI Configurations, Android needAutoGenerateSidebar: true diff --git a/programming/assets/buttons.png b/programming/assets/buttons.png index b4a5ebc8a8cb4701b6d014fda9e4cc931943dcee..cac3ba80e5e892c4505ebe1ad12e1e49fd40f026 100644 GIT binary patch literal 39619 zcmce;c|4Tw-#$F0C_;toNwyGDw#XKdUDoVjtYgnErjnF>SN44$O4hN=2icR|*o6pV z-x #A&Un9v*%rAoXmtCG3yoA9h zTA+XD+MNsF;0M8WI?vsotEq}xIy>^4!<{Xx_`Mxnz_($rN7CLd=9UO6_gfZLHg-;u zTpM*5u3L6+NiKb1wR>tVa#pr>Pkr62w0+feEPWA{58+(WQsktMyv4x?j#lpGx4a!4 zoL-81OWyuFusHY|IxKKo>X94VT3kzB;oon7capbl-Q8Wp1q8gjy!gEy@H@NN2narW z_)y^9eS!P;`M@{$Uivt>n|t#)y=41$0C}sImTq<~?sm>jx1a&dEu1~vC2xCp*ullE z&8>wk;Ba9+3-bqXK0!gaIiETFfgm6J!2`Icu%Os|Ye9?K|DN96&ia4O@AUHDX#f)< z0DU4L$bS#IWaw{k4L3V0a23!gr34@S{rrC&dn5o|$p3L+QvY=X+$;F&zh?%TrvIK@ zD3eUSRI-#(g4#!9KMr$;;|^o32gy)HCV6IXK%WY&_s(mC 7u_w!u)F5$ z@N-O}?B$1##Irf?_U_;%Bg#8ZhGad>(>@EHgNs;&e+YXZb3 xkhwu=G#EshFV<$Ut5K zF$R~8M~~{E#eG=g$RxqGBQ8!%1tz7V17qzgNmOQ>w@3+ zX(=CbnD&-xcYWJ88)+F9U8&bb_fUPkE*XdR8I1QS5Eix!+g}~a-rx7Mx=(NQZ7fTc zzf_93J-SlFH5FaTxXOr>%1y8ddnS^s3j+UM2@1vcsd3aTT(Iecx&4`!S9O@6Jp#e| zsZH9{7~3O}ce1t}Y;&J}ZK_UmgD(7Mx0xBH^i{;X?Z$M2@1In!3Iw*a9vd@mlkV^S z>kUZ}3WfUhNxhp~bW+nD34<|Eu`=FoTblBk8BX9c%F$es`W+=VG(COuN-VA6w9g-A z$MFiKDT+%$}e2!MASRbDU{3ac Jk^d9d5LBL27U+Y 17q0}a- zov}r_#X{bjFPOb1U7LiSwIMvF(H_MC2X!-cJBvNzm59WWN-)6;A`YJ@Bv$V+`z~d! zEG^wRyq?er->sV=s7rXR_9;qjUvnJ&B3p(zMKiVce{H{6Jlhidhfg%N({^pV(sw>w z)P3$FmwiVRYfMgB+RcW|W->P>Ma7#wIiBm2g&w#O?%2+yPnHqfpCSbnB)ry#!1WeW z`Y*{Hf0M?4`=!$QGgYF}ewe4Sx*D<6m-(bx!tg-KQuXT3eD&0#{r&x{`F#>rMp%-@ zqS4IpNOcyGiqCGpVs>EPult|F0th%W92Rq02?YSksM@|gf?53VSKu(1?}|I(5!qN% zKeb~0vIHFZ@6wsK5Qo!0P>>6z7-l)$Bq5yqk;bM;`c?SjJy9lgdTfdjL#Ox+v-lSS zwqb(fRgTHv9G)A~sGmR8_jY%eQoW}8-;ms-yC8<~IOq|b8CvW~-diayTUo1~8G-J@ zvYldWvQ`_K{0L@=xE||DzXK<7W^tkC>YTCtDgq5TGpGC2;vga_Y nx!;<@^qoI&Vm z%-^${VN4ZS{44fnkVxos?Kk~O6v7#Dp`S^SR(^4ws8Yim50?qOI&@+7{`IDbHqeZ) zqR;Ti`wORfN&$!h#P<)^e5^*lm@`Pds!@o%i860_Z}+<++GjrerlcVir)nRVpURhi z)R|rWIj8$DK|`A0{#XPiM1KsI8!?0?DwrjpMqOe}$bZ$6Wl)JLHK!?%q`0om2z;|b zTtZ?2T{`WH F9tn=LOj&ia82T^IL!D;pK$@ zk(eaqj}~#7ERa5#rIZaV5>x;wI~+p8yW31AP*7Z~(nd#4e_uXZF>)kBHV_`xpX}UN z_$M7{3MJdL_k4JU@T7+cv*)P!c%y%vUdi)J|AQ(02i8CO`ZDDz9VbK@b_Y~emX|L- zPMtBt4{2-I&9{X^=d}LuDKn5l{HfpmYCl;2q5l3%rC3h8krD$2L5p{3K8y6wl1E@2 zTV0tPCu^R8TbiXrLbDXO&XJm$>U%KdWmTWBE$O$vw1+jrmYUSP6>v5$#o6~|$od{F zBvu9xd@Cy}3$wH3aM&`e-$p}X^)&K$FulTcUg5K*D2JIy@-PTQVc%U_t8WIirlPbM zx((VC=;k1ZDZxJJI ?q?!Su(x9a(Fkls3*!^DW}kNGrjdbYq5ONtoGv zrexXea3d($50xV;8G#f7uI HUhO#X_XMNpi4RdxX zzBi;D4-gAn+|rm$`tW;l#@&2rf>K%ic1VJNSt)=ZyY1hdNkVp7n+u(0r85n`HIT=# z)30`VZgntPR# *1EvB!ytdU^?y~;8X5Vf(q+&_Xcg5m>0^oc6RK@bBK9ymReX@j9a z!*0wp@{I7Sh5~^=#0n}fiaP1o*w{4TU@-Y><(U9FLBY|7R<+!!d-rfY5_f<(^S>IE zr}{Zdj^d&Gn1kNh+8T(uesInrP<-?PiOC0QT;~DG2;25$-0G`8nD+C AM>c{>4BYI=`v6c_?FJrd)p62 zjGXNNm_A9o40|29J2+Q@ZFm8ogF!l=UR`YVLO7k^<6=G309aAWmZ(ZSqiUz&^{G05 zNT41thyC&PihEw`mJ2Gl8MEv6YqFtSZYK!?5L8ofsjoixvR1dzI9})F+?P8G*0F)9 z{W3pwm?df$gajO=Yh;ux;y9j@pB`Wc7FB%fJ5`{7)U5x+;9xdke?o(Wu%x&b9r;Qg z!Y#{4$-H(Jq%p5viKe1ru+;w7NV}86ttMBhk&%%+keP^;p~7(xTEYP*-fExkKhe%p z?f+ulQUPWF6g81cm97(O=u&ZUaUqWtomB6+j|>m2!@$z!&qqp|#&W6+d=j+WO`bVX z=#@UJ2ZfYMBJvJ0MU^vqYrY+Eyt~{aKr(A)cz@c&bfnCzjMmg!*17S>T2ngUMPwr_ z40h*z6geo~IDmu0{faCouzt1!IZCo*wxHwzEDALG`Y<9J$|ix+IRPQReFq491u!S& z#v4u)0NaL(bjQD127_6D_jY7N&$>R8EFC~4z2z
=p`%l3pt!n5K80yvp{5PNrtxmfS2z(M+rv(j*3AVf>dS zq3rF5X4?ZuOu~w%#T*8q(P;NB?tI(B%~_xB*A<}fD-A$Qjj$++>Hq$bsuG|MVJi}O z |WK-_eTpi$6ZwJ3H&^>nBD$T%_wsd8ob7h%beh >Vv65^JC{TaB_VHyw3t_SRYOSc2iGXBjb5@e6bZue6rWQuKQ9ZMfH2~Zj7Jv-?Y z253aiB4wPd5I#`wEZhB`b0oH48k?lHFzif#oF<96S~NX62m5dvE?4KZF#_%-*X-;V zI}Wj0fDv7W#n75Z%r7lvM~<)tGi8Aa(XidcYX}k*N;lDI@4sael$so{TOb@`F(b}M zypjJeB9=Z-@pglyPh_1j1d%u2L8e|)WXgmP4vYtp`6OY4kp0jdh!x1viA=W`8E;U~ zw&4U$zNHgXA-<9ZGV53KQ)ziT?c!0lVB69MwurtsZtcHO3=y5S2 r~@GIGJk@5J%adTa}r<#$YUHpcPt<~q>W;S z^Nl+{C7Sri2>$0`GTf6~jDYp`{b~x_JI0ma!bPY1z_JVbY{MZEH!}W9s@>7ikwMb8 z0#r;jK)(J$F<`+3mJtsXMhqK{SBl;0Nl=GgpGGU}V!=-0%dbokloKFmO{sz>cs1m1 zHp?&=e&_r&pihBZk10U<<5$0FxCGOl&B(pK(jUbtCuIGDjv3SlACs35kAMgxgi=ub z0{fv3z{dPmzlv}EL&Tv(!sH^;`DF=t&Ba82zC9A#h+k*CFbv@8G8HFC&Mo?~1p;6Q z*mswycBlO|3c+Rwntg~5f+A%H=<0ZlYc^O6Ufh(F8$i;pJJ10Nslyk5#s`dpo8VOa zlmQjw@k$kt8-pMzDnP*hWh5YpJeD$p?E&>|q78?@8Y