summaryrefslogtreecommitdiffstats
path: root/Doc/tutorial
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2013-10-12 17:13:38 (GMT)
committerGeorg Brandl <georg@python.org>2013-10-12 17:13:38 (GMT)
commitb9e8712a54bcb83d858eb1cccc3d04a32d4312df (patch)
tree14671316bc542fa4f916770a76af40d69ba23c9b /Doc/tutorial
parenta636c8e150319563b5525e4db00be46095a1e5a1 (diff)
parent5db7c54f961141efae123a69938ba4944dffefc7 (diff)
downloadcpython-b9e8712a54bcb83d858eb1cccc3d04a32d4312df.zip
cpython-b9e8712a54bcb83d858eb1cccc3d04a32d4312df.tar.gz
cpython-b9e8712a54bcb83d858eb1cccc3d04a32d4312df.tar.bz2
merge with 3.3
Diffstat (limited to 'Doc/tutorial')
-rw-r--r--Doc/tutorial/modules.rst84
1 files changed, 36 insertions, 48 deletions
diff --git a/Doc/tutorial/modules.rst b/Doc/tutorial/modules.rst
index 132b933..a670f94 100644
--- a/Doc/tutorial/modules.rst
+++ b/Doc/tutorial/modules.rst
@@ -183,57 +183,45 @@ directory. This is an error unless the replacement is intended. See section
"Compiled" Python files
-----------------------
-As an important speed-up of the start-up time for short programs that use a lot
-of standard modules, if a file called :file:`spam.pyc` exists in the directory
-where :file:`spam.py` is found, this is assumed to contain an
-already-"byte-compiled" version of the module :mod:`spam`. The modification time
-of the version of :file:`spam.py` used to create :file:`spam.pyc` is recorded in
-:file:`spam.pyc`, and the :file:`.pyc` file is ignored if these don't match.
-
-Normally, you don't need to do anything to create the :file:`spam.pyc` file.
-Whenever :file:`spam.py` is successfully compiled, an attempt is made to write
-the compiled version to :file:`spam.pyc`. It is not an error if this attempt
-fails; if for any reason the file is not written completely, the resulting
-:file:`spam.pyc` file will be recognized as invalid and thus ignored later. The
-contents of the :file:`spam.pyc` file are platform independent, so a Python
-module directory can be shared by machines of different architectures.
+To speed up loading modules, Python caches the compiled version of each module
+in the ``__pycache__`` directory under the name :file:`module.{version}.pyc``,
+where the version encodes the format of the compiled file; it generally contains
+the Python version number. For example, in CPython release 3.3 the compiled
+version of spam.py would be cached as ``__pycache__/spam.cpython-33.pyc``. This
+naming convention allows compiled modules from different releases and different
+versions of Python to coexist.
+
+Python checks the modification date of the source against the compiled version
+to see if it's out of date and needs to be recompiled. This is a completely
+automatic process. Also, the compiled modules are platform-independent, so the
+same library can be shared among systems with different architectures.
+
+Python does not check the cache in two circumstances. First, it always
+recompiles and does not store the result for the module that's loaded directly
+from the command line. Second, it does not check the cache if there is no
+source module. To support a non-source (compiled only) distribution, the
+compiled module must be in the source directory, and there must not be a source
+module.
Some tips for experts:
-* When the Python interpreter is invoked with the :option:`-O` flag, optimized
- code is generated and stored in :file:`.pyo` files. The optimizer currently
- doesn't help much; it only removes :keyword:`assert` statements. When
- :option:`-O` is used, *all* :term:`bytecode` is optimized; ``.pyc`` files are
- ignored and ``.py`` files are compiled to optimized bytecode.
-
-* Passing two :option:`-O` flags to the Python interpreter (:option:`-OO`) will
- cause the bytecode compiler to perform optimizations that could in some rare
- cases result in malfunctioning programs. Currently only ``__doc__`` strings are
- removed from the bytecode, resulting in more compact :file:`.pyo` files. Since
- some programs may rely on having these available, you should only use this
- option if you know what you're doing.
-
-* A program doesn't run any faster when it is read from a :file:`.pyc` or
- :file:`.pyo` file than when it is read from a :file:`.py` file; the only thing
- that's faster about :file:`.pyc` or :file:`.pyo` files is the speed with which
- they are loaded.
-
-* When a script is run by giving its name on the command line, the bytecode for
- the script is never written to a :file:`.pyc` or :file:`.pyo` file. Thus, the
- startup time of a script may be reduced by moving most of its code to a module
- and having a small bootstrap script that imports that module. It is also
- possible to name a :file:`.pyc` or :file:`.pyo` file directly on the command
- line.
-
-* It is possible to have a file called :file:`spam.pyc` (or :file:`spam.pyo`
- when :option:`-O` is used) without a file :file:`spam.py` for the same module.
- This can be used to distribute a library of Python code in a form that is
- moderately hard to reverse engineer.
-
- .. index:: module: compileall
-
-* The module :mod:`compileall` can create :file:`.pyc` files (or :file:`.pyo`
- files when :option:`-O` is used) for all modules in a directory.
+* You can use the :option:`-O` or :option:`-OO` switches on the Python command
+ to reduce the size of a compiled module. The ``-O`` switch removes assert
+ statements, the ``-OO`` switch removes both assert statements and __doc__
+ strings. Since some programs may rely on having these available, you should
+ only use this option if you know what you're doing. "Optimized" modules have
+ a .pyo rather than a .pyc suffix and are usually smaller. Future releases may
+ change the effects of optimization.
+
+* A program doesn't run any faster when it is read from a ``.pyc`` or ``.pyo``
+ file than when it is read from a ``.py`` file; the only thing that's faster
+ about ``.pyc`` or ``.pyo`` files is the speed with which they are loaded.
+
+* The module :mod:`compileall` can create .pyc files (or .pyo files when
+ :option:`-O` is used) for all modules in a directory.
+
+* There is more detail on this process, including a flow chart of the
+ decisions, in PEP 3147.
.. _tut-standardmodules:
:1!* DKNq)ȓiˠ*և34K0畲0CΛ>>{g:ECuFDPQc!EBhpRA~:dx^q$lQ'0ow"_7ϖڏftmZ@ݹ ^B(#HR‚պdHCCΣ, oE8}LBx1?p@ H :Q+2ll(&p$^DH Fdm/3l챘bql؂eTPBW]M,2a㎑\ *<aL JXSFGD/Ev;I^,37D8rj y7ӳSz?u_F]ْ j:5|ְYO<8ܷ. Fz`oXa݀e{9lH"9Jv7O w8uD,ΡHe%_Q-G8B#kMq H0'Kt^teqnu_)\[v,OrzKpץ:R̷=L.UC'v嘤 M[hfDz@l8hߐ|;p*+T=\s:3֬b̩r{`h:4r-qBN&3 qqϣw+[F@ښ܄U}_>>Wp)rB~~>rܸ[b?Y*;|WE k~FVrn*ڻEU%C4%nJ7]\%ploDR+MC\NƱZI@c\5hJXD"Õ`|/wJd (73GIgǕ_5A:0{.ְ:ʼ +AKD/\0Tv MںRfί~̢2\n "c9_'ވ`08mʸW!a!p4٧:g]ٸb%A\X{ѻ'( L\VhqHX[*A a&ؿ _*øuv{64⎪pSZ_1lu4_ Y!oER5םRtp қlj܃(ū|&X bӊug2g.ux:ClZ3!3R ZR+\_8 U^p2jBaGEj38܈(]wP@P_]u8 ݯATNN!1Ƿv[\fpS6;Ȣb5BH?i"jȚ߆H{uc7؆;@xZ0eMu醁5 imwUvȹAWeYcPf_J qMikv C\4gwMD-{IgTHkADH cک-a&rQQ&.Đ+|"KA4ǎX򳶸㷤[2LR<'#&C%8! ښJ $ЁeM電HJD镋{ye㤮2*e@sk!p/f-(i9Y.|"ƇGM5re~}KtgjD4Aq ?JErIT)qtI$ShGV%"a0~" ߯l01øJ)FB˽P+_cnjVFsifC>ABo 9=Xr6eX8sme4Z.KBbt/U9,XavH5уU9FM|_|y} NN"ldICFY"Ve&r/α|(@+a/q/uc[EIߗ$Ur,jB`Z!pM^)>g)эg5u7wZ.mf꣟y6 G1Y¾N`tF7u, W ÙPr~3[30B6 - Nw ї. 8`l|/φGgK<ȯoϾ^flICS^D~) fI6FsnnhH8&[M䮂Pxs0Rp|kx2ڔ j9bSX–\ 5&Hb)*v|6`הt׌Q(k\"#;Z=O <"zȴlkǓPi_8tsiTJS '>je֞/o'7ӗ˹cOx!cYCjj,NM H^0BҪ 8R&Ì|lu;GbmZsxQL {a/pΝF4 oX٨nL糗+@:4G!0ּUctwc=!Tq$ӣZE:FP\8aTy^0/tb9-ԊřoQsYⷦWa^gNcq. (㺗ֵ\S7hڸ˿C7P=rg&=ZQ}D%1RX}evJ*c \a(ؼ|ƛK9n޴wezFn-@IAQi1X[AwJj a\/.7&ggͭ[ 0Ye~h@t/JbXbhod+yTu 5LfP#$5!.r8[g3HNnsvߧ&@g׈۔^,Y69Jkc}[W]@,uv]e7U"fb`ӣ3A~4K!U蝐CŻ!~"xU2s__dQ(ru!]s)ZsDn&=W=m;n#Nb ^D`DCm|ka]_PhŒ(G+Q\c`ffE9FyvXV(XQFDNށ~r&+]Tsgei.[kO3qlez8ydE"nK,NVG(6ŴBX`"<1 Ő :(xl=p~_9Qsfcua%NO||y[wLӑ?#f4s9j%n{_Y[C:umA w(䈋MQ|!P(4.صz|aHj |Kd7T39eh|qtT?ig@yd{VVIy8NƘaTD[AʸiJT eg9 ')(#}o/|b|Gc0Hl,ĕ3.ہF`c7r,y~^g7U»޿+JD"QLJӵ*:mN2@UC!i$D7eI% ]Vۙ"C]2Vs yHV$OYX"];mhdT|Dw7>oy$+s)@ַ >D2iVk?Z<.$'"teʠ)nPR7t{ǭ4_`ggǀ#Q'6,ί\BzPB|ѥϕ4U&?Av97v[PrP o"bnIƔÜD0qʂNAhbhvJAd1Xә?Shʼn5ߢ&Ѽ-HQQOIkXak;yϪ n#r__n6[$(\#&73:RXԣ"2G? aC&R!QV{SƜ6k+i֖ ʫr~adn?A{H`$Q"m>b,E'e ##f@4Cz^ب [.QA4M\(꾆V2tsAO_F)zEk57h;9vtCaX?ݧwߢ0`Y~wO_\Ociu墣MQL z oSéi5 }Gz|vWg'AbNJk`rzMvkvɓ鰏OuG$@9%wϙ~M_tާHmo SoGhN) %\rŸÇG֟_哾{Rx߻+jU~V>2'K\^f‰RsKZI-e|^$$z2I*j_M^!B! 30H$qےI>oz̥333eə0)g<>x'\I>^OX *sQ,<ﰁ헩E>tPebw@5m?|Z9 JWI0yX$&"y>0FOBYoeE^gibno֘+Qno7t:c&9# ?y誊e^_ꆍ/Mw8[5h=m@E4Lziš3(\KăL1晽Գt)s{ݡj×峚DTQVsQ7洭(hR:_9u6Iv̹2JZ Kh?kӛD&F"5-$f;n<5,/"f1Z˴S\֔TFR"=s !'#|_2M<~2gOKi gP~3mYmScgͳQ14Cw*(91w3IV}wwh%C2V!s@\,,a;r2<ι jHzY#(qU=. `}aCb{9m3[|65 Bm Y{SQn5Y{Ym}zqx W8Z'pS KRdr"RK5I\FXFUљx zt`-\[F Ы0v!#67`=来QpiY uڏA}>ɝI݌l`{t#h̶͍-%*tYK zf KAKf.mp?&ч^Vw^Qޔ椒XO.:G/he.mY"C zbTCT,(Uǡwn[KW { Qo#֙2zMXƱ4uXQZQaJlG}Ck'@ϐ2 ˑ\djܩL5@h2%$&jgl%[]C?qӞQGJX!<ְ| ;?cteenGO)TbbzKN0Zx`S}#s|szi {;T >BR]-nTN6!UumIõBuOd_PttnmCYZ4<7tX۶ n_O Zv {/'O.#ЂsH4OcXtu5H[nLdڝ uWq~d2]:_PޭNЎHu#@ޢ'Mk‹e4v1|/Xb`bWyXN4_X]G{m}mϿ ,sCIr;Ŵח qG/⟺Nx7".vQ1-`ӈ1= 󳔢 x M$=od!kU"<{@ndnz5/B]oQK s|9".g+ުpﺡ77]sLF\ZLV+ٯfc0vc9#A]k ~@$F'mDgen!oύ}|Ekː^mR FJIII))&GىYdH 5΍7(($'{|%7Vw6>Hx S:PX* ;p3c&yWou5=u0p¯Im᫧}6uz.pӶLu\r~/ rBDa@Vjz^({= V9;tX~{q󋃻~F .ɕPXCM tik;Rz!|k댝w>%Cx{ݸ/>Wx`Zv_mOJuAD94!=]nP$CZE>1a|NGemUѽ۞YKo6Hsu^Dmay'~'ge?y@Ys ;=ߴ $x)7NXx B Y.Ts0$ uLYASm%1_vyyzyh;0l]1 dZD =3zG|ln%Q`9KJ9<zD,yʲBB>! -1+ޤEn rI1{Y#O<ÿy"o?*7+6AcoMCnSJw4!m\ؕzy=tp<ĩxQ8tZ#Mnoo8X3g$8gٍNt8Q|AG&Pm@LCywa3 çD:2rkye!aM^k_ ~J|+HU8p{D *Q|q"d(p5oeR~҆? ${ӁDdFjkXz ;a^ 5ԡdU 0V~uL `蟪ޖB-\Ue/8?T@Pt;qW{ Z97,G0OQ=7=a!:wǜ2&(lpqs m@G&Cr((;H9uYЖ1G$RE׭9AwJ]2A#j D)TB7RnoC(c e'S"%"|k3,$ؒucY{1 {kN͔9*'==Q$?j-2NooN)3:yNM1>`~c\ =/9^C I?!ih10w?هzV>FhI0Owb븼N2>>|OQ`{a49'(;?/gwpޟBVhߞai ެL#3Ij7{՝tƬ ~X:>/_շB< L}51ے NVx@6m EqAK=RҐ{(.+9Taؔ0DsΡvG^  19 m&xixײ=;i{tZ}EB}<1lP|<$zܖ)HgnH{!;H{)WD$io @$?6?|)2Ny€jgz=9\G)DUU 7}=w\Ap@TW;ǑƉڜ 箦=˦jA߮wj膃:(t[Sf\9tqW'6l pU"AF/t~CM @ߘB2QNh*la<\eD x>{Mxq}ǗWU›6 к8 4׋ua;vSPtQ}:P ja|-HFM_q xkiH=u5UF<&0p b\cת}`}\ فH`,PZN;)*_=D૳BΔAQ#&!Z@n u@H p-3Q+ppn;z6's^w>R&M^!?"3OG ll?PH(*Y|!tο\8FQj/'Bi:{Lv;7l|]ێ.yi'Cu)/ [{ҚgzN^Jz:@i~v;\sͻ㝼̼̼̼b` mxIr>ρK%VDl;<9 i(A) (QB30[=_asWz3pxK>(`9d#vs˦JEkɈ`,$ N<°HTw'Hc 7I 6v4嫐 jQF,(WzqUin@ճn8Ƭ|Ja6>py˫@,+>zd9 7VwtJX7lT~:fȺ=PF(9#ugDS_NrZ鹱{UW(a {!'b~:>?yɯ3)=?]DPI(ҿ+(= ϛTGސlC! Ek:>|=sze~? ?3fAeOh'2!aRM0I0)Ac:=$?[m 6vcVtRm _zh#K10^-7k;|Td .]ΠߟÙ:>kQj9_N#7G7Fπ }R~ cR W(ܸ{>%A Joy(dj=0Xg\ࠦhm{ރ,9w,wss=;#~oP r~NyLrR2E^SN!!~\P^Gӭg7$Bͧp3)m? v8J5ZʰLo| %1rIв3's8FhOcncsbb/(*` &Hp-#^JR$["b3m3kϾ[eԬI>JNQkۇ\ޜSo "QiZZ}k?/Q<~H>vQ*U9;M|w#:o>ru}:yƞK@>;ka`rO 6CC(,s85RʩȚeup,MM +:EzD_l~_'նc䆺\?v^\^?E֫9^pN*\P1t^̹(Ab%r}xrk%9'(CA{0ZZpↁY({@m- 1?lK]KRhA2X$(`hK[cϭxu)sq=a_q%A2L篷`-i 1'c[sd_Ah{?4xb+w 1h|0}PB HL (/Dvv*)C=/]"ZaE !m/Lr"iUW(AGi)=q SLf98Cc%$8sQͯCDҊLJOFkP~<µ͈i⛁bۯ3ؕgA^:7R70i4nB oM%11͏*a9R+Ui=ܟ.Ё"A}`q 3'Aoi{㘾r8{U+sAx>-^l攢 3\@+~IUO ٺMa- 7ʒ \C\fgkϷzx& 1, %>:G%ImzTs"L[MZۿ&X'l0 u$ ""~cd3As1z@D5TVdOhSOz>wF_~I9, "BQ0 Ƿ[Bڏ$4͸R 8[鞌WhPnM4M]λuYfm\AѝhLߑ ᧜M_U^3;!g1> 4~g)cf|F5ڇ}]oc h $q*Հ@|;y=m^ЀXĐ#f̈2e g0Ne<;؈Qӎ%S4jr 4鴕CJ'VۚRȰ ? 7kzg@b]qIQ>V9 IDI_Z?m`lX9FHy'܉d-ˍ],2KZ̩sI0KAdr-8\*GMZEFѐhD 4ιiz14v~ODm矐vGN> ß1jb],1+$ ĆU(???@KIܪ[>:ҏ?4.+IPMWR=եT^2g~x D;QR_@넾P_ hNƾ[q7{Pn!PXZ!})Ə-]YF|';HUq^vߟ8:RIC/5k,ؗ ٬9uW3.TMz (F! }I(@SUٷSSjCخ` k]|U0ڸ@"^-UBebf틿nPM4Oћ|\e['Q^3p~PU*/Uʚ(pn"jËgUB0mڶ_ Mu/~oH I5MCPAlzjc YWZXC2V.`~cBE`px8ykԫIDOPwNN'.2Q\LAܻY A!Yc ~z *X4E:9`mq}aև;-lMT[32Xj  9z6nC9 9 !Hk]a2r@}%C.3WC(Zi3AD@#" w?ɼcKL Rkr êwJY.I-+F 6p^-و҂|Q- 6tF((o^4uB o@_+`jɚkP/kW@ .E nP`Wq܊-*S`V+>zOENtH(Nm$eVP/Ho<t:LLN <&4c7Q3{ǪZr E|FLc a=R8:u!ep}99m47Gأxi% z9+<_F\(Ϟhyl*=5DF x[ ōUHT;<1HۣEGs~Xovu:!97:PXW}&S z%M٫)"75m%:"[Br~ o^vlf!ܾO4{}kCoY>ct~A(iƓ|O>o+"EA(qKa +jrѿ7Q}I?ܚmczf"]~Nr瀾9b>$y@T`Χ>Nrơln"L]4LcJ0@v Vb5n=|{>3 .JݲW}ON$ UnQTJ~HX"4f^8w}A^yy8hc5c )Qrė9煭 2<:3/GSĢ9Ix,9! `œ-Ԅ//r 4¢~ HqQ٦C ѫL *8X5yٵFrv/OT`eݮa ڷ\'z@>,|7[ɩ4t/Qy;PRҴxqh@#QX3=vzvau 벿`@[2g'48,!*^,w6ћinrzi<0 :`[7ywcs=a4;2κߡfEe'kiAW>Ӈ+#ڰ0 }>+=4?LKg-gBA]a:хy˗iۼip Q*`4ABϛk??f0WU]#}\xOh[s /'w$FAI>(耀%(ݝn SN:$!wh-SlJ֎Z5A;Rz\ֹls™g~Z:.nr>]5@#(0#LK[:^ߘYp6r~,v/{.7 Jc}_{7w7EV_RG3/ڻ9Ǔ_'咂")І I!Q:|L2&cUČQ p\F~t0 l֌nB_˯ V>\Df2L\FUɂvF M QYӶIVJiR$z+ Z|" uK-r_AGDDS$f_fhl'3} #Wf+=Kh uTvO-TǨA~^!Og\5 sͳv}aW 5ګdh2Hi$ϥlj* "{&Wf{OQs_"aѮ-P@W&!CҤ >CRo}z'Sӻypsfcj؆+"ڀtIlIta )G~9 $q'g𳗊s30Ԑ#)$F@4A!F7.MaϪ͌>u/`)5Z'N.u\`aA462wby=y8>עb$,QL8CcF pm:`)'={G3R/2kxV4Ua3*S%2hRdF꫏0ɯ'㡪I1E2S2@6* 1L:s.7O Z{>dMl<&a(F럚dAx90?(2$!N̹徕<%:-1ۣw\KҰ+}~_z n(..EcU1ntg24_qu-\cS{<$jqWEPٸ(tN ^HTxp5ȅbFg8a z<*u6DFQ* 5Doj0LY*_xwKGIH[*2/) IF.3m5"Auey'\N!c{'6l .hx1xNTuM-Qurm #4|OR ~(`#_sy؏-.rE)].c@h䳭qoXS2!$I`>Ƨ) Z}pJRPGj,%Es{39j>=Gp')3(U#蓓9Lô&p52sI0 v8 i95OnMoJ9Y^rhvߍdy‰:\$Ya*`.}j [S\}2i' ]fE@>|Ca1yFsԁ:8 ؿŽbIt7X<Ǡ#L 0-:yV)rK0zz4 &azgk>SIS͐fiћ\P(͛ۻSa"Y`EOTʵOMĆ3]#qmt}MN(*_usY>$.8>ubuphMYiI1x/ :C,wc1Ӱa<Ϥ20_l>g afLp};l\SzK#f>5g,fk iQy:Czo$|=_`[Z׆ce1Au=+$m8s Q bu1sx&CLFKXk}< ϧ~[E4#'c#clT,^]1y s!,Ee3|!&38 |m2;d80Š:`i YbD BB(rOeпWc}=A MaC/@uWy9+ JPmvL)٥˷c7|GV*S( ?٨-&P'OT }Es S 6OyM1LX߉N%15|I?9UU',}YNzD0̱cN@cjsg~)Hj  ;yICv>*4T/t"sNDAz /8"u=DO[oaf@6|CK&zvʁ O0>Bвj[ˑda z&7[!w\<"kJؓݰ&2UC 0[ Umq \S?Prxy&Ph^c;z|rߥr0ֆǶ9a )\q\dƌRݥrWz.".=X˨b7U)q^3 # `}BTiG4u`n &;?ij>p.\(h!:&x\!GM)Q$CuRcz\tUhzv WNp-!]}|jxk: ;ɠrsp]0!ziy(װ K΃Y>"IKh06`>M@|;:N~qd_Om2bό5m/nS$é~][}9$9?B۰3NeK@fvՅgl(wvBgPS:!i"i9| p|]孶!ё_G0ю5Bg'~tD 6CĄݠ僔qPēYdB Ah 14rj @9' L+tϞgղ>47WeT,CҔ^V&;`Z* ޓ:3_'O=|AAg*. CÉpG.+V3[2'Pfj}-PMHa=IAӎ|7Dٗ 9TH*(EU^X_ 崑}E@t1F>hs< KDz fClFɌ' OMX.CiظVNl}A:iww#9=\a#Q^` E1RG7ؽ#s³i9XbL8O8=Fs 7`{50'0G=7S׭=0lt*8_  %ݬa+_lG;?+4PjNН0a,ۮ MXOЏ!&OTz~8٦N댩DX~7nP<`*<M]@G1:wMd,2fMN=?k>Пn{ls_ ;%P|AKw 1oYVs7UCgH P l$lg$s9y#Cns_)* zNP/lH?c{ ,y1N@jKv0-^˙Ͽ~7s֝U-8y#G^~DW":4@pDrO[u=ZЀיIG |!'3']XyRHAR~rIl$`8r %2 0?fS>pCF}?,\/4%$If8 f'NU·οu>w VСm8M PkcTo | yGe93) 7Gё ;Z\.W(.q?2 |ؚu2Icu5c~KAV'M" 1d5IBP @ʥ)>|ޣEts;߫I* C9V >sXө{X(ɟbug59'ioj#B =as&m4 (I9/l"HoV`BsyƧ7]΃qur]JL֒cp';9W pgoNB h^/sAYA4_mrn5Ӫ0E4D $4yXʻ2ȴ VuÝ(#UT4bEjȡpb0\CыEH,E.I8FA)IO8E2i)`b AP4 r#9Jȑb`´>q4 GpI7:k\6 նcqOo4&>UmvB|q ,A0bpf<̧iTv'+";8fP R3H3t:1XU>ՌXj!MqMRs1" lv݋]vk]4aGDJ<ySGD$oa(ta] iʖGPǏI =Qj$H |dѢRɌђC`i Z!g4&Y s g3YXq6EM7[lpS;ZD<  6XBu Ho8~A5k]0aҏ}je; DFk,k,P&Z&xaF68ɝ͒ A,J!8rw6H ? wuݐCY:_._? V$Gi1BgiFQLQ· V~k * n\2|01D/Վj^;q4F8NVL!.sPz~ctj*T[!l`nR{S`cXP<*!b ׷^UXpoSK돟SG1!:4s AMKQ H@hL&?Sx6] 0}>&\娢lmDHCM"𫎚GJB?tJNި|ho~6P9?G?=ǢI\CٺHD95&rcIZfer*3REݼebJH{o'=F"%"36S\3ln"MEUaxgN(HsKsl> 84h*@x>^i}s̜0s'OL!!辝ml+#VV<ި^i93>P{'D ?$ahhLw@;߽*SH.,5A;3@ԡ*(U*!E1&2s ~'D4T* Y8sT.=E ꛝvPi ahѳK1?nR XΈaY9Pvmy=2w!<94IG [ʅ4p)Z}8b.0?\94gϿ^oco^6d-MzNV.ȑ8påE$ ^=?Oȿ}cY3<:!/mkal1\t6LuuaX,/٨ЃAdpg!bc,=Q6~h_/;Ō>c@?[lJ~nAH72G6/??o򿣮Bsh0<r|d?NF@)ܐ!IԁHa;ǧ2RZ 6鄝i)5!͏c9<:@yF}rHA"@D0Fubz -2CGmi a6z|+1K<0uy*5ST#RL3C4M6ߓ0Ҕ>N]!)̮솨-Mb`@3OQy Qxtjw)+i% T/ qr ^QY>, /{)C,Ő2J@I' Ӝ2dHdyC-;2Ғ'¼H)G\ SS5=blqz-W.:/g6.uHbsB\z?~} N/'='? /vOо7?YtZBEl_Xk8´- xNVoq\#ի1ѳ@`@M˷Ϭ>_F6 yd=6d~'\/. N\Tb^9&i)PD @hBMDT@!pHwxq>C-OO ݣFu=[i)e9A"I U V@6 u$) q: LDӨf5$iZ%\/nRb.IQ4@s58C_;wn:a62M nrBXHFd)ZS9kmOHUER=:qhF"о󔬄\ YqFArt,!PĂ ӞCmOkUj qĒyckaӾ=[}} #$h4l!i34C&!sYrh~i&zd{7GCFރcoѹ]&a4q 5 C1PV(o ٌI\! 1A4ID[FX2!*q\ŕ RII )hY*͋A4mz *+(]8LbYABb qnS;%?&ͲVtL4e;<TFNACM}}xeTsOmj ;9B,ULͤ@9s]$eD11" FAAR67KcHf RQ fqL+ fxk[\Z2 }+L2FúKq֢>1hёȤ(!UXwF8iS|6N`,k9uϫ:Gs5k9ܰOhCpF fh浥F6nyfBcmhf7w 0,wPQXX݁$m@H3n֞D) Hɹ'V6hRT\gI(M܊YZ9BѴq OyY4Lcm$4b370KynC~ PѺرc "nә@@?yOZ5yad$g(F`Cj4cZ-uvijvMU Y_(meA? ՟6 ]='crxWK:a @.-<,YD8;aTtq^/Kħ1@=~ՇN 0jAMx(4L6MV++=P)YZtMU r*60s؏g?g@.xgT//bk}K &_q뎺0+TO,LkSfyah?joA?EnVni` LGk>!T<}:xWۋ&p%5D95="vD srwxwU=C{raǖN^_7^+x &w t]i4w A@$  -Hip׀_k9vlE1pH.WZz֦M6kC%j[-KbI$j `T6mݶ[JBV$ A m[Yl)lV$" 4UUU@UQ{OEU I}̑JM,E/*!rr 3(f2aVcUaAA`6 &6XQQb#s8:7Zz+J 0Ȍk"`TefXoLijAI a"̥ƛјN9bVXVf9UHәQMFa߳\j9̇CZA Af6P?_n.iYzlzXͿ^-Wl.>z-֓ r\HN1.NI^:شnd$02i"bM͔-T3 dl:|#)͚m nc".Q#%nz <):;p[`kN5 u'ЗL]tas|gFZ ~3 HPΎg6Ԅ"S379EUi0X܏G"UƼS˳f#t G vQMfͤjD;]9BƜ8| ARG̸Hܐmz[GC$Gi80O\C;bV DDnz]f΋Ƶ)]:ޣHko7Qxx|oPޟ lcy5,坱='Sӎ$V' CR gWM4h1[7볪Цh D8ANMjvM gnfY 2Oi5#/E\L)v[]0ImLێݝA2J]uE.6z)ۂHfgMf<-J"`1j3n~ jdp[ 9 ;Qg\SXf8i̧id9L(xPS+Lw=Ԭ/ˈpsvfo2=*>ƅLٞ8_@%{%Y#(j^[p,\6UQ;&H]M;*q-&^ ~);>qb4&C'`Nce3gɢT87f jE g%;m8Ԙ8  Mb5F>Kd@6B0r)opQ()ULDdtѤH`Q_w:;-.Az 2X=Zk,V;B=˯6dbt$/ J1%&`2$"$:W͚aL:z8`b(z~|xZlt&A)?vp w |dz:m:&<GKD`Ȓ#T#!<&ðbz=<3z!Up[B0Ԕ<*KH\ojBi`b"DI$#+LJO<>/*gwf8FUhy˚/{ŐjCCT_)On$xeC & wCVK WF JVkr7N|DCCM9 yrp双oV\exCwfcw:Rlلæn# 6Llj <DͲy[dhs>rBA7f9W2~NDfrKScL>>!/A^BH4}<~}M9Xʒj&qC3. <ǶZ(GJҠl=ƂAJN3 t#)xORZ <4Q{fTA(@+ͬo1C${#=OP]!5Tv11[Xl7-'ǧԪ)I6{̇}ЩM@'A81)Ӕ.@9-S3r(DMW2$@1z|GFecqؠ³23݆"Yq()US}ùWA^"xbAlHh(4ڄl`[u)CmfM#&mFejlѭqɞG] 5&PY,jL#@DPaM!NAC'kQҍ(PUJy5%),AuP&ѧk[ϽnI 0c\UslCKH,j -v!@͒`{ o܇vA}{2l CHVŪ ! HHd| f&ڃF$F#6E-&0HZPWsKHn&7ۣ@kr|s&ݏz: DDobRl jJBB͆d ozA±X;@3;IF~5Gp``J[6VZhy[d@1(4'ӧg~YpψuHY-lc1-WHL2];25>y90[I$"E, ׹>ӕYqy~^HR,tAόR j7=mlк.K&aYwün\;-D8Pe3I0O|=x.)܉۰#6Qq2;*̩j9+}NNcyuPāc0!ļMV c+F>Sˆv%!WC/v"-^*&5*$2޲ krI>Og!ɥ ~j|@6G!pCRG.FB6TAi "y.,`JF}Vhcei_5[VHX<Ja T& mb6O =9`҆`Q`pٌ!pTD-֙o6* "ie 8bgֲZy3Xt'i9I7BD蘩J ITXJ)5T@Hp'giJ@|ܻs/^ڍ3 l.ޠ0ORR1- ,H/F!qp"K(σ7U h"UNYH!}ԅD4 aj ~4mF*/ES6uH'YrL$0{&XϿ1 eH* i:ZUai(=>,3p3K(A YbʝJ6z{- '08uS0+#D~#9-xQ3qĠ3'M~4udFXU,)9p~\Gxo A[!҂TNϕbd_# -$&>9їW #@~Zc1Za>^`/hg M^r|:}a׷J㿣p9-Н%ߨ@}lh抄A/ @'{H =pKOǏoneј#p_Y<ۣ@ꥭƴkR76dP adؓo?[MɎJb4#6dЬL)=MieR]*0&^7$-XPDݓg!$HmJO#}ع&R8g;[b\2zWMفTU$JD3 G _1<B$8M?W {ƢE;^^AT<ӔyȊE5|˶cVTo9*i,1;O)dXzۀuTwӛl (" " "TTkwir?WL(2G48ZFbMܣNDyCf(1oPhR0ƨR#98h4|/֙8a:J=uMW 7r%>**c mH`;HM*"P8GB|Uߍ5G |I6ؾ>FJeFPj ! p*Np&VdbhUMRu|snױ| `1$;R((  ^cqXq:[t^d2CZh :ELl0Bq^G3K 9v?+ΚU&HoS{kY4̵b@w!T^KU2./|.=]zvIfAi`1/ps:ualru'*LF"<(Qdo"zaھ]ylVpq+l( P j4̕V-P :!k8{D v@uwo:yUSYߠf8TEJ(b&Clc 0m,dd XcUD5$KJm5-,+Rpr"Ddͫd/Üb L2.l66Gǀ`tm=`f;1:\T9'I,)P,=/Ғ>PRdAS-43rM@qpbraPQDKEALIABDC- MKJ1- JR @U4 M#U@ґ )I@ PQDT H!JQEf U4HR- CAU$-1`ty±' H&/-'vy rF\& ܲ-#;ÜMdYZuQCޫAQ+:>:{-}lOD>ݙT8DKHNk xm۹_F?i~/10rxtYMg"Œi7bz۶jp샏.I׬P<r{9>n=|4X" !u83$T%.UeR,n [;Pvs)s;":'aC&f9iD+I+L2br[g0 O, aP)߶wu uE#IQEZ%(Ŝ n;;~|-IIY ԋ=F3hh\"lw"俢%U 5WF9 .)Cz^C)> r ]:'QBN˙SwzVLIU#K"R4d)Ӽ]T&M$0F1 'hu>0^ dEF tLgZZC@ͪ@%EDf( GaE#6~2_6.qN YF;%\ft!W59^ag#/qԥɝT<' p<^cх8D ɳ>is{ 摁ߧIؑE&S 2 "!$JhY "(H最$*)' z[jŽO\1*P-)@h!Oy\;G:3AN? 9h)0X?y+r mr%  &$ !Ȣ(? {0M$J2D@EHpU2 ;ږ53u'Aja|G} ]c7z}'t @Lj0\ᰠ$^Mʋ7wC#@F$, uwb& TD sƄb`oOBN}w>DIB}BR6NL7S1& lt|H`x]@k}jiq]v  9~íC M,H^m ]BO,Ryf*Xq@b@vz-i7vǐɌHl,"3)bCrxg[ҋaE:pN:dx±&n{|rBw{jQk5<0iFJѰBL8fA0ٶCWD9wPSޝG- U4&Z͈l_R 5\L{-X[c_a蟺P6 4,[|8=?W+|k"ox^}fX(ƻAĬ,Ȕ!a[.Fd= &}4![%CeUWS@Z*Es1 9*Rv$7S0Wz3&!ݚexZ2dFfGuCzqS\1k$0qb WA+^ҏoIL p:Oes,qMdc`\tH~"~:T:z'l_}SL!3N:oZ0M#Sq*pC߆Gx"(ݬ !*,0Ģ-o4$[FH+#lUQh8# hQ MԚ"Y!$!A¢&L]F?s"$icϴUp\{< 79 6yaɗzZ3ƑB+h10Gz)C.SHMMiT[S!n/REw2l8V;!إ1`q#~%-n=(_}tS>  g)%oԱÞȲ "`؁  hYJ #( iTFW$! xQ)o&h\m$؀F v莠;|0,ujBZehMh FTA @a9noFQ8ЛXc$͔JX 4alce)l*DF~NSZt7KnRلiznL7!֞e9،fIp1@Zͱ*ԛ+5Ta2VXZ*Ch1!Q\,0j% X$.E!(ЎM1xiҬ0niUaUhl-0$C 8h^DH ZL<091Ž̿ &J.M&i-bDR1NL8N!~M>=~I { Ɯ[7tn;1HZ>` `ba+NnS[FLi=E`y bꚡZƌ8%Q /Q'#)lݣʬ6K& ˜cGԲ)4F6״$HDχUvlhw}QXbh|Ql+laDXQӲ5ސfqLiUwc>81"~7Шu! IcqTP(繭xM2u68h llԾRqۓїsBMۤ=b3N,Yu8#1=NTv}ޔ3o33@E4))t~0\ԛhѷ ϴ=9*K8-I`|pSN=\/SMd4INdb.aJ`BD%#5M1aӁENDjD+LFc,1;h$%jjb$h F$TJR $J0JJ( < *NJŷhifw$ %x2j΃ Y yvrT9=]2mB8iX`sQnDػgZچ~2)H4,זEADAGօzfQyjVh 6(m]h' JizboYPnT&0Xgk#6! A"5:GNoNHK a8Ng| kveA2 }IlHѰ%dӹ,-)17\4L8ZPZ*̆iÈبj,TYHn9G+e16BxךrEdB|sxY (Ib%:M0eP ٣&`8>2ω!f6Ngin[Hu x *+F!!("7I%0<֝BTɁ`8<ۢO厎EDQ0PёTLX!8D,2/\ET6fIb M!$LD JD$Ylta5Q͔FND2Em`fU2b.HK,:1 i#0L԰h&gYfE%*%-bDeNRP"!2rZ fSS98njw$TO6NL67ag:)HiY%PeN CeiCXS\$\}ON݋ݟj4YtIJ'si_Ca1dBIѤ4T ]bbyڷxkW{Ӵ|E7]3HγA d&,>3az(\@{>ʌ,2DV" SA6Q\Yo5r\_~!.LSxК~ZC4u05s*j!QfmAXowaX[Y `<]iohG̈́`65{+yq^/O LZ>tE]z/b>`8|YQD{z xD u^@,b2%P~L(  @>`/)Ϻ0?1)RM) 25@YbpDS C)ҘfN L=PzLAT ((Xtsx$@w=.RAKw`Pp;pNje N"oґ +Uw" (v(@O#}<kra&Siԉ/9[]'J@1r;˩E6!^&PH8 "1DdLkc>.WGUB*{& cD3 D0D a}9fBI"~B\qR vM4vl'ƀzRDdJ.CA+v 2kV 4I!0i17`&/T7d<0 ua!eMEUQSRR*DEayv  bR@+T)@\$3[W cdrOYGE=˳ GE:I,l^=J;ߪϼ:`a<3A() 0' B5ɡ>+{7 /_Ms<{! UNqdlCyR[x$ dL(ybaAJ@pA!111A0`,*`A0UUÀ9xv6{s9q4C6w1H|a~Cк%<+|~ͧ 33{ xKBPE! d.wB:W{N×zpӣ%&;NǼSh0-&rC/GO9w^^,(hda+CLj 8_,+ÝqbB܈qx+L,Q,(i$Ds ġ2=t3ԛF#&eaތZ9 pHao0{,>\;Qԏ3Zg]/jJR 4PT? d;`T{:2wPɃL;V LET[ARTH)gHeWM&GLrl42bmZM}He1sŹW1`leWU1A&xΦv; I `f"{cϱ6GǷ]+Pz8̆33{cRe6UeXGv@<6'ps٣7 s{gas*9# a8iLa#ɫI}>srp^h5Ip'OcV7Ǩ-;9ЫYD) #'mƙh;A5<}Њ0MHXcGNg<B@ ܻU[5ojշ`sn5 ӾK Tb  ɥ6lAa 8(hiHmZAF$*" ӎ6¥ݨj4{!b\ ڍDȠfJzf;R $jF!saIjXQEV 5faL֤ff,QQx8OQACf-}V-@Ǜ,"Xݽ!FZK1,IB#U:'(S[p Ȍ#;$¢$FHUf -3N%p'fy4H:_Uc"y:dw%%0$F(HİG06S .Wi9䚹bS5TEw2a ɮݏr:K, {(FYQ8S|ÑΘ,T@bykd'mz'CM ۱ɪ"q ǹ6$R ч%"u-% Ԇi" G${Ov\ȡÝoox'r p)W0DHAl`Q4`Cd=1$aI"E  ڮ9_ Oܨ)>+FY MU p_ *\!YRB">{kCm'P>?OЃ ؅)+ < ?ib@`m5*-2CBx쐜vif1Bv\m"ޠl9<36a`z DF1&=D=%xOuQ}u~aꅑy3>q3*jqƑ ~ѡZ.S+ ۱&J!R]ꋩ؝9+hx;G7n={-~LD6d2lƽl^(0CqY1e8U C!HC,&Db&Nfw1^rϘTH'\bq8?iCG?LwND7&֨FDU@NXB'8~6Ijbs.dR7-#!#.PRQ4ҕ4ޢAi&<0c?H#Tܕmf6ddS6ho(k!5UeC9TD%ff,nES0JB4y?+#6m g$+ψM ŋZ6a<#zC"j<&Z=]^MB>' &FYE|b zE4&"^`keW<V;o}^ΰ2]J* hHx8T hn.ԄФ\( }E hYWaqo'Kb}lYI@fBfBw `vJ9rD3{ wĖ:gh?RgF2Q%L {< -NS~ nANb(CJ#BB@,C' P3Q&劖WG 璚)_ zW!0C Ug3=X#) N86$PD@J@!%gQNL?8djv-SI-!;ª3"R4$CTRP2E0PBA1P,6R(6gMmqy&6*mQh#قy͞;F(lB!Ryxwv"pPpЁz8`zzpY)R<&H f@ df P@Ydd KnB(DA..9IE*I%D=a>ðt? 3긲_v5NnIi4C2֠4>l 63 ,Au KX4L#cm:EQӃO{knnoΏu! B@-RSs9#9WR֘VB_7~݉)I:T>X⇧zgQe0OU^)zg&j̦xכ'AB#:nۘkv> zzSvv.b&,;2tH(F/Fwaڇuou:5ǝwfIGt)l-vΤagq02)-]jQNvscFC-o!IcgÒtPbÒ0zJۣ/vfw޾cu,n5E}|8gHHpܔO>xc=fq8{"L JAra'}7" 6-:τX[ vs Һ:u6557ޘfV\t6 Vvwy\ۜFI?jKcQGSïë)ΰ9f1yR./{ͷ||'9dːOpЏ!wq%0%JpFP()i9hII0ឯUF NG(0%X(l435O,3f=saߋi& {+ЖgOcG”8[rqI߀U6I@;c~^X ՚&;PОQJaGJaF׮\6+09"1ĠmeSVATĎEJ7o3~s hΤNy`؅^b \{כ&h"˽{l1HF`wSp;dPois/'ْR㿠_N65|.;.Rw~4C4LjBN"_r̰`lRL4`}ǛwWsCq%/" Ra1Hy%ߵ6'ͷ P~iJOF~vCp9T}nqGx րeB``z$"a'݇A$HtcGnnF>z-K6FcLSw|{&0d"`It B0Ї~D{GQȹ ha0!)Q:3?I=ԾϿ3i@؀w D4. JM $Irx=~V?^saŜVW eIB)n1FVF{XmI6mBL㉇ EZ n"ع%mvLN rAo`XN5T'LSE ҅uFM%2% vֻ{T<EPɕh(P8ƷAŌ(+fn16fobDU#CTRb =7`jP: *Z&Fi r> ):ܗEObޟeO9c5ȋf7Ѫ1cmB(twx=9Qsܕ㱖&0f!a*|Y3#h]0DF]\qБ2P,hJ[nE&PM/356F& MEe܊ȊdKO_h602XEp$vvkp6a ~Vh< 7$*mryHshfԡhQRDV吐 ⌌ !z0?ugP ԑGL` 1Ep9 b{j"Q)V3?(y'_|OT.z} {k0q}D} āRܡ-6ɏDB0{;ě 6C}aQ3#!/Ny݇L! [a|jjXڐ*K$$A }I .zzuvؕBV2ǃЅ{ug"(RJR53+bC$Y*-U ٝu7n2k{|4$,{"ʭX~ө4lʱ8ZHd#i9<:3K8LH0.xaQJ>66^tuñ66N to*PdQbШWEl" xDE X=~?&&$:$ˣz\xOq_a=;$zJj" 7$"r661WC hp@$ !9@L Vo8@RC%DJ(PI ii* ԁT(\@ @(("N$Epz͡V<Đ{i%E U}?ck.&)9"3K3*Sr'!,4Z6dwǠ#4)0n+5Vhcdcٵ6$hYN$3x28JTQ zL< g8hh#1 0<4! Ӹ nWL(Ra>i}INq{}wq/#ᗦ3&S'ApPـZ2X4$Z0҇$~[B헩_?LC L4 Ɠm} # r4-C0NmjUH}p@lt4K&zdND(TCP:IMF0UCSj:7%{` D )S>où)3A>0PPK?b ݪd>X6>hhhhkǙM36+p6"xS-!zz끄b"dSӄ/9d(~^QMmffMu6q*t5OiwXj`d8;&__>gj3}˲F3k,;If;˖y ᬹ31!3;'yD, od 5[~!ٗ0,|!q3v8|1 PqP2AF,+W蟳Cx1wO1]9 $006.A56n%ߐ1'&FF-o"jLƣmԀHdL 7qL4kS{%mu/JrqVbfXF(C 1r.*t8zs"I(цs$K5;{ ̦^g (̊r._8t.v vdgQI)TlikkQC2@J;|srF&e"@$%Hvt>ucbG]O%F*Ph)CuU RN#F oH m{Pd$ *O/[$@Jb8H V"U+F#c *4IblRRX`VLml:E,c1 $BiGH#Q3Vv?soFΗGV-u]e|L|Wv"L(4Jǒ% (CVlÏrʳ,svycGPD3+PIE$\< TD3FV z{V:lHਨ0tO%y>e m 0Z;;&a6Y1-CS<ގGb:3@Q mݔ[&R+ɾB`Mt=۟QcLAAMdpnVL0KܠrsjA 0r[xa &ra_Y<ww*ۍȘ ֵh93PAֆ V0eDSRȆJЅ=Bn)|Pf*TBA@I f-|="2s&$F-2>Pm!"P.ifBBWV>"""ēi$a)`d3 8TAmvúHy$0!Hq *ȵ'M 9`OBxz?YaF*K-UӇ6~Цs4dW9;`4}?jC\:w = }'o 7Q_69D]ʶ`<1RrفbHRkVe5CWM(Gj `2[ب5 '`!3 4a$"##@Qra0mپ+a$٠ s1ѹU8ἥkz&D3Xj ߐ}Da -MIH%l|S`h^zzhh C%$.d f;M \{j[nrX|4\>^$q E(&k뜦l4Wg &!IkvIcM. Dwo@|SM|熱sNJ;2&Qtlp d=T;1/2CLoSMGP>sGCaM *!J'p; !bUGPt܉>#ŬM8gyIG?_siOKx1ؓnT3O`p|g 6k)=ŕb ͯz YMQfadrP@dQ8e AMM1UT12DV' 41Q 2ySnc:n:lN}lm0'Ƨ-(<2KG F`N}4c^{߰obʘ(`VAiZİUU@Pg2d h **PU@ Ec HUfUHA)RBe 4~h4`Tl.WP91Um'ɦ8X%Q%* USE̼"jb{kf^x?JKrF|)#81ppc2""f[cV!ˋb ]ڌ5P鑚<"uNG "%[`p@S*WqP9 ?`\@4ul^>;}]s61Y-W UKBN6GtTB3@{YBw'I8>4UHzk{@dݎU^v[[>Xvp4I IN50XkDĔ!$*D$@@).Zl1T8sU=td&H%E4/F#=!YN5T@P,S4(2L9q}7_ݚ 鷛Y`8bc)wS"܁1SBe7 L08P jeHL!C}򺨨@;β|GY}a@7ءP`0!#)„K(