PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
a h@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZddlZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ddlm%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+dd l,m-Z-e.d Z/e.d ej0Z1e.d Z2e.d ej0j3Z4d5Z6gdZ7dZ8dZ9e9j:dj:ej;edZddZ?dDddZ@dEddZAdFddZBdedfd d!ZCdGd"d#ZDd$d%ZEe.d&ej0ZFeEd'd(ZGGd)d*d*ZHGd+d,d,eHZIGd-d.d.eZJe.d/jKZLd0d1ZMd2d3ZNdHd4d5ZOd6d7ZPGd8d9d9ZQGd:d;d;e jRZSejTjUfdd?ZWeOe8eVZVd@dAZXdBdCZYdS)Iz#PyPI and direct package downloadingNwraps) CHECKOUT_DIST Distribution BINARY_DISTnormalize_path SOURCE_DIST Environmentfind_distributions safe_name safe_version to_filename Requirement DEVELOP_DISTEGG_DIST) ssl_support)log)DistutilsError) translate)Wheelz^egg=([-A-Za-z0-9_.+!]+)$zhref\s*=\s*['"]?([^'"> ]+)z([^<]+)\n\s+\(md5\)z([-+.a-z0-9]{2,}):z.tar.gz .tar.bz2 .tar .zip .tgz) PackageIndexdistros_for_urlparse_bdist_wininstinterpret_distro_namezccs\t|\}}t|||D] }|Vq|rXt|}|rXt||d|tdD] }|VqLdS)zEYield egg or source distribution objects that might be found at a URLr1) precedenceN)r>distros_for_location EGG_FRAGMENTmatchrgroupr)r6metadatar*r=distrBr r r!rbs   rcCs|dr|dd}|dr8d|vr8t|||gS|drxd|vrxt|}|s^gSt||j|jtddgS|d rt|\}}}|durt ||||t |St D]0}||r|dt | }t |||SqgS) z:Yield egg or source distribution objects based on basename.egg.zipNr%z.egg-z.whlr1)location project_nameversionr?r#) r'rZ from_locationrZ is_compatiblerIrJrrrr EXTENSIONSlen)rHbasenamerDZwheelZwin_baser+platformextr r r!r@ps2     r@cCstt|tj||S)zEYield possible egg or source distribution objects based on a filename)r@rosr:rM)filenamerDr r r!distros_for_filenamesrRc cs||d}|s,tdd|ddDr,dStdt|dD]8}t||d|d|d||d|||dVq>dS)zGenerate alternative interpretations of a source distro name Note: if `location` is a filesystem filename, you should call ``pkg_resources.normalize_path()`` on it before passing it to this routine! rGcss|]}td|VqdS)z py\d\.\d$N)rerB).0pr r r! z(interpret_distro_name..Nr1) py_versionr?rN)r5anyrangerLrjoin)rHrMrDrYr?rNr7rUr r r!rs $rccsdt}|j}|dur8t|j|D]}|||Vq"n(|D]"}||}||vr<|||Vq.wrapperr)rlrmr rkr! unique_valuessrnz3<([^>]*\srel\s{0,10}=\s{0,10}['"]?([^'" >]+)[^>]*)>c cst|D]d}|\}}tttj|d}d|vsDd|vr t |D]}t j |t |dVqNq dD]@}||}|dkrtt ||}|rtt j |t |dVqtdS)zEFind rel="homepage" and rel="download" links in `page`, yielding URLs,Zhomepager.r1)z Home PagezDownload URLr-N)RELfinditergroupsr]mapstrstripr&r5HREFr2rurljoin htmldecoderCfindsearch)r6pagerBtagrelZrelsposr r r!find_external_linkss   rc@s(eZdZdZddZddZddZdS) ContentCheckerzP A null content checker that defines the interface for checking content cCsdS)z3 Feed a block of data to the hash. Nr selfblockr r r!feedszContentChecker.feedcCsdS)zC Check the hash. Return False if validation fails. Tr rr r r!is_validszContentChecker.is_validcCsdS)zu Call reporter with information about the checker (hash name) substituted into the template. Nr )rreportertemplater r r!reportszContentChecker.reportN)__name__ __module__ __qualname____doc__rrrr r r r!rsrc@sBeZdZedZddZeddZddZ dd Z d d Z d S) HashCheckerzK(?Psha1|sha224|sha384|sha256|sha512|md5)=(?P[a-f0-9]+)cCs||_t||_||_dSrh) hash_namehashlibnewhashexpected)rrrr r r!__init__s zHashChecker.__init__cCsBtj|d}|stS|j|}|s0tS|fi|S)z5Construct a (possibly null) ContentChecker from a URLr-)r2rr3rpatternrz groupdict)clsr6r=rBr r r!from_urls zHashChecker.from_urlcCs|j|dSrh)rupdaterr r r!r!szHashChecker.feedcCs|j|jkSrh)rZ hexdigestrrr r r!r$szHashChecker.is_validcCs||j}||Srh)r)rrrmsgr r r!r's zHashChecker.reportN) rrrrScompilerr classmethodrrrrr r r r!r s rcsDeZdZdZdLddZdMd d ZdNd d ZdOd dZddZddZ ddZ ddZ ddZ dPddZ ddZdQfdd Zdd Zd!d"Zd#d$Zd%d&Zd'd(ZdRd)d*ZdSd+d,Zd-d.Zd/Zd0d1Zd2d3ZdTd4d5Zd6d7Zd8d9Zd:d;Zdd?Z e!dUd@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'Z(S)Vrz;A distribution index that scans web pages for download URLshttps://pypi.org/simple/*NTcOstj|g|Ri||dd|d |_i|_i|_i|_td t t |j |_ g|_|oxtjox|pxt}|rt||_n tjj|_dS)Nr,|)r rr' index_url scanned_urls fetched_urls package_pagesrSrr\rsrrBallowsto_scanrZ is_availableZfind_ca_bundleZ opener_foropenerr2requesturlopen)rrhostsZ ca_bundleZ verify_sslrikwZuse_sslr r r!r/s zPackageIndex.__init__Fc Cs||jvr|sdSd|j|<t|s2||dStt|}|r\||sPdS|d||sn|rn||jvrtt|j |dS||sd|j|<dS| d|d|j|<d}| |||}|durdSt |t jjr|jdkr| d|jd|j|j<d|jd d vr(|dS|j}|}t |tsvt |t jjrXd }n|jd phd }||d }|t|D](} t j|t| d} |!| q|"|j#rt$|dddkr|%||}dS)z.)filterrPr:rrr_starmap scan_egg_link)r search_pathdirsZ egg_linksr r r!scan_egg_linkss zPackageIndex.scan_egg_linkscCsttj||&}ttdttj|}Wdn1s>0Yt |dkrXdS|\}}t tj||D]*}tjj|g|R|_ t |_ ||qrdS)NrX)openrPr:r\rrrsrtrurLr rHrr?r^)rr:rZ raw_lineslinesZegg_pathZ setup_pathrEr r r!rs4 zPackageIndex.scan_egg_linkcCsd}||js|Stttjj|t|jdd}t|dksRd|dvrV|St |d}t |d}d|j | i|<t|t|fS)N)NNr,rXr0r1rT)r(rrrsr2rr4rLr5r r r setdefaultr&r )rrZNO_MATCH_SENTINELr7pkgverr r r!_scans   zPackageIndex._scanc Cst|D]:}z"|tj|t|dWq tyBYq 0q ||\}}|s\dSt ||D]H}t |\}}| dr|s|r|d||f7}n | || |qftdd|S)z#Process the contents of a PyPI pager1r.pyz #egg=%s-%scSsd|dddS)Nz%sr1rX)rC)mr r r!rWz,PackageIndex.process_index..)rvrqrr2rrwrxrCrrr>r'need_version_infoscan_urlPYPI_MD5sub) rr6r{rBrrnew_urlr*fragr r r!rs$"    zPackageIndex.process_indexcCs|d|dS)NzPPage at %s links to .py file(s) without version info; an index scan is required.)scan_allrr6r r r!rszPackageIndex.need_version_infocGs<|j|jvr,|r"|j|g|R|d||jdS)Nz6Scanning index of all packages (this may take a while))rrrrrrrrir r r!rs zPackageIndex.scan_allcCsz||j|jd|j|js:||j|jd|j|jsR||t|j|jdD]}||qfdS)Nr,r ) rr unsafe_namerrrcrInot_found_in_indexr)r requirementr6r r r! find_packagess zPackageIndex.find_packagescsR|||||jD]"}||vr0|S|d||qtt|||S)Nz%s does not match %s)prescanrrcrsuperrobtain)rrZ installerrE __class__r r!rs zPackageIndex.obtaincCsL||jd||sH|t|td|jjtj |fdS)z- checker is a ContentChecker zValidating %%s checksum for %sz7%s validation failed for %s; possible download problem?N) rrrrrPunlinkrrr)r:rM)rcheckerrQtfpr r r! check_hashs zPackageIndex.check_hashcCsN|D]D}|jdus0t|r0|ds0tt|r<||q|j|qdS)z;Add `urls` to the list that will be prescanned for searchesNfile:)rrr(rrrappend)rZurlsr6r r r!add_find_linkss  zPackageIndex.add_find_linkscCs"|jrtt|j|jd|_dS)z7Scan urls scheduled for prescanning (e.g. --find-links)N)rrrsrrr r r!r&szPackageIndex.prescancCs<||jr|jd}}n |jd}}|||j|dS)Nz#Couldn't retrieve index page for %rz3Couldn't find index page for %r (maybe misspelled?))rcrrrr)rrmethrr r r!r,s  zPackageIndex.not_found_in_indexcCs~t|tsjt|}|rR||d||}t|\}}|drN||||}|Stj |rb|St |}t | ||ddS)aLocate and/or download `spec` to `tmpdir`, returning a local path `spec` may be a ``Requirement`` object, or a string containing a URL, an existing local filename, or a project/version requirement spec (i.e. the string form of a ``Requirement`` object). If it is the URL of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is automatically created alongside the downloaded file. If `spec` is a ``Requirement`` object or a string containing a project/version requirement spec, this method returns the location of a matching distribution (possibly after downloading it to `tmpdir`). If `spec` is a locally existing file or directory name, it is simply returned unchanged. If `spec` is a URL, it is downloaded to a subpath of `tmpdir`, and the local filename is returned. Various errors may be raised if a problem occurs during downloading. r1rrHN)rrr _download_urlrCr>r' gen_setuprPr:rr"rfetch_distribution)rrtmpdirr8foundr*r=r r r!r.6s    zPackageIndex.downloadc sd|id}d fdd }|rH|||}|s^|dur^|||}|durjdurx||}|dur|s|||}|durdrdpd|nd||j|jd SdS) a|Obtain a distribution suitable for fulfilling `requirement` `requirement` must be a ``pkg_resources.Requirement`` instance. If necessary, or if the `force_scan` flag is set, the requirement is searched for in the (online) package index as well as the locally installed packages. If a distribution matching `requirement` is found, the returned distribution's ``location`` is the value you would have gotten from calling the ``download()`` method with the matching distribution's URL or filename. If no matching distribution is found, ``None`` is returned. If the `source` flag is set, only source distributions and source checkout links will be considered. Unless the `develop_ok` flag is set, development and system eggs (i.e., those using the ``.egg-info`` format) will be ignored. zSearching for %sNcs|dur }||jD]v}|jtkrFsF|vrd|d|<q||vo\|jtkp\ }|r|j}||_tj |jr|SqdS)Nz&Skipping development or system egg: %sr1) rcr?rrrr.rHdownload_locationrPr:r)ZreqenvrEtestloc develop_okrZskippedsourcerr r!ryps$z-PackageIndex.fetch_distribution..findz:No local packages or working download links found for %s%sza source distribution of rzBest match: %s)rH)N)rrrrrcloner) rrr force_scanr r Z local_indexrEryr rr!rXs2         zPackageIndex.fetch_distributioncCs"|||||}|dur|jSdS)a3Obtain a file suitable for fulfilling `requirement` DEPRECATED; use the ``fetch_distribution()`` method now instead. For backward compatibility, this routine is identical but returns the ``location`` of the downloaded distribution instead of a distribution object. N)rrH)rrrr r rEr r r!fetchszPackageIndex.fetchc Cst|}|r*ddt||ddDp,g}t|dkrtj|}tj||krtj ||}ddl m }|||st |||}ttj |dd<} | d|dj|djtj|dfWdn1s0Y|S|rtd ||fntd dS) NcSsg|]}|jr|qSr )rJ)rTdr r r! sz*PackageIndex.gen_setup..r1r)samefilezsetup.pywzIfrom setuptools import setup setup(name=%r, version=%r, py_modules=[%r]) zCan't unambiguously interpret project/version identifier %r; any dashes in the name or version should be escaped using underscores. %rzpCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.)rArBrrCrLrPr:rMdirnamer\Zsetuptools.command.easy_installrshutilcopy2rwriterIrJsplitextr) rrQr=rrBrrMdstrrr r r!rs@       "zPackageIndex.gen_setupi c Cs:|d|d}zt|}||}t|tjjrLtd||j |j f|}d}|j }d}d|vr| d} t tt| }||||||t|d`} ||} | r|| | | |d7}||||||qqq|||| Wdn1s0Y|W|r"|Sn|r4|0dS) NzDownloading %szCan't download %s: %s %srr-zcontent-lengthzContent-Lengthwbr1)rrrrrr2rrrrr dl_blocksizeZget_allmaxrsint reporthookrrrrrr) rr6rQfprrblocknumbssizeZsizesrrr r r! _download_tosD        .zPackageIndex._download_tocCsdSrhr )rr6rQrZblksizer r r r!rszPackageIndex.reporthookc Cs|drt|Szt||jWSttjjfy}zHddd|j D}|r`| ||nt d||f|WYd}~n*d}~0t j jy}z|WYd}~Sd}~0t j jy}z4|r| ||jnt d||jf|WYd}~nd}~0tjjyT}z6|r,| ||jnt d||jf|WYd}~n^d}~0tjjtj fy}z2|r| ||nt d||f|WYd}~n d}~00dS)Nr cSsg|] }t|qSr )rt)rTargr r r!r rWz)PackageIndex.open_url..z%s %szDownload error for %s: %sz;%s returned a bad status line. The server might be down, %s)r( local_openopen_with_authrrhttpclient InvalidURLr\rirrr2rrZURLErrorreasonZ BadStatusLinelineZ HTTPExceptionsocket)rr6Zwarningvrr r r!rsJ (zPackageIndex.open_urlcCst|\}}|r0d|vr4|dddd}qnd}|drJ|dd}tj||}|t|sttd||d ks|d r| ||S|d ks|d r| ||S|d r| ||S|dkrt j t j|dS||d|||SdS)Nz...\_Z__downloaded__rFr%zInvalid filename svnzsvn+gitzgit+zhg+rrXT)r>replacer'rPr:r\r(rtr _download_svn _download_git _download_hgr2r url2pathnamerr3r_attempt_download)rr8r6rr)r=rQr r r!r's(        zPackageIndex._download_urlcCs||ddS)NT)rrr r r!rHszPackageIndex.scan_urlcCs6|||}d|ddvr.||||S|SdS)Nrrr)r!rr&_download_html)rr6rQrr r r!r7Ks zPackageIndex._attempt_downloadcCsnt|}|D]>}|r td|rF|t||||SqLq |t|td|dS)Nz ([^- ]+ - )?Revision \d+:zUnexpected HTML page found at ) r���ru���rS���rz���r���rP���r���r3��r���)r���r6���r���rQ���r���r*��r ���r ���r!���r8��R��s����   zPackageIndex._download_htmlc�����������������C���s��t�dt�|ddd�}g�}|�drd|v�rtj|\}}}}}} |s|drd|d d��v�r|d d��dd\}}t |\} } | rd | v�r| d d\} } d | �d | �g}n d | �g}| }|||||| f}tj |}|� d ||�t ddg|�d||g��|S�)Nz"SVN download support is deprecatedr0���r1���r���zsvn:@z//r,���rX���:z --username=z --password=z'Doing subversion checkout from %s to %sr0��checkout-q)warningsr��� UserWarningr5���r&���r(���r2���r���r3��� _splituser urlunparser��� subprocess check_call)r���r6���rQ���Zcredsr8���netlocr:���rU���qr���authhostuserZpwr7���r ���r ���r!���r3��a��s&����    zPackageIndex._download_svnc�����������������C���sp���t�j|�\}}}}}|ddd�}|ddd�}d�}d|v�rR|dd\}}t�j||||df}�|�|fS�)N+r1���r-���r0���r���r9��r���)r2���r���urlsplitr5���rsplit urlunsplit)r6��� pop_prefixr8���rC��r:���r<���r���revr ���r ���r!���_vcs_split_rev_from_urlw��s����z$PackageIndex._vcs_split_rev_from_urlc�����������������C���sr���|�ddd�}|�j|dd\}}|�d||�tddd ||g�|d�urn|�d |�tdd |d d |g�|S�) Nr0���r1���r���TrL��zDoing git clone from %s to %sr1��r ��--quietzChecking out %s-Cr;��r5���rN��r���rA��rB��r���r6���rQ���rM��r ���r ���r!���r4����s���� zPackageIndex._download_gitc�������������� ���C���sv���|�ddd�}|�j|dd\}}|�d||�tddd ||g�|d�urr|�d |�tdd |d d d|dg�|S�)Nr0���r1���r���TrO��zDoing hg clone from %s to %sZhgr ��rP��zUpdating to %sz--cwdZuprQ��z-rr<��rR��rS��r ���r ���r!���r5����s���� zPackageIndex._download_hgc�����������������G���s���t�j|g|R���d�S�rh���)r���r���r���r ���r ���r!���r�����s����zPackageIndex.debugc�����������������G���s���t�j|g|R���d�S�rh���)r���r���r���r ���r ���r!���r�����s����zPackageIndex.infoc�����������������G���s���t�j|g|R���d�S�rh���)r���r���r���r ���r ���r!���r�����s����zPackageIndex.warn)r���r���NT)F)F)F)N)N)FFFN)FF)N)F))r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r.���r��r ��r���r��r!��r��r���r���r���r7��r8��r3�� staticmethodrN��r4��r5��r���r���r��� __classcell__r ���r ���r���r!���r���,��sR�����  5      #�� L )$ #!   r���z!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?c�����������������C���s���|��d}t|S�)Nr���)rC���r���Zunescape)rB���Zwhatr ���r ���r!��� decode_entity��s���� rV��c�����������������C���s ���t�t|�S�)a�� Decode HTML entities in the given text. >>> htmldecode( ... 'https://../package_name-0.1.2.tar.gz' ... '?tokena=A&tokenb=B">package_name-0.1.2.tar.gz') 'https://../package_name-0.1.2.tar.gz?tokena=A&tokenb=B">package_name-0.1.2.tar.gz' ) entity_subrV��)textr ���r ���r!���rx�����s���� rx���c��������������������s����fdd}|S�)Nc��������������������s����fdd}|S�)Nc��������������� ������s>���t��}t��z�|�i�|W�t�|�S�t�|�0�d�S�rh���)r+��ZgetdefaulttimeoutZsetdefaulttimeout)ri���rj���Z old_timeout)rl���timeoutr ���r!���_socket_timeout��s����  z@socket_timeout.<locals>._socket_timeout.<locals>._socket_timeoutr ���)rl���rZ��rY��rk���r!���rZ����s����z'socket_timeout.<locals>._socket_timeoutr ���)rY��rZ��r ���r[��r!���socket_timeout��s���� r\��c�����������������C���s2���t�j|�}|�}t|}|�}|ddS�)a9�� Encode auth from a URL suitable for an HTTP header. >>> str(_encode_auth('username%3Apassword')) 'dXNlcm5hbWU6cGFzc3dvcmQ=' Long auth strings should not cause a newline to be inserted. >>> long_auth = 'username:' + 'password'*10 >>> chr(10) in str(_encode_auth(long_auth)) False  r���)r2���r���r4���encodebase64Z b64encoder���r2��)rE��Zauth_sZ auth_bytesZ encoded_bytesZencodedr ���r ���r!��� _encode_auth��s ����  r`��c�������������������@���s(���e�Zd�ZdZdd�Zdd�Zdd�ZdS�) Credentialz: A username/password pair. Use like a namedtuple. c�����������������C���s���||�_�||�_d�S�rh���usernamepassword)r���rc��rd��r ���r ���r!���r�����s����zCredential.__init__c�����������������c���s���|�j�V��|�jV��d�S�rh���rb��r���r ���r ���r!���__iter__��s����zCredential.__iter__c�����������������C���s ���dt�|��S�)Nz%(username)s:%(password)s)varsr���r ���r ���r!���__str__��s����zCredential.__str__N)r���r���r���r���r���re��rg��r ���r ���r ���r!���ra����s���ra��c�������������������@���s0���e�Zd�Zdd�Zedd�Zdd�Zdd�Zd S�) PyPIConfigc�����������������C���sN���t�g�dd}tj|�|�tjtjdd}tj |rJ|� |�dS�)z% Load from ~/.pypirc )rc��rd�� repositoryr���~z.pypircN) dictfromkeys configparserRawConfigParserr���rP���r:���r\��� expanduserr���r���)r���defaultsrcr ���r ���r!���r�����s ���� zPyPIConfig.__init__c��������������������s&����fdd���D�}tt�j|S�)Nc��������������������s ���g�|�]}��|d��r|qS�)ri��)r���ru���)rT���sectionr���r ���r!���r����s���z2PyPIConfig.creds_by_repository.<locals>.<listcomp>)Zsectionsrk��rs���_get_repo_cred)r���Zsections_with_repositoriesr ���r���r!���creds_by_repository��s���� zPyPIConfig.creds_by_repositoryc�����������������C���s6���|��|d�}|t|��|d�|��|d�fS�)Nri��rc��rd��)r���ru���ra��)r���rr��Zrepor ���r ���r!���rs�� ��s ����zPyPIConfig._get_repo_credc�����������������C���s*���|�j��D�]\}}||r |��S�q dS�)z If the URL indicated appears to be a repository defined in this config, return the credential for that repository. N)rt��itemsr(���)r���r6���ri��credr ���r ���r!���find_credential��s���� zPyPIConfig.find_credentialN)r���r���r���r���propertyrt��rs��rw��r ���r ���r ���r!���rh����s ���  rh��c�����������������C���s@��t�j|�}|\}}}}}}|dr2tjd|dv�rHt|\} } nd} | st� |�} | rt | } | j |�f} t j dg| R���| rdt| �} || ||||f} t�j| }t�j|}|d| �n t�j|�}|dt�||}| r<t�j|j\}}}}}}||kr<|| kr<||||||f} t�j| |_|S�) z4Open a urllib2 request, handling HTTP authenticationr:��znonnumeric port: '')r&��httpsNz*Authenticating as %s for %s (from .pypirc)zBasic Z Authorizationz User-Agent)r2���r���r3���r'���r&��r'��r(��r?��rh��rw��rt���rc��r���r���r`��r@��r���ZRequestZ add_header user_agentr6���)r6���r���parsedr8���rC��r:���paramsr<���r���rE��addressrv��r���r7���r���r���r��s2Zh2Zpath2Zparam2Zquery2Zfrag2r ���r ���r!���r%����s8����          r%��c�����������������C���s ���|��d\}}}�|r|nd|�fS�)zNsplituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.r9��N) rpartition)rF��rG��delimr ���r ���r!���r?��M��s����r?��c�����������������C���s���|�S�rh���r ���)r6���r ���r ���r!��� fix_sf_urlX��s����r��c�������������� ���C���s,��t�j|�\}}}}}}t�j|}tj|r<t�j|�S�| drtj |rg�}t |D�]x} tj || } | dkrt | d} | �} W�d���n1�s0����Y���qntj | r| d7�} |dj| d�q`d} | j|�d |d } d \}}n d \}}} d d i}t| }t�j|�||||S�)z7Read a local path, with special support for directoriesr,���z index.htmlrNz<a href="{name}">{name}</a>)r)���zB<html><head><title>{url}{files}r])r6files)ZOK)rzPath not foundz Not foundrz text/html)r2rr3rr6rPr:isfilerr'rrr\rrrformatioStringIOrr)r6r8r9r:Zparamr<rrQrrfilepathrbodyrstatusmessagerZ body_streamr r r!r$\s.    &    r$)N)N)N)N)r)ZrrAsysrPrSrrr+r_rr_r=rmrZ http.clientr& urllib.parser2Zurllib.requestZ urllib.error functoolsrrZ pkg_resourcesrrrrrr r r r r rrrrZ distutilsrZdistutils.errorsrfnmatchrZsetuptools.wheelrrrAIrvrrBrr5rK__all__Z_SOCKET_TIMEOUTZ_tmplr version_inforzr"rr>rr@rRrrgrnrprrrrrrWrVrxr\r`rarnrhrrr%r?rr$r r r r!s <          !  $   !  &/