# # Unix SMB/CIFS implementation. # backend code for provisioning a Samba4 server # # Copyright (C) Jelmer Vernooij 2007-2008 # Copyright (C) Andrew Bartlett 2008-2009 # Copyright (C) Oliver Liebel 2008-2009 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # """Functions for setting up a Samba Schema.""" from base64 import b64encode from samba import read_and_sub_file, substitute_var, check_all_substituted from samba.dcerpc import security from samba.ms_schema import read_ms_schema from samba.ndr import ndr_pack from samba.samdb import SamDB from samba import dsdb from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL import os def get_schema_descriptor(domain_sid): sddl = "O:SAG:SAD:AI(OA;;CR;e12b56b6-0a95-11d1-adbb-00c04fd8d5cd;;SA)" \ "(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)" \ "(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)" \ "(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)" \ "(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)" \ "(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)" \ "(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)" \ "(A;CI;RPLCLORC;;;AU)" \ "(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)" \ "(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)" \ "(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ED)" \ "(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)" \ "(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)" \ "(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)" \ "(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)" \ "(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ER)" \ "(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ER)" \ "S:(AU;SA;WPCCDCWOWDSDDTSW;;;WD)" \ "(AU;CISA;WP;;;WD)" \ "(AU;SA;CR;;;BA)" \ "(AU;SA;CR;;;DU)" \ "(OU;SA;CR;e12b56b6-0a95-11d1-adbb-00c04fd8d5cd;;WD)" \ "(OU;SA;CR;45ec5156-db7e-47bb-b53f-dbeb2d03c40f;;WD)" sec = security.descriptor.from_sddl(sddl, domain_sid) return ndr_pack(sec) class Schema(object): def __init__(self, domain_sid, invocationid=None, schemadn=None, files=None, override_prefixmap=None, additional_prefixmap=None): from samba.provision import setup_path """Load schema for the SamDB from the AD schema files and samba4_schema.ldif :param samdb: Load a schema into a SamDB. :param schemadn: DN of the schema Returns the schema data loaded, to avoid double-parsing when then needing to add it to the db """ self.schemadn = schemadn # We need to have the am_rodc=False just to keep some warnings quiet - # this isn't a real SAM, so it's meaningless. self.ldb = SamDB(global_schema=False, am_rodc=False) if invocationid is not None: self.ldb.set_invocation_id(invocationid) self.schema_data = read_ms_schema( setup_path('ad-schema/MS-AD_Schema_2K8_R2_Attributes.txt'), setup_path('ad-schema/MS-AD_Schema_2K8_R2_Classes.txt')) if files is not None: for file in files: self.schema_data += open(file, 'r').read() self.schema_data = substitute_var(self.schema_data, {"SCHEMADN": schemadn}) check_all_substituted(self.schema_data) self.schema_dn_modify = read_and_sub_file( setup_path("provision_schema_basedn_modify.ldif"), {"SCHEMADN": schemadn}) descr = b64encode(get_schema_descriptor(domain_sid)) self.schema_dn_add = read_and_sub_file( setup_path("provision_schema_basedn.ldif"), {"SCHEMADN": schemadn, "DESCRIPTOR": descr}) if override_prefixmap is not None: self.prefixmap_data = override_prefixmap else: self.prefixmap_data = open(setup_path("prefixMap.txt"), 'r').read() if additional_prefixmap is not None: for map in additional_prefixmap: self.prefixmap_data += "%s\n" % map self.prefixmap_data = b64encode(self.prefixmap_data) # We don't actually add this ldif, just parse it prefixmap_ldif = "dn: %s\nprefixMap:: %s\n\n" % (self.schemadn, self.prefixmap_data) self.set_from_ldif(prefixmap_ldif, self.schema_data, self.schemadn) def set_from_ldif(self, pf, df, dn): dsdb._dsdb_set_schema_from_ldif(self.ldb, pf, df, dn) def write_to_tmp_ldb(self, schemadb_path): self.ldb.connect(url=schemadb_path) self.ldb.transaction_start() try: self.ldb.add_ldif("""dn: @ATTRIBUTES linkID: INTEGER dn: @INDEXLIST @IDXATTR: linkID @IDXATTR: attributeSyntax """) # These bits of LDIF are supplied when the Schema object is created self.ldb.add_ldif(self.schema_dn_add) self.ldb.modify_ldif(self.schema_dn_modify) self.ldb.add_ldif(self.schema_data) except: self.ldb.transaction_cancel() raise else: self.ldb.transaction_commit() # Return a hash with the forward attribute as a key and the back as the # value def linked_attributes(self): return get_linked_attributes(self.schemadn, self.ldb) def dnsyntax_attributes(self): return get_dnsyntax_attributes(self.schemadn, self.ldb) def convert_to_openldap(self, target, mapping): return dsdb._dsdb_convert_schema_to_openldap(self.ldb, target, mapping) # Return a hash with the forward attribute as a key and the back as the value def get_linked_attributes(schemadn,schemaldb): attrs = ["linkID", "lDAPDisplayName"] res = schemaldb.search(expression="(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))", base=schemadn, scope=SCOPE_ONELEVEL, attrs=attrs) attributes = {} for i in range (0, len(res)): expression = "(&(objectclass=attributeSchema)(linkID=%d)(attributeSyntax=2.5.5.1))" % (int(res[i]["linkID"][0])+1) target = schemaldb.searchone(basedn=schemadn, expression=expression, attribute="lDAPDisplayName", scope=SCOPE_SUBTREE) if target is not None: attributes[str(res[i]["lDAPDisplayName"])]=str(target) return attributes def get_dnsyntax_attributes(schemadn,schemaldb): res = schemaldb.search( expression="(&(!(linkID=*))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))", base=schemadn, scope=SCOPE_ONELEVEL, attrs=["linkID", "lDAPDisplayName"]) attributes = [] for i in range (0, len(res)): attributes.append(str(res[i]["lDAPDisplayName"])) return attributes def ldb_with_schema(schemadn="cn=schema,cn=configuration,dc=example,dc=com", domainsid=None, override_prefixmap=None): """Load schema for the SamDB from the AD schema files and samba4_schema.ldif :param schemadn: DN of the schema :param serverdn: DN of the server Returns the schema data loaded as an object, with .ldb being a new ldb with the schema loaded. This allows certain tests to operate without a remote or local schema. """ if domainsid is None: domainsid = security.random_sid() else: domainsid = security.dom_sid(domainsid) return Schema(domainsid, schemadn=schemadn, override_prefixmap=override_prefixmap) a5fڪeC4tM,H"OȬKz"lXB¸2LgrMMԊsvww QnJQFOG7gZaet(PSuUO&L;Y'WQ AV.lw9v;.nqK {w3SSsMzH/]$H)"*TM$ǺiÐ`xt q@ @֩jK ~{zE*͑uBW9-JQA?oRl6[#T[ql:C*v -Fz}Fmx )~̍i _h3t̔wm rt&}mÎUԜu"?oek;t,6"ZGj;[@lDŽ0%VfKd<\r4[&>XX~R_f WkmT6}TZQw+FRYv&biՇp!Fa2Sek7h\u3~ ø >XAC |"&`"FoY^22h? &&]^8PZeOUJ⠐1g6bz۵E[F] J*8LiY 18g**'E(&ENRJ@]ΊK݄R)M`I䶶.}?Jth_Gڢ@b6ϬvH9%䛾֐f]R Wɻz F bþc3=Ƥ tF)u֢|Ӧ#0j$F {FD'4"ct0uGΏ!x3`8{p/㬨7piY72pFNBW࿕C3 ꅎ>؁egUPԴH֔lAp Ph4CokZkʤ[_B{fu8$!%e;u|G+v{U}#hIu?a㥈?t0?PU2FVbqQ٭v%gLX4 N3Y3#YnnAmc2DR0љi.]ݠ#AlTk>P?x;,Ф|sL:6ޗNEBN’k[!ٗ? X`j~U8X3¯} *;')NNm I;ʼnl&USul3u_mɆ%XgkỳYx]Գ]UJE{x\JH'M8ovZ:^abh%pc_f3Z sV/ ˴ ߔdnVKUQzXc-Jn6l\;QߚE;#n.j9N.(wn,HJ^w`gLgLpacpvՀCmލ@&A07H]y3#;[W,a?Y|T\|cMn1%6";$;"CNupa&q+͒&I}S8BQ.X|}? }πEoxC S+k̎L<'% CιPfWw"5]ڏ`D* 3 osx/z.'"965 Y8W9Ƶ@>?!9SI<✴_ZFW3YhS+A/ƥ}i&W7U{]V rk];[(3X;`UW 6ѭm<BeH':*fk(( -*o/67*]E4o*Zb 6R(y>CYz^/,{!(zq%VG0x@f8{g*uؚ@葇i[DĆo\ZY<ߝ~-Gޓk*@ڌUsi -3ijv%XO^&87/B\Wφ܄`i =yɋ4:~rپn_OۜQUhx6f$/$'kfrqwPLy(9֛\9V )nɫFrYNvTN1{KE,288S99?}$ BA;>'"ۅ> mg^6 UPΙlNWh`VN*` rx -o3;FhG íy ę[+m>d.2iۃ2 ro'?SiG@LM=[?GF> g{ ;l X\uUe`i!SGTEPaSҭ}b3ni߁EoJ 2]35m4R'`f)F]M'Kr`8 ocJLȐm; 7N{O#6HS 1ݍ-<"4Y:;r{2XH@~B~-#˹&̯=)ˑw gUs]²?zW>N+vVN7_oF(R;PHH^]uyZ7ozc23gٞiƄvdcM5Uv UkX@jFCAuzD3$X]uJBb0Ibj|6l\8٥#i\ ۃ$^M'\HYU̸yfÌw.B~\gXA,c&k2FG`s|s9BȹT,3 [|7һ/Jh YUN_`H|RM@Ek\"(u`-\G Pu /98бJ>xμā3  Y5sk?'[ xTfJ'Ѓ1\KݕR!c),חa>y~YekkծA ' }Sj-wa[;޽nYr`HOQ 6Mr6@\ ۄ;1}t0ZBEú 劆K&#.lZD^Zu:? Gtfe|owNMgܙӧ.JpD*pD>_FpM3>|^?bJN:7K+ɶNE%R=G2 .I`Ƀ$ e>:m-u#v40;2S:mN,\oD :)rJl"LjA,G#V͈љZB`Xsz.ƕG@^IPz>WH9RhHjbb-兯t"Bݻ%EVB׾s >J.c\W:,,t qnVB"\+ 6 yַ/;?YrԂn7^N>= 0l0?HMSO!hz w?#JJg9j9M&F m&S1x\vf# Ћf.!4{\ܚ2=qu*ٿD̚L-,]!l=jttx1vLL>A5_KsH% 7iwYBg~FczΪ^]M:'_ёr#2u}C`0n3^Z~m y2RSodzs2 ^8E|\ {-Z̋ 2a;6C`;+u>}e3!H6@esHUiLI-YV1z;žms6F[;4'>}\zd%r1eH ǀN+3ugw5#LlS5UjBo Oz 0}HRS/7 39* hSn{GA3^Ȟ~g^N6 H&jm]/Ytf0 W^-BE#tX[>]z~sNbvɍy2R+̉g쪤 6itN, ҁ ~xmnģJADh4f¾m9n|) zlC江Bu Km]*Un:۴]ؾdL%a–H[`?K)~ǧ8Q2ЉA([+|aqwgGsA5akҋ| Gz>N<"8dlH4(|Q bLa͚@T>&z V?{6jגM`Y6@8C>nZIKLc՛o zzfbqXt cPn]˗[$#Dy`8k4j*8 F'L *Y>X!]fU;CR6 Տtw0Nc ޅW,=&l,n$~o6Bh#BRݳ/J>d2$Uǃ 5O\"`b ѮW͢NFf~ᯆ/jfqXCP=Op#qjT(,H>ԡP']lS^2I&\^fzA2*^7nko:E 1,սwpYq n"J%EsdHY3iw+̒WQJhQF;?F|,[ C?ق7.z(Iz/b$;W|)l)AweVkFy#OW[i(#O):Mo4BkmqS2=CZRrиN[|/YMzp>l ]l!w 31?tfC |‘dby!Vkְ`A6) {5G!>m};V}%RStG2| |c2J{?!?:AHkz@6Oұ1E$&_Du6w\l_t圶9\-ғ k3ݙ*byD/^I,+=z"V(ub[..d@?JO‡flǀTHWNX^ŸaeE ,bo,,BB GQnZ/𽴷y>VU K:&OO;w쨙JWMj'^G=QGwO|J$ rry@<m[!Ta7!;Rnŀ|N᭻јXO.)+q!W'c p ]|ֻ1*ޡCזg+ɲ(ȏ26]wS8'=Yr렭]QNL?^[>o5h|"scXpn-%^'ƙʼowㆤT!8x4,D|7g ?_X֨iSw`}–U[eNajxH>Ymyy[@ 0xv < ] bTMVJ´NP;m<ڬmbc1qSta]\^|KBJ- tgǂXSŪQj*ZR:N[)Nm5uտ1D<*ؿn/t^w4AJӄ<~DWHWb9)鯭+,e(z*ֻ9hQ1f>E'WCZ ḷON_n3!5G9{S_^>3Ѡ;&g>}$,ԜIfMx1M7 q) j UH E4 .[v_]%<.glGm6/"EA0!!~gBCkÙ]bBUCe y 0w8'Y: npa$F ;I/KD;%7b{2w "0v8̈́@%TbVD1L67\;h TJ.C\f ,^͔b&-]# X5"DH 3X!\Kܣ*[t3/̿wtbzr-Ac4Vޖ@(EC:MPgB3Q;̤:ɡN_qj=wUե$Iо#k?7/d߁Wk3 gA $b^B #4]\(tAƀo ʰ/+>.sEodνIQqk20yj=ad5ppk+Fw 7%RDpM3'3h D7K-: w|_> ʑH:]kAi`6*՗s{+("(Y Z +Gtm|߬FˀP`*˥+Eҧ$srޣ\7!Z6a"M59Я;c+2wbL]|;&{Kau`;ŬSs,`xk-YUEgWׄ3f |T,Sw6|R!$ZrxR YpeK@f .8VQ(IȊA#=&tU)PvTt@ed)R ZR4Ok K}ܧXi/ JOZbgHtb=" (vHH.9DTWo8ľYЂmcPk+dnZ > 5;5,6ÿҥ#d(a;NXV%TIylYcga?gIz ~ JF5p'u9;b*]Ad!$sNGĀWZNjV#,ژYqKE=q5sV YRib{b4^G [&Kz43aNW,%=? q7|yOPBw Yn9G%;L֥&%HpVM ͒X5Xu7,4cH. Ik>SAn L#yhAs БaJMֲ8e)$4a?.ߪAC>)!R̍}FRm%KT*{SPXVS+._&XDIHu)`OYʣxa΂&TV>)sԢ3$nup YYtݡ$ҫ#)ƏON`qD8FQ)%wͩyzG##^z6|l4AViJ"j0/iSEqwz/'ȖWxh ~XwhUޣGRNq0#_J4V?NE#+D掋u̯dͧ?l ',3r oTWa!Qǫ[n@Df4 f6YMSQkENoR&s'8ϯ" gL ʌ!}$T߰bv3{O~xfrYDG3Oُ _@Y{`v.9L#do"C<4y+xæk*Q)"DlO*͋#C*珌>8 k᭾,c7εA3Ot^{llsbR0nJ8)pO *_q曭!Miõ:zӞ#3o:b=xn@A5D/ooۙKc5|`ۥsWg:5C<j,4yRod%yqmrXlx_f;X5c8/.vt1x(v^$Vt23O1X6Ŀ ;~ V'(h{ԉzʎzY0Cmo_.,.`=ie"ۮ N:^fZ4H{\ n}sP+>^}1:!~nޝTNy֚7fFvH*@'aJo`;/25L q*%Ɔ v?FVj XN$|CH"`< ڦe[kpN!_(Ry4)7{#O$0'&˾ i\z\Qr)ԼMe(̸UBd?8|IBYV!Dp-:C E#$II;Jm $-)fe'HX@K2蔾Ò =M=:4ʜE8z*}j.4ޤ3K pe߀mڀ[&~ ~EwP,~P+< ߟr[ivTWW)@ Xɻj=hE!*ib\ʙa%מ[Zx,{:g]_0+g%=Cw"6ru0)>{8&-Ph,~h Z_ow1#3)l@ͽ#SbV2td$p?&BFԘDY(Ÿ4KGs_qJ5 W? ѳy~I?q; J&ay,zFpe_ͣk,RB^A4ލ(z|;Gm3⋩nD8'EF!^{Sw*5Q@ Dawj!Х8k7yˉ;`0L@ϮA2IAlYLOcJ#ǜ!cƼ$@v:U,N_{%SCR9+96S;myFhJRzl-3e7ot,|x)-Mʞ>A7s8"7|L@ۚsJ`l#Pr"37 3){|c 25E?3K("\P> VR|BB Rez/Ό@xC`F/(;:mG+= Y 1r`@$۫GAH*׮C=_<~mfnRY( L4)gwOMnMGswD7{>ԄN cf| qwUjf]*kn,qpܮ 0eѰA%f 3~o͐K`]ngQ5_S~}C՘jMe\rgPb$]YH{ SV(ןp Qxׇ0JS޲}~!5xGZ}CB|9}f|j]|VfQdߖB(5эWx̌Ә\u*GQl$^zwUU{Z%Ä1;$mT ?bp AFa8!eYӆoI/hD}Dh=1R9V}XZfNcYY(ȹT*om93p]3.dF"&~7Me[֧#aI =k^mL:K:0%wȬo-,9=Nu$)T $" R~#ӗUfx="հ%AG+w9WUAy|=^ЮWh/&/!e" bYAjzs؟`~QacIIB[&= 9:Qf+5yx2mHTNvAjjtp!a[Vѻ%{}I/.m)>_ewg,`hBn= g׫-ԩ T GΠ]oܗqva|gA >Y34%WX4-*yΗtN:fW}(Ls֥i-g,lo=PPp$T/c:Ex-*"WH;wYo! Zw+1%Z<7\|o!KӼ`*oXݼ|,DIla]*X3|!2Um{Rȏ_j*%YXA XE4 V[4ݢmު6ϯkI6ԕe2dYa< I&7wiN ZާQ\䵒]8HIY@ RKUb6ٿraŅ %KE2#DEUݔx5",WI|vȔn]wX\]#oLj95GLTbޝ;KJ8/w4@K!O\@+a^84<5}OZCS] rY8%tKYRV1qtf9ΪΆDJ$xR&hʦZI]E|1vRlST8OVpƕlX7IArSEtf/eZvы\Co47? 欣#aA1Cį\.v.ŭ|evώ}+T9Ң|AG/Of.@;\$$/ ''Rʮ>#bf &MF2!A&6_?C.( 7v K.z s[cBGꎏ; Sƭd MAL#هM+P@<pM0YSj1X* V ,ד;qxbk]5/r}w?S-]:&xB}o9xyHl {[[!t[dw^ݮfd#4v d R}_l\iaFTΚm($? oܬ~V6x<] Hb_-y127GMtbeZ\^5}YF%ӫiy&:5y^ 1&}/ 2@軴n4 |( sT4wC&L ?#nX_nPc`v@gSrt^c@]Jy偡f6JX5Iw;ށ-3'05< DCB·I5Ah GWst6]N& ŽaEI´wT hOfuv}`ǜ !.Z6agg^*Du86'V>L(K$CJxZYNb@nlNժ7M^ tQր/ĶX?-_A^[:%qA]vlڦm!)7K{EJX^%Ǟ9L*MBW6њjZ4Q!$+c?E&\j!~TO-vTR;_ɛ)hs E4;ʄas11` HfSńewN 򏠽%=`_1]I'~U<T@Miaf-Ły 9<^OS?!b4\C|: -’ZʺTϷ~^1S!U=J'mKW<勣ϼ5Au*(OiCɔbD[= WxvM ܾdXM]gքIlI8Ck8#BYȇKBONp0̆3 ׬p"{NfJeKxc-Q6݉Ku|?K l{ pNJ|IW lኝ#rμ!郌 %oe(Mh.&dcI!`CzyB E|{B#H!o7o4mX6ʙUH5~j]ԑlSe(b,19tLi>: i:s_l㦔a.rZW~ntKbCPԥ)b՜c?n(u6R&%K#Ոx_xE:6 k\Q̉NB`};7#ӓ)lV\DžSnLH`49WxhMaɚaW+xg}S؈lu7JJʍt&YCzPg(TvJ?HRb@5q9unwbSIqI>]GrnMp>\є5θESie8E) [&' FեY9LĬ 2PmXCpv#2ҷFz9}mq C?a7.+߹T;^@)uW|ү3XޜxO=,0 ΄5x;)nPd0 7c[ 8n}Ppq(Wɢ?7qIHiR: BM?f[IG.2kfͰ98,Ln(Zh^ǤW-)0,pW~ 5ӗSq}\L_G-& L9eDL]DQo͝cӎxMvBמ|O:, E7I4hX)cKܒc~"|p䒮 Q^ ?բ-h)%7%C#w }Jp`HTdv؁TC۰lI_.\^q3b$V sZ5!I:KH UuGXA'9f5G[j{_ݲhqrJ{W{Lԁj|3X8Ѝyi" wsdC[!a:%9qQܖȈn} {9(tiw*sg;|{HtG|ܤj]iv$i}tTIT!S~끬Wt f!KNPl\d5='W rEU [ Rh?i] ܟbz۞n/6K( d=3ȒbP Vʐ`?.5|zŋL6EaMBs2Y@Awf&ZL֕Ég?snUY=>Z '2GQu!6#pf-Ƃ-ؾ!gxg-lTy'yb]ZE[˲Þe6ivGq&2ꅭXK{u-ϒq?0^?hX!&Pȡ&UA!Ϫi~ۆQj LNnIAοG *~FfϕjT~vcVB5/849<]?VSrXSIEֽnt{8Sf^1iX*!7*8H:l܂wC&2ş1Eg6"Ap?is 8>1Λ[Ƃ=HEapn򞂖hˆ+]ػ61|ݯm㎶B/^DinU9/GLjds$ hNja1~Fhڪ }2*ȝ)W͋_hS QOp[ZEaAx=3"]]lUV4LY2E9 Hٻ '";ZX]!:|4cԳ=\G~]oUt~tn(@W6|6<ֻx‘nlGs q[$ 4X (E~[rhTAiȓjH,őEJg]B\6ȲKdǂJW^9wA5]r֙bPj[fB7K[FZB%#􄙁*<<B63R=w8W9:eAݨKNB/QMkEHfzOmI@B*d2puF]mo3p/GkCӏcy&0J\igTʹC⡾<"47c.??Q'̧q[(=YXE#2>N J}ω^Z|Xի&;ŕt~x;g"2JFGϨL> Aי2_ۅ %+$QdFn "/Ui l䑳UNM \|2<=Eٝo iƛY ,}l_>/.t WFdB楤؎O7z6b珵ƿPqDwJU=ofeү~6Ř\ڿ$gYv1q\^)9Gv S^ό>:lʧ3 +N*JUد+8^5ZjI7T},rQOq+xwi fVcv +x.)̰CI%=5㔵-IYbVq1_;Xˢ8'9ނ%Xt.~sx˔Ey>%wUxox |Jg\dʦBifetC.a`k(Q%lаቌř04sL(yvNU7FЙ2!3ݰ9`YA ,}E}C[c>N'$0 bݼ.#alPjʣ/ŕ;8מƔXIR fⳲ#UDvOt")k]O9ˊ]pyD?}4GeHU,} ,s kF4LK Q@L:\fhz<`GsNHr /cjvw-KZ-?":&.@+\n1z0y1Tмosh,Bo12>c0EF,qTdnLq(fX@>U&uTKhrZj区*$^0`C)W贆{~RR!QOiiy&Mv3hX_I*I*,bDDߕ|$wD( ~>?Waz,*g:>DLJ:ڡڠUkp Ph v ^-f%j%a LuKFC@|j޹<A0j<;a}#>43$E/3ަH<~y6" ~7qlu3~=Pc;m3&X޿A< HTxj g+ \" lnzB@[RrH#"W%)ړa>X`X1 7?v/YhsA#Y,6VE*p=N=v\E?}ɥZQ1}֫lA]P7iNƳ|/ܦB"^:VP40Zʚvh ^&X>͖.x9LRlcO"n0]6کwR |)̪3_Mװ:ae!/4k|'rX'|-A%jKgcUӢJO19&KM1>{qR7'r ^?3m/gٻas6 ph+ܝ뢿,3P5h can\bژyn/鮋VށW*ܤB0VkS {k\+G|l`~oDZ(qM%ov/Wdݞ΋;Mޥ94 r&:WX^=*#ݬ~/F[eFNF̛OGMyx˶L.8ϳ9Cx~E @8%lRD7}'lLILK\Μnf,XGҎ4 g|jYEVֽeFsMTDI y2'z}q!=FjFzE_rB2EB1SY'`!pi:Txh? Ld_"O/~zc*J~gaedutkk pLЬQہ~JT#XR(p*a}+\)OF#?pk6=oz:h_6 rcwc+Cs+cFǼz))/f#6+\.M(چH=SpBC*r,_s~k{iœ"~q- $eqHjRS3y:Oq ~)%њ|c6Z+'X)IЇj,ϠF?ά927Ho7e?f\Ǝ2S TEYw].a5t{z~X5Ȃ) 8dhgˀ~kЭqeыcnK<·׫-OA6ȒA] 럯b  ?oщl/K3XYǞĔ͝:":d|pgfMÂX-.H" ?lfPDi] VT0۷p5Z"!BBQ̉.kJLS6'>+q+%'2D(>DҦP;UfVjz[:I#BϒGax́8fKGaqah՘ocQ&uvV%.Zq-pG=ŝ)qY:cQ OcRr$T垲q#^z3a'94'jƫIץ ބ|<n2" :)a rڡR,݀X e~&pxtv&hkcgz*ʠ*;m9'J`$c g ^:MM*5L/] J8.], ȣ=41#kG$ ++ϯsHhtl~NΞrETPZdtR<1$!$,n%A,m ]?z4mXw'fyb`ҸӁb5Tۜ2 brX7Ǭ >ܛsO(e$Vf|"a&5zWZi}Ә5%@0QO#K/%*7Le[p[ Lm]DFbYiNĪ;l("#tz]>[x `V *ɴrHb @\"Tt!C\om|M)&osr9MwFZ~[{aFV[-ERBRJtRB`ŧ lK =EO&{=B9&  yMnKQ wKh2cǛ5!b vR^wW=ٝ?}Czw-P]&InWl(O^ eqiX!㔺n~\}Iz':,N_=;q3S]4D']&>o‚jkMZ¤ /RAά. Ν#{!ミM?Nc%qZ72qPZl͛7} }P0KkV\=$ƺ"[ܰSEo+{4ɨ0ܘZ7x;J!u2Yy)J"tF$\az^DU#l}wiPkWb(6gNۍєU $DTnY]6s7eyVUM _ᚓ%)X~|:u5 jHj BXX< bK$z/Ճ4, U?ֆG&un . qLA⴦*[O>$T/?BΊ j?(|{vk7@ev=iHSEcYBW`=rIt~ AGZ`5VĻ:&1n.P"񏕣YXeEg\Et3QQۗ b4+}8zڭʹa۠eT HKIm`JSˇA$P]Pveܖ6伱h3kL66[-.M?wMɋWv6iŹ;yo_"q-5IP$ ޷>4'SR횳:r!@V>J:piSQ=Kqn@z9SI'd'¯[tQiMJŜ/Ń1xo-öŊ˛_(mŚ_dVSGh?ޕObu^ěۮpq&߲UsW@:F<sђK︫P[ O*Z˾+N.IrAI57tYmXa~/ տsZCOk4ɪlc3:[=f㾵xL8Ա>k޼!(xcֽ퉈!H*<{_kiW"Lxچ"5ܱCL~D['=v5A Hb{-gg'*Psĺ3+?h+{du߻=J D#Ợ$rX O'c0eW#6zwQ2&ʪ}iK}OO_<[ ח{ vZDpJsq#%O+0m",اQԄ yUpd!cnItJ|b?RgnyA| ak߹ե0*5Ѣ&??fyT|>6:7%j">i391⭍dpbX A@+;ý0UÑ+; # 4bZ5g:8ҹd0t^LF໱֡C2L.穎/t6"W‹hj>D̿v>gʇp 3H; 9XAiljޒ @\x wR{ړDrN 7ڼjvvYf9ph3[ Y!PyTZhN!azm{ Hp6xU `=Qx ɠb`Ь7(s+į;C6f2k̥7+=08QOZBסA=JWxv2VWǦy8 Rfcx x]وfX "BB9ʐ4_۵'~b6W7=zcd@/8a(M6a٭zz)9;bSqc a:# ] ίCHL }{ UrmGHֵ0t >jxQ({S,!VzLÖN)ڊ_ D9TW [ ߼~P7mA 5¤;66E+D{"<;g,7lvۇmՓSS98GVc8>`;@ ~xX!.G+>/"qsmDNъ<8OF|f't j2-꿫O =I݊~iWc)GMa)d,;ME5(U} y"5;fIFf5)MEp*tpA,K@t~`2@54%n7Mwg$0Ugsr#+/X㴸V ,*Y^ & ϊ&|5QU/<7Zρ}IFD/ɹ ;@FTuғqQeE8AlV3̻"#'~4 ȗ"0 (Į*X?TqGn*?l36t/\5d&N ̬gՆdjE[T [p7oNu_*{niuEYʾ>h5_v`h^T.cav|owχmy>R`5kFA`1Kqς3#g&>x3 ݞwUKӄMH7H‘j,_q D ZbʁP!Ae8%RU`6հŒU,DÖ +ln2V?R⠣ω W~Nk ~?LK<*k⟹z'/]x),,U }NL(B#@a؛RSaxIމ*/lެ-۠ˍbjD8mJjM"5)KF'p֞UBDkp֓ko*P@ĪhpO@v=u?ΛcR0je}z2Q'Znj+^&s>NyA2&7Ǩ{6q&`Ier؞{A#` ;N}>=fV%rU syQjarf[YRnN3f4v舠5,]8|C]lZTto=0O+ZiNKg ]9q$+,nn SkLlI@nk*ն$'%*\BI}kXP/!zH8m)LәIA@"zN9S( 1X[eE$64}+@ eNriZRL$yMRE@. r14$"׶]5W=EώwC_Y'_N0k~1b*(*,NӅ\X eƅp\8=BW0B2Wp- i(ǛzW%mnAz󷇰Br3IH̲E-%ԪP1#rfF`fzN ['o[Jн xk.Dp(߇a$yfIޱ\-ų"!vp 56ObV{!Iש|;PG3R |].p,ﯞQRxZ~N PF}9Cz1:_czp/FPK#%uBJgM}Cq85H5Юv|%ڟY6T,bb5)3Ը`4}i<gܘa[>W ĖOOv9NeR/G3qtl*Acd |ao7dh EOlcgI^TGh4**hj^,tn 5`o {X=>xr0I&)J!P2:r0$P8&o`ӸO2gSDwL3NU?m, I`$G"FX/{ 0ߎnaD#rBJ6d;Og9,yuc:!{tI̡v 0WH1XGWl})"CGw 0piqR_ "lJ kV=.oQqmB\9;BXln\h8m QDJa`c rqc5(zǨ7bIh8:;豴d)Sқw~$R;R=̰D9UJOYQ2Z\E0dhh[K =Sj T,Z"yą9#/<|"wK1WOs*8HhK(r@=mMy}E)&ߥJb\?m?+xʭ/$Qh3|Q>3~pt15UT*t׸yҝ*+![oe2@V-#)+iĸ)ʺެ*o]Lsryt GΓޢ6GKۃreLmrFʣ:؀q!ֵ -LF}W["xh ?yr2HZ1oL ~cO }!K2 UZOI0, ɹZ_>T]n)䥒iسHpީv@r/ph@|~fߴ,s"Q8֠er'rΕ׎/Nf&-vJ#n׿y[ps]`fXJNqJԐ2A(c>2$ ._)&Vx_л:ks _E2 :Œ93{g i3ЙI c}^6Wyk() 7ip=Aa4?̈́ XzZ|.d~#yAh򬈛FERLComb{l`XiY%O^';\&w'>W;Ŵ* ,\\Oz@]k<(pL? 8&YJw&yp! hyMɩ+њ=~$q0ݶy2? ǃ,6ia@zYT[D=,_bOsv|.e>JU< Apq"]J)V^Gl|_ 3>q2\kHQ2糧77-W1Q~!/סAnvoyyʬ0*pŨ st'#SdէhKJı}/@cNٶ-ڻՉ+?2+ W<`w񬪄-%<^یtIr}`BR~ݻ> S(,A1<@E^f7TWmB!4;xV8+2w$.-330=`[d #_@:9:U5;ݵ {I1?]צ,)&-Z1E`J_O7Gi}`Ğ5j*CNenk86Jt!5_+oJm':FH(u""鄮ankwѴϮ 1MhĚ\hk1mݽ|B b60lMRdWsXC29bd=`U  Ssƒ >;IxG(1^PƪzV vkW}ۗdVP=)f )ɲ)ߘ 6Q [Xǝ`*88[$Ȧ_ua]][Mc<+-N |GO ̪=Ûjj^o1L5yOpl ykE#͝7Gd e--9)\8<1`嘳~bO~|i''>sd_gnj(g ' s4=d]@Z::ȿ*8⍱}}.ҝB~lLӄ~ `v.{60? _g(fVfߘPM@A6ת#>jnUNMτ~Z'סyyM} -8/-`<@O՞s%SXǓ~”U v`"_eXYҰ SL§ 4%X VQD:j2 ywBɈɋ[գ!\K7fs<[-՘R晤_l?E.6ݳqF-xb; ǔ-3n<ԛeUrx cT*+GƫPʶN-˨5KdQqTC~X&بQJuH6B٪1tY,mn5*dS:rF 2gEdi8r>:u"@1@,ԨnŔ%¹~|7rf6<߯өjCbV*aC r;c~ORKCZc7j<)UPRLHny\)3{lt3rTw빮mS'C- BF@! ۣG/Z$C֛#X 16cQ˖ ޖ!Q?1;3& ^/beuiV$'|zET+ . Z֕3>v}$#jr$v;xSBA #L!\̮N|4Rz~rM;zſ]QYi El#}}=. =&YNLGyg{ Ӌ\B#`NS2eE4[:J{ A\\,PlYҽͰeI ڥۦ ck3jM Ҵ<Ŗ/&슅G=*mDrѝka+~ժ' )j9alH"l RA${#1lE/kc^L]&tټ<~i>`u8˘Lh4CrQjHR}pVOxQUH.+Cx5ZnX禛5#g̶IS׉?iaLjM-',O.%"nGoSB .I S(HI/NgǫasKy@`*\{9HSNCCI [ol۷'̯6T7wQ%7SS|y j^RŮ|,8^ ;ilc}I^DafBTqFL&p$~sK v5WY{%ȥp3,*QVBkhI"z z{"N'< &C%_zMb8 gp Z>zaػZ@'I;93/7lc \g3$#m$~a^i1 D$ inn;+L7,9/B1DE7l(<}!:PD7:<0QPlK. }KP!xpTM4m7<u'd?RfH40lE}M>/3wi \O HDIa Hb܍o/p(eҰWi|P-!⚦_L?Sz -Jx(7L]J^_Z+xyR],g 2Y|qY. Qt:j coΖKg 4kIP txCUr՞ڕi,,tlvXvbV>g/3ݟ{o#7fp zȃ)(}Kr憞1bGO1e_"qP#H'2Vp'Ǜ'@^9W\͊GIyV=j,8л 1ш-Uj0ڹT $8:9]oLp$#KO;5TH.gIY$ԑ Lz+;{mS'\n4ڤ-W%KލWfqVKe>db4ܵcؽؚlЮYZb(gYuKrZ>Jlr"?^6 I exc g3vIxVb/m΢m;z+l<}XNs4C,ZnKd  dĀ'3y\ qf" d, KIxy]KAEͲy*9 JS]?q 7k|R[2 xF)J⃲m<MXBXs,1'aC ] 7o=\"F/z#끰2Vj|[pV$_1ly9n ݬD-\Iݪ4`ϽfzQ\-8n<\*|*Xre|/d1 ' %iihm<1!v@]!A hRwt8xra[7ZB-<F 'o#/Upt@!U9~C^vOSGXy4ჭԈdͳ$l⶷9k(vƌfĝ/~zy`;2Dfqx [7OxqASAQ`0:-}cGqt7f3A&99[# q'v CJb3gXzҁtnlA@ʱ3ESImbs=]vOK2g'eFY F86nFRKmۡ$J o )(`ʥ1Y0AXX|s umfTlJ@D""rȯ32{vhݮnx:S^fO58n'oX:99ü'_9" ,7gw9:4J 6EҒQLma9:$G RI!{ kd gŇ$%mCxQ)G%lk] ^!kf=6>WGpYC#6/bUʕ&6˾Z:ewj9Vp*XȖ I# _oyIr -Q_\@PMe[`jv[}[Hnh_4#h%d^Ϣ)*Q8VB35EWo)gxW; CeBmHޮg}&PR"ir lq TBER99]ņ^C=>'@42O\N:nML 3}Րףtk%=8+{[(SG9? r8pѦ$9sM҉UDv@d<&*uɦ\OK]wzR'Quߊ^G~ØqPIɭ#h~aTssb~gBİ#ַN9BelZ?U:4Oh@2\&Tb$ :m觍!hx^"봂5/Qb͋{oy;-1qgm}]P}mF޴;he4 aU:ߥ"5}$5d_G(s׏dKfZl2dCiFNϰP&쌛4G*b:l_;T |( j7hC=0)M0w{Эw =!@hbdD`~#ҊGԼ+~j8zԽj!T# YCܰ"V)M@yb՚t z~4z] Swy=~Yw!K}{Hm社v? oYؒbB͎8JT%T R0W;VL_xVEHĩ|Hऱ5XeU^T?;!(* *ps-#^r,*F1VNK6qpDs-݁yPm6 S0ҷt{D}듣ח-%lªUob .:e"*O0U53 A^&_Es-M^Xy-֘wnY4YN~_I-`^ v)^??IFT+bkW2&еlO-wR(m5{m<Y֦W;$!$sCqZ ;)Ek~5n %T7e7n3gϫ ,+ cYqdOoYkg7A}^Fq6eצּ,FHQ SˌŒky*;V6q+//L~J׫,$ehhW`4hW/=~ E\VPFNu{{lz\k+ &zYm?߼"(hW|~ +1/戫8YJzY84M6׾o}M&]_Rt<,Jr< j BVr sG#e9['?sYȮ}Tե%@w."RmC#UjA@S^gA_J }iTJY5_lmF:(kYlX;QUش0-cs+VXx"^?bH lGn{0s 6Vx1$5OV"P/VvFb;ZQH & /.rPRb9D07{0zahfe ,Y%A[(/Tqk r*zWkB L{Ya%qߟ+=;زCE v&e3!Ȕ| ;WFh,ӑxL޾Lm=跬JC1r{oAE]ZuSp gE/S[ ДhmsѹK x1JK_HZ(h)*잁nM0XM$d{iE|}ӥsh%*HIEir=˃?n m5' 䛕&7 TNjP؃֥*x@b~Ȅ . j>Hs+v <' V[T&4vU)Kƭ^xA0yE}Ҥu<3C3#( |ưA|1Z~p#|RLN\dtT )py#;M[.C$!PA= Lԥ]!;> х~ke~FU5^9»1.gx ^#X/~?#TZA"Wwp:T?P~$o"Nسu,e=]3-|sy(}ρ(OKGN~4G6@8~w%^>(~u3?CF#JG])fYs5qb`ګ(rr'CEf#l`Ǐii8&78 )N|;}s4CT[;M{|R=CsZepq3 lrid{ʑcuM#Z"wi# 1z\yFƹA#dƁ _MOqXi`v#Rr8Ԟ kJ̟>Ϭ+?|sz^{/ KQro/Jt{1'+g*|Ua{4+p"W#5kUy{;f9싹C̪cAn@ zQE,O*ч[Ƅ>ͷq%H%' Q`;+D $Y8Z13@fV.Ze hҜ3SZ%0xM},lh\÷3tX2m p w~U.hEt ޻~@a êA6mqπ >!u'$X( o9V]'^DŽn8'^8Sِ>as#l:S;?աAfs~eRQj^raP̩Tr9@23k/iqIVrA@bUZPl1}+N< NRcrkX}>]?JXY1g{'YzS~\7mQ!X:!EH;" Wyl$iY \ęuġFRGZimcTj&fo_22I)P'WF#y웁5zb%WT 6`Ag9F  8"Q`-HѬleR,w\͝ cf]0c=$1Dpz~wĄRfG V Qm $AYK)1@;`Z!.Mlxc%/ T;)!#s!= `6dsL ZAycz&Bͷi y2~=i"za ;nT8Wi39 wxڞR!_WS ډ55q;OIJ(6xnz@/oS#/\6zCLLk,D:շCyY@}528SFA3gp1됕(7ȝ~( sz(xKeB⼿(xy$Κ}'MmoEs6tF^ אoxeS5έZ] uaP#~z3[wq@'}}-/C_dR_)Hd%<&Ģ6Z,6P& vd﹏ոܺh pAHO7΄b8 ϞfCaWpl˶J}NxԱ85_F|w&ԑ|ci$9}4TA;::. _>=)`$­OL px=k"&Uؚz/ fZc  6["?y iY(6{1` h7VK ͭ҅lVX2<>"VKf^4g󚲫=j ή.]h l]jo4uAəH7Ƅg߫LTj Kz@%"ۡ8S~W gHX⯱.upT=>&6L͆"Ab@"dfÖ[ۨM3O5ڙ`49Pjhbne%|(vki:טU7>SWC^c,Z=`@ד"lhې~`.!<_ݪ@;y\z@cwҤsP^.[0֯%%)pF5˜uc5eǬdv8rI^.͠uH;lʐԨb#JbGZfqם|.+{4 3p*t"Y?l窝]UmɦNi,ҧظ,7&>Kitgg85ȅC2nGldBwQ\\I>'P|ݓkatVBC~6Wv/NQps:~,ȼEm6`%º$`sy"RKS)`'u%Ѡ:װKKa(^FH E< Hbey2UAwGDZ^t04SfOy+p3r= <0.[KlxiP;P4G0Q)}wy9S`9o1՛  ,|-ɰ3hnY!Z>Vܰg\\fyX0uY6~Ӊ{ s%x8͈o{Tז)as@] Wd4 &J;\GB%SӨY8}9k|>i"+LJVx$r81PTKg~sƅbI@✡cI^ 8,u16P>' c5z C]!qJsw /sa+o*AU o9pNѳAqhi.֔W2_cAi;Pt@E3o\gYUe[q=`]L!u/]tGO:' G˪ OͣG6)t ~APƋDi\VaAJ׎G*}gs UO((;D Pӯ"ьgbUeNTVɕK9ШS(m.fʵǵt:=s@8ybηqc{S,uLd%٭>hp>}L'F.ZMe3NZ:'wDC 0KH SqgL9!eCs~0K-E5n4 а "#:$Q8UH9l3 Ou6\fmf.vZP{;#{77Qnwpoq۴أcC2 %ۨ"a6@I1O qׂ ~]q Q *uUZ_+{%mRCu[S|&D<薬M[Lc!`MX[l PXNfeY}.ev%zPH*t .i5'o}7sw]"*a/V( DNUxNZ't;Me͞RD;FL0Ou/Œ愀0߹<|xϨҰf,.l=0Q8`(9 VfpkQ'wo Reo{oi YV:̦8۱O-,oC)*k] ہq I:nm@j&NJ^<|Hw%+WJ\AאS]TfИbfQShKM@9NrjȼY0P}Xi!`-2d|p aIqSy ~ƪuƴ+~6R㢮idž Tq䊥XN=":odeݟWUjJpb8ʔ_-ex]Α7aq9Fem g'%` rvʽBGBIH nÿvd OkMVY$qܹ )Jr^tt&$5B%3hguhjY/Jǜª! *+TR#Mc q-Ԫ'd 9:ߤJ=8} %R· ^2gx[r_?̤y šUBU3͠6-G02wMwE\̠>^#_fX*< }o/}HlՌ7D䧮ר(eH~/sW(I+36b勐|ד$+R`.C .$(9 Wm(i "#Sx&:6d`l!TێE JF"[Iu MKy44xx;@61ljW<=c!?J0;OM8PY+W>wJP>^"kҘ5φLW{4 MI<.CidJvVrv Q#ث™t/}'lW>Nؒl*6#jYDe-7%R=@ҝ1"0trqM Y*%i7e7j(:af+Xqk"Ds͆,wCBۃtG1(4kS\0ZE]jN/:cS$B9-XdsmvS>EL`HCyJYѽT ia$10lȚ2x( {I:@b5”`;S̵ņ6yFA[iNzoN2JF2H+ Iv 6-e! =-*4S#B>mR&zz0o~1\+ʵstai\zRa]5`e v*Gd"UƟSnª0EtSJoZv` RcGZXM>G>m)`kvJ$aE'|Oy@5wb ߏj3QGg~y0'M1p:M^gK$yuJ'?f6Q,\GN/@6O]ĵ7[DiUrWʮ7P'ǠTVIQt9V4#V0s04NG $ $ՀŕX ! B+Gnoӟjðz/65VR̵=a,!\g5ͩؽ}G؂ ˟AO]cnHBoK+iX]ڭx|S)E"4RwTjTU })<ƶ ('u,_g4$q,15IteT_3k|[iM[ck,hׇWqop%M\*t?:>H^ ~ gr AJ/'C]*"DҨb6SMb}pҰQ| ڸ2W'q}s' aNPK6cq;Zz!eŀC > 6?7oaq j]a;= LY<x/ʯAfg/3/l9^wXU41\'%GEy 9gNDT߮XNH⊬lIvv\o?qʼn|%;Tr.J[Ow@ mݶu΍ %2#W\sȶ?f~{,shry!BK U 2,ꐵi[v(*Y;U1WCMTTJ e63WAcI>LO+ՄSWN@ur ?r[M&e^ ,d@x jSJ %YU|T[}ndr&u/Km 1Uwڼ3Mۋ>DGyg Jd=.zd,Ggyc8tEJKG.hPCͯ+x\ oj<mfӀDoZ5X ?}OnZAIJzx.۫W|hk?\_N&CA+i@kդC֬'cL[|X΅3:Qr3gE.26I>0CMT?1ѵCPhܛ\bN Sc~_?|o U4N&w:j+;?)A.W)gr+yU$+VlQlIbػ`"QjH}qR_Ib=#)zEnLbc8:3S'ĬO~kCW?t~x*£vDg3 ެ<leӰ/STNW [| =OQN(0k ʋcvL5F@P2)Ey4'C1'`5毞I^ʃkB<Va5mc5PFead U2S$-U>1KcdW5$_w373I=᳇7¡JYxŠ_ɋq40%\dR:CGS$3^MWZ<cpn'M ͞G>BpU~< K\@%xzy"^NBx٩"+ ah&:XwsROJܖ`ۡ^~k@M1x#^dvBwd+ 7d)!L_4`@*T9IKy* x/Ib>A)K , 6}yfw=H,5ǜ}2$@S|>m fu7Nh 4澞QΚmA3Q՘fz?olaO!E+sc-jqt2l 0ZQ/,s%8ltr@%.P]:m/)nҲ)U ;_Ɩn%G3jDNps|;O khtSsm K3ø? V_UY\`m\&ƍ+ux% 'PT{b ,KV+W 8@3Trc.v\y5BvpxWu ?i8q-ky5+{W`ys|b{8jA&T# Ыp+& u1WfB"P:K}YښCS焐rY1{CWWZ 8hXp@⚱ :*Z`v*¨9r^@?&,-K$\:5^վaEeg&H3F$L!BI&[}@]3c Nqnfoa$\%7#^aQ#;r\F}J0N2a)^Z7?A3n0CwauAY(B9XuXwR?DW'H6Ӊ_LtNWn*Z~`p%^$1*%do<̓yT@NWm_|7P/"AԉԶp#sjm/pG6N[%>J__ Cd -AI* m~Qm2^("#< R 4 /!Q>LP`sZC~$f\T,p𬔦F|9'S=s==uO xsK>1?z}d}bdlq3cVHdPS1-kl{Ɇ ~Tv6Ynb`bLPy97&Е1/}@A~WޠCw$^QK(ܬ $>6YlH\x{´hJI_ j&[)j2ޒ<}Ku<1enfPu2% ^6*x{=lx3DD%qP|},m7@eKJ A{ fg;W2Z|ub љ\v2~7c%H&/, ֒?GݭoVF %zNx@ [lD‚{_P;:dN?Ai mu㵌~S+ h9nl6,e89-IAŇ1+̋Ƭx~}%JEQ pq(Wer |yT],Q,?lVPzb86MD+I*{ԫ_j^VݎK*\ΤoH ]qDK@"pap\{s~+֐\8oq W"NkBeB)JŎV!HӃeDϞy,ynD":J3#4q,S6HJK,I-afH:sfiJ\!.5bvh(63ilJ6'x@b%[-!$=t؞M`*ĝVБ9Jv+y.E>(Vα60ю᫩KPT?6iSٴ'|y8f÷:_~u/$̬ :MQԷu,-$K;q( U*K^)*Y .(r_\!752l $c