From bcaf6a8528110315db3b150bd2ddf5eacfd3f524 Mon Sep 17 00:00:00 2001 From: littletomatodonkey <2120160898@bit.edu.cn> Date: Wed, 16 Dec 2020 12:01:32 +0800 Subject: [PATCH] fix trt doc (#485) * fix trt doc * update history --- README.md | 4 +-- README_cn.md | 4 +-- .../cpp_infer/docs/imgs/cpp_infer_result.png | Bin 29225 -> 42822 bytes deploy/cpp_infer/readme.md | 6 +++++ deploy/cpp_infer/readme_en.md | 24 ++++++++++++++++-- docs/en/update_history_en.md | 7 +++-- docs/zh_CN/update_history.md | 7 +++-- 7 files changed, 42 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a424f9e9..669520cb 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ PaddleClas is a toolset for image classification tasks prepared for the industry and academia. It helps users train better computer vision models and apply them in real scenarios. **Recent update** +- 2020.12.16 Add support for TensorRT when using cpp inference to obain more obvious acceleration. - 2020.12.06 Add `SE_HRNet_W64_C_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 84.75%. - 2020.11.23 Add `GhostNet_x1_3_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 79.38%. - 2020.11.09 Add `InceptionV3` architecture and pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 79.1%. @@ -15,7 +16,6 @@ PaddleClas is a toolset for image classification tasks prepared for the industry - 2020.10.10 Add cpp inference demo and improve FAQ tutorial. - 2020.09.17 Add `HRNet_W48_C_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 83.62%. Add `ResNet34_vd_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 79.72%. - 2020.09.07 Add `HRNet_W18_C_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 81.16%. -- 2020.07.14 Add `Res2Net200_vd_26w_4s_ssld` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 85.13%. Add `Fix_ResNet50_vd_ssld_v2` pretrained model, whose Top-1 Acc on ImageNet-1k dataset reaches 84.00%. - [more](./docs/en/update_history_en.md) @@ -76,7 +76,7 @@ PaddleClas is a toolset for image classification tasks prepared for the industry - [Prediction based on training engine](./docs/en/tutorials/getting_started_en.md) - [Python inference](./docs/en/tutorials/getting_started_en.md) - [C++ inference](./deploy/cpp_infer/readme_en.md) - - [Serving deployment](./docs/en/extension/paddle_serving_en.md) + - [Serving deployment](./deploy/hubserving/readme_en.md) - [Mobile](./deploy/lite/readme_en.md) - [Model Quantization and Compression](docs/en/extension/paddle_quantization_en.md) - Advanced tutorials diff --git a/README_cn.md b/README_cn.md index 89fbeea9..7902c1c8 100644 --- a/README_cn.md +++ b/README_cn.md @@ -8,6 +8,7 @@ **近期更新** +- 2020.12.16 添加对cpp预测的tensorRT支持,预测加速更明显。 - 2020.12.06 添加`SE_HRNet_W64_C_ssld`模型,在ImageNet-1k上Top-1 Acc可达84.75%。 - 2020.11.23 添加`GhostNet_x1_3_ssld `模型,在ImageNet-1k上Top-1 Acc可达79.38%。 - 2020.11.18 添加图像分类[常见问题2020第一季第三期](./docs/zh_CN/faq_series/faq_2020_s1.md) 5个新问题,并且计划以后每周会更新,欢迎大家持续关注。 @@ -17,7 +18,6 @@ - 2020.10.10 添加cpp inference demo,完善`FAQ 30问`教程。 - 2020.09.17 添加 `HRNet_W48_C_ssld `模型,在ImageNet-1k上Top-1 Acc可达83.62%;添加 `ResNet34_vd_ssld `模型,在ImageNet-1k上Top-1 Acc可达79.72%。 - 2020.09.07 添加 `HRNet_W18_C_ssld `模型,在ImageNet-1k上Top-1 Acc可达81.16%;添加 `MobileNetV3_small_x0_35_ssld `模型,在ImageNet-1k上Top-1 Acc可达55.55%。 -- 2020.07.14 添加 `Res2Net200_vd_26w_4s_ssld `模型,在ImageNet-1k上Top-1 Acc可达85.13%;添加 `Fix_ResNet50_vd_ssld_v2 `模型,在ImageNet-1k上Top-1 Acc可达84.0%。 - [more](./docs/zh_CN/update_history.md) @@ -78,7 +78,7 @@ - [基于训练引擎预测推理](./docs/zh_CN/tutorials/getting_started.md) - [基于Python预测引擎预测推理](./docs/zh_CN/tutorials/getting_started.md) - [基于C++预测引擎预测推理](./deploy/cpp_infer/readme.md) - - [服务化部署](./docs/zh_CN/extension/paddle_serving.md) + - [服务化部署](./deploy/hubserving/readme.md) - [端侧部署](./deploy/lite/readme.md) - [模型量化压缩](docs/zh_CN/extension/paddle_quantization.md) - 高阶使用 diff --git a/deploy/cpp_infer/docs/imgs/cpp_infer_result.png b/deploy/cpp_infer/docs/imgs/cpp_infer_result.png index 5873c76aa71dffd2cb504370f3ec50b6929ff156..fe9de1aa43584f1987abd94ad84e64c0d0c78c6a 100644 GIT binary patch literal 42822 zcmZs@V|-*y*DpMAGO=wtnP6huwrxyo+nI1;+qP}nwyl%QeO=G}KIgn2`a{>RclX}4 zs%ou2R)@$)2}6I!`2OwNH)v520l9DA01iK24B()jBhN+Ao1bsoP5Jp{MEUvgWPVv2 znOYcr`$iU{ucJdDN<}uPtE;0kI7UhS{g;zmaB#SsPDfAYSZ5DjuTCFcdXk35CK}vk zk2j)wOMfSLHtmV;sMyV`%S?Wq`#TDAMe;8tVz$OR9{?vYGut0PK!jk?X{mClsgMQ- z-_-?xFD18(MR}^>P6igdqW7gBxrBRL$U@!s0n1B#rd~Dj_25LK%pETLKh? zs|O8EgV9y@UK~OXA?K+F8>9)w?DU@L5$sy+lv{}LZV?4-V$Gvt=gI2({Rb5T>K7Q? z2%R%sBOMuC5(65Y%8$bzED5p{J`{fBE>R!2kk!Ap#BTK>YalXgmD)=m_(< z2iiI1f%!({WV#t{jsW}Z8_zdU0bT`XfKv}h6{LYb_ahy?^f9*ItP67x_>qXEWa}KAzO%WbHAuF)(Mug%C`6eR!m5VV8@P2^v+W96rM@0+7 zI;%3;Af@kp6uW`$Pp>ifIRliW8|Tw1-pxIAtiz~Zm~VgW>c6ZR(T zgm=z{d*qgmW7a_bXJ8ZD1{fH4*#>JAUnfddc4u;Ho6BOP!z!+k{yZ$@JZblgpns#u zw@m%oc7*KC56g_B_3HQr+vX+FZjiPaxGv~|pSps)xwx&n%088ld4MQqRt&%l)@wB4 zk~iwWd)RIOzU5a#JVJW=?yn?H5l#*dvR`4WfYLO8W%YjL3;sKY?; z)6L^O`3&!bt_YxMpbnFmcezvLTB{9UYxIW4I`r-LNRf=nV3s?PxouuO;HZlHOAe$9 z`mf3#&o;y6WPQ(R-j`RG=-J(Up0m6eH5?twlo&5FBs>9T3QBv@%s?3kMv`S< z41(7tpA)bNPdI7DZW2hyaNd1xsM7f0b=h3OogdWZcb8JpWp@oTqFep}G{JIBwr}4P=To^#*fKB%pUS{=>v%_qBKjIdyEp8GMh4 zSFnw0h2ZV7PAK5|SKDutQ&6EupW=O_Ztalz^Q|Gkr81_FuNw-Q4@GVWBb=0jH<>e^ ztXH7)nvA<#n&z|6YWmisd^}Zt(Glt(NH{~BQX`|G=3hPC!=e-ymOII{+{l%bkwDX% zMzID`;mBM#H&+?Khm~i#p_DjjQgS6IW<@jHUU1#c9c~HnE(9R~I|m>SH@OCi`U4d* zjX_*i>rYhLQz8b!NJ4>5hVWsAZDk=(i8#CzwupC%Qns81f0hvY-5*;P=WK5}4)4-k zbm(f8YFA0Td*nQQR~eS-4wMm&gcNXVULj@Ym*;K4I_l%{4{%{xYhaMaZb@o^>6u6l zBg6$m-Hl?~q((C20$>S98yn5cBw3P-Y8t8%P7>OUU_IV+73rmB*Vve%IR#xpT6sh` z$;HFtt#8bum&m(hC*)Dda-874cgt3)MJn1$BV!HxAUn=Tp9}gD?sLKjO#;==+PHxq z7bPbK`aqdTI|_EnMc5<=XJ{N)n%J?m*G_#!FT3r) zLp+7q70Z!Gk$^;?YI%S5$5~!o+P*?0L)aE#Aov`128giPBGud!*P=`Q9Oq0uGGK!7 zP}0LFVkcBgkM+nEA6=zC^t?ga-nj?VT;04wut^+}51ol8t*UEsg9rO%H+lE;6P|7o z9jdQ?5=V+cSzw?k`}h^!07n^r)C(;;d)2nK6G&7vX8HC4kM#^2U;XNsGFT*tz{qie zwY!fLw8~$a*Ad1Q1eAX!t4+rbYrf_kzd~GB4V|RGP&YCWQR*O1Uwv!haEBAYZwW{l z@gxeJkhG?KL*Y~^_1j9Qz6y>L91S8D&)_VuMb-l<$==9GQSg!%#hjn%3Ur?1oBL1F zd=l8t^Pv+l*xLY%)8z(W^vXix#$vK1AGl;h%L3jOsNa(^-1ViE6;-sNcU^E$Ab%?FM+}YvU#GW2ec&eKB zOxnCAlDRQ9(dW!idGh_5rj=8VrgfkldY4?HVWR}ma5_wW9$4~FL-i#ID{ESDZBs}n z&%m-*igQcM)^!NV$vPg-#S~&T>kWRBoU={a;RiN<_Y#Ju@-1c)q}d!pC2JzUMB)!R z&K){}vmf*}8bW>=4xI#$bS3@is)SXKBljZLI6y5QO^|}6ANZk((*Y4&1u_R3E+*)F zdN;lP+QI50_NFpzy27GHDr)7EI6H6eRNEQafjFd&-IVqm(O#0#_<02gMpVBwI0x%a zl*y&Vo7UH~lgT%`KUe^zApv8tZ?_~%Wa_l_%I`DcANLcQ1$zPB0@xHxpR+rjVTMf@ zQ{z)Z-PLgKppS)YQ7c6cQ=vg2LEKaQVaU>{9wlp>^%v?T%BIj9;DTUZ`>LThwPUyOm(f zT{O|AJ7Ep;ts9c(1j%HNC#00})3C=FCYxW50xcGItsa6?pg+eazRk;l@yg9^OWBfh^ri3Z(qX|P=nri+b{tPfj2Oh) zKMSQ7P}yg$Dr_dx=lsY0N!QY(*YqnKO@+(6f@6-o>6{r$c`5r$14J#(*Wul^PsyyQ z$g5XrN0SkaWe_>x-e>xC1>?F!RthByU%YGBf76G0TD9-MaT)@;3kea>7lR|t(2)0| zBkQkaO;LGkjl{<3!!X=GswkVYbyOrpt)HU$hSNwCq@SP4H}x}lCTPi$h-bp>8hk%1 z)%l8w~`PM49$M%TQQF3I;kTefd=+^{evqMha~rGas|X` zf+5H9s=w4mgW@Cv#O~FfXgMl5VUz|$t;5)`8OqVoa;3yS+Wr@Hdk8gC z#d0PTMq*DW*fBIQM|$$@VA@*A;ZDLd-GMHaF>x=1TF!6KP`y7@V%K}0<)fRd+~BE^ zpLBVb6<(22B2e?GyTI$AV#o65`s&R~%UDODW-#adB zOf!!20N^qnGcH-iZn`mQXG0H{ZX?LRUC_CF=tYPaq%PJYSGabzc;$QcY)dMQPkEYU zX9|B2N&4e1hly822;r^@yCk@45Mo&5PGj1|DoskTda&*CX28s$66oDKo~p3|T&X*m z{+{2qdHvIG@xzU>pO$B#&Hg4*%ct6e9{vTUxymnrOuCC}wJj|2yaz5tfZH|WQ`_A_1(H_fyjZHO| zSs0ndRU)^lI9EBIr&aDy%Hy=Ehi8%k?LF?EXrR-3q4vaZ$(J@WkAM=>8Hc=bd{aZw z#_7oVL=$i6CYX_H^7nzTo}2W)wXM4EEHjy5y2_8=271Y#NGs*@sem-~Y-Jj1oVWB*2dDkY3O<@axzz&#Kyi;nOTm<7v zY4&qxpgo?_Qyg=)X1}9gDf;mZK+@rid1YKN?>;T3N;`#CgWwyTpdRn7k z#~o+UpZ|HT+cy`lW@bz%m?bg56qhFmx0iJb*!dWL`KiHu`EeN*e?5!y{y5TY3J!}C zvhcF}`v#Sm7Fg+fqU1Xo-S0U;+U{lZzCxT^qPj&*Fj#9~xE9F_tBUK(Nm1i7gZ9yZ3x8wR@OteWi?H!5m#mvCa2OV z-;kg7%1ePc*3RHsemUv;2GtoO8^MZ0$T!VvQ8v4(K;iC2lXmp;ydOX^>;IAv`hB5k z1#ceBaA0_v%!v_pbM)eH3@87+VS7#-a}zy%N+oVL-JV^4m*S(1TL^D|YQm9%DR%WT zq04O_BUf^2-Hp7fG}|63Dz<&%$ilkbTumF_{GQrEJnA6bA_6~(v}{g()wp5Q|3zHu zQr$yL2UTaiBqK@Y1FYEmSk_K^X<}Nx%14AC5N>Q6lNOCt<$VXo>=3lnu+M#0rq~am z(5{}i!l-J{x_mnRn3uM^>6mxwb1FvvkSYrsF)))vPaCS|;=Zom^H(FMG5khDV+Exk zm<9JT1rB_P>?G8;s|KwRn!$ZfM_vf^y6r=sa~PoP8GlC>SAYW%L8AyOK7c;n5s zvb`noqGA^fGT75PuWkdNolVwjOq7t|_q72bd+xlbHZH(``!+1Q%34Ppo2jsnm zAZmr^VEUGoo?rXfn4@G$oZc1$HZ+L_O zcMzbnmG79pxuYhz39o>>?3F{x>dFalciy&4 zpEgIkqHTwCdhflo;h<1?jgTWPH3Ce{>m;MnH4eP0(ReEwzwe@17A}H%NnmK_=8ogx znDo1-N66=X2$a1`*s@|ugiohW0#ozdpK1+Cu=&K)@NbDduX41Z#_TAC-Y+%k59Nb6 zo9kG2mtrU~F+J{I)Koo}0zI>}d*An_PUbg|x_f9&o}+ITTwGt3;kCe6YC{X(*AJm> znuHZo3e#EN0!GgW*K|=c!e{is@Uu=4MgF0jk64mu24?oFvdW@8mMYM{FF!FU_NYnb zw#{>u2_@7tIO&pjgD^r{!b_JoL6j`ak=r+wBFWHcks%Y;4<^Ng$6iJTd0EDo)uiRy zUCe`C0N5e@&>Q$%ZRy=V(=p8%(M=M&)Uy}(Cmt%Lt^1}%WRu}v7OCfodBtBJyQ ze!+iVmh~t<$dipy)+Y^Oeq|J%9Md3yO}!oi$-TnoAFc_J*25`j0_Zs54q)CNsHZMS zIDb}1HNQU+l@A`57TP?x+4Q{bykst6k7?djr>6jG1+NG4_9_XXqUq_DkLepZ`IcSg zY%Jd`f9{!I@{0wUFguwmsj+=4ypd2|c$6^ny6s!z+m7hzim3<`Lj9p+@d!h(evW51 zjgB*IRw{r`R_8KEL;&W}I-2g9mUt7Xy0PMjI5oR3O7MP>U3;pqv>jx^)=Voy;oL=B z9%zw$%)ltN-#JrXa0Vyt)yT}%oD*`iHZ%%AP0a}mDy_DClP5e=BoI9I8z{xZhWD|c z@?r29lVYC=7dy;S9}`-4@EPIaOoa#^?*3lrh_>axGPK(jVj40Iv`FG7(3)jkz+=FN zDGKuH>-+>-*9$vM3Dvv`qSqa59;Af|Z}8YZA*A-S^`)m2Szw&Oh9GX~csT|{gJv$v zjh#|g5+mo-JA~4PA=XY;bbEuuqf?Q9l;uYIxC8GIqmz=nS>Ly3tf?jS0{aB{ZeDB+ z_S1Za4bid>vm1z59Gp-d(^?$$VDaYzG8G}|2kQ~U>t+lj>!ho2;*LcM$`v?O}@+OzP@8XBBP?59hTQ3?myI?}}Gbw?CTHQZ5`-dS@G^Br7<% z#2&?6QA}CDnS$?`DnF*W9)`XtTd%}rqCif+AgLF0(cHaKu<{EBpMR~>(|~2mQA|5r zc0!W?@-|gKHI5dV=?`^An6G|d5CRde!3>gC*4MG8;xNfw+|<;{ibT2qnW#fP*96Kh z=UsXbBztGW4)g1M@lKv&l!`-!5kk%ja{8}G+;^I>L zbygU0!TXZ(nCbAq#m!x1kkPSqvP3yQCG=c-U1y64!IR~}O9|~{YRlv0bR)TGV1Ez*i8T~ilBcs(>TAv_QXn-?>k?_LC~hukrp`X(Paf?gw4<7!Cpn%ageriZ>Q60a^G_;WTpiX*&0M0 zav|PQEV$Cz<(fB@AYu~}c(9jo0n+7asb^0kjy20%L75MJY(B|><{M)PTk*EO{d#|P}C(KfKJipSl^-I z{20*tHX2bhosWUJ&9Ie*7~=0A^B6P#vREb|x^EHS<^%0HFfd}B33R%7y)5(i1eJ?E zB3aqOiJ=VK=A*?phkdc*@4IM9hS3H>Xn)&?L~Gr`T*H)t;wW9;Uz-r8RP6`K1gFF; zw|f`bKd0SYZOE#^N}H75s5BX+)z4Ck&aiL9C=n&PXAGO;kQi!v#;opF)Hkm1r`_{S z6Tb+ds?ClxAs1!94w{|xk7%GBEPkv|DWq+uHXQNmnuYVIC5Q2v7L((xv9Cf~OXEX9-1VI) zN+Pp8ecDGVn{hw8Cs@tKbqv|kWgLQ0A#G1{=|wbsAL>m|1>aE8H{D{Uhy1 zGF~Cn4MBZ!wIj6{D?f>RB%_FhP&rP8nb{}6O+NwGq*`HNQp{MT3ik||#teE*ofoR} z>7H5Az8!i}I)u}h=Fq@KqZ5%qsyip_m+D$^cvbdG+m0fZbOs3PfT%8`EJ8=9bU<-vJIDb@D6^=6fw=NP2hb)+A;(9M734tS388H8@oHS@ryz_l_ zJ?T{Jy$E8#Q=_@pto9(%)xuWHjy3O-u(Tp?ZQfTIzR53q&bgP`yzq#Dt;!e06)~`! zyWM}dR;4EE;YT#)ut^_f3%js6^RSJyp;x!cWrPkA;+k0i9l$~_cD$kSHnf7LttEdl zsKMo;nM=jMW~^}`G}RxpZ=+ix<4`AO4%#1k8?{HTUnI8R>HGVlOt@1RlYUe-Aj8o( zCvLnYxk#N=b9AeyBH0rYxORl4KgqNL+3xQ01(x{n zVhq-yfa!KvTSYFZMpMM#OdGP5RNZ|0cl!H>2sv5o!a{Z!kJbh3&+H9MWcY|ac)y6) zu-wb`TRuq0)4oJ%^pGTx0jC=$oxXa+ZWnb7RCUDL#AYXJ+U(Lc5Iwh_b>DOLsgXm@ zLTc19{5=(V2~MT42onU#I^18hT!p|igUP|K55GtBWB=xs>W!7zsng`g96d1&)9L~3 z@x$Ta+PK2UIzm{EO%3v`Sfr$Cqo>!!@(4={Uc22!fyDMNGSgLdp2vn`1Zfv|I)JBx zxskj?nyK<)_R|%$$w76LnsS|M-+NCW5^m$idq2iIEJLV-HuQcg# zl_};X#*7;_H^V01lb;rx=AzxXH%=PXXrtWHBOAIVBpwAOXAG5E7CT$10xSEbJS`sk z)NNYxWS}6^Ek8=I25Q&~u@EYF$AjH6R<;&ALZq(1Um3fOE!#aa{gN#C1Y<$2qe%{e zaZNUagc!1;_1n#-A9qAqP(Mx>w^ycjFy@ysV(0jkJ;nJVB>d+)xz&|c_ZL59>xyApKtx?0B-tH)88>}rwj0E^PkQ% zGjm?(dP%0FKS?b^2b7k-Yvy#369p-1lEf}}{QcJ&;r|aJP z1{-*{ewf}Ci#V=Wk};SwVua@@KnTubNO*cTcE_?*@5izhfh@*)F02lrmI>y3=2@~s z7mY#FFz-bsaGe(>$1Y4O9y7BlTpdP!a9{hTs8lZfq{i_Q=v!K4lh&lrbd?rO2AQW}*8OD)K>*22h7fokwHYPV7c>y1k#xLq}s zW>ms6u0^pPnquzdYIvObBfV6oXTOvWJDl3lJYh^M!9=UeKnUhy`ZtN2wL-Lh;0fRG zP>LP>fc&=PPBB8G+n7RheuNxey;F`f>ZLlwcy;77(PGb74sArKHGJPXaUZ#6f}-fe zrZn$3#4{lS1r%nv;*OF_511x&9>odY&@7`X&Llk3LU~Mk{u3s!YO6l%g?FNDPNmE% z@PGu@1)dj&yd%=nfy4+(8ZF}*7x7B`cAO$}+2m2U$9}wlkr2MSpO3w>-qy}{+oIk-daz&%5&?y0SnA1z#*HpP0;b$<9f%5D49!najJ=kavx zxqj(z;qBHip{v~v#pmf{K2tj=@)Bzn)1u#4MPUaO&Wd3shM^BxSqi6T!okeh z`9}sstq>dI?C!`naezI`Nx59-<^lkK5)WH$=*+<-m4$@%EBi;}p!XW^g?IAA;=Oe1 zv-`T$KQ8WnI_|W9K^>m7Q%6_)9}f1=9@jqJ+(Ay+oOmXbZa)!JF^q$Qyz`Nu@7MQVjqw*4nlKu%!{=e;6K&8N=kgA(CAM;l_RcP6Z|F^@3I4K+6yK8G`r)`fZ0Yj%y2n2Ff+fOj&nnVMS}+MFM;Ajgp@7Dp@mrxNsR z|Dv7R;V!PVrexC6T1Cy?e+*wMQpySO$==ZJYj%BDj0A3qPNu^*lIkVUdPo zbt3gnWw$H7xy=XsY&>P69(qN;r*>L;08!a4K|qubN|I9u-VV39Ne-bBzSiQI&C_N+ zES#wWU&$7rja+9~*gRCy;|x;|?#+dAPi9uEr%L-`B}Ni@32~4BO4v=LO5ZZ0#di}4 zZ5n(twfK&KGF-`eFT{Y)U2Vta#*r*1DJQ5@emNL0>+1uOYt{=scU@R=mvofChGPLC zPhkgkFaq{?2zREn{^pF;fi{W~z_-L#(x804vyr;|DH*N~!2pkg95m`%VsjVLdkk)v zSh_D+)7KJ)!gKI?%4)}@;Q(m3f=-A)0Q1Bz@R3ppHIi6?;A!e&SV$UJ5=ZVQt6GV} zuYKL^%c(roXO2*99Guo5#kg|3l3sz^^^hR~Y@p%sL-UN@<;hHfRLW%Pwy=C563?Ym1ANLtx>R4h^)a#+>mI)G}wEXC9ua{*#|Hb#<=ET6Bx^wpJpf_yY zsrKCr1~C49;vL!L%I8u)bU-Ia@Z-D^K&z~f$8dMwL|nB%+3Ipm!ylON9o!<=^y6z! z8B{`(l;yq~yUg}AW|#W;NW#TKbqpr%F|llZkL}4$&1R|D^{lch%$QU^s(D!|6w)Qw z<%>UAjW#I~T=NX*E)i6rBUck;q*HTq8K*Yz82v;(rwBUSN$pd#h&Ry>Nyez(^qo^E zipr5X>xUo$F(T>tg9~qAX6nNagjj8@@Vl2#QmFf3>AOfavaL!ONb!p?T^3i78jnjT z1O}(Wp!ICfPk|epHz1|xn4y-)5qIM%$Hiu5GMRU7k;L~I~g2{@Z-S0e9=L> ze6^C+(vQ#0nQIKQoIiVWd4MZKCI%6L>TvKn;b|pimdY0#M*k zAoDbn`?(P@XRyB{DeH-oPquVdoiHQJ)7+{F4~I-ullaqa_BdSi)GMJf_S1OFJPWAy zOcH4fRDJD0UgJcU_lDMz2R}ne852`8zAL+&DY7YbugWJw3sxrYWIQG9L<)gg@+-Oa zAR=TVMN9Zzr8Vpo$*pPoT6v|)u}AAwz%Ur-dmc*}!H+X4Lv;>^ai&3uVE*GRZF)Kz z{Mgqz`OqKCl|fRUpnfI!7xvJ>OfkMi_*LzH1Y?`sAT^d|7IR!*2iD~t(Y?^aMiCQF z?#R(rd6_0Cek4ib`3KC9++1Mb#>MQ25q1%&9MiF0;8C|kA@^Cwc$=6GCHp-w%RTxL zO0uBiJ|{Y_QY+~G|Cd!PsK^XwL*HG|=s5gpI**LOG~lVf@J{lqUnoFWtJphjvH}Y~$I+SsRP* z%_;2&{~$3r`{7*I65K<21fO&{58Gc)xkIiED`6ymeDN8KyEF5M7loR9AI>%Dt6v2D zIfmUc<Edr=kVIQZZY9I^;xE(rNH)y_k+E}nSB8Hb;t=|BKdT)!3T0`b#Dx~E%L*dZ&sidErW@0`|b57K_Y@G z3j|~;#3|~iHPHPor`rq3>D{*z#7exRLLS$a+2p`pLmr(hZQ1Nd=)>qao4=@vp(gGe zu=uE%g#l;nGwGB1|9|~Dq?|0zLWV*bkxjWijeIVKR{%%@ac(^$C_$XO$Vpl$C)Z+ul)-$`Tm z`nzx4{%>NrpwfBC-_0__&MdsDE-xWN+|n@J3N7R#ps$iI$3q18x(nHdoq4UlGrcb z^)$0kX_NwfmiCZA{w6WKpseI2k8Tlj9I<|4n}$=uLrw!Eu~THLD@0T|jy#Uy;fn=u)K{N} zp$ZAoj-TFV1J9^3PyLT9}!wA5Lw6qj(t5-czTKMtT8dtKmp<)W2} zc^bK9L!j=#&CdQ3=;5NM&9&J|@^*S}8 z2kL9uJ?%QgRF58}+O}Z|V&eYk5j^j$VqoXJ2KU)c7l21x2jJ9n&N{ zIL7Aqf1h07Z#X&B*Cv!1fLZ=kx{Cx8W5OzR)45kaHBtouMigNv=4$nb1&@&Ta4j|6 zE;(O2Li}ZZ(^$uw-Sg?`(xCy26dDd1%*C5>2%i=y@|?0pPjh>@?a2tOMOMKR#g~K^ z@!mh_Kcru+Jg`GFTI-$lm00Ss1Q#<{gfy%Tf0n$Qo|9u67pCd5Q*N}QqLT3r4kH1( z*c1P9bCP&xffwg{`J^By2FMCSj6&VO{FiaD#fW>k`I_)vo^)BM4R zj+ID*mOF#O@S@U2j*!LiC~SlMzmT~&(O+afmJlJP0wwJV&Q+I~fPn>g)lm6ftC1XT za5W^V9PUUNQSjtShmgZrOQL>a9u4kP`Pe3S_^OK4+Kr+Y+{ohhS0NYt zsW_B=5IB3MUijzS`oKL5aFO3nBTpLS=NK z5y>^rv^4D0PdGb+%WpKtlUnM!ViL5wdQ=xLK7Ev*7qaUw;;!pr%gA z^K%Z%x<010UFf8VTHE4!%cyox1jI0LA{TwT^9!;rs}!f`>~I&=$#F5A0sL;ZM|D$& z{J%~AV(#PQ`kLuyK7rBoNKHyoJkJvv%V{;NNNu1m=0x6%mJfh2ugSBAK34#i|N33G zn_Q@)QLowk<<;bbQO&%-oc{{imGi|+3{E0LTozRqA^b%1c#V~8vm01!KkLS--RE*@ zF}Z)EqSFZSxX}JgNh7HmkW&h$llkmdDEU0A!UZp18|6{93aqlKR5Ej+u5BQ1P_kSK z94?Uxc5s%>o*vfwLmC?VBLImf2HDDZ+&Q9iqQQ|BRc*=>d>fIA0sg5fz0tAAyOvIn zE+HwNw`a4>)+C$6$}b3Jkv`wicM%xKe8WB+{AVLuHWCEV2jM35v07eqj*QHg^6~Wo z+fQUZ>?1S*bV$63xlq1k;nFieAF3h>pGpZI1m^X9cl0P~w2;oCQ7J+lVNWEcg_0sG z!osY5K+g}!r-fK(IKL{$sdJ=JR>fqBtrp>m-LCx-&mmU3DyE@Kx z=!(j=+5FMuJ{zIkDi2)0r0IxE`D25%fg5r?YvT$p=WZ&VsBK26m`-ddBR221;Kz|J z_W(hTEio}Pf;25w$G~>LxrnWq@kC1FrA+3Il25C=7G=b+#=g0JX1AC~t5<5!LhLLy z=jWOH>qT;G!JcD}(RAtH6L3d$x6boSuVYxq6rapnWyGFwNMZahjLppZ0P{`!jF|zO zRbIn(Z(4#Fjs5zx8~)rVK}9hLNkdF#!E6|{ZYi(4C@WgL65Mp~L>r6CVJ(of~8 zi^Kh@q?Ss2{F>PWLM)+R%ULaQZb$4%AUqQ{@v2qhA3ww^&MX6Eb3i zb7L9O^<*r&Gn~9)G`G+b1v{OK$#UTh=H#4pl!~D&aCF?u#{aTS&Lz90j0N1Q-sSin%uV$+=&#CiaTPQ9-P&EteUqjb;%kWryRs3aM10vUbhgyV6Szx0xW87z7fV zqtukOaK8L8&Tuk^nP0$D2x&&r|0*iM!wYQ*;$4SmV<41S&vjDal$-)?JMuJ%RO0Nr zEon8K?15vH3DWO(N>uV)LRE5!Pg&o?6oRM%&QQBR&s701QZ{+OaTKA39`JHZm5hd% zQw&!AsY!$&Iec@~sj&d3tBF?V)2_>}%++*Z@nZJn>b?8x>LnJu-Ck~(W1l?#fidn! z`n~WKXizL2pFT}9D6%J?UiK z=P~Wm)Lfe4vC1cBhNDihijscw>e_~0I&jsr>#1#4mD z6%+w+vvm$1=v(Xx^gLU6`Lk$-%dasBYL!48Fz^B42P`-g6H<577fGZP;cWrN$x01r z_xiH)ON$MKN+nSGW;`>2jhZ<2;{JYIrtTy>a@Sc4mCezSkJL?1Nfta*U|k?S!JY;B z!qsu0$>T_+?aq9*D0MQzfC3>^-lcB0oqN>(R_jSOi&rv)H-2m_j3qk7kC1z|d#X>B z$irl?ljEZ}*vJkcb)+LdD5As$>k=k*=!gqa5}!qRI8j*!W-jbP=UrtDtDQ5OFfd1R zPIWgPQgHaSF6j3#@)Sv9qx{nH_Y^JQSYWjcYrxV5j7QB5A}h%=Zh#Ubv86hnb7wZLG69 zp~y8&Y_ZDmOgJ!{qABWFGIQ+LI;dDYHOq)JAnb0^>HN#wTAC5kkG% zqUgJuM=TR`FYH}#b=$xqNFE~Y_m~eqD-OSsSpEUr_j_g&kpUZ~W!q+k5X%}~>QhS1 z7eOqN??XeaJ4WC98SpG$NSG#3bmq4ZLvAFN`+#xRF%jUQ={*X*EQO}1K{=ysF!xh1ol%n;*(5@`bq_O@iB*Q+npt|&ilBVU z|A&to|Bn)|~?b*YG$RskW97Km!Y9f;MF{+VM2D*i|*G38qtlfGNrdlSJx~E@V9u z$Pi85QXY`S8j4jN2;QY)cCsc-oRpEV z9oEk+GVkjx0Y)v=bZ75GZ(hJP^m9#>jB`!n9j?aIH@|1bGb=!tS+8sO^ zpJgG%%GlI=N#d3e9JEo!#X_{DeBR!wE7jxIQxZg;Id_-nu_hqbaxg0w#cM4)W^7yq zRh2DWe?VVK33oEv4-{&L)i}1;8qJVfEp%yFNX-|8PnnY68v6Nk+#uYw53;LfA#2kf zSp!|rC@w&pKu$>AdAw0n=}XD0mpYt2r$}i3RPs7Ll{~}jVQs3o!QZx@xvLBSUbW~Z?`bmgenrPv`+QU?#t+dGPxE=#>4BDIIZhhzD(^Wv1GR0vXf1f_XNpRND7VKTdghQvBY)Mo=^dnQ&g?s(f?Q0=fbX_U#NeI*w);PhrW@&e^7V}! zQH;)hkC5&gB4e&_|vz~ltjlzOBd<|pxqJD)vYPzXW*aPO&ecm13F*h3i5c`-=L-g48r|; zCs+VA*tJz2skB!_i4@9(myvt=_HFEy=0BG^i@}*7W83pQ zIzK|mZs~C!XYQ>Aarb{WT+G9ctLf*dhC~Fjag=V!2+*B|lVlAy4 zbqVyebZyTOj39vkTv!sl27>m`X+s35-d2P#Lj;gCqXSq;c* zx<6t*>oRfg7EaIJ$=&fY3*PFA*S1vfQ>IpnpB@DBVjste(ABKU@|m-(&N_>&}EjromC z{x7~9a}pyi5xY-oyOPUh6VmzEA!@!*A4|B^T!%83+iK zV5p;up*mYiYAsE$VYr$mV77w}lV!e$vabLnT&NNQk8Yj&lHXV3(EK3_=TA-DY^31nAO=q`W4d*Bi z%t3~WA2t7$EWOdnDjm*69?p>$-0whx!a2(obv+^AXn>y9QQO_nY(ol zp4Owi5C3f9%sB$QFWNR=t|ESj>Udg#e%wncje*d((QnE634CV7(UB2d%MPLdbF(?p zdiZ?ua8A`NAA|j)_$4MmwQKWRzb*WF%pVENwA|Pfr=HMH=9~^m|Z#7F6ew z)J3Psf|D%Uw(zZxVHbrz6*ZDxnwvdB{eO8{Urv(Q)t|#uZq8tNwO;#lO|vM3t-I!c+gVC z(EGK7j*rHhspV0ynP)VWDd(!DU9DTJx>ts`o2xmsj`d*`s)|;Pj~395-JH84SgfpH z9doX7N7t9qhR_7Le{R?Yr~d%p3a6nf9;AB1al2t$XO)Lf3Cg_6cyGbTUku5xbouxo;@wvt@Jo<2Zztq59I{ z9j4TIALMaTWOiPsFL_US$3fd#t>hi#Nib37f(a76J7pq%(e2V$A{>qM)~+LswzK`r z%@*GgoKGo#(_$3C{YG6lJPG4_A}&{--aTM)@}|(qV8)b!g9}a@QNB8$%wP`AI|}F| zyB%p5jh^!%OJObHJH<3{N1FR;eLN**?mT;VPbFdb<6a3<@LG4W7>4&2``?Gpj3>Zb z;;k_~>ARrjJDAwsM6QS9?-n>I3AF~tuAN;>&TCBT__U(3)q%>>e0!1ETIRls9#B&m=06YBrs)4BxC-@aQc!`j>91}+jkSGgk{f6<9S?+u-d zzY54NSw$&DtRQ@~lObAnv(LI)@TeTKqNCpCQfqtKv!VXKRG$Vl%s_>yNI~t+r$fhG zv^3?j2xB#81K$P>=+%i%*U29_s@UCej7^935t<$qt34C(`t&Ar23-8dn4lEut;$Rp zwd@Wf+Gk8=?F|7N;P@LE1#oF(vPWW52&|1w7W{5<>Yhe1j>sH6XW z7eJ&p$fsXp88F%z;eYOe!wlFN?5z;~VDGCs{~Pp9K;ZO37_~Fx$T)|Z&8)&kP9Z_b zK7oz$&>|eh>8>73Ufy@Ky_ExA!K>GQ(oQFQC5DgiJxT-d9}xejpb0o+ntSnl>omh( zi}w9q0@B@?GoAIX5kEq3PHP`VnM6{4H1ZCX68u8OxU(5HBlG`HNWQik53CQV8E_l* zG_0rf3%M7m=HE_{kj3uai==c_$qhpqKKVks@-MoE)l{{cl3;lw_=s0NWX3pmYVY6w0%-bXxPiJg80lh@ z;~UV3sG3wbWybp>_KU#D8lLG5U%%djs0#n=w)Uk0V!yR#RcwaT5~%JP~MPOFLl3r zFOR>t+7=Ad#L9BbPmQIS8eu{Q<)HePYEbRv)Rnb4KBsyfJ15!_Q{eMWqaJ%+_*8*I zA=O&KaX@LdFGYVTi{0P+$Jz6>%!C8HcQI<&Hl_czVt;zW9~JnT|Dx|5Mb0vcu=$y0 zi$J)Aon9%ZWAWKIWe_$n`Dw^D_t=&OvFO%X;A5F=g2 zanD!QAn0%Q`jhP@=g(X^W;+|3<0>B`^JtxRERXV6__@M=kyS5&=qwGtizl<1;3b zI+X8YfrQuy4kY2946WZY(p77NWv+B6%$LXG#*apnl>I#8dFQdABeK+(^7T2RnSU^G zO<=4OSg?%R)W30iW|mKoaG)lYXQ|}-r`m?jWT`mV^I&y1 zI<_@0>{NWna2x@T`VI0{_?&hjKRb;5Z^-VdfZQe(w3~7U`lrwt zH@{9xI_aHz{Flz(9rx=^=cktBugg2h!u9CRdZOv5@xyZ_us2ac`#vtOL_S+&SA*Ygsx=eJ4++s_x6Q9zE?p zkZnhVGIzsk&934$`1Zxp=)i6vjZl}vH{WOEcZPgMMxD4SwekQ1`v05Ms?RC1mXrxM zdV9LwN)8kuU9|8IayGX9 zKL%bl(a6@asQR-BJ(=zZBZ=~0SN>y2x-Kf*e7@~Iaz+6rkX>^hpgi~I?P7Ly>#xR# zb39AW>kyy;*+tf>%zpyjZgx69s6M-~E6s8Zl#XUu{r!|f$;-5ljST-|$^Vq);{RKg zKRdjXdA(z|OFq1g+gNv+wACf4t57RZJ7SHbH~0y;dU= z1HfX`f)WOeMBDwT^$@vT$vTYmm7{UYyKoNxvnn^0eVh(jyNhNg50+7N=#uumRZO9J zvLsPX!HE@ulHngIyzt)^dz-vBpb#G|77=4=0rprR1t-{@R`WJJy#HP+U*#;dS>Nzs zoOb3Z>*xnuS0WBQ)?R~ncfCW(ndTJH2WI?Tk{0db#hjR^MfJFe|&mRS3~At0{E&h zy68a1DW|6fe&o87FZMol9>quZ@B|AUZ&Cg1_fzwz<&UIVGs)J%^*a9{qF;$b`&=UF z&30V`1_Lt+9gkZ`#^tX{jR!Yj+2}w31l`a~qi;D6(o?ZWGloC*TTp*t!TB%ZV1s*! z*Cz6atnJ!@q4g`sZL&9XO%#Ey;L0Ol5xFiIWkv>LoA=w`^KE6hinN>`#6kizOczn z4+HlApnQK-n@BnSQogJPI56At~mmtv*es)C@|R~P4&HIC4vMbRxiT*^FKwcbnM)ajivLA)bgU={(_RK2Jk<$kDv0kJ^WvX6; zyETOw(Yg=uNypgpQhq-(Mfx|gcaqO1mihpYqyyP#S4jVzvQA(1Lc=JSsiKdI)=miL z#1Qv(6u6YVp2C5(*#gtwMG9@nmJewmifnsSx*$foM*t&Nr|y`{!`J3Hnaq)|#7~+9 z_y_Jqm%R$)&sK!Fx`1_QLXdt^Ls}0i-k z8zr&tH%_X~bf!tWf5)!IO$qfW1lE=Z5W6nu!&+4fO~nx>vbq34Q%WHthPQrz3<%X0 zc$-}B#`^-FK&e)iRlWgZEZriuaB<~VUJf(QC4f8O_=ke|oSx|Wj$T_BU#BrMPbhA{ zZ-LDmw=!q^t$Kj%7#BWdH0p3dM&Pz}!8{)lidpB$8SKu1Jy8LgJa*lu<&4YdTOhYX zqfh9-pajDCw(yqi>*MS&OrJ&_sJMeB|4Pf`w;9d0=5bE}>k-5(NriN7 zuX<~7e+W{L_Lsl~ActZA+2=4u1V1(V(ToJma}G~*Sx@_#$1&@wfLUJzTfKj&7Lm@ylMZ=ZlRsu zWHz>sAN!Osk{&tNSSEm5@wug`3HMe`;tFgd*KRz&ggq&Oa1DE}koq=!(LcRe1ChlH z#U3Rt==!dz(A5JIFo6tJK6cg?pEsYHUvD09)@itJ{;_q~YboHfU&W;&jBiPLB+$ov zo3#N9zl19x$>6o1nbc2M#oyhTYBX%QAs%Bs`fal8T&-uXs4dvYo{N?`pMcN!UFPIg&Yu8aL^rdqwx6Xup>@(frJ-APDvQm zdt-Dsc`Ur20E?%euuMB=e$6~h4SOiAK%BfLZi19aIwkqm;6a8uQTSl>r~&FLNvPT8 z>*h|RQU!x+*)g3;<43SN5O%UZ)IM=xD(1;KVI%?^Mr@;x7#Za$UJj@b^plykEW^n8;rRL_KM^`<-K1=mQiWtmaDTOO2AKWy`mlHKjBe~9CA(Mf% zviC0_F#`V}`Q}A4r&g(t1_HL~qGVMS;l6Z7x}u#)AsQDFGoR{Q>39cxqCYMKi-39% zF{On#h0pY;+(Lzw!+9&Ch8fnawj-M$VbV(UBkl;o+W(46V5cLYMf8iSWVanY`D7|5 zsVp>4_e+10P6w(lG6wK(Y3VQhgA$u@8{ zX7uJTs#v#4N;8W#--EXDtB-vc#~$UsrGpIBC>$0YCqJqvrx2*+WL@FCF+SAJK6ue@ z`}TED#$^I51L4xY9~^HuJjww^3jMk&MEgFmiw2d^NQu-t3@qi+5c*$5=6|30$`%m2 ztMhr8M}p0{${5#X(3M4U6nt(tP{sGNKkjSvbBV@PbVy}_FN%eNB!D}~6t?8i<`Ebc z`x6k*#e_dh;Iz(sym&=Bsaw=3mP79!!ao$Q^w~1bu(BPlKj@FXI6pIUCHz@g88*YL|P?Q$RlVFgSSVlB?n@vPCO6mLtv$po1 zoTBmV9OiHbX!AVGwdGTg`-L3dUuTZDT%>vR_QxJSqsZSr9?%kb_l9@@Hkgc5RMTVw z*mtiTX8QYQO*U46iS@4*po;c9R;O~=U9P8t`C~Oy*GI*0vELALLiXUt zL*Igv5HGB$(3&}-Fk+{5X7#y%;UKj1J^0)@sZzk9lG-(uv+`KX+2$lT0E21-7GgO& z6$3;zYFK%f*Gm!xRt#_I$f+H{sbF{}2yrj3kRa+>xnRyD@cjWUu=Q@Ax?OoGnp~Yp zPH&gaM#OU;L^i#5v--1(RUH9gB|&yV-9tX?Lho4YO&!imgmv;v_3v^dCv@$x_AA*M zVGUbd4}AL}ZE&D|W@CUDjKlHGKN!oxGFw*Swp=|os?`FG6X5Im3V~4&dk!Bu?(+gK zR*Pmm@7r0%a!g-Ks=Pj$#3}jbe|FZ4{$OsiHDpIQ|12$6il}XW!#(%={offl&hHc6 zwaHK??Nu7MjGcfEWr)+8A%JXUmwhOzig?bKeZ>=SThvSrbnu-K z_rbO#qyvmRov}Xo0lZcPxL{tpReq8*wvajJr`Bd$pwRV!tA`9%&|YL-L{u3yQuy)d zD`U3kAxMVB(P>zq-}F|zNZDb+I9)qkg*oU!c(OZK^c|lHg9*xwot(NeMM#mey;wUk zKd$RBf#Z{W>%YNZqDMMjD=Xd)051*!m*ty&Y&k9~YrdX0dn(qM@|aW|IA+A|l@L*1 z1oq`QoqA@{KvAwwZz%APU4UkXaScGSv&|B#t=mfHQOPlUccD^gB$frTmgMbAJ{ zQ{?ARW~Z#t0m-d?6}Hq^A5}%FW8x|hC*~9B!?Nfg0lk~>XRe= zS*hSpD%ufLi(oSq*gt2i}2}%}bQKsB<@9hknWJaG52j%nlvJ!eL3mY@ziF zaVb;?J@jP7un09G2yxA{yCYz>`}6*Y(RCRu;kvYkLk*Nzys^EPOS;FlBq+fq? zAa2CB5Mob48dsERD6R`z6x>DRZ$=S(bG8%(pOS@lnT{T#BjQ1eTRjydf2cp-hIhzL zAyD@SKU>mxT;rq`Iu0!GcRTecG|QJ|O5nqjF+WR%cbhlEU&CDK+TKz!j7BRtf7Qop zGq^>oCk1-6lp2%4Xs@`|t6Z-5IYf|)j31A|VDSE^1HPlc6}BM1 z`6Y(>NU+;ExWIIl#J!@UgCr3dQPM@$+>x;pN6W4q)gISZMTtA)v$%WJxVW5pgE*!AyGQ$@9wLp_26d; zC+e1Dcuu2!aTQbh-1IW6VBgnw4Wi~`Gy*hS_hgB%m_{|?gHvg%5Sz(+qtqhx#utpM zxj;0rsH>9_J!JfsFoksISe(J3suN*X6c<*h-O9i7&li(^Zsi*`S?)rcSD&ti8|+SD zNp#LxQ-?0qJL&kU>%qs0Zg(tLNmA4Rx|X%gm2kMq$UjfQ($yrXi?$W4oW_E7MhL`a z&BAMb;$Q-8NM2d>9*Vp5Y4xSBF5wxeM*_qRcYfvZ}}# zNBH`K77kx}bJ;he4-LWe9OJu-j=+|vNl(V{1oM`#;j8wCqC@6G>QS#ZQXi@i%Xkhe z@=q=cCz1-%#;L3q`a1qMh>G4tQp)A*9b7c}J4a#ZY`#M3<--O3@342_HAP2B7or5M zGr~5`Eo6 z?aA_P-mX2dtrIzlc?|2RhT>D4_Z*f02+9rNaqI6W?bD(ow0pV;6!h$M^U51`TQ+dj z96Btn_rHI`I`>B5>7{=#BdqUo6{V!0B~RM&r=a8xbKiteo6K`UN4p*E^$g6937n0t9?6>VqX??libb> z$o^e=p50xTW{5izo3xE8+M&eQC4+x32=U5pwnHV{D$Wu2%`MJo{wb8WW++7PNoE0NG4VE;ae< z6VwLQ5arc@Qw_2RtM#UZr45ZU59B?7B+)8pkkz^(s_`C*G#Jg zPXF2ry?MeMYkH@%bEgK{pt`O;|31Wzv`gEeBUGn+O(-UNs++^OlvQyE`xOR&%8Cz6 zYKpi{((ZOaw7fz3E3GORBEN(kw*7&a^-6!ec&fEaTM&2US8 zDuRsog8xc#NgXmXp*Tnxm?FAc0o#!1U&jnu$Ls5AVVshuS{k|Iiba>9M}$T&k=kDn zsVB7JlTd%>A2-yMeVTf~7<5BOWJoIy85#@ziU^us)2{fzI?JC@$F=|wre zR(mRc3b}-OkX;+jRZlYkyZ=cZTkCCJs?z9X(fv7DB5W<$+=F1{IkNdPif* zlWBxHFNX{BvMFW}#g%cptMkrPV`tRyRw*y!vp(ztqSy%3F%J8FvkZjLG0{Pc*BG4bbFd5+6c}~SL*(MZq?i~ z14ASINl|j;{bd!aE2hx)XOhz@7qXJiT<(%Kh`oFTRfJ}MAy)BVh1pjyUf=DXgN)y* z4A8Q#H!*AutZ7`Z!)uM&#Py~eH17CN9gNJoAM420C3Q%+aqHcfV7_>)MaurtXX&r> zJ1Mp}MJ1V5B(#`%pDQ0`8cK!A1y}mrovl7BiY0j5kjXY$$eBo~AY91p^E=5Sh#*DF zgnVs>U#PalwwQn407GP%aKk+N6wrHKvub@z5)kSvqRS^bXny#Ug~gswgXNO*!LnYQo0;Y1VF6-O? zy23o$KI~3|>8QHnPKmMO^Zpwu13W&M6X9caF~*4g+X^|IM7${gf|nYXZeaCnQ~>+l z{=nciX~nj1ktchNWd1lT=63Z(_2fu=RAAu=Rpd#Uq3mfx)NJ7B70mz;zzN#W4S9QJ z7pL}j)s5Lg_8qSuf7-9ge?7l8&~zza^UREqgMnt6{t5*s4YYpT~1J%#) zJ=WBy@z!!eyiK1EJp3IWsXX^{53pU16`9zcCg~LkdQhaDD7k8@xXrDnJK`Q#DL#yu z#?_f;o#T1eq|u-8(q8FwwU;ZilLlT|;Z=j}ISl$#@q=9yJUKNhkz@zTBat;DeF{zP z0TbuT$1#$fmCqyRJG|g72?_-%O|Eov0VE+GEhNN4=U39gg$Y$KhWrlR#arrxw2|ApS?NseatD8TrM!fQ81~!!))!> z;F|>9RhpluaJaU$S9F(hzNV_Z0i&fj?=-L3{Y>_z0=OXzVX>beL*~XKH3AfP#=K?w z$@*t&LaGt8(DILgdYN%z!2f}wiI$9mxdnMEdddJ@F7&MRK|valrxj9?M*R~x+2TEV zty8d;lR-U-{!oTm$b%NiKw5;)C)d$(GOC(kAGbcCw5mY25%#eur~3FmW|4^Ri->B{ za2D07YKpJ@Ua4-cjP^V!J-SwlLVSM<{S%ujvanBKv2v{4aUW9lv>vnlH{7Yp8cdsngnu-@gX?KCO2&l6IrQRV*$hny)7%VUrLQhS86R90xX4FwJ1d}S7phB4h{A*W zkieeXEl7AatHog5gVptCmIWsI(~lom(C7$UIA1-&8-S3Jkj@y3KP>qi*_I9GdER1U zjuPN-RReE;FZPH~=ScicMo5V?ub|t}^K+_SPx-)jwl)HC6VGUpDcO$&Ut1Owr21}n zMT&^_3D#UApMX;xqo#N(I8Jc|CxBi2u^FPjo;j|_gw*eQNqIN(!15@`fQW(WwvLlTIG|^rpT9Hm@)SINyfc9assVQbJ4 zYN4Jp)I#b-ub(3KGAPtVGh<_r97~*TwTmg1up`7Sw{H6KOq4bH{{qD_MPZ?|Q{7oJ zg18j9;XM=yc+_c^G6O;q?{wE(q{Cglv#JF@BgvtW4VWD%alVp;6E!0sdlEVg;%vDH==?bxhJL)UxD8kye@}^VR`j3k*d& zHw_yyC#c08^aou~Fia+We3EjkCvt5^p(;)ww)h$OYe~3Z0salHT9N1@`Y79xb*2UB zh_!_kzTki8bkn@*?Paha>r@6_#-G@CDqHU<{iExygR6U3tpl8HjhR&4;KH25(!hYN zSOl)dOpjAKL#f)q&1D8YcA81o#*RI{AxWPK56hAg*1h5!&O1d1uAwNTAEm`=WR{0P zi?&>}trH(WsV3&);jIoGQL#PJDCm%za&z+h_D}FN*~H&oV7%uSI0L|^*!5w`>)Zhw z2CDs(brFC#=#o_EFRDx|omul}*EE;nA>CH_HGBPE@ER^0_#Zm86glnM;n@qKf?2ex^TQl_g+-5TQ3*%b}#Mx7wVD#P*<=L-sqJXw@pa%R=8V4|BFz? zy3(;CBQzQDCwied_`*#}wimOxV4AWhBM}3Eyw8fmG)NdT8!;K zgRVcz!8}57m+fWEuiXW3`^Ic|r+BXo>HjhtZD8qWuS2Yh7=@q(!#9L&1AWIbc2E7fVgOhT2UX#H z9Dwex_=x8wi0|#+FXAE5!aD0l=am4OgI7a|(Gr_h6*aWh!+~@(b}9 zA|4Betwu((RP|{ATR_wryZvc;&VIfr&b7?#^nzuiFIYy;?3Qpw{f1<`2xMdK`Sq0A z-TE1nPJebvQ?;*2>LV)=!ciWm{^Hf+$d{8=XpzWIvvq*ot>$AYD$8C^XDl9|{Y>AK z3-uR;8G6p3fUy66GAHwJJSb=9fF`}qktQqTH36LQdj$=h$@gwon0r!>)t9H|Q=O8K z-$+Tok^t(%8y3x8=jBR2gHgAbS8_Vm3S_a_VW-ZadI{?!u;JIyw)RrK#Ad)8#&-?t zT11iBQN;7O-}6TTF?N4IEUZd4J6+B0nn0llv&y5y$IpX8B)V~7aNPx67h_C#oO=Z# z8=>L6jn5n=p@>-ifq@4yf|s!u<~Seme^yp$t0?+N%8INq9fhmo` zdWC)=`GZw1wAMlsmWcFD($h?qCy#TAo8()@Z-?k-q84~ffazGsXkY3V6?<7zFYNq? zZ|Nt}T5f$=`ZX(y@%NuKdoWuMY~`m;Lbza#fZjC!XX zjqcV2V{6^LcH$HJBU4o&aKU84h^f3bN$A)b#>VC|ds64hc>vC=Z`rf+2 znu^XnzkL*;aO^88)ZO_P&VDdpvC`OeJx6Z6r^#HHS4=)FEWOHtl- z-nw5kXCh}SEf^rhFD$PkJ`M;{y(UTX5{1%~6|MZU|0Mv>gq{J-oKfCY4O(GJtk792 zZQ+}VXb*EEHptCKX#ClQV`q*G0z<)@(insbS+?bmt z6ZQSA!0M3@Jgqd9TP4G`MMjfhJ^5P|c=Z{q1+=mvX z)*FqY^rK8D@6MEwIZI9@rpRdxlok->6&>Y)bU$DP6)2hntIUP#iTnX%nrq@jh-WX* ze1Gq)nob~AhM_lmDB=eDeBdl zg3N@4+p!$k?b5l;=!@8muvV*``oy`*EM;{L*WqeQZZAf*Bwo0ml%gU*Dy(b&%gy-6 ze67v~Bp*ut9PCd>LsAOi4212zsjptHq;85tKAr;Aw!2Fz+1XyesvISEE6h!IiLWaU zOzNl8U@_W}H_njG&s#zM|B6-}Az}2!ln$Ae&`RCogECcF4X}+@zl16Nf8;;R1n$C) z<1nIPS1=BTcmhIQ=ye21q=RL;<%r>aS5yNmEaNl6ur)L6T@9hpMn~!jb_+yZfo+0= zE}TjadlP7W)+oH#`CW?ixaG;;v3FySlQq7BkR~y+i03T9DzW5p_&r42B=5*az=H;s z^0|kk8g#R1@m~ciUTM-yECf~YNS?JoM)msfTGxN0({zN8d8R$KCm>=fJm{+e56kb%#z)tW&w9%Z63{N z2~Ib6;Z&`6!3pRh6;%fq7E(&eVUH7kxt_G{_V0C@7XSm?QUHL(N>!x)g`0Fh9L8)+ zT8;cC&)-8XSO84oItr<5c>@7zNC1SPCM0q6zlz#i;Q);;-Jx4q>mODy%X=L%IF$C* zgQg4fUVYk4pAHuJUJiHP;XC$p;QRT+hi%Hil3ST!2Bx#`4&c+pDA$l)j~9Os`*I*) zyKGcvpSZC{v?t&#@WTB1?Bjf}Sf!h8%sm$$9*Lks%G*XHpFS@fge^PZWz8Zoy=x@i zkX_~jlHQ(okm50hZI<2Uo_m&Th1kMLg;r^m4 zcv|p{6{79cKehxQ7N>ufG;#giI3gi&#FB-$=S^ib;OY-b0Q8#pCnJ}&F%WoS-`&*( zPzn6fFNTe*X^5C69=vg#WjB{Ajn9`xR!!ewnfyD$I8I$9Y%AmRCtN%Ca1;M@w{j<6 zC9Ce;cz>k;b4xN0E$@x;K5je7&6%m)Nak{9o=mjAV&`;^truxddOp*=VpS+^9%=+Y zUWc%aFUaZ=LH(eON8>Dz&zs-$0893ocPcPZxw^Ry6K2_q7HkjFov_0kgjzjw@F#ZV zcH7FCcryZ8KvM*6V|gc+`B&Fr=AG}C?Ib7szu)ghQ{G=K3gT$eb%7j&Z2CzC#?V{r zaveshc-haPj*a#G=?03cmx;QCoOfkQn?QHk5D%xd>|@)Jjaf`G`%YHQx>>|~^ zw^$$99M~q`3a)WocRMlv6kz21(M&pUv5IEONkBIc5wAX zGLgDvH9mzX&jLA)%X;0cIc=j_6KNdJDxM;l3^27|=687&;? z*Tnhl3*evTJvSm>>(fp+Z{Ta%wyN#3t$24w zH1CEkw92OiM)ZJ}zO~77`Jj1SV?T=1q>4khQ>soi!`w)>pRks!X&;0HQGA(HXOF0k zsf9dC@;SA_4T&z((HQB4w5#d*nUln3^9K`DxM^88StV+LojD>Ya&cCrqJ*kFzmV7} z=@J`sB$AJ@bZg|(o_Bpcm=C$FSUEBGp8Z+jg|FC(sh%{YP#P$;7EnSG(#wX1_LG3D&O%5s zu4*V26a0}r0%z`hrM==STK>gDeIO@jJ=qz}Sh3g%wDVg&O7j9&*jcKVWG&!(%#1Wa zCW-tdt5#-70aevgjsx!eql53>*K?JR4>K_CYh9o&?}1c6aBJ`A{|sAdelXvc(ZJ*` zbSe|s+|#^AMDVMRiHNBnumQ#$Q@*&eMv3<3{<NK?jyt- z>h5;L-6o?6&>m#&$pzwS?52zY(Z5kV&nfEZpkpTF!;@r0_t+^O9JF%TxwbsxkHKQ< zL5K)F^neEdZRtg2WL@@l)DY(mPx09lZX@0|ayu1eUrV-TTx5X-EJSgv8vXl`ioHRf z5)lDnbvwPa`%d0smB<)pS`jy&ECq2TC8q7{%Pm_;f6MjnA+D#HXu70Y0}Wb#zyEI5sfET9r%Zi7v>dSh0o8(4wfcMLZ1!RbU<84hTK<96 zGi|^BDZGf`qbY$S?xaWK^S!C`yzd7cA|x=&EbzY%$nVD)m-(t2PeVIikPnKViaSO8 z`^R}q*W(N}xYZAO)$sk?Wh|4kMKtQfdm3$JYwSS`9xy#8t;6bPfh2?)wX@RYXI(vBk?C%crllc+Yd*w0PozF;8LF^&0arHXW&$Ix?-LEd-(KcaV!qscveqpSB6 zt+)E^PT%V3P;IstW65@$?UjGMARqW{|J+^~m}U8kh!+`GVk*d`pmRyYBaYq4-%+m{Kh`luX9vIT3{K`^#Dn z+7TL{LxYgFnF*8VQXT*t`(u~k+?#0uD`K&q2-}y^7)4=Szw3wB&&RSXFO-$_kp3ky z$>ihpX4lmyNNg``Cw*VD^RiSXV#y)mry}5lSTfHvn3vzfKVIqOT|y}d$w|m+4%lZr zoEHaQS^u=fiMceN&N%LWr4BlloMk=gW1_Ng((NR5HDB8)Q5!)}k>=9F5}q;Ku-Ms9 zH=}z>E_({8;@eLs7o7Y{O*x~f4geZLhKU1TH7BNdSq~`p@@7358jtMj$F{$I41HvI z=x!ZOzu*~kTDpk=IFDW%eAI})-i-aVpCu6_ce45h~;clNBebs+{+a z=AXr<9)N?X;*lqi-ow;&(QSmA!WmptN4!;h*{=B!ny%9%`bi13((+ShX1tM9qlQ|3 z)eyTHLIr+KCmRI6?F0KmfTU+&B=5G~?J&&DcoE^RV{wpF3+_VRmhva@E3r6b zLW**SpPy|fM`CIw23kC#Fki!wZZ~^R3N2Py0JDysLVRv*%^-qabRN03q$!d`w{)s# zN;QDL5uxJBDlOq&%j41DiUc7^qz%P&Y`(0Q*)936;>1PFKA~2ZhYcL55;he?<^zeEX=qLF`c=vaXo{B{@7}} zRv*AsKivf@-)##{##;8G#IVhzi`NpGq_5q|)y1O~Xq(>9Rr;n4yDGD*XFMBor}dD9 zQr0kh6U|ze!uQ?1Ia2cPuFodu6?x$DziDmS{fue?Z8*a_eOwL0Ak8doEsZ#^h>-ZC zF>etJY$K5$760L>Db7|mE@XQ*TdvtwMa<>#26><2#+&fB!H#}i@su$ShzNzDb@hp@ zu3a&=dor;ilM9UyFy_vF2d-0a+1dWXm$h96h&!}{vAHIt;qx!g&w{s(41h6HKKY}| z={~-q46|D5ejy)_E9p7GNiU>p0UlCO&Zh2pb1q73ynMxtjV(wqkKj8;(X&vIke2Xqf_$;4^3HuAXde_Dm19;$xQUmtW)9YNz6YiVPySe{0}O-& zVY^qbfx$coRGx^7W<)nBJ7KBG)e9dT%z3qZpz0%;10*I=vpnz@_w~$0FDKTIGb*UJ zxpo)%Wt1l<0tT3rAOS&&uq$Ulq5Sm-fA|)8ksy@~L(rTmXW=;jZ~|88F4S{kWy)tp zO$E+>P#@4NH-t6pkP#92@IPoYfX(cv7qzCr6fUzFHrR~0PQ5z@@3N6{$0y=#rce~l z$3mBJ{g3*`Yh74#iXq+3`gyim=paSU_)d^$S-W+FWI1gqqo7`z19`$B9Pj}oKEH;Mk?Y=FXNO>)Q-DIntD`=q0ojLTTnJW<-Z4Ij zBeL2gr;nrM-OvG-=-P!KROz0HCZkc>nFhC7Mkdd^>;9-&Q#{~os$LimIpF|V9l^`r zL#K~Tas+?gW68*G;wj-jH3GKDIt!aqQsSSOGvCT19%n3q{Q2EGQVUT*J_R$W0&SbZ z3c~|Gh6!73qq~n&X1T=$J(4K%s@ql}=?1VC%GIRrv$k?%zf9W`UJ8#XI94ZsK!0iW zU7v|&7{(BbQ9UwGpG5-ng@96EXAAs8eo;7W%P0SulzP%C4`t>=^&9@8%O*M6J6{rx zax|GGimIv%n}))EQ>098YE%_hC0=?``+dHmNkNva{(b(O_HgVfnc!~#Q4o`S1Wos8 zS|;&R=n~1oqVLtMk?28p#-r4{44CQ{;g`PhjDF^`RDNe4AsN+*fHM#n#-5MHvilw6 zc$hjOGP+lQ_?tu3mt^V7o??_u@v7uBZ~^uIa8Qt>-Y`senUvWTPRYOR;87H_lluIe z-8e8B*WH&JaK1P}K+bHbn*SfwPv5|aK~hg#z6}_cdfs#jRkX$vWlKb&^eRVGzVAqj zSdmL@@X!Yvk8fsLx40z-QsQsEk6ktu+*4FUwxhUJWXchQBaWPJ?Il~qJ4%qr?i1fY z046!(8Ww%@ZSRq0!fXF6u)#EtuU`T61DM@TP7+-pU6Wi4#dmo^b~PUKrtuSB&N$)W zgK`N%{7GOF7Og=o&4e7fj-JwUN<{wdEfrW&^JmmIy<_X=AMmy2pE0T- z3J=qA2_qNM%4zgFSb)hfzI+CgS8)$E^sooETN>MGpKDDNdl&q=l9#7(ZOqk)UwVcb zkPBHam3U74NfFz$CfZvSq%?no;NG)K&&En^e|e}VB+mb;(IOff9g;=HCJdA zwJ2eoV6a{;BGXv8<1flU6_!nndL{HgTU>E)y{LLfk||ASZS(s!S(Gazk?Dc(_MyB# z#l~E1?Y!3*6Bm7nHP zFXtmJ%S9z)K-NM4Es;#Ku&y;27b|KaZnig_*J@{Zf&o3C8lqOD2Jf@tp}H z93ThpH_9k|NA&uM^`}^P-Di)RMDj!1+6?NstiD5Up&Q^t&yMdpFY-=mv_`1uHZP)A}qsib-Q3-AT2TW@po>1ft#Qum%WEvO7!brVYz)bUHsnt@km1rZ^lE zgu)43f}#pSi|~LsTi{EQBn|R@;vGc6Zkb#VNU-l~@_t$hxuC@=qd!5fJa=!8~51dW*LKDFVVDif2}2f8%cC0-0$$nfQ@% z4wf!MXDB$upe|(ImO7bf7L`qnd27NFMW}W6jEvPXBcvOneH?lU_8(P z`+&eXce6c*0*mv`v_hlhF%vCdPXyP{UlJQ+EtRE`xUSgsri)~J(k;oQ{pH3P-;T!) zUVN@$iogND`#_36rj~L^udwq^OT-oJwT@CZ^$}!s9aYpL&rG)d0}QbtDDT9IY8X{4 zASzJ~v_eEn2F)C^L!=9cN~E!S8w7$A+H_-MxHN)}%R;;pq2=t6_X6kFv)F)L@bG0A z(?{e4qz6mPyR5L@b7C4TPN0>N*QJ7g9p?TP#5%kBF_^XgL)GTa{B!6V;`j_0hR zZ1Q?vc8@?&;Hp9M(e4tYdK*Sdk#_!omppplJ8*yOXH&~$^Bb*K7Kn5U7fj{Wn#d>~zV|pdgu9KUg-WT=x*mL?7>h8PC8F|9t>dgFuW;MIN^7vUi>iITs0y4# znH7g7*Qaz8QyZ;%@@aIKo<@U)C|m>{7n4iAphQ*}%?We@mL`lRx`vV#=zl_Xx-{bmJENL;dTLJ1MHM(KuoEPUqG9J55X}J{ z%(u_AHK6y$Zqu8oumAb0YEtCisN)4aa0u~kt)7v$y=46*#tM8W)rs6^@oUhtN63XlsP z`y?&!mJd!c`$}aMC=`-BqNi~P#UF<=2Xm?T{2JWXGIvVGfCS(AmfejcKSdlbc{MC9 zUknRZ+aEJwK7&@St4gQ?A8PGrvh#ZLPX#dP7LDn?UVXz2Pw#~jT)I3^Xzj^OhU0W6 zUsaMtqFZGCG#vQPyHDXANI%9^-CM%)w`Sn+W_Fs5ab-%E5dCvV8jvB2Z1r3Gn?}Y0 zSnD2G-77n$Gfi&{!u^8)Z(v%{K^7a>-l(&9s!E zv6J8vZiK-E!7Fvk;E{K` z!RG;bHg_9;MkTmWPR*tV6P~y1A0k1s{>N%CF=6wE-tTAMgNchYX-)U{Pp3R-I)8*w zTLEfjW$RhHj9LgVe^FNPyN}H|eT#g|(lj*Z(}hqSC#}L*yGYs1zS4 zqT$VRBO7O=Hndqp;A7f*3tk?zhFInd)^0^EEX}o5+s}KHTy*z9+4Kp9{z-~Kc)>J8 zM;fRJ9BeCgRxqtahptrTWei<`$F6>5;W8%>fv*V!?ECLl3;lbY#<_mFqz`OW*FQ1C z?-;c2&3*ZQ$~y0OD*yM77ujTHX3NSUBb$uuJ<84w*?W^&HW}H%vB$AjHX#|uh)`B? zjEr!MWBu+!KEKcR`#t|T#~cd07-0YYv-sp&U2+AK^XrHuD}bUnV|? zkp|261Bjay)boFkn+6^K?MHdR{ENN3{+}{lJMTB+!?G`Hm!_>clt_kcuCnS4xm=~LCTemNo8 zHA6F*oF=gBPOY%|!-Z)zY%-6@{$cEta_1hVBh$+FuHHtM-HSqlHMJ!b!+<|Tt!>QX zc0K)7EvJ-I_fli$3_OBvjsh6w!FYdpdGFXF9J_#8XYY~RM<`}uuzdgrCG5E+>+)1z zj9ziCJP#tndD)Ks&=D_8mbEZtS~2>&j#XKMRTc&wI1w(GHa&hk)yV3DOp2xU4&7pS z&-E;-o@>V-#kmt&VZn`h0 zb#skOz~qNwvGS~9%@dTUszN6N!8nwUdE+xFqh_=Z|35mWSgD__J5VkV!b$V4tK)L< z_Sc%;FG|u1NA-dvr{Q(7_EmGi^7c-+BblJSE*0^Y^-f~@n8UYjZSy5V8c~tRP40Wt z4b_}n`z`Trb&pX39P&SmDR;MsJzP?>R14IwOR>ADYSfHS-yW4&U$cHd4kLeMC|O7i zEtumLvV+L0i+EDiqzF90r`{k9a+&SQauU4#LfYn=^7^%;7dls;m0GtVE`I8VW(els z?f`n~4!Ci!IVms6KK6E`%(DgkHBFuH*JLSB2M3n&QI(#I%6Av<<7hh1ja$Pt0u`(` zLSVBbOlU3df_~gSf@*)|k4^(Xje(dwhxz#DM!`>Dq$zQmm<+a4lV<@`UA+W_*E+f^VoR*cudlZwH}3d%who6;KwL z8HtHcAiz@Jx~fSnqB$Y+ZGG$ibJhmaYm1l5m}hQBly^zB`5s!p?u;r3?>#!i_uDUG zNcwWn(fo+^x(Igm5Ujz`5vGgIMmOzcT%-iVFeE_xksjwwxvE5-*=6!I_iuj3NFJzP zWZf1TH)XFS67bP089uvQmn&cpMyA1xFcW2NfSWaTluN$OF1D7k(CW;7wa)or;&zf` z^U3(jz5>VXRLJXd*5eb^z7E{=sQrbrdP}i-QTFxq%@DGSUqZOmmyUj}Jy7PaW1B2J zTg`;zCPq=43k#0)S{kDxQ;h48JO*_fmog3bdom{+$Zx$EL9p0go{f1}X*22inV)Hx zS5S*S;p->1RLb@;qb2*Sg!^)@1M0~KH9`1?K45>@KY8|`^jUeF-OfTsinY#9WuZdzfiMf)_ zSg`;-QDfXcw1!G7WqI*3J)Cxcz~>ayWeF?s@^2w~(I6W38=@cc)?jTZbfKuctM=K9 zm(8Gv;8_pmS;pvPZ&kXqpx2bX5X6k>UB}tN@pNFz>ovVx-8ymV%cDKL%#Uu=fn}G0 zO|EUY5t|K*=S^;B=H+BB{-lTYjq<1qzmOTN*%5ihRW{1;tDUwbTEu;YX?2AyQ&caM zQI4xCnZa@9VwdGiZq@#m_*p(0(?vJ3E%aKx&X4spoVpq zZ*+DOoJo{Oo4co-{Buryp8yI*#s)Ruc_Rw-Ya6W=7pLfkUSzN$Ix9cCeGY`%;`bi= zFs=Nem=y_k3lTN9L?+w>e9OE8YNe%&b9F~ygfjV)A}hg@$Xxa$kjs`$h|H-E?%^wn zNL9ROcoR#w@pbWl_5s97(K}twv8T-#bzBO@c$!Bi@ixhFSKXrsWo8C#r9xSFVOo=1 zY5M29n8dSD)hVrHg@m4(#3QrDt1wOp{W9e?lv#!!b*_|d?V(V^-^@>RC7{3U3@qu3r$6ZjUN=% z-99d?oDC%2n)7>YU%`iNH7UpSmUhC_>*A!;rVP5PJ044H0jay5F9ml2Q(0d0P)9kl z8r@lZIJ<&6TsX1o!AGIDXR+xC=@ywNi%j&9>a`Rb62#v8Ca(d z(~NB6RRj9wCTe-%vxzpp8^axZ%>2W1`JB_fbsQp0%KLM!$7qQUo|M)MT;$Tt4$*=O*~3Xw}{{TL&0E_M3BJ}$#*M>L|CyX|DVcqzt^+x5;etdNygY{CmNyfgIO>r~+(dwTY#f zY=P}9b*GvnlK;7UMV~;#GYRxz<4PJG|5LB{4#Lsjbuub{T%P;Jh&Ood| z{5)hMJ?If9oZ_}lf=E@5b>m)E2{D5#{{z#(R1_y@@kHiiW1PubqyJFliuGII>Lg>< zJ0Wqb`p ztc!nT(dA_a-4Q6g;YwOx;Ym*nSyG`>5z%HH^mTZ8 z9VNevQ$lQIV3{wia_OI|9uqj)fks6?^+NeSuwTOV2P!58-@nC;KHOXq^apuV9t5Ry zYaoVWI$N3(1fC$Lp+qKMrsSyk)}b!`NtlVZCJUQ|l@8T5~ef`_x(DE+nsfJQ}jol_gP6 zv7P`<0Gw5r-4L=0o_e#Y>321@uhHD``Q-|YIpp1)f$n5pf zWAX4KLW|42v>TFDS@%%BJEtV;O=TvnoGr$w5)}B26LVX*TQknI`WYoNdcBcc!-O22 z)fWyy{(3!tEtb?xVcg0-G|UKQnyq@~>4WiIdTz>5vv)9kZQsqr!VOa1{6F zK`@?eh6~Z+=Bt{t@>NlOv|%})WJMYfw9#J{fQk{G&N2Mv)P?XD6WR)KfnnGpL+jvo z+1<>QBa_6l8t>RvY+w%3Q+u#@@L^c3f99wl6rV?Z1g|H*BI;F^@V~IUgJjD@?S7Xo)567baWA*(0-uKMzET zIXW09A**KmE4j8n0-l1#=+%h2SPj)rthUN)n+*p%tUi1%$@0|z>J0Ft!7DY|B3Ien zz$qA%=cgTlc`9PQ!j}+YAYjhBm;u37=ltEotDuOyLUj5Hg$lKMZ?OI2xrVH+6b-d- z2?*d0q6;++-pDKdC~YoyE&d#a!Pnz_YG>jDV1EC+2b;PPK?aCSP(e{)e@Abi{MI0~ zN4<;h!hgH2+j@ZZXj#3haMN_DrAT~SVh)pYDD;i)Cpf+A6A%b3()X3C0Y?4H7bj1g z_jfPDS{y6qyL!GU`69%Q$9GJx+bf!$ogf;U{r#-yK#FlPSjS13MvUBH$yA42!qI?m zcQEjs06igzwlbzQ2^yy~AU?&l+WvBx82lT>7GM1XLh5YS{$$Qyw}kO|Qm%E;2b zU4J1K*_uMRCxHA@NGPF5xuK=~cl>XqRVt1QLwhjEzq^Pdy9+=Bs@f5R6l-_a##P%6 z(B_Xd&7-I)?mM`B2xBp*%ervaZkCNqPnPIwP8SV5NqqBY^oW<>boKsk13#i5+6Ff_ zGj@aBS&xHbY}^89s?^3re<|DCGFM>dD*kqYfhxV2#IP8~P+WRQ?&IJEN0xG#<{jum|8T|5qQe@Y47=(uhsr! zY6SK^6>#C(vH?n=VLuCFA(ymC**O^PCkL477n<3vJ6+F~+mrRr`VD}8EFDeO92+fi zALC1%rEZcl8qk5!?RH82{ zXV#~N2w|d3nd}qzlpuCBw5PEBE}lSC^el%a#zZvW&93Nb&M&%>)ME7|+#VP6jna<`QXp(0EN z_gYe5gb$i_z%%z2N*H^$qcaF`{hIVeQ+#WiPFa3OdgIT`7&GPyeq;-%(@n{Xv}6(R zeX>7S7l-2gU23@oFKH`Oze^!w;;Hfj+6B*k%q?WwX_EpbWQR-1jCn$``nrDe{ApTO z!PY@*N><{qk&zTVxRV@;pS?Y0V=u*;{<)6`#5zy)9OV$Me}=G`~#++QuSPll7d6|4LBi61sW`s_3*=(R}%Vr?rbz$9vNR6TOJLlL|D`8{`Y- z+ab<^TsW$u?I;ToBcMX#it_Mo%bE}UmXl%vgoK3fCckx3!yMOpj@n6xDh}fx)YiJ1 z=qXyb8?Gm8@?40!`JzSUM0jVRY>WS!!`y2FBA2%rbXtRQ87E-sqUxLEAH81wf}Q+7JY-?h)xV^X z$yPYhzaJTx$}`;{LysI4JGE3KF1X9uyE`zHzNKGyYIj4A&A$YW`4?{&sC^ck5M|m1 zTH@B;b^GcTsca;k*??S5GomOnMH9&T(GzeAziJxbg@)A{4-KxHl!VnUEu|H5}3#SYQpoSCN{%uN%SGzIo5yGfz)%to-SZdzrSS zu1M$w6&;F;5u+>sEKMMYXZ&2{*cVZI#fOILeJ`XO!~n1t^>7@|WTn*AgDpmKGhopT zn)=%>$VE3;2BzAeAIzzwTf2Ws?W1h8rY*}!9Xr7rF^A&EtbkTVPsE z%JrQXNY|)9*p`?XN1x|=Pn2ld;7*&B&pmfc;ya9tN| z9suDT&>(Swer2Oa}{^4}XXWZkG56 zb|R@$@urz?S6(t^ePf{I{R#; z|ClZ`?kOccbFIGstWc*_JMOyXR4t#KkyOj|2?aKf(Am4x{uijsi#pT^ADz z758}9RvvI4WNyTE`Ex)=9R&X{6}n}GSv*;S9oUx2jcMdUhS!0~VfSis_`NQ_ng1r7 z6H(#VL5#!pHKY$Cqd~TF)Sl!#mf7@2cCu3eWl;y+3H$ZkWyV4>A6jyHSXm)zix%XU z4*23U3KGY(oEiM1hImD&o7^BXUUmjBL$@pR^2Fnxr9*Cr>!m~Bdrxcpr?MKkaU3!L z$v13>6h|eX9qrFw>5#***Rvm~R*8PdtkXn;usz4JG>Wyb zn1tO={&k)?i(y^Wm-(wIb`b_9UP+Oq&0dV+pQ-R*nvb}x$ucqU@)F&T=Rl?kV4)ww zmv?f)ygNO8nCi*cEGIMj1AAdn{fcnPrPpi|RvK-3D&0U_I@a?Y1WJ6HCeoW!eS0B) zz*bXrdr^E60{WU@4q}PCdZJyiSVh>m4-~wZ)`1A5^U-M(E33nNXMVx{anRJGFu95r zju~WFQu&-(JHNt?OGfy*Gle!odM_;?@BY|Huadoa k2gw58x%uILS>TH&R)&uThUg+7w}6*|jOx=$DU;y;1Bjv!umAu6 literal 29225 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 l4)>L&xj!#F1LW4P diff --git a/deploy/cpp_infer/readme.md b/deploy/cpp_infer/readme.md index db045adf..74941486 100644 --- a/deploy/cpp_infer/readme.md +++ b/deploy/cpp_infer/readme.md @@ -164,6 +164,7 @@ OPENCV_DIR=your_opencv_dir LIB_DIR=your_paddle_inference_dir CUDA_LIB_DIR=your_cuda_lib_dir CUDNN_LIB_DIR=your_cudnn_lib_dir +TENSORRT_DIR=your_tensorrt_lib_dir BUILD_DIR=build rm -rf ${BUILD_DIR} @@ -176,6 +177,7 @@ cmake .. \ -DWITH_GPU=OFF \ -DWITH_STATIC_LIB=OFF \ -DWITH_TENSORRT=OFF \ + -DTENSORRT_DIR=${TENSORRT_DIR} \ -DOPENCV_DIR=${OPENCV_DIR} \ -DCUDNN_LIB=${CUDNN_LIB_DIR} \ -DCUDA_LIB=${CUDA_LIB_DIR} \ @@ -193,6 +195,8 @@ make -j * `CUDNN_LIB_DIR`为cudnn库文件地址,在docker中为`/usr/lib/x86_64-linux-gnu/`。 +* `TENSORRT_DIR`是tensorrt库文件地址,在dokcer中为`/usr/local/TensorRT6-cuda10.0-cudnn7/`,TensorRT需要结合GPU使用。 + 在执行上述命令,编译完成之后,会在当前路径下生成`build`文件夹,其中生成一个名为`clas_system`的可执行文件。 @@ -203,6 +207,8 @@ make -j * gpu_mem:显存; * cpu_math_library_num_threads:底层科学计算库所用线程的数量; * use_mkldnn:是否使用MKLDNN加速; + * use_tensorrt: 是否使用tensorRT进行加速; + * use_fp16:是否使用半精度浮点数进行计算,该选项仅在use_tensorrt为true时有效; * cls_model_path:预测模型结构文件路径; * cls_params_path:预测模型参数文件路径; * resize_short_size:预处理时图像缩放大小; diff --git a/deploy/cpp_infer/readme_en.md b/deploy/cpp_infer/readme_en.md index 1d706afd..fe5abe25 100644 --- a/deploy/cpp_infer/readme_en.md +++ b/deploy/cpp_infer/readme_en.md @@ -172,6 +172,7 @@ OPENCV_DIR=your_opencv_dir LIB_DIR=your_paddle_inference_dir CUDA_LIB_DIR=your_cuda_lib_dir CUDNN_LIB_DIR=your_cudnn_lib_dir +TENSORRT_DIR=your_tensorrt_lib_dir BUILD_DIR=build rm -rf ${BUILD_DIR} @@ -180,10 +181,11 @@ cd ${BUILD_DIR} cmake .. \ -DPADDLE_LIB=${LIB_DIR} \ -DWITH_MKL=ON \ - -DDEMO_NAME=ocr_system \ + -DDEMO_NAME=clas_system \ -DWITH_GPU=OFF \ -DWITH_STATIC_LIB=OFF \ -DWITH_TENSORRT=OFF \ + -DTENSORRT_DIR=${TENSORRT_DIR} \ -DOPENCV_DIR=${OPENCV_DIR} \ -DCUDNN_LIB=${CUDNN_LIB_DIR} \ -DCUDA_LIB=${CUDA_LIB_DIR} \ @@ -201,11 +203,29 @@ In the above parameters of command: * `CUDNN_LIB_DIR` is the cudnn library file path, in docker it is `/usr/lib/x86_64-linux-gnu/`. +* `TENSORRT_DIR` is the tensorrt library file path,in dokcer it is `/usr/local/TensorRT6-cuda10.0-cudnn7/`,TensorRT is just enabled for GPU. + After the compilation is completed, an executable file named `clas_system` will be generated in the `build` folder. ### Run the demo -* First, please modify the `tools/config.txt` and `tools/run.sh`. Then execute the following command to complete the classification of an image. +* First, please modify the `tools/config.txt` and `tools/run.sh`. + +* Some key words in `tools/config.txt` is as follows. + * use_gpu: Whether to use GPU. + * gpu_id: GPU id. + * gpu_mem:GPU memory. + * cpu_math_library_num_threads:Number of thread for math library acceleration. + * use_mkldnn:Whether to use mkldnn. + * use_tensorrt: Whether to use tensorRT. + * use_fp16:Whether to use Float16 (half precision), it is just enabled when use_tensorrt is set as 1. + * cls_model_path: Model path of inference model. + * cls_params_path: Params path of inference model. + * resize_short_size:Short side length of the image after resize. + * crop_size:Image size after center crop. + + +* Then execute the following command to complete the classification of an image. ```shell sh tools/run.sh diff --git a/docs/en/update_history_en.md b/docs/en/update_history_en.md index 82efc290..d3e57085 100644 --- a/docs/en/update_history_en.md +++ b/docs/en/update_history_en.md @@ -1,14 +1,17 @@ # Release Notes +- 2020.12.16 + * Add support for TensorRT when using cpp inference to obain more obvious acceleration. + - 2020.12.06 * Add `SE_HRNet_W64_C_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 84.75%. - 2020.11.23 * Add `GhostNet_x1_3_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 79.38%. - + - 2020.11.09 * Add `InceptionV3` architecture and pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 79.1%. - + * 2020.10.20 * Add `Res2Net50_vd_26w_4s_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 83.1%. * Add `Res2Net101_vd_26w_4s_ssld` pretrained model, whose Top-1 Acc on ImageNet1k dataset reaches 83.9%. diff --git a/docs/zh_CN/update_history.md b/docs/zh_CN/update_history.md index bf4de357..5d1d8aa2 100644 --- a/docs/zh_CN/update_history.md +++ b/docs/zh_CN/update_history.md @@ -1,14 +1,17 @@ # 更新日志 +- 2020.12.16 + * 添加对cpp预测的tensorRT支持,预测加速更明显。 + - 2020.12.06 * 添加SE_HRNet_W64_C_ssld模型,在ImageNet上Top-1 Acc可达0.8475。 - + - 2020.11.23 * 添加GhostNet_x1_3_ssld模型,在ImageNet上Top-1 Acc可达0.7938。 - 2020.11.09 * 添加InceptionV3结构和模型,在ImageNet上Top-1 Acc可达0.791。 - + - 2020.10.20 * 添加Res2Net50_vd_26w_4s_ssld模型,在ImageNet上Top-1 Acc可达0.831;添加Res2Net101_vd_26w_4s_ssld模型,在ImageNet上Top-1 Acc可达0.839。 -- GitLab