From 01b141db53b2c191408249656b5ddf6a83aa0ab0 Mon Sep 17 00:00:00 2001 From: whowechina Date: Tue, 11 Jun 2024 21:35:54 +0800 Subject: [PATCH] Filter out false card ids from faulty module --- Production/Firmware/aic_pico.uf2 | Bin 415232 -> 415232 bytes firmware/src/main.c | 9 +++++++++ 2 files changed, 9 insertions(+) diff --git a/Production/Firmware/aic_pico.uf2 b/Production/Firmware/aic_pico.uf2 index da54f2a21472458efe35fd59489c48a848832b3b..366867c3e95e679eec2d02cf9e4ff17fb9e40466 100644 GIT binary patch delta 34798 zcmcJY4R{nq*6+J|CPNZ3VMvD%LWrGDLI@Z_KtRM0LI@;aL_|bDz=#o9HX>p`gowyS zL_`Lt@F5~1A|f045?MeN5m^@5z-BQZvH_7GBDRPSW@2*BnKM0I<=yw*``+hy@hQ8z z=6C+*)T!#~p6;Gb`IdI&TiR7MsE!*>n=2`Ndy_hn%}oloxeh3bKB|MF?@hD06veJ% z@vXaH9Si&`9Tbw^!no>D1}RGLk4ha>Rin*;w^hBvc*WJDh2k1GL2*4aQc)br@S+d4 zkAEOvvAJ-4L99(J@~@9bSpVi2SPz2wbC2IpOZIO6m;E`$Ho1p765;<(JG2&GH8VZL zSmA!v(T)vuzw7A6GTmP}I>aV6cAv5)uQ)fW_(r`a{uQN#QSM<%i~L|Cs&Tukg^MNb zb}-igD4U>E@3b3V-qs3RDe(|dNP@0}baNRe-2;LKbm^6PW=v>uD1Wa%kY}t__44h`klw6gNrRFaT%A(zNSV^P?+Iqy@Z{&Y zj2;aG@^bRpmkck_2EV2nwSS21oh_9)aL)H#juN>;vNM0msXAmg3eLGie3al1OH zJTb}fHG5~GlE8d*ZEhdLa9$Qf8#yPA*j96HAyLQ^vsf zDah4b)j=S1f1{EB@hwr}9k4ah6PeH^zI{P#ewZ=E{g1G=edc(=jKiKbu>F%Kv7~lp znBnwlLsONO#$DdTlIWQ&jox0|%4iNB+$!G&tYU;V2UTV4GgIMqhPPpp-HG9y<{p7T zqqJZyW9PZNfq4(*4a=+Bxw#8 zYEa{C3ahLf)O<^C-Uh9j>D^Ya?Y`A{+X}W9R_1LlSd}-kuBEa2w*fFJu$|o7%C60& zE)N#E+@VzF*sF`<6=Oy7fV{ZzEsb*M`a&3IBVp*|pI{kb#veSXN|-Urqv&DA6EHl& zjABpdrZD4aU(GmAR6?o}`hF{8A0#E~L{vg2Wp#clV;5|7sZLWW3kDn=@R{wX?Xw8? zPhqYG>ud&viEV|BrR7 zbAEM5f)cO8-tK5-Mp&Z)L)6<$L;Ecl=pn`p|JLE(6yqGkWi#IO<#JRL^9}r9iUSbbNAOh0$F-wrUKqJ)J+}YF8xEn>au3odbzIO6s2p<*_P1BN~%)* zSbdmr6!vE2#AI0exj`{(&5zelEJ!T3C%#kqRE52Be07V?ZK@xI`Dpy@U>E`^%G< z`l=>1p{_&F`z?&+O*QqIN^d1}Qw!turhx^k%Ko{nby|noR-LO(D~Wd(XBSkKxq1zV ztL)#>_~3Tv2P^Z2<#tzw!5o!Q#(K6iKD|9`;Oc5x{{+^TS6{E!J1;$Pf^@q#;=})f__sf zOGCRVXP>P1CAIqTdQ>fjDQz?)l~uFK(7G_AYlG4w_4bLFg7&cItJTekkzi*)Z@j0TB?c#qj}3Z1v9yH|*EANV*ukn2*229jGBZ6J_Sr%xN`#`fG@^Z-_0^@8 z#*Z*8lF730a(sY=af!K+~s}?ou)@ z9mv}auxqCZ-CNe6=&pSuz$a{PidAeCHWBF({O}Q?osrNeu{2~b}s@~#eEfh-2$ch7B8Lbo2{XWA#bYhs4F<6}F=p9N!dum%O8?1gQ;hoXYvm<+x&Y%>8oQeF4%%B%EUejymp|xODcpo86(iqpf;MK(jSzww5&YULDE+t$?C9Y|u%~w;pO%VeX7+bnQEkx6Iusp&+Cd zKCOeY$^AmYL#W5Si4JWX=|u>7i6x==qs!WrwJ?HzyHFoI_^0|7Lw<%nxBM4 zqw59BLMZ95?%LT7+->ki7bcdphsmYwiME5=LXBHbDvF;1klCa%SYHAKPZ`i~2duAi zzmYV+Y+<%W5otn1p`diH*Ire+uf>q&?(Wj&TT_~vZ!K>A6{5m?jqv9TMUS~z@*QqH zB{js%WTE^1l$WT%9qrnqBp)fr2cK~5`?}0ESm}JBI(*3adgtKkdMCKt>A7BC9LikN zq0EP3wqX&hXF%L$0?f=}d)B$*Q{S;V5hzTR**Lc|O$#^8j)4qx{DsthZauBn+^ewp zA~fFKlDWd5JPci(1j}?N17W=omLs5i1H)=OEQ_IZ1HKHFJ4a8nEOmxo?B1% z?LXYxMb*F|o>jFKNOw(oR`e)Pgo#3FsW6?zH{Y7j?Aq6`^EeoHwRX^GGLDvvyTWdi z(U(nekIi__%$e4X$aWH$0c5777DG&o#AE`KHN9PhuYr0|b93`sN(RhGilbCXx-n$F z`@^h`msFVi$dA$|AWbA}+qeDYbmD!-A6p~F5Wc&KQ!mQ8xAkWxW1P71} z?(c^5b;lRJz;?OcD(qpJY8}b6qhRVjHY|oMcK=k^&0Sp>r%i%W1#b72?KzAss8JsvHUw^n8MR<`*pBi!}Fdbf%hz*cMH zKZ2Uxiqp8}zO!f``@8$uqC0|iz|h_8URiXv8K2uZ9QvvVGBn)EVj9JqCdOPd9GDS9 zShf495l@=dT4y3VOXLV3M_Ov>#H35iNMJ@;Oc!FhNX#f;M(@DmJNG%!2FUSDU1Vp{OpJkK(BE!*F2cJnwu3R zEY-brymgrDMgew{Ovi)i#DH@xlbB42nFvgAfSKE!nC=2|sy-S{KM!mRG0rwc!C6^q zJG*h8=S=-{h-eE$v=_>JSdTueD2HHuH;lGgSYCv36$>1sZotwN4s$P*Bq(@{NQb2z z3LZu9K$Z{d?(9j+sPmqH)0Ij2_7berO9BCEJt)8)LV)g?5@^Ka0ONK}fh^nwk<)>k5lD#Emzcg1Go$aoEf7tWKO&4~1VnWJBHaXa zJD?navKO}hQ!B6q6#au`b1CkbFk^<#ig4GIpeJHE5USC>_!Vk84S)EVL7m$`}*vzZhcNbLCYqE zY(c?YGY4{A?q^=w9w*02LE_YRQmiSV(TVG-2rjQH@C4&{9 zTxl^wi5V&}mB6g>GpnJ4SHbog%jQ0^xlgiL1I${BDI%swV%7q)F2J~*>!GFVpl*Gj zP8&{k!zH`*z-;gxckp|q_5d*tNX!OcHu`k9_r1V$GD2cD0<+2T^&sgyC^4IW+3eT( zAkbrQ4OlpB+YHPWOXnfdc}QZm0JAj^v)fq(ZQTlWRhHeuWcRRSR|U+rzG|D1?s3~@ z&=A`WU9b&?(~j+dA@>NGJ|da!0MlKT{1{@!NX#x^c3aF?V#Z3$ZeaEV7`JmTguVyr z_67#2`5o&~$!;$&`+auY`)QyH#!Jk8U=Dn2eihN+`Z|8Wm>@9+fH|1j`Us5cM!16M z+R5^pZ(VGzbw7OYdEZe02f;+LoG4iy1j|GI2tE&V-eVGT2$;ix)@jA0Q!FuufjJUj z+|Hwrfg@0NG*G8aBD+bF-BDnU`I#@F*N(yVam%KJY)T}Xk)L6_@#5^T2HNcz-Fm7ipwChyg)^*Kr3{vXuy@)djlpF5&+DDk-excTX z8R2xGH~%2%)q>ucfSxv$d`^{^Gr*knG2Hu2pillNF=v4}7tl#6C7n`%`EUw+bAeNb zMhGvvNp&r9e|HYf?(3{w;%PE^S}=0g)PeAYz_4{YFG7PaK;6ZFGwm6&dq%Rm2+Sov zQx6?^sgS+lj=yYqdzP%8m8>p<)fG#51~D@v=1QUa=+!89&#P+#JM(kIJtuKjLF?Kg z_KN$%Yj*?>gi-3+88RebQbs0alF7Byq#gjWe0w}Ah#s^K4yI!Pj7)?*NQthncW+-& zImorotsAr8BxEOoNrh7f9y?iD>}F zqjyUzhx4c%Z426$H0CjP@IK|=U7%)Jo;GCZAD0G)oSc{!y`xpZ*Zxn#{{5Z%Y0sUI z)3-g{198qF{W+4p2d3LbtGE5P8s>~XZK&5G}3HN=A~h*o%_e8 z?#p#%HRMHd^r9fLyoMEWT@|2t1kDp5UZWyq7pRwrdP$<}NI3**K2h@}%7Ij{MJ2sV z)XM^8s~Mi7XS({k_C+gjZD!vW{JUUwH`hbK%ztrLTR>(D1T$U}isE6cFMExT4P$q+ zv3w|l~zHL6@uiynw7-NAra99{guv- zeBEtuu(B|(g`x8w!dXuq?_$p;PHU>JX9+C|hUdHm*9x<9S}DCcDEiM3p59Z@`$9R- zKXI}4G=5v#v`*yZ6~W7c;3dZICH?Dm;H3h*tm8kp&`Shs%i?+O2(~&fW)_mhLP3Mq zM6lf8a+sc!?4WF}N3x#m3V$e)J-Sk>BM^0`>@8G}?Ti)0`1 z9O0yj}7P3V%cNZWxjK**U9j8$uO3sv*nz1V0YMB80kDQj!j?>@R#G5b!B`B z*)5Um;#gs;w{q0lf1X%2@WkmN$ni#gr_S23m3*+yo>290zD;KdflR$YB5z0{I_nvg z>S+@noS-XD!nc_to)EbE2~%7=*Av(h)`NePAY^+fX)KjA60qe-lppR*4$^pd3XaSq z*4Op&Z5OD`g}WDecD8acgzG7+7kiOEoB{*-F}^&7`L4j>h}D*n_%ca6h4tyY7H+HA ztIOk;BnA(8MLki3H~Y>)T~IYkOneTmavRRu7wWN=@!qNIEq5~eihDcRwDzR9Tu_8n zB|1UT&+>0l*#NGm3H`c)@D&2iYtmS+$g|AmyX}iNeFwsA-`A^{!S!^(l#?l!Ow%zj zU77EQ$-Q^7WM0!1t1>J@?##p?mVwooFc6CP&`fqm2s*?_r}Jks*`t9jTt!}1NnSG1 zHp`OKRui>aqOy?cDNt*OS|d?Ck?Lhp*>4i{ra)EZvBc<}%xzoEI_Fj^3E6oa>el$< z1uXEd8ZOG5<*YZmgX?`*aS*oYXZ}hbRuE{m=iTNM&2b+S}yfZHdZeLwS4-dq8col+Vav<7h@0U^6w>OLPuu=2AEM z2I@Pc`Hn>80#%d4Ts$L>Z6Lux*yDLLEg)8%cDdBsv5GEo9cQ z^F5;8lc++L75#Ke_yqnLI|srbJqOPx)a@KOG*03AFd_0yWWGrJZf!0M4!wYG(fw@Ah#ks8I;s9`GKKZ-?B zG9M1~_=gfb3hB{o1xw%`k7jYcG{bE2=vI>6D!@we<$5JK1D>xq?)?^~{?eUJg~i*I z!8xf=XKzd_d!)s=R!V34*SNjco1v8MODy}kg}ug}kXYs(kXU-XUP&?P2h3Dwa(xW7 zgL}u?w7bdKp9N>-dPQDa1@2;~^Kv@Y)|J3RA=NB?a88i1z^gxLZO!GsjbV2k0nw zc=kMHZ30Vf|6awb?N)D_rL4?pb9!~m>TUXykG)8a^7v2VSvRgvWN~a9zjq?*#6tL! z6ItM1NAxywx=nD3O=!(ePh^9*Ud)EE1^kc2?D0UD+sR_PV8LsOS^nHV-WHo(a$8BP zD|zh2M1Lr{?^A4j``Zleo@4LWl>;SC#Y)vMNnz0Kx$)o5{E@ZGt}E#@;QZ6nq{asH zf;zY0A&*kf!94;dZoYaF3!I~CJ1EK>Qk0W$D3u7qb0<+dC8`9e$pW>Ds9h2@8L25i z1$O(XxCczZ>Zw+>wwsK1OU6@?DkT@(`*dLBe!H~od!zewzKRGh)auoC{l4Cep3`dnaI+$+H|5H7RabLT9kb-E7wRaLH{m&3og z@Gmt|(RaVC>UbVkp~6uOZn*D)&kyk5%2*=TXPK>h9w*CLs5#rx)IOy!Kb1VsMrw{g z9U$s}M9o2}oQ)Y(WVgAd!?#@wOUdu};ix!8-vObxpneI|_ZR@D12&s$8I)WIHysLw zh@ob|dS57OfX62X?ZDiC^=bKyw*tBRE4lxx|7cea%7i#eK^d}I07OX1{erZ1I z!}SG1AcrWBLsB3MFpvt1>iaoSp9@sgKt;zs#lAfjYIBW&c+9@N5k!6aF)+}#71*~6 zLC$x3>(wCh_SRuRj@K+ir;9A7+85;X3yE5U)MBEz_jQ|g2T?}^3d5;_{=#s|`1!@G zZBROFF5|x~#z>Y}KDcu!?ubiJbg3x{4?*ynrC7C$jY!tPavkh449?~mQ|!gC9So%x zlt?J0P)6{T%h=s!_O-uLNPibX;x)_IP`ys^O=c)}5n@yeY(v_YtyU^Wl@7WH={w8& zuV7lxv6eR1BL46Snznt@{V`HJCMmAK5G$?5XkQZbr9@RCwaTK}94G3yKpFLX%NiEP zZ>(bJTwi0s+_@I>vj#QRvLq*lwhRhBJG+SAzn1x)4e^CoO|sR3EU#IMhU-|V8XU%# zu46sJ)_}1Ar2&eWuhtb>~|kzqV#3)@Pueu%?v3%cCOD%IF9 zzGo|oF>|EVl1{CpvlZylEzHi7s#sM3Jx%Co39UlmZ9-sYh&m%t+mPB}QQWx;`+o;Z z*LCO(xLq7_tERabTRf`0qMYpyx5##mh+E%(d=l4pS$5i4Qa>xH@50l?-NNbOH$;6S zQM)mQJ(gD7Iik)9l(Em1ke?SiST*wazxS~IT;EFu+`BK(<^L88c+Fmx#6ID-_p**$ z-*2gFb);S=!TT|W0~W=d2Qd!^u=*ez5(n`Y4w{F=&jN?U3zEh`gb%T7_Afr+5PK%j zJ>QbUZzcE;!iQNDi{W=2W^dAn_yR}7Vf^HX6^iy9*?%Y5A3^GXJkqWrg8* zHnkVVUKNyHVZ7@xw$TiYJC9>4kD=Ca!Q*Apx-4lON2=PQQokqadx5%r>v9v*zpZZ_ z0%yL;r_D^UDHr+o)$A^=pR`Q1D`a{_Fy%ET(LoLCt7eDsaW!m)8Kw3E(LYFZ4brDr zFEuxek3Pj_Q3k&X42G)`eG2JXRuZ%ZMs+EFt(FZk<+<|=CZQIIGi(am%U?S~pK|Zl zfv&zL$(_N0eO4IQKT(K3Nz_@CJZCjK-5|;kC@koP42 z@f_>U^*XkutrP5i^eC>Ey^55XAv=!I}N0%r@ZlFHsXYRQGF7%65JGk=_X6zz5 zy<}BuH^{{e!3D3mgw$n$`jx0(CF(L#R|M)NQ8y*(3Q|`E>K0MABv-MD!20Wg4@f-TSMx~L*O9tG6!-ob7$#ncx`EV9L93Cp8YSu` zoTJ}{6Xzd!as!>CbMI}O2^!Gc!*W@B{U{Pif7h=NZbDwrtl4S}Zt zi3*aaU<@x*ZO^kq)yjZd{0#?S4iT*lRrBFOySm$VBQ=BB@yS8%42Lw;hT%uy@R9F4 zwiP_cKmx&%KsZt^pv>>;@Ej|;36UrlQV~SqL-onLHUg_61w(ky6b)NShLOTJ- zat_w7K}pvYWqpj|S_Neelp#>ILTMM}Y_)_>h*qC7n+Vs&F+b7RfEaZzh1TBeif}2i z7&SjmPfdQN6AahTp73lelzvcVKv~-Z9;@xi`^BoOOlhqZHLsN<5{sVV)W5((mB*ks zeUEqImmQ#75*epHz&q>eho&BPCaBT;8(kg1A5Bmbd1-UQCcWhxMHS?iN zb)ml>TF}mtrN;8}nXt=s%~Cg$UJpn>Pc??uWvSWxN{SlB(|f90OkdHl4 zN+N%ws~W|B>8W;sE78ybymxY&MQR<0?;!BJwimXuk9ve>+^rhCwhwOhRX_8`7Q`Fx zaYXR&ergB)ZC~i4uKmp5;C6#fg1RKw4;8Y(t#5ztZ-={VIWSskv%xwsN8M?LuO*Om zf@GZo*59Y7PTnP#vdX;!)#PA!lDfJ12W1d7?Pji;#`Qe)6Z5uEnM$-W}P$e7B}L65Uat zd2JzPW0=_q_qE~SMQTJ0e#;0}T0n6q+3;UDY&Q;v$tIOwAEtKYdXW{b)`@gGNxDU- zJDjrY^PWajnnVppYJ{NGnW)YZH3F%T0+miwx9?&@#Wjb|uT@p0~si~F=trtxVX-G{MwC*PA zZi$+X)C`N_&N6KJ46H6QUChM3E5oW;LJRtlUO!217E-eEKoj?g?4g29qQQaKVe52^VU1y={Lne(xFfmN;Ll5wtNya1^Rff`8E zK#8ir@wgBubJXS$l_yaPQEL%V+=CB-5;aJo79q7*@R(0jzC#l)}Ap9kyvLR<9Gr)5#b1PC+0`)La4@*=PQrk>wyV*OVC1@K$I{-2#*hfg} z5sBJ?)GkvB_P;SijghEbKs~xk4drRORo}Hf-@HDS(6JJ_8wbT6Yfy0KUTppz^s^WI z(CMzr*F}$#z@w7DUi@~jAI?efx4O4KwYTx_V&f%hKT-#X@|{mjAgu`!bpWY@0yUAS zi4t`XsY9m6&()5+_7GMbwhX!R2)5!dRv&@B#j`j(v^`FGk4t(-u&qahoK7NYl0+Rv z>X_L-Uz#(?6B2X`q2q#72}zYm)N!P$1?owno|LF+q)rOdWTGZZ)JddjU{w1b^5M=? zcs5XjqxzIJsU8aRvf0&xNNFHC3X{Aa$0)#fL-T z7!r!N}B$4Y#-T>0PWbiz>dS0S#z&EPon{tg}XVm!L}iMZm=zi_X@SGGe6T7kir5< zAr#OqVYW6rJq+T?3A1r*2fytMGBffgi4U_uHp6Y71X^1`sudCyj&ZplClD9+wzk1; z>Vm5Ikv5%YN7yO@ty)Od3nl9aw2rje&Ye-vDsL3X{1$10JDpL~CEU}NnKR@fNg)aq zqAdmOHS+VCL`5SN18p(S?iLfZSfXN(iWRh8C+c;HibX1p;_{u1Eg@=&M8zSc+xEIs z*eRsostxv+j@1cPwYHRumrBM7NF@=)J;`vpnJBkJB_Wj}Xe}dZnM9=^l}dw_dpg-* zpG(E6G+X4@Lin0I9ez`&KWbN6!JUn(SYj?P5qs*(~Pz z=uXAe4azqeaN!pIy#njFG?Zu-0n3ZG;g@p!jWk=}o`kl7Vp}1_mWD$t-S)9LNVu~r zCMg}`>q`BA4;q^DYo%n|6{!rNw^ovil@gVKRHo4LtB6`9QJF|(3Djz$R!dYChT9Xu zHBYJ55Vc04dZJb@D=zNrgN^Ei)qR9vvzCn4O2&QAMPI?iTSUDjQGHRXpP3+hc#x=d z64ei>Y%37$ZKB?msBENiC@$_9fa4C;*`*brI zZCCwm~KA|^xjtzwFTw3LTb&! zMJ;L7O4L@=sv<4iskn0+_DdC3Zxb?phK$ch#@mqE;SU$TWqeK4*Ale@sa=)}?JQAe zC2ALjyITnN8=}6EsNJZwM~LejQRgIT4{Gf-cPe;DiHGmUe%XuG`-OPx$huCl-jCD) zA>Q*uotLNs=;NU2<1^g%4x-^9!SGu${8lnNgw$aQf_uIQ9M3LF)M2EKSX$h96#L}} zdOb>BeRJR?a&bvAK8nW2ge=t)RWDJ;kUB0UIw!~*L>Urw4yig*{ycnH3cr9Os}AcgSS{18ll67U`T|lH1?m@~ zevzn)n2t-74qq;B5OqVME}_Ln!`c4_NK_b7;XwKNu9Y47E*z^| zf?)_5hDe4kq#`H?-zzWuISZAj2&5tft(K(KQlcWUp;1<9xicCb2dRxh<7kS_Hw>I) z?39e7k%}>0z#}yTg-cKjLa{>1S`pPsqGFMX6CApTa!FJiQr2LJ&{`AKTB3BM63qO- zs}Om35_Vn!)+Y%*G_uwt>m;O7OzVzzm=II2DphDg8!~Jo8KxqYCdfw-6(vz=nDBIS zWOY#^{Yh&pQR%4FRqz;1TG0~K6{!p}|9CEviJg~$)tQ2E3>n8r#+gWEnN$z6^V&;L z7D7EO4_Yiq#Y$99qPsH!1$so?AyIvi>Sx8p zo!Qv(epsDNF1WWp>{6$*p(;Md8sJ(2=_N>dIoKMT(sP-~-5mXAc^Q9>YH$heDSJPM6R zQy}=7IhYPdW7QZdliHnRc&B7I2B~r6mEJB#RE9*2Lu$Mgo7Rn}ZW1*fsfiSXZ{Eu! zDpR5+B2{cr+&Kx`S&Y?_%y8j}7P8HfY$qX9BE->ys2&nkf+?FURun+)%k45uSC zL!kN+)mNfsAXR3{!&}z;DZEFb%8;5RgxZg^`bpF*q-F~q?y{w3 zRM_c<5H&=imZHaHLRS_LRUlEzP-}&tRY+8!M6E!oQlN$sHB_Q1ky>R^tKr;W4W1jU z!a&vtIlGUH?~{zzpz&INg77*;5m7}FwHCG335~j+sQV>q9crzIK+I$hCu+Dvtw*g5 zLYF*1)B_T=0kt-g7Wceo@5oPYw8Qg8n}h~ENQMtehMQ1+Glj~%_}(+3MoQFXl;0wR z`VdhMNz@k9+A4S)Mbs#X+KN<_Ks`*VOc$1Tvf;86H6Dpha=#A#CSCZ2lpr#_tbaeC-(-KPDL;Lh3M4z6&75L={WaVWf_j z`DU8-I8l#F)DaBis1=AdiKs~ubrh*%CiSHm))NwR458yDgr~06*rwxHU2RosPm+fx zCF5$OP6B1_I+KZ-EKw(ssu8rFBI+rLszK_M(05aanj%rBkg6q*+;bXFPHM60j1a_B zGMp+IoT}0hg6+FJx$cp5>#Riv&7R2fla5_JtJL!f37HB+Jt%+Gbo5BL0nop&7#Z-AjWf}SVC=Ox1% zNZlj~pJ_3tq1h636R8F(2=4S?I~%atBem#cI1%t-VCHFA281){c||C^KpE ziJC7_jv&Z(u%E(_{W4K6OH?pYp+d9^h*}^~q3AJ;;^JOs5KNh2Xc!KL{%B1I- zBk3Zq+|$}-cGWAAo(qj51g{Ip>q3c&K&?pf>YFlOCF)g)ibSm_zejIdxT!$YB8iGZ zt!P2(HKJaVsA!~OEQ&j0u~9MTB9>hE0(qT`Uzdzyk%|+jB}6Tes5o??TQ0OWhl<;Nu-6Z(SmMC!XQ$_Zb`)!q+oR_#pZj@l|M<#CB0PCOY^q? zZ;PxTuPY=f4YkrO7aAvuOH?{)bv0wd2TX{nl&G#qWf0}d>`J0mN>m1V%(OgmXBIXp z6RWeVYHc+cua=Cnkm@N=YlvDSQ9Y6Bm zBvIp0YoevaoyFLKiCA51RcqVH#dgWK7+p-FaDDsd4x)BQ)Fjj@5wvy^wNs)>keVzE zgk41KlBmf@P4RogIp|}eK9;B{NKLgoa%U+vYARNjk}>x@jr&w7R!tMU?jgNBlHN3= zrVG?xi292}O~-7^fP~|jzUR5X!ELWZ%|NP*DBrcKeWbNdqRPNAO&kJJK-;?4?q?da(RP#s?(H0pCQ{#-JyK;wlJF898QJJmw0S|r5w1sQ%J87@L< zv1tge`|lIe} zwPQpblc*I)RZ_gZz3NM%zLcm+q*e*kaiWe()GDOb2-H7_`iDfV!RXgo(Zer;Ttw>b~op+k3 z(-KvM)HZ=SL)00G+J@8)!Q&d zz&WDMNz@+H+6yjxbJjkb68B=&e#@&?M}~Eh;eMnJ2-JC^&P&t*qz)3rz3`SB9)1XS zmxCDGAtAVL$@*K#`Vd+lHm$!1^xj2@I*im2A(HP%>pO`$g49u<%ye8L>XJkqMe3NK zRZmpCL>)uwxJAKL5$u=aSY2&ZYu}Uc_mXinHvOcvuW46^x*}00QL9GK`hln)B&r6f zQ$%s^S2!h}!m3)RGTZqh8U834`o3VEG51DzB@GWhi~Vv2teUrw4yih#IJ{HFJbCXt-ZMXhUs#|EMrB3f2fi1Wm1iyN_5#)dQ-LHW&3$LViBj|2t_a1#R?!q4e3@987Ki|Je>NvY5 zH&P6Zg3aT4;ge64Ojiu}Ec-Xr75f{%ax@)tL zxXds4bDPLTlYpkd=UArtm*)2Gmy`UTj}y3&ut? zoZ|BL0sJQs(`JZ}$;eW2Ci1wB!;t)}sw`yMi~iFc!#g5V(| zM{4^K{y*M*eqP1gUjFre8qelrD7NK~IeN2A%inZ#jI4%F9-LY-VQTS|$BXsB!|&HK z%KXXJB1oPI^2=)-`E!f)Wc*VS%A^&FYY)6*dp#6fpAX9^P=cXsgYAt_(pM?22q>eW zF5AEKtc12g!Mc;M+~i+B1fOq$vc}Kh=X3mZxb82#%@u12&>!Ia&u?r{Tt7qU53g;$ z2Vcqz|6Ya{Ca;9@Arx~IjfK~CV&YVxWgo#SlYhlGAH%;Zu-+5a)1X8`!R_CdlOI3> zq0EC)I51ZUfxnForfOf6C)gc(%(nt@rvo0!skJ*`S9dt9BMQ7c6eF+;5%5|EBsa56 ze*|Ob3NKlm0>uTdQN`tdw_FCBV6Z*7Uvb5u&i|W6?|>r%3_M`G&2P97))zzhuL8m3 z;)|b>=l&<694x2)AFThAjafGg?68>I|CeRk{|Gwv^QobZ$>tEy;BBGU0S>7HLb02| z93@2~;GL(lpzQW9aUDyge_8vx`oiCBo4i?Xx}DpC+_n(hn(Y77GE0bU?tjNg(_w1# zW&g6qzx=(%!vCV)xmh@f9ZOLqTn_S9r%0a{uw7&$PQfZ#!hj; zzGFVz6GAx*5vd{)Kp}PQYg~ z8(|5@5hX0x=Cb+J{l9OXi!VI|qNU&=79cyo>97ofWg#pbu$%(R7O-3d%V1dUh9$gZ zQMm!jP*_Gnv@Kzo3(GKAPKPDDKHIm%cl0cS?N+cn1k2X2yaCG&k+6~tFQ$!xMC`Wtg9TND$P-sn<&>DE`5wj63 zWEEabh?G;JqLGR*srFiTg2Dx;1dbpTs^Xds%W^2$Fu4{&*$eAOpj_m)V;u0V&sb9h z4qUBBrj;PWYh%IJ`Zz}n?-S>+{&J9uP?v(3gYOK3lfeWe zlPprxNKcdWlF%^4G=#T=`3GX8M5Ulss-V?|wAx5iDr%)UtosU4L`6wd8dB+|NBBF$ zJiIFo(sZovDx@l!tfM9Cu1IA#Hn|K)aKldZ)t46HPhX>A1N%rjGHWN9WuRH6ARa?h zj6`K(GqW58s-5wvS>}`pPfZfsUV^h6`Jt;uDaN3q@Es(c|PLQ|%_Pfs?{z(4(h2QZX^4|R%Z*u($OC)?t7z3NdQ1B01mcp_e$`UB+pzMHh1j<<`H~7QZj%Vx>?(?6y zWUvt4*dJb9K(68~R~O-3XpW>F=NHlWOPALa*J&u2N8G1hd!5#QTdcUghho<6hS5{W zyX82#xBCcQJ%0?|7Jd=RCMXA>T!vD~U&wK^&z||2;_7h<&XB%>Gpp02@E~jt{2I=< z;2pz*{|#qZ@cQUCVfi4u$+!0DM{TA_Y|(jGuTvDYptquyCYkMuVo|a9 z*6py41^$(c?wr%febl3jR+PY>l}4zlN1M9$P3ozq6#LLlioK;!u|GCRQLM^@{0}}V zd{j})c3fW;Wi|!+*C)nqdN&N#1EBuGj9VsG=|^8%USX_I8)uD!|6jB^I_+*}YG-$e z_NKKb>#J?C4ramHH`d-!cfCW3tDHsIsYSQ0cw*jAI=Lr%n9?aH(CzkqWbb5WaV1t} zFN0DDrGBr){l^wZURNasBI+EgDxC-0-8;3Bf&Favdf-!RjM6zd(A`6u7Z?-1qTQI?s@GN_rIFUd(L~vqS%zLu5@v4Y*P}i zoeFl()&3OJGwP8R7I*H7$vvq3FYtd&n~=SJc|2d>(D$ELM>>GQBrdh_jON*8sPqIOF#@RFE-c5 zm&e6hzhi%xuEa85-TyW#5QW)2t)0a_o#jd#_k`uUu8(FuSHj$;mOgn(Oq`3Uk!1{w zpM$o#uRZ{T`nM{v5Z@{##tNU3Jz=rkV|wLAwJZvG-y=^Ixb5cjsTKCYLQB~&_pd@@l9aDUf4#)-=Zn};Y_&JQwK zj5a+{QDOt!J%)>!-{}B_)%s9+DM&iVafgXIw0TFaO%M7q-37W>bt= zVU?Am+wa7;?}lt1^X|^w{qQ@^-MM?lRXX?Nu6I7$*u}l>?noF7R;4n_QePB9UEbBA zcX^=D<%+wseWWwGu#0;tba@7huT&T^>8Dt7usavVVz9fwqo~2|QJ!$vRyO5yb#H~# z@2!tj-pd_%eB@{5 zi?Wn&KWjwMbZ=alslRe+Z=)Ih-`&XikFM_=tHdP227RlIxjkM5M&Uo(Y4m;sW4W{Y zlK<1WyNde+1Z8$>zIJoA>0|q?HnaOnsO#*W-Kr!i^409t1${fdn_uw672p2Hdp1;tFYGCthjHs&Al=!w|}`M?t_x2 zD=eV2zOfVh|GUN+FzJkI350$gsBF)Ev21z{OAB;ox9lGEhx$8LQj}pZ*gLr^+aAwd zU-tJs-I5|3y7oW*trB;C(Qk6M_N*-1?X;(ljIMmBi+fK?f|6Xu(z+~ie+lNb^}Y}8 zzry;S`kPnO{(m~9#BJ?)f6)*nL3!Ir-|o6Q9vsp74p@H|$QT8a|G}HC#JYwR2fMA_ z;khGf*(T&B3YwCUcj2_ z+vDyTtChs&MwH}VF>PPrv<`VX+Zx+bxf<2U-M#IZD*@XrvAEu~%@mt-wRgbwPVS(# zDOcL>yxN+41s&nk;25L0FSgyhe4kQw**(Uj9IDfd8IriIA;v&>b|Qz6wxCr8@v`}DC)*#OmW|%C{y6GKB64K z56c_^b|9)IwEJ zGjsElrP?P^&uD72q1=^}yGqK@MQo{dD*9nfRR^$n+Bj7uFD%qyCmweHLer>GL07@k zbtp}pwAJc_@Mc`?0#y(Ueiaeu`^uvxXliVFSTcOfgi;$|w%hl%-+8Rvl%ppb)s0+q z6I^t1N4DAz);aUEmt%7~uL8?TD23V=v5#qLd_-zBeDb-1CAxFN($X1SGSKe{owC^* zkr(Ic1zUNKQ$5D?fEw!UIIG^4V4wD03bYHC7M zH_S9Rm}n%HYU2{_(erUQC?AKUpODyDZy$^HZo+Gtni!QF6~ycVpkzSNJ!ixERY*rq zNlzZ5&|QRuk&7_FMS=Ew;vb@QAE+QU%u-N=t{Rv$f|{Y9#i4~Hg=)n~>5DeQcS9lQ z1F$>-#ReU69(gD&(Ek?97Rp<&9s$cJC_lm`lMKsrC@;f$J}e8M1VCiPuq=f#4Rk7C zxe7{8SlYpDaO{)lhk@j zWD2OI8cZZHkrI2g*mBcAA>B}jB84bPAsv|E2Gg6E z-V!q$m<)r7CMH^9GJqN3W4QN$j=>L;lCV9G04CGWQAtOYn9Nd^uU*W1P*bxEGKR<) ziOk9Ya&Ojinwp&&u{Tz+m+ZAvCsYJf_o?V?vE=o#1dfaxNyBg?4#R91hS?ASZ0-JI zFGn2d#!0$PU~&v5o|t%v$pL1pkKx`i9X;JgV#X%+c)Gct5;xBh`*vm*`3D9U0JL()sB%372YQ+=BveVkf6Q9-8Ne0=U z$o>*J3DgPMA>Xd+} zwJ-x|Url{fQwux3btIFQWJ#fLL1-}06K%}C1a@-m?TT`wujVO){nm89^JyL9Xs~2D z9h?^#@+l;rA~8k4%#27K04|EaMJbdFSdTcWC<|b{7Dm!4SXM#V3MC0;Dgwg1c)^j>%H2c`O`IZ!GL=Lq3UoF1O^3%W&;G|hGK?8FZ*5#dgPv0O?o4Y5c1KA7eFH{ z3=6vZfMRd$q$n*9Xd@O5)Pr<9NKNpdWU>%U%8g#gBqmd0%7IzpXBNY-T>_t%8a7#E zlO@?Kt?72Y@Z1&Ep{V&VOdkN}+qJ>V?$@KyY|CIEFN5J%VGO@)Qp%Q;D!|)v!`mog zMoG-_DE6ZE#&X!kRv4s{NT)=umtOJ8e!%-eN%9EH%VAlJYx1rN@FEJZ|*(A(cn;^+eP`BBzn?QCGB)iSPY&DoiiGk~rLZ@s6 zW}A=U-amG9$3%(Q2Fwma=QpJD8;RKgOmzpN*{UJNYN*@k*Z#1h?H`lub^^1j!_HAa z+65A`3z$6}`8ysb=5dMHlVSSeH`bW;tO?#uI?JD_&Ii`}`RLSlDjL$>9`BsBnjsvb3G`<&Z#?J=l4ZWzuW!x@s{abQju%uHftO3Vph zPWqXzpxaKu=X%4&MK&(UrXHBn2JqaR0j2l)=M#X|rwf20&6KtFIMZ;s7dd|>)p3vt7R4YCQ`saNN z_kP#WowFt8JTMmwofk;w1&O&((`_2WQUbfv8i=nMO13t*(KvK3A*&L}su7eg`MqDn zuDk?Yc?m{pQ^!o|m_vqhB*P{!yzCF@N9d-@@cC*-h+(B7;dg)Zq0kMkEY)8Ma#YavN*aEIbR?H-TSl`Ztd38+eT8a z685TqX~nl8@n(ZrK+FP(X$HpQch}M})&5puJZjiCa0eu!rblisSF4k0fd`d;TwJ7W z^hB|@wS%5P&~`t2hG=T5e*%T0*oEY5p(NA_&e{^#7;SW0AAOV1Y;DkPZ5vHn7V#ay ztpD0!YzTeV-e+wwtKq7N896K_*~Nk^FE$}%5vV0ZEs-b-QdWU_ji}co%8FE=KrJO| zsYC^`nr`MZ6SCA4`$P7F5lT|U4bf>1qJP+vyWGKmUi8SEjx zJ(%6ky73?36ORdDzAcP+OFrE z0m_Bm$tB)9Tnz^lEL7<-&O!|#TH!p2Z$;ql>cx}skOd6V3|DH(>dC^nD35zgM|b-wlQ{tS0t zF|WlNjCz*C_`MPALH$I|v4VtFNJ0_VN0HP=+}o4&;l+_y6=if=;z}}HDHt|@n<_ZU zR?1ud(f~(~jZkLr#Zl}&YdzdEK4asDqS(_sCYtqUoR5oU_vm4S|DM!-FQ|2L59BXI zvuW%%{8Ti1n5(McJ$4oGs|5bNEK|eZPpuhs>f3y0C-*k~s>*so!>?7@Go}U`Z&P7- zsIe?9Jjv5NCNNf2p3QE*bIj8j?(D&I=DX{K_c9!Bk@Q=FG%t>2tJr<~ZY*?$8V_;c zrFJ|hSxxY23696MN?;lG|ACvK_PvYLV7TUd)TJ7bjuJ16X?48fKR6X8wK`%*c4Q z=k4DyT-Qma1JHD!(KilG4!A@OWP5o`GHt@XFe-_vl&ECXN}=}Up1~}E7pJfREResQ z!tUveu>r0O;Gd?jr?{FbI9*S2>m|8VluHw+cZhmNqSBB`7pN+tsw65Mso^ZF=R|)L z@NLJxdbql>hL0N#BU;}=-zAZEfzj`m^Wx#GC;+qA!oMEQa=Drzc-=q-8zh4a@YTLYk1_gv6$Rgtj?pbxi=T5 zpggP^&r*Bz=>kIV&%JjP+;hh}?~QvWjf?g*4{nryBtL(Y{EWw#^Zn7_cD{|MZ4#Bw zT(IByIv+b{0(i$8oG7`S;O!DT0Rx(7gznfu)DDT7h}0y5;*{N_9o?7l`UmlolNH3`*=s^e<+zxX6weqx5kxy*XjGNO8=l!ab-_* z3Or+pjVoh)93$gOOpQvPt5=jh$?%*(z4r&0zf1Po6c%Gq#$@5M2Uf6sqSFPiwS0%4 z5Albmu-^JObnK*%cS=5|U}95QWY-F>`Yb&5P|sqfia6 zLiQ?Gr?W_w!|$KY{8!lFsKGWJn}0fsW`+FC>8u~?!uL*R&jnzR4&JATjn?CH?4kJf zNb*H&JgeY;E`m8*oe77=FSbxd+&hEy>0=~3t3`=xbUnQ|ZZTyP3mmQW=5NhpJqP9c zD)jal)3PY$hj~A8j7z*iqD1ZKTDwY617*N zW+7E9Q2U75CsDqG&)EjWZL_iQW}|V5QSGQD<66nM1gSX!^$Ag*NYospN{Qm$mjWC; zh}thu75Bn3CH%!w_9w2+6$JlG=${3Y7tdu=n99GH%O2xunXdav$5=Ta!DZ-uK8vzt zn#{g?(EGCC3M(HopT+5;fZOI{&hwF6AUHon&JRg?3y@j}lZ*d2<5Ua`s!#Xmo zlMKt*l!8Eu*lBBJlV)+W}ZsLz$D)3J0u91oxkk`%fkJOEAc#0(F?E!xFWWEts$koR>o>gt8PI zl)$nUN;;J5P%5D=2Ld?(OJ5=mrba=1D}070E|gCo;OnqXH~gFLjPdXrYgiIB+Ap~`Vf;u7vRl#cd?HZ-1i{M{5{977iwoicoYTq}hc(7d!t%J@!1_pX| zxzV$ZzmncxCB5b7bp?6l-ZwjD)}s=&0;!ckY@d_X=MuG&)z~l|mla}wc#`?Ot5}bK zCI}~wk69&za*WK6N#?82$!a~6x6E+fvl`EPR%87d!TE8rJ}z0WVH5i_fTxYH^)MF3 z7*i}!5J(-=xuKkZk_exJ`HySZ{ajsV93&>ZC+fA+^DvxNQRtpA9VDh5_V3!KXa4`MVq7cw60QkdAuNtC#dPvJz8W z7k*(QOY1%njJHAA1!W_YS}57P-zMRJ`V?uLk~B8q;l^g+c=t3>rzL7LTVQJF!mn*+ zX)%QewFH!qhO&9k;du)y~XpG67!}}j#59w{|xIh*cB#Q&6 zdx*ueKl4$C;IU-=)ZiZk|3iWgAzY_7!CyLtK%+#}A$8aYmD>(uo`+$dH->+4825Qc zbdAqC_IZ~ijUz0ReZxOI!d~L)Q9~-}2MX&40ls}Fp(V}*&qLN%j?RV0kCm8om&qN) zUpva)HJBdl3MD=>3+HsYnt_o7TxE`s~F#T2Wp{Ln>9i8w`g8wPOrx89Q zNM0lAnnayp8K&kge8(9!m#b$5`X{1)lIXK6-PGEJZ#~QAbG3nJ?)|2tgRe_;19JsT z42FrBf7^hEd*=*!Zaar*pJTzlbgJ_CHqD=OZgOR-}fl?VP3`l6)bJA z>0 zVPA9bfBC>B7H;~)&7Dmw0Xvm@f52&@2@}3-c;vRr*l3rr`l?awxJ7~7k^;Gk)HQ+n zH&OqVsB1`F7pU7r-Il29NZk-lA@2}%N1|>ZiiCUan8W0YW9PSYW z?~>qM0p-OWmd$$e-5&M=S6f*gKRq07mn5?fnWz%?uA6@v9u!>r)U{ftuLyX5{9q@P$Hbp0i3PH+F6!*f@{C=%KiLxUVDrmve ztfv)Q!=+jm>dt)Ld^jvNGtYk>aK9bUI*nQl+{o+K^dUJ4^Sc%`*vbdqbmt@6@<7e+Vp20r<(FL7|$BsQpXb_ zAYkG%#;8lhW{fqW=eAf=1fLsgn#fCHO`ZAiSkolF88#+9B;GU{B0tVsww{`V69!*Fc-6li-Opx7zT6lkBtDW+)te2S?je=o(f zocBwG?GGWipvP^gAn;U=ucnzIc}bdS7hDmB>U-JWz{2L6vZ5%)C@IEt z%w)JOz(T`&6V+RwJ`5Pi-yd!Y=ZlAfyW|X0ddDz{COTT6xhuo;8Sg*B*J&rX=K*UN z4;f+V&0iW}`Vg-78ooGOv~X}&CWeqjct@}?Bpf3NXCawQ0^AEv*!ssztVCr4x zNKG~Dg-K(xlD5qyj#YOF-9L28}uV=eaHI;^S`4D-k^Pcp1TYQ0Xq ztit5;KS{<zbpolAI`x&_ch5-BNrdWk z2>Q-NQZ9+AN9r_C`aJS1QO`=$X{62=THJO9(>#L%`K&OIpCjYvB;&Ja+#rmDVxo#A zssX8Uh6~5@L_IH2=YZ;S9*(>RorfdEVdqVQ@W_uI$RvKY#Ggmi3!sXd8lL*RK-3Eo zbpfeH!#B4zVtS33-X(pnb`j^rOGq{exy&KGIg(xzQkQkTANBruNrEopfVe6Qh*FX& zm8h#Ibq%ES{&|_GmnG^NQrC5d(ART`nk!M)k-7mCZbZqU;RS->%m$axZZ6Ukeo=X;pazm3h8s9Q+ghO;9)2*=)em9$=!sM|<23vIrDs09+$ zjFd5WYmhEhuUgL|-H7HHoq! z6$q4`!&0J_N>m_HLFTbOufDU-Ah?(33c~7OquQ~IjF*YVPX?P~`SM^hhbJJ(kM9Xc ze?R_@h`K@`#aO%9ce3uA+bT$~LZa+Qg$mRgM7<$WC&J7suLw0)!i67d1nza1p) zi833fl`BbWr9?%cRy1k(JpP`j-%C_9QaFU-;!X{Jc+n%A&wesFlsIAHP0NoKh3Fu?3Pjl_onVMq+X zmK|ucKer9UHXDf5$xy9t8wTi$m#8eHvW2)d5w%I8vXOG?9!Fv4Ik757kl##( znq{afJ_vIF%wn)@ir1Et6+>XB7Dp7ezjTb!rk+l9OQR9)y7pQGSZIh^cq$U^? zw@tuant;_4jcUgZGTtE>PsHIe2?mv()CWX;AW@T0t3c4ICaPMZ3Q%h@4N!U>kEjnN zYBFj~0WIC*PNH^7)D)zq8Wgup#iXWUbs+_UPrpIu6=KzNq1Shl-fl^6I#NXfwTGxZ z5>SLllmZ;fCl?Z{<5>+cvB}mN?v_2u~6N#FGRH>diJcH(+k@rhfDN=I{EpD5ONzKLT zG75xyUNOTtMj2Mk7aIH^c|9oU%|~j1kij9M4oTDk99RqWf%V&tZuyHuEkvzyL933m z>LjWhsU-%*ZA&nNC0M=GsCFDChBV@6{Fwg_vqW-ZZpG4!Zt9D*JUw9g?KNL^+n10Fj7az2lsx4{c;4W zjtXvnAj2Od!=p$YBe%ZmOie^JNz^f@P!GCqk^y+BZ(N5ql?pq3&%f+`lm#lM(T_}T_ft6M4dtEtkAMQ5%rTqokgmF zw0ut!@sI}Wmj;aY9K@?n0zZ@W&yw{yq|OUj-5~0QM4d+;7jz%rWA9x+!$!f-O@?mC zuo0W}(u65AVf|&H0sckS|B|dPBXw11%v(g=lBlZ~ z$u%L~e-rg@iMobb*C`U;XuD0+ZHc;$)D0o7J4D@)s2fPRjkvhYjib$t)iY{t^bFc1<2Ex~uCW*gxC;E@5dg(xJmRp{Wr4^{e#i?##4v$@ z%QY5oX8}l`HcdpCB+7!6RiMm7nI+1KRG_8f)+e_G!tFO#AXWzn#sOp;AQ=Z?w80kN zH3;9EQ2pUrB`O%TLIkZ&q}55HLXff(g%9Px7G=k(P{FV>8FrQoLotXj2twbigNO=} zs4&zDr#$fq9JoOjZh2aDdtcB1SOrJ`0WwZHF-yBks6Bq|oEc)ge4U4A?y9#fA;9|_uUfheC0^1k_S z5L_Y+NyZeC(Kr^3yNTMPoDix_Tof@k5UM~qsLx<@?xKSh(B~j@} z4Hv@dO;m4*8jcP#C@J668ckHRL}j4X2=b^u@`9<4!1_!f5|yk~$vP8#WcevP-iaY9 zMxwG%D_h?xVv8a`2XmMK} z&O~`wJzlRKr*}(V$#y(K`NCLBBoB!am5DuigWiOQC!3Z#|`TBC>>B~i16^x(b8!sDr{ky>NuImQw-R-)Em->m}*_hr79hY^)4 zQR`5vQt+5ZRGvgtBDG$p;OQ2E#!1k6gsR9P4gM@DhiPSE`g`M*XudRu>r8`xp2I-)lQ-cmY(c^*N% zqd?-UkK^iT(tBFcJBrjXqI_==^EYLYL>)sH$A#9IL0U5;>Nrv-1ZpNxGbQQ-QYZa! zdAMXWTgU~C*L={U^18SWUw4NvGd5JoQ)On)tnHK1~^H_C3?7It?!3Ff%=+6NAu7vbT zB)vwYE)m7O7dy7Q7bWTvx@hui!4&40Lt1krstL6&>v_U6Ed;$JL6=eLDkb0>Ql&(d zO4L=Pt_jr3M7=Cg*O0nyP~3JMGrx}2H-u&sh;~Pl14P!?cQDqY4M(U=~xQ=;5 z&6B8`NZleWe3k`zszVb z*Om*(dZA?9id386V-Zn{B&y8 zP)mqfB2gBktOmtxR`~6h%Zk;3dKfThmy+>P$v7|o23imp>(kQfM7=IiL8uk%r*P0N zBWjsM1tS$g9`W%N=(-TBvI~Y4WLO~?+K~!1Lgltl%per2!zeL)E=6z2<&tq2QsIWN z<4tn$rbLBfo)H1YGbSsDS|L#ps1-@!a!*gV1whpABq|cAD8b`OqE<>&6nc#Irw)?_ zw?)Hs^=G5OI7Sr$Sw+UHBx4m_#0u^97Ey0WR4lrP7qnIrwOXR$Q7b_RS0hT3s05@E ziQ?YA*m;R4pJd2$TM~9l5|RUS5?>fadg~;;0Z0uLGT=mUi5iGhvOrZ5RVh))NTui= z@#ztw-j=8oq*8@E*Aul~qEeAcGbnCL!=%!%I^C#tRFQF&WSovIGTi7>$Gb$mD^bHy zD+4I~iq{6BHb_(kQX_=a-y`Zhi5h`aCTZc*BhW3GSe0cMa$6Q=kcHLRMzv!T>1~qq zvM~cE^(pt_OPz@NgG4z|D~G)LX2Z=yZI-AUq{a%=7NWLD)L5kQh{AU~=^nRAR364P z-XFbhYZ;GQ%lH5|5Y87|Y$F%jB;$N^F~M())6;gMwoB9mq$UblJBZpLQ4^7xBxrp= z)CUqZ38?}>tD2~4i7G&9vOaDf$IhFKRa1m6ZxpMAV-oYAR|K z>hk!aB%*dnR3TE+g-~}BwOgX5BUKb&+=cf&Gr5P*JrY`k=uF)$JVL@lW(L46bS4Jv zGNubh4O!Pn*1kR8EFqk|M8O~R5Y9hmp;ob=wU4NM5>EmsM$!B2p(&R zs+Fh`q~;h}+%^ZdsyP@)slL6ugk4yQRdf9$9u5AP^!_aA%|*R3y_N9IL_{5ss4}GH z3$Yy}>Yzl;M{0pEXbur|NTL=XwUFZCp5Nk~wuRU)3$eaj@KHzBb&_>CQcDEtQ=&eV zs3k}(B_F=)Fo%gcEKy6bg_a4u_Zd;2Nz^i=D*Rg5jz@?(B2g9Sak&u}w=KthS&r2! zs2bnj1O2iBt5zDM<8#vcT+&;K)GC2GM$|EhT7}eVT^`=aTeRY0jZ6GRy|Sm615SjO$Nnnn=q+OSiRY(cAO^T(~|LKOnoa*zUxL?0^o|rRxpg& zMpeE&&KWX1BN=W(`5l7%*F=3SQ9F>T_RD)dFzZKgXCXJkqLF%ZX1wZt`zB!83$As9L$hb)|K8DnBGUi@WW02M5jn!ua<7;Gm zO)@@%)LDW0iKw3>>MT+XK;eev`3AeC0jthYm2b%WOol&8hUaj|oEK*78${iZsPm|G zfr8*(c+U(Exqy3^3s~Ry>w^b3Nw_76Mno?OdHh1uFA{YLsV04t{Ls;bHzleGsmp@a zzewv}5_K7=s{(b4s9O?s6{%|m#ckKHbFN{#T!(7?^!PRz--73YC~tJdCxxMDpj_%!t3y%oN47L%>lmmY5U#?6xh1U7C*lo!6*LDBtGje00RdD(1;QpJ&?LGjvK^D5;F@Lj)2DhK*p0#5P{jYUd6MF^w|19*yB^8U@?Iz!!i~hU&<*cjirnMhfhq1!7KU({S zRRHyy*{*4`i;8CysbeNQq9&KYbv3Jg>g`xW@=TB~Qv1AwTSw$N#Xg%W_DN81Jsp-R zlmoCn6Ut;Ljc+UVqfkPi{+55a6PD}!>&sv{#lK#*9@e4cLqQ%($|8TIUhyB7z{LDP zv5$f`CvSoB?=6b`m#y@>oMG@v;&D)>L74$B9^Q`c4~BmmVEx($u$4hM1_eL=x-5hG zu*vXW8kD?I*-B^l)7oHb(l@K_@PbZke3Q^Rw-}#gvF_*bR;%v?MYyrU1x0w$#$~m_ z91z&iwxNsQMW$$O5zJG{)F&{$OYq)Q^)HJ32ozlY|1DKua{$U*&^Zm|h+j|CStNe= z_4;No-U&uC{mv)Dde(ms`L&(+ITiTW|8CR$KW3#j?lgGsCbmw1&^o%f2}H5zpZ{N$ z`w#McLDpGtS(bVPA6kQbMX=SiC=lLKIuJ^+e~If@^8Cvczp7V$^;zftTfP4Me_8hQ zIr~pv>TR>A6SYkzp>6&Xk9Aj%Qt;R~@|Uyt^Ge+k|r zs}3HZ#wGjy4N#L61wV7uuJ-`Ge~U5;6f%RS|6t2$vRmPWNuky>y%8Lp3GFPQp@0^L zSv&K7Vb%wAl-t5^0}Qind~!219gHfa29_}2D@R}n0?HX!;!gydU>N{QOQ0F%Oht)@ zWhYo>!!i(-C9v!a%W7B#!SVzwyTGy)mcc%M@OxR_+T9fTD23NW2yXy{Yy%jVA+XGY zWmi}(fMqvWR>Lw3md&sXhh;pxK(;3=vtii_mL+_9xOHSIzHN01lp-j_P)eaJfRYX6 zp_fZv08)AA+2?0K11nk6W>3SiAvW%c!1*aspx~u~NZBMR(pnn> zf1utDcOdKoV3`i38Q#5afyuBG*2|$(@rRRPll zk}rw2Zr~fDt%*EGwZ?QDNZN_V&ePv+$6YF_#)7KxyHxD>Sgek>`d(qdJ#khztdGa4 z1i`<9^c<320#b=!s2{$D5fvs;iAW`pmhbIf{*1dzRFV}Ag$G!TJ1F6#6)sT&P-~!= z!9dJlAXX(nvt=sI|us`;i-h6F2{<1YZ3NHMUneXJKC;99tnWdn3 zs*q(QQIQgrYRxkpQ24%7oHWyP&7omY1osl)^#zLihn70$d4jC|*a11xLTSsrw?k%yyG29FYz<+yy+cL0;GOXJQ0^pD7FnCSKQYSl5I9mD3 z>!ak)Z!D8PvuX0@-~Q@*+ivw9pk!5Y=M3C=HC@f?GX z%CruGUr^y2*L**s&r>NORY(Z8PW|5r_=A#RP@PwTr^8fOOaF%(dY5YW5uy)PiJ zDS^?H&*x=Xhb)=_?~z{$JLM`Ug;2_%Y=n{z1xWE9zPOZ)R4Quj{Yfat>g*@QNRqKI|B diff --git a/firmware/src/main.c b/firmware/src/main.c index 8b8e3f1..d1bf017 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -199,6 +199,15 @@ static void cardio_run() nfc_card_t card = nfc_detect_card(); nfc_rf_field(false); + /* Double check ID, some module gives random false data */ + nfc_rf_field(true); + nfc_card_t card_confirm = nfc_detect_card(); + nfc_rf_field(false); + + if (memcmp(&card, &card_confirm, sizeof(card)) != 0) { + return; + } + if (memcmp(&old_card, &card, sizeof(old_card)) == 0) { return; }