From 926726d3b43c69a5a5db63a8a85438582c82f90d Mon Sep 17 00:00:00 2001 From: zhongluping <278527840@qq.com> Date: Mon, 8 May 2023 11:32:38 +0800 Subject: [PATCH] add hunspell Signed-off-by: zhongluping <278527840@qq.com> --- thirdparty/hunspell/HPKBUILD | 79 ++++++++++++++++ thirdparty/hunspell/README.OpenSource | 11 +++ thirdparty/hunspell/README_zh.md | 17 ++++ thirdparty/hunspell/SHA512SUM | 1 + thirdparty/hunspell/docs/hap_integrate.md | 88 ++++++++++++++++++ .../docs/pic/hunspell_install_dir.png | Bin 0 -> 6872 bytes .../hunspell/docs/pic/hunspell_test.png | Bin 0 -> 15553 bytes .../hunspell/docs/pic/hunspell_usage.png | Bin 0 -> 17236 bytes 8 files changed, 196 insertions(+) create mode 100644 thirdparty/hunspell/HPKBUILD create mode 100755 thirdparty/hunspell/README.OpenSource create mode 100755 thirdparty/hunspell/README_zh.md create mode 100644 thirdparty/hunspell/SHA512SUM create mode 100755 thirdparty/hunspell/docs/hap_integrate.md create mode 100755 thirdparty/hunspell/docs/pic/hunspell_install_dir.png create mode 100755 thirdparty/hunspell/docs/pic/hunspell_test.png create mode 100755 thirdparty/hunspell/docs/pic/hunspell_usage.png diff --git a/thirdparty/hunspell/HPKBUILD b/thirdparty/hunspell/HPKBUILD new file mode 100644 index 00000000..8ef04ba3 --- /dev/null +++ b/thirdparty/hunspell/HPKBUILD @@ -0,0 +1,79 @@ +# Contributor: Jeff Han +# Maintainer: Jeff Han +pkgname=hunspell +pkgver=v1.7.2 +pkgrel=0 +pkgdesc="" +url="" +archs=("armeabi-v7a" "arm64-v8a") +license="LGPL-2.1 GPL-2.0" +depends=() +makedepends=() +install= +source="https://github.com/hunspell/$pkgname/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +buildtools="configure" + +builddir=$pkgname-${pkgver:1} +packagename=$builddir.tar.gz + +source envset.sh +host= +prepare() { + cp -arf $builddir $builddir-$ARCH-build + if [ $ARCH == ${archs[0]} ] + then + setarm32ENV + host=arm-linux + export LDFLAGS="${OHOS_SDK}/native/llvm/lib/clang/12.0.1/lib/arm-linux-ohos/a7_hard_neon-vfpv4/libclang_rt.builtins.a ${LDFLAGS}" + fi + if [ $ARCH == ${archs[1]} ] + then + setarm64ENV + host=aarch64-linux + export LDFLAGS="${OHOS_SDK}/native/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a ${LDFLAGS}" + fi + cd $builddir-$ARCH-build + autoreconf -ifv > `pwd`/build.log 2>&1 + cd $OLDPWD +} + +build() { + cd $builddir-$ARCH-build + ./configure "$@" --host=$host >> `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir-$ARCH-build + make install >> `pwd`/build.log 2>&1 + cd $OLDPWD + if [ $ARCH == ${archs[0]} ] + then + unsetarm32ENV + fi + if [ $ARCH == ${archs[1]} ] + then + unsetarm64ENV + fi + + unset host +} + +check() { + echo "The test must be on an OpenHarmony device!" + + ## real test CMD + ## 进入到编译目录执行 + ## make check-TESTS -C tests +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir ${PWD}/$builddir-${archs[0]}-build ${PWD}/$builddir-${archs[1]}-build #${PWD}/$packagename +} diff --git a/thirdparty/hunspell/README.OpenSource b/thirdparty/hunspell/README.OpenSource new file mode 100755 index 00000000..eeb45f4f --- /dev/null +++ b/thirdparty/hunspell/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "hunspell", + "License": "LGPL-2.1/GPL-2.0 License", + "License File": "COPYING.LESSER", + "Version Number": "v1.7.2", + "Owner": "zhongluping1@huawei.com", + "Upstream URL": "https://github.com/hunspell/hunspell/tree/v1.7.2", + "Description": "Hunspell is a free spell checker and morphological analyzer library and command-line tool" + } +] diff --git a/thirdparty/hunspell/README_zh.md b/thirdparty/hunspell/README_zh.md new file mode 100755 index 00000000..4123db3c --- /dev/null +++ b/thirdparty/hunspell/README_zh.md @@ -0,0 +1,17 @@ +# hunspell 三方库说明 + +## 功能简介 + +hunspell 是一个免费的拼写检查器和形态分析器库和命令行工具. + +## 使用约束 + +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:v1.7.2 +- 当前适配的功能:支持拼写检查以及形态分析。 +- [LGPL-2.1/GPL-2.0 License](https://github.com/hunspell/hunspell/blob/master/COPYING.LESSER) + +## 集成方式 + +- [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/hunspell/SHA512SUM b/thirdparty/hunspell/SHA512SUM new file mode 100644 index 00000000..83160010 --- /dev/null +++ b/thirdparty/hunspell/SHA512SUM @@ -0,0 +1 @@ +d007edc8cb7ff95048361418b088bb062962973247c940aa826c9859a5ef90a9734100bffe7c7ac9a774f2e233605e814efb9e7fd3fc8c4ef4b978e9ec990cba hunspell-1.7.2.tar.gz \ No newline at end of file diff --git a/thirdparty/hunspell/docs/hap_integrate.md b/thirdparty/hunspell/docs/hap_integrate.md new file mode 100755 index 00000000..737f132d --- /dev/null +++ b/thirdparty/hunspell/docs/hap_integrate.md @@ -0,0 +1,88 @@ +# hunspell 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/hunspell #三方库hunspell的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将hunspell拷贝至tools/main目录下 + + ```shell + cd tpc_c_cplusplus + cp thirdparty/hunspell tools/main -rf + ``` + +- 在tools目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + + ```shell + cd tools + ./build.sh hunspell + ``` + +- 三方库头文件及生成的库 + + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + hunspell/arm64-v8a hunspell/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 +  ![thirdparty_install_dir](pic/hunspell_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/hunspell/${OHOS_ARCH}/lib/libhunspell-1.7.a) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/hunspell/${OHOS_ARCH}/include) + ``` + + ![hunspell_usage](pic/hunspell_usage.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行make check-TEST -C ./tests 运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![hunspell_test](pic/hunspell_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/hunspell/docs/pic/hunspell_install_dir.png b/thirdparty/hunspell/docs/pic/hunspell_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..25cbbc722e5307cadd1b59edef21820a12fbfd96 GIT binary patch literal 6872 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 Hu#fm3a`*sy literal 0 HcmV?d00001 diff --git a/thirdparty/hunspell/docs/pic/hunspell_test.png b/thirdparty/hunspell/docs/pic/hunspell_test.png new file mode 100755 index 0000000000000000000000000000000000000000..fe4c14f0904774447d4ea856d5992e56eb3f8753 GIT binary patch literal 15553 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 WZC>^fSO)Q5Z@&A6_&-1V>;D12bvU^I literal 0 HcmV?d00001 diff --git a/thirdparty/hunspell/docs/pic/hunspell_usage.png b/thirdparty/hunspell/docs/pic/hunspell_usage.png new file mode 100755 index 0000000000000000000000000000000000000000..7cf91ecf78b0a8869011a6245f52ec61c28263d0 GIT binary patch literal 17236 zcmdVCXH-+&*Y=Bw(xg}E0@9VLbP%MAAVsMXiZm&qNrxy!AfZZ;jsy^p-m64vqzj02 zqJ%0n)P#iO#QT1p|ND&h9p`*G=gS#mvtdKBva@r|x#ya{YZ3p{P=}h5osxuvgj!Em z(}aZN+8FWYC*(JX`@H>kb;NI1{7iH-NNUD8w}}U&F6vLzNl5CGsc`n!iN_S)x|V(< zBs6`0zplW6 z(rgscY$Ug!U~cuVoJqaG`{#L^N-u!V&QA;`49e^e;|ea}KoQfK7o7pm4n9{_c3?r# z-xE?&~UJ0#&8pg6p_x#!7Lm&5$a zAbI5GVBw3Na>{_(C~o}1xx5-(3rj`fgOO{gpAQR-vFPb;?X&pcn+tNnd~~fG8i&m~ zUjd`O%WvVAVU`I>HEzYHkUyT5)^#b;0Cr zGJBV;Ti?Ocr*u_0tOry7yTY1)1UXZCDH2X_-^v&wU3Pe9vS;7L_a)!y=EbVV76@j$^UEr>9tHIa60a#R1o*_pR$ZrS5Kxu45PVvvJ6+!6JD!UKL=;|Mbp zd6n2feb*_COlzm{3}LGJGKe5A(-GM|CQ$|I>JI|lHxx~p-BHud+6IK2DeMH++zLMi z+Pj?QasqXr`~hqjoqK%@&*Mip3hP~!V&%06jTR=~>(|1&%n7sd1&mowlOZjh;$Ifv z?3GcT8|+6=W+!h#V)gGH$V8o5c#`|_K-{6Sj+sKp2UYtHIWl!s8y-@1I^w1ikAPxA z`?T!MEJ%9iUS>e*j7smNZqsIF@pd^o?7(bEi+k4k&qIBe_ORJ?fCoC3MnVbm{#`CDCIfi}QiA4+X zPVNe^1iUR6r|t;}=3PzxJ)nQ4M>>#M{CZbPkxKX@UerSTt$a3!MWsb9NKyvefs-fw zd{XrFeP^8-;NkSPLBAHI?KUY27zI$WuiySw-cG$Z&i=>o1PPUoZ`pIaumQiiu&=j> zOz{cemK$WJ55Ea71A!0L5rFIW2~Tl^2%IVEcXwY=%EY6MHx3 zE=qmwfKvOn)Sh>2b8Umo--MR@4e_PNmBLJI#ew1>^$50IfjnC^y=TAySo~(Die$#0 zAJ?2rSV4%}-5!&Jao&$TEtDX)3~y^}k3~VobmQe0q{Xkx*&&)D9>7s9}^Rswz&`JSY~%30v-flHoT!5EUr%7*3w9e z9SfP{hO9GfJK7;Ii~Z@mAl7eUShndr^gnyJUTayD~J&= zJakPt__BnIE<>kdC#T)I9_@dG3hyXZkB{-EFN6D|B7DP$Jzh7Ul%^tx{hXs-*6uAsL@!d zJBduf;$nJ}?aR|YC)F@K{qfcX0(SN+6IPFa z!{%?_?s54$Z!Nxz-|wwne$pfm#92#ESUWm>PNKl_SeUYQ&kptbjzIPygge{(%#P=- z`4g-y=QG^-Nv$P;%lt@3O%b~?xWb=K)`^7+FEcjdH$k{r2<>|U{EyA%2zLl%;5UOQ z9I|}_HFQ%O3E6#wK&JUzmW0JZXq^|$cP`GG354l&>??#1vb@&lKAJi{3!K~5I&e{& zEH&jIqNAo{*wW(!!C>Cf_n@3yTU6mwe+0nLu^mZl8v)Q|MTuxwwo&EO5+Y z_=P|l&ExYy29q}{r^#(AS#RDPeAfXrx!$YM)o?ZA>|KSVuAD3VAzR>;wCR0g@4FWqA(#5nTO%)NHA*Bb+>5ztfU1VaMm@Gzosc>o2hW+AiplN-&2D8U@)% zd@|~>^oX8AQoQ0?+j$UUV*ylQ0(>1S_$iRZxU}u|Z-sKJNK3UPbR_B`Ey-Wc?8$k- z;Lsc?tFis($~y&Y3qTVlt3}g(U*weNcPZ?ZGo>;4o?$t|*;arkf$Dh+;-io`*vAX1 zAiyxWDy8R|rSR1QRFC8ox-Bmlpj~qA*?3{}F?~i&s*E~n1mJUC)im|hTwj_j3$y_@ zPR~eMi=<*h;G*4Kpq$(I3-~tzzNHq5Lz}(KyVbY$Q_1F@Z*_W%W`CpKr;l!DBrRf2 zs~G-A>$%PsXG$aVIa1x{q>1$x542jV?ZWYV4$2t-X3K`Tpz;pS%-M><1AN@5ZAv5b#2^u=w1ws&7`ce}5*wwZnX0Oqx+ zaoS!M2ZYm!YP{ISp}YUkg(*nb)e4d?m+lfur%E0g&{BSFKeFpOU^x_0BABSZ5i8HB zo4A=7$Lrx1H?^QY@CxWoXTr3Zp|$N`%jJJnHz zDcT)zwGr5%<-PC$npKzM#sgX~pHNM*#e%mrNZ!r2t2Lg$<}iWt7%`O=EAos+3rjAa z$`3bTj5abY@5m%z4o=5`38$I-Q}e1OPdQZ(U}BMD2WpR1DyEKmjkfeFHK>0tK%+4$ zQ55`&LR9IYrAyUA=Cnb&lI?d?BU3 zzw%W`3-f8K_EO7jg#q^$pO59X&%FiCVXv!|8}&47W@*M{o!ZxxjNNsfSgV-C2BZWI zzxEtH>`bI!ox`}lSC05Fe78FNh7X|L0{YZN$vaoJVjXF5R2|f%@YbU>M5xF!wHcWB zIJ*DAy!W|pw!lSyhBL=K>%d6>L;oK@)`6PQ{W)i#xSP!4MaHPmzsPBlxzQU9&>P>ize<_qi_IDaWO zro?yuv?LTq9Q3#~i+gF=`e7;Gz0h7qJ>)gLkMbayIFK*K3YAuDBZ4?=tC0^ur8&ln ztIv+IWVWdGKA4ZX`2C{HHFE^EvJ4(M23lf(k_szHqyuXczN<`s;Lq(H9pK#<2IQqn zo|q5kGTPG&#IxG@8AOe9X(9Z#XoM$;lh2!Y$(KK)RX~i_J zV*jKLP?9RX6HZovUx3bU1zn;A2+q;-C@tJr8M*|Zmfbf<=8|KG{quq_ev$9)e3^WX zn5`l__+0aY5O=ih-=RA5`xKbdme`=F-i2!1YIIeN`P4aGuAiP%Z$bLgmM7njVgmPy zZ6MI4`_;3)i4!SAtbGhe;1skfflNi_PzvT`rBozSKh(a- zn9OxMC~x1&avl2TqYT?4J@LzzBvoSuOy)Ph*5A>nGD?j@^H51E$Ezv14AC=&0jjaC z8{5|huHs$EHJKAfDL@i9yBfKazlp58IwsJNPtM zlxrv^JSzxA#_^If5E_#fXQZzlcBvAeZdjZ^C}d>(y$cAVvx<;TK6@`N;B1Ce=0LM# z-<{I;rd;4TKx(^JO$$c2%&8i?{Lx|w`*_GOVC-V7iX{wO3QEm2hm-3c$r?`f~4U1pg6#>;6Xo=4^ch8NPZji?dJMMKl?`WjY zt!QswoIPF#X#gHed@8U?9k@|h%slq?8%J<#jJ0Rnvs>S1aDCX31B_8QaI+4 zR+XRjUobzo_^@Z4f~{?PPhkG3y)D@Np2xU5&v3R((FQ;&Px{ARvr#CMajXshhk0D_ zB#qvAwNnhJsJMq^`z#r_5AqKUP_M`8OR+v9R8#tc6F#ol;aX+LgLi@ZCy*ysf98qR zv&iNfgEvSLnquv&>ceI4N{|wqpayvB(ap^>9~EO!#`mA@>dQ5}pf5mnDJ~wPd7FlB7`Nl!u1{Mm zvuWiZ4}t_8W;Z*yqHI_=*1CVaaw=a`XdGpS>CLs{LI@eZUBE=SkjHg4xI({hP?0 z!Y<9@JsNY2TX?NSSnXsU&V^>TBmPD)dTbIxa7K3KfD-??TOcm=iWj_7xHjg4nYgIbOjGZv28g@hTmcPAp#A}-U>%sd87wF{>bi-E<@ zLh|DKu!x4?tKX7^0fuEe(^>$w_f?X zIuPe|nLf-w&BX{5BM}S0tFlH@W>jC(<}3{tX}|4-pLXZLx2o-l5e6q4Cd$JfAtUQY zBCy{X656MD^Nh&7Lyc*KT+mT@ldPoY8gENFqoIGR&rU}_$(C;a_1q;iU$Wi~o; z=)<>>qXNkturuloAfQABd({^R?RmsxZ4&#mPqPDk^O>#+SXs0AuSU&fnR&$phxFp& ztGD&hE%|FJEqj`diHoY?diDuH%8SB4@K|+W7O<@Gr;-Vyeo#91rVp+CqdSR*qfQ-FPsl)t+3K zso8X|tu{+kieXHfSmFrfG_RI1!Ip($hFx;jk21vEd^~)=NX`H08e+GUjH`#&+9NWN zYK#C%Y{F_QI@b^<$B1agxv!};UYbu3G**N?YP)|;;`rXx&=j=@58P2CRync}!*H~c zh}Z7PZg?B1%DK2RTnGCp9b-gtN;~$EhOxlTmW0*L1o0d=NAH)ZA84~Vq z^CEeG;oWLHZ5_hHd*w&!z_`y`!PsIP@O3l7%lk|X=^u{GfLbo8wgz9jznr@=n_LLB ze0S~>L0$c%MS+_~Du)TX!^2O&E_Sb=bea%W$W$YMto!`ID16a5`N`mYub-9-SV<(x zqsIC|O*kh5EtYdv-KhqM7WhuD2+E59`KLC!xcWGYXx&MPR-BAijgX)1fy5M%2I0G zoPw&`vlH192=rmTW~B_`KhlUSrmIvAbVx7{V?4%)<(QJ$FV+_iB1dRLvf>Yj_m&`8 zwN;`;(k3(N6?76gkH?`0Amfa+9N4`7a{0v$+7K+rtynn6qUpWzj8m z_BZ0plU2@zmg2wFgD_lLjcqEqmxVwTJZMk-+oXsNHE2&}p`dzRHKL`K;V$-M;ll@3 z&X?-t4zE>XFoy>V4_l3RPUz)EdkqD_{ej(wA;xSx-(e$=uUDsx7nb73fyvs z0JB?jz<70jSm*-VZ-dQ6_y$>N(7qF3{I&AxwKN=*zt5jXvr(9P<@d$fyYo{&-ANA$ zVNLiKH!~626?%*Nko)j5%a;TjQ*1(f<{Sc~fe`4wK(A(-3mWAv(D*i>y{0s__Z zFKXV^^f0SZyyied%oY&Hnx*d&IJ_gRywvi z^7*~ZYIE;-YY!tq%TJTe_62!QP-GKB)^KzpI`kp0^LXqp%c3R*%XIFWp=A=#`N;S0 z>2N?(x+4v7atLLwveL?(oKjXTt|roYDn*iQsj9AkdsmmaDxHXeRDWyH#akUDcx0q3 zWhhxRIFfub4bK92Im43Rpc6v6v(=S43U;o@BQbbQX>nYKAP4PXr#N@d`0AKrRXCT= z6e7=N{!WzIFZVniqMvd_HH|yHGZ&-(yRC?omXJGegkbM;fw*BgjtGS(88uPVg+=gZLC0u1tRwpbdv4aw)ntfhl5^O_!8TR3eG zWVR96HIF{{;=x1ZlSHVv20 z@2N%Hu(82Kl3gp~O1ptclXMh*d1|D%%pbwvT%tG?Ohdpqeh1;ahy~%MP}ygi^C6MD zSSRsJ{hQqj+GP%TzNMwmC<;^e;`0&HmrbjME*Q>pJ$p&ReqB|1K))l8R?Akge6)g~ z>jiZFSj+Aa8{&{<3_@GNx-NiXT~{{k5*DiCyp&Kyo|Vez>gnqQBr+p+4wf&D!pWwqV;ps3FLFP1Hg})Qkc6mg7L0O8o-z7+ztvI2!0_1$B-qYvW#BEg2 zTD(M=c0}C7xkyF~TSVVT*zX#!d!p#jf0n3Tu0g(4x`Txy(6u}~YZvYi=VIh3GA+#T zZWs?BEYaxVG!3Ps>e^I0d3vx5qOAtA`h-U{51rmTOcwtqP8Lrq$arS^kR{A3=mj@% z1wba-j;dOM>)>hiwW_Hl#x6BbKM&C89zZi>A$T;*D1HFqc z#q#AS_+8^ze3sV>c+X1n2-BqN9V2djm7`p?kB+7#yo;K%kW-`L||qK{jozKvc$ zqSwq`)XfT&wFOmWW8yH2Tyf`ND-UEDn~@wrCr4ttxiClE(Jf7-aiE~EJ_eeCfJN$9 zV^_q9x)KuWyA}@9U#~eDvP< zi$^+_w;Kfj>Zfb+4orLY3c)nYGBUbPyTwNz%7$hl zuLgW=HZG}Gyj8Zdcp#E{VgY9 z#3b*L&~iBe!$W9BMm6FUp;N-$Yy(0nG&0?2mO_Ic2fC|KAz1bo1Ve1c;((F#-9~(% zOVcgXFlvu1vvz|3B8E+Dm&)=Y?A(~WL>^>u=N>R@5W1H)OGBUZRO%YmFMvxp$ru{g zWgNCis-00BxXt(})NiR^X0{JFiTm;!Dk&;XVqewhOMf?=(0S;4>0?t!KGX*d7!xZZ{3}6Fb5X}`Omg{ z;yq>GWgCUM?N9LQVKd5b>c>ANH_|2My`>=x1O30v*Uf7Q$u)%o42d1{KnuiW+;)-7 z=S2?F5P-w$&rkfUmwW~lDymEYMd-5ckOTNU4Bi8B#vL~f5|G@8hvVEs(Mz4acSHu7ZRTj2;> z7g8*v4;I{if0-5se6}1MO_|K>+pByeI;_(~_vKXwz88zu$uhRYlV0uqvi)DD z%md>_Q;`<;+Dvq{m$^XQPdRea+Y2!GZ0{$cFT~u`u2!QXmM*cymzxk!#2^~9gk1DV zrd10KJNkfRKtwq6`Myf|5Y+nv$)NwgA#aaFr;teWExqnTrRU*6#e#p~^@LBh8NLdY zFSt(X6IQfy4ENb>bz%IMf)n@s$&vpLJR4m|z-_91kAgTiBmNg2Up0^Ye|XMc22P6N zivPCv&?zA66+7`HP&*o^Lf!~2U0LD_hv}>;K9~GSSClhIuaRafUH4|*g-25EX;n@v zFa8O+#?>4TA_H%E*YndRnkw>@>K&<=&F}MOcA^r$mDT{^O}IxW!d4ObAx>CVmV>vB zs%ow2O`_RBZ(xxKFN{@_5nT#&p{(x=sz(G@2} z-@zi{u%LvW?`;I&S|O#3{V?i?Jx!rP4Z}Wxjewt%>E%4E19~S*s?H(O&!%Z1ym=4D zG1r%xTKImmaw0~LzTmKxA2)cw1VnN%m=<<)nm?r)H7UmREe?M^Sbgvo0kza+sYBfP zxSJIq586XQD~e3MZn9iy*Rg=J2aFRs(LAZJ(Chxu7|?!$^mFq7+vcX?hkH20h?+BI zcxaEb%$v*f-t|4!7VKx=pL1#bp!FWB*BB(yzc#+2Aocn9bCHtk* zq%8(&{hz3f$G=4j-PrT7^{!q zPOUpECBE_OTEfrvmb(QV4N>bTcAbuwg*N*aKdqNKWum8jj!=JF#v|)MWvA2EbLkPN zm`Yqjr^Sk?LIm*osbH<~Z9dl5v*td9vmieX#=bG#=V!C!VX{_ohrb3`=L)}kJ$;;E zh`89{kxH&1T)G3CFdUr-JH*^qJDsmD0W>ZI;hVtXKB@I-?n1-&z#t zKmT>MFSuZ;k~I65(1eJ+;Z%>)+@7Oh;W_1Bjs~23`*Oj4w&P+p-OZ}QOi;OW{|SO; zKzDfZ!-0;#D=tiq@3Q@keq0n1Pyh)co#X)~_-;(_L_pxh%%752r>R%dZY2z|&c_nF z!pI9f3@(9ICn#JD)lA6hnMKnVn8dWivszf?YFmbtzvAu<)RiUh^6`_FGz|LI2@wJKpC)hwirn#9t9XuBE+rRCDK7rOj3HDwdkMbQZnk;W zH9E3r@nvT1b(m{2_09;tuIa+vXg(KjGO=VJl<$CPimKDw^ODM|sZ@8{Mpi92Db&bA z*zsCJ%Khm1(#^VH@J26%_=22NV`H?{05!#gUM=1D#qU8@i(D?bJDkv0pK3`d^eXPH z7C$q8tSr@pC=t%v8f6-JGG5bTxkx5%)WV;W0sNQZu~vD&1_rLWY5W$<;dkJImlOy8 zMb6AgFh=_AthrmMDu>`10*mOe(e3JwjOOOu4o6*0Q$6PTzOh*#7Qv^3xHMy5il1Xf zqdY!I{-8_8H4tdg+&Ds?#rIED)BUK?S!nrN6JeT@duQ zBnC3^2oT)k^^1`TA*dm7ZRE)Bzg^asxI|h66#$!ji-u8+^!AMyN2NNWz?_a-`fPr# zlj3zle+mtDhbl|QpG^z)Fw0x$v|HTyb)WG*Swe=%6%p{eN@3PRvd1u!iD)C*ky+u7 zio+S>$vovw!5x-XTuSEGv1)zUMnIsR8A{qaVl7*H!c7U@*1KR2JWSFKtJY z2x&93*|G5??on@QM*~AgW0%zQjVm{KWZ3cn6Kb4&XZP!jCP1Gq5ER?E1IxwTLgqS) zt%wMIY{DNGS5WjD!ITPV`pv+|oobFC^pV)}0$6_# z;J(B9h0=|T9acrD6SPVupnGt6=dP~r3IAAz^nm_*d2&naW-q111I!=S98s(YLaeS@2k-m5A1zN zMqPh|eFD}fMMQ%|s^tHJvMtIA?IYUE^1g{`HHrb)#+RH{r{JCyzF6yABSjFTl5_C; zyhFYCeZrb;cvNY<=>H_yVGK6%XICBdUL8BhOfi(Lx_;nbj1AGmfZ}cfiH0Y6==Q*E?KV>zgj=Tecs&vM>7?hO8gKLzSfJ z4l^?dH%xyv>OM25iAgJ)l1wk;Y zfA3z{5N)L~%^o1ZuEmhAaHPMC;i;mo&vc#V+>Bsn>gC%`L|8b4wv zC~gsf;k0Sul$4TrKRCrmx@5<9LMv!ik|BJhESnrt`RJjLQj6rHuk0gYL??%>)gUPs zBj0QBl#K>yZsBp@UrNnwoHX;RN?F}h7UY$=JL1UYn@=Uw9+qiq#`g=9{n5*DTY&~! z(BL<;Np~!jOT(WNtcX}0n?Ur3eV7Pyb=mx&Rh}_5)U%XB;}+ zrd>o^C8|QagtcJcaDg>J?vDIa>BnyLckrL-vJ_**HyjdpyQl=Dp}!`d$&^g$)XS(# zjEWhG;P>7k|FV!)W5kGc(lRx+Des0&&`Hdb-anj+;WCr$P07~zdWN~^{NL-jPd?d} z6p4b79mY~v@@*juW_dd1kVz0%P-I^>9bRhjNY<~7*K4afuqlwnS13zz+>cu0ecj3< zdt*`u>jFvj{Dc37+1dz}pM`fnhK8B?O$kK5<1ccg5QALfUR?B@{L+$KS*0d=tTf&3 zx?-&vjuhukYAMFxZ{%fI@BG@MG=Dt zhIYN$d|lz2aA%}77(JBweAqN~s=Y)cry1!Y53Yd`Nw%-i?KFz_s6<*@D5l;*6+p2& zfEG+{J<_+9*RSF^oO=*?6lqhEzyEcnc|siDxjTIqQHS3^{ zW9d)f5@`O~qD64nV!O!%cDCB^JSfCs(t}fN^b{y^Ad+Xj0{6b}IjKsCpWK_bc`0lT zZg(Zx4IlTvD{X{j9||)_h+ergNU2dOc=ij_I@1Q(kP<9E5NUC7X4TzHBd{EE^_(q} z3pO=r9#7lM0$s8^0ZeDqGCeIR+xkY%r@2m74Qgt$CTJ&>ho`wVH$k(FvZbyMkUV!2 z#%ndl{t1G{6nRI-XJgJg2GaI%8w~W2gWmC;xqyE&P5;@O;I#y&G9)fBfKxIk3X1 zzOnn5x^l@dRiX{*ds%7!mt|M5>^VBs9_;sZD?=9ibwJVv|5yfTZ)P4JcMX(6>-d?+ zIB$2;T!vAhr-j(QEI?LeXGy;Yne5bp5^x7Vto}MyET?(b{QZv;aw_rg#LX9M-iy_O zp9(?XQ?fr34ji5nnT7QmOrQIW41@X}J(;XxR=a+i@oRTzT{|CyJcUL0&q}7ua3*4jw-3J-a#6qk4oLGkeB34K71+G8c0V>!Z z!{(2SWJ9?NgBQNwL(Ya^K1~aVZ?M$S7L_wBnIN90&i9_Ab-Kjx?>y(X7B6I3S68S1 z!?Rn*q(o98JA9`;-|QGaW{Y!P=N0Jx0IjL+#jxl_#0G?zhsczssN7sUyJi;Tu{_;t z$|ScG8XL01G-X<HKJHka+>jRiGHiNXr9sa64CdSIHIl`B5?bgn2}R zVe#%C!A#F(?lhAqy%^yfOry=De0T(vXE2S=FYVQ2cU2=>IOfVVry9Kd zzcT@I8~a%&hgrta#-XR$2Y*vB9SbC3*ekCSMGEoo4Z8=}CupZR{8x!TtAyv&{)b4i z+Q#&30wt%ON8a>u^v%nSV~CdZ7w`B#p!R%8W@5H)$5FOsd)T_Zm2~bB&>&DA*f5xJ z(=lwDdUw$m=d$|PzR(!Q0-BB|5Y0T9|K+;Cs6n?BiD26pjN5XPkyXW%{x&kVNR2~f@DAPBT`4aZV=S^W-ubrK*WKVN?$@s#IhIy8dKw&V$2;G#Nw-i+)H=3l zakQ>UKteMxtq^B^f~&oM#2sg?Mh5=B(nAVsHL`?2=fA;>C$HvY(-qq7ofS~HPV8aI zvc1i$ms28F$!t8+Z`>53m|B!ejO<7tA}2kRQhbk?)=0o{`=V3JJzmC$x;=~>=%SS$$kge84$El!O;yQttAyvKgf4n%CQ z#XEyqTt;*!nzZ->x0ru=ZuVycI4Od%hmo5F6HT`aL^+}DPuiUt7B(KBk26ZBAC%t% zg6J&~m;IVhGmsO3K3X^(fg{20v1~r!vfSm2-J8cX@@mZ@9J5c=FrVUli0*p*NpUa4 zV%OLOPi|L;ty%=w`Bp?h6IHH7?jNRb59R;icc5(rU1~?^sD@8gIl*LjfVnCUZq2q? z3YAd*Du6e(duI5XwS#QobX0`YsG3mTtMzvxc z)sI8_X8kp1x~QrluWfEJj|~z(?p$z7@WzPXfoyLej&)4rYIj9Eiy%vZjMUuvmblGJ zvqlQA1T-6Bf)$xXQSV+g1v_`EoY}wIL6_@Z39hoi0Hq4wg?D>fOzyU;$S1D9u} z^`&|o%QVJ`s!sEB+zLJ+qdMG(sxe{8)uUan>^eY+j!jPJ6%+*S3;8`1K8^-j0+lzN|*Nq+ob1*GAp?E^Z$WyK|z zjbnXw`T9R$b-AIzu4mlA z%v1cmwBi1hoIPa+i~Ju`&Hn(sX7rFko@?f6>%n5d9q5X(SW$tt9;128F<<`G+3kUc zOdKWd7n^abuz;|XKecyrsFUR4jE;a-XytA+C(%43gan5D;xv?fd_c-p?KfX&A@_FD zZ(qV>`j6V+Y^*U(au%i#`7{AC(Op-cRN$scNtB?+`%XXgHyJO&!b$W1E z`aEZ(;d+(-gYMrHC;lHc^aJ^jFVt6ll!)P#y?~&eVV1^8N9Gr_ z04*6FQs1hBr$uzNA%%JGDaLN;EYCTn8wH1%h&EBinC^Tte2(sT$xdBRSRzd~7E4%T z;`xF9y0_0MfYLKHWglOPh>e-lZ_QQB+scH`1qBT`h8C=*akkIb82L6S+4>WWK7Frz zUWZcUgYn!wf@JQ=7jzTTM10LF@Nx3&$0=2i zOuyijDHdrUmN;<=dE*uvbpP-A5RsfR~|04*~Bsp=j7H4Kqxn+C*=o|t}f&wBG3Ne8tQ!b7$d|7CB;l2Z?d z*TD?Wf~)Y%eQn1?aQ%4fLXGmisW|uY_Q3Y;O#!ELsOLLGdWFA@8u9+irsfnK$6|vB zhE!6Qr3kkG`JhZ1FC<gmb3JbK)V+0dIdu`W&TFDB|6? zON9-cHQW;^;;&_%f#YNE#gwnHRiB_-3|z7;Fr6QWp)wuqP-=rNZMhwOw2V zI73A$IVn8k5Q#ps#-u%xUdp5pObO~JaAle3*;Sg*+^}|Dyz=NY&2(2eSit~Y?;qhc z{!9?xFB{6YvEV^T`^$S8}vb!>-YW&zf3njw`QiN0TDWS3~S`{^gJLDoBhZk`% zoiB7zVFlvStkge+vJe;G^|23Lg`859f248K3|i*T=M~NdjKt8&+YWHKg|m9a`TgeC zCV!(t=ySxaM8-$s6M_P-4~mA)R;V$IrqUWg*T4r~9wA+87b&|_q@r_%C|Zr0$SG9H zyW}8D11|uo=&g9?i6f5K4g;WZvMAfvF&9K#!zFd462Kmi_s}@+yk6+fzT@SP0N8Pf zIAb!#r7^e%eG{BG5^`BHvSI@}KX^J0%hM=oz=u`N(QqiwzpnlX;u94_p=TU_^dAwI zR1Fobc}L_tLJdjtpX`2^I<_FJc$dKXi7TGR{VL~$yvS@|NgmII{u<#_v>H=_t^@`y z7v5q9xm+Ua78@TS#l8n)E6iYqna$Kzs@ZR~~!F99?G{m2oHi!_>5&yf!VNvv`|0b1Q*pS5HD$%_)iCkxfAIQ2z$FvyP(79)E@L+) zK*DMockC@d7{o~M&!$e8WJmYdiO~w|PfhI~kgt9%VatZcp~DbIH~r+~pbjmw)d(6i z0KEM}bxMvvS<8ZeZ9(yl8vHr0Z`|`$mHKgn0jKc(O2l0iqP0?1T&evA`+|p4;J!@^qxTosDY25$wZsB&KSX-=#Af) zxo}liuPpk}QUM0W>^A+ozv}hCe)C~lX9;aR<`Jt@R>tLRBjKEMh|e7|$*%&aKbJBN zew%2jC>=Uv9*dhZ6BxXl(`&MfK9m<2lHl>-A1dRbP!ofNT!Q>B(Wi9z=}B#_vofLk z+wEJn*g?%ScO~pZ^n(6E@y z+toVGzvl+o1*lxLouT}urq1<-7cU}x?@Rw@THp@>;?n99g?mtpOX2~107R;e>y$rR zZ2TV_Sx5c