wce/v UdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1dd l2m3Z3dd l4m5Z5m6Z6ddl7Z7dd l8m9Z9m:Z:m;Z;ddlm?Z?ddl@mAZAmBZBe jdk\rddlZDnddlDZDdZEe jdk(ZGe jdk(ZHe jdk\ZIe jdk\ZJe.dZKe.dZLejddZNeNjZOePe jjdZSe jjxs:e jj xr!ePe jjdZWeXddDchc] }eY| c}ZZeXddDchc] }eY| c}eYdhzZ[d d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1eYd2hZ\eZe[z e\z Z]Gd3d4Z^Gd5d6ed6gd7Z_d8e=d9e,e=e)e_ffd:Z`d9e)e jfd;Zae7jdd?Zcd@e)e jdAedd9e_fdBZed9e"edecffdCZf ddDe)ejd9dEfdFZh ddDe)ejd9ejfdGZidHed9ePfdIZjd8e=d9e,e=e)e_ffdJZke7jd@,;:\"/[]?={} ceZdZdedfdZy)noopreturn)NNNc#KdywNselfs 1/usr/lib/python3/dist-packages/aiohttp/helpers.py __await__znoop.__await__qs  sN)__name__ __module__ __qualname__rrUrQrTrMrMps9%56rYrMc eZdZdZ ddedededdffd Zeddededdfd Zedd d edede dfd Z defd Z xZ S)r*z!Http basic authentication helper.latin1loginpasswordencodingrNcz| td| tdd|vr tdt| ||||S)Nz"None is not allowed as login valuez%None is not allowed as password valuer@z5A ":" is not allowed in login (RFC 1945#section-11.1)) ValueErrorsuper__new__)clsr\r]r^ __class__s rTrbzBasicAuth.__new__xsP =AB B  DE E %<TU UwsE8X>>rY auth_headerc |jdd\}}|jdk7rtd|z tj|j ddj |} |jd d\}}|||| S#t$r tdwxYw#tj$r td wxYw#t$r td wxYw) z->sA-F *I* ??  '>JK K 9&&#**73dfX   5 ")sA!6 Hh8X99- FDE E F~~ 978 8 9 534 4 5s"B5B'/C B$'C Crjurlct|ts td|jy||j|jxsd|S)zCreate BasicAuth from url.zurl should be yarl.URL instanceNrj) isinstancer# TypeErroruserr])rcrwr^s rTfrom_urlzBasicAuth.from_urlsC#s#=> > 88 388S\\/R(CCrYc|jd|jj|j}dt j |j |jzS)zEncode credentials.r@zBasic %s)r\r]ror^rm b64encoderp)rScredss rTrozBasicAuth.encodesNJJF ? ?#& ?7: ?  ?:::;::83;D3DSD@UDDJJrYr*)r\r]r^rwrNc^tj|}||dfS|jd|fSrP)r*r} with_user)rwauths rTstrip_auth_from_urlrs5   c "D |Dy}}T"D((rYcztjjd}| t|}n" tj}|trdndz } tjt|S#t $r }t jd|Yd}~yd}~wwxYw#tj$r }t jd|Yd}~yd}~wt$re}d}tjt5|j!}dddn #1swYnxYw|s|rt jd|Yd}~yd}~wwxYw) zLoad netrc from file. Attempt to load it from the path specified by the env-var NETRC or in the default location in the user's home directory. Returns None if it couldn't be found or fails to parse. NETRCNzHCould not resolve home directory when trying to look for .netrc file: %s_netrcz.netrczCould not parse .netrc file: %sFzCould not read .netrc file: %s)osenvirongetrhome RuntimeErrorr&debug IS_WINDOWSnetrcrNetrcParseErrorwarningOSError contextlibris_file) netrc_env netrc_pathhome_dire netrc_existss rTnetrc_from_envrs w'I)_  yy{HZXF  G{{3z?++    5     D?CC  G   ) 0%--/L 0 0 0    ! !"BA F GsSA/B/ B8BBD:.C  D:D50D  D5 D !D55D:T) auto_attribsfrozenslotsc(eZdZUeed<eeed<y) ProxyInfoproxy proxy_authN)rVrWrXr#__annotations__rr*rQrYrTrrs J##rYr netrc_objhostc| td|j|}|td|d|\}}}|s||n|}|d}t||S)z Return :py:class:`~aiohttp.BasicAuth` credentials for ``host`` from ``netrc_obj``. :raises LookupError: if ``netrc_obj`` is :py:data:`None` or if no entry is found for the ``host``. zNo .netrc file foundz No entry for z found in the `.netrc` file.ry) LookupErrorauthenticatorsr*)rrauth_from_netrcr\accountr]rvs rTbasicauth_from_netrcrsv011..t4OM$1MNOO.E7H '/uH Xx ((rYcBtjDcic]\}}|dvr |t|}}}t}|jDcic]\}}|t |}}}i}|jD]~\}}|\}} |j dvr0t jd|j j|I|r%| #|j t||j} t|| ||<|Scc}}wcc}}w#t$rd} Y,wxYw)N)httphttpswswss)rrz)%s proxies %s are not supported, ignoring) ritemsr#rrschemer&rupperrrrr) kv proxy_urlsrstrippedretprotovalrrs rTproxies_from_envrs3L&&( Aq . . 3q6 J  I6@6F6F6HIda&q))IHI Cnn& , s t <<+ +  ! !;U\\=O=O=QSX   zz% / 5::FDud+E  , J- J# D sDD D DDloopzOptional[asyncio.Task[Any]]c.tj|S)Nr)asyncio current_taskrs rTrr"s   T **rYc|tj}|jsCtjdt d|j rtjdd|S)Nz5The object should be created within an async functionr() stacklevelT) stack_info) rget_event_loop is_runningwarningswarnDeprecationWarning get_debugr'rrs rTget_running_loopr(s] |%%' ??  C  >>   # #GTX  KrYobjc:ttdd}|||Sy)NisasyncgenfunctionF)getattrinspect)rfuncs rTrr:s$ 70$ 7D CyrYc|j.t|jrtd|jdt} ||j}|j |j fS#t$rtd|dwxYw)z5Get a permitted proxy for the given URL from the env.zProxying is disallowed for ``zNo proxies found for `z ` in the env)rrrrrrrKeyError)rwproxies_in_env proxy_infos rTget_env_proxy_for_urlrBs xx SXX 68 AFGG%'N7#CJJ/ !6!666 H23'FGGHs A--Bc6eZdZUeed<eed<eed<ded<y)MimeTypetypesubtypesuffixzMultiDictProxy[str] parametersN)rVrWrXrrrQrYrTrrPs I L K%%rYr8)maxsizemimetypec |s tdddttS|jd}t}|ddD]W}|s|j d\}}}|j |j j|jdY|djj }|d k(rd }|j d \}}} | j d \} }} t|| | t|S) aParses a MIME type into its components. mimetype is a MIME type string. Returns a MimeType object. Example: >>> parse_mimetype('text/html; charset=utf-8') MimeType(type='text', subtype='html', suffix='', parameters={'charset': 'utf-8'}) ry)rrrrr?r$NrGz "r*z*/*rC+)rr!r rk partitionaddrlstrip) rpartsparamsitemkey_valuefulltypemtypestypers rTparse_mimetyperXs R~ik7R   NN3 E&[Fab ; s+ Q 399;$$& D(9: ; Qx~~%%'H3((-OE1es+E1f  E&^F=S rYdefaultct|dd}|r5t|tr%|ddk7r|ddk7rt|jS|S)Nnamerr;r<)rrzrrr)rrrs rTguess_filenamersC 3 %D 4%$q'S.T"X_Dz NrYz[^\041\043-\133\135-\176] contentcptt|kDstd|tj d|S)aReturn 7-bit content as quoted-string. Format content into a quoted-string as defined in RFC5322 for Internet Message Format. Notice that this is not the 8-bit HTTP format, but the 7-bit email format. Content must be in usascii or a ValueError is raised. zbad content for quoted-string c*d|jdzS)NrAr)group)xs rTzquoted_string..sdQWWQZ&7rY)QCONTENTsetr` not_qtext_resub)rs rT quoted_stringrs7 s7| #9'EFF   7 AArYdisptype quote_fields_charsetrc |rtt|kDstdj||}|r g}|j D]\}}|rtt|kDstdj|||r[|j dk(r%t |d|}|j|d|zfo t|}|j|d|zf|jd d jd d }|j|d|zfd jd|D} d j|| f}|S#t$r:dj|dt |d|f}|j|dz|fY;wxYw)akSets ``Content-Disposition`` header for MIME. This is the MIME payload Content-Disposition header from RFC 2183 and RFC 7579 section 4.2, not the HTTP Content-Disposition from RFC 6266. disptype is a disposition type: inline, attachment, form-data. Should be valid extension token (see RFC 2183) quote_fields performs value quoting to 7-bit MIME headers according to RFC 7578. Set to quote_fields to False if recipient can take 8-bit file names and field values. _charset specifies the charset to use when quote_fields is True. params is a dict with disposition params. z!bad content disposition type {!r}z+bad content disposition parameter {!r}={!r}filenameryrjz"%s"z''rrAz\\rBz\"z; c3>K|]}dj|yw)rGN)join).0pairs rT z-content_disposition_header..s?tCHHTN?s) TOKENrr`formatrrlrappendrr replace) rrrrrlparamsrrqvalsparamss rTcontent_disposition_headerrs( ECM1?FFxPQQ E   5HCus3x/ DKKCQTU99;*, b8F2J>r>d>rYr)rz[^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$a^(?:(?:(?:[A-F0-9]{1,4}:){6}|(?=(?:[A-F0-9]{0,4}:){0,6}(?:[0-9]{1,3}\.){3}[0-9]{1,3}$)(([0-9A-F]{1,4}:){0,5}|:)((:[0-9A-F]{1,4}){1,5}:|:)|::(?:[A-F0-9]{1,4}:){5})(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$)flagsrhregexregexbc|yt|trt|j|St|tt t frt|j|St|dt|d)NFz [z] is not a str or bytes) rzrboolmatchbytes bytearray memoryviewr{r)r&r'rs rT_is_ip_addressr.sl |$EKK%&& D5)Z8 9FLL&''4&4:,.EFGGrYc2t|xs t|SrP)is_ipv4_addressis_ipv6_address)rs rT is_ip_addressr2 s 4 9OD$99rY_cached_current_datetimerycttj}|tk7r5d}d}tj|^}}}}}}} } d|| |||||||fza|atS)N)MonTueWedThuFriSatSun) ryJanFebMarAprMayJunJulAugSepOctNovDecz#%s, %02d %3s %4d %02d:%02d:%02d GMT)inttimer3gmtime_cached_formatted_datetime) now _weekdayname _monthnameyearmonthdayhhmmsswdtails rTrfc822_formatted_timerW(s diik C &&I  37++c2B/eS"b"b4%J    u     N & "$' %%rYc|\}}|}|*tt5t||dddyy#1swYyxYwrP)r Exceptionr)inforefrobs rT_weakref_handler]PsMIC B ~ i  GB      s :Ar\rtimeouttimeout_ceil_thresholdc|T|dkDrO|j|z}||k\r t|}|j|tt j ||fSyNr)rIrcall_atr]weakrefr[)r\rr^rr_whens rTweakref_handlereXsUw{yy{W$ , ,:D||D/GKKOT3JKK rYcbc||:|dkDr5|j|z}||kDr t|}|j||Syra)rIrrb)rfr^rr_rds rT call_laterrhhsF w{yy{W$ + +:D||D"%% rYc eZdZdZ ddej deededdfdZde d d e d e ddfd Z dd Z deejfdZddZddZy) TimeoutHandlezTimeout handlerr^ceil_thresholdrNNc<||_||_||_g|_yrP)_timeout_loop_ceil_threshold _callbacks)rSrr^rks rTrzTimeoutHandle.__init__ys&    -  rYcallback).Nargskwargsc@|jj|||fyrP)rpr)rSrqrrrss rTregisterzTimeoutHandle.registers $78rYc8|jjyrP)rpclearrRs rTclosezTimeoutHandle.closes rYc|j}|b|dkDr]|jj|z}||jk\r t |}|jj ||j Syra)rmrnrIrorrb__call__)rSr^rds rTstartzTimeoutHandle.startsa--  7Q;::??$w.D$...Dz::%%dDMM: :rYc|jA|jdkDr2t|j}|j|j|St Sra)rm TimerContextrnrur^ TimerNoop)rStimers rTrzTimeoutHandle.timersB == $): ,E MM%-- (L; rYc|jD]&\}}}tt5||i|ddd(|jjy#1swYMxYwrP)rprrYrw)rSrfrrrss rTrzzTimeoutHandle.__call__s] $ $ Bf)$ $D#F# $ $ $  $ $s AA rNN)rNBaseTimerContext)rVrWrXrrAbstractEventLooprfloatrr r rurxHandler{rrzrQrYrTrjrjvs !" '' %    9 +9479CF9 9  x/ rYrjceZdZddZy)rNcy)z0Raise TimeoutError if timeout has been exceeded.NrQrRs rTassert_timeoutzBaseTimerContext.assert_timeoutsrYr)rVrWrXrrQrYrTrrs?rYrcHeZdZdefdZdeeedeedeeddfdZ y)r~rNc|SrPrQrRs rT __enter__zTimerNoop.__enter__s rYexc_typeexc_valexc_tbNcyrPrQrSrrrs rT__exit__zTimerNoop.__exit__s rY) rVrWrXrrrr BaseExceptionr rrQrYrTr~r~sN+4 ./-('   rYr~c eZdZdZdej ddfdZd dZdefdZ de e e d e e d e e de efd Zd d Zy)r}z&Low resolution timeout context managerrrNNc.||_g|_d|_y)NF)rn_tasks _cancelled)rSrs rTrzTimerContext.__init__s /1 rYc>|jrtjdy)z7Raise TimeoutError if timer has already been cancelled.N)rr TimeoutErrorrRs rTrzTimerContext.assert_timeouts ??&&D 0 rYct|j}| td|jrtj d|j j||S)Nrz4Timeout context manager should be used inside a task)rrnrrrrrrrStasks rTrzTimerContext.__enter__sS, <I  ??&&D 0 4  rYrrrc|jr|jj|tjur|jrtj dyrP)rpoprCancelledErrorrrrs rTrzTimerContext.__exit__s> ;; KKOO  w-- -$//&&D 0rYc|js2t|jD]}|jd|_yyNT)rrrcancelrs rTr^zTimerContext.timeouts8DKK(   #DO rYr)rVrWrXrrrrrrrrrrr r)rr^rQrYrTr}r}sx0 W66 4 1 +  4 ./ -( '  $ #rYr}delayrkc||dkrtjdSt}|j}||z}||kDr t |}tj |Sra) async_timeoutr^rrIr timeout_at)rrkrrLrds rT ceil_timeoutrs^ } $$T**  D ))+C ;D ~Dz  # #D ))rYceZdZUegdZeeed<dZe eed<dZ e e eefed<e Z eedefed<de eddfd Zedefd Zede efd Zede efd Zy) HeadersMixin) _content_type _content_dict_stored_content_type_headersNrrrrawrNc||_|d|_i|_ytj d|z}|j |_|j d}t|dd|_y)Nzapplication/octet-streamzContent-Type: rQr$)rrrrparsestrget_content_type get_paramsdict)rSrmsgrs rT_parse_content_typez HeadersMixin._parse_content_typesi$'! ;!;D !#D .))*:S*@AC!$!5!5!7D ^^B'F!%fQRj!1D rYc|jjtj}|j|k7r|j ||j S)z7The value of content part for Content-Type HTTP header.)rrr% CONTENT_TYPErrrrSrs rT content_typezHeadersMixin.content_type sFmm 1 12  $ $ +  $ $S )!!!rYc|jjtj}|j|k7r|j ||j jdS)z7The value of charset part for Content-Type HTTP header.charset)rrr%rrrrrs rTrzHeadersMixin.charsetsQmm 1 12  $ $ +  $ $S )!!%%i00rYcp|jjtj}| t |Sy)z(The value of Content-Length HTTP header.N)rrr%CONTENT_LENGTHrH)rScontent_lengths rTrzHeadersMixin.content_lengths2**4+>+>?  %~& &rY)rVrWrX frozensetATTRSr"rrrrrr r3rrr2rpropertyrrrHrrQrYrTrrs P QE3#'M8C='.2M8DcN+28@%T9 45@ 2x} 2 2"c""1#11 rYrfutzasyncio.Future[_T]resultcH|js|j|yyrP)done set_result)rrs rTrr(s 88: v rYexccH|js|j|yyrP)r set_exception)rrs rTrr-s 88: # rYc`eZdZUdZdZeeed<d dede ee fdZ ded e fd Z d efd Zy) AppKeyz.Keys for static typing support in Application.)_name_t__orig_class__rNrtctj}|r8|jjdk(r|jd}n|j }|r8dz|z|_||_y)NzrV.)r currentframef_codeco_name f_globalsf_backrr)rSrrframemodules rTrzAppKey.__init__=s]$$&||##z1#ooj9LLE  c\D( rYotherrNcVt|tr|j|jkSyr)rzrr)rSrs rT__lt__z AppKey.__lt__Is" eV $:: + +rYcl|j}|0tt5t|jd}ddd|d}nSt |t r8|jdk(r |j}n'|jd|j}n t|}d|jd|dS#1swYtxYw)Nrz <>builtinsrz) rrr!rrrzrrWrXreprr)rSrt_reprs rT__repr__zAppKey.__repr__Ns GG 9.) 5T001!4 5 9"F 4 ||z)LL>1>>*:;!WF$**WVHB77 5 5s B**B3rP)rVrWrXr __slots__robjectrrrr0rr)rrrQrYrTrr2sQ81I L  S Xd2h%7 Ft 8#8rYrc eZdZdZdeeeeee fe fddfdZ ddZ e dee de fdZe dede fd Zdeeee fde fd Ze dee d edee effd Ze ddee d ddee fd Ze dded e de fdZddeeee fd e de fdZdefdZdeeeee ffdZdedefdZdefdZdefdZy)r+)_mapsmapsrNNc$t||_yrP)tupler)rSrs rTrzChainMapProxy.__init__ds 4[ rYcJtdj|j)Nz4Inheritance class {} from ChainMapProxy is forbidden)r{rrV)rcs rT__init_subclass__zChainMapProxy.__init_subclass__gs" !6#,,/  rYrcyrPrQrSrs rT __getitem__zChainMapProxy.__getitem__m rYcyrPrQrs rTrzChainMapProxy.__getitem__qrrYcf|jD] } ||cSt|#t$rY"wxYwrP)rr)rSrmappings rTrzChainMapProxy.__getitem__usDzz G s|#  sm  s $ 00rcyrPrQrSrrs rTrzChainMapProxy.get}rrYcyrPrQrs rTrzChainMapProxy.getrrYcyrPrQrs rTrzChainMapProxy.getrrYc0 ||S#t$r|cYSwxYwrP)rrs rTrzChainMapProxy.gets% 9  N s  cVttj|jSrP)lenrunionrrRs rT__len__zChainMapProxy.__len__s;35;; +,,rYcri}t|jD]}|j|t|SrP)reversedrupdateiter)rSdrs rT__iter__zChainMapProxy.__iter__s602 + G HHW  AwrYc@tfd|jDS)Nc3&K|]}|v ywrPrQ)r mrs rTr z-ChainMapProxy.__contains__..s03!80sanyrrs `rT __contains__zChainMapProxy.__contains__s0TZZ000rYc,t|jSrPrrRs rT__bool__zChainMapProxy.__bool__s4::rYc`djtt|j}d|dS)Nz, zChainMapProxy(r:)r maprr)rSrs rTrzChainMapProxy.__repr__s*))Cdjj12y**rYr).rP)rVrWrXrrrrrrr rrrr0rr1rrrHrrrrr)rrrrQrYrTr+r+asI!XgeC4D.Es.J&KL!QU!  vbz b   s s  uS&*_5# vbz B 5R=   vbz D 8B<   s S 3  uS&*_-s --(5fSk)9#:;1141$+#+rYr+z[!\x23-\x7E\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)rc&eZdZUeed<dZeed<y)r,rFis_weakN)rVrWrXrrr r)rQrYrTr,r,s JGTrYr,rc`|tk7r%tj|std|dyy)NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY _ETAGC_RE fullmatchr`)rs rTvalidate_etag_valuers9 !4!4U!;UIJ K  "<rYdate_strc|Vt|}|Itt5tj|dddtjj icdddSy#1swYyxYw)z/Process a date string, return a datetime objectNtzinfo)rrr`datetimetimezoneutc)r timetuples rTparse_http_datersdh'  *% W(()BQ-V@Q@Q@U@UV W W  W s 0AA#methodcodect|xs@t|xs3d|cxkxrdkncxr!|jtjk(S)z-Check if a request must return an empty body.,)status_code_must_be_empty_bodymethod_must_be_empty_bodyrr% METH_CONNECTrrs rTmust_be_empty_bodyr$sH 't, G $V , G 4 #  E&,,.D4E4E"ErYcD|jtjk(S)z,Check if a method must return an empty body.)rr% METH_HEAD)rs rTr!r!s <<>T^^ ++rYc.|dvxsd|cxkxrdkScS)z1Check if a status code must return an empty body.0drrQ)rs rTr r s$ :  2!2s!22!22rYc|dvxsEd|cxkxrdkncxs3d|cxkxrdkncxr!|jtjk(S)zrCheck if a Content-Length header should be removed. This should always be a subset of must_be_empty_body r(r+rr)rr%r"r#s rTshould_remove_content_lengthr-sM  G $   G 4 #  E&,,.D4E4E"ErYrP)Tzutf-8)rZzTuple[weakref.ref[object], str]rNNr)rrrmrqrrenum functoolsrrrplatformresysrIrrc collectionsrr email.parserr email.utilsrmathrpathlibrtypesr typingr r r r rrrrrrrrrrrrrrr urllib.parserurllib.requestrrattr multidictr r!r"yarlr#ryr%logr&r' version_infor__all__systemIS_MACOSrPY_310PY_311r0r1Enumr2r3r)rr NO_EXTENSIONSr%dev_modeignore_environmentDEBUGrangechrCHARCTL SEPARATORSrrMr*rrsrrrrrrrrrr lru_cacherrcompilerrrrrrreify_py_helpersreify_c ImportError _ipv4_pattern _ipv6_pattern _ipv4_regex IGNORECASE _ipv6_regexro _ipv4_regexb _ipv6_regexbr+r.partialr0r1r,r-r2r3rHrrKrWr]rr TimerHandlererhrjrr~r}Timeoutrrrrrtotal_orderingrr+_ETAGCr _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_RErr,rrr$r!r r-)is0rTrgsv    "%!*3 ==/w# 0 8??  ( X__ ) +  W $  W $ T] T] DIIk: .   RZZ^^$;<=    $$$Sbjjnn=Q.R)S a &1A&Q|$!s1v$H(F' * s Z :J ;(IJ:Jz)S)U30C+C%D)(-(VT$d3$$4$ )HU[[$9))):$sI~.615+ 7,, -+"+15 7,, - $CD 7s 7uS(92E-E'F 7T$d3&&4&R $S$X$!$Nhsmx}rzz67 !$- .qCF .$ 7 B3 B3 B?F22!%28;2QT22jXwr{>GBK>@  *  1  bjj' bjjbmm< rzz-..w78 rzz-..w7r}}M  H 3< H!( H7?c5j@Q7R H  H$)##NKN#)##NKN:sE9j'H!IJ:t:+/(3-.%&s%&P %&       # #  "  g!!" (%& S     # # "  g!!" / / d?~&89?  -##-#b56 * E? *,1 * *--`(" +-D  +8WR[+8+8\A+GE#vc{"23S89A+J # BJJv  &$ L) bjjAl^3E!FG T$d34  s t hsm9J9J0Ks#$,c,d,333  C D Q'$f /`  s$Y2Y4Y$ Y))Y21Y2