From e37c6b2bd90508ce2d750db085ccaa3fc19a0c0e Mon Sep 17 00:00:00 2001 From: xiaoting <31891223+tink2123@users.noreply.github.com> Date: Sat, 7 May 2022 19:56:38 +0800 Subject: [PATCH] update arabic doc and ppocr_v3 doc (#6162) --- doc/doc_ch/PP-OCRv3_introduction.md | 24 +++++++++++++----------- doc/imgs_words/arabic/ar_1.jpg | Bin 4815 -> 47998 bytes doc/imgs_words/arabic/ar_2.jpg | Bin 3709 -> 13410 bytes 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/doc/doc_ch/PP-OCRv3_introduction.md b/doc/doc_ch/PP-OCRv3_introduction.md index c7ef4f01..78e517d1 100644 --- a/doc/doc_ch/PP-OCRv3_introduction.md +++ b/doc/doc_ch/PP-OCRv3_introduction.md @@ -110,14 +110,15 @@ PP-OCRv3识别模型从网络结构、训练策略、数据增广等多个方面 |-----|-----|--------|----| --- | | 01 | PP-OCRv2 | 8M | 74.8% | 8.54ms | | 02 | SVTR_Tiny | 21M | 80.1% | 97ms | -| 03 | SVTR_LCNet | 12M | 71.9% | 6.6ms | -| 04 | + GTC | 12M | 75.8% | 7.6ms | -| 05 | + TextConAug | 12M | 76.3% | 7.6ms | -| 06 | + TextRotNet | 12M | 76.9% | 7.6ms | -| 07 | + UDML | 12M | 78.4% | 7.6ms | -| 08 | + UIM | 12M | 79.4% | 7.6ms | +| 03 | SVTR_LCNet(h32) | 12M | 71.9% | 6.6ms | +| 04 | SVTR_LCNet(h48) | 12M | 73.98% | 7.6ms | +| 05 | + GTC | 12M | 75.8% | 7.6ms | +| 06 | + TextConAug | 12M | 76.3% | 7.6ms | +| 07 | + TextRotNet | 12M | 76.9% | 7.6ms | +| 08 | + UDML | 12M | 78.4% | 7.6ms | +| 09 | + UIM | 12M | 79.4% | 7.6ms | -注: 测试速度时,实验01-03输入图片尺寸均为(3,32,320),04-08输入图片尺寸均为(3,48,320)。在实际预测时,图像为变长输入,速度会有所变化。 +注: 测试速度时,实验01-03输入图片尺寸均为(3,32,320),04-09输入图片尺寸均为(3,48,320)。在实际预测时,图像为变长输入,速度会有所变化。 **(1)轻量级文本识别网络SVTR_LCNet。** @@ -153,9 +154,10 @@ PP-OCRv3将base模型从CRNN替换成了[SVTR](https://arxiv.org/abs/2205.00159) | 02 | SVTR_Tiny | 21M | 80.1% | 97ms | | 03 | SVTR_LCNet(G4) | 9.2M | 76% | 30ms | | 04 | SVTR_LCNet(G2) | 13M | 72.98% | 9.37ms | -| 05 | SVTR_LCNet | 12M | 71.9% | 6.6ms | +| 05 | SVTR_LCNet(h32) | 12M | 71.9% | 6.6ms | +| 06 | SVTR_LCNet(h48) | 12M | 73.98% | 7.6ms | -注: 测试速度时,输入图片尺寸均为(3,32,320); PP-OCRv2-baseline 代表没有借助蒸馏方法训练得到的模型 +注: 测试速度时,01-05输入图片尺寸均为(3,32,320); PP-OCRv2-baseline 代表没有借助蒸馏方法训练得到的模型 **(2)采用Attention指导CTC训练。** @@ -178,7 +180,7 @@ PP-OCRv3将base模型从CRNN替换成了[SVTR](https://arxiv.org/abs/2205.00159) 为了充分利用自然场景中的大量无标注文本数据,PP-OCRv3参考论文[STR-Fewer-Labels](https://github.com/ku21fan/STR-Fewer-Labels),设计TextRotNet自监督任务,对识别图像进行旋转并预测其旋转角度,同时结合中文场景文字识别任务的特点,在训练时适当调整图像的尺寸,添加文本识别数据增广,最终产出针对文本识别任务的PP-LCNet预训练模型,帮助识别模型精度进一步提升0.6%。TextRotNet训练流程如下图所示:
`-lJh zJOAqUpL0LkuC8}id^|LXhPT|IZ_T!Dj;cUH)m#UZG#b?2VyREz)w^#|z0Ooxn4Fcc|um5y5)-NLs5 zdS9fOVb(2`G#Ao-3T$oeRxcOI($Yblod9&QW!_n;i}J}SSIu6ZbocW3;_!#R@mp?X z{n|^A>dJ0*`|bKHa PJ+3EC2B(QhBAM3T(8yuEK28&c^<>I*efiA~^6n<)E@aeu!X0pR#gU~*uhrSM zd+hFQJdH^PSwNu-)l-<&Dw4Ta&fYiNaeVh8^?o1-;W9$T69f@} Y?{wN@q?tRMJu{={YJBVZ`o&Lt7Uy@S2-XT%WO^|eqpJ^ey@3jW9>+Fl+U>K( zY&PY*VS)UVICs`QI)iEn&K1gjm<^z@^^WsSP)r8QyPcC1CrvrZ-09$qrTMyN6X=DG z-dETy6&D@W4r0bBCq*W@d;~$7lyvVB9W7=>8fCN>R_h=A@F&0XkN?T%|C7J<{0Beq z&hBQl+O&)=RpPY3>5#}kmZDH(U??@_oc8+%R#v ns1V8W3TBLh2HJeLsq%9Xv1n0Krb}w2=MZi z1Xu?8ggCaSU~=iy=>=IkEn}~AoT|_%AYq3>8|rj(eOAXYx!>(}-}uh-m2W=#nU8Pp zl*{R`!(7Zb9anX=alaCl*q~QD3{GvtyJru6_)q`Ew}0z*-&l>SHqF!VczshxU&z3x zUOoVXpSa@-?wN=lzC;8#7;I#9QnDlciu|b$eh_9YqLh^qty8 HAohs>x^b*d2E~25c70aHg|+?{G0z{_tx9@*PEMpx4yH!+Fzn%fpPAlMb?#- z5==zGI^?}S99DPk?LZ9WwU2(No^LJ|g&b0+jtRlYFoxvCBXby6DAlY0PAt(!59OIE zmU02iw8A7p+54}u3mPJB8#H^pyW=TXf_Av zK1R&Z6 $m|~n=ym6%+iqF(d{X)7Uy+%K zl1VL5co!d(lxeJ8=tmuxK2@MjjYf2^t7Aw48B6gCaBvBOK&o9{uGZzbJ7+)n(f2MM zy<6|!y*XYRE9uf-gY6gQu))bn!+zS9ayHcOf8}f6`s1(Oald@@4w)FSJ5HlpyFT0< z)>qR(F0czdBaP`GJb)}i&{TXlyL11!7aCl?6a$j hHK%@-4QG96?>M?#YByMMUV_o~rJk@(=yWM -}xW@ zm-6*L{_KDDH(z=4gS+|WxVyqyyO9GOnf?CMai9aoV_fZi|2O{Gv#h$>P5Y~1bWOT= z@9pziF3`m|gS1oULFoW6;k{!3o%QZ!Hdn9N!h)J(W*mon_QjVrFT8L#^%fK>K`B|P zNouYx&$iH=)#c8j8r_B}j8p3B<|p6%(O-V$Prv`|Z@u!)j^wL0mb>SMJj}Zm2gY2h zET(zh9j19)mCQ`dAY`tX1(_FEVpgC@GOs%M#*QH^GTmLXg3ywAW}fuj7gPi^w?ga9 zcVMzNUoVO;{atM-MPX^uJn_4Gzz#0W7Q8LHx_cTzktw6Qm{Mlm->x5CU2=72C|(Dj zv9ukg(z>SsPC8)%Fs$mdJ8Zq~Zf?%c&JPz?|K?x*&IUH`cjvY4+wQ&V$LqV> !04- z`~KIz^OZmQZ_3~L@{3>iMVzm%3)*zpOz-;H`Qy|vZOq}tT-$rc-}~?W-utfSGF?Qw zW;srA^weNy*^E9r4YcTD{-sceJUBR%1!x=HpqS_RR@$ZvD>G@keYYJy{K-$El V!k`9aeY0sux$J3x^4zlZZ@l7ZkK=g<8S`KHy-}!cMd;(G){bT zdtTR<5fL$~1(?9(9 xjBoUJj<3|`IJt%_9QmW#{YnbrA7u-^HFkZc~^%p5XB&P_`TVoGd< zqO%NjoLbD9a=^tgRs5X(*7x3?fB5L$C!W2yyzuSdPHQs|ETyp%yHHRj?Go8qyW``t z-2Co8`e!ff?fUJ@%}^uv#d(f0U(G`}&+lJanWZ^Zl~piF83mQK_^Rv=yHeM+t{z=n z4;-pSrp>;FBxEqsn-~E}DliXKE8Z}caiV9j*}TLSWjgxdXpumHnG`MMT^R9%Ufo{$ z<=; a{b!z;=J^ECfLerNx;@<-4~OY6Y}Y@z+6}AWg_qtRkFQqy_|fnG*?Zso z){p-5o4UMwX1%$;@hlVZc$yBGExTF(@>FL;SH3)v$QR+Ti1gd8pG7HKX4V j@~l8XqchrOeEznde;MS!EsUvm2?t$?eyWNUtPsxiO3f=7i^LFk~;~o z(2~d&2AOwZ7Zuv>=Ek?{%ZrO=%@LU`s?`qZba7cN`BG$yS}d-PcQ<#x`A2{JSKs>c zO^emK%+t;k$+?3nOM=){Jn^JEnhUQBJ%&mlGm<<^lWU%Wu#u-9peUIUxhUL*2PCmD zttGSRSP-F>8M2^xp(z4D7Czy;pM=vE+&T#^ef=lMPl8)SD}{74&CW1Ww5g7x=EpB= z%5$spx4-wj-~PM*{ilB67vBGKKd;pb1XsZM%Ip64JAdzgx%uW_ynt4&FH7!JW}}*A zFq)&K7SIY{NKyoP2?Slk+>j#Ou#}E1LPIIXW79AmvOV+CEBD{`;$_S%BRWLWiF@>f zOnQE^edpprWq#>}_w62C|KO|NzWMX-z5NH@n7;p`O`GpBHk)DacAPE`(@i0iCopY! zw^)R37TuV>-!wC)wQRRgZ>RG2&hw5ecIti)EYx#TiYLm$?Fqe&E*68bfS|c_>~jzl zozr_F *30 zBS3f#(URuoCe1RbXpUpdP1?<28{B=q*70Wk!EgP}cYgD?xBtPHfA;5p&R%>G*T=8_ z!+-R{fAf1UTOAapopF*{mwKc!Qpzk{tEm6>Cm`CwK3}Y-o80 7yTb z9rw=XtD9coSF&TS%i)u*ujcb|KEHSK-q*hN=fC%d@BP_#Ua)c8?e7xn^A$_%+U52B zTA0cxy6Yx7*`_;~E`dwZ-Hhy^RA!c;xEBeCH0$#y7Q35$-Ks6u l%i}zbGP5o({kyq z2gKgsr1W0 Ufxro8qwEDvXl^teyO`bxVNknzYvE-cZ71WbO6+ zgm;=Qdh7AiPDDb_{S(n;O#4y0-Jz1DX{L Xcis|VrwKy4-c0O90bDrb-|Jy&g z{H=fe3%~ODci#EQUw!Q>uix3m^+nmPC!eH9law9h?U72)?t6=K|BVKx5E-}EH2cl& zrqN3SRZE!dp_krx4ViLtuKPj~ 5qI|DocHG42Q ~OGw83%X5gj_~y zb#3M@g3vcNnXpAn1pp#FT@IxTJnj#?O}T+iq~$V2p<~e9Pg)NFGF9C@J(UhOD_{zx z^sx*iwTv**LT>Db%&}CI7m=GMmqA ;K!Y58LsB=c|YBz4iRF4{oj>!Ls#!m%!3S##4{YBAU@d>xHQ&AyZl;Tue!MCv4Xi zKp79haOeE|g%@_yF^gHTBJW41N7&Y ~2Hh1Q#*NG2>KmmxAE@7A+#edQb9`QxwE>w`~6 zwp|2 U4a4x<1CKcF9$mcr?1T3ny}eqkj&rllOj3`%1k02$vh!e5rWCp~ zu$_cw;5c<5C_B7hA<)Yq^0}8@!ks&ZHfg=d-gntG&-##?W$M7qA+Oi>HZT9ppR+sm zC;#HNr^9@Fx7{Dl+aU!*1zQxPF{ACxaq4R5lHS0nxv9s{?(SU3!_ra}atg}`f)s?r z9J7IL?(&c_f@C$HWm3bU$6{cY$w4dwx=x`sOeyQic&AkE^aD@QUy_Rkrn;9mWGw5) zJh_*-D`R!pD$+|GLyYW5?gTb3bYnXl_E(qBQfTU;@=qzz0y3q}$Mx@i81DS~#VJx@x89ZH}J^}i@fHWQV_9SiZ)WRNabf$gJuv3!5 zs}H7PS?A+% V5}FnHPT9 awVCY6XV)VAo?IM5;@!f8Y)EX^_@ z>&n?!8boNWlv&Aa51xMk!-!+htqaUDmFgt$WS25LTx?gvl)HGef9aDSyE~ly@jw0- zQ|?qoZ0xArm986ObQ>*s*n3^~d~{jxQw&{7SsJwM1YHxQxXsG|RzkV-3kgu0=2A*2 z#c0`r%gCfc2f|N`0G!(D%*--C(j0s*@bdYyp3k6!UZ$dcL<%QNX3XZW65%6oC%I zcaB}l8L$X?C5x-61>EV>G#$#Yy*cbz>-FW8)7reVVb$XwEh^^T#oOooe0P05i#X2r zx7+D>9hll7S&Y3xzyv5|JW*Wk@e|0Cx blxab`P!l4luA}u0d9} zN|@yHq|H{$mOad{p=6M-fi-kgFHv{>c81vB2q_iwLJNpuG0V)&G`8N^X>6%Pvtp%` zK6Nc(LE4nCESXu6WNlOPGRi&r!~p{m#bjVaixvRfym)P;O9f_;uQ;GA6OqDTLzVKl zl%K4S20kvhpF`Q96`p nx+-KhZ zv6X-0*Z
FA90^wz9dqGndPg{3h~a~B3itL7FnSP0vPtd#Q!`v|RvsaVTk zYKUBUHR{mjEX-mNfjLLX1XSxB0+ND5nO#2CD1|wt)~21I4#rTJ*Mk}~4;bzpl5f51 z$C=yJO{pa~P8^k4IF)(!mP7EE%44b8YtPbl^8v*y+t6yvN0CwMkwKs)s&v%O+{{WJ z20)Z9B2tDLsg`qS4y!HW^77j6-N}qJ(o5dLDL?^195va9E6w%Z8EVzV{_b$Ln}2w> zY-$_k<1uVr2%%aO44;Mq?1`^9fn18kJ`xr&-{N1mh1-+HLO5g@P<8~~-RlW&Uf{Xg zeo)-L`RRR5eaDLfS!$N27s*ZrGNX5vPcB|XiX+m_)(>8N$yUSTn=2R%^y~u;ATG_0 zChUnrCSZdX54G0rfAE!G{ICAb*=Ih;*Ppvm+xX@_w{|VFO&hlnoi83#8sw&89hG~s z?l|#>`GgVf3(m0w6z*OZKiO#*T>87`RD !a1WTeuD4am$uFk-VRvlh(D9U?y`GcRw5^wKOY+MacX% zALuWyrH=@8r 3;NmmbGy5Y+AGTz>0m!+Kn_v?FJydM?!>p7MEvE4j=K zTeNt(QoZ%BJ~E(}rFd%Ny L zwH+_p5knskiIOP2!eKlBf (<;jhhn4KP_0%UE+1d*u5SQv_~7n;*5p?Qwuq0$O&?Oe)kXH`IXJIo9KhH(TL5#7wF53A}oyqENoN$SZm zE!PVM+QLUCb((sZ3x3eagk03TKp;Y`^@!j4fJ})In&&(f2s`C%vBXfPC7lkv8yvk1 z^t8=bIFw9TZ}`XQ=}&J8)J&S1^3HSj)Ajh`;W&<=2Br%o(-R`1>)HvJa LNY=DuvBcuEJd)v>HyP}*}{h!CyoaD zo|)39K4rOA5*K*1H|db@MVqY;hF|Ifu(UpOl4A8?e|f#TzHt!QdS?P8ovN^s(&?*V zMpHo`WN2yu%`r(KBa2%hO@Y=jD0dZ;b#b@_j>;&;;w*+@rn$|#gXXy?({!7y{ 6 i)dAReGtQX%)aF6%UT*gLVYB(fm%sE^9DnrNf4qt_%xz60SLUXi zQnM*=5(4Tlb+RLvyk%A9X~gvH|0a6#UMip1R5Mc~Qp0H$W=8Lk=wziVZndlidQM3U z<7$K#x!Y#db~l(BA`Rv=6bY73rlxeM0-~n~mWx9|Kz(?Y3|(SxQDN=Bl`f-4MC*%O zY8jBncHHkC4CV4LlR HubSq}tcOj+d?K?};$5P0bmZ3(y zQAJX=cGw?ouE)D~XhvU*@uD! Pw$XubUMroCx>`@lAb!^rz%pv zc73p1532H{rkl4Kza;5}wU{qMMkBMCvKnhOGg~^=PORuYY2)OQ7Rsf7KqR6YKADz= z-(qy@Bih1{>`fm}j!T Cr8^u^Cz+#e2SHA N+PQf(&6f+%c?Aw<@S^= zHrb#q-nP`#0y@rz{*zn+)!x)-div1ZzR=^#e4;SXOKYd@-6f}7$O+MIxgUKjau2Ng zE}D0(*Hg}sLcn@rAefoEvpC(j1oq4D9&w4RlG$5d`jqGBZB8b2B?;3UvxUwA_M=DN z`2YSEzWu{{braCRG&uk)%=_hP@p_mKIkC;F J>c%Olo1@GuJ)*J?Wdb@{oKbs@yz=_5bN#4TE;UQ) f$lg42>Oa=;DUU-*S{%hm{Xwr)ESa)#L&g zP_%@lEXYt<1kL~ikjYurk_iT>h?xc{suxpUUte<}T_~R*s;3W;%N9gLpCWJWl4`Bw zqS-_&bJY3NCOvsQ{rwId+$Ov|n!f!jeZMmk$kwKaSqf5RvD2B^Zc&$~es~!L+7G(B zcfqZ`+`WX>&-&7cV0|nNPn@&m(D&4&3`4YO1OL#oFTC}&Z~pmj|31XIwb>Ah*w0hM z58%S47`dtAx*=|knnGq%BF(2cQEczJ_IT}cpZN5z{qozs6N*@96{YrJFEVz@_+leF zrRd2foG>MxDmM#MWQ!LEr07<|3#XjJ5(Vi@W)ILw7O#h??WQ?>nB1?E_g;DJGylG-A@0P7E`E2L?4`d zxY?aRj`+7uDcL705J2Y|nc29iWf)2i%TK#gve <;sb!z z?c&mC+xOKS&OGI|r>784T5`lHA6(2=<&4;0ZrmrUhgvz0>#1zV)%Coyjj+Go0CUl$ ztL)R=LCZeocg~b*DU41!@m}C%VKNUoTJzl2hdAmmz4_qTKmY&zv%9ao^y07m%J*+B zhGA&?sgCPf%W*#X=!bTEuy;`hga%+JFe(E|OzqB45fL*F$K!bC&P)H!7al(I;Of`^ zNxj)U$TM8GhP*auwc79ZD-Cr*g{R|yY{;R?Ntw6Sq^^pZ%GPCbN-4*jGt)V+qalel z&)Ym(Yh`8!wy7%B>Kv;s`cms|YG>ta2=`Ta^KX6m@k?93^Ww+9_=T^2_u)4ESdNdn z)bkYU $GH7l$VMz)NJYOulFAy LXy<)V$0~&pMLzwTal37FnBv2$WQm%Zo!s*-SXbYE@7?{Kvx{+cs2lkm!?_OYTOE>9cmOjuTl^pr2&kC?Y{u}Gvq7Ba zbuH_$Zif21|KJ~AeEl!p=NmsxWnFJHwTxmO)9kb!R0Wt~uoq|yG#`g!o2S&cS#v0l zt}f-} -c*2zcKsyblTD*z*$vZPo!j@uBSe4nP`Q+jgsi*Oh zKp(quqW#fJDVz0~^<#LNjN54?eXMzj4xZ9!h4k#51jbuF>f($0vF&s0t#mlMi=RFn z_AJL;opNXt=3(+dj@b*FV@i4Yz|}4?UVQFT|LNa(-!Fc?J@cI3d!fzSGk-R%3l>1^ zFspT6+;f_2Qlo`2ie>ezHds!_Q5Y(Z)9(2@+xdq-`lJ8PueZPW?%g`>+d-Q$Arw(S zcLzOaNsGlByXZ+YssEBW#aeu*38DJ^&wb_tU-+emtKqs1=g+@jR%)Xi(?uW~BN*zQ zO`h{oR$9K2O7BNpGFmnBzR1xV)Xe0XZJs!RF_5)5iqCE+qk`4Ohx4@l$Q!Ty($DUk z^YJ(ZraS95zVu5M_cnX_s?~L@j*Z7s4?}IWuvEIG`)o_lkH7ZH#eUg|;Ph14PEuhp zt1UCk4lT-ReSNdv@AvL*#X;}s695xRSZmE|Ev2;9dY+Q)6s)! xrB{39avZ0psoIcME4T1W0i% W)fcOjNWByx1)snoHCQ;+)AkiI~)!UU$3`wYmXm4-mQiYeECbye)iLk zHsfwwm(|^|Y}rs)WQ;{x0?uM-nVmq$6WT&86Gl(ShId*iyhyevbcHDy$SB#W 03UbUCEVRNbh-shCJD7I)-H>j)ox@-_zVjR}BjIG6Opr0+AMOv~d zN$Bc=5Y5$-#Z%vdWk(l%NzyW%Vrt&+F}1>CpamJY&C CP3G%jB06 EC#k|jycb_ zcOJ$u$KhjN`jzKD^XVVXZC_U$&exj -MQSWz7tRHt+ZI{>H%tro1g>o?cDa zl R`0~ih)%+#%&>$A)vY5z*4qU@V(AB@?1^DccKAY(P|ueaLfKMezJ2OG z@XVF2FtDZ3X{7}W<6zszQ+uc4lmGF*hr6qb`EcFl*M9n^?tb#a?|J(9xep^t6-pB# zvpYI3X2m*ifJIx735BxCBu&&lr$nsAGVQMJpRXUR>JR?tkN@hQ{^m=o?OieEeVg|~ zb>u|NKqFeGKldZhCzdUUXCDOz(tK0LcP<_sR^!M2#uwlCg $i`g^?BB _s5${lX=4FOZD&s7WMU9Mrxan UL-d%u1cWy)^%x|F2puC3?8 z9EOIR5Bs&dxpwX9-gbPZ#h?AJzkxsb)@qu0IGEa?IOegj$wC&{(;TX628rlMa6)xh z33jtPZ0Upfj~_j%&p-F6U;DL}e(E#(@oa~&`KYpn6^Hw&*q G6#>4u^RRo2QruBOQ@deDC_=!Dl|c z{izS$+*w`C)4*D3>Z6hfbJEp{h(fqoaj#}>)~|7At`jo1YF3n{>@YwA5z$I9s(EB> zv3u{GwJ;`&2q0)d3#frDQbegkDFsP2^@LBE#ZH~zw$vHTY|=b;VV*v#`h>TJT8n_Q z6N0=*Iq!Fu*_KW>XIVg^rBQ1c>D(eRv{|3cQ@GWo=wik$cxN&P3yY# QU--aB4ywd5)VbG^ddENyijtY=YH`s=Gs`%H6)s8D=;h|(u@qM9c-XzL zIvXBd{`UX)_i%Z0J`4je-|Sk>p|-T_TI*gYov1cPgp|fvIK-UJvL17{U)8cbKl|Q0 zZ@10(Q(yeTGq1eS${0Sts#)pLqCv8x!)-JU9d$vv u(7pckl#CtXA|=E;AI(Tbfd&HmsdIe0?MXsJ!fwTuhhZ3o zq3?pbce4Hxu_StM+ZAL&+0gpnZ`hO0hs^BzBFi4V2r waXH|L(? ~k9m6sr9s(CbztP!Qn^_Z)ctNCCz9 )vzk(W8B%d&9@V8{^x&(ue~%szJ9Ts=}2GQnT~|Y zPyeld_nnu9asA@{INEsLsvXd@)~rLsj9Dw&c#OyjnH1(Teg6nMnLOHnXxed|^urLl zA$G^(qX*BOJ^sm${`r6Vck%Ycnb!aMfBpx*^?&_e*Wa1$wM|}M12^GU$N6Dpv#_Dw z-OsBdHoiKSrRDXI7Z}gxo4BXpuGhzhD}3PohySZD@8AE- v3(Sj~|e zA7%m7ZLBH?pVDWJfnicTHrq8^v&=qZ!(rBuRcA72o-vnd!%_9p&+#nu;Gpx5eEM@| zue^A*jjOwMX{z(^+|Bv8pL|`v&;8AF>mTp0&(80D@e98;*Y$2ZI}UfU-i6(nvldpn zo}P~y*1|G9;4LlEXBg<5qeT)d2}J~5btF9i7<^M!HenTG&4F3>EiU)h$C5WVwwkim z3#hj;ljUr6ZE+aIvy$G#J?${@GKOQU+mRE