idg UdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZmZm 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/dd l0m1Z1dd l2m3Z3m4Z4ddl5Z5ddl6Z6dd l7m8Z8m9Z9ddl:m;Z;ddlm?Z?m@Z@ddlAmBZBmCZCdZDe jEdkZFe jEdkZGe jHdkZIe jHdkZJe jHdkZKe jHdkZLe jHdkZMe jHdkr/ddlNZNeNjO dde(ejPde*dfdZQnejQZQe-dZRe-d ZSeTZUeeVd!<eWejXYd"ZZeWeVd#<e[e j\d$d%p/e j\j] o"eWejXYd&Z^eWeVd'<d(e_dd)DZ`d*e_dd+Dead,hzZbd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dead?hZce`ebz ecz ZdGd@dAZeGdBdCedCgdDZfdEe;de+e;e(efffdFZgde(ejfdGZhe6jidHdHdHIGdJdKZjde!ekejffdLZl dde(ejPddMfdNZm dde(ejPdejPfdOZndPedeWfdQZodEe;de+e;e(efffdRZpe6jidHdHdHIGdSdTZqejrdUVdWekdeqfdXZsddPedYe(ekde(ekfdZZte jud[Zvd\e_d+d,Dd]hzZwd^ekdekfd_Zx ddaekdbeWdcekddekdekf deZyGdfdgeCe#eRZzGdhdie#eRZ{e{Z| ddjl}m{Z~eZse~Z{n #e$rYnwxYwdkZdlZe jueZe juee jmZe juednZe juedne jmZdoe)ekdpe)edqe(e.ekefdeWfdrZejeeeZejeeeZdqe(e.ekeeefdeWfdsZdejfdtZdae(eeVdu<dvadekfdwZddzZd{eTd|ekd}edejPde(ejf d~Zdegefd}edejPde(ejfdZGddZGdde dZGddeZGddeZde(ede5jfdZGddZdddeRddfdZdddeddfdZGdde'ekefZdZe jueZdedZe jueZe jud-edZdZe6jidHdHdHIGddZdekddfdZde(ekde(ejfdZdS)zVarious helper functionsN) namedtuple)suppress) HeaderParser) parsedate)ceil)Path) TracebackType)AnyCallableContextManagerDict GeneratorGenericIterableIteratorListMappingOptionalPatternSetTupleTypeTypeVarUnioncast)quote) getproxies proxy_bypass) MultiDictMultiDictProxyURL)hdrs) client_loggerinternal_logger)PathLikeProtocol) BasicAuth ChainMapProxyETagDarwinWindows)r.)r.)r. )r. loopreturnzasyncio.Task[Any]crttj|}d|DS)Nc:h|]}||S)done).0ts D/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/helpers.py zall_tasks..Ls%111a1111)listasyncioTask all_tasks)r5taskss r=rCrCHs5W\++D11221151111r?_T_SsentinelAIOHTTP_NO_EXTENSIONS NO_EXTENSIONSdev_modeFPYTHONASYNCIODEBUGDEBUGc,h|]}t|Sr9chrr;is r=r>r>`s&&&1A&&&r?c,h|]}t|Sr9rNrPs r=r>r>as$$$!s1vv$$$r? ()<>@,;:\"/[]?={} c&eZdZdedfdZdS)noopr6)NNNc#KdVdSNr9selfs r= __await__znoop.__await__}s r?N)__name__ __module__ __qualname__rror9r?r=rjrj|s59%56r?rjc eZdZdZ ddedededdffd Zedd ededdfd Zedd d edede dfd Z defdZ xZ S)r)z!Http basic authentication helper.latin1loginpasswordencodingr6c|td|tdd|vrtdt||||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__)clsrvrwrx __class__s r=r|zBasicAuth.__new__sb =ABB B  DEE E %<<TUU UwwsE8X>>>r? auth_headerc |dd\}}n#t$rtdwxYw|dkrtd|z tj|dd|}n"#tj$rtd wxYw |d d\}}n#t$rtd wxYw|||| S) z->sA-F-F *I** F F FDEE E F ??   ' '>JKK K 9&#**733dfX G~ 9 9 9788 8 9 5 ")sA!6!6 Hhh 5 5 5344 4 5s8X9999s 6$> > 8 4s38S\/R(CCCCr?c|jd|j|j}dt j||jzS)zEncode credentials.r]zBasic %s)rvrwrrxr b64encoder)rncredss r=rzBasicAuth.encodesOJ000088GGF,U33::4=IIIIr?)rtru)ru) rprqrr__doc__strr| classmethodrr"rrr __classcell__)r~s@r=r)r)s++>F ? ? ?#& ?7: ?  ? ? ? ? ? ?::::;:::[:83;DDD3DSD@UDDD[DJJJJJJJJJr?r))rvrwrxrcpt|}||dfS|d|fSrl)r)r with_user)rauths r=strip_auth_from_urlrs;   c " "D |Dy}}T""D((r?c(tjd}|t|}nP tj}n-#t $r }t jd|Yd}~dSd}~wwxYw|trdndz } tj t|S#tj $r}t j d|Yd}~nEd}~wt$r5}|s|rt j d|Yd}~nd}~wwxYwdS)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: %szCould not read .netrc file: %s)osenvirongetrhome RuntimeErrorr%debug IS_WINDOWSnetrcrNetrcParseErrorwarningOSErroris_file) netrc_env netrc_pathhome_dires r=netrc_from_envrsY w''I)__  y{{HH     5    44444 Z!EXF  G{3z??+++  DDD?CCCCCCCC GGG  G **,, G  !"BA F F F G 4s;A A1A,,A1 B$$D3C  D+D  DT) auto_attribsfrozenslotsc0eZdZUeed<eeed<dS) ProxyInfoproxy proxy_authN)rprqrrr"__annotations__rr)r9r?r=rrs, JJJ######r?rcdtD}t}d|D}i}|D]\}}|\}}|jdvr.t jd|j|A|rz|xd}|j||j}|S|^} } | dr| dn| d} ttt| tt| }t||||<|S)Nc<i|]\}}|dv |t|S))httphttpswswssr!r;kvs r= z$proxies_from_env..s: Aq . . . 3q66 . . .r?c4i|]\}}|t|Sr9)rrs r=rz$proxies_from_env..s'IIIda&q))IIIr?)rrz)%s proxies %s are not supported, ignoringr) ritemsrschemer%rupperhostauthenticatorsr)rrr) proxy_urls netrc_objstrippedretprotovalrrauth_from_netrcloginsrwrvs r=proxies_from_envrs]LL&&((J   IIIj6F6F6H6HIIIH Cnn&&,, s t <+ + +  !;U\=O=O=Q=QSX      H"Oz%"+":":5:"F"F*%4!%+AY>q F2J c5!1!14X3F3FGGud++E Jr?zOptional[asyncio.Task[Any]]ctjdkrtj|Stj|S)Nr0r5)sys version_inforA current_taskrBrs r=rrs? 6!!#....|((d(333r?c|tj}|sFtjdt d|rtjdd|S)Nz5The object should be created within an async functionr.) stacklevelT) stack_info) rAget_event_loop is_runningwarningswarnDeprecationWarning get_debugr&rrs r=get_running_looprs |%'' ??    C     >>     #GTX     Kr?objcLttdd}| ||SdS)NisasyncgenfunctionF)getattrinspect)rfuncs r=rr.s- 70$ 7 7D tCyyur?c|j,t|jrtd|jdt} ||j}|j|jfS#t$rtd|dwxYw)z5Get a permitted proxy for the given URL from the env.NzProxying is disallowed for ``zNo proxies found for `z ` in the env)rr LookupErrorrrrrKeyError)rproxies_in_env proxy_infos r=get_env_proxy_for_urlr6s x SX 6 6FFFFGGG%''N7#CJ/ !666 HHHF3FFFGGGHs  AA<c8eZdZUeed<eed<eed<ded<dS)MimeTypetypesubtypesuffixzMultiDictProxy[str] parametersN)rprqrrrrr9r?r=rrDs9 III LLL KKK%%%%%%r?r8)maxsizemimetypec |s,tdddttS|d}t}|ddD]}|st t t t fd|vr|ddn|df\}}|| | d|d }|d krd }d |vr;t t t t f|d dn|df\}}d |vr;t t t t f|d dn|df\}} 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'}) rt)rrrrr\r#Nrdz "r*z*/*r`+) rr rrrrraddrstrip) rpartsparamsitemkeyvaluefulltypemtypestypers r=parse_mimetyper Ls  R~ikk7R7R     NN3  E&[[Fabb ;;   #s(O3$;;TZZQ///T2J  U  399;;$$&& D(9(9::::Qx~~%%''H3 (?? U38_hnnS!44555^E5 7:UllU38_ekk#q11222PR E6  E&^F=S=S   r?defaultct|dd}|rAt|tr,|ddkr |ddkrt|jS|S)NnamerrXrrY)rrrrr )rr r s r=guess_filenamer|sW 3 % %D  4%%$q'S..T"X__Dzz Nr?z[^\041\043-\133\135-\176]c,h|]}t|Sr9rNrPs r=r>r>s . . .qCFF . . .r? contentctt|kstd|td|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 c2d|dzS)Nr^r)group)xs r=zquoted_string..sdQWWQZZ&7r?)QCONTENTsetrz not_qtext_resub)rs r= quoted_stringrsF s7|| # #E'EEFFF   77 A AAr?utf-8disptype quote_fields_charsetrc |rtt|ks"td||}|rg}|D]L\}}|rtt|ks#td|||r|dkr-t |d|}||d|zf t|}||d|zf#t$rFd |dt |d|f}||dz|fYwxYw| d d  d d }||d|zfNd d|D} d || f}|S)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}filenamertrz"%s"z''rr^z\\r_z\"z; c3@K|]}d|VdS)rdN)join)r;pairs r= z-content_disposition_header..s,??tCHHTNN??????r?) TOKENrrzformatrrrappendrr#replace) rrrrrlparamsrrqvalsparamss r=content_disposition_headerr-s( RECMM11?FFxPPQQQ E ,  5 5HC us3xx// DKKCQTUU 599;;*,, b8<<F2J>r>d>>>>>>r?r2)r2z[^(?:(?: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})$)flagsrregexregexbrcD|dSt|tr"t||St|tt t fr"t||St|dt|d)NFz [z] is not a str or bytes) rrboolmatchbytes bytearray memoryviewrr)r>r?rs r=_is_ip_addressrF s |u$HEKK%%&&& D5)Z8 9 9HFLL&&'''4FF4::FFFGGGr?c>t|pt|Srl)is_ipv4_addressis_ipv6_address)rs r= is_ip_addressrJs 4 9OD$9$99r?ctjtjjdtjdzS)z8Return current time rounded up to the next whole second.r) microsecond)seconds)datetimenowtimezoneutcr) timedeltar9r?r=next_whole_secondrS sP   !2!6 7 7 ? ? @  1%%% &&r?_cached_current_datetimertcttj}|tkr:d}d}tj|^}}}}}}} } d|| |||||||fza|atS)N)MonTueWedThuFriSatSun) rtJanFebMarAprMayJunJulAugSepOctNovDecz#%s, %02d %3s %4d %02d:%02d:%02d GMT)inttimerTgmtime_cached_formatted_datetime) rO _weekdayname _monthnameyearmonthdayhhmmsswdtails r=rfc822_formatted_timerw+s dikk  C &&&I  37+c2B2B/eS"b"b4%J    u     N & "$' %%r?infoTuple[weakref.ref[object], str]c|\}}|}|Gtt5t||ddddS#1swxYwYdSdSrl)r Exceptionr)rxrefr obs r=_weakref_handler~SsIC B ~ i   GB                       ~sA  AAr}r timeoutc|b|dkr\||z}|dkrt|}||tt j||fSdSNr)rjrcall_atr~weakrefr|)r}r rr5whens r=weakref_handler[s`w{{yy{{W$ a<<::D||D/GKOOT3JKKK 4r?cbc|H|dkrB||z}|dkrt|}|||SdSr)rjrr)rrr5rs r= call_laterrgsQw{{yy{{W$ Q;;::D||D"%%% 4r?ceZdZdZdejdeeddfdZde dd e d e ddfd Z dd Z deej fd ZddZddZdS) TimeoutHandlezTimeout handler5rr6Nc0||_||_g|_dSrl)_timeout_loop _callbacks)rnr5rs r=r5zTimeoutHandle.__init__us"     r?callback).Nargskwargsc@|j|||fdSrl)rr()rnrrrs r=registerzTimeoutHandle.register~s' $788888r?c8|jdSrl)rclearrms r=closezTimeoutHandle.closes r?c|j}|W|dkrQ|j|z}|dkrt|}|j||jSdSr)rrrjrr__call__)rnrrs r=startzTimeoutHandle.starts`-  7Q;;:??$$w.D!||Dzz:%%dDM:: :4r?BaseTimerContextc|j;|jdkr0t|j}||j|St S)Nr)r TimerContextrrr TimerNoop)rntimers r=rzTimeoutHandle.timersH = $):): ,,E MM%- ( ( (L;; r?c|jD]:\}}}tt5||i|dddn #1swxYwY;|jdSrl)rrr{r)rnrrrs r=rzTimeoutHandle.__call__s $ $ $ Bf)$$ $ $D#F### $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ s 7; ; r6N)r6r)rprqrrrrAAbstractEventLooprfloatr5r r rrHandlerrrr9r?r=rrrs-8@ 9 +9479CF9 9999     x/      r?rceZdZdS)rN)rprqrrr9r?r=rrsDr?rcbeZdZdefdZdeeedeedeeddfdZ dS)rr6c|Srlr9rms r= __enter__zTimerNoop.__enter__s r?exc_typeexc_valexc_tbNcdSrlr9rnrrrs r=__exit__zTimerNoop.__exit__s r?) rprqrrrrrr BaseExceptionr rr9r?r=rrs~+4 ./-('   r?rc eZdZdZdejddfdZdefdZde e e de e d e e de e fd Zd d ZdS) rz&Low resolution timeout context managerr5r6Nc0||_g|_d|_dS)NF)r_tasks _cancelled)rnr5s r=r5zTimerContext.__init__s /1 r?ct|j}|td|jr tjd|j||S)Nrz4Timeout context manager should be used inside a task)rrrrrA TimeoutErrorrr(rntasks r=rzTimerContext.__enter__s`,,, <I  ? 1&D 0 4    r?rrrc|jr|j|tjur|jr tjddSrl)rpoprACancelledErrorrrrs r=rzTimerContext.__exit__sE ;  KOO    w- - -$/ -&D 0tr?c||js4t|jD]}|d|_dSdS)NT)rrrcancelrs r=rzTimerContext.timeoutsI #DK((   "DOOO  # #r?r)rprqrrrrArr5rrrrrr rArrr9r?r=rrs00 W6 4    +     4 ./ -( '  $    ######r?rdelayc||dkrtjdSt}|}||z}|dkrt |}tj|Sr) async_timeoutrrrjr timeout_at)rr5rOrs r= ceil_timeoutrsf } $T***   D ))++C ;D qyyDzz  #D ) ))r?ceZdZUegdZdZeeed<dZ ee eefed<e Z deddfdZ edefdZedeefd Zedeefd ZdS) HeadersMixin) _content_type _content_dict_stored_content_typeNrrrawr6c||_|d|_i|_dStd|z}||_|}t|dd|_dS)Nzapplication/octet-streamzContent-Type: r#)rrrrparsestrget_content_type get_paramsdict)rnrmsgrs r=_parse_content_typez HeadersMixin._parse_content_types$'! ;!;D !#D   ..))*:S*@AAC!$!5!5!7!7D ^^%%F!%fQRRj!1!1D   r?c|jtj}|j|kr|||jS)z7The value of content part for Content-Type HTTP header.)_headersrr$ CONTENT_TYPErrrrnrs r= content_typezHeadersMixin.content_typesGm 122  $ + +  $ $S ) ) )!!r?c|jtj}|j|kr|||jdS)z7The value of charset part for Content-Type HTTP header.charset)rrr$rrrrrs r=rzHeadersMixin.charsetsUm 122  $ + +  $ $S ) ) )!%%i000r?cp|jtj}|t |SdS)z(The value of Content-Length HTTP header.N)rrr$CONTENT_LENGTHri)rncontent_lengths r=rzHeadersMixin.content_length s<**      %~&& &4r?)rprqrr frozensetATTRSrrrrrr rGrrpropertyrrrirr9r?r=rrs IPPP Q QE#'M8C='''.2M8DcN+222# 2s 2t 2 2 2 2"c"""X"1#111X1    X   r?rfutzasyncio.Future[_T]resultc\|s||dSdSrl)r: set_result)rrs r=rrs4 88:: vr?excc\|s||dSdSrl)r: set_exception)rrs r=rrs6 88:: #r?ceZdZdZdeeeefddfdZddZ dedefdZ dded edefd Z de fd Z deefd Zdedefd ZdefdZdefdZdS)r*)_mapsmapsr6Nc.t||_dSrl)tupler)rnrs r=r5zChainMapProxy.__init__&s4[[ r?cPtd|j)Nz4Inheritance class {} from ChainMapProxy is forbidden)rr'rp)r}s r=__init_subclass__zChainMapProxy.__init_subclass__)s( !6#,//   r?rch|jD]} ||cS#t$rYwxYwt|rl)rr)rnrmappings r= __getitem__zChainMapProxy.__getitem__/sTz  G s|###    smms  ""r c||vr||n|Srlr9)rnrr s r=rzChainMapProxy.get7s4KKtCyyW4r?cRttj|jSrl)lenrunionrrms r=__len__zChainMapProxy.__len__:s;355; +,,,r?c|i}t|jD]}||t|Srl)reversedrupdateiter)rndrs r=__iter__zChainMapProxy.__iter__>s@ ++  G HHW    Awwr?cDtfd|jDS)Nc3 K|]}|vV dSrlr9)r;mrs r=r%z-ChainMapProxy.__contains__..Fs'003!8000000r?anyr)rnrs `r= __contains__zChainMapProxy.__contains__Es(0000TZ000000r?c*t|jSrlrrms r=__bool__zChainMapProxy.__bool__Hs4:r?chdtt|j}d|dS)Nz, zChainMapProxy(rW)r#mapreprr)rnrs r=__repr__zChainMapProxy.__repr__Ks0))Cdj1122*****r?rrl)rprqrr __slots__rrrr r5rrrrirrrobjectrArrrr9r?r=r*r*#s?I!Xgc3h&78!T!!!!    ss55s5S5C5555-----(3-1141111$+#++++++r?r*z[!#-}\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)rc(eZdZUeed<dZeed<dS)r+rFis_weakN)rprqrrrrrrAr9r?r=r+r+Zs+ JJJGTr?r+rcz|tkr-t|std|ddSdS)NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY _ETAGC_RE fullmatchrz)rs r=validate_etag_valuer `sN !4!4U!;!; KU K K K   r?date_strc|et|}|Ttt5tj|dddtjjicdddS#1swxYwYdS)z/Process a date string, return a datetime objectNr/tzinfo)rrrzrNrPrQ)r  timetuples r=parse_http_datergsh''  *%% W W()BQB-V@Q@UVV W W W W W W W W W W W W W W W W 4s(AA!$A!rl)Tr)rxryr6N)rrArrrN functoolsrrrplatformrerrjrr collectionsr contextlibr email.parserr email.utilsrmathrpathlibrtypesr typingr r r r rrrrrrrrrrrrrr urllib.parserurllib.requestrrrattr multidictrr yarlr"rtr$logr%r&typedefsr'r(__all__systemIS_MACOSrrPY_36PY_37PY_38PY_310PY_311idna_sslpatch_match_hostnamerrCrErFrrGrrArrrIrr=ignore_environmentrLrangeCHARrOCTL SEPARATORSr&rjr)rrsrrrrrrrr lru_cacher rcompilerrrr-r/r2reify_py_helpersreify_c ImportError _ipv4_pattern _ipv6_pattern _ipv4_regex IGNORECASE _ipv6_regexr _ipv4_regexb _ipv6_regexbrCrFpartialrHrIrDrErJrSrTrirlrwr~r TimerHandlerrrrrrTimeoutrrrrrr*_ETAGCr  _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_REr r+r rr9r?r=rHs    """"""%%%%%%!!!!!!(33333333 ////////////////(((((((( 0 8?   ( X_  ) +  F" F" F" W $ W $fOOO!H!###5922w012 !22222!I WT]] WT]]#d2:>>*ABBCC tCCCgciU33 $$Sbjnn=Q.R.R)S)St '&a &&&$$uuQ||$$$CHH(CFF' * s Z :J:J:J:J:J ;(I(I(IJJ:J:J:Jz)S)U30C+C%D))))%-%%%%PT$d333$$$$$$$43$ $sI~.@1544 7, -4"444415 7, - $CD 7s 7uS(92E-E'F 7 7 7 7T$d333&&&&&&&43&R   ,S,X,,,! ,^hsmx}rz677 . .EE$-- . . .$ 7 B3 B3 B B B B?F222!%28;2QT22222jXwr{>>>>>GBK>>>@  ******    D 1  bj'' bjbm<<< rz-..w7788 rz-..w77r}MMM  H 3< H!( H7?c5j@Q7R H  H H H H$)#NKNN#)#NKNN:sE9j'H!IJ:t::::&8,&&&&+/(3-...%&s%&%&%&%&P       $) 181J  g!"    S$)181J g!"+ + + + + + + + \     ~&89           (#(#(#(#(##(#(#(#V * *M,A * * * *........b(" +-D *+*+*+*+*+GCH%*+*+*+\  BJv   $&$$$ L)) bj!Fl!F!F!FGG T$d33343  s t    hsm9J0Ks4 O??PP