From 501a3f9dbf63968a6a443b7a9e8655ac4ff3d828 Mon Sep 17 00:00:00 2001 From: Dean Rasheed <dar17@cam.ac.uk> Date: Tue, 27 Nov 2012 10:27:51 +0000 Subject: [PATCH] Release 1.1.1 of the web service API client code - adds support for Python 3. -- Imported using git-svn from https://dev.csi.cam.ac.uk/svn/lookup/trunk@48 --- build.xml | 38 +- .../java/ibis-client-api-1.1.0-src.tar.bz2 | Bin 38552 -> 0 bytes ...bz2 => ibis-client-api-1.1.1-docs.tar.bz2} | Bin .../java/ibis-client-api-1.1.1-src.tar.bz2 | Bin 0 -> 38578 bytes ...pi-1.1.0.jar => ibis-client-api-1.1.1.jar} | Bin .../php/ibis-php-client-api-1.1.0-src.tar.bz2 | Bin 39923 -> 0 bytes .../php/ibis-php-client-api-1.1.1-src.tar.bz2 | Bin 0 -> 39984 bytes .../ibis-python-client-api-1.1.0-src.tar.bz2 | Bin 50642 -> 0 bytes .../ibis-python-client-api-1.1.1-src.tar.bz2 | Bin 0 -> 50721 bytes .../ibis-python3-client-api-1.1.1-src.tar.bz2 | Bin 0 -> 50458 bytes src/generate-client-methods.py | 41 +- src/python/README | 3 + src/python3/README | 13 + src/python3/example.py | 33 + src/python3/ibisclient/Comodo.crt | 25 + src/python3/ibisclient/JANET.ca-bundle | 52 + src/python3/ibisclient/__init__.py | 24 + src/python3/ibisclient/cacerts.txt | 77 + src/python3/ibisclient/connection.py | 318 ++++ src/python3/ibisclient/dto.py | 685 +++++++ src/python3/ibisclient/methods.py | 1665 +++++++++++++++++ src/python3/test/unittests.py | 856 +++++++++ 22 files changed, 3827 insertions(+), 3 deletions(-) delete mode 100644 downloads/java/ibis-client-api-1.1.0-src.tar.bz2 rename downloads/java/{ibis-client-api-1.1.0-docs.tar.bz2 => ibis-client-api-1.1.1-docs.tar.bz2} (100%) create mode 100644 downloads/java/ibis-client-api-1.1.1-src.tar.bz2 rename downloads/java/{ibis-client-api-1.1.0.jar => ibis-client-api-1.1.1.jar} (100%) delete mode 100644 downloads/php/ibis-php-client-api-1.1.0-src.tar.bz2 create mode 100644 downloads/php/ibis-php-client-api-1.1.1-src.tar.bz2 delete mode 100644 downloads/python/ibis-python-client-api-1.1.0-src.tar.bz2 create mode 100644 downloads/python/ibis-python-client-api-1.1.1-src.tar.bz2 create mode 100644 downloads/python3/ibis-python3-client-api-1.1.1-src.tar.bz2 create mode 100644 src/python3/README create mode 100644 src/python3/example.py create mode 100644 src/python3/ibisclient/Comodo.crt create mode 100644 src/python3/ibisclient/JANET.ca-bundle create mode 100644 src/python3/ibisclient/__init__.py create mode 100644 src/python3/ibisclient/cacerts.txt create mode 100644 src/python3/ibisclient/connection.py create mode 100644 src/python3/ibisclient/dto.py create mode 100644 src/python3/ibisclient/methods.py create mode 100644 src/python3/test/unittests.py diff --git a/build.xml b/build.xml index 4ffc765..1782f44 100644 --- a/build.xml +++ b/build.xml @@ -1,5 +1,5 @@ <project name="ibis-client" default="all"> - <property name="api.version" value="1.1.0"/> + <property name="api.version" value="1.1.1"/> <!-- ================================= target: Java autogen @@ -130,6 +130,40 @@ <target name="python-all" depends="python-src-tarball" description="--> Build everything for the Python client API"/> + <!-- ================================= + target: Python 3 autogen + ================================= --> + <target name="python3-autogen" description="--> Update the auto-generated Python 3 sources"> + <exec dir="src" executable="python" failonerror="true"> + <arg value="generate-client-methods.py"/> + <arg value="-lang"/> + <arg value="python3"/> + <arg value="-d"/> + <arg value="python3/ibisclient"/> + <arg value="application.wadl"/> + </exec> + </target> + + <!-- ================================= + target: Pyhton 3 src-tarball + ================================= --> + <target name="python3-src-tarball" depends="python3-autogen" + description="--> Build a tar.bz2 of the Python 3 sources"> + <tar destfile="downloads/python3/ibis-python3-client-api-${api.version}-src.tar.bz2" + compression="bzip2"> + <tarfileset prefix="ibis-python3-client-api-${api.version}" dir="src/python3"/> + <tarfileset prefix="ibis-python3-client-api-${api.version}" file="src/application.wadl"/> + <tarfileset prefix="ibis-python3-client-api-${api.version}" file="src/generate-client-methods.py"/> + <tarfileset prefix="ibis-python3-client-api-${api.version}" file="lgpl.txt"/> + </tar> + </target> + + <!-- ================================= + target: Python 3 all + ================================= --> + <target name="python3-all" depends="python3-src-tarball" + description="--> Build everything for the Python 3 client API"/> + <!-- ================================= target: PHP autogen ================================= --> @@ -167,6 +201,6 @@ <!-- ================================= target: All ================================= --> - <target name="all" depends="java-all,python-all,php-all" + <target name="all" depends="java-all,python-all,python3-all,php-all" description="--> Build everything for the client API"/> </project> diff --git a/downloads/java/ibis-client-api-1.1.0-src.tar.bz2 b/downloads/java/ibis-client-api-1.1.0-src.tar.bz2 deleted file mode 100644 index 3da3d7906a1d976bba835e9e611bd0874d3d4694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38552 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 diff --git a/downloads/java/ibis-client-api-1.1.0-docs.tar.bz2 b/downloads/java/ibis-client-api-1.1.1-docs.tar.bz2 similarity index 100% rename from downloads/java/ibis-client-api-1.1.0-docs.tar.bz2 rename to downloads/java/ibis-client-api-1.1.1-docs.tar.bz2 diff --git a/downloads/java/ibis-client-api-1.1.1-src.tar.bz2 b/downloads/java/ibis-client-api-1.1.1-src.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..967531bf01da27543a3ee98e7c1c95615f0742d0 GIT binary patch literal 38578 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 O;_gVN3KAa-Um>6sqBUgz literal 0 HcmV?d00001 diff --git a/downloads/java/ibis-client-api-1.1.0.jar b/downloads/java/ibis-client-api-1.1.1.jar similarity index 100% rename from downloads/java/ibis-client-api-1.1.0.jar rename to downloads/java/ibis-client-api-1.1.1.jar diff --git a/downloads/php/ibis-php-client-api-1.1.0-src.tar.bz2 b/downloads/php/ibis-php-client-api-1.1.0-src.tar.bz2 deleted file mode 100644 index 902a6e26e640fdd04818c9670f2421a075205c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39923 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 HKy+rn8OJlu diff --git a/downloads/php/ibis-php-client-api-1.1.1-src.tar.bz2 b/downloads/php/ibis-php-client-api-1.1.1-src.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7dd84c39e0be6a12eaca1bc93c05258c43f55d4c GIT binary patch literal 39984 zcmV((K;XYZT4*^jL0KkKS(^ovECFt$|Ns5n{r~^}|NsC0|NsC0|Na2LfdmC0f&c)B zKmY)M00>~@o4p6NqRpq!Ey44~`ZwLK%dPa?_VWYV+Bc`b7jRci)V1#VJ+=Wm*K(ac zcicVKh~nG~sP&`mp-QDWlxPZ*L+;;7?!b}IbUH};nJ!g(TJCns+fEVo$5>4$8V{p= zWdKMOLZ5xpZRRJuuQ7+ayL;Ex*=GB$aJcT>med-oOYHBTA5tB99p2}ldgvM`4gdfh z^7HS$Rp=D^UDwUEuf9I_&;Sh_r`eCYJvm$M_T}01WYU7VKE331y;ss)YI@shnmg|z zocp*Hb~Qi&b`71q-aYNMF3f=A>;QAIwh90);_>cxefM+S)9!Z0s$G!QHf@t*X1<%_ z20ne)THMX$UX<xQ9Q$t?eau^Gw3l6tLsqNrceZ?KcYWS7vwH!io}7%AcLUdR>F%q} zN})TATTAZUcRF3YJ&TU;JZ0$T9?EPm*SFsF%QklsdApRLwP1P`*0zqW>({a0dv@7b z>UP_+!94e@7iO|8Tjg?Gb)2>DDR*COFILu@-t#^5_23^+x2@X)NqrW}y>WGh5{<A0 zX<KyRCqM?8wWyNYS8>B;_uG~9w6fLnozSG4uDfkDdim#$+6JgoZyoK@gws{qr(-t2 zG||4#cX{u<bA8)s_HME@Ev8-fL4Ef(Z?m17+2r3{*opS&q0Jv$(yNYU?C85b?&3y_ zRNdWEXu=`iSKWPM>#;t#Ng@Jd00A__$)Tel00h$r0%%F-(<!uSN2$G2^-VMZ=zstc zAc7`@AP|`}X*~*NfJnkL)6~$=$(oFhP|yGw00001Adw?Pf;2{x)YECG#K?M>ntEwH zPg6{3GBiCvXbk`~8W_~j000oANI)P=CZ+_)n<kk`ei}`tnH4>yJ(D7BCZXjYl$rq0 z^neXC009z25KS}y37{vSCJ{3rMkWXvX%AIAJt}w_YK^G<G>G*9pgm7e3W*^C0RV+O zr-ag;(2q%zRP{ZkQ`(6<Oj9FG8hW3q8Z-a^^#A|^|GNE%#=v7=Wry5%)+h8rZ)e#_ zEUV-QUb-hjz7<@`hLDS~6ca$J!SmnAnExf2`wPCmW*Fs_@1Vmee6OJdkOYGukpMyh zQcxv{QUD<VQc-^x;DDeI+%Sr&f1~rw3G<WZkDxRiL?`Bf`~UIU<b7ch|JNms2oW_i zNfD4>KuQw{Of0Zf49J9&Jsx}icc#DZIr9<!S`wNKpXP#&%Q@!%=Klw7`>%aswvt@7 z*x1?`;vp$6VpKtCuHpsAgCngqy{M)!9+Eu-{b&4tImM~Wxa@g8^5UBa!fgBZ2Uccg zS<w<vJyItYlN}p(^QkB03dg@y46-VHGhjZ{O2b%jC{Jt-d4s9~s3~6Kx0d!N{whO5 zKqrc%s-Q}tDvGMAsH%#ps;Wwgf~vAIrD~`~qaY!h9+ty*1#=kVi(KEwdiODjRV1!C zugNOKXS66;`cKvQMqXSk^MdSOsma->LBX%9T0b^cS^fRZqgy`mMJa<l-!Gq{B3zKi zR)bNB4Jd{}a7uyBVNzEYZLd^?iCOFA)#Ntp(tdu^uPq9x!37PcTto^2C8&y83IXl! zJ&}47xB$gqgd}1SpcSAKBYD;y=U*;SJ%8A7$n)Ki)e=@a`C;i-vxcK13PJ)<B3P6v z2tsHHMj8edktzrpkdi5B0$>VIiA1JO{17z;f(~_7Vq!@o%tcjyS?D@x2Z1EwKz-vg zKur5)YAPzKBC4o}h#(?02315#I7U<nRbb&MWyUn;FlkzqA^%6X@Ar5K#PKWK^K<?n z+;0C);N*bzwO8%1Z}EYhoU+ynL$eC6zcBZk10VCB>}Z_@l4Ld=NwJyaB*OGOnBmaE zM8I9eT2@i)o(9)sMh*xvFwnt4K@bb}?o(ottjIv6cKX+RorZUeb}4sZ&g?natsV<B zbwLVPm$MX;-eCgw&t@>MPWDJ(l*T32Kk6pBtPBGIb7%<#IWz6tW_3x(o;+aJ7$qht zl)_E>;E-Wtgi{#_83HM2LgI}|_3O~aiChku7g$%A%320YHnp!7@hC*pU`0k_dwp53 zD6N?Jv~E;3#^o_k$OOYNp#-3yrF`;XYO?~Sh{TdG&lEZ<(v(^t53lrr(l@1+j3Y<O zebL<>KR@hy!?|Pcn+VM?>$(KS{`zK>-)<LsO{Y+1%82<<?q`Nw#KA2fQpD328d@8C zeNh#k6^V#v<BwXSgdQa0Q!(RNzGDb49e@V*K`3`fq+A7NeNAMp_?dB4JW(0<aW%pq zT+F;yXiPe!J0&ECT&1F#T8V$pp1*#*W8>k})s>5CziEvgHd=7x;UgV)*TK9ks5y&G zH!dKu(jg+DiE;%6k-Rd@+GMTl@4w6_81cp=ka;=YGZ?*Ch?8q^5oBqh*rQ4}y0Zb; zo;V`s=2}>3ux(PjV$^N{BMm5M30PrGMG}9b$iLgtH^?1kOyx~kWrYzTgk)4pls9T9 zz?gJBcxdY2`OcMzq8%w|v@j$Ozn_evo;!0AOM%F=TWiA1-{SBI7<S&C8pS(zHTxI+ za<54sOY&Lpq6;*HMuz|gSN0o8U7-&w#K{w!f#DzvsT0NRMRkP*YZ`>;>F!^-yT4p` z_i&mNcms$xmV|ISbOBRP_krFV-O5t?ynG?4gmx7q=3PnOu+u9MDD_-bQ3_QQ1!%Hx z_)BfJ+i~Fa4?{;J8#+E`hGfvs)MXn!$L{&OlfH0wZQSo-t4*6bm}$dza;l`{?j=8_ z#e#th<fUq|kdYRcB_Jso$cIA%(Fwa$`IM~gba^`uKBf%$j=Cg1&<~1ZX!;*%lDUEx zW{Bm1mJQY~-|jD(TF&gzu5SOH81qilsAw%)rp?qzuoKpM?Ylr31W2L586=SSzt{MF zaFFldv!nH`vIv5y9(v*Z#Md^l*^U!e^N;m{3M(QJBM+OS0{)U&{%#lgbX=!q)JOpS z)t(e0@dZjhqtK475A|N$^?z;jBaV){`5TV1NSk97Nzw*P&97!X^34dqAF6p?>W#k< zXJ)?qAKOX9jaFAM?m9G3kJ2df%j+%Gw-)smKLQa*t$$*yl2dgId;iiB%4T6RGYkot zkj%m3MmY|KI`cZ@zujwU?i*F`HZ&@Cnuxlc(GiVW873JF!wqOa0Dj05`Q^v}1|en? z^@_jJBl%K=TPUK4dEhFj1IPkz!4)k+iYM^We?^HAKIu^q@~HtLMM?!!P6$8@AQQ1y z^emMFXgOq!l^QZgwE|3|B9cg%7&z1t7!;8vQEZY2{>u?0{Y8k0I>L!Ui6W{igGe8~ zB3M{JL~g)o-1}Mj_pN9BsE2;P*vW}eaNvyRL7-rB9?X_8xDp_ug(xHmDMw@j>4(`m zJ)C~Crn>Eg%h8vT(CzH6p0BNtz&dDkd2_HE5R}csJdNiK-Cp^QcK6XEY&dh*f}p(P z6-a2a`xls*)Q!Z=`;uRZd_ts_^(LjGJf=j(9)GK7GiG!t2D8Lyl3Fs^Bq2#iQWZdQ zjB&A#qzJJ5*sHpQ905I!umQZrLX=Vr^hpq@2z6^#IATq<ekBgiSTQlKg@QJ--cpZ4 zT4C6Nj~Z2~3uGo8$Q{FaruL$dLB{1YbsH)c1`#fWn;OLkY1Zk3g^+B@vj?7r1Qwcb zCTY6J5L0LZ9SU^@a?Ci{IAcwU7WDw!0k~fBpm6CE(wUp|A$_h1Ildpqws^7QiHX$j z3^}`z9GuOJpAeu{6Z>FUi$16W=f+XZMjFacmcnfqM@Y9%DNBSgW?}{@MIgdbN+f=M z%{L^qMY28!{lr$%4iXN1Gk%_64kXKvwhfG6+NkfeZz#El4zOfQ)LHvzAQ}&TF_oZM z1+bN{cd?uSfGImF#@lVXV%b&}Z^|3PhGrc1a5dEx>YPkl!i2S1CP^S95lq(=rG=E% zXx5~NNVlfrSf`VI;>5UIZBZIJH3GKNZI4g9To@yPK(pOwL1|s(B(~L1Dg_G113ijV zPY`=&Ij|7Zx*{OfE{e7>qc{o-*Pl)}%sMzB?1}iSKa_erUdI{j@6U@(O|dJBxbzmb z{_G^2I}P}LD^$%A<R4`aLR5v!$3?<PGot+iJgeJXi``c>&phDzf8@uXMJe3MQqBcJ z2U-zgM#jRfs6lK>R3k#tp@MZ69d_#8!`;=4g^$x&HWgo`s7=l{-gn&h8O5Fv*A8Rz zti_UepRoWWeZML>;A6;pKvaj*^6rK3Yu`PFR!HBUk<fnW!J}il%sDsn^rG(4P5sXn z$i6XGnnXbaOh6Kf5h@W82TTDlB9ba~MH;s^CivEgwgIscU`Tlil$c@g0YM~A!7}<! zA4~XPo@%F&MHUO`HUYtygLWPsdIOpAk68B}K;}4nuo}%>Mmwl#dzjONJQ>@_{bC+S z0U@8PM__kDjA_^poNRl?p9L9!m-1O`;yIt^)^^W--|<w2e?R%{-OSlH3~avr#Jc=` z{{dC?A2L{w(M=;T;4er3Kny$_#hG7vwOZV=N?Ajx%GyX%`3P$$fMc~gXF)s}H|&$S z#xIzJgAXY}l+H%$kH&~hr<3(ZF1~-DXW&y%RQlaMBVV2Z?<V6z6|Dg+rZAJJAS9{E zG4|mV)BK3Czjf!LHD}sZwqmuDDn|r5>Qs|Pe9A~O!9A?Rj|Y&r;xK;E-1FeiZqc1a z>Z`1GXsTIjL(vdOB8X8sWZ4jj1X{YFNh|zFNJ<74)%o<)))|ZE7<Qp$=f9*|2##b7 z96HJm299-UMsz`peAvgW14C&<H5oi=mup{5qK|Q;xjY<n6v|t>(zni9KY@@=_Jd{k zHF@^%Y06X`u{SvNY{<IYIlu7OCdjN9mmRy?^_FBu6)Rn@ohOim(8NuU8;$&@K*IZK zdt~*%WR_x$2~R>l7jL7e3h?iD9@^W5pze}9=@428^E>~s6JU<S30T&{#3|79k=H5Q zPd>D$Wqyz=vSIrVX8BSk9c8%*Iw24;_au;}i0<PFsxvKAVXo#$nWN9FxS?=856tN< z9X%>N<GOc6G#J8bis!q~lm(z|-^C{OuaUB18*A%zjS?hwaC|TL3}+uD@z4tX8X3O) zU}cv9)Ho_*qcI3EAsA#p<qe$xVRL>uc9$*3D_R=GKRBkO!rNAW=>dV0za}D-EZTY! ze&UJpy(E(%<zR={rlCkd2Q))A2A4^%cXaFyT^gf41wt0>Rz?(pbC)@KT#CI(mczze z>xW;K!P03SkI0E52*m@{vE05Zm7zlJ+lOAJs0hb2-xn$}<*r<)%OlH_7G$($7j-SS z$i2QILm#?i52z|6OlNb7;K?cPYRE{X6EF-$MgU8WbpeWj5J3xvZOCZmDNi&9QQAL2 zs=%R#9=p^Nf+Nr=wn(Yh0)iG4s*GtlF3|MBUI>~40Zgn0JUdFt4i5m|6B{4$0wQA- zF$0642Q|Ea5QY^=C#X|GUUhQl;5@vCJLfy%mTcjoGk-n9%fBqme6N&j-X!|3yd$9U zzV{QjOPpZRJ<MN|>JmGjFcVZe+Cud#TE-dYpUZc>#5okyomyq-&P}xW#9qZ=Q?Tit z52Fr5*Q(CVw#FTNb{zMzMN3!;rW)Y7GfmQ#-84H}ZHsxzbO>SMZMVUK@M3#i%rFH= zH8k8r4hlh@lY<pj&TYxnu`9pW(X*SAS2S@4Dlnc{>rGmvSZPvXS#(@kfs0o=noU@Z zRHbq}u@hX|cxhd|H%kk>;<K9Qx)Y>DIYlrFuN=~r<Ae1IZ*KAAoB=FmI6!2}cVSDs zunEJ+#~biNxhz6zElo}1gSK=-CHe!HHu5Q?P=fRd8V6!hJjw7+Lq^5fB}@@dKs$i8 z3a*U{Z1a5xq}x)BDBwj|4zJ<B2a#}K`WXD581Px|$HPKA(N?`0UU~}k?z!oj5;!BQ zlNx{#$5TPqJTbN|H>cXNcGxUlGlaA<%`%^1wi#-Iv`Jh;ST|f~VIv5hxJLMhXF`si z8aZ7;P_i1Z=X@FKA;nHPoJ}mA;DP}MV6cHPj8-nLFNV|HbH3&dHJ0b>2DE59$h#f% z2(XZBTskB)?le(WTWzIVTg)`mQOn^bl;KXc*LMdgTUh)4dfn}j=jiYqG|`g*z;LXR zybyL&STJ*)V3c{sa!g?8--hXx7Mm%Uvlzx6O(!QUlXVs$GobP%!J{7+0Co<fU3QXx zt!57)fZ_ug=<;OnUCsA6NMqZOF%K{Vk=PhYGKknmCmdfF8x)KqBcSoY_Yk=Tc0NP> z;2)QsEZB(a5s-uKnMffZDLs@<9x|vF3WQ3`D8e!fVS&%6wm_>#&CGH3Yewg0RPsXj zvsSChcE|JiJ2;s34f-T<<MWH;Uy<-DPCY2LBpLM1DR|c&TQhungo%7_kig!f+34&u z1gvIvb{fQ4-=Ru72lB9N7^42wqrk?`tUHSUyjA4j6_9gwNE#BK5(WYNXM=S`QH_-o zpu>2H-btPhABSE(z&Z8tCj7r_5#uv`Y2=CAM}?fMs#W3vvz>!*A4*uMK7{-2aUw(j z`SxDkN67jk;mw-s>rTFfo+aS%Fy*t%-S>@tD{Qve#fu&%w<OdmoFcWmCk0b<l%*w- zWS7?I;9{D09dvAW9;bhP-kwgPyiPPuXys+HRD}($VC%0}XN2PexOV}bL))D2M!1BM z$~%SrVEaDD)5*+n@;?bXd?zQLx&4JmYkwC*x07d);jC|=F;sC|DTX&RGKrQrRG#Ye zO6G77F%V>9G@Vg#L0U0^+h_*aj4C}bITE<(HKPslHIt2v#QBOzx}?yN3`+vlcM0LD zD@Y-)q;MZD=7VAPZ5j8$)adVg9(lKiSqD2UgsTcll$3HiDma!lmP5TqeOKPdZx%*_ z1X-|v^`plq@J^c3X|~u<pEG(Z@FaP;O&pWGI=yDej4*!Dh9gbqm#>EPhKb?FPVWn& z!O*P4ooU9~l*g6++kp8U!j5z)=xYT^BovF4&_@e(u~JZp3L>n?XtBfaLRIG>DXKgm z_XH6+H9QJAZF<<=2}pLz1s3D6W;^s45+MB73Hz6BcA-M|&O2w4p5p&*F!2!i{+tk3 z<~k#szoDKzpHJk?pAZG=Fq%C^cAiRAizL@Fr5Y&(XAMeXXsXWlHRmWKMOFe@6+o5r zmQz_65;-C~hh*opA9ou$vtHhRKJo?d<2;|y!k3ympBeN!bda0x+om3$IlIvd(|)S^ zhJ8Ewr_v6Loc4|E@_v$aPnH+&cl5z*Vy^xVb)2|~DI+mc-ZwaC?l<i9y+PNO^Su)E z83PluF$_q;`!*fu_Z-(^iWoy@Y(&`7KH8~%OZRe6k@^ozc<17K4^)W=)ptINqvGH6 zk?@e=r5}rbk4@D#$ToV^gur!zNHOrwFD5$pDiHw0G%<SXqt<};ivVEmWo+m%x7Rg* zEHMNL6T@$}cL&hnkMYGov~7WA$wmqWEg}~{o|@TRp#0h_FA?ruX?oCoIfd%yMkP~l zmrUR&>O(UR;mmjgLX2M|>ayEp*w?J?+2OP{DWjRL&Vm5XjQ7_kTJ`pl%6W{B?(xTB zmt~;t9R@NB&`gNTB=OlkSq%}3InmX-td$GBtC^F*xY*r<G^w&bZ6|`Dq8XA4C|_6z zqbGiRpFe`gLeYVg2ghX|K35nz5-Rt^qsv~WxY3r6RQLqV)FsE50I<lG#c-!W7pi-8 zh!UE1v@l*Hpja#2d?KSrBGJ@`JY<MY2ixMrjt8Gy9y=U~vjk_)LAypa!ul~1AI=sV zU&t~d6(`s|@%VKp=calu;_vq@oc*Tsyq_Kg@;yY10@>X9>A0M-L*f+y`-~tr@SIco zwcwrol|~oWXGLQu@WX=tI16k|Y*n{a0=&b^N@p!Yt_tkdoO~x}gjJPyo~``aDjQGD z=kPn1%a@zOoiv!P4WYH{X<0^m6%9&fpm$OOMg!QBL=bSzFyLcoBUo4lP=sMRkw`%o z7CC|oB0-{9{?vE_<|yL`$(A=J3K#1d)t$&VDY_^lyq`*?gVTu-q)`V=B-%C_It5T< z89oKF5gj4G*E{Bw+SWY~-Zh9UP(!&K)p~q=<Qxq05zpXkgM)rI*@$RvDOSGr6<amr zX000OQ<AgSdC*wzxbWNS@SdcHd7YkYdr70e+`G{<F76%;6atVIB=z(mlt8-%${--U zu8*KtXSuL<J6wej5FLW6kdKY3`{>Hp`eHUNsIb}SJ-HnRs7PuK$I~Y8TIvLkSR+T_ znO*Z8!QoR;xc%akREJ!JFO~}`k3vC0HSb#t`S`poZyfZXv@q_?sjEtoAtEA0OPRG^ zxr=C}-~|9Lk&yM;*d`PE;F*p^bT^pn**j*9jXPT%jz*NKide1m)M!$xjWc^Tx43e2 z7Dd#fX7Hdv0HLJWq-Bg`h1&T3OSj+7K0Z?IDh#ee06{>{V*$Dk9z5L!!`9Gb=vO`u zN#tz}u8%^ymJn%K1WS85DruI(!KJ{!*$q;S^(84CEfQvUI5R{m6>h^!D8UBPB*<-Y zh}IG+sUe1l10zs0+A>Lo8q0ziei4_!To5>i(3Y1+Fb+2wGm}Y~UI{}`9}_z6qqj!_ z$w*j)zOntkTo-=1v#0aMcF#V93`o&n;7H)46;<uXQAx3P??rnwuVP2_NFd2TnAvE7 z;<bWbBZxH_4l$a;suSy}#25yO#f6e2Kx(7FGmj>FWUr6yWH}N(2EQe9y>B@<516%A z87w&YAt6?p@W?Sfg)<+0dV52RzBHHVJXp_pkQa@&u=MMO|Ev+{FQ2A|;vT^xxh(V& zB_V!~j?bd-c`zBW25X00SC1wY2ZNmX2kuI>XH<s$#lf{<QpH6WIKT?>dxg?I!_`pF zl?NGquL9CKI_ku)$LReY!YH%2csL~BPaVRt0xP@r9RhGZi;F$AIEl~J&sv?6O`}3; znN6EIH5)G<J6n@ulAgAbO_N88y!3U$kg940a4rJo#Y_A@u=MK)K#xO_R3-2ut~dwl zRx(Y~p}^Si6hO|1AY&RYGwe{w*^dJ(RO}I=T>HJ>s?G8Id8ZXCf~EAkX9Rdyfyi)z zz@X;m&-LPK$fu?7SoLTQ+q^hS)0MWEme&tWxa^#C;=$hzB8n)|>~?51c8(`bd^?v( zVNQJbi@>7eU}{i~h_3*>nMwQ$^a`w~G{_od7$qF>AB*T8%+7WW2NF^`5x}sajot)< z>q0`wXT#!R_;V=LJDeN))Nv1y3Z<J`O0Wq{L6DH%RiXql*<q-Md^hTs(H+gT4S*Wm zL4QZ&@-XkoEz9%V?(gaeWQnW_lz~AII=5sjY*&1{8{_G%o^hSY9>l(J&p6>V<EUmI zC6T@UTHDD($yoUl6V>EaF^x34v&Vl~QS0X^deNbLsQB@dTJCE+2h|}dD$~0r=Xytc zZ_h~_wB{>%rAka_zt`e`nXr+Ci344x4bYeAIJtOi#zN6f)r%S^wU#jBCw<a$`neP_ zi-6Ej;|v%k>E$h`-^;;HCl{K&^Ab!*Q#E2mi4-x!Jy?-YBv5G(c7)%~1p<XegM+D@ z4BmOfr>u3SLkv|;SkUy%+KR<Vj)sis!E>mTz%LsW4Ge637d0N+^D}SfjZUyRVZhs( z4Z5CgGe%VRVW!Azp7q)`6>)kmZsqn}Go1m-avsYRujZtq?h*<qBx&b@1M`5)2D1ma z`-&ZzoC%(zp|5z6_n~%eiM-L$WH!u0E>mOEyE@LA;ZimgWmyyPB6y!h2E0vV*QF`I zlHoy3fPt)a#pwo(Bk6|1OJW2(XZQ}g@K?_w-$zGIn}P>0LUP<eDo?38_<JSsq5Fg0 zO2L2@&xUi5wek#2$BNeOS2UgcoI7KfZW@rOz2lHA2=yBm&=@K3>q}%sGek_)1d|mE zezOwWe)H{p{XN$Y58xO!6I?Dco;XpRLva?O)|D!fHBOz{bje0%OdV!}hiTzn9P<&& zP!&^E`77r>{#9ctTG*ebq%>9_l)ro5ZGM#3XgMJL>6yw9cK$nA;Mf*&G6@*SW?Apz zWlhRBSDR>`L0s3=<Z0`Ax)|8rmySuNE2k!%XH7O$dsYgx*@tJUW18ZzS-R-diAqw# zF_~g<Q<|EwH)Twv#lte2tBvz%;O2Ar4huh)1AkwqgqnVR9*WE)yNx#8{Rjv$5QDSx z;2~|C27?-9+KrEcz54H;$YS<~zhmdDVRt>#pK|OT1IK10MkC0%+Axb1rY-zF3u54i zu&D%wDuvM$lxgBdqLD}*7M(DW5ik#N`DdRe#LvsNY3qC4%yfC1J*m0tNU2g2P=J~t z5S5R=<vXzP_+YWO^T}^RMIPny??LU~^sj#h<Lon$=j)F9*B%mHHv?dJIT&B^W&mB7 z7mS^9sph=)Cw~EyR4*KsXA64Iu#jY-aANJ52AspmAFZ(HAlQc(%7I2+qWx%t*M>n2 z_kl>)?R)5=*?YWTy9_qy*x1u*Cq-c?sYyz%&x-kU>XLfTiJdu}Bw~!$z?_<GZ7iD> zO%&3mB3<fDRA@>xdmct=t>X!?;V}z24CK(-cxtb?BWFiNYm-jjPtD<@QJ>Jtufi7{ ztCOM`2t7RYK8*Bf56SwH3rr!4&8rVs?}$Ntk;N(xxC8ab3XwsxLBtpwW&6UJZ<+6$ zU8quoc9B>Rc!t5(`X7&gz#9@dK-=l0#>O!1uJj(KD8Dn2+C&*Bf>IH1FVV148I605 zo}8Q+X-^(@U5K__hkro;-8VD`0uplw4H^wKz4*NBJ8&-oY)t6aq>Hk_&o)P*5*AdR z|EskgR*qS~3Hx*PUjG^Tx;AD5U5P=*pIeTJKFG&$Ep^WO`|mzKL4|bMLg+jAJ07OU zB$7(d{FF)q)JYm!kT6%}Vct%#3+m!AZ`aQ!AQ%Ws3Oh#RAk;vQ#d>4CXAqlA7%xcB zx#*E21_eZ}MIb`fr`KFcLC478m9RUx4xDZqQEHpvme$do`JRcs?mDqCfWR_ECj$r@ zIE!X*X0zJ$g9gk>ZVT7TH$EKC3KQxBxuD2kE2gm5V62iyYt)d^8*LmNxb}|~R~du1 zi<7*7p($W!NMZ%&z8utS0D$kSHQ<FO=#04`vzbW_A&b%kh&=?_#yB{l`;$V7>jThT zZXTTlpgEO8vB5ls!fl$|3}On<cjyEP$Z~oN)Co%FUZWl$p4CTdTng}LkdV!XV=^3T zpx~V3z+@qrIT&(bP(KG1le*|Jp8ZS}71vTz0}ZGSiB>Qc$Sa~)R?L-VJF%+pJDi$o z+RE*6vdZraifE#SBq=%^(GELI6ysL>ec0sK$5s~Vq0;QqOviJhMLMsAcw`$gVIC?a zY&QFz23_U@kmwhDi=!hLWX`{#-;4<d9pvxKofv5GeArpwkO(A{$*EG3w92&btaxvy zKP}zIb91YalZ3ls`a1`MkhW^hgHQ^ELWkZwvrQ>7ymSWi)(wh+2oxirfHYu{b)A5& z9d$j!pA*=}gD)il?!l#^oOTI>OK5Cuv^F~ME{oz0^CSEK&~!-p!j<a?^3_oU8V<lI zprU(LWXmTG!#X`Edq)$d`|EKeIdbNJ#<V1KP~^%iT(I(NI1XWMRp=o|-!?-afWh4s zdT?c&`gUD|kbqht9SRD|MVc-Iy@S?FvZGMDOOtKVfpO!|7j5eXL(rjadX-`1KD$Es zT`(sE;-}A%v&*KBCxJP~LQ$tAP1Uh9V_OV7T4^Gv+2-*$Z)tn0IC&T@?WcZ4Jnp$W z98HDb()*bLu|R0EG?&D+y`1Dejmdd@Om?jb!$S;OF+6*?7V@?bvqE8(vL_UTYDEFO zQC`od9~j2Hr-Orl_BdzmFyJrh1aNlXHxgWT`Jo{^6tCtkg1@N&>(*`a=h4?6Er}B| z8Oje?>&40&wa>aXae(|tJcX`7`*0&zJ(kW*(dLflF4UhxE%qHy<l%~?Oii;wElj7U zOp+(){sGWn%ENu%BH$T-ejQ?xkGL5njy)ZW%^AiOuP+O^^OV=G95?fLD-t^RdDqyE zHeW`hdSXXkk5;`A`2$|oBzaOEq41pv9k3rL4ewohTHJP>q_i(sIXW%Ns7@g`82~;? z@-cDt^;tG_1N9$OAqR2fVZV<i{;rG|JN!6FXN0goc1ayD?XQT=MwNQO%xBi;xuqO2 zSH&Ztyy$J=V~1RBIVcd8fuUIB7|k-i%v$%?vE<4;(9byv4{Tz05Plxw1?*tZGX!Wz zy0`lTjC@NUL!U6UsA46#4KPPdH{Vx8kfWHQO?MEG)@3gPoin{+Zgkw;7~_zpM)~al z(3@Dtq<2G@H#849<J9FE#y4Y471Q4*2PtyTDF3Nc``=}iu*jT#_XQ}LWMFCCJytNZ z+eXZAYj7xW*-fB!uVcPK>1o&5w7_~et-nEiV8Fa|8>OX9IF$}h6AmRbwO2{gx~ScG z0-l|e@|-0~@|CNXXDV`a?%4_E{i2)peA6iYCvRUje6H?>uBF1b`5-m`wA)pc{ALEg z-4BkjII<6XelivKy@R{D8DqpcG;@NcD5|=Iw!dI`6XORWl0#uSK;V&Jp&?|k6&t3I zwNC5f`W+gMqI7TeoqI;`$Jp*2$F7`Sw97Wk<kNlQ?)kSBAw|@yEUF{C?oaM&2GJG1 zF-#n2vZEYu#OPRIp0m^<f3JomEJ{iAf%d~C1NW&}q7B~{+8=*GxJ{s{ASMX=8B+=S z9!6zQz;t4_>HGcy=-UaP)s9N}Zp8z15iOhKCC+%wepfmsoUyU9N;4A3!j19Qqv${- zJhYgPFLVxg=QbzSI3GuPh631lK`%bysVS`0@Rdg|-Bsc|zln&7GdEsQuj6*%z<m$W zJ`bc9iD=8R=;vmmJ+>2=C@@nQnas@3^nayG?D&}z;4vHls}$cRO%)`hs*+8<AK(5J z<2bASM3OvalRN9z&w89yCLl<9RP{h)MvWIb4W%Amk?;3+bNY1jqo1txJAL1N*WR$% z#hQaIKB%rEkqwA2L&xp2*yVmdrc|7E-^|xC4Soy=>}AXOvLxeyreOPU5R*P*6l{$Z zQh#)asA?KM&b{^Hxf$$obU39PTF<Fap`zSy#XAb~4j63z!i&QME=<Z#d+lRxVw4{? zb%$+~A3HNJ&j>IP5nqlHI^EVT63bT=7fA&1&3*9`(cB*;(jXJ9VS`m0QaV4arKe7; z1wfNH`HgC6DpgEl3`tBAFewMU`s3K@Atc<IAd*N<+a&4zkPbRe4C7f7ui%j<G=&l1 zkik+F5TQN*!y5KkEJPs*5+8SL$jii5^A5g^m-ap1#9!()5v=CsU)-qDXkcYPK);1C zVQ1x`?N+Q*Q#F`RT||OR(f_ucIyy?ma(#%iz1R(!&8<`f`v(wppKm6R;SOF$nT@;g zlM1Aj7+Juh=R<mT+lpA(o|Ng_-Q$fi6AI9U5#+&^l`=^vF`1DjWyVanwFO}lG=IoM zS{NzSkE}h@+RDS~c4!zedA+`HrUV9$zwvx*{&%O~M-N@1lp;YMI)av(MyOBu%^%^e z1`QxBB~294rB;e(8)>>$O4?<>Fx5~t=iB>!>zVXE1p1tM)b3HP=|HQqKGUhFPwAC# z2IB(&3JD33I`c)Myd#`bsSY4aCCO;;1D@38p|l8(3E_YfiQ8cV6p$J_TSzn{DI=J+ zY)vB#D6W#M(9^B$a>cGV8_B55$yL5aD5+OgF;)pkRxprgIXXiJl}{6uaazMsM76iW zh=I6>i0|T(*|HF_*Jg+o9jjFeDa+-h9BW5e%cjK#Cgj^~9gP`V6BGy$naf5q5X>fy zHK|Klg@z0j2zZwXo%~~($BztzRWzZ*4HSsP#gP82nlzbAnS_;suU3s|6mTF<Ir{<m zh+ivG!TSPdCdHw`1C^kOiPeYi@Ze1lju3i%oEK;KVtJ(g1dshs{f}w-_5;BK<0MH5 zi0DQ|9)d@i(81(NbR|8KIjGets<mP9-06sR<%?c_J|{HEBMHj;EGf~YpVcD5K{SUT z<Zy#%R3JoHLNE`thJ-d|wfC_?c;(b1=*}ugA|uBu97}{mL{DfesUY<{e($O9XR2#k z!zugLwk#0O5RwRy2xnkAUQs|7F%c9)91o6!IODgC4*|)%^OIE9OvZzbH<=g&2Ao6k zw5nQhqdncuFf>`#OJSxJkun_+_%$^w)S`I!y{~_(bGlw(=<(`Rq3tm2Aqez&nA5?> zf)q$;<q(lbbc`k<mWRpLfc8jiDQU_x)nwG-$YgRO2WfiKmh(8(wV;KGYqT}zZk;=U z@QMZnAjHB71ThR|F*pVoJhiFNU_BUTT1ukHTN?(#RYI`ggU4TNoUBPy%Q-mdiKLrK zhB!p1N#CK<%13L?6PF7i1`ffPC$9|Y-RaS|B6@gYcv7hcjF*NOE6>=dY1C6H8#{4Q zw9!p8r>jVCf?M{u69-VJU?hY+6YzY5d{utp#=!}xwxw<-1hb<VGT#hz+gi%`m`pBK zNoA3;%ZfBemj)^LWzbCkQE6;7>cd5;rj=O6Dw$U^Ba;zQ8C6YSX{Fra?b=#h1hgnI zj9{3A_IWtVj2kRa3W|~oRFOtK$YqhzxL00b_S%eW(9$sUVQOz>nt(hhO3F#a3+Kh5 z=pdUT2!yJL&Zwx_r(sN7_pLwY^<k}Qv~>_ZNlH??e~$nUG4dC!(8bsFsrn|pTMti# z!l%X3`&!poBuBhRT}B}GT059f7&p4;m*Ijqw`rvb`oOh>JvjkKPxLx!4n6Qd0PK*% zZo6C)4UK^^u^a|E6Jx?5{rW#BXtFB|$C$4U$Niz`#A1p0yzB1$Z^FQNC++b+o8Eeg ziBZlXpQaRuoPqf!Mu(o02c3Xiq`>W6X>dDo!D^($3O9(mvDXTPN`*&`Qv;JHUZF!y z+h?xMTi?n<k>RLkx^bmLVTK}R8*G4Z-fF0??*DC0QY{gMh*aW<VY`m_NN5iZ>#{`r zh`M3hh8c^&l?CfDk$}+6G@xi3XdxOoHc?hkpak6<)2ZSar)X)kQj*IdWWK}Dpc86V zINU=aZS9!QM5sWj8<1(Fu?$)U7{R1;Llic+-WeiB^4iR#ClZX)&S0Xb5}ARDXo*F^ zX&+ILCzDHgeX9sC4G&+{mT42X2$oM4Z6g^&X*QD@a$y>sHQKLGk_r%VXgE_wvp0qp zR+N&#psooF(5)F5%-jrPsi8s{4`tY#DOD9tH<e|?UYoj~)sBYlj+*J?L(pe9ViAHE zjF(9gJBD{yRNHAF+1SKH#KcLhRX`_dq0l>%maPupig`NH76k?BNoGe)G~tbn+aZ$g zF)jAUJxnUgC8x7hRLE~ZLm0(;muc?PI7tTmcnpsQR{K>VDk<fnnK+jzxnjl}B9BYw ztV%Z(j2AiV1~nxPmP`Z?v7iiLg4;Dzk$I?Rgf<q1qU%QOnPIzR)ZQOX(mtINfl|8r zqA5r0bJ1y%mR!s0Dp8`T23eqL2cvSVX#_1PL^hC*T7d~39dG^Ig)Ax#3<Ow%z7i=a z^kw8~&@{`15VA~{mJl6(VKC5Y2!cq#`9Akv(hAu77iHz`#TNr1q_$;Z`d<5a_<slS zejmG^;=BI!?{}P3e4BrUrb=MWqdTu3wN+Y;YBk6dH$>m}<z(}LVWbuJ{!peaq5y>u zkzkKxS2vgU_4#xw;kd$>rD=V5tTb@U&q0<@(eCH_laIIE?d~c&;db<QC)5+%HTaOm z({Dbv?wa9`&#&_KEd{icKWI_V#Rs%}rV>HVkcxedyheE?Fz??vr}{FH<&)pLeGW(0 z9$D1lK|%~TiV`@8_4(i}-#L~O<DGs7(2sA-3O~4iD3Q&!cfHV+aE^(B*yG&h@%E=T zHs#Cbr$N3czeZuy2Hc(~Q-VM)mZUeqIKWgQR^UHh=K>1z9;i6%GxVlKW4CX2_UOMZ zFv9QFOE=l5V?K!>|4*LZU#YyGUJ3X3vbD&1{KyMTnM!307}{)e`Hjc?Uyv^V*|5i? z@uT)mJOm9fr1bO!4DGl|84g(4+u#tTuVjcCK+DXRpMJ>GhBolf&%ibkPd6BQ{uT1F zi#`z%`mcBG@Si#QVH`Rmr!U{a0z1x?36@4iIXrBIg7hh>jplg`$!U6ybrC~Q$Bq5O zqv+c$7RWs)gSKI4%KA0T;?8{Qw_i))zV97EY|A6=nX4f1bk4}?(e+QIVGptDEV^{z zsBsWL#>kH*K))=;D2O9eE3GwJ0O1~QCxNi&Nj?@_2e|Z~GO>t^`FVLQLrv6SNo<IW z;EO#Zl{jgzX*H$}YRq8GwcDpJU`2r^y3#>Su#cuYc#Ate=_L&ZuDQTq<ay**ZID$| zSaALPn>1%+Y#3fBlzvN;t~L@(z;VFL$~-EhkLKkQV`1`N6I_?(do$emSJK5EUQHJ& z-ksg~Phb-Gx<+R^bY#JzY1LGsxb4S=6qwjj)BGYrjll?O<+tq;rh*1FaA`e|>IpsX zoIy{>f=viWv{0!`h)RAaTp0<NNir}*(g~7E5=$wdO)rLp$%u-J_F!aFRAU%L5<o-{ zN)r?yLaYG<u#k)pL$Sq8=|KXNQ-FjBv_TAp5Mn|llDQT@IUr<VI2OWm7J?9<TMS5+ z0#Rb2(Ww_klr&4284yGjVp%ORP{kw+I1VX7WRt3_10aZ0(L*4?5g`P`EW*T~5d;z} zkc>=7P{a@uFhrD0Lo&?5!2%H!z!HqY5kw6$BuPLKBuf+#1W7R@MI<poP?W5Y#8DC~ zNi{?TB1;q$0}?Dn4HQs}IlR?trvj?v1#FmpU=6{DaWpFoQ%wX(6-y9OQV~G`O9cTa zQqoWqQc*=LLsb$iQMFXWprJ#$cd*U+9A88OXHL}aTC<(NS`vq$2lgZTHNVGa`2N4} zs3k-D=>ET*{%@T0b>^5R<NUK$p>K1G`2Tze{_fuW-_FHf^U2sVGYHsn7^Gq~0J=^T z(1cizW0-~~yyoQ7h%utsWHo6pm1znC#My*XZ&@hiAq_5oT{jI7(d@gdnSn9G%WklR zhJ0$Y+ik5QR@}uh8qQE@iN7|usw2WkSs}cT)-vwVMw{&bQTP7C!O6z;le`r6gH0Y8 z40<7Q(3?gV5N7g}O~M-Gf*(XHpn=>C)rxQy&X`0S9<%72ttJc|gY%E$9g5Ic4W;>* zqir%fdcolP^s;akF|o1r0kdcF8sUP7ib28`LTt{91HjX3NcrBQ#+Qzx(AgotL1xSp z6l0$K;F=^f2UqSeGWcqfFxWk0`GOmmR`7p-;3=%&<sth1x-!wjJ+tXwYcxN%>j>cE z`5@(D)EQ^XoA>Y1UQC}&fd|Y;;M0*rr}F_kiBMUypO7r$WiA6fodVl2ud{!9Fu3d? zLdsr-|4*OTZh@o6<=Ao%<7OOupV{@pXZSv^bnDa2V~<P7KY2&387$gMyF~g}_20ZI z;3mRi+~7%QVl;ee1cn`sek$ZRyf1iF1e9!l8Yol{CRP?Ss#RKxoSm(k0=lgw<J^|A zXwNnp9)<|H^McBr-zqHnU?GP9(E+F@*>F%&v(Vr<?Ly>jp6x;}jl||-DXe{cqWu0t zuiQPszv!Rubrhs3==CY;x2G&7IYG=4rW2T!Emt+tAdG3$gCD>iNx+H_N60_h@{Pf` z4qfXSXFtTNR*UCEW{17}a>k4%)v&v+GdP6+fP@xA!wH3NmPyN4aL2SMff7L*w+YLL zWZ+WUL@-T|2@+w8AY{RlIQ-RPvFiaa1Vlv(Z)I=n9b8C>Vb$|Xgd`QA4QCr`g~_Hf zQKBguL^+okt+1g~lu#T8R*p_HhTB6(oEQfKlG|omgf$6>2GOJpgAW-kV?@JoSXNdn zWs@~#bUZn|Qt)z~QuL0XfuIVyAdNPbme63X2KNV{MQd&FY2Nl#R?}}H93<o=gN8|j zk+c%DhS1oJLAPaAVk7y|O0+nsb2%uUMg_isLu$=f*;K?)tV0TyQH&Our(UaV_7nZ_ zxHt7D#PU*`k`W=S53Sg%yyFil9u6H#p&&?|hMgQEt;7u-x8@Pu(;+o)VA}E%s8HFC zvutE`ne{_Ln~stMYKTb}YH^N&uB$OHa2&b>g#g8A$cw_GMHAE(<BBa0Lj;5lEgSbF ziSDD-WxsZ$)8jk$X$X`fz66iK5ADlxNvfVHdOJgvD?bL2PTcm*C#KtW!Ch*cjPxhh zrh6Y)!tcH<3zW=nsw(0F&FqkofYSI~+1{wnrXfs1ie)<f4mZ}Zjx)Qz)r?KHF>h6T zn88&3oc1iQ>93R>E_WQ!2a%rU?1c@&+nH`4Q{UW4x{l8dSq>kFRbHC$n(cb6dSer9 zj9tm6CKL?do!ORjmKEIz!)=ZV7l;<m1RBd8O|)?RW0Fb*kwzPB_EUg`3J6TmA$P&S zMaghGH1harIDxtZ^l+n6x7oc^nqhnkAwfau2k>CQblkxL(>^m(*mr=tnJC(Y6A-+> z6H!JnaTHqb<2R2-06>|5k~A{aT|;Po83y@<jI`~Ol*%+gWW+R}EQSnbpqF^PyKQ>D zquO}(4qDG&$E=OI_U~9OUC<CTQ64zNTD+0tP*Y>3D6W6Yq1TDaZJ4k{6T~Esn2^ub zfou49jsd>Bz8?w?XV-g|F`K5!W*yUp*x$2)Z|m0uhp@%-IpjJZ$?iY3R2v6A^ZNgr z^;y6#pqLo-KUEeClF1lwbY!!)Z63bbup*#52RLa?t(QKyLR%j%H9mjV6*(e=VyHnS zHSjwf{SWVpK298SEASaQfcE4VrfVl)(ZEq-<b_@SsSV}Sn;K&V(`4x5-vBCGKE#j6 zll6TOh2$e1NDUpkMBK!#tc+?3Y;`;)nl}KF${PR0NhkaRu}i7Y02c(uS>QAYr7eB9 z3N#&?v<Udr@gSJ*Ck-tkG{6tn>^2{QM|=+IIqL7;agntu51`@tYcpNb1}1_AtG8b( z0rgHC!i?bz$P;1|NeD>vidEFqdA9id8aPqNz<SnEb5n(M5qtYa?dH5qatwWhG3hb4 z4FMUdZ$kz7(2%fxQ6knnd@@!DaFZY%O>r(r9QLa8_}|r>c_S)>!!1pi)I3WxIK)gN z2Q*D4pp0Nh#3|5e;_SWH@L)>`h&SaX)j5z(5EnGwMIDaz%kgNf_<nFy4~`wRSE`;) zPCU0T!I9I*Rub9_?~@54kfIXgW@k?Ven;>^bizNXmXk`5iy~D3(O==(bhM}N;BVhQ z<OwxpmaNuxGl<w@dsFcNrU-%f_MzMCMIHZlh(z1EDgl8)nf+%*WzP?Dl@RGLVnvP- z>!;rrM_-rt#8HgPLZu9dNL*nN4Y8?=STKOhgw3wN8ULT+4*z>R;QEpnD42ro8=Ia> zHZCG!j#|DS3I3MM%!cidD7XA~6MxHd)Z`lEfD#f;6C_VJS0Ae4*R#iThw0?+LGMWL z^>EDP9UW@Yy=e`h{qJa<q8c5YeVmAOu>(|8COB19RaIB(%*+pW@c01|=iF-Y?4%Iv zknEBwL;HI;^d1RPH%A2d5kFb0TyW|A&?rNnV}JdB)zS$iH3lV8hm*gEPS&0VW~Kvg zguh*%b9(I-*v%XL$S6^Vy`jbsOi=6bSTr$xM$;`u5Zxf#7j8r5!|8}(D!8r)#36x= zD6AvycWl&ud~w&e4$GA7V9o2e>OfYJ@>!-}*3t9+jl6XL`a)cSzc=mtI5YEX2QF@( zhq9zwUw!_szL)QJUYA&*YftZG*>?&3NI<K7o|A_?W3cn@hrXSs`QL52H66K7&LX1_ z!?hNU3w>+CgPi9|p~pP>=?X8?`Ecn;>_Q*c$7{fH<6CRycrHfUBa=d8TC7;Gxq9<e z_*HGXe<!?(H)#QYOpuslAYqFzfKi19Ot!6kzsvc%?mmB`|G)J2YdP^rMx;&frXZ-j zjAF4Dj<d)jipTK92%>bTSEES~JVE_r8s7eQw(_a3+vo6{8=^4tClfv3{pdM5q2z~L zCPb8wIwqaWFv$*s*Rcx(#~<0@R=1Y_<+sDpD|b9cQwvGtP55w7D^_8cWQJzKy1=2% z-@cE&$CqWA{k~r>AGY<gYSrsGPkrMwCX_}v%1gi?nh7I_C<z^Ed5j?#OjssGrKF`Y z)vLp&+d~QIz27=0!Eg$aDr=iFFthoIeyU&kaiH_Sqvp*C*nO75jPgwh#|i3-kZHKx zDEbJfY4iKDFA~1JZXGzN8#^01lx<AYllI{e!rykT50<Wv>)&mijG3RXa%>PXNo_fY z2D&xiEx>RMA0#9#t}`Fk`giZHaj&|nf1%N;{V~1L46oQc!Gm%gsAxu{%~Lvr<Tj`n z^w`gDY7Jap8p^r7dSMW6^-?}dBFzGp<6iu*ucucbT{YjcTU0UWn<iYF4-ln%Ij7Nr zx|ZJ%h`!II;pP54<XySk9VWaOTJQQ?c@UrGS;N&sLFTabVm2KUo3;uBoHcz>vuBsq zZpVe+Lp}~KvLCmbUxU^6aGi~)zJnqA6e{H0G_|_=`LAWbT5H^O>Y@tL&W!KHk;Dw0 z1Zmu_f(VyZYD`Vi?%C*26b~hX*i?(IoLU+;J{K`7xtxkI!bteumIp*j_`ZS%`k${Z z^-R&?lY656ty}wBJM?RH^n-s)D<15odeQG!>Gw$NIWUzF_BE?t+C!4vZL#tav`Rtm zcQd*9{W#M<Yg+`f{Kzl5d}4eGU+Zf?aMCgQwDMrXfdmN-+HUQNR5>>IF>REwSLWi$ zKYTPW&Fj0*ck%HZ1%bu-&3bxMUjd$>p(c9UyD-<x^)<Hp9i>}+0xs8zh+>j43^yMf zzA?FhG6uyaM{2fv@bcO0vA4t9)!|_Ao-7BYlowdQS%eL}jvnRexm#TZ9)4|_l`pR! zTqeH#7Qw-Xch}XpdiOZG-QD9`FXP8b^w@qH8r8d<d;Y%8uPqzLP>MqcW<p_*rS#S# z<NUgB^uJd6{C}zUm5|0iJ~fg(^vcORfVJaVw3jh(<E@XIyRM`Za91hY)nVCkJDrtk zE!B+IWu_zL(Y~CTIj?WMTS!5jeJ=K`D~RLQMkT@!poCLDTgsIL+=!~>yzg4bez{Qg z%~Ppgfz&7|)+{0*Eh;wG`Jb!Lju)4u=6cb?Nh=y93S=1);6OE$w%AF2{l(mlEE|}V z?IK*4E-Aac^x?^l1}5AzzW^v4KUd2=*2xthMNzM7Q*;nJZ2`#09z21iHwLJq=l0t6 z=XmNHn0a^2hSO}4Vp)>NL;-@M=Xk-Sy==9ivH`~c+~H~Gu-k4?Y$>mfuJ~8`*(qMz zWH<7hWnVsH<<Id(D=da~vG}slu4F4_pM$&>po|W!3*+Av*~|q@0k$+C;-*-F_D}my zlN^n+G-gbemL@+7PfjS?*KO9uSkBs`>o}_KyF5DOVEC4VHX*W34l~8Y#O1>D)!r-^ zkRAQ{L#-nvLyW}95hzdcj8ZKqLEL<XZhyR(w$Mv3{8thHveuIuhG#H=4Ga`xhXhJc z#h2pXx5(K6++yfP!Zzgt5fC#pBa_lmn6oe-DGnz%opH8;wIPtcU1GGTa5jv>R?<dH zU4lVh+<bEK0=mZ@IiWWYi4s3vK!==DVWB52zy!i7tK27tfkz*>ME?LcK*+x#L-?on zs{X(42*h1h6g7W>CluT*ru&xbiaF*eXbTAAtWcr-#^5AqlK_%HELG8@K_`-|9l??T zNu1Guq3|K<OP|VkC(&VQ0r!7G77G)YVilMM5R@cP5fw9-V$38;kWmr_5;#MI851d0 zl(d5pOa3|=8kQ~!s6(t|#RbVxO$4SxKm{l^ir4m*vVmv!LXiw)f_Qm4dIP=7U_-|f z^Zjh#!y-tcl}RedSS(m?;T0Vy>0lxRO}O9^%BeIlq!o%)3XD*&Tw%h83SqF|*qC_X zGb~`3mOzP!X)wbE0wjvSAhbXbpjoZvqm+Mf&VAv3!m0q*7Bxdjk}jarazF5Sy3w)W z9WPM69dI5#y<_Z5$ufC($}>Ey?ba?!h4wJ7_`P3RLiGBu%Q+y!X{1_$=+JFiBqJEc zQVIqWl|e}mDT0Rzy(pnbiU`uUK*Iq8Bru^Qa-k@sq=u4U2&6D5HLLyIbRhxV3y8Th ze9;WerS53QwdfKQm%i*wDiFm?NUl*eiqtp%!e9^yrA8<SnJ#LuJej^ZxNZJue$&7y zT@p!Jhf1T^eINE9HZ?Ip0!0*%dBc8y$P?8@5*Qc~7vmJ4Pv3>T05AR9zFzr1hube> z@%wT^<smoRr}eraBam{J_lSD^)xUR*f5YDw6@~L3si3b}_y#vC*%)Vi1d0MiF(Mzi zQ(0gT9Ce5ZoU*uWPw#2{xP`8Afc~D5PN7Z>doprEL;#_HUw8{JL<Z>}@k`zHxIli% zb}JA@eV>9?wy4&(rR!ntNWVdI0(^OG^28Nw#AP7K+0$Z$HAMoYslr60R^E}ZV8bWn z_PPO~=zE<<d{B`k6fIFj3_(RT5K~1JO2t%gr(!SP;(Vaa{1oyAfk;uPG7Ug2l#&!E zBA5kx)HX6Mx41s5;^(W6U!k`T4<%!Nclvqn$%W2IEOD)955dNJ+>auA7;_pv!DP(= z#VG=Q`v>KkVy69DveL@qf-$stD})yqt!dS+*dh`pFOYud!VCngH!m0BUxIlkLyjFA zoed)kbMl|ChgRnzqt)0$lP=va;b2waE5`dX(v}Pc|JB0n-Ojgf{yP=*lWUnUTGkXu zNMsk8GD6T)VVGta)$wH{@;LYZgn^o`PQ6@9h{pIoL8*zU=W%mgsZ$wcY&)bDB3xr> zp3RK=NUD~&qUOuofmaKRTS2kSW9P4cH3}Cv;4	$cg?Mj$F4zG-$T@&oGfd%mA=? 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 QU;oA2kxmpOCc$M30EVO;9smFU literal 0 HcmV?d00001 diff --git a/downloads/python/ibis-python-client-api-1.1.0-src.tar.bz2 b/downloads/python/ibis-python-client-api-1.1.0-src.tar.bz2 deleted file mode 100644 index 5fb22621c4fca2ecbb27986a3f164143117b3759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50642 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 QKmUulBAh5lTD3l!fS!jUGynhq diff --git a/downloads/python/ibis-python-client-api-1.1.1-src.tar.bz2 b/downloads/python/ibis-python-client-api-1.1.1-src.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..14e496e8d8dea2640ae327bc1f2109c53947488c GIT binary patch literal 50721 zcmZs?Q*b5D^FAEg*qqolHui~a+u3kq+qP|Qw6RWX+qR8O@_xR*i~rU8RLwJe(Nonm zHPhYGT_dVv#ltG1O{J>+TG8YW-d6Ab{r``b?=Sxsl|Q{bOnU^3i!Wea@3UY~G6{lj z_tqDAtva=7<OMyo`j@^a8^q*I)!wS4Gm5R=*DJ`xyf>X&S8Ed&T|HMXzFh+s8#nHM z@_*&Mer!Wevj5ER#c#=O@<LX0ACTO->3(VU`e{elHPgC%(_OCH^HS#PzyZ0oRa-UE znYvQxd;{4Hz-rk(+}K+2&Noh~s9y8#NVx<gh;K-hRJMroxw~^2DtcQ93~QM3ah`Rq zE#zzag6T><FS>Bd!s=fycB6NBb+<chZ(L;GxHoYQ4|VJ?^IY3M&HI3^C+q{jz|M9^ z1i7};JAI|pH8;;rABC}>UZ$kf-k-ME+dBpB)26GNHp-qi?GQL%tLv|49D2Bx8>{<c z>n~Z}LfLP;2LnZg>8>6Li5>Vz#;)3cYw_B=RuxQ>+?qD^`n6HBWXLLXNn?ENoj0wm z`Mxiff0utf`MUCMx2n=eH2+PutFPrf*}S_kdc!-OzFf%D>7rR4|7f__l;+tg3I{Hr zdb>h9OD}ZlpNQP(s$*YYSJgUr^CD}ORT^w~pGCbtq>!>jTmc!2%4fZeN6NNMo@cDj zW}U;p1)J<Pd^>oK%}*S>bWZUlz<FXr_K#L|TaG+&7uc^W6x=qpcb_C<@nw(uY*6g8 ze2-9)quU&6o)_tT1+QoXlni~hy{(iWLddm!k(i2R!CUYiGP(PZ5z2;X)+G4c8LlR_ z$0lub=Babfc8lfpFP&Fc1oOPNGzw@q)b}ED|H|5}$T!sn2soVwYAtuV8!9|_KF1Np zEw8qCx4EQ^x6jS4h+ma6b~gV#@@{#_m4bz*q8q>3{;Ba)8|B_Tupwr<)ZIQi_S9;R zy=2LSaQ*aT=)kxTeH6f4djggu1_cIXg=Yo^2DKm;6BZVbW!3*v0Bm+17f%r(Ke96A ziGLQsulN^-9Ok&$lssoFhn#$YJjbUhby<1IT)|vcyaWXXDFmEw7St$wWkkPOY~^3- z%Kcwn8P-C|EOW_HV`cI3A_+)YVE+M9c=kUAFZiFFAdQwxmRB~Kg}ESQeIy{aUS4uX z<yB0TS1egs7ApXh5T2dom^-(EB;oj<`u_tIEe0BTk#(7<iPa#UjGv63+PBzP$ShUy zg3_n*d-)l4VNm9ogao-n02to?7U3cPkFEY2WMY9F<ic5US@M+uiYi{ls*4*c`NgWU zLjv-Jl|rJKCF{SuvaHPhXX5{C{J;5sGFU|k2?>N17?qqn2TWu#9GlrJRhBWHqSQKB zmS2(`dRf5#Y5hOitU&;1n5$57Q19<<iyN59@WT}mGZT|>%Oc~8SG+rr6hm!Nqa?9* zN)4a(#}B)r>ffNj36j=+^rFKniHCej2|)Cg(E_2tJjuV?bPT^s@nG1RNnxvA8EeC3 zP()ul-)f$&W|Xh~ZTKjW*Wz46_>m3=;xuab^riQ91w_OC`k*=FP)VbY?~|w^h!T_> zUumsxgjWTyE3ue()ed_>Tb*5zKL+f+XZe2IzVbN#tL^>-H2${0RazjFzTsfI|3iWg z<jeg9@q|E4e;60~%JUui^w@iMaOBl%v*-G;{c!cRH530LFvEP`J8<VOd-$fi{UQ1O z<^S*VrShG7{G8W?uxP^$rF`I}-h+X{MT-O19dP5hZEf0pLwX~QgF%cRX52hl*)VnR z;GMdA^{{_%{mvd|cddQ$(Ehb^;G)R;FsqN6ZR8)tCA;t4TdmtC9~5THj&uT+<4I%_ zb#**(#?PNYZfqv9awL9?COkQY_KjHL?PdTcOZb>R*85MvH1(v%K&a|Feg9#c;N*jt zoY+8VPS_9qqMdoS_~H!#?CDS8D*=Gh6YcK};T9aJ#T{Hx7`5;VPJ<-oWEn@64dDff zA7<(Ye$F?)2%hv0F$Af^rn&<Q)9}VBq$H}toAwR`zKv;4%Zi=87xryeB){4u9TyYp z1uDvjjGO_5g1t$W-v|h$7NK%5gX;*S{DVARXT7>wUqEgh5@qGTf$S>If9cjL6v^=5 zb2bR(!lg$`m{g(nQPWR?OM~mRSN{|<F|@sZ`q_JgJ1c{@vc^kV7{k{BP?;Ck(x_LP zFaiTF#a?*m7zE*|cj<*&nc8uKjoyWRU%b2)!orC>p(<Ie`U*KLlwcv2$ZKK~3<9De zM3mv^NTJn8D#NqA1O6}{^A1fMNzmIYK{F=p)Y9G^5fC-J#Tl~o9{7p-=W^0ImHzB< z+9sAi5UfGP&729GbnGpjj{@L{5jxGBf3+@8q3(sSK4P>7O&*)E96JSzQ|~7r|6uTD zIguWu#L`}wmB~#Q>pP$Qje(0KYF&fKo=K=_#VU{SYawTpq<{MIUwk0yoqQi%oGET< z6i>SBQE+LQkyT6q$zn8#>>9?wj+!La4<<^*)v7Wxt1bRN)W0Whti!uDS-avCC3#Cv zhUaWArjgkr``vxU;6QD}P&qzFf`%~GP4P~~_o*1fX_HgDc?|_h5ai?5{KPZ1TQ-4A zA0{<D_rul|z6M)MzOLFAk8XD~Z`&i&gCz7uUFN~Dr?PLl0zw#f;_!R4htC!k#=STa z;}4%b)D9QT1BDNFu5PFp(<eBE+0&}Kqx}B%G3VDS?uAX;YpM|e>qf7A%n&2{cHa49 zC)twiQ%^#oTiPtXbiLt2tGBEk?&NRy{PC7|U$M6D>J2^h-}ZLW>-vV#$=BSQZp_58 z)4T?8)0zWw-^9*Sd#8&<BkhFJy(g@OkDtWRYoDkQVxRhk3qq>@ot7Q?r%!+43*v@p zg}<#w9_EJYpELf||Jb&^m@)B>zh3U$oKu>uF|57(j4O3O#wojzY~I<C=dXT_WI~!t zaoKV$7o~p;)6dt^mvr@X{93l2{7roG<vrJT=*RDQ9Dx=gJu?pLAeNs_EL906s1f(0 z#eu>=h*72wWwd67moe~I22|tg5N}h=KNb5xVDYPW_s+Bug=6dDN%VOWapmL8@>@?K z;urG=GYi1fs@33M*a!HnSoe;h{~Pa)=AX^QOE3S}QKesRJ5&F85uG7#TrYvI%6y!z z4=$XprFi$=*q-4H{+Xd?+ck961`rkR^^wuBkS8EV5oh6QrO@W4JUQ57Z1JMbQ|BW7 zv{!%LKj=hJ+nw|)E{^AXdZPHE2H$Nnm}uE@z*gy|Wr&c$RuP$}RWL_+0#{@@31A*u zCYO(dkj{m<=Vi$J&(QR9Td}a|me(KhN_zU0P~y<LcSChGgqL^P;HC1DzYXW={Bx2U zY5Qd^czkbsWOV1%Pw%Mo*ixGR<(%@<F#g54i1eg$g2Oi=&VM-h55FZUs27fcinZ%2 zXeR)yW{|ki1ey&RQ)X-QD`cHH7b~vrr0AWn*PG&uEbn(KVOzNzg|GF#I`_KDjC_-L zEt{Xio^!C)flw$^mi9Ih5<NDR#q!?<D}Gk33#&nk?^t%_XqQRd;ai@Y4ZoHP!-nhI zYT|~g)qF<jy9FQALLMjIvg4PRpBlcYFbC}(L=(iY#ZGj+eB;+&;mIc>H(JFOh;glM zuWs)5GnteY1DVtcczNL%W*)8w&*y&s6oP_{HAy~xRP|Ua=I2vM$XaN=^MBf+P7IcZ zmP-a{)yZA1m;Oon{$+2#(fp>>zFl)ud?eYEc<K-1ZMa%kQu0}$x^me2Dm&7}D< zwDjBNwcVJg&7Sn59KSW|zOU?R*N1HSW}oy?MZ}8q*q*jlw(wzo{LH`nM~wL6A8%la zJL$i?Ud8!0EuwES=A<*8Z^BOvC{N{F=L5yJ?IZ7eLCfh(HbNS))=aq10y7dr%0LJ< z3ER4d`8U6h$?MOkd4nIa)4BK~3|U?a#v#9L^rLh1>a<5-F~};{WynYq$UjOySN*|3 zS@QAwvJLV=D+r?b2Ze7=*;%DTC?-g1zz>p7x1%O^2JlbJk5(hLttF*<E1OiAuXMbh z+WPwA1WPdNzGq5vVn5ZWn1)zc3kr15U6(~kKhtit98@P3bjSe=EJ!6;1=WZUlVkWU zaT<JhY1+%Y>r0yYKK*tX_%QP8n+I6?2>P<^@_qLKn6X9$&4FJ-2RD7heE|!!Y!t#u z0kd}ix6^<5A=U8ut-~=Tgafn)I364rxwW{pi}Or!t^$s(qbLP&<%!2w9V(K5c?8%e zzaje3@ZYO$iu@%L9omSAz@z!JNwo$rp&#E#%~)1>>{j82BhP=O>@t;H>SU~DEbzc$ zf)3vTv23P~l1d6~ZlOGOa_1Z}{01Jr?KJfA{jA*^yUHE(f2#xfB-qHn{A+}Z18R^& zXp*8{JZSDE$HOo#iQPJ9aGwrn&4tNGfMc9NB*V_9vG2%)jqYeRt<8Km%@gS)S~`Fr z<p_0(s740%nYd-Za7t!^(d2zSqXd~b3CRsfX<rz;bp(wVR7EtIR78r17_vOUOUFh! z-R;1`pN97)KG+tt2z9<SDZrik0Fi)JaWTBJ6=pN%2nw+`$7>4{=W+u^rm`q>NWA|J zD(DOP!#{JxS$-;2%0V<|H01W|((Od`Xh-e|*tWX>mE_SMkScxH**bhms@{|>Qm)fT zMPNOdI6>hT&qs3|<xs3|_C=ed*F^b=72qvZlqK08!Oc_wIg2E&MhniS43#1p3KfbL z!Xhd@Xp|riA%?rL@dw9%LCQt2WwNN(70jHRB|~`6!~IL*B>tL(c48cb;;IVuAR|GO z%9)G~9Lmvn?qBO%^A-cuFr-zOR15nQxaGU8=;!uD0PDpjnyLtZO?iB5{BImX&q^m< zl-=hiFPS(D1gA_;SK%E|C~*{f%g2rjqWh;{#kc6ros2|xUT_?DD<VO7d*CssiLU1R z-gvoXopV!=i;>*Wgjys=;ddctHpEFB)15&Hz<6}5v-=5jvR9o|apTkMQlOj5qo=da z_#n{5y4>mEg1*q!D#9nSl5<kl6RueHc6|xeldAhmf#@|h!zMz{6=v$K;G{uEPayJi z)MqY@hPIKy`m$27Y>@kQDsgc%U#i-mX}opGW@+(a#BjB6G7Qfr<D@G`YsqaZPtL!u zi|g&v;9K}HfsP?5awpLPX|xZRb1rXEeWo;#`PReL``$}E0m_w^NiqVMO|s}59o@Ze zqf&bhRTVcsU1qyJZ4!Y0nxLr4>nZqkjCX-A*tFo+HKP5Flb!tFGt?RPbw}Q1iYcd~ zo~l9b?o2sU#!a8o^^oJtv%5-}Fn+cA_VJkJTvAB0q(qmjSt@>cReLsYaWPZL>{ZBu z&7y<>#Rlj8vKuU?njvPu4CSusxV4k-Ziy2-EQN2^a^XUUE))B*<J-!;F9DjcBIv;Z zYm*KBZ~G5?gOy9GLNVKW4XmgdSXUFZLukX<aA#z92b3Cf{^FZhXRgBsf<ne!uFqO3 z4oD7sNZ3Pj374CAeT*er*231(f;qUGfz)}4e_KL(c=g7*CHXFNIL|_GXY^Dmt-9nA zQSgtk!n*!2Zt-U);SCzL*_8|fl8!&Up020ESYwO^SLZ*EJM&uM^nOo<%WCs;logWj z-OYTty8Ip;MuFN0uw!YnQ05q{2SG!LQBc<o^CAf$=K24Z!@d(B!APJyIURV8R(7}? zTIuNp9a0Tv0~VlU(7i~z<i<Ed_qeB;?*h}~S(mjeHBtzr%Jm9`o57w$13aV?vU5|= zEBj5P5>0fZ!r(H57oj1?<q~O7uZ;zEjfU<jB%xQvEU*!eBQwRmHX(Z$ZKVk<C*oMK zwpvG@dr%48M-3n(=TRCTd(!9MHEmR-i52sD4JtLTPS?3geEDr0)W{q?kAB5(e%bqe zdB764&1?(*67+A4uAuqz+2atF_(eZf)ExNS1bLbm@@l~~zZ}<qXOWg>7C}PJ?EGT* zc=}Z#^f_%Rqmm@b-VFoF;W@)3tg9N~9e=q&vRzbN^&gphJ4Jm|Q$?#S(MB%)+v+)7 zCNECAG6Mles1lqD@$ck9m^*UK-cL!pke0<8T_<n~ZV+R+TIJV`r@#Ika@rzRouT#Y z*xQZ1%ayfXTcuz5JA7o+O$`SUJ2>|1^!x3Iyq*e0sR;GR(cJgT)4iR^7xT6JTAJ(g zu<pCs+T^_8lm|p-nO0LG2GYA-@c|cVA2*l8i~aFcv3bY(@bDvAi=MBS$Pq`pw#Iql zYZqJTwoCe`FTq~%$oq6u(jx;W(cFX1wK-%@&zDd4l#hV^m!SO1T~2O#&Jm+0l#uI{ zd16eoIO#eoW%<LUv+sA?`&xa^<qR#Z=xz0l$et@gx<A?~>|BqwU%G#Ia2qq7WE5}l zAM9~j8DnwE4~i8&Gcpo@7R~$g@<qx|SCfT>^RK794h!edil;?)y^jm|T0vEo>06tT z2cuL0U`<gnly`9krivOzSk8+-X4+b9#!jr|vd0lCYoxstrBVr8BAFvW<XfM4og@K3 zjKTsDNve<NuVdVeYiBoM_w)4XK{e%sOmfw4q})&Y#fy9erqlFc=4`LpTf6j@6i9mm zcen->OtaWE8&yWEBxJ!M(}j(^s~2wF)zhZl+KYvqt<7{-wd9TJ3s?fX`MAvM)xbHW zLia*<3MGj$)ocYdOt6BoDyY-Lr2J_5(rO>&LWX`rj9%ydJEQHHS`D8MwLgE3Ut399 zQNzbx1jAb^Z@;j+D4puCv;Wkqbg{~*BW0BFP;s1@TlD?hGI#~^?b*3sP-QX1xi{?Z zTJTHpplIvc2WEIfA|3mG3c26+99xcld@;qBzkQ8-`(0aZEsah+*M814EIz*W&V2Y$ z!9F{@e!r(%W~W|%ekm?~eP4Zt5f6WSe_TO4Dq;Z~GH#uzpvIoR0tQxQO&E&OXo(NL zt+H~vGZM6-t06x%&hjE+B$0+#CXuqDDjL6(b@iC<yQ)qzRRDPM>5bq6j;*UqfrZd8 z>gz$<Xyi)xm|T5R4Gqf79AuZ+fS)Y&nB@FFM)#a&YzDG3#EcrGM9>za9M>`52UksO zSP@a;;9o6o$_pOh_!=TP?7hTKZVE0bFN{5TW6fgGyj<B8u*}S~Lo+jz6W^<3tSFPn zda0i>*`XPfvo+6tBL+bQ38`$GXe|VM(&L=t@W(bZL{>`E4>tJe(FmblYd|@#O0lEn zmgds>wU#EBM0}d&p~7p-HKHWA_kjvy`*ndr^tc;8itlY#(0f{x5>W}M>2?xh^scM7 zZ7w(`cw7f}Ja`D)Y*qgtbF{OWNw&93CfbJ1HI%I5%Pb9r1Zy!vFCOMK8qP}|E@}<; zl51YHpnpQ{%t*?HDMa+GYS-MIO6qnh9$n~Z%@p6GFyo4fLSI1B@e6gIO?$td5n>}f zuIMy%VY!bH+);Y;?NZtbuJpVL=3jpMm<Y8mZCBT8^}^3!F*|+YvKbI&-!$Gye%yCn zD7w!_l0Wri_i7GYnu30o%T>Ka5-yUCVaSNczpU&!68D@crO*&ZrVf1jjXarsetlei z#&<uzT+R%C?7-fC60hDm3Tz6Q9v@%Xe>rTt<$PB@d)){VO7I>P2K?!~1BZrLHw?uK zTk;Z$d6et~#C8)GpFoe~+9}mg)kx7~YJXTL=eIEQr^sp#@+lPZCG4G3IBAkh4zop> z!gV;|Mwb=k=pi1dn*zv2W0TZ>HFi{znIvVEimgXZ7ucf8KLqa>ohxZXLMDeOqO-qs z5yguwq4>*uSC{~a<tHMptj*8#{S|&$CsV2#1<@wFBEtrJYjdR&hu1gs%Kf6}KgTTx z@_5EyJ8xKjMEZPq*cE%+d!Ga>#_tPk_el)08b;CfqFIHhm?i8gnDw!<OpZEJ|L~80 z^KqD}edW(9SDk$OB97cS^$|K<VHYpX3&Df8L9@*Y8|Nfjwx9yrBU4K*uTL(pDgZ=v z#V8TMtV2)k?l#ZHTCt)1GEFPl$-v64dSsY~h=e}F2RK7!k;(q~GWgEu|4c)*k<EJY zni%+`CUy6z`K({ZP3hy*5`x45OIZA>;7~n&Q-PG6Toq!D@R<^2q%mg6>nBRia3b)3 zxV3ciwR0%F@hcx)9-C#Imr#(-$rR0$Jn`A-o7oC(Cqt26C`vF3gQ?~J-MHtggnjhZ zPs%0xa)48>9mBw;V{~2f=@xWu$LdY01JOsXN-fjBrL*T4l@QV$@x1n?ly{5vFTz?- zm?otvYL-E~M3m833Xn&yh!c=J#J-nD69{1mQPIbPG=}QLv-#)4|JZM&=U%{{`PLXG zLL)i(x3sS>+m&1u#<N2VVly{?Y%8<X&mMyLWDeIgpaO-pExacyN#Af+65CJXW`%Fd zE`xjxp}Uu4bd{H>wh)6mzBxoHiWoRn%ZV5N_4j}8i5Gd)9o|bvP6&Jh99C_p5kYP@ zg_oSRjQ`d_|7AjZ$YNeC!kZ#d3q0`qwdZP&mEl)6p45hYnmy&e#A1b-LVMi!zrxzd zbiPn+PDDgH{q=9eRmz;b=OJ9_P`Ed+D#p0x%4FG9>@u%^T?UXvq5C`JdQ<(TgRD_# z5h8NE&TAyS3zW*&V1$B8eDmx5B6{}`!oC0Z*PlWNL7yjDd^kf051_`{qhOv%t3H9N zS5Dy!JU2@zgX|Oj6ddUK$4B455_5aw2^+@N3x$-0b`fkFI_@FqA0Fe*=Z+(ql*8fY zWR{Pmg{E#g@zc@A5QWvHEK>g%Vt8O;X@}a0Y)J(!mcF>ifnc6zA8SxrA0Ra0kaIWu zCP<|BW?v)+1?yEpbN`o_nci{Dc>OonlB#2+r&qeSgfi*7@?*gQ9Xj<N9~;ef3h!6* zd&?DDiEq^we$>ifr<j>LD<A1l>*K|$WX`;?)zz)dxMjKR73<)?oZ#O~h!48!J-tG4 zZt=fJP2m{*af(mwC%yf)rBi=|pQ%b#KEXGU0<_~t*=A@{!|W~~>BsoK{|1~iqRReV zH>h0os{ATczSO>3Biv%ADjD|(g&Ym9Ad}*fs<~Ar-<24Fab<Lf9&zPr(%I8&`(>&? zH^@9=f-hfG`*Z#n@^`YsR?MBzT9X76M>a2@_0Q+Vi%HLvK`T5was)X-!c~PNMrz4P zoq$f`TArsuj6rt+Z2&OpPVAYBnIsY>)Y(cTY?%<7gMc*&lnPwe`n>qM=caykm2Xiz zOpe1wVfo6}XWqik|6Ow!L`FtDz_SRu=*NEHN5~(SB0b`FGxs-o!Qm!|D&h`4rs0d8 zN)dgVvv`;n!$hwlS`=-J79u$W6`NG&QTS05>rvIh{6&@y0V(v*leg^<77_sjMO~9f zLflRbw(4k<xr43#e-Ou3H`+y?n^L#(Ol<Ws1u7fU01^nw51o6zW@x;b$=TvdGiP6r zTW=YQzb3o`4LBd-f6GsEQIjKuCYn*}6r}2v4qaTA`h*TS?}Z`^dsoBAK<^XeV+#Ee zX(3Le*OyN_hJZMZqImSk9sa-zpdFJJMTxyOG}=5EsT`Y3V2y$fz7jc9mZVSfLM`9e zW%Mf#B#3pr5fF<~LvvzDh8<_wz2ju^vGp*JT;U|~G2o?z?B4a8uVF$>c*5wK{+hR! zNU#|^1fBCEaNY~R7FYsdB7NTB?zo6&4fMQRhARHz6L6VYAM!-2AYaE>SQ5!mLok?l z`d$T~)2N|^%wn+2lH-egqb{%8kvoMqWJya(S&(CLr^03?sMmkAKOsmTX+a;mB9W?G zx)yw>pHU4>Yz+R<L>JX1kkqy7)=oEx1Qg0gsYl~D0VD8$0qV}R|5aEfz>5M*cG{*~ zEQjxUBj6tEwwQh+#+3tGO&xxru|~)vw}_fZ49?Z;5N74&`BUnb4W9mD;|~f9l~Pxh zQmewoNJ=1ie5n>GT&_oZR@B-)uR^GUYHVYtNBR6!^?#tNs(i{1xYR<)V1uM)ONkJh zaHIrcP1vneI9{l$>$1~pr>d*(PuAl9z*Q-h@Z7NLvh8O(cFDC=&5<v+s?#*PN+zdz zf%pYKy+QapnR8J=jv7)V|2*%T<bgXoV5r~35374fV;B_N_b2-NiWnsbz;n$+2r(pc zjT(1Cx@sN_7as8&ZEN4!BSi`Wf7@mst|Y<z1g<zpI!z7BE1u1Ic7kZW^e+_z>3E2} zTK4-5wjnY_up6}1R>Oi)!II;l9Jt%w0;$*VDVtG*i)ZdIQVfT&Ff9YID7dq|f*(V) zBx!y7b-iGCWKSQNy}LSCl$v727)dMRVG;_+<iwh>no%Jj99J4fl=d}-Y#NI3=I+rx zvlZ3}T^DQfc=$?VAd+rwgIv_C4vjY`q12s<U2Lj`b4rvq**d6W+hX%9NnK3m*J}&2 z4-6Gg?t(;YNow0lt2@@Yb4yNVu1nsJ+hcybI2Muu6^~qWi;rDWqJ?A%0PgxCktr)^ z+v>9?*25T$Bl#Y*CkYH*rhxMCT$)j|lyNbmD0vh7X)O>N9K4hl#IZm)DL-$nK=z|s zL}Qw&5HPIE7kD}UN5Q(TCo<(Uz>Fv?n@k%tCer4_YR?Wfk(htWT7|dAQL0@wz8%dX zS{0HZMkB1l65)adn8HO|gc+c?#~d-R=N)avJp=lFUXsGl0Nb&g`JE@V>|kT&7B&Vq z1nRrlk%5C*$x33fY3Sl&f2r<t+-O`A(3io=sM_*s22&PROgv2q_h^CQY=E4;M96>r zV@jtL%zmg)n8-u~k2**cM_7W4&xF`(<DT+Zr8MOZ&iHJ})|_$(FsOr%#9hUI1PY$@ zUVadT1osKl-x;}fgEk$nRnq51dhjwNja7c4-G-rsEhy-k95k%d6_*q3zxoqSe(>5! z_P7&0>56c*O#N+|vHkUL{n=n`W52PEzwF~`Wumt2^fK4dxVXHaAxmv9Y0%X+*;JPw zFX1RMhVjp3_`XDe;Q6>6X06F}*RnhF6GAu)-!di9x!Jp%+`LYZ?>}?Lw{WyC$QLR2 z9NQ!yRKSQ(KxM`((h1ICSp7NZ7}G(qL!SWyt(f~?5PJ_vKwjPGz*t#B0CSI&rci-n zk8~FAZIKp(aQf^I5#-Wec;=9ABX=+yirdUFO_R(`W3P%!fW?Y3fTm8+G;T7xwr%B( zYguR7ON&cu6DDIEEXdEz!>QeI*<Wd{X>FM}LF`n<cRsTgiDZc|ZSK51!VuB6C;c#8 zErGagE#$#R3pyBrEEN`&agN>yaP&lLuHZ7Ms`N4Y`c%R-4pq{(3D{x_mt#bJH&5nn z)@zc4GBK{VEH}=*KQDx?z_w$#L$SYDAUZhtS%|?5H>6?l*KwOA)xvxN)gkgNZ%8~5 z9*YMXb($J7UxgG8!`7lhXvWPad7<_Yb_eSGZ2d?lDH=;o<)6@eC<0ay9a%*AOPKqc z4>w`EP?Jz(@brz_&E6{6^h$8s_WO@Fg|m8NQc`vZbSbk0U8CqYzeiwQ?wN^R+>UAE zW#{Ux`_EsY?j@$uM&9_D3zz_}MbD8r3WRSsJ}8?ih3t3JwJ5ZMkGhLFbp$fwpoE{= z>Y@~<2(I>v;u4tHbQpw;iSYD|$OEQ@1I{t3b+qteUd`=3u8^Gz(@XX7126^s<nQ_A z!rJgKR-T=`VK<uXJh@w!ojQ%t-rm$kqM7$9<^jjfd}J!%%>|PRr(lSeNzG_><pmBC z<3Sprc?aF9>px(dCt}s~z6pa0tkMWv#V(j3T=^|URS4Md_<Yoq3jA%tJmOaEF6%pm z-1j_EJD_FlQSQFGa5KbU;<Z;dzk_-yzJH2TjWP|qO_?F^*L5#{ZSmr|UEH*X)MsnG zR58T348&GaI#=u|_%|K9XK;F>ejC6K(`mYrzOz#&caiu)iw5Id=ZckIY=#|p=82oI z!E^gT39Q0cvWc9EKDh*hi5zXO5$-u2P$ELIC$rtR*(F;l={v_Kk<Ia&*xK6tBlb{| zI_vW<rU(j{u!dZYB`T`xXag-p1HPblT-S;jyzZ`3>#4YgTRkNvdTk44SPG_1Pp0qn z(8hKEn{N)Ty@*D|W^Fc20!2H{c5d;%J7l;%;Ycr`84bVN(bs@)tLU}h1XxL8T#Hyx zoIyoVsD<K!9&{7|(FduLPZVgx3+8D2w-91<SVdrt5@>~!nD>Dcs`*3FEmGqD75ZtR z5Ncg10&NjZ(7riJ0v{?Vq<ek{H&SRRKF0`)B?Ch6`yRhLZ_7dd+zpNe8&)>7`+PVL zjfk^x(Y0W>cL5DZT16fOexAqw3}=34`mVTr+e64}ih+;>RY#+1$z|5!FN6mQn_u}C zCkrs$sxcoXv%Jw$22@2;(iiNDalOcM;Hl44j!(6ek%=mSP9ZVDck<XCLkDWKEsLcA zr-vp<am6Yu4Lc9+I(^F;<Jb!byrH-;#$sA0D7?t5M(`I}V(9#{q~X!%63PP-eL>fa zaG-!<WGKLG7&j&c_wd-_@G}fyC))z#*kAHKuZ%sra3@y)w{E&>5hc5E95OT544)HR z0-10qfRlm&m~lg^5OaPg($dczEN0Czz*4j%F)^uzrnL}}wZH&J1Je)P*EicjGWbKQ z53Ld$&JC4BM6`gmbfLqaWWQu0&cg9#E$KAzxN=1Dc{m*Lsq^PXx0|;8PrYz)AYt*! z1-ru6`@igNwi1PY)a`z>#%OlrG>AGc;R8#1!i4ug&;9D~4F2!z&1YEX^PlsT<mWmC zEZ)c!PLPBLBe-S4|E`q!5gd-osh;RbpJfQ*oFV14f#|Z@*Fq_I9Lt$h*7H=AyRP^i zRHLy9Zjy17X;NY5sDu)pF5kpJi(<9OIE94=l2X1OnG@XTV5;jed02CBnpp`!SmQLC zm_FA~Cvp1rFYye$72%m8YPVhqtL{m*<&`K4xA7X1*SkNn4!xH-rB1{AOlKaA@6w4a z<D0CyeY0m2B2fGcgDWZ?)yvnt#6<ifj6{Or$;1wW%OZu?ZE*O<n%-qn-hZgd{XjT4 zbU1(03#MCco!PuS9;~@;{S!}kde3mj)`Zk@7GW*6b5N!4P=6McCW4>}cz`AVfy=}w zfFeGGST8saTNjUTFMdQo^358_m$HoZO5${3bBgOw3==@OP`;I)B>-W_(~@qyw%MjW zdhm-JFn4HDv1cDMHCL~2FN-1q*nJzWt*SI^Ji7GqA%i7&(V+wJl#1Mc^6og5Obai? zrBV<Wgd2$8nYHOYEVFlv)&KtSJJ}W;?i_B*Bp0elhUC@;xq6ENZ=<NL^D`$CS%cnb zt)q<8y$OntF`fZrumfRsV3wq5;|6cCYC_=UprJnnxk3X(0mZ(&{$rP~l{#$O>Xmrz zFyXrJES}+$N#5P*G-`FW;kMz@#*j4&cXH3CnHFJ9azw!lJVNl=rRJpC{oyUWm=o9J zScYuIsXG{<j)qzrhO_`<$bz>X17&U{mk3Gika?zfD!-uGoNzO}c@?`Lp8fGbjhLFF zNqA|?8Ulg@49%M3ECzPoGWa^3nT#ayJu60UB}r2x%jZY%8CGRu;iD0t$ndezjTIwX zBL2m*oLE?OYL1fxyGNNP(x#H6e1yP*WuqSr;C90~OHeFuLuf{&6!TZZA5x30w@vL} z?Jyux)aT<9Toe-^au#6cfoStR88;41k)GMHdzQMr_omt#c1yA_he~GiMyLxdGa1~$ zz~P%P>R|y0+8j}!V_3zk4o+JfP3Rnz4MqHoW&`#hq{kpS$*JiWil0Iz)*Cd45F#iw z+Uq*2WEr!ym55Tt#6q=E7(HU%H{@5y^)OH0Ar3-amtC%EQ?r5A3FtKl?p2}9ScatL z-&p4Vw7C-Df(JNVQaQSM=j2443aysH=U}o}U80iZl7)vvV<9Wgn&uk&iS)2{>k`Ed zpWX2TDaNhqCdP(N9&RP6eEZhDeZ!k+9DVbq>}*zO@19--B@03=+eIL;FU5mWh{1?J zM4R@Z$CWT02Fy-qR#u64p^LlemqA@HD5z_hr6PS6tZ|~051f}4E~9oBnhK<o2{Ddn z*?0gr3m#5V0B0zf2{{sqjaPu97EmD^13ZX~2LKcK0Ov$3e5SOv?+cr84Ll6pzw61D z|L^(d2A**1^S2GN2lXo8%AgiyuUv!`n>6DQrC~7>SSC+#CidHnl$w=`R7Jssm$dIc z$KV`M52C1CgYOC}!8SRV^#Ve}pskve!cf8plT`FW0!0@-DxV9~rjZDQXh?!76-7Ji zC>N9Z`(|y7ZSlz~aN$5nQe%-&DYnw08(nvH1*>yOvSHwu!7<w8jM~OkxE*#$n5ncG zlUt5PfEGC=tzJIx;uO?$<3JZs9W>bnO!S@Olyn7yQEBLIG6s%le+V+itTrqcNz3RC zM+?)zDvl;TP&GO&s2vtO5zf`N5ROLUC<eZ;s$vhcPz$SBiVPeJuaDa0p|B0Uws+=R zJXr>2@M0U!PP!95I6EFSDdM02VQdPsGfsi^3%MOu4^He(*aI+}3-TNSc7<gbKq@$k zSu58FN20J8FN^@a=u(m~1k|;Zns!bmdshZAN%5k=G`?7P;pt)s<-l1Ocp9t<Zp<HG zW?3?h_?IG%9moq}02m|P?3hRVPu#=*E)QYN7nth3AGo($bUKNemu9=N_YXa#u~2eJ z;TvB1@Uk&IB=|B009@VZPdJ*nGbafoA3I#T)8ulp@vUlt5ZGi@xRG@tHA4Gq5k;%r zMWhEVLE}0O7kvJijI2};B?r7aX5$s5`z0)3v?fn-FW6;ii9WFi2rW*?H$>t$d5Dh( z*McLqfOj8{j>>&ZIwKj-4{5BMXV=Cp8ASQCnlt<~19K5o0E!_aNe0GL_szGOn_kX% z)-yYub_Ahtq3;F7hC)(2<722E(;0?^f>#L8J2xCVEWA8u#1U55dO*&>YV9Vt^p6*( zEYSx}W>P&nn^>R8g-;o0@SqLsvg|gY!lOd6oM8Zr;V@w*J%*!bIzb@NB~j$`aW=%X zSihCTdo-!oXil9bWNKeJ7Xmh&HGG&t9MFfnQ^GWo{qawO?zyKwPK1=*1z(y6MBBb2 zpTbIn9u%1z)gkFZ-ziHV5(%G*(mg3{dkN_!CjiM@(J_P-lntoj{f(^h!=`E&3DCaD z#$l0_;JzdiWHu-Z5fPb%A0ywa@ryuyg!N^-X2VkMq79ep0@5{<GGqnc9GMin%}|zh zjr|@6YuB6uT}_>gakM}`p0KVJ2LTyL#}rR3IB4DARuEPnmV>8o?wWv99vSik4^LzB zqmgAeJR@9q**eW%w$(Y4VQJPY7lsv+M!>xwLxH{(+p4y7NJJTmb(DQpHO&~^jCK}* zhSbpRRgW#yXvh66nwasKL&Z`N6)m6=J0>Ah>*~gG4heRZx&1yS*>niR)#3R2nlA>N z`sp=f26_fhsnFvgFk^RMQR}0v?Zk6XL@s^?l(Yjr2J_}ujPKDcB(<EL0mlz0OZVD$ zr{J3r>5cD-EHG<07APrdzqZeE+0PqB%o8q7A;M$va|}DdtmonZ{3O`YVr*HK?Me<8 z?&M`(bY=2b{ds6})P}Ch(<}Z!_%AB6nlN51kD6Kxk~nf~*0PazwM7&XgvIpGqf4x8 zHj%xTtfzdte>1p!(B8Sw_A(F{ToqS@V$K{1qiB!4p<C82pmWH_7<G>-5QiK9M1xYr zX+sKcYdFMJ9=hcvb4YLz=R1%SnPuTIpi-{y*a+=KP%C4?r5n_{jo{~Ef}PcmyZ?7{ z?18El3Ag0JpH7`I%xWGnGVMhSvm?Y9kMJ0@O!1GcTcWWf;DPNo$S(QpII|jv9gTLy zlO<3Feve`#0kbaP6*iM-YcEBEEgHZ#rMGF4$uEOzRO-A9h^IywC=3W51O^_v$Cr!E zdc~Yh^0IO=<d!9?;4MTJ=VojSgoeY-8<0*8UV%9-4Vb_&c_2oigpw+Of+=*PyqF-s zb;~?Adk2P=Wh5Yf+cOdbA^(L%Ag_g|lP={{vConpEUBWTrH<f43Aab!HRJr#9JxG> zRCA%AfOezw5Y+zbf%{Rwly!whl(6q5+t^J2si}Pyp&_^PjPS}6mvy(;7$!E757}-< zD)&~FFDSzC<mMSh7Bu>ld+BTWck}w{ezy^kyf7fpR>c=a)Xyg{Wx8w2^;WmQRFmYO zG7FK#6HqfP5`7jm^~Y*7LIcKL;D~4i-@yCPPeCR;_g)h+$|78e0E&yvu)Z+g6PEJF z6H=jPWb_T7hB2PZo*0$ai;k)X!X@5%akRh2oLoe5oPAe-hEETfBXL@7e~VCHMO$4% zeIA>9tIIv!CZI_xoW1#|guoHG$T+Sf8cwhmRuYwS>vpfT!g~V-1-89a$1|-?4ACe} zX+aE+8>Y~1P3FW7*(lp}B*$}1O~EP1LE)>vJ@{BOS2A<Z(<vsTRT9pJ!O4^V#c{81 zI7f`-rwlhCLD;%=Sx=y;B~vIA{n)17a~djmCLUSkDqxuuI$0}6qnYWUYovTidfYek z!4-EBMw9Sjw5_oMF6)LD&7EL(UMe_3WGTIWr!@&g-SG37TjZ+qf@-XZ=nlxb`z(M2 zLL{<G4G4t{=jucOM}%VIubjOi;3*t+cbr{t=|G}job5x|KtPIuZuf<McWTE=bkiZB z(BBWVL!<+Rw~@3>putM<3HtbThT4>^oQ!}P2*YF=jq%8DWDLZxH4?6#Z5A#^jLz5t z^$eN<R;P%0ND8gX9ECdPk;fqolY*Zr9-q7!TzBlUPfBF_{_D^KSdK)Jme7=~jPH7N zMW={vT~tR;`Q0imNnr<pswjbNtApJ3MlSg7T!b*ItWls~g4%|9qhX%3**oxu!0J9g zT`VI<XaY-CQWR=Z<>Phh-@5Tf_|g2f;g5!axCB>kzT3&!HFb54L{jIw*MGckVJR-w z$Z>JFr$+azKhV7LM*cu9+VXH*wkau_rLLEv3A1J*pafUp7nxHHMW*4|&}IgB@^G9d zwu-Fn^N{E?^KzirTE_%u+lzS-Aj`+V)F)Ke1jg!Gl;gAT5hPf%$&bMTIl5xPowh)& zqX6Dqsf#7n=p?ZpA+ZaBhMv$hGB22mm-;LmKk7@6pc6{|5`IAx6flpCnUeS5W(IyZ z1;rA;>5}xLj+w{BTV3Obi0nd9h5JcU7=cQ`3n&te@0m&`0ZcCM)@C}8b3XalUGLY- z9N6UC2vQqkSihS+L}P9S2iafvkjm`{kX;Rxr$^nh;0IJob_xHrrl@26ISfHCC21-m z{6yAXQ57bXwgi)cooDNo5`<o9Y^&E7wc+E<+mcI;c<|}VD(FnWi-RGBp%>?N%}ozN zW)8Hkc;H1ex@q>%hY4LMHz-4k&dC?Mxse*a+H+!>h}0wTmBZy0#k;=x-I~ZvcZVFR zx<NV#nJ<Y-j%tGEh}KUaG7xU#c#pvG*v7z)7FI*FJSRs=)^F1x9{~xGltR(~$H~YR zujRI%5J;FdN{1l`J*)tO+Mbg0OO?bF)>u`}V?oXomT5TS{K2_zPtwkzwRL}N!(StV z1|&Uz!^3YwUENklNPw0ii00<60sN~-zFa@u_p}|HGQ{Va+4HxT@QvBI-g|Y#IXG^Q zW%n#MIMC=$66o9qlIDS2^nld~D8VA_D^Wy8SvAf>wOZ;BUO<r#?AjYd#ZjKlU0Op< ziWmz7E{hZ7@Z^4$5-}ztFKzyI7H}seN6^TALC-lDsEtcAdIk27GS@BR^MLh_DlhpU z>2(syPv^M5i&OMTa<Hrl-?Ao(591(k^CR6mVwv%zXy?2`iEeHOiw7FOX*%I!S4-JD zSuGF;HU1u_rp(B#Fd^u~h{24wCeh1{lMVkZvMD54HsJWo(r8&$XG<eS@{}N)tcMm& z5IBz1M{GkSPw~?&BMUvoSzx<~oCFC_&ls76IG%;}LSWwUd(aBtZ3%GUH=#n_0fa@d z+3AHt2DYq{!l}-62B+g$O}C>Hj#Xi$=vb^n3L6beu?H5gfd@m1UiyuO#-aoluUH_S zF7+bHvxFqVJucBCky)u0)(;qof@<z<9YN}@!^^-k)tee_I!gwd74GMOUOv2+4o#|$ zQ6IS^+i%{VXBxC{&)C!h`qhFU{k(ngp$W<EXEa@(fxIcy3cw++h3Z@@iVI<=Il~3g z3tOtv{s3G>NWHPFBXKP69bxg?A0{h+o#BLqn1MWjk~li!}ovgEPR9qwr~v-PST& z8Xh84lUzVC^@``#r!3%}yRoE-cbz7&o$kLdE6soExjw?)=|&qoD!nbp*ufJ-Kunco z#c3)sbz9V}ej$BzoPDx0+TkAHO$#w0TCO=!u&C&jS25Ckm0{A~*T)KtC4@kc#wjG; z;qH+hrvDBdiy+frdnEn`c~DLkmZi}p&}=757qJyT5B3+}>y)3(Tg=KNNmjW#$bekt z1CUD++}QwaAdMVlGoKY{i2|T0KHJ(xM_oGE8=b4iEa7s8Wnw5>9prQu9fnLMYK0&Q zjO&<ds@U<m;lyG{XM*onDz+>nRL5sz><SK&kq7G2cSW#-=&chWxq0hYkCM!i_Hqo) zjv=AKutwz8?;(!C1@!fgkPK}ISUJOWyx07SZsn$~_XU?2KyrVvg;eaU-UtvW^%dc$ z^Nb4Jm6<I?tQ`U`Gvb>bQn@J(UEhXPbzZKRr$^r%=U1;4ndQl03|-Z`?28t8$+{%j zTw~Z3SrsG<=liXvv_H?6TY<$x<hL1j$8(+rTX8bFiImyKwdm-hTDYyQamDk5LUhPR zl)%71F_sNyHWg@3S`OK=Zv~p^YV2<`GHv7cR0v(kPj$~>+8>ISwijcPAZU)$kf67R z;}}$J@QtPC_avyp3LBR#ELS)n{h1_<4M(2jg2i323k-(aUiV~Jc5EX}shs(FHvq(^ z4>YdaUkS|&>)YQbJmfWj;$`pa<HgM#(P?YB4jfG7W3&`pqdMo6vdx%d$eJHW$SlLq zCRM=-l~)KCJC<8bg44RUmf(Xdo+Zc&?Z>@@kz3m^Mytd&cVG)Ha5QAyJkNoInHOGX z#13^|uAK~Zo3OUA1@KB}TV2RK8ea^t)r1n<??3&-Q)r~NE}X96BPYunX99p{J!c%! zLmw=&ljgFvno}=}y;CMfS=eSDA5JY^BfYJ^<uc7rO1bW-s%{T-46Fu^7+nXbup}xN zlLGkV<2-x}$Y}{S<2vlr7kons=NtMc_y#QhL?#ACG`zHbf-$)>uY|8ASKi_uj&{Vl zU?E{%rx3xE@S$&pgi_Zh#r@!gK%lseH#UV1PftohPv}ws6iQ&xi6O))A4BHCH!PKe z$c`3r=4TdnZBdQ|5`7J)$u&f}$<B10d*&oaQ{)a0^0e7OgvtYLAW3Eh79dHHDT%PG zB9X;{8?KujnW9vp8CuYTu@5AaSZE48W%}W@1_?hFOFC)}e_a0eEk;!pD956V8DP9> z93J83N-&j0LDC?b3|-$KhA&+6gGL3wBrGKlV0I2#ZYi2(zr&;RVv}YZ-kY;$h)xc) z7>+n7^Wa{46O^Gbj|qoW8LSJ52*hB;1&_pX5@AjGk#Lf;r*(>k;ZtIs1jKD8BS4#V z3m`QUzqYj#Z>I_^lC5*0x3uyK3id&BRii;0hA0ebgTzL3U90)yQ!2vufbSOMQ3bE5 zOOIq~9-YHvrp1e}tVWN3m(7^`BNZWT*s8z5_>r3;U^j{@P|KDkF>FsZ4UVm-jiLs3 zBW9Z0bW@NzEf!NkQje8=2y1RmGZ<{FCr8HFaRF3{XNSSJ7gNY;&Yq?Zy_9Z{)b`Uv ztC?|-P`oo4z{is-x$nd|1$`vR^ketfnZfS(8dAQ6V^xeK#Fj|R_E5$d)I(%CIH_mL zkWKQ}N*@^^vvE@|fg}Zwk#%hGIw*2A*tm+xwhLH5yW8N}kBERp64HSHuKWWJCB&Mn zz#Kox4Y!K78qG}~PgH47###4A#bG$oMkmIw0Mz2HZP=%*!*3Z?B1#xSdC+KMf1jhi z)~Oyy(m3SBtgqR|+!X?}XfGm<3t3<k+Rj7T|6erRWo=?@)r9N>PN2%CPIb2G2Gaza zh-d6c$U;MhRMcmRW-pQw?%y;xjnA_5k6Zm*6>(AzU6X<1B30_Zg3A}4ts!~iWWaKg zPIPQV)7#87C7;}fp&*jGbm6`*+I=IyNU$c2LD1KXsMC%C@ckDLrlR>=MPOknc0!xy zJ7$uVf)a!q%xMG=Vv((44@{vU8Dseh0!2b0Hm4EIjg*?C0QD>LAgDw$1f+R*9gw(t zgOJ#d;lV6qn1O=F1v{|unygo{n6ahNTVQ|@u{f&!on>$0T#BtH9)xrflB@724{yek zH#g^KNyDlx5s*vT6_Sf&4Fvl)sj1$HM#(E?16AcRke`4x2v-U_(x3=zf>|K5tt)ha zG>mOT6e+MiGm)pA7QKhT;pRtOXEd6g!GMu2qh(_sF<eHy7YWGD$;>QJfX~xMbVFtf zDT%+H`)PzzKlGMXn9vF-iCGz<Z^d|)+|g<rrA$4FK^Z;=qf{CSjD37WY}U~`o-77t zB0=sN-WSJ+!`6XLlL&ecyD!X^{kJ^{^<bb;n7QrBWSyQ$23^1$dLL1uJ{~qf4C1BM z4@{^>8ti24bJ5~+y>{l&pc6!R*8*evHtfW$V60yZJ*L}*%s)c|f4brl1-1&74gF^M zXg@=_v8>;2Z^sa1>P#2B=A%XHeAU-@Gekq3T=N=2<4+Nv_Cw$;uxbzB@HR9<`3v?m zZMx4dFPXS(dzLKUBB`ztLMBHLyGJ_KOyNVQ;Hyf>k{~Q9MX_jh_PC!qwE9|qVLwy2 zJeNc<d5r~PtMFt@Q;4;X=4?MKmb-^2h>+{%Gj^1a5XMNU80w&VzG~U47PHcjZG7HZ ziLKt-ePPmz&G6)2#au8rsUAD^`$s)B?A8-8>g%7_>om##^1$hk)+)CcIqCTb1ctR& zgr~lQp;Y}-^bXwI@v#+*m77*rcf-7<lO8Cy9zEQzG^@p=l22(diK<RWTiGTO`w%`< zk+P+j=g>+@D~hI!sF;`Tdn+4DSO=OtQJt~b`5+H?ZkJWJWHj-c>QZG<FKy1Mh2qd^ zXsby=xD32E2Ih!z4`6|Yqv=>jkQ740aL)utXg_RO5x}HUbue%Z>&qwQWdfBsu;1r^ z7zGezYX02I4vt!!3A7XIipdM1gNgVc5f{xO?ugCY5s?h3WEgsZJIVD+>D$~n9P-nt z?y8d(lzjOXt`tLG=be#0z_f?$i}K@_-p<P77XfsZf5`>^&&0N{tzL1V==hMKoxODQ z#~xD$&W*7owYakc&K+L1f4GnAdeXYHq4UBmjGAew<!cJoxQ^lh672d{Zd(xw?n}63 zyf~3}d1m-8FT_aLEQG{m#Yn*pnnTgv%y3+I1PZCE+2i+vZ!E|13Rz0{s5`MrWqPFa z%k(&~%Z#TEi%6kEHu<W7!KU%3Fm8M0LK12^VQnBCo=zz}-@tsXl}y}T`40YTX^=E4 z5CUE^iKfD_38rHV&g?a_mUIuXbr!@tdZ~?JiZ!#R@Y6U^4$tU=TF@S;D^_nZjHk1w z7%=%kt^KagJRe-R>FEAEl5)~_4TbM|alXv%#_TWmk3-A2v28IAjm<)p*P*&@{fLIQ z<^pB#Qr=mFCo{t`gj>u^gB*k<A&pc75sYjZ@9n1$*Fs4x4GlP%^$~mLb3fx2M0-x> zrip--3IbCGT`R3@s5Cv<0)}jNX1N?*|16ss45;TWJPBgsD2syS3?V=upcMxB3crW* zA0NtvBKhw8e*kGfmcL-;bNPmNG3)c<x_BNRqlnYd<?ws8g1x_3=i^7Uhtn~Q?_Jwo z(=Ex!`bVj=WH1mm7?zo>CTb8cnFA6d7AY2j0asycs^U>V)6&iOmFN~v9CmkE<$ZJT zdNmFq!-LI@`>~TMq?H(3kw@d9-*?-JSlONl)403G?`SeVTR4R=0@8$0?iiR&LnK(M zD&d$!BJ<_<;|ysG7&<Ygn>{J&;e{=ta%XWm$L4=e-?tAu(KQOL&*bFJT$#*^9I@5o z=)v>9kovzz*66-r74kWg7}Flti|rA|>>n)hUdUAsr;Y<l1RlgwKvPHL5;+v$O`m|s zYy`CuK|(?PIAClR(8de=ZGPHa!ofyG1`DE`fHXk8v4(H8e-Zmv7WaGOUzyrNgt<B* zcm|GKCNN2jA%X^5jC2q!LQIK04*hF`H&dv2MFvRwkPj^wC($iQ)?E}K>Q4p<qG;2F z6rEMiKnh|+%sE|Hc1G7i3X6xjg(4c}V`j1m!vf{N+|a^<rgoE1*Cm&Hfa>0D!Z$dP z0Sre;Fo^+z6^tNG;!~~-y=**aqm=bUJ#b`O!<=sHjv|w`?z1qg%*^oY!W*1QK;A0} zyp(5mlaqAQ#`x76z$K8(n?~<R<3fb*3WgXOqp4{EL<s6FPMR?GWMM)Ln$Dpt<`vjj zLpIn+!aER9DeF6u3--)e!2$(rxGpgi3@r>v9y->WAQ_AVO9F_A_vx^->?B&lBGb^t z5~~2p#qn@$6m&30Q|-T4ce|UX@Sy#aVJttjDoK6z5@bV2-@yd>fitXu)?(?gZ5X;G zFO^{ng8^!#B2^TwCEO-&lQ13*;s)F9aL~n&kSXQ46_}*z1Dwp!I3yt;Y16@o8(vDJ zLF(Z-U$R0c8Ut&BvY-<UM+N{Afa(!Wdyl=Vt7n@h_c>+4s;D>u>G}@|^vsr{$c05x z!w(P9MM&ZFKU1~o7{)CmZR+fWHBGkLZMNHO#6!g9e=1hBbfeUlt6!9B+xsK)z62kS zQ~;=GVYgkb35LeNnOKek9SO1F5d57U;ApZd49A$S4#)0~Mk5qYv*M4$_?(Obi8-}T zTe5VO5~E~AJ;+!>cp1Gbe|hlod!AtXlVIz86uf;50wzbZXwu;NGQ#Pk&<gl0)@8q0 z-Pa0{fgafT3-#MW(J7S{0S9i3KO2R39k3ml>O%G>Nf5SRj5uP4hfM)bO!u&+f||Q9 z=MLO=S1*1LLRZ36`Jy~!Iv6wE2n{-9YHSS1MEB5n0ALkuHlhpP!Kt7POwIf#Hz_Tz zNqxqEk(6?`-`hcJTEoUBRiwYos`xV#B)ws1V2?w?IH*`KVG%u<b}6?{Ru99tcw8!X zaHcZiR8Lu!J8IR#fy*Ok;$sc`_wEq>i4(I+r$`;umS&9^Z>4BN<Wz|bt!#*0A!WqL z%(1vwTCAvcQB1Uk(F{bxW_lvvXx%8a%Y>2*ae8>rM5sWkVbQ3F&|)HuhK{sD;*HK5 z>Fs70DELEEA>Sf`XpCPQr!`v2W%co3$$`R+mI=L3#}?y7MBc^h6@%cu5UeX06U=@j z7FSSQSKb!@(56Kqmb)~3MHj?AUW}*iow005z?g;gT1VBgtXxtizE+jwxGjiR-S1oD zkkSteek#8<d?ZR)D`Ffe2wV+>uwn=)VjPWyusGC|1vHVhv~3Lr_sN1B12mwLtV<i2 zOa#%$7Z?aCcV`$w7|VztP+PonIbo(67%+%Fjzd@*%7v2P$_TK7jR=v07=|#Vh4&}w zq89ZuQsgFn5ZiKt9I)s*1C<b>R$`d8_Uz$^iHV4Y$LNnLHUe^+DpomZQlLu3g+3eB z)Xespq7-w2kr+-ynrAx=X}Av{w%fbeONiFdVu2Ka6xH-FM^B$2CK|+>O3Y$%Xl=Eg z8s(lFOqSk>l}ZMbj!!`00uOi`@E91zCm7yEc!*eOBF8HB;!J$S*P^}Ob(NF1wPo|; z`CoJIe?yPQwZAUf*2VLSMK=DvRIxhe+3(s{OPb=|&ksI4|AfBntGng_u=VxSmD*&! z2)iP=<g*D9f+&l7svOhk;;MWzJJ&AeAZ!@Rj?J=BOoI&C#3i?J7t}_Ep^gqRZGVsN ztC@}=c+X0E&Whf*f2Rtx1Z}_=JYp_ZzbaOXdi8^G#gT5v;%d(_baLBnaNL0w@GPN= z)zj-uB!ce@AGz_};WwL>u6%qpJWWE$U7pr!O&}oD!LVeAf?`v&dC!Ea-JH9-mQd4m zR#HSby~w$zcX)(YvXrDy{V`W9dTVnve(UL8Df35wMA(W#Vj=#T4wNk;ZZql|>Sov* zfREqjrDuifqC3sbGDAmTf(Bm_N<QVeD7?2MhBW*mEI2J{?W<0e$T)U3Eh`UaYg>f( z0GDm{c0}ypxsxQ*s;Na^7WD|@;j5oP{;2E*XN-cx$3&rxuc~!tr0Q%?RsC357jHlk zXkNfDD}m4g!qKvkMT6_J(T=9t4?m9{IK%6X8dnZ}wQg7}nT(2Dkk+`lZn?TJm^MUM z&%A#StL5xuC7BjZ#IFEg#50oT-_9tpBSXSeGp1p7Fp{x&NP&f{B_P7&kSm4mlDVLj z@rnXO)ylU+<bOFvJ)HZ}Iv7)PW95jCpFG(N@n_92yx)ZxljimAN?9r!75dHTvXVK% z6;64M;oEr(h(PP4t#q|FA}cWJi^Rus_6?KYGNUywl*{j4<|$t;3wEPyh_J#DVncqv zY5gMMV=zJ*<VJfkBcw^Ud<G0`Hq78IWlK^pXCn~RoN=d19(kUf&c_4rSE@ul@Qg&I zo@P#sNY0f-sroU3F)5$4D>A7|Au&P(D!>p!C)hAKXhmoQ#z^46NX$khN??#^z=X)5 zhE9+e5HV0iLqkHdBM_BCL`4-e(J?Dk0Rc!vH9%D}_`zgRh8V)c#Ela)1j<mf4C{>5 zYsJh|!r3vcm6rwv3LO30j&J0=p8)XS<@3luuY+eng<c0qMZiJhkspRl#_>;re@Q?= zFQiR8!^AI5!=z3q7YVaMY2qETC^8Df(#Bz;cMnK_R?Wj;&ih4jr<O^!GcyR47clXf z5HO4LB-k`ef<jpa$9PR&27YB|&`laMRcd^5fe!4~bCBPYEbB98tr`tFXp3c`MWjP* zn}LNHF$RjY7W+?s2KF(5x3I?Y38<Nz8WmZ#;vySj;HrdB(`_)=HWae99D>UB?74-Z zYlmvcSYDo15-E_#XK-s>P4)@`Jf6})4VUMwP*;C{TT$49qxBgT*Z{^CYS5V~xd`e+ z`w|1Ngf|G$8k3!b%E-1J3`{gDxBTvw*)^vcZ(o#5%5Pybp6~7T<<gG3?(>uJ#RP`n zRm^=N28dY$@h_$iDIXwDCxF(^QTmkbIrPje)Qp>!J-RNgNdoL2f@EDq;wuYqGG!>< z0N4#jV<3I$qd;KXEeK`^Y>8uracjgwT=S!MfakhHHTJpar^A7+Buxk!CjQ&$n0|1$ zI*Du&n9hRnTzn_9Y(I?3TM7n3NIpG{1fBgDWMgAv<;4&$A1)Wcv9T+=EuJGhEx&=_ zT+z_VX3Fcrvd-P5Fl=KROG_(o6;K^cPWuZJ*WKL$e+0QEnGemvrkG9~_SmDQBsJ22 z@gO*R2O1)rn6A$;fq`szDj1-Wgm;BdY*Mk2q=MC6krT5aHH8t8#;<PeiGEJ~^RKg; zrz+-9?1NJZj+>ANqj)XJf}o-duf!tb3&o)%6Jb2KawzQd*ms(aWFH{Gq1dL*#P!?_ z2HlA?P{_!*WR3ZdQ!q5Tn1bktMT`<~=r3)l#(J(Pak<mo6si!sOet4C3p*MRzmQHC zmRMDrH1@lFaL-b=m@M`&dtMh~`*589ccSN?R7jMG?9ant{A?{5gv=AKyN9{@gyQLl zAD#HY+En;kzngzfq&uO^0sX3XS|(eIp&sNjEGl`ngS$16CagH*oV+?skwvlOHhF!> z;EhDv-H*CQ8+59>`Lv9g%2ntTJNb5=IA}SCC3_d61R0D}J;Z99b22qeBSd(4;EdJD zx-~pe(CsG&BzO3EaL=nhK2BVo+O4~*7~yxBG&DU7nx7(JHf8bTlN!#`CKww`+Kh%p z3XRPI=cvH~k_Z$OFrk!v@#-*gWP--U%`|LzTAG<ORVg;Q#%&eYZg3o}hZ|FYHY;l* z2BMs*tqdj=SWRlllB*08CiiH_&Ndoh-Flt&=B8L?*EQ2QGa-@j$;mpt{B1|F`#-u@ z+YBk6V#cb>?w072nwZ+SYoSHRBw0KH4HzIOV+K&o*L)YZNn78eI#v0smD_?8XSQm| z*|yxw3T<gCi=K559gA*ANWf_8Z#RzTmn?@4(5k%l&MRwXv*&xwn;5#2PD`j6YC4MA zkvMI!;OJ3%G1%dwPo!)~K(Hv?La_;%*wVR@M~ayaOAtv035aPxT!sv15KQ~xU9QMv zq6nKQC>d2sXb3OF=Z&*CgIX#{xNclF1)Vn_q8n|t+ikoDA(^S7m7%Rsvaa>swUL;b z$%hI+tPmy{HVq2lkdSK4yk<F*1<C^*E@)QvoLi;a0m8RTWyg-ju-`<@HqNcXAr>MJ z(KT<DMP$0AWTz0@GexGaiy*QC1i-TxuPMwj9^vh$dPst~K%Oe8%E4fH;Bzt^#ut<K zy~FAmJOn(bKy%soj6XJGP8{1{?)EylJdRqnbJHMiX2hzZ6l(na0>~;p5wc@EoYMPW znFjcR2v$vX6=&c_y>PpJ(RPA|Ldn43p5q&X*+fHuWtqF15H5lrc&sfAZc@?X0D^+c z*d%+ZJ2OO0xg;=iyiKMhcUX(!3T$;cOHjC!3oS2q=>&$~?8o3xaG?2+Pf<N{Z+!6R zQOHZPnvy16xr#I&xb3q;O01C^d_z^t{M#Q;r>PLn@p#yC>LjDZb;)TDKHC-nlBfkM zx)CP3R{^+Wkme~zw1jAoCtNhnzY-4v<MzM`2nPO$kwQ7)iKEfnJmNau-v!=qHl@zP zsF8MxR2qdQBB75w*pTpn-&|-8<72qrzg+nkFkpP6qG;?e?%7a->?$}0Fb0M(fHfiw zXw*key|H{+_7#TM0&KwT!^MV(E?gXK@zuH_#8(_Ky%_pnPBOds;hYvlo>9RN(B(vs zh9qKXZMN_&21=VvIYG${8}u4CY)vC_qME?%EsYNbMxihf^|?U=nao_=*AX0Mrv3h} zn};NKJTplm!i*h`RnX|7+h0elYsQ?z&l%t0TxDfpS#}PFHIZu^a>D7f<C`YsJtcSW zv9dl?IB(v<Or$w-weN-;99lI36>>?CbSNGQX#5DHN4f;-RM>90xR@IT{jOkMv8~I& z4iZd&coRDGENo1+-77URQ4rg3yp6qA7H8cDkBI<GjYJL+jzt`VV8+Q32bQu~YH7<1 z!z9YgC^9h2%N`EUkFU=g!1Otx?KyKa7(q;jN6+LFe2iEqf*|n7z?G2=h+@Zi8(+J= z@~?Hg(%Qp`5{<ZnVUE%qMLbarPOmLi&2dYsySvRh4iNAO^?+Vk9zd=jz$_|?s)&T8 z$67TK6zMG-`jJL_eg#)~6j9#SQ|r`()dIIU8>4IF7ap&0FKW%N6e*Y=5)?uyCJ@k* zJ$}DIK1}N&6vG$wyX~sWY7<Aufcf{t?Rnxv)$np6H||LTMgl{U7zCLn5m_NV;Myj3 zDZF{)()$>sNIeM(RjP8Tu<I>eBAo8vT8U*rulv7%?@sGqznqBEA~+lt@H~V`<7Q^H zsS&7xo3vscnD~gq#TTFlk7o4==%``>63r-r7m@fcQg}oK33(L?Qo#yE_smF~4OaZh z#H%{oy3!vrTa5=~XUWrs7-HjGZEm)$w5qPMLr5p$b>wf741nC={D6z%YJwbMq2a!| zWmQcSRaF#XTv8<bt=XY2;h$UlEcnnyhvqrGm)Jpj3qf6l4Z%n#L+luIJH_f!2x^ej zCwUK4oYc2}fxEt8rlZvHJ-7F-*!~~{NOEKoc%#8%>wxBHdiJ2T3&v(+)*TOaG(3SJ zV4b?*!x%7O?35dQszc>@oJTJsNMsoywx1W<v<1+Z&=8=|n59w0iGLR!yju!CY<^g( zN{HtTM6REE#sm$BKRhs|Nfz<TAbiEJ3jCDt4-C~Zjv<Hza}?V;2C+nl$U6n|<$4@X z+Qa30OgbB#XQlj#pEI!SpRA5+5e#?dESv_(P&WgVYml6BiC}rcUkqgv%0?^9vM{Fo zJ5dOz!~~6(mzkE(+Tw=v$3Q*mjM!$mb-J4j^N9y`<y=otti!&Kzo19k1W#4K+hbjN zk|ScXMvV!$JNft`jN$<UA~7liFi3=TC{2c=xhFpw_CEeC31)595OO7?S|3Y{bZ-cG zjo7EQL1f#bvjTv(;UQjq`uKzCj*K%5x5oah=r~<2*KmQwqYK5+iNY;2az1BcN^s8A z$M8N^BZ>DOXY##grRr^0#>kI_N#;J`z51Sp=Ol94w#AWqiS~nY-&X_abG~=lbUB|B z=YAKzxO9s|Me<CGrY&nv*XwuwE&aI&%%<Sf!!qL^Aj!r^={i^1u(kv3t|T@z+hZQ% z5t3ZD0B+X*VFYb4X`vx7^f+M}kifZNo1#Te6xTH5?3dCsfYV_@ot$owLq0i|OE8-5 zaWV2Dm}wiwSjrX9l;JFz#*u888HOR4X^Jt5A*Nm1zd@|k>5IQL4P%^Yn@3=iSaGZx zEEyMa_Xn|qD$C1qK+a+AH*ZLkMA3-#At6fFmbdzUjC)RY*T!u%+o7vc7vYf(i7V$j za2e_b#v`UY+A;~I9*I!LESUrbk*sryVyYR%nV^UbGYp_`tBVkTQkR1lhh)E96OL+y zRK@AiFbv`nGc>}YkTAiKhu1dMe5m@f&OTUy)*XaNc&F<K>HEFLdR=YE<=)=SjIw#v zJsOb8t5e8ju_W?%;-trNNmSR)9_d}GQ8)=$V<?Q~hItuqancN;*{pR4PWa*&2BC24 z8iBYmxujv8QC|@WgkH`yN+u@ZxN!^P9Ka@)M_(G{VxgWO&KXGSQ;H@gOoled>~1tv z#@jGv4{8$*h*TUtl-dwU4$FvCMRPJFut<lYK?fj~<{1f^QZb4p!c#Qj7sh#>Xp}L{ z0(n%paR6iBm;$zD5{5ZYjLkS}8%Ic#aS|}bw@IzDsy^Y6x7k30Bz6`ggSaMQDX!*l zkB$W-(;(}RvI;2#M9=F3gMK`|9T!Zt+VG}ySy0^`DpBwd`zN+hB{j^mM7U*z0^wNF zG|U2VzCuhjiKhX0Y?r5G`(gOVtH^x)miQV6o_f}LT-Esu6ezaQk4M`uQJ%4u!sV!f zRN#S(gLMM2bMMc;GyCZQ6Ukf-LSqP;VU9G*A=4`yLyKJ8EY~v4b9Cby#o%xh4pyxo z8<#MjZF8`%k}Z~qL1q}n!28w7FUuvwE2kLZ<QvrKm}1#EL_uiNC=6kmh0{Fc8>Vnv zGmTSpalUfOhB3@FiUsjB!a7EH#e&Irag9TO+$K#&rRtBG{LjMldykqYG_fs7Wra%V zWrTenhFEWz?g!%(eNJz>#)PJxs&16&0;Cb@1!U$Gill|<hH4iIg~Mp$o24QGd4g3` zOD2I>af)3WaYhwFc*fy$EsQMkAiTs_2;1K3lmLjl<^%_@ck6oKTc&PCV4?DRyU%Ms zUBaR9#S=;HX4aiKu5MW(R8wfJm<U3ZuPd!+nYfLmeq5TTVeGL&!fbhFt71BwE^jPE zEB7}AnX1_&50--{s|2L7_LKG3IOh3CbPu5>X(Q|Cxi)IdhgH_BS}fp%G7jDaV^OKZ zn184mrznOh95K$OW(cXE?O|u%%g0B5CmAnSvryPzt7ohfCp19NF$klDgJTy77mo;Y zGPsD-(SXfhX2Ee8Wj*9f5gR>Ij?<{uJf<wPFURjU;#Z6KaYuu-s?k=r;C?gZN*V?< zk{8b>-dkm%
=zDK@R;1~`*&ldn;iouEi`Ht*qxzW3<nA0^^7HW`L`(+p;KW2Rw zA|8?KU=h7!foPI#;gh}UnfbgwsS)|b58Nm2m47?*!Z8<>iX1!tPl<dn#{QnViW?b| zR{}!@kzc*SMP{*qV!*gnvjYAIWQZlYs=($OAQYKS846*{<~v^2GA>=u**>o`3~Wh? zAH{<aQE^iUN(6sD43LR}qGgy!g);)20)mNXhcGeFV<m|wkdg+B$;28<5n4geK#?k# zLQ<hb!pG=N0B=7;%?qLpEQE)bv%Byf3=s0v@A#O|!HAM5Acz(v2?9ws<P{w#>0lxR zO}O9^%BeUrh$|_WDl&&=z~CA6bB(?;wFNMiNC2THqJ^MeLj|0T_!MrT8@>!}vWjYp z!oi~OYS)yLq+0H4;_##{uKo;Jy#@nrgrpZngKE(s7{)S?P%xZS6p;d$C~&LWMG8bv zMwP+_7zi05g$W~-2}LC&O27%UfY^0@r_<z~p069=r;a;s2CvN!+xqhk<i9V({ZFau zHtqv+)Oc&^|E;oKdyHMUoTPcTF?AWgg-_*pFzza<v8LqMSi^d9LorVa)&3AklZIEB zRH;c+s#1!gl&V=ON~<AK7L=)KiWaP?RH{`fmIw%1CK!TYm|_TEXn}xp94MlSD58oe zqKJZuD58jhAfh0mAfkwZh=PhUx5?nym?81|g!6Pq?Y+T*BJC3=odd36jBbD!2UO)8 za(N-!I%KCPc}(P&NKMi}nsr4u<&Gi)NE|6o1Vm5^tW-M30aWZ9rl-K@PV*<UtlaJv zPT5ao&gm&we?R6M$AoHrl=3o39y*q%snB#BEGLnIy>?F<d-}~oCTC?I!0wa0I$RDW zwzzFj!6?s~I+?Xcq}J<6^}j0;J72=w^_=F7he+$Ceq@zP!#@I|F$f1~48sNqI9jL& zl9<J#U8r-rEk{wC)_kv#)^2hq4>4+_<tx@%@JljSs};Q1?6ZSYti-~YY<rILGeOWj z!>D{wLlRL!#L+-RQB6b?Q$<p-RUbq2xt@c>J3D&%8#<w|DGD_PL8t`=CRp7HP4!S= z3ejsODZkh<WVoU?JkAfUDLjuO(m`^MzB~f>fW!q+B!)tqBr@06Fvy1`h)or;1=k#T zowvfs)X7f!%6l);Pg&(=dYeqsC%U8gp1XO-_gt>yYl+xk_nOM|zj}4qy6ST}%sHKh zL8xy#tlzDyX73wRue9|)Y1(F-NK7Fy2u#yB+8B_=GTXx^nBfVYW*Xw4aZWHoT`^3e ziQyH&Rv`++W6K2Mfhhri75q(CW*J7<=eGV=iO%@d-#kv+tnNeMlUgiPSyHKL)v8QG zwPi^ybG`pfPZWtBC$8Q29}C`o=JDlozDFeRx!xrB4_T8ljFraoFm@gK;&GKcitjxp zZib}z3ijL%mqX0+$1I&<cD$>x@jQ<7j+3yj;fIadWbRL)ljIynuC+-Tq@9~0*)5R% zjuW=n=Np@uI>*M|35Ie6t(F+gG>b+dBBW)834R9TD8ZcR#`(G*OGlQXR<CByYDU{` z2y`gj39iW|FuxT?i>;;~3lT9-hTET&o>iV1U)0|Q3mf;nX7t}tn&D5`S*=?7QR}_; zm7LJ6sfH9^gBRX@SH!I6f!=vt^Vd&m9SZu~9ErL{EOBOn0<g*K1I%-P+9wr=gGl7^ z%!5Qb<BlxTIB^LXT&N=WSb)~}rm;YvCKl1aUZRmj91Ffa7fY~r$HM#r*foz6=x<Mf z%$_1m?w8<uuLD!CPxFn??>$chs|8f5^1IU$;cala(9ykwliEs3S4zDLlGQZqyl&!o z)4<K|PFk?G-F!#Xt<Pv@;Cl%?eRpO=&Pm9xGqC1xYD3yH_+HzQ*@@9)^NMS(tC@@u ztZH^yJrA+a`Wu{12DpRz?slIW+aC)w$tx$BnsQ|4dYO}QZSKYBYdwWH4p+4KoJpIF zx9WM3&QHX5Ti)_HME4%1V$p<-aJgw@a$qq;Mi_RC^GLEnRV|iGGDM~UKY%&&9Slfv z0Lvn3hcib5a||b}@fJ)0#xYFcCna>z8*Hj7r2`b?nr0zzGziUgsiMur+Md>8>IZe; zb$nyB$;Ai-*aN`pL{q=Y>zR6dO^(CL_S|hAH0EkgvAtMroX@L<dzYD`3Zf_4ow`+L zS;;pyI0w}|2XXG2F@g+9hwm@pOD(BnElIuSb^C70y-xG#dhZGLpJ`Lb^s`1v_}?3) z*eBxe50SO)G<&b1=6ah48)I4TBhKV{e)DUz*6llwS@+u~5*h`PdhJJzqa)buI}bCF zx=3W*4Ic8IXVUlF%|t#oE3o*SO%gd4tnkq|oY;w>_}|!aGl{B1v)gQ0BhF#ZHNp4D zy>fP*S%y$I%VpusD3^qSBs}i%((k=vxcjd=H{E3LD`RV=;x;>vf+|To2_*4h@#vnx zo60`xQZ=kUx>*V7A3M7C9jDHpf%c!7=XIQJ2@~3-i^?(g8C9yK6j4DDK@w3#5JeZ9 z=zGQ~szQqe0_gjuDRjDJ!m_RwSbQ8W6Nd?e;hmLedOJog;`u;JV}ap#ahhXEsf@-- zOpI=ol8ud^Y$j%7CUWpkK6Q?{<PR!w><hho?>+E(SsyE@<$BJuVCyt_b~u&c9b~R% zke3w+;gV>R%}^jZB?lV-O$muxGS~qZG@sFcf)JHv86^Bcn6zkw^I~aO<Q2+<rLsZf zmW-O4Cez$)eg}-zUCAWqRKk4BNgt8*y$(k!gw*mdHxF&X-b*KNb>xuL@v+}o7<-Qs zw)8k2MSIOjhPE5Y<!fts*&APR>#&oTG56jS;C$!U=6#+wVCZlYzv_?R9AmUQZu8=1 z`rlLSJ&%4Q=5rstKDJ4fm{u>a@vw|mR}3+Qb&<xr08G#nfU&`#7WR}k-4HS3QN|gF zfsY$um?#+YgiCe|>}Fk_%fy~no^usf7{ZofS*ES3r3VY>en-BZvE^amYjMjqmT1ER z<Byu~{MNuo$yTK}Z8`-&W2_$Q(;^=Xxn%Xi*Nm9*!nl>OD`lXiw=;)nzg>qelXF@e zJP{eM%=z63={U}3ndLr*mUP>j<9)UuL;-<Dong*%gjm8Zi(u6=jq-?Pl?-B1!3jjB zKobn1#vyE|Q~;5d8EA)unsAtfAmfl4Cisd*@c>LHj8GgxaSQ_xxq6wgPEpAuG0ekE zyfw@-I5rH!JjgEz3B|KOjEJyaZ<=OFOf4BFFxehmcGK>4+7sGjo&3!c#*Ff0QY<qt z$*E>#GEb$o*gZ+ku2$DdK6x92?6}+B1a&Djr`_duO|OZ|@wS@BU9_Kd&h{K98?6MK zXOd?2+)R&CYjneihqJxiWhB{QY7`&8!Z|BO5SU1Pak&zGF-9g8%=1LIlBAF%5FNG( zg~IMBP`Xcm1lmx$T*IBoG7OVI!6GXg#PdL_NI1o!{M9Xz77St&7{?$mPXi9S<!?Pt zk@ym)(&BrKAA#KMBdC5@e5V7#*xLK<Q{{CH#P=R2VH4a`;4Da-&w0rck;*5`{EtJ4 zz2tb_<HGbO#O}OqxtpQ)oUN*O@dKmrpAnLYk!7EF!SogN`keL=rrL#7V&SlPUlShf z#oB(`91N<}-OoPn4Z|4348sF8`9PvZqcIH<BMgMXILA1&S0SWf9HU_66{jFl<nNjU zqy|X02$bPaptuL8Gn?Ks-sWQ8N(b~A`aebHx6brDFL0cbm50vzkB!$nj{);5fR;Ly zJg-7<yv<D{?hIt`vvM8tk@?@1$l-maA1XeWKNx+&iaspDiYTIrGukzxA*xjrtURx+ zjT~-A6P$IOX)6OXb>7S*;U*olO$Bf|TVda3OWMBw;$G|5Ib4bFg@%dDFvBoK6i~$z z%)@NYAumHqh)yjQ4~^w@Cb_`EIMHH1M%3d`S!E(iC-Kr7=jLiMk;J7eshb8EetqmS z;&<6_zGgX}o_S><gpW(<SH^yKjqbNSu79RI;mc(79J8cq6GNJ2nWb@sDwLXTh=|S> zvI}OCvTh5$dE@76o10|BH9qU=9ge%yM#%eX5Pjy8aS?h=0mX7tmMnuT``_W|=9y+u zNd_x0z{$4^vxM)=aL+N#qOsC42@0j@#x=;yLB-(^GX(P_!V1ko#tKt!9T4;+8D<eU z356p<1AK)Bt2F5WCEuKc1}F<Sj#EU_Fbd#86@qh?p`d7;0viG+8>EQ@qK9~#L0N`@ z&U2jG#qutoAJ9!hk-q0S#l^l8Im+Jg7{(b-)AP17JVuzrl!~;$oCmV;)Lwst#}8vo zp(6&{V`zPni5!p((^TphCLuh}I)=gD6>5upj8TMxEXy1vd@@%G3Vyh9bIs#qvTzvz zu4I>{VG&Fq9A%FS@qOkWNU8Rf@2W8Pn_4I7(8Jez4!b9*Q<c^eTi|sSwfI@1)aXwF zzC-4FFXDI~Gw-^cN_{HBly)3#&Zp#XIi16_Gj>@y8(faq)^2=ECzfHt&F?xJJ(5pH z!-uhFs;zPDi*xukeO@>8w)^w&$cGY%#D4v(I#B_TSB^X&)QWz>L_ClHJf$*3=NxRr z>1q_GMq!baJuT)UaVIHxKzMdwJ}Cl)Hy0RDM`0joWlp#<2XQstT(#uUWNBc<O7};R z*BQ2|7RVkXOu5dgeS#dmw7hEo$i7(oa3Is!MJ5R9M?+Df;uwMB%C4){ep)a^l4`GU z-h3}UsQb$ryKG6fmEmP4TDmNYMV2&*SE`fK4-?V^Pjs|9CXpBrdAR{s%Jt!Gl;&&d zM;|<W!jVjn3}KNyicITn3Gb#U@DB>{-7IU=CT3A>t(O+nx7=)fj;AA3B`;TMVA;5K zTsgfj;%M!&jW-U~NS@S0z8`7u8it_KYx*3{6YOM~aJI39@f=KQQRGAJ<Id=GHM4Pj zvj;tGeZQ9m`CGjj+5Vi+dD^O~*3}r_l<`w#WnK!^XAAHn*va7mm7<vI8brwUjUyc- z5$Ul-qRcH7qt7V>c*j7x2b_)g%TV`8NKjEt2d!>2LqxXQdvzV3F~iH`bU59C?UT(C zc`Tk@0UPX55d|SYP!xTMGD?Y}79i6%g5khz8YPi~j8rwvQO25AO+Yhj5}D%{&tbsa z(EN>ZJ!iao&m+Ef5$2Dtxr2fn#+5>?FLFb{_Z?>ERO~#@f!uYScaC*K=Xj38wEM9l zdI8t<`yQpMRUQ^>NW{p?*={)GQDq?uicmSGIgUV42?QzF1!2@nuFpwCP#{p3_2K(k z^lqEn?gw$B*Kp1rc0PxZ9(4}lg9uC@3?tr51K>&9wOnum95I41Mlo<w`d@AHKMThD ziu1h#!1kWgnZ5Ep$IyMp1Lk#|E(hUo4uXp%BaNg%g!)ACbx3lamd?iutameqF*`$w zPT{zYbM3h2!g=2dW1+Zg9FbX07RFDINc+y|xzoTTVfLRh*KrOp@UwjFtkKYUXPO?B zs-ACeykB;F*wRU<NIWYO3tJNl`YY*+Mn6{!Br*g;fP_*gq9Kq@K?-YlevFP3QAHG5 zkjP@-fORb>VMQ7-Ob9@TPiQ@NjfbV)eD7t_r@-iq&E=Sc-uM{_(juo5_?@S)*pIlj zmO=}4Ne(Ay^l5n>W^73l<aypi=vT1nZF-*DdwRa%;%;ho&iw8^Vm@Sgo|Dq<zIWqv zHK$>~$<#O#uugYfoAJAT(~@<QFB-&khPO+|%*{B3M^}<KMSL3Pd}<e_fy^wCnr2CC zc&Y-vF^(x*&LB93vE*_*4o6qDZ)iJ=q)$5JlFrlD)v2Xbea4J)NQU^>Gl++q1I!U| z%lcdf&_qZXqTw@+IXx@F9pmPGPhj`n7el_y_mQ+@=rcJL*>E@=L$aY&Rk7<jT`G7P zE7v?vVUs0Ojbk{`F^nTbx?ZhQ7b6T<XB5^Z7EeHspL#LUc(M)>Q(V<FPARx%9OEF( z7O)n8GWQIT#yPfZ6^(X7Ho<Ig8Rap_Uso>(L}r&w(*%gqE*44h6Q>5q?YnH;rkF~z z@IJT9`5bQRg+7{Ud`?%Xy#T^8$5c$mNU~NKCb4>6mQ2DDme^davPN$lLWAdK`JW56 z&C?^eeFtgSe6Nh}G<F#t<B8k@9SIA37d&D!ba5cE3MPSsVixd2IN3dv8fMwHM}TM? zC4?CCQo|c~3_Zi7W|fX8xkjktaM~-E?h(M;$+g>L$(e;H_E==ePb;qBbu>=HHV-?U z^0yvRWcnR<NzD1*k+Hz+yU89?05*!H(rHW>*&`qbj4>-Q8%F`hF^p39$tshNo_i;V z<J5kcAi9AlN<gJjfTd`qq@aR|sDs!xegXLh);=Tb515QlHbQ`yzATs}b2P*wF^yA{ z8iy1xLo8Q>(=^#F7R=%TQ$(^_FpJ{B%PyA8yO{|cE#OEyZ%2I5RbM#F=K+;fMWZpV z$3I!%9FXVi;-8H~g#|<k;hy*GJ%4BDbLZ1KKyM5}gdrw#6YN8pJzja$e_yBR2NBeE zfbnBcDzITxp{_w1q-TgiZ*@&NuT*_^g&-H~r96)@C&R-Fl?QpWa6D^R4{Ax8QM+zR zM97*(#5FNCe9pv)7*C`L1{5%;27w9rE_49Qvw&w|o8`k;3}L`czXw0nw>ejqq>{s4 z9^~W|9|M9QbQOe1P-S3Y2oQ!4fpWNVv$_mJ)QL~%$X#t(nK!LZ<9;s|{im^n2Y8OF z=s4q!IM6ei5PD+d=*ac2Jxa#(dcGPtTuG6VWbi|T;c|_T@5T2sk+g-9C{!$!;2|qs z-LZbitp*|pP?$*bSV?w}lJC1d802o*WP_8gHvOFVbFaYg!EsFT%d&RJgQBUTpU!$C z>OJq8MO^H~uqV^|5A1`NqBtQ%tQHV|d2IS0B{(1-JY44C!*ZGIegTMQ$8HidDK+ic z>4@6ZR?5GsA1znc4f>O9+Q-~ah3ZC!1|ApSuaR6MH@iS#WYMP0hGQDn5ias53&f19 zyq=^po3%~1p)HJlP;zatsV=6-;M)@>@>(+Hb#_4g7ZJ7t5@cJT$-)qDvgHOE3*?0h zh4mFGO}UDTCDy8~cBz7=a!ruc(V<1iq|vaVVZf0I?vf6kYTIc%nMU<>c3?&noxmFe z9YE~Km4wV3goDW)?dkO&Zrrv>HZ8H)Z%(2JC^W!nLgk#Ga9si$EYwasI&|93QHq6g zK_$|X$s@MgY_tSakT)bATV>RSX;AQc`|mS6&A~Pq)-jh#brEsQ5(OdLKn}bc_xEMO zs=qNimBXM0?*DQ~lNdM?pyG7#90}&)l9(H)*;%4UMn;a)x1R25nGbWwef;`ylnHmE zvauuUsfHgs#Ke|VJ%SCRY6tI1BMC{Gs*?#x!|_AR&NCssU|^765XZSH=!O^~I@wst zO`{VSiIkmuNOv@XG-Rm~euv<B8{b>J_uct;WsGo>j)~GbMtR^J0)R$NC>rC-hGBqY z7GWC(2(XDrieshVe%EeBlgBKQYJt5}(oCBhX|H@jTP(n~B*8FzFS02-MFvkSi7=BT zJY|#5wLJxe!3#;dUnkI2j1dWvnLIZ_DV=-I5^?uT)d!*{*yfyoJqMDT0O9h9L%Cr_ z@v{Avuo^@kC_qCo1WW`G0#OI;xgkhd0*u-ax;d(BoFMtc%yr?jG1p5W+k4J=2-b@o zVijRYL>=n%U9k9|=sXP_l}M(EB?1~q17S3>rc9#&g(f1yMVgxsZHLs?5H12fbcl7L zH-Al~0Ki0v5<YwbWu}Ps$L@VG(4ApGX9o_}U~pz2S{74+j-fS0H9Mbt$<Tys>OoI; zX@TWB3L6~?KKHxACV)*WtY&24vja{X4DWI(ct9hAppZn-7>%O@{WA4Gvq`orhb>K3 zL9TEx4+4oD^^kazy0K|(hk=v)1k*gRjAkS5$VAaHhZ7_<0oL`S*$Aqd(KIXjjhJQ* z6zS(oi(K|%$rF*3n!G(&lUZaob!ua3_XlBAqQtUENLzJC=~$gZuCS1*rAnljWLIJd zB;$xwN|8{Vzj$y@0??1O4J#5!5?L&=86x0BNMu10$r93~6f}ht1qDn15=tb=NTW$Y zl|~r|DNcvJf_ZQ%sbY`S?GT_(ScnN%v{?0}F@f(TA1n@(<OuyM4mMbOF3dyLmMxZ9 zXoq3Ok*Y_S3;-|?$P+DL)GBroCuu454Hzo)gxLa`B@@>r;gs=8zGlferg8gIu1)kq zAv1!>54Vxb(gq7D>h?#gh$f4%+(j*Y*nk-kL8Vgmn@tXvf?{L#JfwMCGkVq-#lsk3 zic%OD)m0c~VVPl=VUb7}#N$;}Ra9Y_`x7*43^FK3F!e{eO<8*6UD25RosoqoZLP8q zt1UB5%@&EFDt~=Hxi#d6EB3o&dAmQsPXu+HsfK<iD0)nK0DS5y{BcxR#90JYm?i-R zB~}PjK5HVT)KKfJ8q?d3P<!zxLXEoSREgb;bVu@sq3#Wjp$<=^@kGG;EFF$OQ>q@J z?H=%miiD<yN{);kbIa<Zq+li!x48r6k(|iE8X{0MtK~adRXfQ8<AjF1Mi9(U#ta1u zgq<A+z3CI}7@sWGFr^{tkK-s~!3ez!A|cQZBB%u-6mIe-GR1e(G3?)edC-L1IKl@) zQ8EB%Lt|vYWLY89DotF@(ex=+TBWIEN@5BLAc%m1379F4XQ~KNz^4xIaB#q2^^V}l z1|DROv>JtoQ4fSV5CqjVr5YG&C?d4P4CY`#5*UjN9;+e-Fgh9^Q)7{0G#zF`fjAsU zQIW9ZMWQQOCnJymTnEa;Kn%xP7AJXTTRCEBST`2cBpehUgvgMwVFgGutkg*qHi$rr zu^EVoSOp8H)p8*e(G7-eK!zm68qrGSK#>4rX>D6mWR!&IbHtuO)3rK%_J{9Rp%w|| zR+Vd4X)z5A#vv+_8&?G>P%>_ngqhMACQG8Ts_(LBO(jTW0OUXr6AH=>9EF|^17?OJ z3Refda4;IfBx^ELLK%rdaW^LckbDhoY5b`;Trx6BH!WgKr2MQi{|sPkri!Z1EIBb` zhoV6pVKaYVoLJSaWqqvS^u4H__)@5WRWgW|!xB3$J2^YvzZ|Rr9yY1qlf5Lwn+6q& zb7uU9@w#4*XU6g*FXf2B6Mp<Y1Nu*W3aMbqm2+US9N?N7LllnT$rYj#4-Equ=NOu4 z7sU{|ZjL--gyoaUhb+rEC1Z+VAT2_8rIVsz6wl~-(fFr@>=wQJpPgggd&#V_%GV>n zxUSlubv~DU#`iuGP=%o-EJaaPM!P1}AjwcgQMyH$DJsJyMLZZNp~!y0u|VJu^*NsE zLF{OlPmR0rv))MZ$eUsjND3g_{)7qIOEwvboF8cHJU|aNS(GG5WFTOPl!MB0)67MU z%s(i4&&JoEBdm>m^9@5Eq5%OQc-R|=r^*i$QT^o2%sA8Syp3GRaMbQi%zYFN+MuFX znxrB}sp)!I#5vYPcj;C{m>CLU0N63jo2I3lHml35_}V-kSB(i2=Q?4xAv)-768R&x z`?6>yuEXqTx@<pLzuNxTx9r=1E-_4r+>q;3g{dUBjd12+_lISUcBg$KUU-Og$dgC% zJ@@k_r`Gq`4#`J>>%Q}q^|~Xe0uiWdo5ceJ+%*8uH_g&BbWxN;mPllsGw6MfGlk5b zCyM`ztLx(`=p8>Un)5{_sE<0Ts>31~DkRqry<nNh(L>`@wlSnqFhVc~QMX$Y-PKgu zAR%BrvEF^7=RO2H(m{POq=BsA@QtjwNUacK7E)rM;;jWC6s{qm1PD~sA{hum14W4@ z0}7>}QKmX95pIM_Ld-NaL_LrkF-j0)K_m6X_)@HsI*}<%XYcFbjz3O!_zYvjo(1>E z-imzcb+O-0vy*KAQWZv4q)f75ivq_Jttu+HVP<o}{jbLTk9pLN*&fJ7ElQzwxGP`@ zjvI1tgA9S#4hDc@W+Gv>9EL*CPA-^%LO>)i*oL-k2|{5sI>2$#49Jrp5~;itaS8<s zV&K9YX(M+WF@n`e!tLXd1t>ZL(tRkS@hUMW(y<Iepj8xs5TZ;&2@pV3h+?Q6X9?yc z_#}M^1CjMhKWUDG&~oJkI>45~x$)w`Mgt8`EDN;>*1lHqk|O$wbRgRffM*JX#*7y* z$I8#Z+Z(U$xZ_bU=cC(Hal)kOSJ8W6oE(zdV+T{WB`{Hf#GupjtqKTuumjvwnKpaS zRd5KgHo|0lBz9RXsO|uH79~=r#5vQe+<m8|qun~65dOI0{6h`|K&D21^$U5Gp$`|q zMEhzb?wd-*+ASgvA)-U_1kWE$8%Yh+F<tr2vyC)lsvd$96n40r!v(?_pS)I)R|4`s zK={M-bIeTZi}9`y=0_l$UX;JS^<Pl>O8Il+#_pIp>qe@F%qg9c4a6iD+J}H9*JUs? z0teB>C>bX`Gowr0hQK;T@ouK9%;nNC0;8*dKsPd7poQn)1qK|>k3rSSkjyDe#v`m@ z9yL(Q8#s`8;lxC7x~9pK+Q;l|-@)jB*Adcl<_OFwC(k5wJygTYJij_lWC&p|dI2f< zCAc?1BeaENvjI#}0F4r2BrjyN10xiu$`Oi^Xt<2pHo*3pCg_|i7?baxE9idb3-q&_ z5%nr3_0~^?Q{&GPYQ_;N#7HZ|fEfq{00FpD_OhCh4~AD(pfUu>MwASf_n_}?!vK_( zRw+v+<_wjRDU~oxm5N%HlKy55B5SBxggMPwjYR%&SX4gJ2pbU?q!35s^J4+L16;0P z5HXhN>k82B0@el502u-x0|2cw21QX9%oNfE4LE#FGsa|4X9WWT2^J*?fn6{dW(H)z zQNpl|C_zCKDJo<Mp^c#dp^%h_hJ$E8X@D@6CK!lEWN3A*0vkdN5>R2W#|9ce7)cG7 z!+`6Pw`zwR91hGb*cOaSC_ym<R;WD$7&0LtkgO9$iGhghmt!u7NKQkJ5*iCt3#E8q zQPVlhj$CYlM1X`QS~O!I7$i#!7>8N+%|`|S3RBWPou>Lkql{3IvM~!pUJb0IWGpt! zMk#i-s|%&k){&w}P>e|J3>!5i+mA#iOmogtqn)uj>|Rb3smm}o8)iulL9yP5j37ce zxN?=`!o1kv5QvbL6HEpn10r&V14Qy1wr18vLq*9~wnQ+{=90k17$6ijF<jxmo_L0X zGfV>TO<{<1iG!1vQrk=%22z26=d*=680+|IzL0)#^wr3H4hMN*!((>_3?@}LQBbig zSu7~YGDLb<MC6CkVsa{4h5Qf7{0AbBWx8%YQ;I94H<M~=YH>bhw;D}uc&!y`#H`N~ z)@2!^f_|s%a=K>~ofBJN^@H#o#xs!I80LZwj1aWLsMScUv{eznP(Z{M0at~w=S^bo zQeBTO2$Kr1W}Y8{!{t#kj~01Pf}=KgGqJvXbR>f#X13ZGB@BfebYryWry1|f9GZQN z8mAWiW5SjdNHvy1FqK!38uJc1M2%^{A&kKj1)66h!O@0HfJ3OG5{3mFB^MA_N4O7c z@$KM&iC)vN$J!akWHGm5Y<eyX;9&+qK;#@EPJ^M|De+0}NmC4jA%<9(O%|k*mRzC- z6O>_}#$h;1Ci8$!)3pGlnVfr+1^dh(&>=+trKU4Z`#KUI0u+Pg&>R>P2}U2cc`!Rw z*>*(e9S5dH3y2SC0Wvu>25g+DYR)<yPBF~;4`umTL?c{pvUTini`mic0P+bzaT>OW zNZ>mVDGb&0A=-9tMO6=Xc4*{fl2X;Yz=A;zDhak?el((fM^ZB<Vktj?*m&9<jxHV% z(1%7^zYeE15*-MNbk6H`F1qP$XNEFS*0)$a2=|(dqLHV_gRrP$OlwGhMuw%5Yfz<e zXD&642zPkl>^diBvXMFPm$>h+DqaX@gi4aC!K#=Q)3Ypb$P8w1oX8AiSH~s}jRi5V z^x(}brXv_JjB;zwrj%l5N179n%7<Ku(A^BnBvg0XlUfhjqf1bqA!Tu)K;HRwF5;g? z03F?Z<j#qdB7~jTLK@VbQcns;t!ui&19R8K4it1$=O9D`Voiam8o4S2%ohbT$`jbh z_j#d-=(!Ngj3i783{Ws-Yjo&ng5qS{rlMBkakZm!wWz@>d~45g-AyBKEkhE(rI`o_ z9^_$^(IyGqE2VFtv;>VeVhu?~4U5D=qKSZuodIn9{&Cx{9WfH&YzE2~P(dguFd<T* zZ$dgT7$u6@g$30MpqQly)pR^S;#R|EduVl&VT^`U$}wB8B{(4B^>M2MNMcOFN?a3+ z*CFbVrI{u0dSHi86S2V>Q!)T9#4xB(&~hOl2MD0*RoE~OYA}XN1Uh42hfs7A4ah-q ze_BjI3u0EvZF1)KHGyCSN<%=7L#eBUvB`p%ATf4Wb#4vcG?G^3uxdrTWoS0sOn4AL zNVe1+Xbtu?Qict%LxTVvlORHd7&moj4V4x_aa=+mE+&Lf3|AbqZV{O*%s|!Ep&e|Y zZHi_v1gGMQPz@l{p(epV8#pUhEY-Dg2mzS_P*Q6ZFs<Z51bG-Mg*4%yT}^Tr1q_0L zo1mfwX;4vu_z}p~697~uiIN#KfDnX%qi(H$I75bws$qe+(nyKZkOUFBeM3#Fhae$l z<R!U{Jpt`y9;2+db~&(<h5&mW7(f>lj+9&*14e+kINR*$5V~5z7epeR8&gst%M(Hk zjj_ps_1+5OgM`RKrL8El$Q)n+Sutc+4j@ZnPD=s?f+0i2Ow5Wx9YyZ-4Aj8GtCF-w zV)sHDTXkG=q~Kx_k#Jn#4bWKz=pIK=+_2<FHU@BaA;A!cY7A@$DQubnEDdC0z@%9z zR`>$aXdR4}0?^nVMh44+xlV1Uk`)lxLJMd}aOo7#gy{pQ5<&tY<jOF2Z4}EUGz$PR zowy88bOUn=+7b(G7-<{z+}nnAA`OtPVA+Xpz=NKpo6Ogao0T(g3ouRvn3ctexx(Xa zTAJE{yahsvmcyV}Eb17d(6tU@Ex@)5EhcDfjci?p6HN$fm=-RJJ0w|g(*lf=SqD{- zha(pz>!L<@T$e(?u9zZ502I44PByWo0gG@eV@N#<D@cQMb)*4tF#{7?G!WY4<zx=1 z+doz$Bw)?s2shZ=l#8GXj9aly9kJFftq#VnSf(-}2^<$7!DSSnTERr1oRG3yn*kPf zji!nrJkG8}vIdyeH3(7^2D5t*TS0^%!D0{!AW%S-FO<wH%;mg6p)?H-8dxTZCN3fe zC8`$0TFVA;0g%d7AW#g-W#R%2ph^UyYjCvIm^RycZ^T=1EoA}BRA|6PMU6~c(rvM^ zgKtowjBGV>LtQZGtl;Af6jTK#IOkoNwuX6PVO_&crPQ<A0<bdFrJ#YqkSSGXNZo)- zMTVSi;4)-`EKoEhELUJ;xgrXfhLR{kEt#Nn)`%A!qe{teX9{$}ONr=El+kj?8$~rN zk(z)O!q&+e6bT0)p`zEvV(***2IhrDkwBqEs+NFMwS{8JVD2;&Xo5)<hFF1te91#& zqSq@BvRkO&Xe^*xF+$Kl!$8OkL9GQ8mByI38wseYV`^Ygy%0?xM0BIvr3+&}B!^OO zzO|LJRjP5X1h_`CO=L;1i89hB^gl!8ciZ{(Fu;Rki;Y3h)oBgmau1rq^Yji<vr`;q z)zA)@u<j-Xg$_`WqyiX$fKY9yn1qWVks)MQ7>Fj$>(vm<6eu`LPQKHCCU%0+m=GP{ z+eFhmjM60lJYdoo#XBbujENz(j?qC)EtG19%y<CVZ44MO@)g<RejJU>CCk4H06%yj zb&BRE0l(T7ddE?+@{oe_<WR>9o%tgZ{vXF3!^X@u*PLxL%#mh}+_4RtoHL?SGb4oD z>GGMG896pr?%W}jqomsvbLL7)2a=RXitfH&|HJ!-_w)69KAum{svLM9w5<u&6%(wZ zq$_&AbUJRwIy&Q1<a6Tq77->(jvms=+!Ol7uGrJb%(O8-=jWtuE6sgtp|cipDCciL zuKdD6Rigb8H$8TfcX96O)HCD5#jn0AJqT7MwB*Z6PG$NHE9rxU@#X`aXDo1#^hS4m zj?+kSEh(I<sIzM(=55^xkOe<M-SNZKY`3zx1SR8(3iNv)i=5-6o*8wlr%CLCNsgRn zuSHj<^+}sl0o7h9=Xpx7&M%x+yJr;|p4Oc((;7;L;-<-QhHW)K7t02S69rmrNsur% z7ScQ$NyT_sS3Yu)Zd@3XSs)tif79AjhePQWhQ`nI>0JlN`dOe=%q0Y)8qn&eRiU*Z z*>Q2Vpw&Ek^;d2q)zQ{C^Eg7Wsqs;f$SbBbN=zN_#QQQJ?j5S<Ag*ee{Niqn9-8E^ zmh|$FQtyjV%VC!4gx{xfX(e&ditgclnKm_{8k(?*zj(2Y(al~pRK-XTUd}rh%p4Yb zCl&XCJDk^lrMgB;@)MJWtUBzecTzm&LDY5`>bh8}xI)~*kQN%%OlK%%D3G$Nn6epx z0r^!B^)Z2#__}re%K*aVvxg5dXO>>&pxR;XU9H8(SJqHh3w@UcwO%EbxTdIK&Mlud zRJai1bQYI^L9=axzTB8a?#uYt&#YsP?Ds!{x^*(pB5!QVk{g8^H*xp((>%mTgbv-B z#JB_UDVnL95B34vf{*6>F)z@<%)dH5o?H6u-~E!12K!{hOe)DH?6|0nmxm&hYV&>m z?CV$jv`!t5u1eb_=>(A-45W|si90AOJn9~xk+u5NN_4^~CF){w>{BPc9CL@v)b|L{ zfB`;Set}pxdrv*q-PwK}`3HVbLZ1=_FH&T{J23d(d|40;1~iMZw@pZWfLv-nNa_X7 zB<Z=R@R!{{X-DtR$%bBP@AWCsE-`QAl3OZ6z-n=u?U4$B9PkNOLkI!q)O1TH&*0`^ zZ|RL;PwGQgVLR#jm|x;EuR_!v=yvrG`~;}HdC0mTHgt3pKLAaRAufvH;pQ`Y!g??( zrKP!rqp;qc0B75$PdM-EhWQmROJ3=k@#4?oE?vC=Tr^nB;btu_(eq?bQBc8!j=)I< zAoFqEEF#UOdqng)wM;s1??9n>=+sBuDAOhMz3%AU57sGVN}aKJpD-BXU@_|2(~s|i zZlc+;yiJQ6b-6KeN6|@pC%ZOqF`vwysnv9lR`klma}EHvp+DQDrzV-A#~b1t-Q^zj z{8AFy87erZ0!(cjOc;$vMi>H7tn0`^V&%`5%;Oh4d-xsZG9w2GA(^vf>psZ5*%WbK z%ZAW1stM7Ssy~V~ocEbP=U8%sk4F=UEbpdbwW89lFrR_G3JBQ(AwmmC0j9kbXN9pc zYB>ulFIIG*HN`on<YgrnnIgA@K<;6_+Ptfls~JjT9t+KTdd=cay3DQcm_ca)cHqb$ z^tPc$3#Y|Y+=L`eNn=jL(rR$MigQ<e)xAu7#iW=o$z11kaNz)LEQRcjI}X)CURSfQ zK9Ms$6$^>bkdLb@QlAj60VMM?q)Ma1ZZm*XIc>F>^_i}04y13^_J^n4=_fzz)Sm>c zdmXD$`6D^auKr=voDB-+;;r=7OvXpSyQwg}jCY%hZcS}0ga)XuY8pF5ozQHfku8f= zExLhviK7F!Mb5NzY=v-HCzDwI!>)M<mZ!N?<8#EvcX;n%p2&8g)G{AS5_Oq2G?1n> zl0>E&Y1haTM+4$>Z`hWV{p<uzH3IB^t>*$F?RzuUrP)(6){E}|W=3<)MwMWror}lh z0LxuRuBCC5^q7y0RE+#4VEiLIM57(SGtb0n&ZzR8-Vysogt1_Kvlca68_4fPb@V@Q z6Rv*T;CLn^s_qGMn)YOH{Y3`J&^p7==%trn(PM$3G&4lh7gJLcN#;k3y?`rMh@U}s z7;@taLlZAO4dC{3p5sq5jC54ZQ7h*6MpuRStW=dYFwLkel0Okxar2{N1GGl{R@f7C zo(j<c+wSBi@a)G8m2G_TW8zg$r|ItJyjW{Yx({!u>TYRqFwB(aV<)LM3Q8p@ry$IP zHsi_EE9izxsoAADi9%Jwy;pQ5W?A4#D~{Kim{{cxVJ@xFHY`yG#3ng2gvrGzb@G}I zzTclaV2nx?;bIxUtYGcdH2V&*x~z8HH<>zKX8iY(s1VNX5DrsERZ<L?=2Q^o$t6`Q zJs(O)*w*+H_xABCzsyIWeIr}bY@6)xtGE!)3(U0lc@jnZgT~+p*}NTm3j#68CcO90 zN%O^sK?Ma?d@3&UyGNv`M~jeW8!i{hF3+_Z*ZLM*C5dpXCm_WH2o8mhz%mG)SY#SO zS|S&)V6Ktcb7q_w;RTtXHv-@s%bFxe^HhRJv`%W>Zz)Ib7R6LVW1D%xa~)0HGv>9U zZ9Z>Xe}xqtdc(x~nT>!pse5%RW&<1cm&Eo{UQZT8-RVs{rcm>^B5AEi#mV)6+RW4W zifxDCk@l#J-bAM7zkmHtHBI*%)p+0I4SHhRp^&K89zzI5pyWk3$5eWlZuC2TK^FZM z1e3}cRgLTiVv~reTTq<KT;3fqcZO#^0}2xh1wGa_9b%b2Pi28obRlPfw7^+t63r?V zsOy5D1EO4-jzb0jg>jN}5)&6qNhdGX=q1wEZ<b0iNAG`m(skH$l=9spAIfbaPZ(>7 zgI&paY6sB}ZGOVLT|V@^b?>Kgxod_WFMw@6N|<UX#F7mVY4QcZuyQF;66=9Ou#zj_ zn0uJZ+OHMp`nB_Os8<id0KvAmZ~jFj*t?6uQm@!*y>wbMl}^}mb~pcJNOMI&mr2k- z>Fvxidz`(-=R-4Z|0y$5#$Tt69_YG9TK`$aFUM2RtlkGJaLZYW`jA9ozMP?Ajni2- zw0ohbW=Ay~?ovT2b#%DdtC6_Jg;O2KKU1z3WokbZ`Q+Kx*7CH+3O6q7Jg?rYo;S=7 zhUIxa<@E_)<%#Egr;h?p-uJ8K8I_U?Oo?xctC2Ov7e!Y@c@2k6FB&%ayj(NXcf(H9 z6?>J|mE~1`ao%qG@3wGq22i#1WzsW6jY~Qf`T)|`D0k<n_L0dhb0S36WWe~th4=0^ zHIyiZ^)5?~yL9v-QX%Qm&JVvWyN`5jkdhB{PMjZmFP68vYZR3P`apa8XW!>!?^xnJ z<P!Z);IzGKmFQ<cW-CfxZ|6xPotts4x^~!QmB-_i0+Ma`1z{Mhq}U=`Bj$1RJ2eB5 z))?Wio)*0l&Fkrk7v=<Z2Urb!K%a>|ii}=Nmjm2RZ;+pjJa97Yn!NC>?o0Xst+buX zqX~9{N{(-R5y{T}M~=7EZkwFTR<ohFlVb*FKjAAkEkwH^-aPoS=+Mlkep$Tm#$7p| z4TmjyRp#YuxC{S0j6e3YJ-8;)rzPEJs~P_?_pL`^LH1iG*AnBbBL@%Kw;v2e59#fq z)-DR2?7i1%b8qw8(;`!}VU*+Sx>I?}Nt<_#uN54HbbS-Rr74-r#!5EMlV7KHR*B&` zp+^7lQ!+&DiQ!t@&1BWm|JnBEKoo{2&Iwscj<zAjUy#FUNctB!6Z-v5I)E$?N#<<8 ze_N>79(sP?nauRe(o|WhE`Nh_>%OI?4Ei1~zy9y`#y@UIV}f9A{Lx`X{tsASspFX| zxQ~0`!Zvg)5?H7a@kL)FsI>KsIxx;1GkVzdnMHLPZ?0WMrn(vbeENKRdvm7NNV-qV z`|T&e--iz4n8g95yIZO#Dc5c!z};KQDR053e5#~1##IoTy8gFPOa~L@1myi(Q9+4| z@Oy<V9G0sz5qJ<;hj$qvLfZgCZX#(=9Ek%@X>s-BB6n?PelRN~Q=4c1l^pnUFE3vV z4xeci@;UnUDUPVNy6!V??*ER+Ph&3TKGE1W@m+I-Mm(Rf4MvBF4w+vRZIKEnu*nni z88a%cWqryc<)bi<ZcX)P^yvG~nL4+W^s6+hEa&>K9QD$DokkYW@;b7Lq}q=Q7CkoJ z)NfmR7<{^*`znTfd4%GlpGVC*3<HqmQBV^@7X|(9mP`_lKMcl!@y+%GZLxxyUh)JL z+S?~$j2y*v8+MzB;81utMo7etnxLt5q%@QWv=1x}27`sJWKonT3<krAi$Uvz{9&k& zk3ymJ#Kn4{SMlURy+E>s;^x0k<rQ$Nh;(v$i;L48beLwA?&nZ8q@&P;2yN#=ffsi4 zMH3GpYpLBPK4Rir2!4;Ih4*tildp2m%4Ipk*fjTcwE3EgT#f?ARs3%8VKj=3RAB*m zVM=uEP!$zEh(O|}m9T+<2*fVQQ(qL$n~rN)P6T~8U0P#Kuz$Z5*r)a+E&a&{K!8AD z(oIoC61^HC39xjq>P`|TSe&;t+r~EZzPY?*ycT499VH|~=~0<qcu_`OzJedQ@l_vl z+xLA=e};t75|W-uz`p8^U-<It{Wx<2^k{thnJ6mP<aWV<nqG6NUjj59)`l;3(EP1& zsV(PQT=7_?{4?wIC;oRfAH~(PlhdvFN2DTV^orbwHZh2foSu0rF-S9L)&62^stzVL z(9qccq-}<>*YTvk7K8sd`o=osfXtnLdj{WLxPL(A)nduA!i7qGm}iJTg(WijqV@T- zsKjbaex8ZqZwVji!}S8k0_t~ihH4C=E#*Jl39=#cKxMKXD_+z2ZDq_+4dVgYSsN}_ zQl3;yt|HFD^8P0d<7#IOJwz9gyf`MZB%+C$=G-#vMPtuVcW5<u*GS3!o8EdN>P~LI z%I!<?BuDSsOED7*3(e`pL!YB%%6fG7mTBBqM_}ojr34FHu2xP{K2s8w#z8#xdtO1{ zW<6_Osc>iT9epi}pBsykP$ZFtJVY?)@zedIBj`}<(N_bt%@=m=m`-ecjXE^%bw9&y zsy`ixWgjgkj$2P^y-w`w{N@8tTDuSEu{a^dV#WUBrA!=~uzAyJqi*M0uXwCO{~ayR z5q`Dpp2l_MFbhAuXI}#F^$)ilpMRp?$iBCGa0$R028r~6!J{Th6ke5WkLDH(2r3f! zYncWV*|PHb4)WuY^E9;qPp=&@G!8+86`1&n<J@}t-r58wU-%`((y*`~Sfm>qdiU<B z=~!szO29PeYOPmC;NFy!*2b1|7R@gL)Oz?%t<QP!m`cZiFdX@LQ|TzTQTC{@FaZ(g zX#4!lAzGM?@T_ysxo#X7?Sz8nMR<7*APO0tCjhL^qMyD&9}LcDebk&XNfvTmVw&WC z-rfCVD0<24qaJo?dtUuJBTJrkW&mz|$c$JN4&_)tv4^fqc*#SCwJs!^NU_fFs%Nfg z<jY0A%DxdP+hlD^0Y62Y<SkI|6?AnubuqIpLO$l0xfE)HUeu<hrs^*u@Ik<Z-mZz^ zhL!@HBuQO-agS@m`P7+YN|s9Q>#bJMyQ5G@{g7KP_C}TXhriaxPp;uU-6RskR?l11 zH8(u2N&LQYc<WCFq>+ggO?hTMt-vrft@<jH1$!NOYOTP5{Z6|`S*tR^DN?lzbccD> z=Aqp)uk%s^w4&dQGH{dE^Z~=H2!~iFG&BIO<Be{3T<D=aU7zg|?ou53Ox8_BrH!$4 z>}wk<U#E9N;ho>RNC}C2tZOlpng{qn^J|xW=^&+=)_7QPKo?L~9}wTltnqx@I#vVt z$B^Y3h?3ypS>U3h@rok~N`4hBYU^S>%mI#QRIxcTSkKJdRUFxPO*r7w9GWU!x@@dN zeXYC`R59NA;gZQ9bag#x6LKnxw#`cQZ~!HJ+hqk+t?YQ;KCua`A16SWMd@!IeBJ1s zs_XqNw?62pmuF<3Boh6tvymxIex$h+^5*wn58t>$U32Aof4P0OlY2eJ*(RK%yA}YJ z`#8#3gCGJLNkHxIYRf{9MY>cHr^H{|*Migot%)}$s1_KDC1+ZII^dxB(;kfr(ML{; zO~hJnB6ON*9U&JEZ^H##_6<;S6pKWspBVI>a)9>N^~h)g$o=R7LqeuKxgP`|VySgF zR}7!yK&DaLWU*=3n~gKw;5HW)Nn3xSN)|-`!{A8IR2VAqs`s2t>sJ1S!UL+Su66E- zWZP{!zz-jUrpIJIu^MhlRzQGtuYSkd{KbBCKLNd}O+BJtS5K68Fsv4LIe_mC?A8Jq z_o<L66kjJ_`!p93l)y=$go^6{gOQIVcjpNWW=4?c?F>bIk<}Chhpp2&mCBK?<tETt zrLA8}-dFh00T7vf5{t6=5Yw*pJQTuSO;U(I^kj%gvt@`lS1I}Brb`zUQUeZRm?N(; zbt;7AVw}C|&)C-DqOJw!zez1RT&U3@noP{}GU{9$6KHynTh_TK&C8c^NDMc}D_Tb9 z$G64rvru);bBdW4e64$SX13r8`*KIYePD7`R8WwqM_U~v`h$1284=hv(rGRx=eOO% z70twT`}Mx(yURu-8h_6Ro8qo6QEfhx{47&6XD?pkKd&)&&ge+5IrR0BYd<;p1?qa0 zWivUo6K~&K^S=??cn{2V%l*fg0YVZqVvS-af}|=DQ6(!ep&ON(kF5b1t{1b56vUC@ z7~8)AgcHucv#oh>N8*=c7Ss+yo}F}FtuKBL=zQAQKA=ArTj`wk<GC&9*0tLUd6d3; zsjVLm)TU`j30^0b<IX%VvLE_gVzoz~Scn?Yy>xdcdv%Za+{3S*&PBj3&(ROQ+*{(p z&{n#b$3?CBq*`4Z-YzxGCuO;mUtgQ~{z7yAj{E+NI0LPh=Qc)4%1)`>eUW=+cF%*x z|Bfz&zD=0=HR?Q1bA~SRdLw;nK{j6>?p)A%R9X5m=k!gthfX)!dfi=5RCSVlt++bR zm&)n1q52q<F1?USZa$@QU#@fLlG>}pdtW=GJYrU36>jM%6cB(tEhDdV7c3*>U!VE< zwDMTsO`bwFt9zkO8jtmSiCDrQ+~uXA+Y1b6_fHwo!pt;Y2(i2|uqU$%mq!oeIoMaZ zE;>I@g9#3QRZ~i<;RYi_T6zwWo9~cf^-~5+1|B$u1KP9Z$Kp!s+(JI#UQSR#)(tQ0 zc$ECzr`46SHXmb{=P|6Sk3G`k$IplXrolUzkR#3t*@o0bQ(jNv8H<O%2WEE)mrpJ@ zD85?JVk>qP=_VdA@{$64-y`#QHPF1@11#tzE)ih|ZdCo9{Pjk#^UtR%s%CK8*7<6A zbo`!Z(he{WcWdwAi#|TSGY6@VkewWo>YNiIowWAgk^`vD-6yo-cHM=6+vp9{@SwVC z6^k8;;E{PwSSr31E5u771BvSht?zDX@hNMXwvbLsk=IXR&(+yn=o23Y+vBOXwn}0} z`P~MtyTNhkRLSOA2W5*;nQWs)NEn@*=OKwI8OTB%)w8t0S62Zo>x-9&f(Pngi^Hvr zgzSc~P^b5-&4K!)RNP>ylX<Cu!~!j$wG(PxO__Eehc}--otRmSWDSUvI}In;Ee=8K zV<mnRtNKa@HKx5&Kj6zy1#vM*4zIbnE^`^QC35RRo0WB=bC6x9I_Q+=c*AfUrRZ!7 zEty@>_O^Pm+{8=5@{jY3)s*1xuFIU4ba-JgvdHN9eW!rXdEctGD)L%|WcB?pN&e{t z{w6Fa(NQwijbg5S`TDV5!DO;yh3%--@)hi#<F6$w5t!wQstM^BAX+2Wn@BvizO5YD z`SWI<tkI35BCS&I-4;i|^d8oL7xcFi<TS<tO++iPV?f*(ptzsKz6I1RB4*dF=5QVS zPB^Ldxfo-URrGbcVx?4^kfIr+g8l2ea&Wo~yHL%#2+UMC?^1jF_I9#n;QZvLQ&H-3 zlK(|FwqCq>KMMu(-)ke&7JuTk)C}dEsDiBcQHg>of1!z8&_+@9kLAU;NMy(^@u95J z;Se^6eQc~Ijhp~}brAfg{<ZQy#f+u*EcP-x{S%F(oz9?=&h8O!>*uJ$$?lkqcQS+d zC0|QYw#wy_HVIHdv*};BlJq>$Rkp3VH=%7C_*1K=ZFx`|q1}_k)zxWA>EC$VY;M81 zefSgr@nA9aOHSI_(_e;N%GVzrB3TTwy*7UQaT>Xom?ND742bUO;j^fk;Ap1O2Q~tS zB3~yn?c%Lc0m#4!0(6*Dn<dJt9qNA4(>qY1bJOdfR;1KQ-oQzP`81KRX76THNttP? zSo4Yw9WzeX1*eOxon4&UZ}`ltYfQ_qz2wV1NcS(bqjB-GHv+$37VnyPs1(C>iq;S> za)}w|MHgJ`e$WyRNpTkwY1DuV{<>c|W3{jVGxUJRkTU4G;qnhvh}9ICKs!a1q4K0M z72;CmmyHMK;Nwq{pClBt&9~lsvFB!7aaWB)5?XcHHhU~ErFi+}&X3<Qa`Uv>uWwZP zdOwNpGH#{@^HCd4jrpd!h8^29N*fhMI{Wa%I3Dg<3m1~JF!-CKTKrY8sQrY340-Yh zlUAo+@51Rk%E`HB{LN0cHO$7dLXyr$>xng!w2Q?oQ?IzYhJp_vTvf*Cci~hnvXLv< z2qF{%sik7PJW5Pf2oR_w4JQ|1aD5_lUNABiW(sUQT%+XhT!v$wEH()kfMTVFbqji8 zY(;tLRRw0vFAy_5?}{(Rcj10I1F4ou@3CpYC3|r{<E}VNuqEDmeFOypB~|_Ha!$mF z(etJhEP_%~FWa*wO8bS(ZgmqimFNKRJ0Kqv7kHwhF^Bty`o#f`t~gan;{7IY!~z{* zfOw-t@7WjxpDo!`Le)9S;3S1C{~H{+T^qFD+<3B~EUe*P>$XqkvB{c`vxjIIk#h*2 zAKf?!n+hwooH*$vc1){zZN|mbSWHR>v>KmEWqFFLXKo&mX~R5d6xi{VR}n@FiKi<( znv<`2+5OQc+2KC`)8i+P>0&lr3eEGvn`T{3kGhi+3_p~wllGjN#%z!(D^}^K)+=We z4C}o&_owteYPM<E1II4cp(Tw)m~;y=`dl<qU@*VbU-o=`V%0H|wj6lIKqjmDv9wOd zvp01Q>%G5!Y40}yL%*(0R}*sj7Ucl_LvjbQ&Sj$%`t5@R8N&A^6Mwr_tuB4yTR61f zVM8Ko`h3n=YXlhR8t94}3ZzV8AtJ%DO=GkWSE5)+pl8!lX*YE#QFRO4brz44HupBe zKpc+0D=C&y;g0}tzjv6H@4nF|bk?{S6*SMX$-Zb|J9#A~rJI=2^Vn=4T}j0on(DG? zuO=UHijc|RAP`KQx^C>Gw2g%Y7k<~AWbC5TJv(Nt6sRFymH5G&KN%I4EyzG&{Q^04 zxcej0r%r^Z27#kV`OFMfC<v?t^cLY3M5ioH_BTgNt*Ga=#>z83^>wi4p)06baL*0b z9n(o>NM}ovEQ1|Zisj|tB<^HyC5FCsj!*5;rk2-=R2w7FPJ$xER>145W@LUt)I{{? znqrK0F95#>++%MwCx-AD!cs*s&lorXlPfF)nYoC!K2ja(So*DTKt5>xq~L)Mv()>G zjr)~C;lc%XuF(DC!?*u!+hn~gO89Us>5cK5<l8UJ<Y&)Ex@)XYKJ*_brlcwO8`d$) zyYT|8yRBXm4n#vFMpEtjh~1m+l8%!hJug0hjh&r`rO}9ou;<kWS$K8BqH@frDOX^r zioq<eT6EL!<bEyXbFn?mqP4q?ceSr~1&PLERJW?Dx{?D*!i<d#JZ)lu{8?iErZaTX z+%$`SEml91YU1m|EUrETHFi>xKVmMez@ui_N68ksiSa|V`3hpvS&RN9o<SLML<I?! zDI#k@v@QN>w`9?j{IzEHh(NGbgaoo5=GjQSN{|3{4-cNW^=!6_XDyqr-Yw)nUP0gj zajqWwP7Yf`K81Dts&uNM3jD3Z`chQ;NmERgT0mqh=1<@69jQ)cZ#}M9-^XP@+dqXX zzy3}T;tkvU12$alJ^w*{%3;HT^r7<wL_4;oN=I8-Uq3Cw7bD3U#q(QGxDccmPN~2T z`0Tl!q5WQ<X}pc0EH;u$<>i@Q&sS$|2{?x2aBQF(k8XkPCvucQ;XQG9oc?)^a-ayF zffVvA!V14uXfn<`6dzZTPHIf-t~L4<O-eEVoI~p;(4<!pnxFSwseE#K$$3B-$Kld; zlrX)A%pC6e>$oDuXpPkV@9#8G3D`Z-jooJo>kdos<xA;^IBoHYj`2b<FQSA#$x$4W zg_jk(nTB?ih7u-_eDV}j*w2C?y*vd_q(w0!1<)#w=R>IqqK<fln?8F<-lF>|mSZi} z_JPa~@cjlI3U|vuQ=-d*?R#Abo_*?G#oZt=AULL{ZS<@|DIz)_r7$EaE-7&!eQ#L* zF-2vPj=t99@~1h`ZU&+pja}ASMurs=_*t3xI4t;{$m*3hxe*>v_CpDWnYE69Y(0Kc zr;<eu)?G<SW~9sBuK2N-8?+50d?+FGo;u@d_4A#_{p0q@XypO}xb7?4K7|uM)R~zg zixkoejA&bmEX;VV-2#q6(9x=N+B6FHWrnH>36>=8fY*J5T3i($5e{7xE<P@E)tKy; zh|1`<v+zDL4AAM>TN<b`hBB9yvbet6>Eg$EUpjE7*#cw9baV`@jNyTyJ$jO!U*mm1 z8HXgD!pb_%m%EbyHm6cNcRnT=D!L_@fA29L_~0a1Ot;M&4#iYjLKGe3{FzSE?~>jG zZW{mQa)uCn#sxS79Im_Hfz3c=^$)FJy1MZIgpP^xa5eiA+!<_)NwzHb{nZ(qS}a&E zgvnoXZ2eP20T)5*?RN#3a9@huN5PLg(3h;_wM&_H$TOOKA2gJ|K6?dSw|TOr1x7!* zwwJc4rK0f!)h7Sw%Q-N_)W`B}8B0C0-*bT}mF0OpdRgpK3a;sSr1?2CK=SF<emZ)~ zeVXI5oB>dfFzml-*b2W0D98XwK9ahmtNhHAp+F6x<FdkeaEvj$8WPQML4f-`6={9& zR#mqJNy$`+{!x7mJ}L#=t$<sB=x5yCHCnvrI)NFNPi2?A<nncVwwaIPyEll?g5n{( zUy%gZ1XW$iV+W?_xX-I1DTnn)nVA`+_A5yx0#_%BQ)V%(rnyNw(8$vvKVQN{@{<ma z!=HudN!Xi`1rGR>YLOnIXpfYHt7scj*i36?Gj*$(UZgNqUbF=D&6U=V?2*@6(Z9#q z_jhW!1ZPs1yefRkE0(2<MnlSvFN)M3Jp1L1W{0}gN^R02+C7w3sK}T>(<!|C9?|0> zUurO@I@yRpKpL39%4CQ%Y5QVK$pt+qMD(%ncjXm>eBl>c?JKjky6(OHN~EW{kI098 zUl)BC5m@<sGgUh(QFIcLv_lc!zZObPe0o3t@Hbky>0al3((!%o(1-p$Fye5nzP%28 zT}pZ6p%w`dBrpJL?qBF}1EUTC&i-Ji14w=H5Sa<%m`c~6+u~5ZxedgMJTIxA+4-QY zV92mUx|lc2&03L`?Ep7`IlQ~NU}PWD!T?t-FH9sgA^^=vzXp|sv7aHU`*$1?Yd<>> zi8Rj#Zx8I<+C1lC!_|*tt3QHyCD?AvmT$=~%N7$b7$2X5j?JVpM!btaH;t;^*R0>$ ziB3|kj3=BbDAGD2?&4w~ig#G*9$kJ>R+{?RUPHQ8DAD+t79SFSsK2!way)ZLb_7j% zmzK_IZIUZFAr{lo-0J69@!kNA*V%HX=oaTM`CL@+tGuFSUs3FHaO~sNHRS1Hx&$(8 zkG*DrPDn^#WM&nDz<Ln=D;a^NA&XGXgI~p`ZUnt_0ZYDAmE?CbRT}TNr3GUrfkrCt zK0FqSC1iLzl+wtojF%ryywF;pU$fjCZVq7t-5qQnr@RUMKJUNG+h(3)CsclMN%q?C zkMs-=$=F?ZPSN8x_{1Yl#M=HIe3K#<4BXS`oR}^$X)#;}M?fvQw|K8~`yJXT-*YEm z()Ko`a(QEq;G9<sBM=p=jX5B2rCNVo`%sdEsCm0>bk_B`Put(jGxL|_g-g$DOW+5W z>;6;w`T)WmBroFmDu5>Wg0wt8X<NJr`K?Mw4~$zUsp3xiqHydHYUAN=kAB_y|L6r! zm>L3`Uab)2(e=qi@3((;u9jdceeIFD*5z6AK%M-&5O;x-7E_cX^2tY4#9uW0fQZQN z5GmNg9@d|c<?}A@RhbskT3|PS;2pn7f3(9;omZ(nx#Zoahlmq(9Y+lXGz+ti;kV$4 z-`}FllXZ8+hrYi00=0F@kfpoM{5ytNMCF+~swIY`q`_;Sm-MRt0esW^@Aw|r=ELb% z`Hn?sJ5#}u62L7pdH={7OuOm+_dT8w77Xk5#i<It7oThjhBbn-kkJKu?1hzrXWA<P zsC@O1(Oz$$!t1St2t5yXRL|hygk1F5&9g&C(bqfMfXWPB#2`bTcp`<~f;=1S@$P`n zMi4kl>vlu#%|_)%qL8}t&Np*Rsg_NnHKo<xw}pG=-s0s!sh5hqju+mJ7QEa=78ck4 zJ`3OfLVrYW)VeeU{B$DJ&M8y6CM6puooRMNk+I6rk<!c&<L)p-@mcoET5CmVgtKDZ zy={(QQHAMhvS!X_(0i);jNz%ML@SknpD3%lvFB^P4D|=wOU&ezw^pAp!KZ9-4tS1N zo_u$xG1Cq${)MI|K(Qn<cNMFzKFK%te&qCUvT^rWXsmvEmJLvjhc=ekI(PJTQVlM5 znI9m$&UAjDnC`Wpx7My(DK$*6B1nV)<ZB_|I+BZ`z1;Qo)Ul&HdY(@2kEvgErKC~y za0z6$aj!JX0mc+-nmMC!oa5Dg$)dEhI^=&*$cP)$b{}5f&6Bq0kbs7s=Z~Jx79sY4 zY(EY=x=(Uq&&eEBe7^U~#-x=50eDYT<!tP52x`<wr9ov(JxSNT2j@;1mSBh@3R;g9 z_bl|w3;VkBY{Z=3SAH6@CH?Mtbb4g%4d7ctJygNc=*L*i#hE(x$06JOke@Sh4IHuE zPp@jn-|@Be_Vv9F&jlxucl=&_M~~>!t{OHMP_H#-o;&>^<b)vjpa^B{$pW|a;)hl9 zo-2y7jZ30XRMiQfHlY~B|M=K7ksE}XK+5*21-i9jB<rK~5SdPh5C%bnevl(e=N4cv zs3I&^)Ex|U1q6s`xz;rxQbO4RB|mD5ZxM*FdkUebLeap}nI!R4`!=wys1+qQ{evoz zTMe%ib8dEcAO6x!ON8XZ%+c1mSBO#0E)^o(g!TtR3K4iT1L8-KTn}^#o4Ro+OP=AP z4lb4vauSeM!^T7)8m({WbIZ}?>Oq&ngn#U$kn4wzv^P~jO>EW`rk#U!o>bDe?DISB zkZ<}LC;bJVA7C@ugQSDa>~vSp?+d%SqYPcnoiLEk^N=<izkfp3c7l9b=I!-UisUi8 z<MTa)&C{VvFLeJaCjH4ZuF}h^kr9ZZ{R>n}+&BOHFJ~y^HXCi{WM<(9%1A3Vgk4NY zi*z+F8Ghk$>a)hanHOa?OiITHMkiQs2jgsY%f$=c58Z2f&xAN2)8GcAh!$J4Sm{a` z?ujp$mZ=6gbf+YS$a|T7DG{Q{=5Fi>`9lwgkk}Yr-oZuwyKK{v8wNiL@_MEUFLvux zFJBwnGPZSI<}CqNG7CqZ!bcm3(}u+qOtf3-J^87OndltmgyrlWTDvQ@N+88c+0wHr zUiK1>Pls<IEsk%5r3?;U7Yh{9nlds_Y`<5gWzFgb_P-;^=g6;X-;YqnizKVTA7(?! z6q~O%OQ2PMOjO!CTFA-epHF?fg3TfIISCzh@nyo^i*8kIx`7gZS|Ua=BpF=GolHx; z^|c2j${ggL41*3mx;9E^V!*S~Mj$0Vh`30^qZtEv#>gsI;S4Bpxw_j{S(G}s<Q?)) z=gj<z>EKRdQztA&I#W$xZs-dQqx$<6^kS#mn#4g)NN5TtUYVj%yioYuIftCrU%CH_ ziF+Hgj?Aj`{4P@EVV=EDXe9I(8o#z^7;tN;>(fC=`jSoaa{VRW5GP%q7ngy)$(j62 z%nXkuRXZ-Hn@|OIYFg)yrFy376MB5LFnmKeK|>8OqUVeB+;>0DgDLp&q}yhM(W}iF z-e*whF}H48;q<~M=dQkbuD;ZsOJLyy2ue+bDsb%kWJE}AA{=soD6Me{lXg(g0Gj0u zfOjZx9I>X&80e4>-W${33#GznDJ~!fhl4Of2Qvw%LYteE5h3pDoA^<+ccpfB&c9_v zsmi|aHM1!^exMxEam|9)h7;r=Qa1~z^-bYuJyHWto4~7`%{oLQlv}&XWo3gK+W<Ju zL8oE13Y$1o!g=Rr?Cs-}K^)S%Xy2WW4K3guLKkC!hk-@XD(;%D^kNweoV@tvi%`;x zNGR43I+{}E7?diw(;0F{<s{j!dtzAtHY@@5dny=nco19)K?jWDfi1{gDm<v5{vT8l z#v!u_dsu77Pra!(aXcysBmwPb^{J(^H&JLh0x1AeYGi48tW{MXp2#U%XN5Yr{vN`G z{N92`P5z|gyea7yil-3=G$Rjy=MtM@7ouZ4wl@w<+*!4CdM0Si`5*6ZlWnjBS5sF? zE$i`So4fsQ!)d}t`VqhSTbs-sz8}nK8ZEEVdO<w;NLkuNWv0d;F5-)gkz2Xi1#y+z z{{?;tXASpVxw>Mbn!X9@Gu{~WwP+<Yh4Xp!*Ln)$@<Dnwj|%7PMAG+n1Xa+JG@`xF zczzCO4#?M0-}bllP#pSry5|^sZOt{8aV7THuso6b@I>UA$XtGlmXh1SZU55&=GTh` zO!hALeSYqJZ_AVCIq%A9NcMMgP@KMybZRzDBvGcoeIaF5;aV^j;d+h5m1?1v<(`zP zo{ctae|mTvTiRK&KTuIy$->hBW2Q;~_HMd4L>HC?EH@(%zR1Xk(%UL0PZ$f+mABVr zv*sEJ)}1)IvUqA~mT_ghi2WNDLdloxknjj0FAsBVq+gLI%3_$&G1vlJ=S-u{_`XLG zkK^_C0uPdkSqrQ=<rI;y=yve~$2|9HOgyJM%g7|iguY&0jG#Oye5TMTuh?(e_J*yn z>U@*lqCUu*ldNpp-5Wf=|Mrkd|4phwk&iYvE&!a?S`3PnM;<HGlrj;p<|P6hfJi4z z9m9n(_=r@ZzW)>}4A`d!?!{ZNCPL5lJWn;Tc|L$RUx%q4tJ52u867gNpZ<0u=5qpG z1FLq<*aYyh=BUG<dQ4hzrWw9eC3<Y|h|t+59v2!OvKf(Wx+9s|twE7;n5;UDa3%^5 zih<fO^yRPn4@q<pR7yZxi*wq%{+Wc;B-4mz{`$@T$(Xxzu*1Wt<%aU6`=d*APU29( z6^^{aGR*V~ynxZ-Q1e5+=H0JGpR~4Bb)<ZEH5i?IJ~wj)61sAd(92W_WU5_Do9Mm! zVDuV1?99IKopb{MggHF-!FnU_r;3t~|A`Wh7RNDJgjGYALUFoz&(u&V*8pCceRg!@ z*k^dwulXz`WH>6js~zcLLM{`${<InyYZl9BBNgCfo@W<O>ZKnS^$*V&jQw6X#pCRq zTSC?co$NLMZxv~V1Jh*kBw$W27b+S0Wow2X6y|weIsd-R2T!ctHuoieEWL1M{^(`I zo5){r6E_ERCM?xp!?o?7Tr2E9stQBH`mu=lZ#ycT#Ms&UqXQZ~uAP)X{>$6i&0$MP zb00e`PbNduN{^gs9(eg}z!O#Xa%R}cm+?dTP*6Cd%*soKA@h{_s~a!ta0q9<zjPe+ zlzS|EQt6=9<b?V=PQ6>$sS)n6BN_(S@XzKqf@=k4567Vn(>uzVKQl`rmf34sR@wHj zwr)O?`5IZ)XSj93Yj#j_RCZn!+c2*wj%D;gn$t=&jwpn`iOF#a=|37D8rgj4PO>-l z2$ohH;1S!elI4Gzoz!*GyEgqaQ6a-Z{H$T1LS5Ls@P5q`j2sWRJ69|RXc&MDTr>1q zH<Xl~y{4GvbCTKQXLu+$;PhU<S2uDMGVuYy19&e+UBQc{NP(KmCF|K8f0I$fr~x7` z!#YDhG%*QB_S`%I$gIBa8DIJsc7LxCm2Dap9OySJFnz2adjq7T<d!YzQ@CViY;`tr zV!F217~gfP@x&b|FX<EaEnOWZ6f&Qw>^GxfD7xl7wa76&2LJ39e6lA5c%<cC?yCQp z$Q6L^99_R|r0n`1$AouL0kJ_cyCq&j&oBIxdGs0h*{WjjV0x6T=KgPY@d~a&)eSw3 z*`8eA=HLp%)oEGR;2UvS`<7V~r^1RCVQB1j+zRzI%vrRXV?OsO15F>KVGth|Ilv!C zW7@Kdr}fp8Urq`U#IJKaW0>j68s3h}k1AK%Z0+i8i@8!hM4kO2H>?Fl9wI*0c+!c= zmJ9)X8~$>@*CFD3z`<{{1o!;Q-XRSSl6OmcLk7r(N1L*KHmWl^7C=|(dV;=ko?JEF z{-LO1c<H>*C{DkM1Yp-$xyj1b^{j~NMK*F5zEi%DBeFVHF6Lh|oFq|r&9iEE#1*?v z#Xf#j$!>op-*`1~K73RstZp^bz=d*b!7EScn|S<6+2y!CQlazR8?BT-pQ^83%p4D? z+a~Zk<;wH&-wq)P_KE6j{B-6d!NfK;(=Q>b$drc3q(0U<UyfD&`5~Q99%Y{Oai!(J z!~dv|iPVm^S*hyVC;UFUB+f9hAH22JdHmUM#B}12-Z0>Ti2Ks_33A&>J{a7Lkx@Wc zbq7u8S4*TSqEfp37_yNGJ+czPh*J*-K(AUw+s`s2WyKvO^&bZ|@w*)I(ev`qO8{<e z<E2dRHpmh*^FY>*Tt4I(usFJ34`{l0y8&E|kV3cLioMq2_8fAZ_=!(XS#krUz6b@I z0lA~b2lMXBJahTm>BJs{#M(b5jIC+Wl7rdDBOc@ZbXZud9#E%<D-HgeEXsu;0yz$X z5XPb@jqBrmc(y{jzC(OBN&wd4yzsq-iR#iRb}jLO+mFHY`@HXLzE-)Ux%W0mXFF;m zs&QMXviz*ucROzOTeW_2>RCXL=EUHBu371}WuIT^T@J!p`V+0$1>WF7g`5Ap<h%H` zpZ9m<I6=(*&$QhpM{(W73EN%o2?^}ZwS;Dz1!z#Izy4Hm^q_icqNtWvzv^(HD@g{q zCK7{{XO|9g^)4<M_(iMqpWKB0=?c1Uo-23o+{{$+`_JdDRs2sZdhL>)3OPWag0V<d zJRkQnx#!19?I;0K^1YMi_{!&{muWbKlUSm4eYc3~tG-T}>$16cc0VtY)sJTSA+<_| z<Xwb&7cR^!{`$(qi=?KV4B*cRXM#V1UMlIhzfg3{i>SESA9dtf%B{99c-el^zcv&p zFP3V}3sRfkCRdn5NfZ7P&&X}fFroCfS*<BjwX%<P&@}!3`Op1IQGP#I{E3`sUw@Ph zzUZ2lWlw-}C{X9CY)P?9cCQ0-w~E?FkJ{`NT&@uxm?1rKvB@#nX(it=CF9wDDcf4f z2hLsENc^KQ`u#vp-&oGu$Q_JMebLZ&%WHlQK2`N}FHH7CNk?1NrlIdm_y&uXi!G1y zp;H^+L^3@#E1rLC;AW}7jAeyfO60C4YVq=`rRjyT4tX48cL4|)bVWf7VF{%xsL5j* z9LlrQi?j_8*_3=@LHUyeEonq1Q6-1k@T?IoKXhhmwBHbyvhudZVp+}~{X@q_{fiwE zLeLLejzF;47gtR%@~O$$Xfv1OaIR~0_rE6Kl643(OTXyL6?wMF(MxP$ufJ5lMGm)m zB8<~LY0&ICTBy$cD6t9n17MG3%ZBG@E`Dh9dijJ`6wd5DOnTbd^XH<u={+H5yCFK{ zUVX-qp!l)B)#IP;nO{4YSXXhyYpqKw^M!5MjDEuNV|i+ih^^bhdpW*BD2rfWQvIrF zPicdmYLc<~%_Dotj>ft2htm5j9Ac&l?P3Wb=ia}oJdsR0=UlLh80ZpHFI9$+FQ{A! z$s@_tb{vW}pFM0ReShUkqRM~G-_D-a({6FtvECkpjH7%O{)x=Uzd@W#%ra}V$l3aM z+uB4f#3U=Kr17hp>pAl$T7x}DJWR&TF&BbL<`0-1?zlMldN!5j5binY89euJI^p!M zjk=&8LfuPJ);lk-f8L&2xS)~$s?Y5!V0`Gt?Qz{S-pFfII4|$qN3J79bC&R`VSepo zNBy+`pG*6y^Cv&yuT$D)W<o+6G8*z0FP?mSm~vXo4n8=3sKk6Ehh6a?C-TppBJAea z(9Zd`_s4$!JTkV&CU9Q<7I~l{N<v+8{KMCQTh#rqM^_$tJebdY`tb?z`5i;!AC9sw zCUu8qLB42p!Ho{py}tFIexlzPB1)gh);*zIj%68iw|{nl_9_!a_1s&AU3yS19VUlq zNUb-Zq(A?Ht5c6($$G=oBqPaBl+>{9PI~ZpQf+^ndPN09GU&S0`Fw8GG<#V`axzFK zKU7ujOv2Sn=qb`XLv}YiH==k4Z+|2>T6jfS--QjAU@WH~&BIBGd0A*ar4H_Lr-V9c zc<~}c4$iKa3$a2%8Bm5(x_5!3{mq&*U>*-=iq+zMlZ0SQg7%mCt4c<(()7X7D^^NG zOBbx<lwPkGj2DePC}V2Cd*|dPhOl6uWeem}7#~A&*r3rlzkSs&FJhXI>eU%(TB!=4 zB?+BpZJvai1{giUUT3X*enG-@h)F77H2ptdn8cKO&maevpjRs>)nV~j3+58g(1`|F z<5t#ArhT@!;c*@JJcF6&aMRBMflHu2nf{`{Bw{R!{<-67{Te};?L;fVWbbH9c9it6 zHBgo>0uD*kw}i1?kMf+_m25qo{F)@H)n2>Yu~CMW60<Yheeo0)9yfGb^%&{vETH$0 zrDnlL=<Ka0L5+O+fL@duQ_skLR$0Oas{pE1ZNt)M@G07bDi&gG!I27B1H@itOtgEO zmCo`RFkn3ohcSzryjH9(xtUcA#VSNMjO;q#b~F@;qzgUik^x;>mJ}5kd2)EnLW#=# z!<^y==tyw%=%rvVOuGlgwBz2M`Iqj$ZT4{flvbh=rO(f!xA8hl5(K9>@+l6%h!Tj( zAf9j898x%9%1^3*IOT2>%t<^|&7z0yv4r0NrV6U<)qTJddw*uA35L~IK#F%QELAC= zkZYHx!fIt<E$uHdoBpf5eBthYTEz?h9W;GyPUA(p$zE01x;tD5I!^v8J~S69mfSkO ztokct_4x&pS%<uAloY1n{IL<fFj}(5Wh^BLrBDCbW@XZ=W)eXY*mMsYr*btgp+tYg zGO54Z!b&2v)C~TSKl+*dpXw8m^U(3Z*!&2tddg}e4js6~vunjaunReGSXFaI(E8RT zH$~s0cPbhJh?^4>I(Ob8W*=V8`O{9&r)9s@$)Nc19gVxsB%T2(%ru)yqkt~rXuzu^ znVuE-$bDWAXqOT+hE8-sK#-fGT`8Oah=po27`4IaRd@~|w?vB&zL<tW>key+`Esfm zL<~5kohXuJ2u%+WPf59$A&Mwa^zrO+qlq|>t+jFQ7^m+`+6sDn97S(wMvY4a4i;y7 zRYz9W(y7pze(Dh}Zc>iPC4@qw+^@lIX{0w-<Y_cY+_S1mgnErme66pUx)d+k+CQK% zE`?PPc{nKzS6|991yAWnozB$ehO6^4stZ=PfC!M!7o7C6p?!Y}3^(B*FX2hWP|$b7 zdRM)fsiR@w1DSg=fy*g=dXB#)z)hx!;+i;l&~r*R3=Iic$?8|=mYZVrGn8Me_Y%c$ zpMzjrl#<N=!duJIdcQyps%zQ=H^(@OrTIBWde-MThj|jUG3O0Xczu<*kah}!R#4Q! z>CHhY5M?5`VPFg#L&eDEWd;IkRIyG9@%k#wHBC%~)}>QYNfUkj>;<8pMM74XTcA4Q zj~0l0OF_JaeR0RF!@+*P9ma9L#F%`B$$sSxrQ_~#ZQK)q=_9r&VDWSU5tF3%Ni#*! z2&iJuGOtP<b?hq{tW|=K;B@S}o4r%g!kQ?zT*S@TefzX9f%JQzWA*YMXb??g4I2&C z)i^kjkf{pIUNS&m1qe_2^)CB3VjKfq3HoY>m9TV21WdvY+QZ0jF{RBaQaO1!{)M8L zI=9J8tHWaI*VE{x=;5Zc)WB4lt87G{@nbfSr-lpbtqT>St2q=tBd-Ho@?dI(S-D`C zI3uDw(bK>bB+?4PlF@op;%=Z@vJTrEJuJf~U~&+<cQ7UG=oE;NNlcWr!%D{Dg^jC> zx$CpK>K~SXZZX|uWpm<owF|boGuTn({hom;nolMz*bhY&)orjTbB5Y9a$OU=(6=6C zC+0li@(}M}PTs;OVOjFUPEESBV6$p|oyUh`?BI8%<-gv_G4daLA|!@*)6EZKEVzG6 zZH5irqsw>%IdXWR!uQv*0MF=1Pg4LEKxnpi$%J7ca{2Ef^cbEL7$<|2$*O;W_A(-z z9e(%H@9Fsa`z`$WA^zDV4GVi6uvfk#B<Cx~hOGt(P=6ot7N`N(WUIaA^c=%LVoOkb z%fKVi3v9Dg=@uyoDRLRvnBb7|L3RnQhufr>5@j&>R$8H_yOz=4xy#8h#YquXgemku z+!A?DhDrN8OrOdJ*!PJL#le^!l!+(+N(7r>@%(-y3EPUdcM;YBNhYv^Fr4cxm{`6@ z2HY4X!a-(U>hVrgAIR=;e_ceUjY&8M5Tgmv=U^Je>m9M${D}kxsT{qp^|Y{1&R=Te zTV(t}SAD#1$2;kEC4IMZPLCf@DL8{)8<wxn9M`)0uW#$_<-%o;sh>|mthSt&+n69n zMx55tp_Zlx8n-Zwf%-p}t8HdALfnpzJHJ%;q5Q@icq2(q`cH~n7{m-dOoD?&fl1?4 zQ+HL7a9^aD4oFf(DN~C4(AQI>2f^-~oQ=3p@6qffc;Wv|_%T!V8z>|EfOsBesnW4t zN6P!h8wFZNZ}#WF=Yl!5)s(Y-xQDtv?HT9gGDXfRjYUByR`VskV*fpu;PN?*G<~JI zVb#f>KEd|w=xRkhg+9=g(eG9AZ5PD1f8Ue&20S;hf|`Ko9lG&0-UiV9@6e!R&H3*R zQFGUfMCZ9sL&;}><8KHws|#YwalAduKUy%6W!zs5l9uNcD4=9`T7S$cYkavF*i+=a z@8+$zZ52yJ|FlEs=DnTGV{PKk&Qsl|I~~&OiJ(MJFGb*Qbfoa*yYBLO`+~>E+4y`F zqjOaIS2Ad={@3bT<C=X093zm^cCI)}ZnW>k@zb?g%e6VzG)<ed3{c}wfV%iQbw>E^ zkR~&fXLMgVS9dtj>TBAS)%<6K|Gh!2Y|AB7p?6Uu$E;B}5*|=0(y!!40cA-#J(eYl z*h(81QsC-(wjkf4JEZbRSWClAPH!Em#vJy*CQR$+_{hUQr+R01EM!f!XzfVo^jQ9= z_1h%Q-KcT~Ym22OVNw}=r*e8_m%v&|s30;3&L>x$E8hGVrQhzOHt~@jDRx0sa$H}` zffKUDHV`8USG|1PInDOT7)HD^R9Y0&Kk0$}P^OC*+S7a{m${SeutT*`@+Rul=)py4 z=fy)*1HY3+9;1!|q!z7W#zl>}UYA1x{i`$T`kf7K6yyp+XD8)4Dn7OIZa4cy--sPO zarKY_r9V!$U-%;qQk%ABff`R4)1u#M%b`u3whS0Ot#U%#{7mQ{$UUyRMc#$T4XN3| z?5&?A`$w=Do(($w`X0RWcXc=g)64@F8&dO$d%R!8lQO>9dOVzY7i}l;W4>?*<7`kI zTZ1T=#UI4z8HLf8{~ziE75fp6HVop45k#~?O(>F+N#l6@PE_91Gc-P?h|NAGjZdKJ zKHJ(i95JYMjMJ=4FN{;BMq4k&FG~es3|v&TI5V~UlW`G}Cj*RPdz<Hp;(i8_L}~8V z9K|)WeifXlrE$H``6h%;XCn_J7(m4MFm6#M5I8sao8Gv@3?x{9i3~)AXowD~2G7+1 zwNp4bkpbBCk%b{gv}>rt$U#E_xg%hU1ouew94O6lpFSGoL)UemmF$4`A6sN@9aP}4 zAhXK`R<{(|u2w6V<k*OYNmmja4-J-r&<wT>k<l_%;&n8HO$n5MCh-WvN>cc^a*H-g zWrIBHZi1>-aYHz9s&h;*qGg)|!w}dcE0oIwVE{b3Y?`HGDIpFipw}WW6|+FsI1BMp zHwybCrzqr<-m`)DSb1KC={RH=%VmX%Scz5@0d*$>m4O804nj%c<>iSW<r>pN9W9r* z8V0s)RBkScd<V=$AI(J{l6_~ZkflXb`h*gqkFpQhEQoO(hp_b_^^W14o(FDVXPCkP zjKmDVU_cBk$DYiWkUq(lxQEG`qwB`D$ly2+g$oeuHXvXX$q8iK5>&0SWrLCfMTJSL z7*<p&6(JzRMIv@;+h|X-l2BQhKv3jaxF963#lWn=Sh%Sh%C*o~+KEiKItGz4XpIoD z4agT_L@c_vIk}?{$kimHP-}w)jN=Bm6&RGP)aLeO7I>0{0Phq;3WyM8G$MhV7;q<S zJQ8YFHeiGZz!MG_oP;@GRXZJ=J3fJNvUnd?W7@)@z-w{Rp>*9@D<wjKipnG5Vf8xk zD<gv;xs+j&VIx0f`I{VXBlA3N1$ys<mA-IAh(P1Woh5^I-=xB=iun&A<}`cJ%sLiH z(G8SI!26G7>3Z+fd@fPlfx?8JDdB8R1Ek54d*rV~@V9w8Zl}!5;fD8RJN<GNT@t@U z;Q30guyO(VqC(L%0TR+m2oNIG?zn*Bp~u@j)72Na>w1tSVEc#FGhY!namxu$EV_j2 z?ZHkppFCRyk}Z%O_D<93Y<Wr0pJee)KD`2VaX_+eng=+@DV!$gw+bdnhF=Frd2GQW zIYQJl#az576il$*G7WJU<uVXk#0a=*5{z@oMj1`)K8L$GmU_q7_fIU4eKh{n`c|q% zQ#Dd3gF*4cK8%!5p-mA54HQHaQAHF`+EssKk6*TPr4QFl4fl)?Pqhk55h5RzB4h{c z<e(oM<)Tm`p=nl-`cQyUoCQ+TP*jAAsUC14rh<Z4klbzo(A5weT9l*%O9+rgNCq;C z5~)hGiISW_AzzVW#1sdy3i8$=l&}UuV-Pg3kyJGl0R)Rw#aSg(w$q95|3@I}O_?S> zC&z|Ge3BTPnaJSAG~kS?wNorW8bmmhi;#0PS~Ui>Gl%mfo0wOTl<UTmRh(O*X$hlc zNKpbn!(7A;_xB0sJ9*(3E32#fjjdRTP*JG%5e3uvDiJ#8bW|Z5h$FNBU1{xwU!u+z zH^`}iNK8Yh$~T?KBZSAn?XsH=!mIEbbvMv&yd;uN68HG89Ich7N(iHB?-UqkRuhYZ zCMm6pp{91vRE%povff6OH1Urmc-IV>Bf-gMC+`o_<ObfH+Qq&=y-H4pfzZ}5zTiJ{ fXvoC6K4ayx57h&-=WqjXKm1+E6yZWc;-by`*>s=6 literal 0 HcmV?d00001 diff --git a/downloads/python3/ibis-python3-client-api-1.1.1-src.tar.bz2 b/downloads/python3/ibis-python3-client-api-1.1.1-src.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a9da4b1c1203afe2b79923a08f80efc925e18259 GIT binary patch literal 50458 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 HM-Td7o#_)q literal 0 HcmV?d00001 diff --git a/src/generate-client-methods.py b/src/generate-client-methods.py index 2a129f4..455c9fa 100755 --- a/src/generate-client-methods.py +++ b/src/generate-client-methods.py @@ -42,8 +42,9 @@ The following options are supported: may be any of the following: * "java" (the default) - * "python" * "php" + * "python" + * "python3" -d <output_dir> The directory in which to write the output code. This defaults to the current directory. @@ -685,6 +686,40 @@ def generate_python_module(app): return PYTHON_MODULE_TEMPLATE % { "licence": comment_out(LICENCE), "classes": classes } +# ========================================================================== +# Code to generate the Python 3 methods module. +# ========================================================================== + +# NOTE: This is almost exactly the same as the Python 2 code, so we just +# re-use all of its code, except the module template, which differs in the +# form of the import statement. + +PYTHON3_MODULE_TEMPLATE = '''# === AUTO-GENERATED - DO NOT EDIT === + +# -------------------------------------------------------------------------- +%(licence)s +# -------------------------------------------------------------------------- + +""" +Web service API methods. This module is fully auto-generated, and contains +the Python equivalent of the XxxMethods Java classes for executing all API +methods. +""" + +from .connection import IbisException + +%(classes)s''' + +def generate_python3_module(app): + """ + Generate the Python 3 code for the entire methods module, containing all + the XxxMethods classes, using the PYTHON3_MODULE_TEMPLATE. + """ + classes = "\n".join(generate_python_class(x) for x in app.classes) + + return PYTHON3_MODULE_TEMPLATE % { "licence": comment_out(LICENCE), + "classes": classes } + # ========================================================================== # Code to generate the PHP client methods classes. # ========================================================================== @@ -883,6 +918,10 @@ if __name__ == "__main__": filename = os.path.join(out_dir, "methods.py") content = generate_python_module(app) update_file_if_changed(filename, content) + elif lang == "python3": + filename = os.path.join(out_dir, "methods.py") + content = generate_python3_module(app) + update_file_if_changed(filename, content) elif lang == "php": for cls in app.classes: filename = os.path.join(out_dir, cls.name+".php") diff --git a/src/python/README b/src/python/README index 600839e..53130d7 100644 --- a/src/python/README +++ b/src/python/README @@ -8,6 +8,9 @@ It MAY work with older versions (possibly back as far as 2.3), if you are lucky, but without the ssl module it will not properly check the server's certificates, and so cannot be guaranteed to be secure. +NOTE: This code is not compatible with Python 3. For Python 3, see the +separate code in the python3 directory. + Usage ----- diff --git a/src/python3/README b/src/python3/README new file mode 100644 index 0000000..4c4fd21 --- /dev/null +++ b/src/python3/README @@ -0,0 +1,13 @@ +Lookup/Ibis web service API python 3 client code +================================================ + +This code for Python 3 has been generated from the Python 2 using the +2to3 tool (plus a couple of manual tweaks). Any changes to the Python 2 +code should probably also be made here, and vice versa. + +Usage +----- + +Refer to example.py for an example of how to use the API from Python. +For more detailed documentation refer to the Javadocs for the Java client +code, which this Python client code mirrors. diff --git a/src/python3/example.py b/src/python3/example.py new file mode 100644 index 0000000..e6429ce --- /dev/null +++ b/src/python3/example.py @@ -0,0 +1,33 @@ +#!/usr/bin/python + +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Author: Dean Rasheed (dev-group@ucs.cam.ac.uk) +# -------------------------------------------------------------------------- + +from ibisclient import * + +conn = createTestConnection() +im = InstitutionMethods(conn) + +people = im.getMembers("CS") + +print("Members of the Computing Service:") +for person in people: + print(" - %s: %s" % (person.identifier.value, person.visibleName)) diff --git a/src/python3/ibisclient/Comodo.crt b/src/python3/ibisclient/Comodo.crt new file mode 100644 index 0000000..20585f1 --- /dev/null +++ b/src/python3/ibisclient/Comodo.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- diff --git a/src/python3/ibisclient/JANET.ca-bundle b/src/python3/ibisclient/JANET.ca-bundle new file mode 100644 index 0000000..9254c41 --- /dev/null +++ b/src/python3/ibisclient/JANET.ca-bundle @@ -0,0 +1,52 @@ +-----BEGIN CERTIFICATE----- +MIIEmDCCA4CgAwIBAgIQS8gUAy8H+mqk8Nop32F5ujANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNMDkwNTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjA2MQswCQYD +VQQGEwJOTDEPMA0GA1UEChMGVEVSRU5BMRYwFAYDVQQDEw1URVJFTkEgU1NMIENB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw+NIxC9cwcupmf0booNd +ij2tOtDipEMfTQ7+NSUwpWkbxOjlwY9UfuFqoppcXN49/ALOlrhfj4NbzGBAkPjk +tjolnF8UUeyx56+eUKExVccCvaxSin81joL6hK0V/qJ/gxA6VVOULAEWdJRUYyij +8lspPZSIgCDiFFkhGbSkmOFg5vLrooCDQ+CtaPN5GYtoQ1E/iptBhQw1jF218bbl +p8ODtWsjb9Sl61DllPFKX+4nSxQSFSRMDc9ijbcAIa06Mg9YC18em9HfnY6pGTVQ +L0GprTvG4EWyUzl/Ib8iGodcNK5Sbwd9ogtOnyt5pn0T3fV/g3wvWl13eHiRoBS/ +fQIDAQABo4IBPjCCATowHwYDVR0jBBgwFoAUoXJfJhsomEOVXQc31YWWnUvSw0Uw +HQYDVR0OBBYEFAy9k2gM896ro0lrKzdXR+qQ47ntMA4GA1UdDwEB/wQEAwIBBjAS +BgNVHRMBAf8ECDAGAQH/AgEAMBgGA1UdIAQRMA8wDQYLKwYBBAGyMQECAh0wRAYD +VR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VS +Rmlyc3QtSGFyZHdhcmUuY3JsMHQGCCsGAQUFBwEBBGgwZjA9BggrBgEFBQcwAoYx +aHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VUTkFkZFRydXN0U2VydmVyX0NBLmNy +dDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG +9w0BAQUFAAOCAQEATiPuSJz2hYtxxApuc5NywDqOgIrZs8qy1AGcKM/yXA4hRJML +thoh45gBlA5nSYEevj0NTmDa76AxTpXv8916WoIgQ7ahY0OzUGlDYktWYrA0irkT +Q1mT7BR5iPNIk+idyfqHcgxrVqDDFY1opYcfcS3mWm08aXFABFXcoEOUIEU4eNe9 +itg5xt8Jt1qaqQO4KBB4zb8BG1oRPjj02Bs0ec8z0gH9rJjNbUcRkEy7uVvYcOfV +r7bMxIbmdcCeKbYrDyqlaQIN4+mitF3A884saoU4dmHGSYKrUbOCprlBmCiY+2v+ +ihb/MX5UR6g83EMmqZsFt57ANEORMNQywxFa4Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIQSEus8arH1xND0aJ0NUmXJTANBgkqhkiG9w0BAQUFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTA1MDYwNzA4MDkxMFoXDTIwMDUzMDEwNDgzOFow +gZcxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtl +IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMY +aHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR8wHQYDVQQDExZVVE4tVVNFUkZpcnN0 +LUhhcmR3YXJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsffDOD+0 +qH/POYJRZ9Btn9L/WPPnnyvsDYlUmbk4mRb34CF5SMK7YXQSlh08anLVPBBnOjnt +KxPNZuuVCTOkbJex6MbswXV5nEZejavQav25KlUXEFSzGfCa9vGxXbanbfvgcRdr +ooj7AN/+GjF3DJoBerEy4ysBBzhuw6VeI7xFm3tQwckwj9vlK3rTW/szQB6g1ZgX +vIuHw4nTXaCOsqqq9o5piAbF+okh8widaS4JM5spDUYPjMxJNLBpUb35Bs1orWZM +vD6sYb0KiA7I3z3ufARMnQpea5HW7sftKI2rTYeJc9BupNAeFosU4XZEA39jrOTN +SZzFkvSrMqFIWwIDAQABo4GqMIGnMB8GA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8D +veAky1QaMB0GA1UdDgQWBBShcl8mGyiYQ5VdBzfVhZadS9LDRTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8v +Y3JsLnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RFeHRlcm5hbENBUm9vdC5jcmwwDQYJ +KoZIhvcNAQEFBQADggEBADzse+Cuow6WbTDXhcbSaFtFWoKmNA+wyZIjXhFtCBGy +dAkjOjUlc1heyrl8KPpH7PmgA1hQtlPvjNs55Gfp2MooRtSn4PU4dfjny1y/HRE8 +akCbLURW0/f/BSgyDBXIZEWT6CEkjy3aeoR7T8/NsiV8dxDTlNEEkaglHAkiD31E +NREU768A/l7qX46w2ZJZuvwTlqAYAVbO2vYoC7Gv3VxPXLLzj1pxz+0YrWOIHY6V +9+qV5x+tkLiECEeFfyIvGh1IMNZMCNg3GWcyK+tc0LL8blefBDVekAB+EcfeEyrN +pG1FJseIVqDwavfY5/wnfmcI0L36tsNhAgFlubgvz1o= +-----END CERTIFICATE----- diff --git a/src/python3/ibisclient/__init__.py b/src/python3/ibisclient/__init__.py new file mode 100644 index 0000000..c61ea9f --- /dev/null +++ b/src/python3/ibisclient/__init__.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Author: Dean Rasheed (dev-group@ucs.cam.ac.uk) +# -------------------------------------------------------------------------- + +from .connection import * +from .dto import * +from .methods import * diff --git a/src/python3/ibisclient/cacerts.txt b/src/python3/ibisclient/cacerts.txt new file mode 100644 index 0000000..d7f398d --- /dev/null +++ b/src/python3/ibisclient/cacerts.txt @@ -0,0 +1,77 @@ +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEmDCCA4CgAwIBAgIQS8gUAy8H+mqk8Nop32F5ujANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNMDkwNTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjA2MQswCQYD +VQQGEwJOTDEPMA0GA1UEChMGVEVSRU5BMRYwFAYDVQQDEw1URVJFTkEgU1NMIENB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw+NIxC9cwcupmf0booNd +ij2tOtDipEMfTQ7+NSUwpWkbxOjlwY9UfuFqoppcXN49/ALOlrhfj4NbzGBAkPjk +tjolnF8UUeyx56+eUKExVccCvaxSin81joL6hK0V/qJ/gxA6VVOULAEWdJRUYyij +8lspPZSIgCDiFFkhGbSkmOFg5vLrooCDQ+CtaPN5GYtoQ1E/iptBhQw1jF218bbl +p8ODtWsjb9Sl61DllPFKX+4nSxQSFSRMDc9ijbcAIa06Mg9YC18em9HfnY6pGTVQ +L0GprTvG4EWyUzl/Ib8iGodcNK5Sbwd9ogtOnyt5pn0T3fV/g3wvWl13eHiRoBS/ +fQIDAQABo4IBPjCCATowHwYDVR0jBBgwFoAUoXJfJhsomEOVXQc31YWWnUvSw0Uw +HQYDVR0OBBYEFAy9k2gM896ro0lrKzdXR+qQ47ntMA4GA1UdDwEB/wQEAwIBBjAS +BgNVHRMBAf8ECDAGAQH/AgEAMBgGA1UdIAQRMA8wDQYLKwYBBAGyMQECAh0wRAYD +VR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VS +Rmlyc3QtSGFyZHdhcmUuY3JsMHQGCCsGAQUFBwEBBGgwZjA9BggrBgEFBQcwAoYx +aHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VUTkFkZFRydXN0U2VydmVyX0NBLmNy +dDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG +9w0BAQUFAAOCAQEATiPuSJz2hYtxxApuc5NywDqOgIrZs8qy1AGcKM/yXA4hRJML +thoh45gBlA5nSYEevj0NTmDa76AxTpXv8916WoIgQ7ahY0OzUGlDYktWYrA0irkT +Q1mT7BR5iPNIk+idyfqHcgxrVqDDFY1opYcfcS3mWm08aXFABFXcoEOUIEU4eNe9 +itg5xt8Jt1qaqQO4KBB4zb8BG1oRPjj02Bs0ec8z0gH9rJjNbUcRkEy7uVvYcOfV +r7bMxIbmdcCeKbYrDyqlaQIN4+mitF3A884saoU4dmHGSYKrUbOCprlBmCiY+2v+ +ihb/MX5UR6g83EMmqZsFt57ANEORMNQywxFa4Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIQSEus8arH1xND0aJ0NUmXJTANBgkqhkiG9w0BAQUFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTA1MDYwNzA4MDkxMFoXDTIwMDUzMDEwNDgzOFow +gZcxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtl +IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMY +aHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR8wHQYDVQQDExZVVE4tVVNFUkZpcnN0 +LUhhcmR3YXJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsffDOD+0 +qH/POYJRZ9Btn9L/WPPnnyvsDYlUmbk4mRb34CF5SMK7YXQSlh08anLVPBBnOjnt +KxPNZuuVCTOkbJex6MbswXV5nEZejavQav25KlUXEFSzGfCa9vGxXbanbfvgcRdr +ooj7AN/+GjF3DJoBerEy4ysBBzhuw6VeI7xFm3tQwckwj9vlK3rTW/szQB6g1ZgX +vIuHw4nTXaCOsqqq9o5piAbF+okh8widaS4JM5spDUYPjMxJNLBpUb35Bs1orWZM +vD6sYb0KiA7I3z3ufARMnQpea5HW7sftKI2rTYeJc9BupNAeFosU4XZEA39jrOTN +SZzFkvSrMqFIWwIDAQABo4GqMIGnMB8GA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8D +veAky1QaMB0GA1UdDgQWBBShcl8mGyiYQ5VdBzfVhZadS9LDRTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8v +Y3JsLnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RFeHRlcm5hbENBUm9vdC5jcmwwDQYJ +KoZIhvcNAQEFBQADggEBADzse+Cuow6WbTDXhcbSaFtFWoKmNA+wyZIjXhFtCBGy +dAkjOjUlc1heyrl8KPpH7PmgA1hQtlPvjNs55Gfp2MooRtSn4PU4dfjny1y/HRE8 +akCbLURW0/f/BSgyDBXIZEWT6CEkjy3aeoR7T8/NsiV8dxDTlNEEkaglHAkiD31E +NREU768A/l7qX46w2ZJZuvwTlqAYAVbO2vYoC7Gv3VxPXLLzj1pxz+0YrWOIHY6V +9+qV5x+tkLiECEeFfyIvGh1IMNZMCNg3GWcyK+tc0LL8blefBDVekAB+EcfeEyrN +pG1FJseIVqDwavfY5/wnfmcI0L36tsNhAgFlubgvz1o= +-----END CERTIFICATE----- diff --git a/src/python3/ibisclient/connection.py b/src/python3/ibisclient/connection.py new file mode 100644 index 0000000..dfc5eac --- /dev/null +++ b/src/python3/ibisclient/connection.py @@ -0,0 +1,318 @@ +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Author: Dean Rasheed (dev-group@ucs.cam.ac.uk) +# -------------------------------------------------------------------------- + +""" +Connection classes to connect to Lookup/Ibis web service and allow API +methods to be invoked. +""" + +import base64 +from datetime import date +from http.client import HTTPSConnection +import socket +import os +import urllib.parse + +from .dto import IbisDto, IbisError, IbisResult, IbisResultParser + +try: + import ssl + _have_ssl = True +except ImportError: + print("WARNING: No SSL support - connection may be insecure") + _have_ssl = False + +_MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + +class IbisException(Exception): + """ + Exception thrown when a web service API method fails. This is wrapper + around the IbisError object returned by the server, which contains the + full details of what went wrong. + + NOTE: This exception class deliberately breaks with the Python style + guide's naming convention for exception classes, for consistency with + the Java code. IbisError refers to the error DTO contained in this + exception. + """ + def __init__(self, error): + Exception.__init__(self, error.message) + self.error = error + + def get_error(self): + """ + Returns the underlying error from the server. + """ + return self.error + +class HTTPSValidatingConnection(HTTPSConnection): + """ + Class extending the standard HTTPSConnection class from httplib, so + that it checks the server's certificates, validating them against the + specified CA certificates. + """ + def __init__(self, host, port, ca_certs): + HTTPSConnection.__init__(self, host, port) + self.ca_certs = ca_certs + + def connect(self): + """ + Overridden connect() method to wrap the socket using an SSLSocket, + and check the server certificates. + """ + try: + self.sock = socket.create_connection((self.host, self.port)) + except AttributeError: + HTTPSConnection.connect(self) + + if not _have_ssl: + # No SSL available - insecure connection + print("WARNING: No SSL support - connection may be insecure") + elif self.ca_certs: + # Wrap the socket in an SSLSocket, and tell it to validate + # the server certificates. Note that this does not check that + # the certificate's host matches, so we must do that ourselves. + self.sock = ssl.wrap_socket(self.sock, + ca_certs = self.ca_certs, + cert_reqs = ssl.CERT_REQUIRED, + ssl_version = ssl.PROTOCOL_TLSv1) + + cert = self.sock.getpeercert() + cert_hosts = [] + host_valid = False + + if "subject" in cert: + for x in cert["subject"]: + if x[0][0] == "commonName": + cert_hosts.append(x[0][1]) + if "subjectAltName" in cert: + for x in cert["subjectAltName"]: + if x[0] == "dns": + cert_hosts.append(x[1]) + + for cert_host in cert_hosts: + if self.host.startswith(cert_host): + host_valid = True + + if not host_valid: + raise ssl.SSLError("Host name '%s' doesn't match "\ + "certificate host %s"\ + % (self.host, str(cert_hosts))) + else: + # No CA certificates supplied, so can't validate the server + # certificates, but we still wrap the socket in an SSLSocket + # so that all data is encrypted. + self.sock = ssl.wrap_socket(self.sock, + ca_certs = None, + cert_reqs = ssl.CERT_NONE, + ssl_version = ssl.PROTOCOL_TLSv1) + +class IbisClientConnection: + """ + Class to connect to the Lookup/Ibis server and invoke web service API + methods. + """ + def __init__(self, host, port, url_base, check_certs): + self.host = host + self.port = port + self.url_base = url_base + + if not self.url_base.startswith("/"): + self.url_base = "/%s" % self.url_base + if not self.url_base.endswith("/"): + self.url_base = "%s/" % self.url_base + + if check_certs: + ibisclient_dir = os.path.realpath(os.path.dirname(__file__)) + self.ca_certs = os.path.join(ibisclient_dir, "cacerts.txt") + else: + self.ca_certs = None + + self.username = None + self.password = None + self.set_username("anonymous") + + def _update_authorization(self): + credentials = "%s:%s" % (self.username, self.password) + credential_bytes = bytes(credentials, "UTF-8") + base64_credentials = str(base64.b64encode(credential_bytes), "UTF-8") + self.authorization = "Basic %s" % base64_credentials + + def set_username(self, username): + """ + Set the username to use when connecting to the Lookup/Ibis web + service. By default connections are anonymous, which gives read-only + access. This method enables authentication as a group, using the + group's password, which gives read/write access and also access to + certain non-public data, based on the group's privileges. + + This method may be called at any time, and affects all subsequent + access using this connection, but does not affect any other + IbisClientConnection objects. + """ + self.username = username + self._update_authorization() + + def set_password(self, password): + """ + Set the password to use when connecting to the Lookup/Ibis web + service. This is only necessary when connecting as a group, in + which case it should be that group's password. + """ + self.password = password + self._update_authorization() + + def _params_to_strings(self, params): + """ + Convert the values in a parameter map into strings suitable for + sending to the server. Any null values will be omitted. + """ + new_params = {} + for key, value in params.items(): + if value != None: + if isinstance(value, bool): + if value: new_params[key] = "true" + else: new_params[key] = "false" + elif isinstance(value, date): + new_params[key] = "%02d %s %d" % (value.day, + _MONTHS[value.month-1], + value.year) + elif isinstance(value, list) or isinstance(value, tuple): + new_params[key] = ",".join(value) + elif isinstance(value, IbisDto): + new_params[key] = value.encoded_string() + elif not isinstance(value, str): + new_params[key] = str(value) + else: + new_params[key] = value + + return new_params + + def _build_url(self, path, path_params={}, query_params={}): + """ + Build the full URL needed to invoke a method in the web service API. + + The path may contain standard Python format specifiers, which will + be substituted from the path parameters (suitably URL-encoded). Thus + for example, given the following arguments: + + * path = "api/v1/person/%(scheme)s/%(identifier)s" + * path_params = {"scheme": "crsid", "identifier": "dar17"} + * query_params = {"fetch": "email,title"} + + This method will create a URL like the following: + + api/v1/person/crsid/dar17?fetch=email%2Ctitle + + Note that all parameter values are automatically URL-encoded. + """ + for key, value in path_params.items(): + path_params[key] = urllib.parse.quote_plus(value) + path = path % path_params + + if "flatten" not in query_params: + query_params["flatten"] = "true" + path += "?%s" % urllib.parse.urlencode(query_params) + + if path.startswith("/"): + return "%s%s" % (self.url_base, path[1:]) + return "%s%s" % (self.url_base, path) + + def invoke_method(self, method, path, path_params={}, + query_params={}, form_params={}): + """ + Invoke a web service GET, POST, PUT or DELETE method. + + The path should be the relative path to the method with standard + Python format specifiers for any path parameters, for example + "/api/v1/person/%(scheme)s/%(identifier)s". Any path parameters + specified are then substituted into the path. + """ + path_params = self._params_to_strings(path_params) + query_params = self._params_to_strings(query_params) + form_params = self._params_to_strings(form_params) + + conn = HTTPSValidatingConnection(self.host, self.port, self.ca_certs) + url = self._build_url(path, path_params, query_params) + headers = {"Accept": "application/xml", + "Authorization": self.authorization} + + if form_params: + body = urllib.parse.urlencode(form_params) + conn.request(method, url, body, headers) + else: + conn.request(method, url, headers=headers) + + response = conn.getresponse() + content_type = response.getheader("Content-type") + if content_type != "application/xml": + error = IbisError({"status": response.status, + "code": response.reason}) + error.message = "Unexpected result from server" + error.details = response.read() + + result = IbisResult() + result.error = error + + return result + + parser = IbisResultParser() + result = parser.parse_xml(response.read()) + conn.close() + + return result + +def createConnection(): + """ + Create an IbisClientConnection to the Lookup/Ibis web service API at + https://www.lookup.cam.ac.uk/. + + The connection is initially anonymous, but this may be changed using + its set_username() and set_password() methods. + """ + return IbisClientConnection("www.lookup.cam.ac.uk", 443, "", True) + +def createTestConnection(): + """ + Create an IbisClientConnection to the Lookup/Ibis test web service API + at https://lookup-test.csx.cam.ac.uk/. + + The connection is initially anonymous, but this may be changed using + its set_username() and set_password() methods. + + NOTE: This test server is not guaranteed to always be available, and + the data in it may be out of sync with the data on the live system. + """ + return IbisClientConnection("lookup-test.csx.cam.ac.uk", 443, "", True) + +def createLocalConnection(): + """ + Create an IbisClientConnection to a Lookup/Ibis web service API running + locally on https://localhost:8443/ibis/. + + The connection is initially anonymous, but this may be changed using + its set_username() and set_password() methods. + + This is intended for testing during development. The local server is + assumed to be using self-signed certificates, which will not be checked. + """ + return IbisClientConnection("localhost", 8443, "ibis", False) diff --git a/src/python3/ibisclient/dto.py b/src/python3/ibisclient/dto.py new file mode 100644 index 0000000..c0a7ac9 --- /dev/null +++ b/src/python3/ibisclient/dto.py @@ -0,0 +1,685 @@ +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Author: Dean Rasheed (dev-group@ucs.cam.ac.uk) +# -------------------------------------------------------------------------- + +""" +DTO classes for transferring data from the server to client in the web +service API. + +All web service API methods return an instance or a list of one of these +DTO classes, or a primitive type such as a bool, int or string. + +In the case of an error, an IbisException will be raised which will +contain an instance of an IbisError DTO. +""" + +import base64 +from datetime import date +from xml.parsers import expat + +import sys +if sys.hexversion < 0x02040000: + from sets import Set as set + +_MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + +class IbisDto(object): + """ + Base class for all DTO classes. This defines a couple of methods used + when unmarshalling DTOs from XML. + """ + # All properties + __slots__ = [] + + # Properties marked as @XmlAttribte in the JAXB class + xml_attrs = set() + + # Properties marked as @XmlElement in the JAXB class + xml_elems = set() + + # Properties marked as @XmlElementWrapper in the JAXB class + xml_arrays = set() + + def __init__(self, attrs={}): + """ + Create an IbisDto from the attributes of an XML node. This just + sets the properties marked as @XmlAttribute in the JAXB class. + """ + for attr in self.__class__.__slots__: + setattr(self, attr, None) + for attr in self.__class__.xml_attrs: + setattr(self, attr, attrs.get(attr)) + + def start_child_element(self, tagname): + """ + Start element callback invoked during XML parsing when the opening + tag of a child element is encountered. This creates and returns any + properties marked as @XmlElementWrapper in the JAXB class, so that + child collections can be populated. + """ + if tagname in self.__class__.xml_arrays: + if getattr(self, tagname) == None: setattr(self, tagname, []) + return getattr(self, tagname) + return None + + def end_child_element(self, tagname, data): + """ + End element callback invoked during XML parsing when the end tag of + a child element is encountered, and the tag's data is available. This + sets the value of any properties marked as @XmlElement in the JAXB + class. + """ + if tagname in self.__class__.xml_elems: + setattr(self, tagname, data) + +# -------------------------------------------------------------------------- +# IbisPerson: see uk.ac.cam.ucs.ibis.dto.IbisPerson.java +# -------------------------------------------------------------------------- +class IbisPerson(IbisDto): + """ + Class representing a person returned by the web services API. Note that + the identifier is the person's primary identifier (typically their CRSid), + regardless of which identifier was used to query for the person. + """ + __slots__ = ["cancelled", "identifier", "displayName", "registeredName", + "surname", "visibleName", "misAffiliation", "identifiers", + "attributes", "institutions", "groups", "directGroups", + "id", "ref", "unflattened"] + + xml_attrs = set(["cancelled", "id", "ref"]) + + xml_elems = set(["identifier", "displayName", "registeredName", + "surname", "visibleName", "misAffiliation"]) + + xml_arrays = set(["identifiers", "attributes", "institutions", + "groups", "directGroups"]) + + def __init__(self, attrs={}): + """ Create an IbisPerson from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.cancelled != None: + self.cancelled = self.cancelled.lower() == "true" + self.unflattened = False + + def is_staff(self): + """ + Returns true if the person is a member of staff. + + Note that this tests for an misAffiliation of "", "staff" or + "staff,student" since some members of staff will have a blank + misAffiliation. + """ + return self.misAffiliation == None or\ + self.misAffiliation != "student"; + + def is_student(self): + """ + Returns true if the person is a student. + + This tests for an misAffiliation of "student" or "staff,student". + """ + return self.misAffiliation != None and\ + self.misAffiliation.find("student") != -1; + + def unflatten(self, em): + """ Unflatten a single IbisPerson. """ + if self.ref: + person = em.get_person(self.ref) + if not person.unflattened: + person.unflattened = True + unflatten_insts(em, person.institutions) + unflatten_groups(em, person.groups) + unflatten_groups(em, person.directGroups) + return person + return self + +def unflatten_people(em, people): + """ Unflatten a list of IbisPerson objects (done in place). """ + if people: + for idx, person in enumerate(people): + people[idx] = person.unflatten(em) + +# -------------------------------------------------------------------------- +# IbisInstitution: see uk.ac.cam.ucs.ibis.dto.IbisInstitution.java +# -------------------------------------------------------------------------- +class IbisInstitution(IbisDto): + """ + Class representing an institution returned by the web services API. + """ + __slots__ = ["cancelled", "instid", "name", "acronym", + "attributes", "contactRows", "members", "parentInsts", + "childInsts", "groups", "membersGroups", "managedByGroups", + "id", "ref", "unflattened"] + + xml_attrs = set(["cancelled", "instid", "id", "ref"]) + + xml_elems = set(["name", "acronym"]) + + xml_arrays = set(["attributes", "contactRows", "members", + "parentInsts", "childInsts", "groups", + "membersGroups", "managedByGroups"]) + + def __init__(self, attrs={}): + """ Create an IbisInstitution from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.cancelled != None: + self.cancelled = self.cancelled.lower() == "true" + self.unflattened = False + + def unflatten(self, em): + """ Unflatten a single IbisInstitution. """ + if self.ref: + inst = em.get_institution(self.ref) + if not inst.unflattened: + inst.unflattened = True + unflatten_contact_rows(em, inst.contactRows) + unflatten_people(em, inst.members) + unflatten_insts(em, inst.parentInsts) + unflatten_insts(em, inst.childInsts) + unflatten_groups(em, inst.groups) + unflatten_groups(em, inst.membersGroups) + unflatten_groups(em, inst.managedByGroups) + return inst + return self + +def unflatten_insts(em, insts): + """ Unflatten a list of IbisInstitution objects (done in place). """ + if insts: + for idx, inst in enumerate(insts): + insts[idx] = inst.unflatten(em) + +# -------------------------------------------------------------------------- +# IbisGroup: see uk.ac.cam.ucs.ibis.dto.IbisGroup.java +# -------------------------------------------------------------------------- +class IbisGroup(IbisDto): + """ + Class representing a group returned by the web services API. + """ + __slots__ = ["cancelled", "groupid", "name", "title", "description", + "email", "membersOfInst", "members", "directMembers", + "owningInsts", "managesInsts", "managesGroups", + "managedByGroups", "readsGroups", "readByGroups", + "includesGroups", "includedByGroups", + "id", "ref", "unflattened"] + + xml_attrs = set(["cancelled", "groupid", "id", "ref"]) + + xml_elems = set(["name", "title", "description", "emails", + "membersOfInst"]) + + xml_arrays = set(["members", "directMembers", + "owningInsts", "managesInsts", + "managesGroups", "managedByGroups", + "readsGroups", "readByGroups", + "includesGroups", "includedByGroups"]) + + def __init__(self, attrs={}): + """ Create an IbisGroup from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.cancelled != None: + self.cancelled = self.cancelled.lower() == "true" + self.unflattened = False + + def unflatten(self, em): + """ Unflatten a single IbisGroup. """ + if self.ref: + group = em.get_group(self.ref) + if not group.unflattened: + group.unflattened = True + if group.membersOfInst: + group.membersOfInst = group.membersOfInst.unflatten(em) + unflatten_people(em, group.members) + unflatten_people(em, group.directMembers) + unflatten_insts(em, group.owningInsts) + unflatten_insts(em, group.managesInsts) + unflatten_groups(em, group.managesGroups) + unflatten_groups(em, group.managedByGroups) + unflatten_groups(em, group.readsGroups) + unflatten_groups(em, group.readByGroups) + unflatten_groups(em, group.includesGroups) + unflatten_groups(em, group.includedByGroups) + return group + return self + +def unflatten_groups(em, groups): + """ Unflatten a list of IbisGroup objects (done in place). """ + if groups: + for idx, group in enumerate(groups): + groups[idx] = group.unflatten(em) + +# -------------------------------------------------------------------------- +# IbisIdentifier: see uk.ac.cam.ucs.ibis.dto.IbisIdentifier.java +# -------------------------------------------------------------------------- +class IbisIdentifier(IbisDto): + """ + Class representing a person's identifier, for use by the web services + API. + """ + __slots__ = ["scheme", "value"] + + xml_attrs = set(["scheme"]) + +# -------------------------------------------------------------------------- +# IbisAttribute: see uk.ac.cam.ucs.ibis.dto.IbisAttribute.java +# -------------------------------------------------------------------------- +class IbisAttribute(IbisDto): + """ + Class representing an attribute of a person or institution returned by + the web services API. Note that for institution attributes, the instid, + visibility and owningGroupid fields will be null. + """ + __slots__ = ["attrid", "scheme", "value", "binaryData", "comment", + "instid", "visibility", "effectiveFrom", "effectiveTo", + "owningGroupid"] + + xml_attrs = set(["attrid", "scheme", "instid", "visibility", + "effectiveFrom", "effectiveTo", "owningGroupid"]) + + xml_elems = set(["value", "binaryData", "comment"]) + + def __init__(self, attrs={}): + """ Create an IbisAttribute from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.attrid != None: + self.attrid = int(self.attrid) + if self.effectiveFrom != None: + self.effectiveFrom = parse_date(self.effectiveFrom) + if self.effectiveTo != None: + self.effectiveTo = parse_date(self.effectiveTo) + + def end_child_element(self, tagname, data): + """ + Overridden end element callback to decode binary data. + """ + IbisDto.end_child_element(self, tagname, data) + if tagname == "binaryData" and self.binaryData != None: + self.binaryData = base64.b64decode(self.binaryData) + + def encoded_string(self): + """ + Encode this attribute as an ASCII string suitable for passing as a + parameter to a web service API method. This string is compatible with + {@link #valueOf(java.lang.String)} on the corresponding Java class, + used on the server to decode the attribute parameter. + + NOTE: This requires that the attribute's {@link #scheme} field be + set, and typically the {@link #value} or {@link #binaryData} should + also be set. + """ + if not self.scheme: + raise ValueError("Attribute scheme must be set") + + result = "scheme:%s" % base64.b64encode(self.scheme) + if self.attrid != None: + result = "%s,attrid:%d" % (result, self.attrid) + if self.value != None: + result = "%s,value:%s" % (result, base64.b64encode(self.value)) + if self.binaryData != None: + result = "%s,binaryData:%s" %\ + (result, base64.b64encode(self.binaryData)) + if self.comment != None: + result = "%s,comment:%s" %\ + (result, base64.b64encode(self.comment)) + if self.instid != None: + result = "%s,instid:%s" %\ + (result, base64.b64encode(self.instid)) + if self.visibility != None: + result = "%s,visibility:%s" %\ + (result, base64.b64encode(self.visibility)) + if self.effectiveFrom != None: + result = "%s,effectiveFrom:%02d %s %d" %\ + (result, + self.effectiveFrom.day, + _MONTHS[self.effectiveFrom.month-1], + self.effectiveFrom.year) + if self.effectiveTo != None: + result = "%s,effectiveTo:%02d %s %d" %\ + (result, + self.effectiveTo.day, + _MONTHS[self.effectiveTo.month-1], + self.effectiveTo.year) + if self.owningGroupid != None: + result = "%s,owningGroupid:%s" %\ + (result, base64.b64encode(self.owningGroupid)) + return result + +def parse_date(s): + """ Parse a date string from XML. """ + s = s.strip() + return date(int(s[:4]), int(s[5:7]), int(s[8:10])) + +# -------------------------------------------------------------------------- +# IbisError: see uk.ac.cam.ucs.ibis.dto.IbisError.java +# -------------------------------------------------------------------------- +class IbisError(IbisDto): + """ + Class representing an error returned by the web services API. + """ + __slots__ = ["status", "code", "message", "details"] + + xml_attrs = set(["status"]) + + xml_elems = set(["code", "message", "details"]) + + def __init__(self, attrs={}): + """ Create an IbisError from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.status != None: + self.status = int(self.status) + +# -------------------------------------------------------------------------- +# IbisAttributeScheme: see uk.ac.cam.ucs.ibis.dto.IbisAttributeScheme.java +# -------------------------------------------------------------------------- +class IbisAttributeScheme(IbisDto): + """ + Class representing an attribute scheme. This may apply to attributes of + people or institutions. + """ + __slots__ = ["schemeid", "precedence", "ldapName", "displayName", + "dataType", "multiValued", "multiLined", "searchable", + "regexp"] + + xml_attrs = set(["schemeid", "precedence", "multiValued", "multiLined", + "searchable"]) + + xml_elems = set(["ldapName", "displayName", "dataType", "regexp"]) + + def __init__(self, attrs={}): + """ + Create an IbisAttributeScheme from the attributes of an XML node. + """ + IbisDto.__init__(self, attrs) + if self.precedence != None: + self.precedence = int(self.precedence) + if self.multiValued != None: + self.multiValued = self.multiValued.lower() == "true" + if self.multiLined != None: + self.multiLined = self.multiLined.lower() == "true" + if self.searchable != None: + self.searchable = self.searchable.lower() == "true" + +# -------------------------------------------------------------------------- +# IbisContactRow: see uk.ac.cam.ucs.ibis.dto.IbisContactRow.java +# -------------------------------------------------------------------------- +class IbisContactRow(IbisDto): + """ + Class representing an institution contact row, for use by the web + services API. + """ + __slots__ = ["description", "bold", "italic", "addresses", "emails", + "people", "phoneNumbers", "webPages", "unflattened"] + + xml_attrs = set(["bold", "italic"]) + + xml_elems = set(["description"]) + + xml_arrays = set(["addresses", "emails", "people", "phoneNumbers", + "webPages"]) + + def __init__(self, attrs={}): + """ Create an IbisContactRow from the attributes of an XML node. """ + IbisDto.__init__(self, attrs) + if self.bold != None: + self.bold = self.bold.lower() == "true" + if self.italic != None: + self.italic = self.italic.lower() == "true" + self.unflattened = False + + def unflatten(self, em): + """ Unflatten a single IbisContactRow. """ + if not self.unflattened: + self.unflattened = True + unflatten_people(em, self.people) + return self + +def unflatten_contact_rows(em, contact_rows): + """ Unflatten a list of IbisContactRow objects (done in place). """ + if contact_rows: + for idx, contact_row in enumerate(contact_rows): + contact_rows[idx] = contact_row.unflatten(em) + +# -------------------------------------------------------------------------- +# IbisContactPhoneNumber: +# see uk.ac.cam.ucs.ibis.dto.IbisContactPhoneNumber.java +# -------------------------------------------------------------------------- +class IbisContactPhoneNumber(IbisDto): + """ + Class representing a phone number held on an institution contact row, for + use by the web services API. + """ + __slots__ = ["phoneType", "number", "comment"] + + xml_attrs = set(["phoneType"]) + + xml_elems = set(["number", "comment"]) + +# -------------------------------------------------------------------------- +# IbisContactWebPage: see uk.ac.cam.ucs.ibis.dto.IbisContactWebPage.java +# -------------------------------------------------------------------------- +class IbisContactWebPage(IbisDto): + """ + Class representing a web page referred to by an institution contact row, + for use by the web services API. + """ + __slots__ = ["url", "label"] + + xml_elems = set(["url", "label"]) + +# -------------------------------------------------------------------------- +# IbisResult: see uk.ac.cam.ucs.ibis.dto.IbisResult.java +# -------------------------------------------------------------------------- +class IbisResult(IbisDto): + """ + Class representing the top-level container for all results. + + This may be just a simple textual value or it may contain more complex + entities such as people, institutions, groups, attributes, etc. + """ + __slots__ = ["version", "value", "person", "institution", "group", + "identifier", "attribute", "error", "people", + "institutions", "groups", "attributes", "attributeSchemes", + "entities"] + + xml_attrs = set(["version"]) + + xml_elems = set(["value", "person", "institution", "group", + "identifier", "attribute", "error", "entities"]) + + xml_arrays = set(["people", "institutions", "groups", + "attributes", "attributeSchemes"]) + + class Entities(IbisDto): + """ + Nested class to hold the full details of all the entities returned + in a result. This is used only in the flattened result representation, + where each of these entities will have a unique textual ID, and be + referred to from the top-level objects returned (and by each other). + + In the hierarchical representation, this is not used, since all + entities returned will be at the top-level, or directly contained in + those top-level entities. + """ + __slots__ = ["people", "institutions", "groups"] + + xml_arrays = set(["people", "institutions", "groups"]) + + class EntityMap: + """ + Nested class to assist during the unflattening process, maintaining + efficient maps from IDs to entities (people, institutions and groups). + """ + def __init__(self, result): + """ + Construct an entity map from a flattened IbisResult. + """ + self.people_by_id = {} + self.insts_by_id = {} + self.groups_by_id = {} + + if result.entities.people: + for person in result.entities.people: + self.people_by_id[person.id] = person + if result.entities.institutions: + for inst in result.entities.institutions: + self.insts_by_id[inst.id] = inst + if result.entities.groups: + for group in result.entities.groups: + self.groups_by_id[group.id] = group + + def get_person(self, id): + return self.people_by_id.get(id) + + def get_institution(self, id): + return self.insts_by_id.get(id) + + def get_group(self, id): + return self.groups_by_id.get(id) + + def unflatten(self): + """ + Unflatten this IbisResult object, resolving any internal ID refs + to build a fully fledged object tree. + + This is necessary if the IbisResult was constructed from XML/JSON in + its flattened representation (with the "flatten" parameter set to + true). + + On entry, the IbisResult object may have people, institutions or + groups in it with "ref" fields referring to objects held in the + "entities" lists. After unflattening, all such references will have + been replaced by actual object references, giving an object tree that + can be traversed normally. + + Returns this IbisResult object, with its internals unflattened. + """ + if self.entities: + em = IbisResult.EntityMap(self) + + if self.person: + self.person = self.person.unflatten(em) + if self.institution: + self.institution = self.institution.unflatten(em) + if self.group: + self.group = self.group.unflatten(em) + + unflatten_people(em, self.people) + unflatten_insts(em, self.institutions) + unflatten_groups(em, self.groups) + + return self + +# -------------------------------------------------------------------------- +# IbisResultParser: unmarshaller for IbisResult objects +# -------------------------------------------------------------------------- +class IbisResultParser: + """ + Class to parse the XML from the server and produce an IbisResult. + """ + def __init__(self): + self.result = None + self.node_stack = [] + self.parser = expat.ParserCreate() + self.parser.StartElementHandler = self.start_element + self.parser.EndElementHandler = self.end_element + self.parser.CharacterDataHandler = self.char_data + + def start_element(self, tagname, attrs): + element = None + if self.node_stack: + if tagname == "person": + element = IbisPerson(attrs) + elif tagname == "institution": + element = IbisInstitution(attrs) + elif tagname == "group": + element = IbisGroup(attrs) + elif tagname == "identifier": + element = IbisIdentifier(attrs) + elif tagname == "attribute": + element = IbisAttribute(attrs) + elif tagname == "error": + element = IbisError(attrs) + elif tagname == "attributeScheme": + element = IbisAttributeScheme(attrs) + elif tagname == "contactRow": + element = IbisContactRow(attrs) + elif tagname == "phoneNumber": + element = IbisContactPhoneNumber(attrs) + elif tagname == "webPage": + element = IbisContactWebPage(attrs) + elif tagname == "entities": + element = IbisResult.Entities(attrs) + else: + parent = self.node_stack[-1] + if (not isinstance(parent, list)) and\ + (not isinstance(parent, dict)): + element = parent.start_child_element(tagname) + if element == None: + element = {"tagname": tagname} + elif tagname != "result": + raise Exception("Invalid root element: '%s'" % tagname) + else: + element = IbisResult(attrs) + self.result = element + self.node_stack.append(element) + + def end_element(self, tagname): + if self.node_stack: + element = self.node_stack[-1] + self.node_stack.pop() + if self.node_stack: + parent = self.node_stack[-1] + if isinstance(parent, list): + if isinstance(element, dict): + parent.append(element.get("data")) + else: + parent.append(element) + elif not isinstance(parent, dict): + if isinstance(element, dict): + data = element.get("data") + else: + data = element + parent.end_child_element(tagname, data) + else: + raise Exception("Unexpected closing tag: '%s'" % tagname) + + def char_data(self, data): + if self.node_stack: + element = self.node_stack[-1] + if isinstance(element, IbisIdentifier): + if element.value != None: element.value += data + else: element.value = data + elif isinstance(element, dict): + if "data" in element: element["data"] += data + else: element["data"] = data + + def parse_xml(self, data): + """ + Parse XML data from the specified string and return an IbisResult. + """ + self.parser.Parse(data) + return self.result.unflatten() + + def parse_xml_file(self, file): + """ + Parse XML data from the specified file and return an IbisResult. + """ + self.parser.ParseFile(file) + return self.result.unflatten() diff --git a/src/python3/ibisclient/methods.py b/src/python3/ibisclient/methods.py new file mode 100644 index 0000000..d8a9959 --- /dev/null +++ b/src/python3/ibisclient/methods.py @@ -0,0 +1,1665 @@ +# === AUTO-GENERATED - DO NOT EDIT === + +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# -------------------------------------------------------------------------- + +""" +Web service API methods. This module is fully auto-generated, and contains +the Python equivalent of the XxxMethods Java classes for executing all API +methods. +""" + +from .connection import IbisException + +class IbisMethods: + """ + Common methods for searching for objects in the Lookup/Ibis database. + + @author Dean Rasheed (dev-group@ucs.cam.ac.uk) + """ + def __init__(self, conn): + self.conn = conn + + def getVersion(self): + """ + Get the current API version number. + + [ HTTP: GET /api/v1/version ] + + @return The API version number string. + """ + path = "api/v1/version" + path_params = {} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.value + +class GroupMethods: + """ + Methods for querying and manipulating groups. + + The fetch parameter for groups + + All methods that return groups also accept an optional fetch + parameter that may be used to request additional information about the + groups returned. For more details about the general rules that apply to + the fetch parameter, refer to the {@link PersonMethods} + documentation. + + For groups the fetch parameter may be used to fetch references + to people, institutions or other groups. In each case, only non-cancelled + people, institutions and groups will be included when fetching references. + The following references are supported: + + * "all_members" - fetches all the people who are members of the group, + including members of groups included by the group, and groups included + by those groups, and so on. + * "direct_members" - fetches all the poeple who are direct members of + the group, not taking into account any included groups. + * "members_of_inst" - if the group is a membership group for an + institution, this fetches that institution. + * "owning_insts" - fetches all the institutions to which the group + belongs. + * "manages_insts" - fetches all the institutions that the group + manages. Typically this only applies to "Editor" groups. + * "manages_groups" - fetches all the groups that this group manages. + Note that some groups are self-managed, so this may be a + self-reference. + * "managed_by_groups" - fetches all the groups that manage this + group. + * "reads_groups" - fetches all the groups that this group has + privileged access to. This means that members of this group can see the + members of the referenced groups regardless of the membership visibility + settings. + * "read_by_groups" - fetches all the groups that have privileged + access to this group. + * "includes_groups" - fetches all the groups included by this group. + * "included_by_groups" - fetches all the groups that include this + group. + + As with person fetch parameters, the references may be used + in a chain by using the "dot" notation to fetch additional information + about referenced people, institutions or groups. For example + "all_members.email" will fetch the email addresses of all members of the + group. For more information about what can be fetched from referenced + people and institutions, refer to the documentation for + {@link PersonMethods} and {@link InstitutionMethods}. + + @author Dean Rasheed (dev-group@ucs.cam.ac.uk) + """ + def __init__(self, conn): + self.conn = conn + + def allGroups(self, + includeCancelled, + fetch=None): + """ + Return a list of all groups. + + By default, only a few basic details about each group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references. + + [ HTTP: GET /api/v1/group/all-groups ] + + @param includeCancelled [optional] Whether or not to include cancelled + groups. By default, only live groups are returned. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested groups (in groupid order). + """ + path = "api/v1/group/all-groups" + path_params = {} + query_params = {"includeCancelled": includeCancelled, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.groups + + def listGroups(self, + groupids, + fetch=None): + """ + Get the groups with the specified IDs or names. + + By default, only a few basic details about each group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references. + + The results are sorted by groupid. + + NOTE: The URL path length is limited to around 8000 characters, + which limits the number of groups that this method can fetch. Group + IDs are currently 6 characters long, and must be comma separated and + URL encoded, which limits this method to around 800 groups by ID, + but probably fewer by name, depending on the group name lengths. + + NOTE: The groups returned may include cancelled groups. It is the + caller's repsonsibility to check their cancelled flags. + + [ HTTP: GET /api/v1/group/list?groupids=... ] + + @param groupids [required] A comma-separated list of group IDs or + group names (may be a mix of both). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested groups (in groupid order). + """ + path = "api/v1/group/list" + path_params = {} + query_params = {"groupids": groupids, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.groups + + def search(self, + query, + approxMatches=None, + includeCancelled=None, + offset=None, + limit=None, + orderBy=None, + fetch=None): + """ + Search for groups using a free text query string. This is the same + search function that is used in the Lookup web application. + + By default, only a few basic details about each group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references. + + [ HTTP: GET /api/v1/group/search?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled groups to + be included. Defaults to false. + @param offset [optional] The number of results to skip at the start + of the search. Defaults to 0. + @param limit [optional] The maximum number of results to return. + Defaults to 100. + @param orderBy [optional] The order in which to list the results. + This may be "groupid", "name" (the default) or "title". + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The matching groups. + """ + path = "api/v1/group/search" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled, + "offset": offset, + "limit": limit, + "orderBy": orderBy, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.groups + + def searchCount(self, + query, + approxMatches=None, + includeCancelled=None): + """ + Count the number of groups that would be returned by a search using + a free text query string. + + [ HTTP: GET /api/v1/group/search-count?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled groups to + be included. Defaults to false. + + @return The number of matching groups. + """ + path = "api/v1/group/search-count" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return int(result.value) + + def getGroup(self, + groupid, + fetch=None): + """ + Get the group with the specified ID or name. + + By default, only a few basic details about the group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of the group. + + NOTE: The group returned may be a cancelled group. It is the caller's + repsonsibility to check its cancelled flag. + + [ HTTP: GET /api/v1/group/{groupid} ] + + @param groupid [required] The ID or name of the group to fetch. This + may be either the numeric ID or the short hyphenated group name (for + example "100656" or "cs-editors"). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested group or null if it was not found. + """ + path = "api/v1/group/%(groupid)s" + path_params = {"groupid": groupid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.group + + def getDirectMembers(self, + groupid, + fetch=None): + """ + Get the direct members of the specified group, not including members + included via groups included by the group. + + By default, only a few basic details about each member are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of each person. + + NOTE: This method will not include cancelled people. + + [ HTTP: GET /api/v1/group/{groupid}/direct-members ] + + @param groupid [required] The ID or name of the group. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch for each person. + + @return The group's direct members (in identifier order). + """ + path = "api/v1/group/%(groupid)s/direct-members" + path_params = {"groupid": groupid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + + def updateDirectMembers(self, + groupid, + addIds=None, + removeIds=None, + commitComment=None): + """ + Update the list of people who are direct members of the group. This + will not affect people who are included in the group due to the + inclusion of other groups. + + Any non-cancelled people in the list of identifiers specified by + {@code addIds} will be added to the group. This list should be a + comma-separated list of identifiers, each of which may be either a + CRSid or an identifier from another identifier scheme, prefixed with + that scheme's name and a slash. For example "mug99" or "usn/123456789". + + Any people in the list of identifiers specified by {@code removeIds} + will be removed from the group, except if they are also in the list + {@code addIds}. The special identifier "all-members" may be used to + remove all existing group members, replacing them with the list + specified by {@code newIds}. + + Examples: + + updateDirectMembers("test-group", "mug99,crsid/yyy99,usn/123456789", "xxx99", + "Remove xxx99 and add mug99, yyy99 and usn/123456789 to test-group"); + + updateDirectMembers("test-group", "xxx99,yyy99", "all-members", + "Set the membership of test-group to include only xxx99 and yyy99"); + + [ HTTP: PUT /api/v1/group/{groupid}/direct-members ] + + @param groupid [required] The ID or name of the group. + @param addIds [optional] The identifiers of people to add to the group. + @param removeIds [optional] The identifiers of people to remove from + the group. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab of the group and + all the affected people in the web application). + + @return The updated list of direct members of the group (in identifier + order). + """ + path = "api/v1/group/%(groupid)s/direct-members" + path_params = {"groupid": groupid} + query_params = {} + form_params = {"addIds": addIds, + "removeIds": removeIds, + "commitComment": commitComment} + result = self.conn.invoke_method("PUT", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + + def getMembers(self, + groupid, + fetch=None): + """ + Get all the members of the specified group, including members of + groups included by the group, and groups included by those groups, + and so on. + + By default, only a few basic details about each member are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of each person. + + NOTE: This method will not include cancelled people. + + [ HTTP: GET /api/v1/group/{groupid}/members ] + + @param groupid [required] The ID or name of the group. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch for each person. + + @return The group's members (in identifier order). + """ + path = "api/v1/group/%(groupid)s/members" + path_params = {"groupid": groupid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + +class InstitutionMethods: + """ + Methods for querying and manipulating institutions. + + The fetch parameter for institutions + + All methods that return institutions also accept an optional + fetch parameter that may be used to request additional + information about the institutions returned. For more details about + the general rules that apply to the fetch parameter, + refer to the {@link PersonMethods} documentation. + + For institutions the fetch parameter may be used to fetch + any institution attribute by specifying the schemeid of an + institution attribute scheme. Examples include "address", "jpegPhoto", + "universityPhone", "instPhone", "landlinePhone", "mobilePhone", + "faxNumber", "email" and "labeledURI". The full list (which may be + extended over time) may be obtained using {@link #allAttributeSchemes}. + + In addition the following pseudo-attributes are supported: + + * "phone_numbers" - fetches all phone numbers. This is equivalent to + "universityPhone,instPhone,landlinePhone,mobilePhone". + * "all_attrs" - fetches all attributes from all institution attribute + schemes. This does not include references. + * "contact_rows" - fetches all institution contact rows. Any chained + fetches from contact rows are used to fetch attributes from any people + referred to by the contact rows. + + The fetch parameter may also be used to fetch referenced + people, institutions or groups. This will only include references to + non-cancelled entities. The following references are supported: + + * "all_members" - fetches all the people who are members of the + institution. + * "parent_insts" - fetches all the parent institutions. Note that + currently all institutions have only one parent, but this may change in + the future, and client applications should be prepared to handle multiple + parents. + * "child_insts" - fetches all the child institutions. + * "inst_groups" - fetches all the groups that belong to the + institution. + * "members_groups" - fetches all the groups that form the institution's + membership list. + * "managed_by_groups" - fetches all the groups that manage the + institution's data (commonly called "Editor" groups). + + As with person fetch parameters, the references may be used + in a chain by using the "dot" notation to fetch additional information + about referenced people, institutions or groups. For example + "all_members.email" will fetch the email addresses of all members of the + institution. For more information about what can be fetched from + referenced people and groups, refer to the documentation for + {@link PersonMethods} and {@link GroupMethods}. + + @author Dean Rasheed (dev-group@ucs.cam.ac.uk) + """ + def __init__(self, conn): + self.conn = conn + + def allAttributeSchemes(self): + """ + Return a list of all the institution attribute schemes available. + The "schemeid" values of these schemes may be used in the + fetch parameter of other methods that return institutions. + + [ HTTP: GET /api/v1/inst/all-attr-schemes ] + + @return All the available institution attribute schemes (in precedence + order). + """ + path = "api/v1/inst/all-attr-schemes" + path_params = {} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attributeSchemes + + def allInsts(self, + includeCancelled, + fetch=None): + """ + Return a list of all institutions. + + By default, only a few basic details about each institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references. + + [ HTTP: GET /api/v1/inst/all-insts ] + + @param includeCancelled [optional] Whether or not to include cancelled + institutions. By default, only live institutions are returned. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested institutions (in instid order). + """ + path = "api/v1/inst/all-insts" + path_params = {} + query_params = {"includeCancelled": includeCancelled, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institutions + + def listInsts(self, + instids, + fetch=None): + """ + Get the institutions with the specified IDs. + + By default, only a few basic details about each institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references. + + The results are sorted by ID. + + NOTE: The URL path length is limited to around 8000 characters, and + an instid is up to 8 characters long. Allowing for comma separators + and URL encoding, this limits the number of institutions that this + method may fetch to around 700. + + NOTE: The institutions returned may include cancelled institutions. + It is the caller's repsonsibility to check their cancelled flags. + + [ HTTP: GET /api/v1/inst/list?instids=... ] + + @param instids [required] A comma-separated list of instids. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested institutions (in instid order). + """ + path = "api/v1/inst/list" + path_params = {} + query_params = {"instids": instids, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institutions + + def search(self, + query, + approxMatches=None, + includeCancelled=None, + attributes=None, + offset=None, + limit=None, + orderBy=None, + fetch=None): + """ + Search for institutions using a free text query string. This is the + same search function that is used in the Lookup web application. + + By default, only a few basic details about each institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references. + + [ HTTP: GET /api/v1/inst/search?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled institutions + to be included. Defaults to false. + @param attributes [optional] A comma-separated list of attributes to + consider when searching. If this is NULL (the default) then all + attribute schemes marked as searchable will be included. + @param offset [optional] The number of results to skip at the start + of the search. Defaults to 0. + @param limit [optional] The maximum number of results to return. + Defaults to 100. + @param orderBy [optional] The order in which to list the results. + This may be either "instid" or "name" (the default). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The matching institutions. + """ + path = "api/v1/inst/search" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled, + "attributes": attributes, + "offset": offset, + "limit": limit, + "orderBy": orderBy, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institutions + + def searchCount(self, + query, + approxMatches=None, + includeCancelled=None, + attributes=None): + """ + Count the number of institutions that would be returned by a search + using a free text query string. + + [ HTTP: GET /api/v1/inst/search-count?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled institutions + to be included. Defaults to false. + @param attributes [optional] A comma-separated list of attributes to + consider when searching. If this is NULL (the default) then all + attribute schemes marked as searchable will be included. + + @return The number of matching institutions. + """ + path = "api/v1/inst/search-count" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled, + "attributes": attributes} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return int(result.value) + + def getInst(self, + instid, + fetch=None): + """ + Get the institution with the specified ID. + + By default, only a few basic details about the institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references of the institution. + + NOTE: The institution returned may be a cancelled institution. It is + the caller's repsonsibility to check its cancelled flag. + + [ HTTP: GET /api/v1/inst/{instid} ] + + @param instid [required] The ID of the institution to fetch. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested institution or null if it was not found. + """ + path = "api/v1/inst/%(instid)s" + path_params = {"instid": instid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institution + + def addAttribute(self, + instid, + attr, + position=None, + allowDuplicates=None, + commitComment=None): + """ + Add an attribute to an institution. By default, this will not add the + attribute again if it already exists. + + When adding an attribute, the new attribute's scheme must be set. + In addition, either its value or its binaryData field should be set. + All the remaining fields of the attribute are optional. + + [ HTTP: POST /api/v1/inst/{instid}/add-attribute ] + + @param instid [required] The ID of the institution. + @param attr [required] The new attribute to add. + @param position [optional] The position of the new attribute in the + list of attributes of the same attribute scheme (1, 2, 3,...). A value + of 0 (the default) will cause the new attribute to be added to the end + of the list of existing attributes for the scheme. + @param allowDuplicates [optional] If true, the new attribute will + always be added, even if another identical attribute already exists. + If false (the default), the new attribute will only be added if it + doesn't already exist. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return The newly created or existing attribute. + """ + path = "api/v1/inst/%(instid)s/add-attribute" + path_params = {"instid": instid} + query_params = {} + form_params = {"attr": attr, + "position": position, + "allowDuplicates": allowDuplicates, + "commitComment": commitComment} + result = self.conn.invoke_method("POST", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def getContactRows(self, + instid, + fetch=None): + """ + Get all the contact rows of the specified institution. + + Any addresses, email addresses, phone numbers and web pages + associated with the contact rows are automatically returned, as + well as any people referred to by the contact rows. + + If any of the contact rows refer to people, then only a few basic + details about each person are returned, but the optional + fetch parameter may be used to fetch additional + attributes or references of each person. + + NOTE: This method will not include cancelled people. + + [ HTTP: GET /api/v1/inst/{instid}/contact-rows ] + + @param instid [required] The ID of the institution. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch for any people referred to by any + of the contact rows. + + @return The institution's contact rows. + """ + path = "api/v1/inst/%(instid)s/contact-rows" + path_params = {"instid": instid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institution.contactRows + + def getAttributes(self, + instid, + attrs): + """ + Get one or more (possibly multi-valued) attributes of an institution. + The returned attributes are sorted by attribute scheme precedence and + then attribute precedence. + + [ HTTP: GET /api/v1/inst/{instid}/get-attributes?attrs=... ] + + @param instid [required] The ID of the institution. + @param attrs [required] The attribute scheme(s) to fetch. This may + include any number of the attributes or pseudo-attributes, but it + may not include references or attribute chains (see the documentation + for the "fetch" parameter in this class). + + @return The requested attributes. + """ + path = "api/v1/inst/%(instid)s/get-attributes" + path_params = {"instid": instid} + query_params = {"attrs": attrs} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attributes + + def getMembers(self, + instid, + fetch=None): + """ + Get all the members of the specified institution. + + By default, only a few basic details about each member are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of each person. + + NOTE: This method will not include cancelled people. + + [ HTTP: GET /api/v1/inst/{instid}/members ] + + @param instid [required] The ID of the institution. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch for each person. + + @return The institution's members (in identifier order). + """ + path = "api/v1/inst/%(instid)s/members" + path_params = {"instid": instid} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + + def getAttribute(self, + instid, + attrid): + """ + Get a specific attribute of an institution. + + [ HTTP: GET /api/v1/inst/{instid}/{attrid} ] + + @param instid [required] The ID of the institution. + @param attrid [required] The ID of the attribute to fetch. + + @return The requested attribute. + """ + path = "api/v1/inst/%(instid)s/%(attrid)s" + path_params = {"instid": instid, + "attrid": attrid} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def updateAttribute(self, + instid, + attrid, + attr, + commitComment=None): + """ + Update an attribute of an institution. + + The attribute's value, binaryData, comment and effective date fields + will all be updated using the data supplied. All other fields will be + left unchanged. + + To avoid inadvertently changing fields of the attribute, it is + recommended that {@link #getAttribute getAttribute()} be used to + retrieve the current value of the attribute, before calling this + method with the required changes. + + [ HTTP: PUT /api/v1/inst/{instid}/{attrid} ] + + @param instid [required] The ID of the institution. + @param attrid [required] The ID of the attribute to update. + @param attr [required] The new attribute values to apply. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return The updated attribute. + """ + path = "api/v1/inst/%(instid)s/%(attrid)s" + path_params = {"instid": instid, + "attrid": attrid} + query_params = {} + form_params = {"attr": attr, + "commitComment": commitComment} + result = self.conn.invoke_method("PUT", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def deleteAttribute(self, + instid, + attrid, + commitComment=None): + """ + Delete an attribute of an institution. It is not an error if the + attribute does not exist. + + Note that in this method, the commitComment is passed + as a query parameter, rather than as a form parameter, for greater + client compatibility. + + [ HTTP: DELETE /api/v1/inst/{instid}/{attrid} ] + + @param instid [required] The ID of the institution. + @param attrid [required] The ID of the attribute to delete. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return True if the attribute was deleted by this method, or false + if it did not exist. + """ + path = "api/v1/inst/%(instid)s/%(attrid)s" + path_params = {"instid": instid, + "attrid": attrid} + query_params = {"commitComment": commitComment} + form_params = {} + result = self.conn.invoke_method("DELETE", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.value and result.value.lower() == "true" + +class PersonMethods: + """ + Methods for querying and manipulating people. + + Notes on the fetch parameter + + All methods that return people, institutions or groups also accept an + optional fetch parameter that may be used to request + additional information about the entities returned. Without this + parameter, only a few basic details about each person, institution or + group are returned. The fetch parameter is quite flexible, + and may be used in a number of different ways: + + * Attribute fetching. Attributes may be fetched by specifying the + schemeid of an attribute scheme. For example to fetch a + person's email addresses, use the value "email". For people common + attribute schemes include "jpegPhoto", "misAffiliation", "title", + "universityPhone", "mobexPhone", "landlinePhone", "mobilePhone", "pager", + "labeledURI" and "address". The full list of person attribute schemes may + be obtained using {@link #allAttributeSchemes}. + + * Pseudo-attributes. Certain special pseudo-attributes are defined + for convenience. For people, the following pseudo-attributes are supported: + + * "phone_numbers" - fetches all phone numbers. This is equivalent to + "universityPhone,instPhone,mobexPhone,landlinePhone,mobilePhone,pager". + * "all_identifiers" - fetches all identifiers. Currently people only + have CRSid identifiers, but in the future additional identifiers such + as USN or staffNumber may be added. + * "all_attrs" - fetches all attributes from all person attribute + schemes. This does not include identifiers or references. + + * Reference fetching. For people, the following references are + supported (and will fetch only non-cancelled institutions and groups): + + * "all_insts" - fetches all the institutions to which the person + belongs (sorted in name order). + * "all_groups" - fetches all the groups that the person is a member + of, including indirect group memberships, via groups that include other + groups. + * "direct_groups" - fetches all the groups that the person is directly + a member of. This does not include indirect group memberships - i.e., + groups that include these groups. + + * Chained reference fetching. To fetch properties of referenced + objects, the "dot" notation may be used. For example, to fetch the email + addresses of all the institutions to which a person belongs, use + "all_insts.email". Chains may include a number of reference following + steps, for example "all_insts.managed_by_groups.all_members.email" will + fetch all the institutions to which the person belongs, all the groups + that manage those institutions, all the visible members of those groups + and all the email addresses of those managing group members. For more + information about what can be fetched from referenced institutions and + groups, refer to the documentation for {@link InstitutionMethods} and + {@link GroupMethods}. + + Multiple values of the fetch parameter should be separated + by commas. + + Fetch parameter examples + + fetch = "email" + This fetches all the person's email addresses. + + fetch = "title,address" + This fetches all the person's titles (roles) and addresses. + + fetch = "all_attrs" + This fetches all the person's attributes. + + fetch = "all_groups,all_insts" + This fetches all the groups and institutions to which the person belongs. + + fetch = "all_insts.parent_insts" + This fetches all the person's institutions, and their parent institutions. + + fetch = "all_insts.email,all_insts.all_members.email" + This fetches all the person's institutions and their email addresses, and + all the members of those institutions, and the email addresses of all + those members. + + @author Dean Rasheed (dev-group@ucs.cam.ac.uk) + """ + def __init__(self, conn): + self.conn = conn + + def allAttributeSchemes(self): + """ + Return a list of all the person attribute schemes available. The + "schemeid" values of these schemes may be used in the + fetch parameter of other methods that return people. + + NOTE: Some of these attribute schemes are not currently used (no + people have attribute values in the scheme). These schemes are + reserved for possible future use. + + [ HTTP: GET /api/v1/person/all-attr-schemes ] + + @return All the available person attribute schemes (in precedence + order). + """ + path = "api/v1/person/all-attr-schemes" + path_params = {} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attributeSchemes + + def listPeople(self, + crsids, + fetch=None): + """ + Get the people with the specified identifiers (typically CRSids). + + Each identifier may be either a CRSid, or an identifier from another + identifier scheme, prefixed with that scheme's name and a slash. For + example "mug99" or "usn/123456789". + + By default, only a few basic details about each person are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references. + + The results are sorted by identifier scheme and value. + + NOTE: The number of people that may be fetched in a single call is + limited by the URL path length limit (around 8000 characters). A + CRSid is up to 7 characters long, and other identifiers are typically + longer, since they must also include the identifier scheme. Thus the + number of people that this method may fetch is typically limited to a + few hundred. + + NOTE: The people returned may include cancelled people. It is the + caller's repsonsibility to check their cancelled flags. + + [ HTTP: GET /api/v1/person/list?crsids=... ] + + @param crsids [required] A comma-separated list of identifiers. + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested people (in identifier order). + """ + path = "api/v1/person/list" + path_params = {} + query_params = {"crsids": crsids, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + + def search(self, + query, + approxMatches=None, + includeCancelled=None, + misStatus=None, + attributes=None, + offset=None, + limit=None, + orderBy=None, + fetch=None): + """ + Search for people using a free text query string. This is the same + search function that is used in the Lookup web application. + + By default, only a few basic details about each person are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references. + + [ HTTP: GET /api/v1/person/search?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled people to + be included (people who are no longer members of the University). + Defaults to false. + @param misStatus [optional] The type of people to search for. This may + be + + * "staff" - only include people whose MIS status is "" (empty + string), "staff", or "staff,student". + * "student" - only include people whose MIS status is set to + "student" or "staff,student". + + Otherwise all matching people will be included (the default). Note + that the "staff" and "student" options are not mutually exclusive. + @param attributes [optional] A comma-separated list of attributes to + consider when searching. If this is NULL (the default) then all + attribute schemes marked as searchable will be included. + @param offset [optional] The number of results to skip at the start + of the search. Defaults to 0. + @param limit [optional] The maximum number of results to return. + Defaults to 100. + @param orderBy [optional] The order in which to list the results. + This may be either "identifier" or "surname" (the default). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The matching people. + """ + path = "api/v1/person/search" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled, + "misStatus": misStatus, + "attributes": attributes, + "offset": offset, + "limit": limit, + "orderBy": orderBy, + "fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.people + + def searchCount(self, + query, + approxMatches=None, + includeCancelled=None, + misStatus=None, + attributes=None): + """ + Count the number of people that would be returned by a search using + a free text query string. + + [ HTTP: GET /api/v1/person/search-count?query=... ] + + @param query [required] The search string. + @param approxMatches [optional] Flag to enable more approximate + matching in the search, causing more results to be returned. Defaults + to false. + @param includeCancelled [optional] Flag to allow cancelled people to + be included (people who are no longer members of the University). + Defaults to false. + @param misStatus [optional] The type of people to search for. This may + be + + * "staff" - only include people whose MIS status is "" (empty + string), "staff", or "staff,student". + * "student" - only include people whose MIS status is set to + "student" or "staff,student". + + Otherwise all matching people will be included (the default). Note + that the "staff" and "student" options are not mutually exclusive. + @param attributes [optional] A comma-separated list of attributes to + consider when searching. If this is NULL (the default) then all + attribute schemes marked as searchable will be included. + + @return The number of matching people. + """ + path = "api/v1/person/search-count" + path_params = {} + query_params = {"query": query, + "approxMatches": approxMatches, + "includeCancelled": includeCancelled, + "misStatus": misStatus, + "attributes": attributes} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return int(result.value) + + def getPerson(self, + scheme, + identifier, + fetch=None): + """ + Get the person with the specified identifier. + + By default, only a few basic details about the person are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of the person. + + NOTE: The person returned may be a cancelled person. It is the + caller's repsonsibility to check its cancelled flag. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person to fetch + (typically their CRSid). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The requested person or null if they were not found. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.person + + def addAttribute(self, + scheme, + identifier, + attr, + position=None, + allowDuplicates=None, + commitComment=None): + """ + Add an attribute to a person. By default, this will not add the + attribute again if it already exists. + + When adding an attribute, the new attribute's scheme must be set. + In addition, either its value or its binaryData field should be set. + All the remaining fields of the attribute are optional. + + [ HTTP: POST /api/v1/person/{scheme}/{identifier}/add-attribute ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person to udpate + (typically their CRSid). + @param attr [required] The new attribute to add. + @param position [optional] The position of the new attribute in the + list of attributes of the same attribute scheme (1, 2, 3,...). A value + of 0 (the default) will cause the new attribute to be added to the end + of the list of existing attributes for the scheme. + @param allowDuplicates [optional] If true, the new attribute will + always be added, even if another identical attribute already exists. + If false (the default), the new attribute will only be added if it + doesn't already exist. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return The newly created or existing attribute. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/add-attribute" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {} + form_params = {"attr": attr, + "position": position, + "allowDuplicates": allowDuplicates, + "commitComment": commitComment} + result = self.conn.invoke_method("POST", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def getAttributes(self, + scheme, + identifier, + attrs): + """ + Get one or more (possibly multi-valued) attributes of a person. The + returned attributes are sorted by attribute scheme precedence and + then attribute precedence. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/get-attributes?attrs=... ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param attrs [required] The attribute scheme(s) to fetch. This may + include any number of the attributes or pseudo-attributes, but it + may not include references or attribute chains (see the documentation + for the "fetch" parameter in this class). + + @return The requested attributes. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/get-attributes" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"attrs": attrs} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attributes + + def getGroups(self, + scheme, + identifier, + fetch=None): + """ + Get all the groups to which the specified person belongs, including + indirect group memberships, via groups that include other groups. + The returned list of groups is sorted by groupid. + + Note that some group memberships may not be visible to you. This + method will only return those group memberships that you have + permission to see. + + By default, only a few basic details about each group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of each group. + + NOTE: This method will not include cancelled groups. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/groups ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The person's groups (in groupid order). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/groups" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.groups + + def getInsts(self, + scheme, + identifier, + fetch=None): + """ + Get all the institutions to which the specified person belongs. The + returned list of institutions is sorted by name. + + By default, only a few basic details about each institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references of each institution. + + NOTE: This method will not include cancelled institutions. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/insts ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The person's institutions (in name order). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/insts" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institutions + + def isMemberOfGroup(self, + scheme, + identifier, + groupid): + """ + Test if the specified person is a member of the specified group. + + NOTE: This may be used with cancelled people and groups. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/is-member-of-group/{groupid} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param groupid [required] The ID or name of the group. + + @return true if the specified person is in the specified group, + false otherwise (or if the person or group does not exist). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/is-member-of-group/%(groupid)s" + path_params = {"scheme": scheme, + "identifier": identifier, + "groupid": groupid} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.value and result.value.lower() == "true" + + def isMemberOfInst(self, + scheme, + identifier, + instid): + """ + Test if the specified person is a member of the specified institution. + + NOTE: This may be used with cancelled people and institutions, but + it will not include cancelled membership groups. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/is-member-of-inst/{instid} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param instid [required] The ID of the institution. + + @return true if the specified person is in the specified institution, + false otherwise (or if the person or institution does not exist). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/is-member-of-inst/%(instid)s" + path_params = {"scheme": scheme, + "identifier": identifier, + "instid": instid} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.value and result.value.lower() == "true" + + def getManagedGroups(self, + scheme, + identifier, + fetch=None): + """ + Get all the groups that the specified person has persmission to edit. + The returned list of groups is sorted by groupid. + + Note that some group memberships may not be visible to you. This + method will only include groups for which you have persmission to + see the applicable manager group memberships. + + By default, only a few basic details about each group are returned, + but the optional fetch parameter may be used to fetch + additional attributes or references of each group. + + NOTE: This method will not include cancelled groups. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/manages-groups ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The groups that the person manages (in groupid order). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/manages-groups" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.groups + + def getManagedInsts(self, + scheme, + identifier, + fetch=None): + """ + Get all the institutions that the specified person has permission to + edit. The returned list of institutions is sorted by name. + + Note that some group memberships may not be visible to you. This + method will only include institutions for which you have permission + to see the applicable editor group memberships. + + By default, only a few basic details about each institution are + returned, but the optional fetch parameter may be used + to fetch additional attributes or references of each institution. + + NOTE: This method will not include cancelled institutions. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/manages-insts ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param fetch [optional] A comma-separated list of any additional + attributes or references to fetch. + + @return The institutions that the person manages (in name order). + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/manages-insts" + path_params = {"scheme": scheme, + "identifier": identifier} + query_params = {"fetch": fetch} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.institutions + + def getAttribute(self, + scheme, + identifier, + attrid): + """ + Get a specific attribute of a person. + + [ HTTP: GET /api/v1/person/{scheme}/{identifier}/{attrid} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person (typically + their CRSid). + @param attrid [required] The ID of the attribute to fetch. + + @return The requested attribute. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/%(attrid)s" + path_params = {"scheme": scheme, + "identifier": identifier, + "attrid": attrid} + query_params = {} + form_params = {} + result = self.conn.invoke_method("GET", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def updateAttribute(self, + scheme, + identifier, + attrid, + attr, + commitComment=None): + """ + Update an attribute of a person. + + The attribute's value, binaryData, comment, instid and effective date + fields will all be updated using the data supplied. All other fields + will be left unchanged. + + To avoid inadvertently changing fields of the attribute, it is + recommended that {@link #getAttribute getAttribute()} be used to + retrieve the current value of the attribute, before calling this + method with the required changes. + + [ HTTP: PUT /api/v1/person/{scheme}/{identifier}/{attrid} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person to udpate + (typically their CRSid). + @param attrid [required] The ID of the attribute to update. + @param attr [required] The new attribute values to apply. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return The updated attribute. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/%(attrid)s" + path_params = {"scheme": scheme, + "identifier": identifier, + "attrid": attrid} + query_params = {} + form_params = {"attr": attr, + "commitComment": commitComment} + result = self.conn.invoke_method("PUT", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.attribute + + def deleteAttribute(self, + scheme, + identifier, + attrid, + commitComment=None): + """ + Delete an attribute of a person. It is not an error if the attribute + does not exist. + + Note that in this method, the commitComment is passed + as a query parameter, rather than as a form parameter, for greater + client compatibility. + + [ HTTP: DELETE /api/v1/person/{scheme}/{identifier}/{attrid} ] + + @param scheme [required] The person identifier scheme. Typically this + should be "crsid", but other identifier schemes may be available + in the future, such as "usn" or "staffNumber". + @param identifier [required] The identifier of the person to udpate + (typically their CRSid). + @param attrid [required] The ID of the attribute to delete. + @param commitComment [recommended] A short textual description of + the change made (will be visible on the history tab in the web + application). + + @return True if the attribute was deleted by this method, or false + if it did not exist. + """ + path = "api/v1/person/%(scheme)s/%(identifier)s/%(attrid)s" + path_params = {"scheme": scheme, + "identifier": identifier, + "attrid": attrid} + query_params = {"commitComment": commitComment} + form_params = {} + result = self.conn.invoke_method("DELETE", path, path_params, + query_params, form_params) + if result.error: + raise IbisException(result.error) + return result.value and result.value.lower() == "true" diff --git a/src/python3/test/unittests.py b/src/python3/test/unittests.py new file mode 100644 index 0000000..c225926 --- /dev/null +++ b/src/python3/test/unittests.py @@ -0,0 +1,856 @@ +#!/usr/bin/python + +# -------------------------------------------------------------------------- +# Copyright (c) 2012, University of Cambridge Computing Service +# +# This file is part of the Lookup/Ibis client library. +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Author: Dean Rasheed (dev-group@ucs.cam.ac.uk) +# -------------------------------------------------------------------------- + +from datetime import date +import unittest +import urllib.request + +try: + from ibisclient import * +except ImportError: + import os + import sys + _script_dir = os.path.realpath(os.path.dirname(__file__)) + _ibisclient_dir = os.path.realpath(os.path.join(_script_dir, "..")) + sys.path.append(_ibisclient_dir) + from ibisclient import * + +# Test on local server or lookup-test? +local = True + +# Run the editing tests or not? +run_edit_tests = False + +# Globals initialised once and re-used in each test +conn = None +pm = None +im = None +gm = None +initialised = False + +class IbisUnitTests(unittest.TestCase): + def setUp(self): + global conn, pm, im, gm, initialised + + if not initialised: + if local: + conn = createLocalConnection() + else: + conn = createTestConnection() + + pm = PersonMethods(conn) + im = InstitutionMethods(conn) + gm = GroupMethods(conn) + initialised = True + + # -------------------------------------------------------------------- + # Person tests. + # -------------------------------------------------------------------- + + def test_person_attribute_schemes(self): + schemes = pm.allAttributeSchemes() + self.assertTrue(len(schemes) > 10) + self.assertEqual("displayName", schemes[0].schemeid) + + def test_no_such_person(self): + person = pm.getPerson("crsid", "dar1734toolong") + self.assertIsNone(person) + + def test_no_such_identifier_scheme(self): + person = pm.getPerson("crs", "dar17") + self.assertIsNone(person) + + def test_get_person_details(self): + person = pm.getPerson("crsid", "dar17") + self.assertEqual("Rasheed", person.surname) + self.assertEqual("staff", person.misAffiliation) + self.assertTrue(person.is_staff()) + self.assertFalse(person.is_student()) + + def test_get_person_identifiers(self): + person = pm.getPerson("crsid", "dar17", "all_identifiers") + self.assertEqual("crsid", person.identifiers[0].scheme) + self.assertEqual("dar17", person.identifiers[0].value) + + def test_get_person_title(self): + person = pm.getPerson("crsid", "dar17", "title") + self.assertEqual("title", person.attributes[0].scheme) + self.assertEqual("Database administrator and developer", person.attributes[0].value) + + def test_get_person_attributes(self): + attrs = pm.getAttributes("crsid", "dar17", "email,title") + self.assertEqual("title", attrs[0].scheme); + self.assertEqual("Database administrator and developer", attrs[0].value); + self.assertEqual("email", attrs[1].scheme); + + attr = pm.getAttribute("crsid", "dar17", attrs[0].attrid) + self.assertEqual(attrs[0].scheme, attr.scheme) + self.assertEqual(attrs[0].value, attr.value) + + def test_get_person_insts_and_groups(self): + person = pm.getPerson("crsid", "dar17", "all_insts,all_groups") + self.assertEqual("UCS", person.institutions[0].acronym) + self.assertEqual("cs-members", person.groups[0].name) + + def test_get_person_inst_managers(self): + person = pm.getPerson("crsid", "dar17", "all_insts.managed_by_groups.all_members") + + inst = person.institutions[0] + self.assertEqual("CS", inst.instid) + + mgrGroup = inst.managedByGroups[0] + self.assertEqual("cs-editors", mgrGroup.name) + self.assertEqual("A. Kitching", mgrGroup.members[0].registeredName) + + def test_list_people(self): + people = pm.listPeople("ijl20,rjd4,pms52,dar17,prb34,dcs38", "email") + self.assertEqual(6, len(people)) + self.assertEqual("dar17", people[0].identifier.value) + self.assertEqual("dcs38@cam.ac.uk", people[1].attributes[0].value) + self.assertEqual("Lewis", people[2].surname) + self.assertEqual("P.M. Shore", people[3].registeredName) + self.assertEqual("prb34", people[4].identifier.value) + self.assertEqual("Dowling", people[5].surname) + + def test_person_search(self): + people = pm.search("ian lewis", False, False, None, None, 0, 100) + self.assertEqual(1, len(people)) + self.assertEqual("ijl20", people[0].identifier.value) + + people = pm.search("phoenix 23 database administrator", False, False, + "staff", "address,title", 0, 100, None, "address,title") + self.assertEqual(1, len(people)) + self.assertEqual("dar17", people[0].identifier.value) + self.assertEqual("Database administrator and developer", people[0].attributes[0].value) + self.assertEqual("Phoenix 23", people[0].attributes[1].value) + + def test_person_search_count(self): + count = pm.searchCount("j smith", False, False) + self.assertTrue(count > 10) + + def test_is_person_member_of_inst(self): + self.assertTrue(pm.isMemberOfInst("crsid", "dar17", "CS")) + self.assertFalse(pm.isMemberOfInst("crsid", "dar17", "ENG")) + self.assertFalse(pm.isMemberOfInst("crs", "dar1734-sdfr", "CS")) + + def test_is_person_member_of_group(self): + self.assertTrue(pm.isMemberOfGroup("crsid", "rjd4", "100656")) + self.assertTrue(pm.isMemberOfGroup("crsid", "rjd4", "cs-editors")) + self.assertFalse(pm.isMemberOfGroup("crsid", "dar99", "100656")) + self.assertFalse(pm.isMemberOfGroup("crsid", "rjd4", "3g3rsfh")) + self.assertFalse(pm.isMemberOfGroup("crsid", "34sf_rjd", "3g3rsfh")) + self.assertFalse(pm.isMemberOfGroup("crs", "34sf_rjd", "3g3rsfh")) + + def test_get_persons_insts(self): + person = pm.getPerson("crsid", "ijl20", "all_insts") + insts = pm.getInsts("crsid", "ijl20") + + self.assertEqual(2, len(person.institutions)) + self.assertEqual(2, len(insts)) + for i in range(0, len(insts)): + i1 = person.institutions[i] + i2 = insts[i] + self.assertEqual(i1.instid, i2.instid) + self.assertEqual(i1.name, i2.name) + + def test_get_persons_managed_insts(self): + person = pm.getPerson("crsid", "ijl20", "all_groups.manages_insts") + insts = pm.getManagedInsts("crsid", "ijl20") + + managedInsts = [] + for group in person.groups: + for managedInst in group.managesInsts: + managedInsts.append(managedInst) + + self.assertEqual(1, len(managedInsts)) + self.assertEqual(1, len(insts)) + for i in range(0, len(insts)): + i1 = managedInsts[i] + i2 = insts[i] + self.assertEqual(i1.instid, i2.instid) + self.assertEqual(i1.name, i2.name) + + def test_get_persons_groups(self): + person = pm.getPerson("crsid", "ijl20", "all_groups") + groups = pm.getGroups("crsid", "ijl20") + + self.assertTrue(len(person.groups) > 10) + self.assertTrue(len(person.groups) == len(groups)) + for i in range(0, len(groups)): + g1 = person.groups[i] + g2 = groups[i] + self.assertEqual(g1.groupid, g2.groupid) + self.assertEqual(g1.name, g2.name) + + def test_get_persons_managed_groups(self): + person = pm.getPerson("crsid", "ijl20", "all_groups.manages_groups") + groups = pm.getManagedGroups("crsid", "ijl20") + + managedGroups = [] + for group in person.groups: + for managedGroup in group.managesGroups: + managedGroups.append(managedGroup) + + managedGroups.sort(key=lambda group: group.groupid) + + self.assertTrue(len(managedGroups) > 10) + self.assertTrue(len(managedGroups) == len(groups)) + for i in range(0, len(groups)): + g1 = managedGroups[i] + g2 = groups[i] + self.assertEqual(g1.groupid, g2.groupid) + self.assertEqual(g1.name, g2.name) + + def test_person_edit(self): + if not run_edit_tests: + return + + try: + conn.set_username("cstest-editors") + conn.set_password("foobar") + + # Delete any test emails from previous runs + person = pm.getPerson("crsid", "dar99", "email") + for attr in person.attributes: + if attr.owningGroupid == "100668": + pm.deleteAttribute("crsid", "dar99", attr.attrid, + "Unit test: delete existing test emails") + + person = pm.getPerson("crsid", "dar99", "email") + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.fail("There should be no test emails left") + + # Test adding a new email + newAttr = IbisAttribute() + newAttr.scheme = "email" + newAttr.value = "dev-group@ucs.cam.ac.uk" + newAttr.comment = "Unit testing" + newAttr.instid = "CS" + newAttr.effectiveFrom = date.today() + + newAttr = pm.addAttribute("crsid", "dar99", newAttr, 0, True, + "Unit test: add a test email") + self.assertEqual("dev-group@ucs.cam.ac.uk", newAttr.value) + self.assertEqual("Unit testing", newAttr.comment) + self.assertEqual("CS", newAttr.instid) + self.assertIsNotNone(newAttr.effectiveFrom) + self.assertIsNone(newAttr.effectiveTo) + self.assertEqual("100668", newAttr.owningGroupid) + + person = pm.getPerson("crsid", "dar99", "email") + + found = False + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.assertEqual(newAttr.attrid, attr.attrid) + self.assertEqual(newAttr.value, attr.value) + self.assertEqual(newAttr.comment, attr.comment) + self.assertEqual(newAttr.instid, attr.instid) + self.assertEqual(newAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(newAttr.effectiveTo, attr.effectiveTo) + self.assertEqual(newAttr.owningGroupid, attr.owningGroupid) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test updating the new email + newAttr.value = "foo@bar.com" + newAttr.comment = "Unit test update" + newAttr.instid = "CSTEST" + newAttr.effectiveFrom = None + newAttr.effectiveTo = date.today() + updatedAttr = pm.updateAttribute("crsid", "dar99", newAttr.attrid, + newAttr, "Unit test: update email") + self.assertEqual(newAttr.value, updatedAttr.value) + self.assertEqual(newAttr.comment, updatedAttr.comment) + self.assertEqual(newAttr.instid, updatedAttr.instid) + self.assertIsNone(updatedAttr.effectiveFrom) + self.assertIsNotNone(updatedAttr.effectiveTo) + self.assertEqual(newAttr.owningGroupid, updatedAttr.owningGroupid) + + person = pm.getPerson("crsid", "dar99", "email") + + found = False + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.assertEqual(updatedAttr.attrid, attr.attrid) + self.assertEqual(updatedAttr.value, attr.value) + self.assertEqual(updatedAttr.comment, attr.comment) + self.assertEqual(updatedAttr.instid, attr.instid) + self.assertEqual(updatedAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(updatedAttr.effectiveTo, attr.effectiveTo) + self.assertEqual(updatedAttr.owningGroupid, attr.owningGroupid) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test deleting the new email + deleted = pm.deleteAttribute("crsid", "dar99", updatedAttr.attrid, + "Unit test: delete email") + self.assertTrue(deleted) + + person = pm.getPerson("crsid", "dar99", "email") + + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.fail("There should be no test emails left") + finally: + conn.set_username("anonymous") + conn.set_password("") + + def test_person_edit_image(self): + if not run_edit_tests: + return + + try: + conn.set_username("cstest-editors") + conn.set_password("foobar") + + # The image to use for testing + f = urllib.request.urlopen("http://www.lookup.cam.ac.uk/images/ibis.jpg") + imageData = f.read() + f.close() + + # Delete any test images from previous runs + person = pm.getPerson("crsid", "dar99", "jpegPhoto") + for attr in person.attributes: + if attr.owningGroupid == "100668": + pm.deleteAttribute("crsid", "dar99", attr.attrid, + "Unit test: delete existing test photos") + + person = pm.getPerson("crsid", "dar99", "jpegPhoto") + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.fail("There should be no test photos left") + + # Test adding a new photo + newAttr = IbisAttribute() + newAttr.scheme = "jpegPhoto" + newAttr.binaryData = imageData + newAttr.comment = "Unit testing" + + newAttr = pm.addAttribute("crsid", "dar99", newAttr, 0, True, + "Unit test: add a test photo") + self.assertIsNone(newAttr.value) + self.assertEqual(imageData, newAttr.binaryData) + self.assertEqual("Unit testing", newAttr.comment) + self.assertEqual("100668", newAttr.owningGroupid) + + person = pm.getPerson("crsid", "dar99", "jpegPhoto") + + found = False + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.assertEqual(newAttr.attrid, attr.attrid) + self.assertIsNone(attr.value) + self.assertEqual(imageData, attr.binaryData) + self.assertEqual(newAttr.comment, attr.comment) + self.assertEqual(newAttr.instid, attr.instid) + self.assertEqual(newAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(newAttr.effectiveTo, attr.effectiveTo) + self.assertEqual(newAttr.owningGroupid, attr.owningGroupid) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test deleting the new photo + deleted = pm.deleteAttribute("crsid", "dar99", newAttr.attrid, + "Unit test: delete photo") + self.assertTrue(deleted) + + person = pm.getPerson("crsid", "dar99", "jpegPhoto") + + for attr in person.attributes: + if attr.owningGroupid == "100668": + self.fail("There should be no test photos left") + finally: + conn.set_username("anonymous") + conn.set_password("") + + # -------------------------------------------------------------------- + # Institution tests. + # -------------------------------------------------------------------- + + def test_inst_attribute_schemes(self): + schemes = im.allAttributeSchemes() + self.assertTrue(len(schemes) > 10) + self.assertEqual("name", schemes[0].schemeid) + + def test_no_such_inst(self): + inst = im.getInst("54jkn4") + self.assertIsNone(inst) + + def test_get_inst_details(self): + inst = im.getInst("CS") + self.assertEqual("UCS", inst.acronym) + self.assertEqual("University Computing Service", inst.name) + + def test_get_inst_email_and_phone_numbers(self): + inst = im.getInst("CS", "email,phone_numbers") + + foundEmail = False + foundPhoneNumber = False + for attr in inst.attributes: + if attr.scheme == "email" and\ + attr.value == "reception@ucs.cam.ac.uk": + foundEmail = True + if attr.scheme == "universityPhone" and\ + attr.value == "34600": + foundPhoneNumber = True + self.assertTrue(foundEmail) + self.assertTrue(foundPhoneNumber) + + def test_get_inst_attributes(self): + attrs = im.getAttributes("CS", "acronym,email") + self.assertEqual("acronym", attrs[0].scheme); + self.assertEqual("UCS", attrs[0].value); + self.assertEqual("email", attrs[1].scheme); + + attr = im.getAttribute("CS", attrs[0].attrid) + self.assertEqual(attrs[0].scheme, attr.scheme) + self.assertEqual(attrs[0].value, attr.value) + + def test_get_inst_members(self): + inst = im.getInst("CS", "all_members") + people = im.getMembers("CS") + + self.assertTrue(len(people) > 100) + self.assertTrue(len(inst.members) == len(people)) + for i in range(0, len(people)): + p1 = inst.members[i] + p2 = people[i] + self.assertEqual(p1.identifier.scheme, p2.identifier.scheme) + self.assertEqual(p1.identifier.value, p2.identifier.value) + self.assertEqual(p1.displayName, p2.displayName) + + def test_get_inst_members_jdInstid(self): + inst = im.getInst("CS", "all_members.jdInstid") + people = im.getMembers("CS", "jdInstid") + + self.assertTrue(len(inst.members) == len(people)) + for i in range(0, len(people)): + p1 = inst.members[i] + p2 = people[i] + self.assertEqual(p1.identifier.scheme, p2.identifier.scheme) + self.assertEqual(p1.identifier.value, p2.identifier.value) + if not p1.attributes[0].value == "TES": + self.assertEqual("CS", p1.attributes[0].value) + self.assertEqual("CS", p2.attributes[0].value) + + def test_get_inst_parents(self): + inst = im.getInst("CHURCH", "parent_insts") + self.assertEqual("COLL", inst.parentInsts[0].instid) + + def test_get_inst_parents_children(self): + inst = im.getInst("CHURCH", "parent_insts.child_insts") + self.assertEqual("COLL", inst.parentInsts[0].instid) + self.assertEqual("FTHEO", inst.parentInsts[0].childInsts[0].instid) + self.assertEqual("CHRISTS", inst.parentInsts[0].childInsts[1].instid) + self.assertEqual("CHURCH", inst.parentInsts[0].childInsts[2].instid) + self.assertEqual("CLARE", inst.parentInsts[0].childInsts[3].instid) + self.assertEqual("CLAREH", inst.parentInsts[0].childInsts[4].instid) + + self.assertTrue(inst.parentInsts[0].childInsts[2] == inst) + + def test_get_inst_groups(self): + inst = im.getInst("CS", "inst_groups,managed_by_groups.managed_by_groups,members_groups") + self.assertEqual("cs-members", inst.groups[0].name) + self.assertEqual("cs-managers", inst.groups[1].name) + self.assertEqual("cs-editors", inst.groups[2].name) + self.assertEqual("cs-members", inst.membersGroups[0].name) + self.assertEqual("cs-editors", inst.managedByGroups[0].name) + self.assertEqual("cs-managers", inst.managedByGroups[0].managedByGroups[0].name) + + self.assertTrue(inst.membersGroups[0] == inst.groups[0]) + self.assertTrue(inst.managedByGroups[0] == inst.groups[2]) + self.assertTrue(inst.managedByGroups[0].managedByGroups[0] == inst.groups[1]) + + def test_inst_fetch_depth(self): + f = ".child_insts.parent_insts" + fok = (f+f+f+f+f)[1:] + ferr = fok+".child_insts" + + inst = im.getInst("CS", fok) + cpInst = inst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + cpInst = cpInst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + cpInst = cpInst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + cpInst = cpInst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + cpInst = cpInst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + cpInst = cpInst.childInsts[0].parentInsts[0] + self.assertEqual("CS", cpInst.instid) + + try: + inst = im.getInst("CS", ferr) + fail("Should have failed due to fetch depth too large") + except IbisException as e: + self.assertEqual(500, e.get_error().status) + self.assertEqual("Nested fetch depth too large.", e.get_error().message) + + def test_list_insts(self): + insts = im.listInsts("CS,CSTEST,dsrlgnr,ENG", "email") + self.assertEqual(3, len(insts)) + self.assertEqual("CS", insts[0].instid) + self.assertEqual("reception@ucs.cam.ac.uk", insts[0].attributes[0].value) + self.assertEqual("CSTEST", insts[1].instid) + self.assertEqual("Department of Engineering", insts[2].name) + + def test_inst_search(self): + insts = im.search("computing service", False, False, + None, 0, 100, "instid") + self.assertEqual("CS", insts[0].instid) + + insts = im.search("CB2 3QH", False, False, + "address", 0, 100, None, "email") + self.assertEqual(2, len(insts)) + self.assertEqual("SEC", insts[0].instid) + self.assertEqual("CS", insts[1].instid) + self.assertEqual("reception@ucs.cam.ac.uk", insts[1].attributes[0].value) + + def test_inst_search_count(self): + count = im.searchCount("computing") + self.assertTrue(count > 5) + + def test_get_inst_contact_rows(self): + inst = im.getInst("CS", "contact_rows.jdInstid") + contactRows = im.getContactRows("CS", "jdInstid") + + self.assertTrue(len(contactRows) > 20) + self.assertEqual("Enquiries and Reception", contactRows[0].description) + self.assertEqual("reception@ucs.cam.ac.uk", contactRows[0].emails[0]) + self.assertEqual("universityPhone", contactRows[0].phoneNumbers[0].phoneType) + self.assertEqual("34600", contactRows[0].phoneNumbers[0].number) + self.assertEqual("Director", contactRows[2].description) + self.assertEqual("Ian Lewis", contactRows[2].people[0].displayName) + self.assertEqual("CS", contactRows[2].people[0].attributes[0].value) + + self.assertEquals(len(inst.contactRows), len(contactRows)) + for i in range(0, len(contactRows)): + r1 = contactRows[i] + r2 = inst.contactRows[i] + self.assertEqual(r1.bold, r2.bold) + self.assertEqual(r1.italic, r2.italic) + self.assertEqual(r1.description, r2.description) + + self.assertEqual(len(r1.addresses), len(r2.addresses)) + for j in range(0, len(r1.addresses)): + self.assertEqual(r1.addresses[j], r2.addresses[j]) + + self.assertEqual(len(r1.emails), len(r2.emails)) + for j in range(0, len(r1.emails)): + self.assertEqual(r1.emails[j], r2.emails[j]) + + self.assertEqual(len(r1.people), len(r2.people)) + for j in range(0, len(r1.people)): + self.assertEqual(r1.people[j].identifier.value, r2.people[j].identifier.value) + self.assertEqual(r1.people[j].displayName, r2.people[j].displayName) + self.assertEqual(r1.people[j].attributes[0].value, r2.people[j].attributes[0].value) + + self.assertEqual(len(r1.phoneNumbers), len(r2.phoneNumbers)) + for j in range(0, len(r1.phoneNumbers)): + self.assertEqual(r1.phoneNumbers[j].phoneType, r2.phoneNumbers[j].phoneType) + self.assertEqual(r1.phoneNumbers[j].number, r2.phoneNumbers[j].number) + self.assertEqual(r1.phoneNumbers[j].comment, r2.phoneNumbers[j].comment) + + self.assertEquals(len(r1.webPages), len(r2.webPages)) + for j in range(0, len(r1.webPages)): + self.assertEqual(r1.webPages[j].url, r2.webPages[j].url) + self.assertEqual(r1.webPages[j].label, r2.webPages[j].label) + + def test_inst_edit(self): + if not run_edit_tests: + return + + try: + conn.set_username("cstest-editors") + conn.set_password("foobar") + + # Delete any test emails from previous runs + inst = im.getInst("CSTEST", "email") + for attr in inst.attributes: + im.deleteAttribute("CSTEST", attr.attrid, + "Unit test: delete existing test emails") + + inst = im.getInst("CSTEST", "email") + self.assertEqual(0, len(inst.attributes)) + + # Test adding a new email + newAttr = IbisAttribute() + newAttr.scheme = "email" + newAttr.value = "cstest@ucs.cam.ac.uk" + newAttr.comment = "Unit testing" + newAttr.effectiveFrom = date.today() + + newAttr = im.addAttribute("CSTEST", newAttr, 0, True, + "Unit test: add a test email") + self.assertEqual("cstest@ucs.cam.ac.uk", newAttr.value) + self.assertEqual("Unit testing", newAttr.comment) + self.assertIsNotNone(newAttr.effectiveFrom) + self.assertIsNone(newAttr.effectiveTo) + + inst = im.getInst("CSTEST", "email") + + found = False + for attr in inst.attributes: + self.assertEqual(newAttr.attrid, attr.attrid) + self.assertEqual(newAttr.value, attr.value) + self.assertEqual(newAttr.comment, attr.comment) + self.assertEqual(newAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(newAttr.effectiveTo, attr.effectiveTo) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test updating the new email + newAttr.value = "foo@bar.com" + newAttr.comment = "Unit test update" + newAttr.effectiveFrom = None + newAttr.effectiveTo = date.today() + updatedAttr = im.updateAttribute("CSTEST", newAttr.attrid, + newAttr, "Unit test: update email") + self.assertEqual(newAttr.value, updatedAttr.value) + self.assertEqual(newAttr.comment, updatedAttr.comment) + self.assertIsNone(updatedAttr.effectiveFrom) + self.assertIsNotNone(updatedAttr.effectiveTo) + + inst = im.getInst("CSTEST", "email") + + found = False + for attr in inst.attributes: + self.assertEqual(updatedAttr.attrid, attr.attrid) + self.assertEqual(updatedAttr.value, attr.value) + self.assertEqual(updatedAttr.comment, attr.comment) + self.assertEqual(updatedAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(updatedAttr.effectiveTo, attr.effectiveTo) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test deleting the new email + deleted = im.deleteAttribute("CSTEST", updatedAttr.attrid, + "Unit test: delete email") + self.assertTrue(deleted) + + inst = im.getInst("CSTEST", "email") + self.assertEqual(0, len(inst.attributes)) + finally: + conn.set_username("anonymous") + conn.set_password("") + + def test_inst_edit_image(self): + if not run_edit_tests: + return + + try: + conn.set_username("cstest-editors") + conn.set_password("foobar") + + # The image to use for testing + f = urllib.request.urlopen("http://www.lookup.cam.ac.uk/images/ibis.jpg") + imageData = f.read() + f.close() + + # Delete any test images from previous runs + inst = im.getInst("CSTEST", "jpegPhoto") + for attr in inst.attributes: + im.deleteAttribute("CSTEST", attr.attrid, + "Unit test: delete existing test photos") + + inst = im.getInst("CSTEST", "jpegPhoto") + self.assertEqual(0, len(inst.attributes)) + + # Test adding a new photo + newAttr = IbisAttribute() + newAttr.scheme = "jpegPhoto" + newAttr.binaryData = imageData + newAttr.comment = "Unit testing" + + newAttr = im.addAttribute("CSTEST", newAttr, 0, True, + "Unit test: add a test photo") + self.assertIsNone(newAttr.value) + self.assertEqual(imageData, newAttr.binaryData) + self.assertEqual("Unit testing", newAttr.comment) + + inst = im.getInst("CSTEST", "jpegPhoto") + + found = False + for attr in inst.attributes: + self.assertEqual(newAttr.attrid, attr.attrid) + self.assertIsNone(attr.value) + self.assertEqual(imageData, attr.binaryData) + self.assertEqual(newAttr.comment, attr.comment) + self.assertEqual(newAttr.effectiveFrom, attr.effectiveFrom) + self.assertEqual(newAttr.effectiveTo, attr.effectiveTo) + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test deleting the new photo + deleted = im.deleteAttribute("CSTEST", newAttr.attrid, + "Unit test: delete photo") + self.assertTrue(deleted) + + inst = im.getInst("CSTEST", "jpegPhoto") + self.assertEqual(0, len(inst.attributes)) + finally: + conn.set_username("anonymous") + conn.set_password("") + + # -------------------------------------------------------------------- + # Group tests. + # -------------------------------------------------------------------- + + def test_no_such_group(self): + group = gm.getGroup("654321") + self.assertIsNone(group) + group = gm.getGroup("no-such-group-exists") + self.assertIsNone(group) + group = gm.getGroup("x4fu89fd") + self.assertIsNone(group) + + def test_get_group_details(self): + group1 = gm.getGroup("100656") + group2 = gm.getGroup("cs-editors") + + self.assertEqual("100656", group2.groupid) + self.assertEqual("cs-editors", group1.name) + self.assertEqual(group1.description, group2.description) + + def test_get_group_members(self): + group = gm.getGroup("cs-editors", "all_members") + people = gm.getMembers("cs-editors") + direct_people = gm.getDirectMembers("cs-editors") + + self.assertTrue(len(people) > 10) + self.assertTrue(len(group.members) == len(people)) + self.assertTrue(len(direct_people) <= len(people)) + for i in range(0, len(people)): + p1 = group.members[i] + p2 = people[i] + self.assertEqual(p1.identifier.scheme, p2.identifier.scheme) + self.assertEqual(p1.identifier.value, p2.identifier.value) + self.assertEqual(p1.displayName, p2.displayName) + for p1 in direct_people: + found = False + for p2 in people: + if p2.identifier.scheme == p1.identifier.scheme and \ + p2.identifier.value == p1.identifier.value: + self.assertFalse(found) + found = True + self.assertTrue(found) + + def test_get_group_insts(self): + group = gm.getGroup("cs-editors", "owning_insts,manages_insts") + self.assertEqual("CS", group.owningInsts[0].instid) + self.assertEqual("CS", group.managesInsts[0].instid) + self.assertTrue(group.owningInsts[0] == group.managesInsts[0]) + + def test_get_group_mgrs(self): + group = gm.getGroup("cs-editors", "managed_by_groups.managed_by_groups") + self.assertEqual("cs-managers", group.managedByGroups[0].name) + self.assertEqual("cs-managers", group.managedByGroups[0].managedByGroups[0].name) + self.assertTrue(group.managedByGroups[0] == group.managedByGroups[0].managedByGroups[0]) + + def test_list_groups(self): + groups = gm.listGroups("cs-editors,000000,cs-members", "managed_by_groups") + self.assertEqual(3, len(groups)) + self.assertEqual("000000", groups[0].groupid) + self.assertEqual("cs-editors", groups[1].managedByGroups[0].name) + self.assertEqual("cs-managers", groups[2].managedByGroups[0].name) + + def test_group_search(self): + groups = gm.search("computing service editors", False, False, 0, 100) + self.assertEqual("csconslt-editors", groups[0].name) + + groups = gm.search("computing service testing members", False, False, + 0, 1, None, "all_members") + self.assertEqual(1, len(groups)) + self.assertEqual("cstest-members", groups[0].name) + self.assertTrue(len(groups[0].members) > 50) + self.assertEqual("ads99", groups[0].members[0].identifier.value) + + def test_group_search_count(self): + count = gm.searchCount("maths editors") + self.assertEqual(6, count) + + def test_edit_group_members(self): + if not run_edit_tests: + return + + try: + conn.set_username("cstest-editors") + conn.set_password("foobar") + + # Initial members of cstest-members (should include mug99) + originalMembers = gm.getDirectMembers("cstest-members") + + found = False + for person in originalMembers: + if person.identifier.scheme == "crsid" and \ + person.identifier.value == "mug99": + self.assertFalse(found) + found = True + self.assertTrue(found) + + # Test removing mug99, and a non-existent USN + newMembers = gm.updateDirectMembers("cstest-members", None, "mug99,usn/123456789", + "Unit test: remove mug99 from cstest-members") + self.assertEqual(len(originalMembers)-1, len(newMembers)) + + for person in newMembers: + self.assertFalse(person.identifier.scheme == "crsid" and \ + person.identifier.value == "mug99") + + # Test adding mug99 back and removing all other members + newMembers = gm.updateDirectMembers("cstest-members", "mug99", "all-members", + "Unit test: make mug99 the only member of cstest-members") + self.assertEqual(1, len(newMembers)) + self.assertEqual("crsid", newMembers[0].identifier.scheme) + self.assertEqual("mug99", newMembers[0].identifier.value) + + # Test restoring all the original members (including mug99 again) + newIds = "" + for person in originalMembers: + newIds += person.identifier.scheme+"/"+person.identifier.value+"," + + newMembers = gm.updateDirectMembers("cstest-members", newIds, None, + "Unit test: restore members of cstest-members") + self.assertEqual(len(originalMembers), len(newMembers)) + + for i in range(0, len(originalMembers)): + p1 = originalMembers[i] + p2 = newMembers[i] + self.assertEqual(p1.identifier.scheme, p2.identifier.scheme) + self.assertEqual(p1.identifier.value, p2.identifier.value) + finally: + conn.set_username("anonymous") + conn.set_password("") + +if __name__ == '__main__': + suite = unittest.TestLoader().loadTestsFromTestCase(IbisUnitTests) + unittest.TextTestRunner(verbosity=2).run(suite) -- GitLab