From fded2da9782ace344f764db6ac4d4e53f16c1bde Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Fri, 20 Nov 2020 18:55:48 +0000 Subject: [PATCH] Documentation revision in response to #1394 --- README-CONAN.md | 30 +++++++++++--------- README.md | 12 ++++---- cmake/msvc_conan_profiles/msvc2019Debug32 | 12 ++++++++ cmake/msvc_conan_profiles/msvc2019Release32 | 12 ++++++++ matrix-standard-vector-logo-xs.png | Bin 0 -> 7397 bytes 5 files changed, 48 insertions(+), 18 deletions(-) create mode 100755 cmake/msvc_conan_profiles/msvc2019Debug32 create mode 100755 cmake/msvc_conan_profiles/msvc2019Release32 create mode 100644 matrix-standard-vector-logo-xs.png diff --git a/README-CONAN.md b/README-CONAN.md index 7ba3cf3b..1afec592 100644 --- a/README-CONAN.md +++ b/README-CONAN.md @@ -1,3 +1,7 @@ +| Travis | AppVeyor | GitLab| Codecov| Repology| Chat | +|:-------------:|:-------------:|:-----:|:------:|:-------:|:----:| +| [![Build Status](https://travis-ci.org/Exiv2/exiv2.svg?branch=0.27-maintenance)](https://travis-ci.org/Exiv2/exiv2) | [![Build status](https://ci.appveyor.com/api/projects/status/d6vxf2n0cp3v88al/branch/0.27-maintenance?svg=true)](https://ci.appveyor.com/project/piponazo/exiv2-wutfp/branch/0.27-maintenance) | [![pipeline status](https://gitlab.com/D4N/exiv2/badges/0.27-maintenance/pipeline.svg)](https://gitlab.com/D4N/exiv2/commits/0.27-maintenance) | [![codecov](https://codecov.io/gh/Exiv2/exiv2/branch/0.27-maintenance/graph/badge.svg)](https://codecov.io/gh/Exiv2/exiv2) | [![Packaging status](https://repology.org/badge/tiny-repos/exiv2.svg)](https://repology.org/metapackage/exiv2/versions) | [![#exiv2-chat on matrix.org](matrix-standard-vector-logo-xs.png)](https://matrix.to/#/#exiv2-chat:matrix.org) | + ![Exiv2](exiv2.png) # Building Exiv2 and dependencies with conan @@ -78,7 +82,7 @@ $ conan profile list ``` _**Visual Studio Users**_ -_The profile msvc2019Release `%USERPROFILE%\.conan\profiles\msvc2019Release` is:_ +_The profile msvc2019Release96 in `%USERPROFILE%\.conan\profiles\msvc2019Release64` is:_ ```ini [build_requires] @@ -103,7 +107,7 @@ _Profiles for Visual Studio are discussed in detail here: [Visual Studio Notes]( | | Build Steps | Linux and macOS | Visual Studio | |:--|:--------------|--------------------------------|------------------------------| -| _**1**_ | Get conan to fetch dependencies

The output can be quite
long as conan downloads and/or builds
zlib, expat, curl and other dependencies.| $ conan install ..
     --build missing | c:\\..\\build> conan install .. --build missing
    --profile msvc2019Release | +| _**1**_ | Get conan to fetch dependencies

The output can be quite
long as conan downloads and/or builds
zlib, expat, curl and other dependencies.| $ conan install ..
     --build missing | c:\\..\\build> conan install .. --build missing
    --profile msvc2019Release64 | | _**2**_ | Get cmake to generate
makefiles or sln/vcxproj | $ cmake .. | c:\\..\\build> cmake .. -G "Visual Studio 16 2019" | _**3**_ | Build | $ cmake --build . | c:\\..\\build> cmake --build . --config Release
You may prefer to open exiv2.sln and build using the IDE. | | _**4**_ | Optionally Run Test Suite | $ make tests | You must install MinGW
bash and python to run tests
See [README.md](README.md) | @@ -195,17 +199,17 @@ Exiv2 v0.27 can be built with VS 2008, 2010, 2012, 2013, 2015 , 2017 and 2019. Exiv2 v0.28 is being "modernised" to C++11 and will not support C++98. We don't expect Exiv2 v0.28 to build with VS versions earlier than VS 2015. -You create profiles in %HOMEPATH%\.conan\profiles with a text editor. For your convenience, you'll find profiles in `\cmake\msvc_conan_profiles`. There are 26 in total: +You create profiles in %HOMEPATH%\.conan\profiles with a text editor. For your convenience, you'll find profiles in `\cmake\msvc_conan_profiles`. ``` Profile := msvc{Edition}{Type}{Bits} Edition := { 2019 | 2017 | 2015 } Type := { Release | Debug } -Bits := { 64 | 32 } # 32 bit build is not provided for 2019 -Examples: msvc2019Release msvc2017Release64 msvc2015Debug32 +Bits := { 64 | 32 } +Examples: msvc2019Release64 msvc2017Release64 msvc2015Debug32 ``` -The profile msvc2019Release is as follows: +The profile msvc2019Release64 is as follows: ```ini [build_requires] @@ -247,8 +251,8 @@ CMake provides Generators for different editions of Visual Studio. The 64 and 3 | Architecture | Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 | |:--------- |--------------------|--------------------|--------------------|--------------------| -| 64 bit | "Visual Studio 16 2019" | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" | -| 32 bit | Not provided | "Visual Studio 15 2017" | "Visual Studio 14 2015" | +| 64 bit | "Visual Studio 16 2019" | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" | +| 32 bit | "Visual Studio 16 2019" -A Win32 | "Visual Studio 15 2017" | "Visual Studio 14 2015" | ### Recommended settings for Visual Studio @@ -264,16 +268,16 @@ CMake provides Generators for different editions of Visual Studio. The 64 and 3 || Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 | |:-------|-------|------|--------------| -| _**conan install .. --profile**_ | msvc2019Debug | msvc2017Debug64 | msvc2015Debug64 | +| _**conan install .. --profile**_ | msvc2019Debug64 | msvc2017Debug64 | msvc2015Debug64 | | _**profile**_
_ | build\_type=Debug
compiler.runtime=MDd | build\_type=Debug
compiler.runtime=MDd | build_type=Debug
compiler.runtime=MDd | ##### 32bit Builds || Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 | |:-----------|--------------------|--------------------|--------------------| -| _**conan install .. --profile**_ | Not provided | msvc2017Release32 | msvc2015Release32 | -| _**cmake -G**_ | Not provided | "Visual Studio 15 2017" | "Visual Studio 14 2015" | -| _**profile**_
_ | Not provided | arch=x86
arch\_build=x86 | arch=x86
arch\_build=x86 | +| _**conan install .. --profile**_ | msvc2019Release32 | msvc2017Release32 | msvc2015Release32 | +| _**cmake -G**_ | "Visual Studio 15 2019" -A Win32 | "Visual Studio 15 2017" | "Visual Studio 14 2015" | +| _**profile**_
_ | arch=x86
arch\_build=x86 | arch=x86
arch\_build=x86 | arch=x86
arch\_build=x86 | ##### Static Builds @@ -589,4 +593,4 @@ $ cmake -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_ENABLE_SSH=ON [TOC](#TOC) -Written by Robin Mills
robin@clanmills.com
Updated: 2020-05-21 +Written by Robin Mills
robin@clanmills.com
Updated: 2020-11-08 diff --git a/README.md b/README.md index a79ebc48..ddc65bf8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -| Travis | AppVeyor | GitLab| Codecov| Repology| -|:-------------:|:-------------:|:-----:|:------:|:-------:| -| [![Build Status](https://travis-ci.org/Exiv2/exiv2.svg?branch=0.27-maintenance)](https://travis-ci.org/Exiv2/exiv2) | [![Build status](https://ci.appveyor.com/api/projects/status/d6vxf2n0cp3v88al/branch/0.27-maintenance?svg=true)](https://ci.appveyor.com/project/piponazo/exiv2-wutfp/branch/0.27-maintenance) | [![pipeline status](https://gitlab.com/D4N/exiv2/badges/0.27-maintenance/pipeline.svg)](https://gitlab.com/D4N/exiv2/commits/0.27-maintenance) | [![codecov](https://codecov.io/gh/Exiv2/exiv2/branch/0.27-maintenance/graph/badge.svg)](https://codecov.io/gh/Exiv2/exiv2) | [![Packaging status](https://repology.org/badge/tiny-repos/exiv2.svg)](https://repology.org/metapackage/exiv2/versions) | +| Travis | AppVeyor | GitLab| Codecov| Repology| Chat | +|:-------------:|:-------------:|:-----:|:------:|:-------:|:----:| +| [![Build Status](https://travis-ci.org/Exiv2/exiv2.svg?branch=0.27-maintenance)](https://travis-ci.org/Exiv2/exiv2) | [![Build status](https://ci.appveyor.com/api/projects/status/d6vxf2n0cp3v88al/branch/0.27-maintenance?svg=true)](https://ci.appveyor.com/project/piponazo/exiv2-wutfp/branch/0.27-maintenance) | [![pipeline status](https://gitlab.com/D4N/exiv2/badges/0.27-maintenance/pipeline.svg)](https://gitlab.com/D4N/exiv2/commits/0.27-maintenance) | [![codecov](https://codecov.io/gh/Exiv2/exiv2/branch/0.27-maintenance/graph/badge.svg)](https://codecov.io/gh/Exiv2/exiv2) | [![Packaging status](https://repology.org/badge/tiny-repos/exiv2.svg)](https://repology.org/metapackage/exiv2/versions) | [![#exiv2-chat on matrix.org](matrix-standard-vector-logo-xs.png)](https://matrix.to/#/#exiv2-chat:matrix.org) |
@@ -80,6 +80,8 @@ $ sudo make install This will install the library into the "standard locations". The library will be installed in `/usr/local/lib`, executables (including the exiv2 command-line program) in `/usr/local/bin/` and header files in `/usr/local/include/exiv2` +When you run cmake, it will generate the file exv_conf.h in the build directory. This file contains setting information about both the options you have chosen and the availability of libraries on your machine. + #### Using the exiv2 command-line program To execute the exiv2 command line program, you should update your path to search /usr/local/bin/ @@ -804,7 +806,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
### 3.2 Support -For new bug reports and feature requests, please open an issue in Github. +For new bug reports, feature requests and support: Please open an issue in Github. [https://github.com/exiv2/exiv2](https://github.com/exiv2/exiv2) [TOC](#TOC)
@@ -1298,5 +1300,5 @@ $ sudo pkg install developer/gcc-7 [TOC](#TOC) -Written by Robin Mills
robin@clanmills.com
Updated: 2020-05-25 +Written by Robin Mills
robin@clanmills.com
Updated: 2020-11-20 diff --git a/cmake/msvc_conan_profiles/msvc2019Debug32 b/cmake/msvc_conan_profiles/msvc2019Debug32 new file mode 100755 index 00000000..4825d2a4 --- /dev/null +++ b/cmake/msvc_conan_profiles/msvc2019Debug32 @@ -0,0 +1,12 @@ +[build_requires] +[settings] +arch=x86 +build_type=Debug +compiler=Visual Studio +compiler.runtime=MDd +compiler.version=16 +os=Windows +arch_build=x86 +os_build=Windows +[options] +[env] diff --git a/cmake/msvc_conan_profiles/msvc2019Release32 b/cmake/msvc_conan_profiles/msvc2019Release32 new file mode 100755 index 00000000..980594fb --- /dev/null +++ b/cmake/msvc_conan_profiles/msvc2019Release32 @@ -0,0 +1,12 @@ +[build_requires] +[settings] +arch=x86 +build_type=Release +compiler=Visual Studio +compiler.runtime=MD +compiler.version=16 +os=Windows +arch_build=x86 +os_build=Windows +[options] +[env] diff --git a/matrix-standard-vector-logo-xs.png b/matrix-standard-vector-logo-xs.png new file mode 100644 index 0000000000000000000000000000000000000000..509ffd014eabe6130821fa9f424b43eb8137e9fb GIT binary patch literal 7397 zcmY*-Wmp_rvo(VS4Fnln!UPF2xNC47EVw&^!{8buxVyVML4$j6f(C~`aQ9&0lJlPX z-tXJ}?5@?-t5)sWKlamIVM-7wOf+INI5;>=8EJ8q7c2L7q9DKAc_5w#aBzr3P%$wj zYcVM?dmDQvRR<#zGbuAWGbgBtij?RJDJn`$&yrLPPpA!M0eUx~YQyo_xl|aF8Z$wi zBd?*=Z*`T+E?I_aiE7XE=42vuc!Gz$?I}-DLdl!;AOo+ztN9Zp-8I&-Py=%k8uijF zC7n>i??9!!h~mREe)cqIYu%dJiT7pJX|~tNSBq1my|3k($#Hl9V0twZ0ox`lBqmgl zAvP!^mjF3WLz#?0uS_1EOA+0zQDW zt!;gpNH>;~GveL|Bgd|+rPma{IThEfTz*yFnNwKR82;9GH;C(!ag!-@l6!YVwP&HC zJYgWS$F;wiQ~TnAAF(^ERVV%Yo701>YWBtM_5o-5sF#QM<9)k_^o@^G4)5{4_uget zGSjQaqLjoy{QkgDzdXqgH@lmE>Q-d25s0jaw`Kgm@ddASn78z7i}xnwFbKG3Ddd2M z_x>um&*JqFPM>PDkSmlUqZF5zz8)OjDGy8#c;|S3=Bn`b>%^=_MWRb(3F$yn&_sA+ zN+*K64qUJ-3w({thF6706mF1bPC&BTEpWltkT%}a*_-%hXviS&u4STu-ZVrg0QiOY zF}e~sV|HHgS=R(t*q4zTUYLf65@#`RQlCxcCeD!!K;;oGpm38w`UThY^nO9sMnYeJ zd;Y0Cl3k@ZLt>S;p)J?&nVnuI z({^jF^aQl*!LKDNQ;_bh?$n7OQR0>rV?R77p2Vt|tezJ9?>|2lxJ~_~-m+Pmp5!(eV28xNO@`8VI)!_p$ zhdEo2?6nESPRWCACs-X2_D~0ZrSL~h?c=^f;(Ic6dj+1(54e%<#7rX-xjx>uXk6w| zB`I#JK(ST%RdLJeWHd*t5*P7w8JH#Bvcaxh=Fea|y zqEAjg*b6Ns3?7n?wp0ySvehO*I$gVpxyoQ`!@|`8OJzP_bax7$A3cCKqZ{CoNk932 z1KANyj=Wk!;<*f3`m)?Z7ANhEzA<}ybklXu=I;A6yT8&8tK4P!)X2@B)wO==JTD~j zTmfehk@m537ML&HxE8NXAWy}>6;OJj43LFvu2M*x{0bVXR05KfWKNt>97C`b} ztOB6>mje$67XpPt{FkHsV*d{5m-!O?uZ7Qr|1U!>7vcZ#Un1)NOH`BcOu{|$e65~Q+p zc6Q)nW_ELP1G}+{4H)NFo|ZqTi)AiFF;aR;0S8_D3L{!R3 z8AkmQuG+|>efY|%0wZ?{RgblC7iDD$h7zB@d6dp^Y;10WlyUYw-%y63w-ld({DJg` zttZh_0j{!$Qtw^@Vm#aoZR9rxee_+eu6nBqfFCci%Chgw?W^CzY9M(EJs-wts!f|* z3H=>?9Evx6H6_?RV5v9lDE@sh#Gvn1?v*sP+q1O^R~CX|pjco+B*GuGl_uM_#oinw zQX^;>?$A_rLk&Mzmd?le%$whfJu-*-{W&qG;@kmBV(fU9akIrNqUxh3qj-8AS=V8k z9WCEkyp{C=-rYAQ1wI2n{I`MB5Su|8aB91!4jyC2^j+0sdBX3fo9*8@0Y0Vg+<6;? z?&;D=KEQL9G4x2Ipi1HUJ)k6wDXYlME@9W^^9e(KkDx4=u1v#N4sCrY<~I$?`d+j6 z2fEE)j)g%gg@ybe4e3cnMqco(7&KuI#{#uqW1LY`nLns)j0sCIg2&iVZ)fZ~4!e zxNPrjjRw)&VdtW>3yZD!uE@##1+NgPta%pRCs(7N3up;rB69X{vNIYmSn%daMTR+f5WrAkqDVGM1r;(`1dMMsDdHC!pzMl$phI z%cfA0IzMt&G??MZTCTjVjh@1fj3bQEPcy+fWfxo58vOI<)BTrxl=}I}ZwuqFx~BZt z$Tq?1@H20@_xv9v67US-PgTBM8Skf{L-#7NUHC>fH0KsEag?SvtZRM)vyV8Dy-MRy z5tkT~Br1sXs2GEZJL1?&xET)g6sS`$l8N8?QPFnZ{np2L-q31KZ9{l6LB(N5r2ZuV zFFn&PzFnZj6<4qxoI~i!7H+t&Z9d?*lCXkR7N()Oc#oz3S@l6LCR^E7S=#A8>^Ka z(&0S#zzZ^;|7fh8(&O%QMmArfU4T@GO^V_ZP!xSzDETLy*g0ILA0$}A1!V44Q#oyT zJtb8=Iocql#~*O`b@ntRanfnR+w2DTcs7I7LQgNF9%RhL#`v9&Q=bz03(HaaRmlUY zt(PGOwD;5Nj_g36WD)q{Wkc0WvjP4k5yTL$s_bsdTrK0llx zHAuM(aa*z71u1ts`=;!So@G$YELo0UNDAQ{!q`z~84&5GE|ii;T>#W;1&pEs{v-K{ zVbrhgP1bedJdVZOO~w#Xrw%>wD(~Q}2`WWYSjVm)bMt9374`#_a;+R)W~H_ zq@S0x`5d!vj}`+z zMLvxSe{@aLs_Tc%<4|{4_}Q0S*v?o_BoTXT94m_3x(~OvkZ>_1E1V8h?#Q3HkD`c`kOOClFj{<$S z(agRRDzfUng%z8U5;7gHA|CAJag(C&iOOy<(SP={Pg(DH%LB3a%>v&=#r{kQiJ=*y zSNA8t-clpOpT{NRmGi9}Dj#Rz4Rq!bYLqLc0BuaRr-V5(&yFzkwWmsZ3tz60Jz=lr z;{dz!;p!oYNlfI?j62cV&2HrO_-5So%}NbI#Ka4EFX-#_=*VvwAPdSQ%s3iZU0wG~ zIGJd2!2pMV2DejvMy)T1NJyVsPCE^Z7HW-3OG`Pvfn$STlLf#0;C*YLfBP2D#?JnR zge1b`TW5o(Q|H(Rt1G3Y@)U#w#VL}kHM+w1(&L{Ep|}{$C+qFla%jIEwZa!8i`L0w za&E|>r_OoFg3j4uf!*=tBg*upPh_YTIGp8)S;_^b*Ro6aGjVQIiuVlu2V%LTTl4&6 zmRo~SeK*I;``x2)Uo*&JB6{@PR*R?z1>8dc)aX+s(dF7|YS14RPY2M9Z0c%EYc8c_cvI63B(<{6J_$E+xt#g zTevh5Q6tcRq8GPMBvs3euQ^2 z#UMK{tt%BOGB=%QY+^jN{@a@r-YQ&U;t*oEp_O&3L$jahOV{W|5B+@7K--fA8y9pB zqR~iZfRjBh2F;mDq55mn+w?D#oJ1L+sdRn(2pOCH&lM}-c zu{0ajK*h!ek4p;)3jOliz`>?WW}p-Tcm7nA8AkNo`Z_dmw)-NOvcCyK69jfD{eht; z`&-ikpw3==C=*iZAZjR~k_99Bu^N{dUhQ~%#0l}5Rpy)*0@%J`i4nS2B;;Y~BlP(2 z0WdxDDmD?^Uq2}%w;{_jqef^rU3+%sFcUeR!EH2C9L3}Gt5gp+6<+>Y;AUY9NQ_E% z3xPIo1z9DIX4>-A#RyX|9_AgU*V3EjzpE$v+MNGZMOf3H_+kWYABlmnFcvj^aG#vh z8s!$Wpi#1fD4PrYc-$9_($L>8{`eD1(db+BajYcWjn__^#n3G6=Fbp{!7pZV;}}Si zrly7dN?KZBi}e;J*9UVg$4!ny!^3r6tu>z6o(D1&QX*g7!Z&#^39`PsF!?glF9h0+ zNm~l41Xe9xT4u#~(eo|P;9d6!mYnV;c#bP2$wsRKJq+AuIsMJ($AXJuRb`HdNoeb< z3Kvg`o|SydnV&*LW}e=w7N_#QFC-FhuVr-(b?P!`2I|2bdKia1lke@GD<1pff&2(8o;}~c2;{TCNosRE@A%1}6s%W6 zz<9e6M$b&?(sj+oE5o|c6t^ac=|$9NDfQ=rz}e!V=IA!V>x%8NMBg}E^_hVo2?}v} zlf4z{@TYfBDAe_j&GP#B=Fu}-E@I(`9Ilwmk!dnIkg>Z^CZY1^GvB@hDS4dlpN((Q z8}|i3n>klya;_++@HXdr9l>b1r5JQlV#MV2)U(A5?sDFXti3*C_z$%$bEws9>kUw_ z(^t*(UP>JC81Mv zT}X%JEs?r%3S7S3HlMhh!}qSze|3tczbsL%9l>^yFFrwcoW{)eF)fCIwj>ucE(a$q zOL$R>UW$SJVSD+>*sR^)$1~X=L=)N0Z>=RN3v`6sF(ZC3I5amOkP->%OP;W`PauQIZn>ToyQ`h)2`<=XmSn9u$hdW;0YrIHD(Y-7b>Nzr$@kNFpHsAk~qlIt7$Dvg7XcIGqB94 z>KW-F3Np(^ORfaiSXjs$F~)G>_E7IQS$z3^i1V65ywC#KxF)Kuw>TpFxhg?wdAeCX z9)|f(+m!HKft8Uvj>W(UQR_G9pSgU7=0|y@``0sD)vMiDZQ09aL>^0ju+&VTr+!%# z*mY2@)%A$V#4+m`X49)z{;4%BsYA$%*=8Hly0dB|n@YJpwhlRTR{S(vi5Nf^D300< zK$t$?FVSJOUlTB=p;>fczs?Q0R!cucW{+ue+_C5k`G)2D36go&V0`>Zg`|O&Dkr^I zz8^P`X5rV2l7SiKMqZC0DxUvVRKX9WlFn#qx6R_nk2|g5i*&5sNsUZUj>&O}MM-XX z5|7n4B7kiU`A^V!ugx$&GkS|R9G8U zhd~Eh=-z@4?^pL$@Zcc0E7RYPjmdI*8~Mq}yhO{MfY+e8l*`?Mkh|4Iwhn-aI!ki3 zgzWcJ4zfHeupn?IQ;<9HN0sSt{6vI$hZaWKDXAr7MxIqmyE{|U&2*if!#J1%yL1CZ ziQp&repD(b6uci=Nvy*+tjr$hsDc|wG*8&He3)Y9voO3&l~P17!xi1YPjRy1t6k8% z3qXOtswdZVe5*2G!VYnzy zh9eLiUP}H$hAEVuXR^!~5;ax4i*(Hyz(EZVBW$u%AsQZt_dRa)La%JEaxE2l;!NV; z)r7Rob{jZ#&7-dbCjwWKR}RNU8WAc%{Oy?}&ow)Peqo^{-Z^9HST&z(+;!za_HB!{}#Pb^0mr!*x20;?#2d%3CX=toGgZ!q<( zfQ;$=I9f8_Ch4_KNYm!LqQQq()y41FDa;}3-U$}T(=6264eiBhAf{ju8NT~cuCY97 znDOtoA0AU8&v!~P%bs)K<;+3TrD-yd`(h?^hj_y)+In?$5e!{ld2O0E9ZJ~Xs2NVA z(R}hHyR`A3f(uJ@$#HSS9`tPaD;t>HnfNs0>2xJcZlMu~r^9c;k0@RgJ)W?6 zsG>c#d#clwNrOmr*C%*l9?aBheLHGgTzcI#hm&R^CtDx5%?BC;zpA<#dQ`qO9&n@0 zqh-fkYW9uoSMmDU7@;MvOGTP_3Piu$6p4vRy0a`!`H;S9k+n>_+vnV|pyB^4)IwB4 zz81<^B-N3>LY13je=Ook^`uOw){oJfGTRFJ@yyCSNj0wuUK=2+Q|Q>(1kA;AlS3$K(goI%qFnIaCxr1S3zTl(Y(0|x^s}PN*{(TH zNDYR?SUn@#^1)my_J3^|R5bb9``!&_nA7%+!|NUVJ22Z+U*3whc? RjsM%