Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

hµµhzãó—ddlZddlmZddlZddlZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZ	ddlZn
#e$rdZYnwxYwddlZddlZddlZddlZddlZ	ddlZn#e$rddlZYnwxYwddlZddlmZddlmZmZmZmZm 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/e
j0e1¦«Z2e
j3d¦«Z4e
j3d¦«Z5e
j3d	¦«Z6e
j3d
¦«Z7e
j3d¦«Z8e
j3d¦«Z9e
j3d
¦«Z:e
j3d¦«Z;d„Z<d„Z=d„Z>d„Z?d„Z@dkd„ZAd„ZBd„ZCd„ZDejEd„¦«ZFejEd„¦«ZGejEdld„¦«ZHGd„deI¦«ZJd„ZKGd„d eI¦«ZLd!„ZMGd"„d#eI¦«ZNe
j3d$e
jO¦«ZPd%„ZQdmd&„ZRdnd(„ZSd)„ZTd*„ZUd+„ZVd,„ZWe
j3d-e
jX¦«ZYe
j3d.¦«ZZdmd/„Z[e
j3d0¦«Z\d1„Z]d2„Z^d3„Z_d4Z`d5„Zad6„ZbGd7„d8eI¦«ZcGd9„d:eI¦«ZdGd;„d<eI¦«Zed=Zfdod>„Zgd?„Zhd@ZiGdA„dBeI¦«Zje
j3dC¦«Zke
j3dD¦«Zle
j3dE¦«ZmdF„ZdG„Zner:ddHlmoZpmqZqmrZrGdI„dJe$js¦«ZsGdK„dLep¦«ZoGdM„dNeoe&¦«ZtGdO„dPe%ju¦«ZuerGdQ„dRe%jv¦«ZvGdS„dTe%jw¦«ZwdU„ZxGdV„dWeI¦«ZyGdX„dYey¦«ZzGdZ„d[ey¦«Z{Gd\„d]e'¦«Z|Gd^„d_eI¦«Z}d`„Z~Gda„dbeI¦«Zdc„Z€dd„Zde„Z‚dfdgdhdiœZƒdj„Z„dS)péN)Údeque)Úiglobé)ÚDistlibException)Ústring_typesÚ	text_typeÚshutilÚ	raw_inputÚStringIOÚcache_from_sourceÚurlopenÚurljoinÚhttplibÚ	xmlrpclibÚHTTPHandlerÚBaseConfiguratorÚvalid_identÚ	ContainerÚconfigparserÚURLErrorÚZipFileÚfsdecodeÚunquoteÚurlparsez^([\w\.-]+)\s*z^([\w\.*+-]+)\s*z^(<=?|>=?|={2,3}|[~!]=)\s*z*^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*z^or\b\s*z	^and\b\s*z(\S+)\s*z(([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)cóF‡‡‡‡—d„Šˆˆfd„Šˆfd„Šˆfd„Љ|¦«S)ae
    Parse a marker string and return a dictionary containing a marker expression.

    The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in
    the expression grammar, or strings. A string contained in quotes is to be
    interpreted as a literal string, and a string not contained in quotes is a
    variable (such as os_name).
    có˜—t |¦«}|r8| ¦«d}|| ¦«d…}ns|st	d¦«‚|d}|dvrt	d|z¦«‚d |d¦«}|dd…}|g}|r²|d|krnÌ|d|kr | |¦«|dd…}nwt |¦«}|st	d|z¦«‚| | ¦«d¦«|| ¦«d…}|°²d |¦«}t	d|z¦«‚| |¦«d |¦«}|dd… 	¦«}||fS)	Nrzunexpected end of inputz'"zinvalid expression: %sÚrzerror in string literal: %szunterminated string: %s)
Ú
IDENTIFIERÚmatchÚgroupsÚendÚSyntaxErrorÚreplaceÚappendÚSTRING_CHUNKÚjoinÚlstrip)Ú	remainingÚmÚresultÚqÚoqÚpartsÚss       ú7/usr/local/lib/python3.11/site-packages/distlib/util.pyÚ
marker_varz parse_marker.<locals>.marker_var@sË€å×Ò˜YÑ'Ô'ˆØð	/Ø—X’X‘Z”Z ”]ˆFØ! !§%¢%¡'¤' ( (Ô+ˆI‰IØð	/ÝÐ7Ñ8Ô8Ð8à˜!”ˆAؘˆ~ˆ~Ý!Ð":¸YÑ"FÑGÔGÐGØ—’˜q "Ñ%Ô%ˆBØ! ! " "œ
ˆIؐCˆEØð
Aà˜Q”< 1Ò$Ð$ØØ˜q”\ RÒ'Ð'Ø—L’L Ñ$Ô$Ð$Ø )¨!¨"¨"¤
IIå$×*Ò*¨9Ñ5Ô5AØðUÝ)Ð*GÈ)Ñ*SÑTÔTÐTØ—L’L §¢¡¤¨A¤Ñ/Ô/Ð/Ø )¨!¯%ª%©'¬'¨(¨(Ô 3Iðð
Að—G’G˜E‘N”NÝ!Ð";¸aÑ"?Ñ@Ô@Ð@ØLŠL˜‰OŒOˆOØ—W’W˜U‘^”^ˆFØ! ! " "œ
×,Ò,Ñ.Ô.ˆIؐyÐ Ð ócóä•—|ro|ddkrc‰|dd… ¦«¦«\}}|ddkrtd|z¦«‚|dd… ¦«}n{‰|¦«\}}|rit |¦«}|snL| ¦«d}|| ¦«d…}‰|¦«\}}|||dœ}|°i|}||fS)Nrú(rú)úunterminated parenthesis: %s©ÚopÚlhsÚrhs)r'r"Ú	MARKER_OPrr r!)r(r*r8r)r7r9Úmarkerr0s      €€r/Úmarker_exprz!parse_marker.<locals>.marker_exprdsø€Øð	˜ 1œ¨Ò,Ð,Ø &  y°°°¤}×';Ò';Ñ'=Ô'=Ñ >Ô >ÑˆFIؘŒ|˜sÒ"Ð"Ý!Ð"@À9Ñ"LÑMÔMÐMØ! ! " "œ
×,Ò,Ñ.Ô.ˆIˆIà'˜Z¨	Ñ2Ô2‰NˆCØð
9Ý—O’O IÑ.Ô.ØðØØ—X’X‘Z”Z ”]Ø% a§e¢e¡g¤g h hÔ/	Ø!+ ¨IÑ!6Ô!6‘Yب°CÐ8Ð8ðð
9ðˆFؐyÐ Ð r1cóʕ—‰|¦«\}}|rOt |¦«}|sn2|| ¦«d…}‰|¦«\}}d||dœ}|°O||fS)NÚandr6)ÚANDrr!)r(r8r)r9r<s    €r/Ú
marker_andz parse_marker.<locals>.marker_andwsˆø€Ø$˜ YÑ/Ô/‰ˆˆYØð	8Ý—	’	˜)Ñ$Ô$ˆAØð
ØØ! !§%¢%¡'¤' ( (Ô+ˆIØ(˜[¨Ñ3Ô3‰NˆCØ s°3Ð7Ð7ˆCð
ð	8ðIˆ~Ðr1cóʕ—‰|¦«\}}|rOt |¦«}|sn2|| ¦«d…}‰|¦«\}}d||dœ}|°O||fS)NÚorr6)ÚORrr!)r(r8r)r9r@s    €r/r;zparse_marker.<locals>.marker‚sˆø€Ø#˜ IÑ.Ô.‰ˆˆYØð	7Ý—’˜Ñ#Ô#ˆAØð
ØØ! !§%¢%¡'¤' ( (Ô+ˆIØ'˜Z¨	Ñ2Ô2‰NˆCØ c°#Ð6Ð6ˆCð
ð	7ðIˆ~Ðr1©)Ú
marker_stringr;r@r<r0s @@@@r/Úparse_markerrF6sxøøøø€ð"!ð"!ð"!ðH!ð!ð!ð!ð!ð!ð&	ð	ð	ð	ð	ð	ð	ð	ð	ð	ðˆ6-Ñ Ô Ð r1cóÖ—| ¦«}|r| d¦«rdSt |¦«}|st	d|z¦«‚| ¦«d}|| ¦«d…}dx}x}x}}|r"|ddkr| dd¦«}|dkrt	d|z¦«‚|d|…}	||dzd… ¦«}g}|	r¶t |	¦«}|st	d	|	z¦«‚| 	| ¦«d¦«|	| ¦«d…}	|	sn<|	dd
krt	d|	z¦«‚|	dd… ¦«}	|	°¶|sd}|rý|ddkrÃ|dd… ¦«}t |¦«}|st	d
|z¦«‚| ¦«d}t|¦«}
|
jr|
j
st	d|z¦«‚|| ¦«d… ¦«}n.d„}|ddkr||¦«\}}n| dd¦«}|dkrt	d|z¦«‚|d|…}	||dzd… ¦«}t |	¦«r||	¦«\}}nt |	¦«}|st	d|	z¦«‚| ¦«d}
|	| ¦«d… ¦«}	|	rt	d|	z¦«‚d|
fg}|rL|ddkrt	d|z¦«‚|dd… ¦«}t!|¦«\}}|r|ddkrt	d|z¦«‚|s|}n$|›dd d„|D¦«¦«›}t%||||||¬¦«S)zŠ
    Parse a requirement passed in as a string. Return a Container
    whose attributes contain the various parts of the requirement.
    ú#Nzname expected: %srú[ú]rzunterminated extra: %szmalformed extra: %sú,zcomma expected in extras: %sú@zinvalid URI: %szInvalid URL: %scót—t |¦«}d}|rg}	| ¦«d}|| ¦«d…}t |¦«}|std|z¦«‚| ¦«d}| ||f¦«|| ¦«d…}|r|ddkrnO|dd… ¦«}|sn0t |¦«}|std|z¦«‚Œ|sd}||fS)z|
                Return a list of operator, version tuples if any are
                specified, else None.
                NTrzinvalid version: %srKrúinvalid constraint: %s)Ú
COMPARE_OPrr r!ÚVERSION_IDENTIFIERr"r$r')Ú
ver_remainingr)Úversionsr7Úvs     r/Úget_versionsz'parse_requirement.<locals>.get_versionsÄsT€õ
×$Ò$ ]Ñ3Ô3ØØñ(Ø!HðXØŸXšX™ZœZ¨œ]˜Ø(5°a·e²e±g´g°h°hÔ(?˜
Ý.×4Ò4°]ÑCÔC˜Ø ðUÝ"-Ð.CÀmÑ.SÑ"TÔ"TÐTØŸHšH™JœJ qœM˜Ø Ÿš¨¨Q¨Ñ0Ô0Ð0Ø(5°a·e²e±g´g°h°hÔ(?˜
Ø,ð"°
¸aÔ0@ÀCÒ0GÐ0GØ!Ø(5°a°b°bÔ(9×(@Ò(@Ñ(BÔ(B˜
ð -ð"Ø!Ý&×,Ò,¨]Ñ;Ô;˜Ø ðXÝ"-Ð.FÈÑ.VÑ"WÔ"WÐWñ%Xð&$ð(Ø#'˜Ø Ð.Ð.r1r3r4r5rNz~=ú;zinvalid requirement: %szunexpected trailing data: %sú ú, có—g|]}d|z‘ŒS)z%s %srD)Ú.0Úcons  r/ú
<listcomp>z%parse_requirement.<locals>.<listcomp>s€Ð,OÐ,OÐ,O¸s¨W°s©]Ð,OÐ,OÐ,Or1)ÚnameÚextrasÚconstraintsr;ÚurlÚrequirement)ÚstripÚ
startswithrrr"r r!Úfindr'r$Ú	NON_SPACErÚschemeÚnetlocrOrPrFr&r)Úreqr(r)Údistnamer]Ú	mark_exprrRÚuriÚir.ÚtrTÚ_rSÚrss               r/Úparse_requirementrosÁ€ð
—	’	‘”€IØð˜	×,Ò,¨SÑ1Ô1ð؈tÝ×Ò˜Ñ#Ô#€AØð;ÝÐ-°	Ñ9Ñ:Ô:Ð:؏xŠx‰zŒz˜!Œ}€Hؘ!Ÿ%š%™'œ'˜(˜(Ô#€IØ*.Ð.€FÐ.ˆYÐ.˜ CØñY˜q”\ SÒ(Ñ(ØNŠN˜3 Ñ"Ô"ˆØˆqŠ5ˆ5ÝÐ6¸ÑBÑCÔCÐCØa˜cŒNˆØ˜a !™e˜f˜fÔ%×,Ò,Ñ.Ô.ˆ	؈Øð
	Ý× Ò  Ñ#Ô#ˆAØð
=Ý!Ð"7¸!Ñ";Ñ<Ô<Ð<ØMŠM˜!Ÿ(š(™*œ* Qœ-Ñ(Ô(Ð(ؐ!—%’%‘'”'((”ˆAØð
ØØŒtsŠ{ˆ{Ý!Ð"@À1Ñ"DÑEÔEÐEؐ!""”—’‘”ˆAðð
	ðð	؈FØñG+ؐQŒ<˜3ÒÐà! ! " "œ
×,Ò,Ñ.Ô.ˆIÝ—’ 	Ñ*Ô*ˆAØð
AÝ!Ð"3°iÑ"?Ñ@Ô@Ð@Ø—(’(‘*”*˜Q”-ˆCݘ‘
”
ˆAð
”Hð
; ¤ð
;Ý!Ð"3°cÑ"9Ñ:Ô:Ð:Ø! !§%¢%¡'¤' ( (Ô+×2Ò2Ñ4Ô4ˆI‰Ið
/ð
/ð
/ð@˜Œ|˜sÒ"Ð"Ø&2 l°9Ñ&=Ô&=Ñ#˜)™)à—N’N 3¨Ñ*Ô*Øq’55Ý%Ð&DÀyÑ&PÑQÔQÐQؘa ˜c”NØ% a¨!¡e f fÔ-×4Ò4Ñ6Ô6	õ×#Ò# AÑ&Ô&ð
+Ø". ,¨q¡/¤/‘KH˜a˜aå*×0Ò0°Ñ3Ô3AØðHÝ)Ð*BÀQÑ*FÑGÔGÐGØŸš™
œ
 1œ
Aؘ!Ÿ%š%™'œ'˜(˜(œ×*Ò*Ñ,Ô,AØðHÝ)Ð*BÀQÑ*FÑGÔGÐGØ!% q 	˜{Hàð7ؐQŒ<˜3ÒÐÝÐ7¸)ÑCÑDÔDÐDؘa˜b˜b”M×(Ò(Ñ*Ô*ˆ	å+¨IÑ6Ô6ш	9àðFY˜q”\ SÒ(Ð(ÝÐ8¸9ÑDÑEÔEÐEàðRØ
ˆˆà ˜˜ $§)¢)Ð,OÐ,OÀhÐ,OÑ,OÔ,OÑ"PÔ"PÐ"PÐ
QˆÝ˜(¨6¸xÐPYÐ_bÐprÐsÑsÔsÐsr1cóÒ—d„}i}|D]Þ\}}}tj ||¦«}t|¦«D]¨}tj ||¦«}	t|	¦«D]v}
|||
¦«}|€| |d¦«Œ'|||
¦«}| tjjd¦« d¦«}
|
dz|z||<ŒwŒ©Œß|S)z%Find destinations for resources filescó—| tjjd¦«}| tjjd¦«}| |¦«sJ‚|t|¦«d… d¦«S©Nú/)r#ÚosÚpathÚseprbÚlenr')Úrootrus  r/Úget_rel_pathz)get_resources_dests.<locals>.get_rel_pathsk€à|Š|BœGœK¨Ñ-Ô-ˆØ|Š|BœGœK¨Ñ-Ô-ˆØŠ˜tÑ$Ô$Ð$Ð$Ð$Ø•C˜‘I”IJJÔ×&Ò& sÑ+Ô+Ð+r1Nrs)rtrur&rÚpopr#rvÚrstrip)Úresources_rootÚrulesryÚdestinationsÚbaseÚsuffixÚdestÚprefixÚabs_baseÚabs_globÚabs_pathÚ
resource_fileÚrel_pathÚrel_dests              r/Úget_resources_destsr‰s€ð,ð,ð,ð€LØ#ðLðLшˆfdÝ”—’˜n¨dÑ3Ô3ˆÝ˜f™
œ
ð		Lð		LˆHÝ”w—|’| H¨fÑ5Ô5ˆHÝ! (™OœOð
Lð
LØ , ¨^¸XÑ FÔ F
ؐ<Ø ×$Ò$ ]°DÑ9Ô9Ð9Ð9à+˜|¨H°hÑ?Ô?HØ#Ÿ|š|­B¬G¬K¸Ñ=Ô=×DÒDÀSÑIÔIHØ2:¸S±.À8Ñ2KL Ñ/Ð/ð
Lð		LðÐr1có’—ttd¦«rd}n.tjttdtj¦«k}|S)NÚreal_prefixTÚbase_prefix)ÚhasattrÚsysr‚Úgetattr©r*s r/Úin_venvr‘&s=€ÝsMÑ"Ô"ðGàˆˆõ”w¥s¨M½3¼:ÑFÔFÒFˆØ€Mr1cóf—tj}t|t¦«st	|¦«}|S©N)rŽÚ
executableÚ
isinstancerrrs r/Úget_executabler–0s/€õŒ^€FݐfiÑ(Ô(ð"ݘ&Ñ!Ô!ˆØ€Mr1có’—|}	t|¦«}|}|s|r|}|r)|d ¦«}||vrn|rd|||fz}ŒC|S)NTrz	%c: %s
%s)r
Úlower)ÚpromptÚ
allowed_charsÚerror_promptÚdefaultÚpr.Úcs       r/ÚproceedrŸBs|€Ø€Að
=Ýa‰LŒLˆØˆØð	Wð	؈AØð	=ؐ!”—
’
‘”ˆAؐMÐ!Ð!ØØð
=Ø  A |°VÐ#<Ñ<ð
=ð
€Hr1có„—t|t¦«r| ¦«}i}|D]}||vr||||<Œ|Sr“)r•rÚsplit)ÚdÚkeysr*Úkeys    r/Úextract_by_keyr¥RsQ€Ý$Ñ%Ô%ð؏zŠz‰|Œ|ˆØ
€FØð!ð!ˆØ!ˆ8ˆ8ؘCœ&ˆF3‰KøØ€Mr1có¦—tjddkrtjd¦«|¦«}| ¦«}t|¦«}	t
j|¦«}|ddd}| ¦«D]>\}}| ¦«D]$\}}|›d|›}t|¦«}	|	€J‚|	||<Œ%Œ?|S#t$r| dd¦«YnwxYwd„}
tj
¦«}	|
||¦«nX#tj$rF| ¦«t!j|¦«}t|¦«}|
||¦«YnwxYwi}| ¦«D]C}ix||<}| |¦«D]$\}
}|
›d|›}t|¦«}	|	€J‚|	||
<Œ%ŒD|S)	Nréúutf-8Ú
extensionszpython.exportsÚexportsú = có~—t|d¦«r| |¦«dS| |¦«dS)NÚ	read_file)rr­Úreadfp)ÚcpÚstreams  r/Úread_streamz!read_exports.<locals>.read_streampsD€Ý2{Ñ#Ô#ð	ØLŠL˜Ñ Ô Ð Ð Ð àIŠIfÑÔÐÐÐr1)rŽÚversion_infoÚcodecsÚ	getreaderÚreadrÚjsonÚloadÚitemsÚget_export_entryÚ	ExceptionÚseekrÚConfigParserÚMissingSectionHeaderErrorÚcloseÚtextwrapÚdedentÚsections)r°ÚdataÚjdatar*ÚgroupÚentriesÚkrSr.Úentryr±r¯r¤r\Úvalues               r/Úread_exportsrÉ\s:€Ý
Ô˜Ô˜aÒÐà*•Ô! 'Ñ*Ô*¨6Ñ2Ô2ˆà;Š;‰=Œ=€DÝ
d‰^Œ^€FðÝ”	˜&Ñ!Ô!ˆØ|Ô$Ð%5Ô6°yÔAˆØ$Ÿlšl™nœnð	#ð	#‰NˆE7ØŸ
š
™œð
#ð
#‘1Ø!"   A AÐ&Ý(¨Ñ+Ô+ØÐ(Ð(Ð(Ø"˜‘

ð	
#ð
ˆ
øÝðððØŠAqÑÔÐÐÐðøøøðððõ
Ô	"Ñ	$Ô	$€Bð ØˆB˜ÑÔÐÐøÝÔ1ð ð ð ØŠ‰ŒˆÝŒ˜tÑ$Ô$ˆÝ˜$‘”ˆØˆB˜ÑÔÐÐÐð	 øøøð€F؏{Š{‰}Œ}ð"ð"ˆØ "Ð"ˆˆs‰gØŸ8š8 C™=œ=ð	"ð	"‰KˆD%Ø!˜T˜T 5 5Ð)ˆAÝ$ QÑ'Ô'ˆEØÐ$Ð$Ð$à!ˆGD‰MˆMð	"ð€Ms&ÁA<Cà C8Ã7C8ÄDÄAE4Å3E4có—tjddkrtjd¦«|¦«}t	j¦«}| ¦«D]”\}}| |¦«| ¦«D]e}|j	€|j
}n|j
›d|j	›}|jr |›dd |j¦«›d}| 
||j|¦«ŒfŒ•| |¦«dS)Nrr§r¨ú:z [rWrJ)rŽr²r³Ú	getwriterrr¼r¸Úadd_sectionÚvaluesr€r‚Úflagsr&Úsetr\Úwrite)rªr°r¯rÆrSrÇr.s       r/Ú
write_exportsrҋs€Ý
Ô˜Ô˜aÒÐà*•Ô! 'Ñ*Ô*¨6Ñ2Ô2ˆÝ	Ô	"Ñ	$Ô	$€BØ—
’
‘”ð
%ð
%‰ˆˆ1à
ŠqÑÔÐØ—X’X‘Z”Zð	%ð	%ˆEØŒ|Ð#Ø”Là$œ|˜|˜|¨U¬\¨\Ð:ØŒ{ð
<Ø!"   D§I¢I¨e¬kÑ$:Ô$:Ð$:Ð$:Ð;ØFŠF1e”j !Ñ$Ô$Ð$Ð$ð	%ð‡H‚HˆVÑÔÐÐÐr1c#ó”K—tj¦«}	|V—tj|¦«dS#tj|¦«wxYwr“)ÚtempfileÚmkdtempr	Úrmtree)Útds r/Útempdirr؞sNèè€å	Ô	Ñ	Ô	€BðØˆˆˆåŒ
bÑÔÐÐÐøŒ
bÑÔÐÐøøøs	—1±Ac#ó¼K—tj¦«}	tj|¦«dV—tj|¦«dS#tj|¦«wxYwr“)rtÚgetcwdÚchdir)r¢Úcwds  r/rÛrÛ§sOèè€å
Œ)‰+Œ+€CðÝ
Œ‰ŒˆØ
ˆˆˆå
Œ‰
Œ
ˆ
ˆ
ˆ
øŒ‰
Œ
ˆ
ˆ
øøøó—AÁAéc#ó¼K—tj¦«}	tj|¦«dV—tj|¦«dS#tj|¦«wxYwr“)ÚsocketÚgetdefaulttimeoutÚsetdefaulttimeout)ÚsecondsÚctos  r/Úsocket_timeoutrå±saèè€å
Ô
"Ñ
$Ô
$€Cð&ÝÔ  Ñ)Ô)Ð)Ø
ˆˆˆåÔ  Ñ%Ô%Ð%Ð%Ð%øÔ  Ñ%Ô%Ð%Ð%øøørÝcó—eZdZd„Zdd„ZdS)Úcached_propertycó—||_dSr“)Úfunc)Úselfrés  r/Ú__init__zcached_property.__init__½s
€ØˆŒ	ˆ	ˆ	r1Ncó„—|€|S| |¦«}t ||jj|¦«|Sr“)réÚobjectÚ__setattr__Ú__name__)rêÚobjÚclsrÈs    r/Ú__get__zcached_property.__get__Âs=€Øˆ;؈KØ—	’	˜#‘”ˆÝ×Ò˜3 ¤	Ô 2°EÑ:Ô:Ð:àˆr1r“)rïÚ
__module__Ú__qualname__rëròrDr1r/rçrç»s7€€€€€ðððð
ðððððr1rçcóˆ—tjdkr|S|s|S|ddkrtd|z¦«‚|ddkrtd|z¦«‚| d¦«}tj|vr-| tj¦«tj|v°-|stjStjj|ŽS)aÐReturn 'pathname' as a name that will work on the native filesystem.

    The path is split on '/' and put back together again using the current
    directory separator.  Needed because filenames in the setup script are
    always supplied in Unix style, and have to be converted to the local
    convention before we can actually use them in the filesystem.  Raises
    ValueError on non-Unix-ish systems if 'pathname' either starts or
    ends with a slash.
    rsrzpath '%s' cannot be absoluteéÿÿÿÿzpath '%s' cannot end with '/')rtrvÚ
ValueErrorr¡ÚcurdirÚremoverur&)ÚpathnameÚpathss  r/Úconvert_pathrüËsǀõ
„v‚}€}؈Øð؈ؐ„{cÒÐÝÐ7¸(ÑBÑCÔCÐCؐ„|sÒÐÝÐ8¸8ÑCÑDÔDÐDàNŠN˜3ÑÔ€EÝ
Œ)uÐ
Ð
Ø
Š•R”YÑÔÐõ
Œ)uÐ
Ð
àðÝŒyÐÝ
Œ7Œ<˜ÐÐr1cóv—eZdZdd„Zd„Zd„Zd„Zdd„Zdd	„Zd
„Z	d„Z
d„Zd
„Zd„Z
dd„Zd„Zd„Zd„Zd„ZdS)ÚFileOperatorFcób—||_t¦«|_| ¦«dSr“)Údry_runrÐÚensuredÚ_init_record)rêrs  r/rëzFileOperator.__init__ès,€ØˆŒÝ‘u”uˆŒØ×ÒÑÔÐÐÐr1có`—d|_t¦«|_t¦«|_dS©NF)ÚrecordrÐÚ
files_writtenÚdirs_created©rês r/rzFileOperator._init_recordís'€ØˆŒÝ ™UœUˆÔÝ™EœEˆÔÐÐr1cóL—|jr|j |¦«dSdSr“)rrÚadd)rêrus  r/Úrecord_as_writtenzFileOperator.record_as_writtenòs3€ØŒ;ð	)ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(ð	)ð	)r1cóH—tj |¦«s/tdtj |¦«z¦«‚tj |¦«sdStj|¦«jtj|¦«jkS)aÎTell if the target is newer than the source.

        Returns true if 'source' exists and is more recently modified than
        'target', or if 'source' exists and 'target' doesn't.

        Returns false if both exist and 'target' is the same age or younger
        than 'source'. Raise PackagingFileError if 'source' does not exist.

        Note that this test is not very accurate: files created in the same
        second will have the same "age".
        zfile '%r' does not existT)rtruÚexistsrÚabspathÚstatÚst_mtime)rêÚsourceÚtargets   r/ÚnewerzFileOperator.newerösz€õŒw~Š~˜fÑ%Ô%ð	YÝ"Ð#=ÅÄÇÂÐPVÑ@WÔ@WÑ#WÑXÔXÐXÝŒw~Š~˜fÑ%Ô%ð	ؐ4åŒwv‰ŒÔ'­"¬'°&©/¬/Ô*BÒBÐBr1Tcó—| tj |¦«¦«t d||¦«|js•d}|rhtj |¦«rd|z}nCtj |¦«r$tj 	|¦«sd|z}|rt|dz¦«‚tj||¦«| 
|¦«dS)z8Copy a file respecting dry-run and force flags.
        zCopying %s to %sNz%s is a symlinkz%s is a non-regular filez which would be overwritten)Ú
ensure_dirrtruÚdirnameÚloggerÚinforÚislinkr
Úisfiler÷r	Úcopyfiler)rêÚinfileÚoutfileÚcheckÚmsgs     r/Ú	copy_filezFileOperator.copy_file	sò€ð	
ŠœŸš¨Ñ0Ô0Ñ1Ô1Ð1ݏŠÐ&¨°Ñ8Ô8Ð8ØŒ|ð		-؈CØð
?Ý”7—>’> 'Ñ*Ô*ð?Ø+¨gÑ5CCÝ”W—^’^ GÑ,Ô,ð?µR´W·^²^ÀGÑ5LÔ5Lð?Ø4°wÑ>CØð
FÝ  Ð'DÑ!DÑEÔEÐEÝŒO˜F GÑ,Ô,Ð,Ø×Ò˜wÑ'Ô'Ð'Ð'Ð'r1Ncóø—tj |¦«rJ‚| tj |¦«¦«t
 d||¦«|jsn|€t|d¦«}ntj|d|¬¦«}	tj||¦«| ¦«n#| ¦«wxYw| 
|¦«dS)NzCopying stream %s to %sÚwbÚw©Úencoding)rtruÚisdirrrrrrÚopenr³r	Úcopyfileobjr¾r)rêÚinstreamrr%Ú	outstreams     r/Úcopy_streamzFileOperator.copy_streamså€Ý”7—=’= Ñ)Ô)Ð)Ð)Ð)ØŠœŸš¨Ñ0Ô0Ñ1Ô1Ð1ݏŠÐ-¨x¸ÑAÔAÐAØŒ|ð	"ØÐÝ  ¨$Ñ/Ô/		å"œK¨°¸xÐHÑHÔH	ð
"ÝÔ" 8¨YÑ7Ô7Ð7à—’Ñ!Ô!Ð!Ð!ø	—’Ñ!Ô!Ð!Ð!øøøØ×Ò˜wÑ'Ô'Ð'Ð'Ð'sÂ"CÃC"có‚—| tj |¦«¦«|jsptj |¦«rtj|¦«t|d¦«5}| |¦«ddd¦«n#1swxYwY| 	|¦«dS)Nr")
rrtrurrr
rùr'rÑr)rêrurÂÚfs    r/Úwrite_binary_filezFileOperator.write_binary_file)sڀØŠœŸš¨Ñ-Ô-Ñ.Ô.Ð.ØŒ|ð	ÝŒw~Š~˜dÑ#Ô#ð
 Ý”	˜$‘”Ýd˜DÑ!Ô!ð
 QØ—’˜‘
”

ð
ð
ð
ñ
ô
ð
ð
ð
ð
ð
ð
øøøð
ð
ð
ð
à×Ò˜tÑ$Ô$Ð$Ð$Ð$sÁ=BÂB#Â&B#cóX—| || |¦«¦«dSr“)r.Úencode)rêrurÂr%s    r/Úwrite_text_filezFileOperator.write_text_file2s*€Ø×Ò˜t T§[¢[°Ñ%:Ô%:Ñ;Ô;Ð;Ð;Ð;r1có^—tjdks tjdkrˆtjdkrz|D]y}|jrt d|¦«Œ%tj|¦«j|z|z}t d||¦«tj||¦«ŒvdSdSdS)NÚposixÚjavazchanging mode of %szchanging mode of %s to %o)	rtr\Ú_namerrrrÚst_modeÚchmod)rêÚbitsÚmaskÚfilesr-Úmodes      r/Úset_modezFileOperator.set_mode5s¸€Ý
Œ7gÒÐ¥"¤'¨VÒ"3Ð"3½¼ÀGÒ8KÐ8Kðð
&ð
&Ø”<ð&Ý—K’KÐ 5°qÑ9Ô9Ð9Ð9åœG A™JœJÔ.°Ñ5¸Ñ=DÝ—K’KÐ ;¸QÀÑEÔEÐEÝ”H˜Q Ñ%Ô%Ð%Ð%ð#4Ð"3Ð8KÐ8Kð
&ð
&r1có0—| dd|¦«S)Nimiÿ)r<)r.r-s  r/ú<lambda>zFileOperator.<lambda>As€ q§z¢z°%¸ÀÑ'CÔ'C€r1cóô—tj |¦«}||jvrËtj |¦«s®|j |¦«tj |¦«\}}| |¦«t 	d|z¦«|j
stj|¦«|jr |j
 |¦«dSdSdSdS)NzCreating %s)rtrurrr
r
r¡rrrrÚmkdirrr)rêrur¢r-s    r/rzFileOperator.ensure_dirCsá€ÝŒwŠ˜tÑ$Ô$ˆØt”|Ð#Ð#­B¬G¯NªN¸4Ñ,@Ô,@Ð#ØŒL×Ò˜TÑ"Ô"Ð"Ý”7—=’= Ñ&Ô&‰DˆAˆqØOŠO˜AÑÔÐÝKŠK˜
¨Ñ,Ñ-Ô-Ð-Ø”<ð
Ý”˜‘”ØŒ{ð
,ØÔ!×%Ò% dÑ+Ô+Ð+Ð+Ð+ð$Ð#Ð#Ð#ð
,ð
,r1cóê—t||¦«}t d||¦«|js©|s| ||¦«r3|sd}n.| |¦«sJ‚|t
|¦«d…}i}|rEttd¦«r0t|tj
¦«stj
j}||d<tj|||dfi|¤Ž| 
|¦«|S)NzByte-compiling %s to %sÚPycInvalidationModeÚinvalidation_modeT)rrrrrrbrwrÚ
py_compiler•rBÚCHECKED_HASHÚcompiler)	rêruÚoptimizeÚforcer‚Úhashed_invalidationÚdpathÚdiagpathÚcompile_kwargss	         r/Úbyte_compilezFileOperator.byte_compileOs€Ý! $¨H¨Ñ5Ô5ˆÝŠÐ-¨t°UÑ;Ô;Ð;ØŒ|ð	NØð
2˜Ÿ
š
 4¨Ñ/Ô/ð
2Øð2Ø#HHàŸ?š?¨6Ñ2Ô2Ð2Ð2Ð2Ø#¥C¨¡K¤K L LÔ1H؈NØ"ð
J¥w­zÐ;PÑ'QÔ'Qð
JÝ!Ð"5µzÔ7UÑVÔVðVÝ*4Ô*HÔ*UÐ'Ø6IÐ2Ñ3ÝÔ˜t U¨H°dÐMÐM¸nÐMÐMÐMØ×Ò˜uÑ%Ô%Ð%؈r1có¤—tj |¦«r+tj |¦«r…tj |¦«sft
 d|¦«|jstj	|¦«|j
r%||jvr|j |¦«dSdSdStj |¦«rd}nd}t
 d||¦«|jstj|¦«|j
r'||j
vr |j
 |¦«dSdSdSdS)NzRemoving directory tree at %sÚlinkÚfilezRemoving %s %s)rtrur
r&rrÚdebugrr	rÖrrrùr)rêrur.s   r/Úensure_removedzFileOperator.ensure_removedbsX€Ý
Œ7>Š>˜$ÑÔñ	8ÝŒw}Š}˜TÑ"Ô"ð
8­2¬7¯>ª>¸$Ñ+?Ô+?ð
8Ý—’Ð<¸dÑCÔCÐCØ”|ð(Ý”M $Ñ'Ô'Ð'Ø”;ð7ؘtÔ0Ð0Ð0ØÔ)×0Ò0°Ñ6Ô6Ð6Ð6Ð6ð7ð7Ø0Ð0õ”7—>’> $Ñ'Ô'ðؐAAàAÝ—’Ð-¨q°$Ñ7Ô7Ð7Ø”|ð$Ý”I˜d‘O”OOØ”;ð8ؘtÔ1Ð1Ð1ØÔ*×1Ò1°$Ñ7Ô7Ð7Ð7Ð7ð%	8ð	8ð 8ð8Ø1Ð1r1cóà—d}|sitj |¦«r tj|tj¦«}n*tj |¦«}||krn|}|¯i|Sr)rtrur
ÚaccessÚW_OKr)rêrur*Úparents    r/Úis_writablezFileOperator.is_writablewsp€ØˆØð	ÝŒw~Š~˜dÑ#Ô#ð
Ýœ 4­¬Ñ1Ô1ØÝ”W—_’_ TÑ*Ô*ˆFؘŠ~ˆ~ØØˆDðð	ðˆ
r1có\—|jsJ‚|j|jf}| ¦«|S)zV
        Commit recorded changes, turn off recording, return
        changes.
        )rrrr)rêr*s  r/ÚcommitzFileOperator.commitƒs8€ð
Œ{ÐЈ{ØÔ# TÔ%6Ð6ˆØ×ÒÑÔÐØˆ
r1cóà—|jsÒt|j¦«D]5}tj |¦«rtj|¦«Œ6t|jd¬¦«}|D]o}tj	|¦«}|rC|dgksJ‚tj 
||d¦«}tj|¦«tj|¦«Œp| ¦«dS)NT)ÚreverseÚ__pycache__r)
rÚlistrrtrur
rùÚsortedrÚlistdirr&Úrmdirr)rêr-Údirsr¢ÚflistÚsds      r/ÚrollbackzFileOperator.rollbacks倨Œ|ð	ݘ$Ô,Ñ-Ô-ð
!ð
!Ý”7—>’> !Ñ$Ô$ð!Ý”I˜a‘L”LLøõ˜$Ô+°TÐ:Ñ:Ô:ˆDØð
ð
Ýœ
 1™
œ
Øð!Ø  ] OÒ3Ð3Ð3Ð3ÝœŸš a¨¨q¬Ñ2Ô2BÝ”H˜R‘L”LLÝ”˜‘”Ø×ÒÑÔÐÐÐr1©F©Tr“)FFNF)rïrórôrërrrr r+r.r1r<Úset_executable_moderrMrRrWrYrdrDr1r/rþrþæs€€€€€ððððð
"ð"ð"ð
)ð)ð)ðCðCðCð&(ð(ð(ð(ð"
(ð
(ð
(ð
(ð%ð%ð%ð<ð<ð<ð
&ð
&ð
&ðDÐCÐð
,ð
,ð
,ððððð&8ð8ð8ð*
ð
ð
ððððððððr1rþcó
—|tjvrtj|}nt|¦«}|€|}nM| d¦«}t	|| d¦«¦«}|D]}t	||¦«}Œ|S)Nú.r)rŽÚmodulesÚ
__import__r¡rrz)Úmodule_nameÚdotted_pathÚmodr*r-rs      r/Úresolvero sˆ€Ø•c”kÐ!Ð!ÝŒk˜+Ô&ˆˆå˜Ñ%Ô%ˆØÐ؈ˆà×!Ò! #Ñ&Ô&ˆÝ˜˜eŸiši¨™lœlÑ+Ô+ˆØð	(ð	(ˆAݘV QÑ'Ô'ˆFˆFØ€Mr1cóD—eZdZd„Zed„¦«Zd„Zd„Zej	Z	dS)ÚExportEntrycó>—||_||_||_||_dSr“©r\r‚r€rÏ)rêr\r‚r€rÏs     r/rëzExportEntry.__init__±s"€ØˆŒ	؈ŒØˆŒØˆŒ
ˆ
ˆ
r1có6—t|j|j¦«Sr“)ror‚r€rs r/rÈzExportEntry.value·s€åt”{ D¤KÑ0Ô0Ð0r1c	óH—d|j›d|j›d|j›d|j›d	S)Nz
<ExportEntry r«rËrVú>rsrs r/Ú__repr__zExportEntry.__repr__»s/€€Ø04´	°	°	¸4¼;¸;¸;ÈÌÈÈÐUYÔU_ÐU_ÐU_Ð`Ð`r1có¶—t|t¦«sd}n@|j|jko/|j|jko|j|jko|j|jk}|Sr)r•rqr\r‚r€rÏ)rêÚotherr*s   r/Ú__eq__zExportEntry.__eq__¾sf€Ý˜%¥Ñ-Ô-ð	1؈FˆFà”i 5¤:Ò-ð0°$´+ÀÄÒ2Mð0ÐRVÔR]ÐafÔamÒRmð0Ø”j E¤KÒ/ð
àˆ
r1N)
rïrórôrërçrÈrwrzríÚ__hash__rDr1r/rqrq¯sb€€€€€ððððð1ð1ñ„_ð1ðaðaðaððððŒ€H€H€Hr1rqz·(?P<name>([^\[]\S*))
                      \s*=\s*(?P<callable>(\w+)([:\.]\w+)*)
                      \s*(\[\s*(?P<flags>[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])?
                      có—t |¦«}|sd}d|vsd|vrtd|z¦«‚nÌ| ¦«}|d}|d}| d¦«}|dkr|d}}n0|dkrtd|z¦«‚| d¦«\}}|d	}	|	€d|vsd|vrtd|z¦«‚g}	nd
„|	 d¦«D¦«}	t
||||	¦«}|S)NrIrJzInvalid specification '%s'r\ÚcallablerËrrrÏcó6—g|]}| ¦«‘ŒSrD©ra)rYr-s  r/r[z$get_export_entry.<locals>.<listcomp>ês €Ð9Ð9Ð9 1Q—W’W‘Y”YÐ9Ð9Ð9r1rK)ÚENTRY_REÚsearchrÚ	groupdictÚcountr¡rq)
Ú
specificationr)r*r¢r\ruÚcolonsr‚r€rÏs
          r/r¹r¹ÐsX€ÝŠ˜
Ñ&Ô&€AØð:؈ؐ-ÐР3¨-Ð#7Ð#7Ý"ð$*Ø,9ñ$:ñ;ô;ð
;ð$8ð
KŠK‰MŒMˆØŒyˆØŒ}ˆØ—’˜C‘”ˆØQŠ;ˆ;Ø! 4FˆFˆFà˜Š{ˆ{Ý&ð(.Ø0=ñ(>ñ?ô?ð?à!ŸZšZ¨™_œ_‰NˆFFؐ'”
ˆØˆ=ؐmÐ#Ð# s¨mÐ';Ð';Ý&ð(.Ø0=ñ(>ñ?ô?ð?àˆEˆEà9Ð9¨¯ª°CÑ(8Ô(8Ð9Ñ9Ô9ˆEݘT 6¨6°5Ñ9Ô9ˆØ€Mr1cóª—|€d}tjdkr.dtjvr tj d¦«}ntj d¦«}tj |¦«r=tj|tj¦«}|st 
d|¦«nG	tj|¦«d}n/#t$r"t 
d	|d¬
¦«d}YnwxYw|s.tj¦«}t 
d|¦«tj ||¦«S)
a¦
    Return the default base location for distlib caches. If the directory does
    not exist, it is created. Use the suffix provided for the base directory,
    and default to '.distlib' if it isn't provided.

    On Windows, if LOCALAPPDATA is defined in the environment, then it is
    assumed to be a directory, and will be the parent directory of the result.
    On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home
    directory - using os.expanduser('~') - will be the parent directory of
    the result.

    The result is just the directory '.distlib' in the parent directory as
    determined above, or with the name specified with ``suffix``.
    Nz.distlibÚntÚLOCALAPPDATAz
$localappdataú~z(Directory exists but is not writable: %sTzUnable to create %s)Úexc_infoFz#Default location unusable, using %s)rtr\ÚenvironruÚ
expandvarsÚ
expanduserr&rTrUrÚwarningÚmakedirsÚOSErrorrÔrÕr&)r€r*Úusables   r/Úget_cache_baser’ïs:€ð€~؈Ý	„w$‚€˜>­R¬ZÐ7Ð7Ý”×#Ò# OÑ4Ô4ˆˆõ”×#Ò# CÑ(Ô(ˆõ
„w‡}‚}VÑÔð
Ý”˜6¥2¤7Ñ+Ô+ˆØð	OÝNŠNÐEÀvÑNÔNÐNøð	ÝŒK˜ÑÔÐ؈FˆFøÝð	ð	ð	ÝNŠNÐ0°&À4ˆNÑHÔHÐH؈FˆFˆFð	øøøððFÝÔ!Ñ#Ô#ˆÝŠÐ<¸fÑEÔEÐEÝ
Œ7<Š<˜ Ñ'Ô'Ð'sÂ?CÃ)DÄDTcó—tj |rtj |¦«n|¦«\}}|r| dd¦«}| tjd¦«}||zdzS)a
    Convert an absolute path to a directory name for use in a cache.

    The algorithm used is:

    #. On Windows, any ``':'`` in the drive is replaced with ``'---'``.
    #. Any occurrence of ``os.sep`` is replaced with ``'--'``.
    #. ``'.cache'`` is appended.
    rËz---z--z.cache)rtruÚ
splitdriverr#rv)ruÚuse_abspathr¢rs    r/Úpath_to_cache_dirr–st€õŒ7×Ò°{ÐLbœgŸošo¨dÑ3Ô3Ð3ÈÑMÔMD€A€qØð"Ø
IŠIc˜5Ñ!Ô!ˆØ		Š	•"”&˜$ÑÔ€AØˆq‰58ÑÐr1có:—| d¦«s|dzS|Srr)Úendswith)r.s r/Úensure_slashr™)s"€Ø:Š:c‰?Œ?ðؐ3‰wˆØ€Hr1cóҗdx}}d|vr9| dd¦«\}}d|vr|}n| dd¦«\}}|rt|¦«}|rt|¦«}|||fS)NrLrrË)Úrsplitr¡r)rfÚusernameÚpasswordr‚s    r/Úparse_credentialsrž/s€ØÐ€HˆxØ
ˆf€}€}ØŸš s¨AÑ.Ô.‰ˆØfÐÐØˆHˆHà!'§¢¨c°1Ñ!5Ô!5ÑˆHhØð%ݘ8Ñ$Ô$ˆØð%ݘ8Ñ$Ô$ˆØX˜vÐ%Ð%r1cóV—tjd¦«}tj|¦«|S)Né)rtÚumaskrs r/Úget_process_umaskr¢>s$€Ý
ŒXd‰^Œ^€FÝ„HˆVÑÔÐØ€Mr1cór—d}d}t|¦«D]\}}t|t¦«sd}nŒ|€J‚|S)NTF)Ú	enumerater•r)Úseqr*rkr.s    r/Úis_string_sequencer¦DsV€Ø
€FØ€Aݘ#‘”ðð‰ˆˆ1ݘ!\Ñ*Ô*ð	؈FØˆEð	ð
ˆ=ˆ=ˆ=Ø€Mr1z3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)z
-py(\d\.?\d?)cóz—d}d}t|¦« dd¦«}t |¦«}|r1| d¦«}|d| ¦«…}|r{t
|¦«t
|¦«dzkrXtjtj	|¦«dz|¦«}|r,| 
¦«}|d|…||dzd…|f}|€Gt |¦«}|r+| d¦«| d¦«|f}|S)zw
    Extract name, version, python version from a filename (no extension)

    Return name, version, pyver or None
    NrVú-rz\br§)rr#ÚPYTHON_VERSIONrrÄÚstartrwÚrerÚescaper!ÚPROJECT_NAME_AND_VERSION)ÚfilenameÚproject_namer*Úpyverr)Úns      r/Úsplit_filenamer²Ts+€ð€FØ€EݐxÑ Ô ×(Ò(¨¨cÑ2Ô2€HÝ×Ò˜hÑ'Ô'€AØð(Ø—’˜‘
”
ˆØ˜J˜QŸWšW™YœY˜JÔ'ˆØð;˜H™
œ
­¨LÑ(9Ô(9¸AÑ(=Ò=Ð=ÝŒH•R”Y˜|Ñ,Ô,¨uÑ4°hÑ?Ô?ˆØð	;Ø—’‘”ˆAؘb˜q˜b”\ 8¨A°©E¨F¨FÔ#3°UÐ:ˆFØ
€~Ý$×*Ò*¨8Ñ4Ô4ˆØð	3Ø—W’W˜Q‘Z”Z §¢¨¡¤¨UÐ2ˆFØ€Mr1z-(?P<name>[\w .-]+)\s*\(\s*(?P<ver>[^\s)]+)\)$cóî—t |¦«}|std|z¦«‚| ¦«}|d ¦« ¦«|dfS)zÇ
    A utility method used to get name and version from a string.

    From e.g. a Provides-Dist value.

    :param p: A value in a form 'foo (1.0)'
    :return: The name and version as a tuple.
    z$Ill-formed name/version string: '%s'r\Úver)ÚNAME_VERSION_RErrr‚rar˜)rr)r¢s   r/Úparse_name_and_versionr¶rsj€õ	×Ò˜aÑ Ô €AØðMÝÐGÈ!ÑKÑLÔLÐLØ	Š‰
Œ
€AØˆVŒ9?Š?ÑÔ×"Ò"Ñ$Ô$ a¨¤hÐ.Ð.r1có—t¦«}t|pg¦«}t|pg¦«}d|vr| d¦«||z}|D]®}|dkr| |¦«Œ| d¦«rE|dd…}||vrt d|z¦«||vr| |¦«Œx||vrt d|z¦«| |¦«Œ¯|S)NÚ*r¨rzundeclared extra: %s)rÐrùr
rbrrŽ)Ú	requestedÚ	availabler*ÚrÚunwanteds     r/Ú
get_extrasr½‚s€Ý
‰UŒU€FݐIO Ñ$Ô$€IݐIO Ñ$Ô$€IØ
ˆiÐÐØ×Ò˜ÑÔÐØ)шØ
ððˆØŠ8ˆ8ØJŠJq‰MŒMˆMˆMØ
\Š\˜#Ñ
Ô
ð		ؘ˜˜”uˆHؘyÐ(Ð(Ý—’Ð5¸Ñ@ÑAÔAÐAؘ6Ð!Ð!Ø—
’
˜hÑ'Ô'Ð'øà˜	Ð!Ð!Ý—’Ð5¸Ñ9Ñ:Ô:Ð:ØJŠJq‰MŒMˆMˆMØ€Mr1có¨—i}	t|¦«}| ¦«}| d¦«}| d¦«st d|¦«n1t
jd¦«|¦«}tj	|¦«}n3#t$r&}t d||¦«Yd}~nd}~wwxYw|S)NzContent-Typezapplication/jsonz(Unexpected response for JSON request: %sr¨z&Failed to get external data for %s: %s)r
rÚgetrbrrQr³r´r¶r·rºÚ	exception)r_r*ÚrespÚheadersÚctÚreaderÚes       r/Ú_get_external_datarÆžsá€Ø
€FðKõs‰|Œ|ˆØ—)’)‘+”+ˆØ
[Š[˜Ñ
(Ô
(ˆØ}Š}Ð/Ñ0Ô0ð	'ÝLŠLÐCÀRÑHÔHÐHÐHà.•VÔ% gÑ.Ô.¨tÑ4Ô4ˆFõ”Y˜vÑ&Ô&ˆFøøÝðKðKðKÝ×ÒÐAÀ3ÈÑJÔJÐJÐJÐJÐJÐJÐJøøøøðKøøøà€Ms„BBÂ
CÂ)C
Ã
Cz'https://www.red-dove.com/pypi/projects/cóŽ—|d ¦«›d|›d}tt|¦«}t|¦«}|S)Nrrsz
/project.json©ÚupperrÚ_external_data_base_urlrÆ)r\r_r*s   r/Úget_project_datar˶sB€Ø"& q¤'§-¢-¡/¤/ / /°4°4°4Ð
8€CÝ
Õ)¨3Ñ
/Ô
/€CÝ
 Ñ
$Ô
$€FØ€Mr1có—|d ¦«›d|›d|›d}tt|¦«}t|¦«S)Nrrsz	/package-z.jsonrÈ)r\Úversionr_s   r/Úget_package_datarνsD€Ø%)¨!¤W§]¢]¡_¤_ _ _°d°d°d¸G¸G¸GÐ
D€CÝ
Õ)¨3Ñ
/Ô
/€CݘcÑ"Ô"Ð"r1có&—eZdZdZd„Zdd„Zd„ZdS)ÚCachezæ
    A class implementing a cache for resources that need to live in the file system
    e.g. shared libraries. This class was moved from resources to here because it
    could be used by other modules, e.g. the wheel module.
    cód—tj |¦«stj|¦«tj|¦«jdzdkrt d|¦«tj tj 	|¦«¦«|_
dS)zu
        Initialise an instance.

        :param base: The base directory where the cache should be located.
        é?rzDirectory '%s' is not privateN)rtrur&rrr6rrŽrÚnormpathr)rêrs  r/rëzCache.__init__Êsƒ€õŒw}Š}˜TÑ"Ô"ð	ÝŒK˜ÑÔÐÝŒGD‰MŒMÔ! DÑ(¨QÒ.Ð.ÝNŠNÐ<¸dÑCÔCÐCÝ”G—O’O¥B¤G×$4Ò$4°TÑ$:Ô$:Ñ;Ô;ˆŒ	ˆ	ˆ	r1Tcó$—t||¬¦«S)zN
        Converts a resource prefix to a directory name in the cache.
        )r•)r–)rêr‚r•s   r/Ú
prefix_to_dirzCache.prefix_to_dirØs€õ! °[ÐAÑAÔAÐAr1cóä—g}tj|j¦«D]Ó}tj |j|¦«}	tj |¦«stj |¦«rtj|¦«n3tj |¦«rtj
|¦«Œ¯#t$r| |¦«YŒÐwxYw|S)z"
        Clear the cache.
        )
rtr_rrur&rrrùr&r	rÖrºr$)rêÚnot_removedÚfns   r/ÚclearzCache.clearÞs܀ðˆÝ”*˜TœYÑ'Ô'ð	'ð	'ˆBÝ”—’˜dœi¨Ñ,Ô,ˆBð
'Ý”7—>’> "Ñ%Ô%ð&­¬¯ª¸Ñ);Ô);ð&Ý”I˜b‘M”MMMÝ”W—]’] 2Ñ&Ô&ð&Ý”M "Ñ%Ô%Ð%øøÝð
'ð
'ð
'Ø×"Ò" 2Ñ&Ô&Ð&Ð&Ð&ð
'øøøàÐsÁBCÃC-Ã,C-Nrf)rïrórôÚ__doc__rërÕrÙrDr1r/rÐrÐÃsT€€€€€ððð<ð<ð<ðBðBðBðBðððððr1rÐcó2—eZdZdZd„Zd	d„Zd„Zd„Zd„ZdS)
Ú
EventMixinz1
    A very simple publish/subscribe system.
    có—i|_dSr“)Ú_subscribersrs r/rëzEventMixin.__init__ôs€ØˆÔÐÐr1Tcó²—|j}||vrt|g¦«||<dS||}|r| |¦«dS| |¦«dS)a`
        Add a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be added (and called when the
                           event is published).
        :param append: Whether to append or prepend the subscriber to an
                       existing subscriber list for the event.
        N)rÞrr$Ú
appendleft)rêÚeventÚ
subscriberr$ÚsubsÚsqs      r/r
zEventMixin.add÷so€ðÔ ˆØ˜ÐÐÝ  Ñ-Ô-ˆD‰KˆKˆKàe”ˆBØð
*Ø—	’	˜*Ñ%Ô%Ð%Ð%Ð%à—
’
˜jÑ)Ô)Ð)Ð)Ð)r1cóv—|j}||vrtd|z¦«‚|| |¦«dS)z™
        Remove a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be removed.
        zNo subscribers: %rN)rÞr÷rù)rêrárârãs    r/rùzEventMixin.removesI€ðÔ ˆØ˜ÐÐÝÐ1°EÑ9Ñ:Ô:Ð:ØˆUŒ×Ò˜:Ñ&Ô&Ð&Ð&Ð&r1cóR—t|j |d¦«¦«S)z
        Return an iterator for the subscribers for an event.
        :param event: The event to return subscribers for.
        rD)ÚiterrÞr¿)rêrás  r/Úget_subscriberszEventMixin.get_subscriberss%€õ
DÔ%×)Ò)¨%°Ñ4Ô4Ñ5Ô5Ð5r1có—g}| |¦«D]Q}	||g|¢Ri|¤Ž}n,#t$rt d¦«d}YnwxYw| |¦«ŒRt d||||¦«|S)a^
        Publish a event and return a list of values returned by its
        subscribers.

        :param event: The event to publish.
        :param args: The positional arguments to pass to the event's
                     subscribers.
        :param kwargs: The keyword arguments to pass to the event's
                       subscribers.
        z"Exception during event publicationNz/publish %s: args = %s, kwargs = %s, result = %s)rèrºrrÀr$rQ)rêráÚargsÚkwargsr*rârÈs       r/ÚpublishzEventMixin.publishs¾€ðˆØ×.Ò.¨uÑ5Ô5ð	!ð	!ˆJð
Ø"˜
 5Ð:¨4Ð:Ð:Ð:°6Ð:Ð:øÝð
ð
ð
Ý× Ò Ð!EÑFÔFÐFؐð
øøøð
MŠM˜%Ñ Ô Ð Ð ݏŠÐFÈÈtÐU[Ð]cÑdÔdÐd؈
s›(¨&AÁANrf)	rïrórôrÚrër
rùrèrìrDr1r/rÜrÜïsn€€€€€ðððððð*ð*ð*ð*ð(
'ð
'ð
'ð6ð6ð6ðððððr1rÜcóf—eZdZd„Zd„Zdd„Zd„Zd„Zd„Zd„Z	e
d	„¦«Ze
d
„¦«ZdS)
Ú	SequencercóH—i|_i|_t¦«|_dSr“)Ú_predsÚ_succsrÐÚ_nodesrs r/rëzSequencer.__init__:s€ØˆŒØˆŒÝ‘e”eˆŒˆˆr1có:—|j |¦«dSr“)ròr
)rêÚnodes  r/Úadd_nodezSequencer.add_node?s€ØŒŠ˜ÑÔÐÐÐr1Fcó0—||jvr|j |¦«|rît|j |d¦«¦«D]}| ||¦«Œt|j |d¦«¦«D]}| ||¦«Œt
|j ¦«¦«D]\}}|s|j|=Œt
|j ¦«¦«D]\}}|s|j|=ŒdSdS)NrD)ròrùrÐrðr¿rñr]r¸)rêrôÚedgesrr.rÆrSs       r/Úremove_nodezSequencer.remove_nodeBs3€Ø4”;ÐÐØŒK×Ò˜tÑ$Ô$Ð$Øð	'ݘœŸš¨¨rÑ2Ô2Ñ3Ô3ð
%ð
%Ø—’˜A˜tÑ$Ô$Ð$Ð$ݘœŸš¨¨rÑ2Ô2Ñ3Ô3ð
%ð
%Ø—’˜D !Ñ$Ô$Ð$Ð$å˜Tœ[×.Ò.Ñ0Ô0Ñ1Ô1ð
'ð
'‘1Øð'Øœ A˜øÝ˜Tœ[×.Ò.Ñ0Ô0Ñ1Ô1ð
'ð
'‘1Øð'Øœ A˜øð	'ð	'ð
'ð
'r1cóþ—||ksJ‚|j |t¦«¦« |¦«|j |t¦«¦« |¦«dSr“)rðÚ
setdefaultrÐr
rñ)rêÚpredÚsuccs   r/r
z
Sequencer.addRsi€ØtŠ|ˆ|ˆ|ˆ|ØŒ×Ò˜t¥S¡U¤UÑ+Ô+×/Ò/°Ñ5Ô5Ð5ØŒ×Ò˜t¥S¡U¤UÑ+Ô+×/Ò/°Ñ5Ô5Ð5Ð5Ð5r1có(—||ksJ‚	|j|}|j|}n #t$rtd|z¦«‚wxYw	| |¦«| |¦«dS#t$rt|›d|›¦«‚wxYw)Nz%r not a successor of anythingz not a successor of )rðrñÚKeyErrorr÷rù)rêrûrüÚpredsÚsuccss     r/rùzSequencer.removeWsʀؐtŠ|ˆ|ˆ|ˆ|ð	FØ”K Ô%ˆEØ”K Ô%ˆEˆEøÝð	Fð	Fð	FÝÐ=ÀÑDÑEÔEÐEð	Føøøð	HØLŠL˜ÑÔÐØLŠL˜ÑÔÐÐÐøÝð	Hð	Hð	Hݸ4¸4¸4ÀÀÐFÑGÔGÐGð	HøøøsŠ%¥AÁ*A2Á2Bcó8—||jvp||jvp||jvSr“)rðrñrò)rêÚsteps  r/Úis_stepzSequencer.is_stepds'€Ø˜œÐ#ÐQ t¨t¬{Ð':ÐQ¸dÀdÄkÐ>QÐRr1có—| |¦«std|z¦«‚g}g}t¦«}| |¦«|r¦| d¦«}||vr1||kr*| |¦«| |¦«nZ| |¦«| |¦«|j |d¦«}| 	|¦«|°¦t|¦«S)NzUnknown: %rrrD)rr÷rÐr$rzrùr
rðr¿ÚextendÚreversed)rêÚfinalr*ÚtodoÚseenrrÿs       r/Ú	get_stepszSequencer.get_stepsgs€Ø|Š|˜EÑ"Ô"ð	4ݘ]¨UÑ2Ñ3Ô3Ð3؈؈݉uŒuˆØŠEÑÔÐØð	#Ø—8’8˜A‘;”;ˆDؐtˆ|ˆ|ð˜5’==Ø—M’M $Ñ'Ô'Ð'Ø—M’M $Ñ'Ô'Ð'øà—’˜‘”Ø—
’
˜dÑ#Ô#Ð#ØœŸš¨¨bÑ1Ô1Ø—’˜EÑ"Ô"Ð"ðð	#õ ˜ÑÔÐr1cóv‡‡‡‡‡‡‡—dgŠgŠiŠiŠgŠ|jŠˆˆˆˆˆˆˆfd„ЉD]}|‰vr‰|¦«Œ‰S)Nrcó<•—‰d‰|<‰d‰|<‰dxxdz
cc<‰
 |¦«	‰|}n#t$rg}YnwxYw|D]T}|‰vr+‰|¦«t‰|‰|¦«‰|<Œ1|‰
vrt‰|‰|¦«‰|<ŒU‰|‰|krZg}	‰
 ¦«}| |¦«||krnŒ1t	|¦«}‰	 |¦«dSdS©Nrr)r$rºÚminrzÚtuple)rôÚ
successorsÚ	successorÚconnected_componentÚ	componentÚgraphÚindexÚ
index_counterÚlowlinksr*ÚstackÚ
strongconnects     €€€€€€€r/rz3Sequencer.strong_connections.<locals>.strongconnect‹syø€à'¨Ô*ˆE$‰KØ*¨1Ô-ˆHT‰NØ˜!ÐÐÔ Ñ!ÐÐÑØLŠL˜ÑÔÐð
 Ø" 4œ[

øÝð
 ð
 ð
 ؐ


ð
 øøøà'ð
Kð
K	Ø HÐ,Ð,à!M )Ñ,Ô,Ð,Ý%(¨°$¬¸À)Ô9LÑ%MÔ%MH˜T‘NNØ %Ð'Ð'õ&)¨°$¬¸¸yÔ9IÑ%JÔ%JH˜T‘Nøð˜Œ~  t¤Ò,Ð,Ø&(Ð#ðØ %§	¢	¡¤IØ'×.Ò.¨yÑ9Ô9Ð9Ø  DÒ(Ð(Øð	õ
"Ð"5Ñ6Ô6	à—
’
˜iÑ(Ô(Ð(Ð(Ð(ð-Ð,s¾AÁAÁA)rñ)	rêrôrrrrr*rrs	  @@@@@@@r/Ústrong_connectionszSequencer.strong_connections€s—øøøøøøø€ð˜ˆ
ØˆØˆØˆØˆà”ˆð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ð!	)ðFð	$ð	$ˆDؘ8Ð#Ð#ؐ
˜dÑ#Ô#Ð#øàˆ
r1c	ó—dg}|jD]0}|j|}|D]}| d|›d|›d¦«ŒŒ1|jD]}| d|z¦«Œ| d¦«d |¦«S)Nzdigraph G {z  z -> rUz  %s;Ú}ú
)rðr$ròr&)rêr*rürÿrûrôs      r/Údotz
Sequencer.dot´s¬€àˆØ”Kð	<ð	<ˆDØ”K Ô%ˆEØð
<ð
<Ø—
’

¨t¨t¨t°T°T°TÐ:Ñ;Ô;Ð;Ð;ð
<à”Kð	*ð	*ˆDØMŠM˜' D™.Ñ)Ô)Ð)Ð)؏
Š
cÑÔÐØyŠy˜Ñ Ô Ð r1Nre)
rïrórôrërõrør
rùrr
ÚpropertyrrrDr1r/rîrî8s¿€€€€€ðððð
ððð'ð'ð'ð'ð 6ð6ð6ð
HðHðHðSðSðSð ð ð ð2ð1ð1ñ„Xð1ðfð	!ð	!ñ„Xð	!ð	!ð	!r1rî)ú.tar.gzú.tar.bz2ú.tarú.zipú.tgzú.tbzú.whlcóÚ‡‡—ˆˆfd„}tj ‰¦«Št‰¦«Šd}|€x| d¦«rd}n`| d¦«rd}d}nF| d¦«rd}d	}n,| d
¦«rd}d}ntd
|z¦«‚	|dkr7t
|d¦«}|r$| ¦«}|D]
}||¦«Œn;tj	||¦«}|r$| 
¦«}|D]
}||¦«Œ|dkrftjddkrP| 
¦«D];}	t|	jt ¦«s|	j d¦«|	_Œ<d„}
|
|_| ‰¦«|r| ¦«dSdS#|r| ¦«wwxYw)NcóP•—t|t¦«s| d¦«}tj tj ‰|¦«¦«}| ‰¦«r|‰tjkrtd|z¦«‚dS)Nr¨zpath outside destination: %r)
r•rÚdecodertrurr&rbrvr÷)rurÚdest_dirÚplens  €€r/Ú
check_pathzunarchive.<locals>.check_pathÊsŠø€Ý˜$¥	Ñ*Ô*ð	(Ø—;’;˜wÑ'Ô'ˆDÝŒGOŠOBœGŸLšL¨°4Ñ8Ô8Ñ9Ô9ˆØ|Š|˜HÑ%Ô%ð	A¨¨4¬µB´FÒ):Ð):ÝÐ;¸aÑ?Ñ@Ô@Ð@ð*;Ð):r1)r#r&Úzip)r r$Útgzzr:gz)r!r%Útbzzr:bz2r"Útarr»zUnknown format for %rrr§r¨có”—	tj||¦«S#tj$r!}tt	|¦«¦«‚d}~wwxYw)z9Run tarfile.tar_filter, but raise the expected ValueErrorN)ÚtarfileÚ
tar_filterÚFilterErrorr÷Ústr)ÚmemberruÚexcs   r/Úextraction_filterz$unarchive.<locals>.extraction_filterûsP€ð
+ÝÔ)¨&°$Ñ7Ô7Ð7øÝÔ&ð
+ð
+ð
+Ý ¥ S¡¤Ñ*Ô*Ð*øøøøð
+øøøs‚—A¦AÁA)rtrurrwr˜r÷rÚnamelistr2r'ÚgetnamesrŽr²Ú
getmembersr•r\rr)r8Ú
extractallr¾)Úarchive_filenamer*Úformatrr,Úarchiver;Únamesr\Útarinfor8r+s `         @r/Ú	unarchiverBÈspøø€ðAðAðAðAðAðAõŒwŠ˜xÑ(Ô(€H݈x‰=Œ=€DØ€GØ
€~Ø×$Ò$Ð%5Ñ6Ô6ð	I؈FˆFØ
×
&Ò
&Ð':Ñ
;Ô
;ð
	I؈F؈DˆDØ
×
&Ò
&Ð';Ñ
<Ô
<ð	I؈F؈DˆDØ
×
&Ò
& vÑ
.Ô
.ð	I؈F؈DˆDåÐ4Ð7GÑGÑHÔHÐHð'ؐUŠ?ˆ?ÝÐ.°Ñ4Ô4ˆGØð
%Ø×(Ò(Ñ*Ô*Ø!ð%ð%DؐJ˜tÑ$Ô$Ð$Ð$øå”lÐ#3°TÑ:Ô:ˆGØð
%Ø×(Ò(Ñ*Ô*Ø!ð%ð%DؐJ˜tÑ$Ô$Ð$Ð$ؐUŠ?ˆ?sÔ/°Ô2°QÒ6Ð6ð
#×-Ò-Ñ/Ô/ð
@ð
@Ý! '¤,µ	Ñ:Ô:ð@Ø#*¤<×#6Ò#6°wÑ#?Ô#?G”Løð
	+ð	+ð	+ð%6ˆÔ!à×Ò˜8Ñ$Ô$Ð$ðð	ØMŠM‰OŒOˆOˆOˆOð	ð	øˆ7ð	ØMŠM‰OŒOˆOˆOð	øøøs
Â4DGÇG*cóœ—tj¦«}t|¦«}t|d¦«5}t	j|¦«D]k\}}}|D]b}tj ||¦«}||d…}	tj |	|¦«}
| ||
¦«ŒcŒl	ddd¦«n#1swxYwY|S)z*zip a directory tree into a BytesIO objectr#N)	ÚioÚBytesIOrwrrtÚwalkrur&rÑ)Ú	directoryr*ÚdlenÚzfrxrar:r\ÚfullÚrelrs           r/Úzip_dirrLs€å
ŒZ‰\Œ\€F݈y‰>Œ>€DÝ	˜Ñ	Ô	ð% Ý!#¤¨Ñ!3Ô!3ð	%ð	%ÑˆD$˜Øð
%ð
%Ý”w—|’| D¨$Ñ/Ô/Ø˜4˜5˜5”kÝ”w—|’| C¨Ñ.Ô.Ø—’˜˜tÑ$Ô$Ð$Ð$ð	
%ð	%ð%ð%ð%ñ%ô%ð%ð%ð%ð%ð%ð%øøøð%ð%ð%ð%ð€Ms³BCÃCÃC)rÚKÚMÚGÚTÚPcó—eZdZdZdd„Zd„Zd„Zd„Zd„Ze	d	„¦«Z
e	d
„¦«Zd„Ze	d„¦«Z
e	d
„¦«ZdS)ÚProgressÚUNKNOWNrédcón—|||ksJ‚|x|_|_||_d|_d|_d|_dS)NrF)rÚcurÚmaxÚstartedÚelapsedÚdone)rêÚminvalÚmaxvals   r/rëzProgress.__init__$sE€Øˆ~ ¨6Ò!1Ð!1Ð!1Ð1Ø$Ð$ˆŒ4”8؈ŒØˆŒ؈Œ؈Œ	ˆ	ˆ	r1cóº—|j|ksJ‚|j
||jksJ‚||_tj¦«}|j€	||_dS||jz
|_dSr“)rrXrWÚtimerYrZ)rêÚcurvalÚnows   r/ÚupdatezProgress.update,sf€ØŒx˜6Ò!Ð!Ð!Ð!ØŒxР6¨T¬XÒ#5Ð#5Ð#5Ð5؈ŒÝŒi‰kŒkˆØŒ<ÐØˆDŒLˆLˆLà ¤Ñ-ˆDŒLˆLˆLr1cóP—|dksJ‚| |j|z¦«dS)Nr)rbrW)rêÚincrs  r/Ú	incrementzProgress.increment6s-€ØqŠyˆyˆyˆyØŠD”H˜t‘OÑ$Ô$Ð$Ð$Ð$r1có:—| |j¦«|Sr“)rbrrs r/rªzProgress.start:s€ØŠD”HÑÔÐØˆr1cóV—|j| |j¦«d|_dS©NT)rXrbr[rs r/Ústopz
Progress.stop>s)€ØŒ8ÐØKŠK˜œÑ!Ô!Ð!؈Œ	ˆ	ˆ	r1có,—|j€|jn|jSr“)rXÚunknownrs r/ÚmaximumzProgress.maximumCs€à#œxÐ/ˆtŒ|ˆ|°T´XÐ=r1có|—|jrd}n1|j€d}n'd|j|jz
z|j|jz
z}d|z}|S)Nz100 %z ?? %gY@z%3d %%)r[rXrWr)rêr*rSs   r/Ú
percentagezProgress.percentageGsQ€àŒ9ð	"؈FˆFØ
ŒXÐ
؈FˆFà˜œ D¤HÑ,Ñ-°´¸D¼HÑ1DÑEˆAØ ‘\ˆF؈
r1có”—|dkr|j|j|jkrd}n'tjdtj|¦«¦«}|S)Nrz??:??:??z%H:%M:%S)rXrWrr_ÚstrftimeÚgmtime)rêÚdurationr*s   r/Úformat_durationzProgress.format_durationRsI€Ø˜ŠMˆM˜tœxÐ/°4´8¸t¼xÒ3GÐ3G؈FˆFõ”] :­t¬{¸8Ñ/DÔ/DÑEÔEˆF؈
r1có"—|jr
d}|j}ned}|j€d}nY|jdks|j|jkrd}n;t|j|jz
¦«}||j|jz
z}|dz
|jz}|›d| |¦«›S)NÚDonezETA rörrz: )r[rZrXrWrÚfloatrs)rêr‚rls   r/ÚETAzProgress.ETA[s­€àŒ9ð	+؈FØ”ˆAˆAðˆFØŒxÐØØ” Ò"Ð" t¤x°4´8Ò';Ð';ؐõ˜$œ( T¤XÑ-Ñ.Ô.ØT”X ¤Ñ(Ñ(Ø˜‘U˜dœlÑ*Ø!˜6˜6 4×#7Ò#7¸Ñ#:Ô#:Ð#:Ð;Ð;r1cóˆ—|jdkrd}n|j|jz
|jz}tD]}|dkrn|dz}Œd||fzS)Nrgièg@@z%d %sB/s)rZrWrÚUNITS)rêr*Úunits   r/ÚspeedzProgress.speednsc€àŒ<˜1ÒÐØˆFˆFà”h ¤Ñ)¨T¬\Ñ9ˆFÝð	ð	ˆDؘŠ}ˆ}ؐØfÑˆFˆFؘV T˜NÑ*Ð*r1N)rrU)rïrórôrkrërbrerªrirrlrnrsrwr{rDr1r/rSrS!s䀀€€€Ø€Gððððð.ð.ð.ð%ð%ð%ððððððð
ð>ð>ñ„Xð>ðððñ„Xðððððð<ð<ñ„Xð<ð$ð	+ð	+ñ„Xð	+ð	+ð	+r1rSz\{([^}]*)\}z[^/\\,{]\*\*|\*\*[^/\\,}]z^[^{]*\}|\{[^}]*$cóؗt |¦«rd}t||z¦«‚t |¦«rd}t||z¦«‚t	|¦«S)zAExtended globbing function that supports ** and {opt1,opt2,opt3}.z7invalid glob %r: recursive glob "**" must be used alonez2invalid glob %r: mismatching set marker '{' or '}')Ú_CHECK_RECURSIVE_GLOBrr÷Ú_CHECK_MISMATCH_SETÚ_iglob)Ú	path_globrs  r/rr„sj€å×#Ò# IÑ.Ô.ð*ØKˆÝ˜˜y™Ñ)Ô)Ð)Ý×!Ò! )Ñ,Ô,ð*ØFˆÝ˜˜y™Ñ)Ô)Ð)ݐ)ÑÔÐr1c#óôK—t |d¦«}t|¦«dkrit|¦«dks
J|¦«‚|\}}}| d¦«D].}td |||f¦«¦«D]}|V—ŒŒ/dSd|vrt|¦«D]}|V—ŒdS| dd¦«\}}|dkrd}|dkrd}n*| d¦«}| d	¦«}tj|¦«D]Y\}}}	tj	 
|¦«}ttj	 ||¦«¦«D]}
|
V—ŒŒZdS)
Nrr§rKrz**rir¸rsú\)Ú	RICH_GLOBr¡rwrr&Ú	std_iglobr'rtrFrurÓ)r€Úrich_path_globr‚rÐr€ÚitemruÚradicalÚdirr:rØs           r/rrs¾èè€Ý—_’_ Y°Ñ2Ô2€NÝ
ˆ>ÑÔ˜QÒÐݐ>Ñ"Ô" aÒ'Ð'Ð'¨Ñ'Ô'Ð'Ø,шVØ—I’I˜c‘N”Nð	ð	ˆDݘrŸwšw¨°°fÐ'=Ñ>Ô>Ñ?Ô?ð
ð
Ø



ð
ð	ð	ðyÐ Ð Ý! )Ñ,Ô,ð
ð
Ø



ð
ð
ð(Ÿošo¨d°AÑ6Ô6‰OˆFGؘŠ|ˆ|ؘؐ"Š}ˆ}ؐð"Ÿ.š.¨Ñ-Ô-Ø!Ÿ.š.¨Ñ.Ô.Ý$&¤G¨F¡O¤Oð
ð
Ñ c˜5Ý”w×'Ò'¨Ñ-Ô-Ý ¥¤§¢¨d°GÑ!<Ô!<Ñ=Ô=ððBؐHHHHðð
ð
r1)ÚHTTPSHandlerÚmatch_hostnameÚCertificateErrorcó—eZdZdZdZd„ZdS)ÚHTTPSConnectionNTcóÌ—tj|j|jf|j¦«}t|dd¦«r||_| ¦«tj	tj
¦«}ttd¦«r|xjtj
zc_t|dd¦«r | |j|j¦«i}|jrLtj|_| |j¬¦«ttdd¦«r
|j|d<|j|fi|¤Ž|_|jr¢|jr	t/|j ¦«|j¦«t2 d|j¦«dS#t6$r?|j tj¦«|j ¦«‚wxYwdSdS)	NÚ_tunnel_hostFÚOP_NO_SSLv2Ú	cert_file)ÚcafileÚHAS_SNIÚserver_hostnamezHost verified: %s)ràÚcreate_connectionÚhostÚportÚtimeoutrÚsockÚ_tunnelÚsslÚ
SSLContextÚPROTOCOL_SSLv23rÚoptionsrÚload_cert_chainr‘Úkey_fileÚca_certsÚ
CERT_REQUIREDÚverify_modeÚload_verify_locationsÚwrap_socketÚcheck_domainrŠÚgetpeercertrrQr‹ÚshutdownÚ	SHUT_RDWRr¾)rêr™Úcontextrës    r/ÚconnectzHTTPSConnection.connect·sÏ€ÝÔ+¨T¬Y¸¼	Ð,BÀDÄLÑQÔQˆDݐt˜^¨UÑ3Ô3ð
Ø ”	Ø—’‘”å”n¥SÔ%8Ñ9Ô9ˆGÝ•s˜MÑ*Ô*ð
3ؐ”¥3¤?Ñ2”ݐt˜[¨$Ñ/Ô/ð
GØ×'Ò'¨¬¸¼
ÑFÔFÐF؈FØŒ}ð
:Ý&)Ô&7Ô#Ø×-Ò-°T´]Ð-ÑCÔCÐCݝ3 	¨5Ñ1Ô1ð:Ø04´	FÐ,Ñ-à+˜Ô+¨DÐ;Ð;°FÐ;Ð;ˆDŒIØŒ}ð
 Ô!2ð
ðÝ" 4¤9×#8Ò#8Ñ#:Ô#:¸D¼IÑFÔFÐFÝ—L’LÐ!4°d´iÑ@Ô@Ð@Ð@Ð@øÝ'ðððØ”I×&Ò&¥vÔ'7Ñ8Ô8Ð8Ø”I—O’OÑ%Ô%Ð%Øðøøøð	
ð
ð
ð
sÅAFÆA	G)rïrórôr¡r¦r«rDr1r/rr²s-€€€€€ØˆØˆð	ð	ð	ð	ð	r1rcó"—eZdZdd„Zd„Zd„ZdS)r‰TcóJ—tj|¦«||_||_dSr“)ÚBaseHTTPSHandlerrër¡r¦)rêr¡r¦s   r/rëzHTTPSHandler.__init__Õs(€ÝÔ% dÑ+Ô+Ð+Ø$ˆDŒMØ ,ˆDÔÐÐr1có\—t|i|¤Ž}|jr|j|_|j|_|S)a
            This is called to create a connection instance. Normally you'd
            pass a connection class to do_open, but it doesn't actually check for
            a class, and just expects a callable. As long as we behave just as a
            constructor would have, we should be OK. If it ever changes so that
            we *must* pass a class, we'll create an UnsafeHTTPSConnection class
            which just sets check_domain to False in the class definition, and
            choose which one to pass to do_open.
            )rr¡r¦)rêrêrër*s    r/Ú_conn_makerzHTTPSHandler._conn_makerÚs9€õ% dÐ5¨fÐ5Ð5ˆFØŒ}ð
8Ø"&¤-”Ø&*Ô&7Ô#؈Mr1cóº—	| |j|¦«S#t$r3}dt|j¦«vrtd|jz¦«‚‚d}~wwxYw)Nzcertificate verify failedz*Unable to verify server certificate for %s)Údo_openr°rr5Úreasonr‹r–)rêrgrÅs   r/Ú
https_openzHTTPSHandler.https_openêsy€ð
Ø—|’| DÔ$4°cÑ:Ô:Ð:øÝð
ð
ð
Ø.µ#°a´h±-´-Ð?Ð?Ý*ð,4Ø69´hñ,?ñ@ô@ð@ðøøøøð
øøøs‚
A§.AÁANrf)rïrórôrër°r´rDr1r/r‰r‰ÓsF€€€€€ð	-ð	-ð	-ð	-ð
	ð	ð	ð 	ð	ð	ð	ð	r1r‰có—eZdZd„ZdS)ÚHTTPSOnlyHandlercó&—td|z¦«‚)NzAUnexpected HTTP request on what should be a secure connection: %s)r)rêrgs  r/Ú	http_openzHTTPSOnlyHandler.http_openÿs!€Ýð,Ø.1ñ2ñ3ô3ð
3r1N)rïrórôr¸rDr1r/r¶r¶ýs#€€€€€ð	3ð	3ð	3ð	3ð	3r1r¶có—eZdZdd„Zd„ZdS)Ú	TransportrcóT—||_tj ||¦«dSr“)r˜rrºrë©rêr˜Úuse_datetimes   r/rëzTransport.__init__	s(€ØˆŒÝÔ×$Ò$ T¨<Ñ8Ô8Ð8Ð8Ð8r1có—| |¦«\}}}|jr||jdkr"||_|tj|¦«f|_|jdSr
)Ú
get_host_infoÚ_connectionÚ_extra_headersrÚHTTPConnection)rêr–ÚhÚehÚx509s     r/Úmake_connectionzTransport.make_connection
sf€Ø×(Ò(¨Ñ.Ô.‰ˆˆ2ˆtØÔð	? 4¨4Ô+;¸AÔ+>Ò#>Ð#>Ø"$ˆDÔØ#¥WÔ%;¸AÑ%>Ô%>Ð>ˆDÔØÔ Ô"Ð"r1N©r©rïrórôrërÆrDr1r/rºrºs7€€€€€ð9ð9ð9ð9ð#ð#ð#ð#ð#r1rºcó—eZdZdd„Zd„ZdS)Ú
SafeTransportrcóT—||_tj ||¦«dSr“)r˜rrÊrër¼s   r/rëzSafeTransport.__init__s(€Ø"ˆDŒLÝÔ#×,Ò,¨T°<Ñ@Ô@Ð@Ð@Ð@r1cóܗ| |¦«\}}}|si}|j|d<|jr||jdkr!||_|t	j|dfi|¤Žf|_|jdS)Nr˜rr)r¿r˜rÀrÁrr)rêr–rÃrÄrës     r/rÆzSafeTransport.make_connectionsŠ€Ø ×.Ò.¨tÑ4Ô4‰MˆAˆr6Øð
ØØ $¤ˆF9ÑØÔ#ð
T t¨tÔ/?ÀÔ/BÒ'BÐ'BØ&(Ô#Ø#'­Ô)@ÀÀDÐ)SÐ)SÈFÐ)SÐ)SÐ#SÔ ØÔ# AÔ&Ð&r1NrÇrÈrDr1r/rÊrÊs;€€€€€ð	Að	Að	Að	Að	'ð	'ð	'ð	'ð	'r1rÊcó—eZdZd„ZdS)ÚServerProxycó&—| dd¦«x|_}|Yt|¦«d}| dd¦«}|dkrt}nt
}|||¬¦«x|d<}||_tjj	||fi|¤ŽdS)Nr˜rr½Úhttps)r½Ú	transport)
rzr˜rr¿rÊrºrÑrrÎrë)rêrjrër˜rer½Útclsrls        r/rëzServerProxy.__init__*s§€Ø!'§¢¨I°tÑ!<Ô!<Ð<ˆŒwðÐå˜c‘]”] 1Ô%ˆFØ!Ÿ:š: n°aÑ8Ô8ˆLØ˜Ò Ð Ý$å Ø&* d¨7ÀÐ&NÑ&NÔ&NÐNˆF;Ñ !؈DŒNÝÔÔ& t¨SÐ;Ð;°FÐ;Ð;Ð;Ð;Ð;r1N)rïrórôrërDr1r/rÎrÎ(s#€€€€€ð<ð<ð<ð<ð<r1rÎcój—tjddkr|dz
}n
d|d<d|d<t||fi|¤ŽS)Nrr§ÚbrÚnewliner¨r%)rŽr²r')rØr;rës   r/Ú	_csv_openrÖAsN€Ý
Ô˜Ô˜QÒÐØ‰ˆˆàˆˆyÑð%ˆˆzÑݐDÐ#Ð#˜FÐ#Ð#Ð#r1có\—eZdZed¦«ed¦«ed¦«dœZd„Zd„ZdS)ÚCSVBaserKú"r)Ú	delimiterÚ	quotecharÚlineterminatorcó—|Sr“rDrs r/Ú	__enter__zCSVBase.__enter__Só€Øˆr1có8—|j ¦«dSr“)r°r¾)rêrŠs  r/Ú__exit__zCSVBase.__exit__Vs€ØŒ×ÒÑÔÐÐÐr1N)rïrórôr5ÚdefaultsrÞrárDr1r/rØrØLs_€€€€€àS˜‘X”XؐS˜‘X”Xؘ#˜d™)œ)ðð€Hððððððððr1rØcó$—eZdZd„Zd„Zd„ZeZdS)Ú	CSVReadercó—d|vrC|d}tjddkrtjd¦«|¦«}||_nt|dd¦«|_t
j|jfi|j¤Ž|_dS)Nr°rr§r¨rur»)	rŽr²r³r´r°rÖÚcsvrÄrâ)rêrër°s   r/rëzCSVReader.__init__\sƒ€ØvÐÐØ˜HÔ%ˆFÝÔ Ô" aÒ'Ð'à2Ô)¨'Ñ2Ô2°6Ñ:Ô:Ø ˆDŒKˆKå# F¨6¤N°CÑ8Ô8ˆDŒKÝ”j ¤Ð>Ð>°´
Ð>Ð>ˆŒˆˆr1có—|Sr“rDrs r/Ú__iter__zCSVReader.__iter__grßr1cóޗt|j¦«}tjddkrBt	|¦«D]2\}}t|t¦«s| d¦«||<Œ3|S©Nrr§r¨)ÚnextrÄrŽr²r¤r•rr))rêr*rkr†s    r/rëzCSVReader.nextjsl€Ýd”kÑ"Ô"ˆÝÔ˜AÔ Ò"Ð"Ý$ VÑ,Ô,ð
5ð
5‘4Ý! $­	Ñ2Ô2ð5Ø $§¢¨GÑ 4Ô 4F˜1‘IøØˆ
r1N)rïrórôrërèrëÚ__next__rDr1r/räräZsB€€€€€ð	?ð	?ð	?ððððððð€H€H€Hr1räcó—eZdZd„Zd„ZdS)Ú	CSVWritercór—t|d¦«|_tj|jfi|j¤Ž|_dS)Nr#)rÖr°ræÚwriterrâ)rêrØrës   r/rëzCSVWriter.__init__ws4€Ý  CÑ(Ô(ˆŒÝ”j ¤Ð>Ð>°´
Ð>Ð>ˆŒˆˆr1cóö—tjddkrHg}|D]A}t|t¦«r| d¦«}| |¦«ŒB|}|j |¦«dSrê)rŽr²r•rr0r$rðÚwriterow)rêÚrowr»r†s    r/ròzCSVWriter.writerow{s~€ÝÔ˜AÔ Ò"Ð"؈AØð
ð
Ý˜d¥IÑ.Ô.ð0ØŸ;š; wÑ/Ô/DØ—’˜‘”ØˆCØŒ×Ò˜SÑ!Ô!Ð!Ð!Ð!r1N)rïrórôrëròrDr1r/rîrîus2€€€€€ð?ð?ð?ð"ð"ð"ð"ð"r1rîcó\‡—eZdZeej¦«Zded<dˆfd„	Zd„Zd„Zd„Z	ˆxZ
S)	ÚConfiguratorÚinc_convertÚincNc󌕗tt|¦« |¦«|ptj¦«|_dSr“)ÚsuperrõrërtrÚr)rêÚconfigrÚ	__class__s   €r/rëzConfigurator.__init__s7ø€Ý
l˜DÑ!Ô!×*Ò*¨6Ñ2Ô2Ð2ØÐ'BœI™KœKˆŒ	ˆ	ˆ	r1cóÔ‡‡‡
—ˆ
ˆfd„Š
‰ d¦«}t|¦«s‰ |¦«}‰ dd¦«}‰ dd¦«}|rtˆ
fd„|D¦«¦«}ˆˆ
fd„‰D¦«}t	|¦«}||i|¤Ž}|r4| ¦«D]\}}	t
||‰
|	¦«¦«Œ |S)NcóJ•—t|ttf¦«r%t|¦«ˆfd„|D¦«¦«}n`t|t¦«r6d|vr‰ |¦«}n1i}|D]}‰||¦«||<Œn‰ |¦«}|S)Ncó&•—g|]
}‰|¦«‘ŒSrDrD)rYrkÚconverts  €r/r[zBConfigurator.configure_custom.<locals>.convert.<locals>.<listcomp>˜s!ø€Ð!8Ð!8Ð!8° ' '¨!¡*¤*Ð!8Ð!8Ð!8r1ú())r•r]rÚtypeÚdictÚconfigure_customrÿ)Úor*rÆrÿrês   €€r/rÿz.Configurator.configure_custom.<locals>.convert–s»ø€Ý˜!d¥E˜]Ñ+Ô+ð

)Ø ˜a™œÐ!8Ð!8Ð!8Ð!8°aÐ!8Ñ!8Ô!8Ñ9Ô9Ý˜AtÑ$Ô$ð
)ؘ199Ø!×2Ò2°1Ñ5Ô5FFàFØð2ð2˜Ø$+ G¨A¨a¬D¡M¤M˜˜q™	˜	ð2🚠a™œØˆMr1rriz[]rDcó&•—g|]
}‰|¦«‘ŒSrDrD)rYrrÿs  €r/r[z1Configurator.configure_custom.<locals>.<listcomp>«s!ø€Ð3Ð3Ð3¨˜'˜' !™*œ*Ð3Ð3Ð3r1cóT•—g|]$}t|¦«¯|‰‰|¦«f‘Œ%SrD)r)rYrÆrúrÿs  €€r/r[z1Configurator.configure_custom.<locals>.<listcomp>¬s7ø€ÐKÐKÐK¨Q½KȹN¼NÐK!WW˜V AœYÑ'Ô'Ð(ÐKÐKÐKr1)rzr}rorrr¸Úsetattr)rêrúržÚpropsrêr¸rër*r±rSrÿs``        @r/rzConfigurator.configure_custom”s#øøø€ð	ð	ð	ð	ð	ð	ð
JŠJtÑÔˆÝ˜‰{Œ{ð	 Ø—’˜Q‘”ˆAØ—
’
˜3 Ñ%Ô%ˆàzŠz˜$ Ñ#Ô#ˆØð	5ÝÐ3Ð3Ð3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆDØKÐKÐKÐKÐK°&ÐKÑKÔKˆÝe‘”ˆØDÐ#˜FÐ#Ð#ˆØð	/ØŸš™
œ
ð
/ð
/‘1ݘ  7 7¨1¡:¤:Ñ.Ô.Ð.Ð.؈
r1có—|j|}t|t¦«r#d|vr| |¦«x|j|<}|S)Nr)rúr•rr)rêr¤r*s   r/Ú__getitem__zConfigurator.__getitem__´sM€Ø”˜SÔ!ˆÝfdÑ#Ô#ð	F¨°¨¨Ø(,×(=Ò(=¸fÑ(EÔ(EÐEˆDŒK˜Ñ˜v؈
r1có—tj |¦«s%tj |j|¦«}tj|dd¬¦«5}tj|¦«}ddd¦«n#1swxYwY|S)z*Default converter for the inc:// protocol.r»r¨r$N)	rtruÚisabsr&rr³r'r¶r·)rêrÈr-r*s    r/rözConfigurator.inc_convertºsª€åŒw}Š}˜UÑ#Ô#ð	3Ý”G—L’L ¤¨EÑ2Ô2ˆEÝ
Œ[˜ ¨gÐ
6Ñ
6Ô
6ð	"¸!Ý”Y˜q‘\”\ˆFð	"ð	"ð	"ñ	"ô	"ð	"ð	"ð	"ð	"ð	"ð	"øøøð	"ð	"ð	"ð	"àˆ
sÁA=Á=BÂBr“)rïrórôrrÚvalue_convertersrërr
röÚ
__classcell__)rûs@r/rõrõ‹sŠø€€€€€àtÐ,Ô=Ñ>Ô>ÐØ+АUÑð(ð(ð(ð(ð(ð(ðððð@ðððððððððr1rõcó&—eZdZdZdd„Zd„Zd„ZdS)ÚSubprocessMixinzC
    Mixin for running subprocesses and capturing their output
    FNcó"—||_||_dSr“)ÚverboseÚprogress)rêrrs   r/rëzSubprocessMixin.__init__Ès€ØˆŒØ ˆŒ
ˆ
ˆ
r1có~—|j}|j}	| ¦«}|sn‚|
|||¦«nr|s tj d¦«n2tj | d¦«¦«tj ¦«Œ™| ¦«dS)z¨
        Read lines from a subprocess' output stream and either pass to a progress
        callable (if specified) or write progress information to sys.stderr.
        TNrir¨)	rrÚreadlinerŽÚstderrrÑr)Úflushr¾)rêr°rªrrr.s      r/rÄzSubprocessMixin.readerÌs»€ð
”=ˆØ”,ˆð	#Ø—’Ñ!Ô!ˆAØð
ØØÐ#ؐ˜˜GÑ$Ô$Ð$Ð$àð8Ý”J×$Ò$ SÑ)Ô)Ð)Ð)å”J×$Ò$ Q§X¢X¨gÑ%6Ô%6Ñ7Ô7Ð7Ý”
× Ò Ñ"Ô"Ð"ð	#ð	Š‰Œˆˆˆr1có0—tj|ftjtjdœ|¤Ž}tj|j|jdf¬¦«}| ¦«tj|j|jdf¬¦«}| ¦«| 	¦«| 
¦«| 
¦«|j| dd¦«n&|jrtj d¦«|S)N)Ústdoutrr)rrêrzdone.Úmainzdone.
)Ú
subprocessÚPopenÚPIPEÚ	threadingÚThreadrÄrrªrÚwaitr&rrrŽrÑ)rêÚcmdrërÚt1Út2s      r/Úrun_commandzSubprocessMixin.run_commandásç€ÝÔ˜SÐ[­¬ÅÄÐ[Ð[ÐTZÐ[Ð[ˆÝ
Ô
 T¤[¸¼À(Ð7KÐ
LÑ
LÔ
LˆØ
Š‰
Œ
ˆ
Ý
Ô
 T¤[¸¼À(Ð7KÐ
LÑ
LÔ
LˆØ
Š‰
Œ
ˆ
Ø	Š‰ŒˆØ
Š‰	Œ	ˆ	Ø
Š‰	Œ	ˆ	ØŒ=Ð$ØMŠM˜' 6Ñ*Ô*Ð*Ð*Ø
Œ\ð	(ÝŒJ×Ò˜YÑ'Ô'Ð'؈r1)FN)rïrórôrÚrërÄr$rDr1r/rrÃsP€€€€€ððð!ð!ð!ð!ðððð*
ð
ð
ð
ð
r1rcóR—tjdd|¦« ¦«S)z,Normalize a python package name a la PEP 503z[-_.]+r¨)r«Úsubr˜)r\s r/Únormalize_namer'ñs$€õŒ6(˜C Ñ&Ô&×,Ò,Ñ.Ô.Ð.r1có*—eZdZdZdZdd„Zd„Zd„ZdS)Ú
PyPIRCFilezhttps://upload.pypi.org/legacy/ÚpypiNcó —|€=tj tj d¦«d¦«}||_||_dS)Nr‰z.pypirc)rtrur&rr®r_)rêrØr_s   r/rëzPyPIRCFile.__init__s>€Ø
ˆ:Ý”—’bœg×0Ò0°Ñ5Ô5°yÑAÔAˆB؈Œ
؈Œˆˆr1có®—i}tj |j¦«r­|jp|j}t
j¦«}| |j¦«| 	¦«}d|vrë| 
dd¦«}d„| d¦«D¦«}|gkr	d|vrdg}n|D]£}d|i}| 
|d¦«|d<d|jfd	|jfd
fD]:\}}	| 
||¦«r| 
||¦«||<Œ5|	||<Œ;|dkr||jdfvr|j|d<Œ‰|d|kr|d|kri}Œ¤nod|vrkd}| 
|d¦«r| 
|d¦«}n|j}| 
|d¦«| 
|d¦«|||jd
œ}|S)NÚ	distutilsz
index-serverscóf—g|].}| ¦«dk¯| ¦«‘Œ/S)rr)rYÚservers  r/r[z#PyPIRCFile.read.<locals>.<listcomp>s8€ÐkÐkÐk¨vÐV\×VbÒVbÑVdÔVdÐhjÒVjÐVj˜FŸLšL™NœNÐVjÐVjÐVjr1rr*r/rœÚ
repositoryÚrealm)rNzserver-loginr)rœrr0r/r1)rtrur
r®r_ÚDEFAULT_REPOSITORYrÚRawConfigParserrµrÁr¿r¡Ú
DEFAULT_REALMÚ
has_option)
rêr*r0rúrÁÚ
index_serversÚ_serversr/r¤rœs
          r/rµzPyPIRCFile.read
s<€Øˆå
Œ7>Š>˜$œ-Ñ(Ô(ñ/	ØœÐ< TÔ%<ˆJå!Ô1Ñ3Ô3ˆFØKŠK˜œ
Ñ&Ô&Ð&Ø—’Ñ(Ô(ˆHؘhÐ&Ð&à &§
¢
¨;¸Ñ HÔ H
ØkÐk¸×9LÒ9LÈTÑ9RÔ9RÐkÑkÔkØ˜r’>>à Ð)Ð)Ø$* 8˜ùà"*ð(ð(˜Ø"*¨FÐ!3˜Ø-3¯ZªZ¸À
Ñ-KÔ-K˜˜zÑ*ð/;¸DÔ<SÐ-TÐW^Ð`dÔ`rÐVsØ-?ð-Að6ð6™L˜C à%×0Ò0°¸Ñ=Ô=ð6Ø.4¯jªj¸ÀÑ.EÔ.E  s¡ à.5  s¡ ð
# fÒ,Ð,°ÀÔ@WÐY_Ð?`Ð1`Ð1`Ø37Ô3J˜F <Ñ0Ð0Ø$ XÔ.°*Ò<Ð<ÀÈÔAUÐYcÒAcÐAcØ%'˜Føð%(ð&  8Ð+Ð+à'Ø×$Ò$ V¨\Ñ:Ô:ð9Ø!'§¢¨F°LÑ!AÔ!AJJà!%Ô!8Jà &§
¢
¨6°:Ñ >Ô >Ø &§
¢
¨6°:Ñ >Ô >Ø",Ø$Ø!Ô/ðððˆ
r1có—tj¦«}|j}| |¦«| d¦«s| d¦«| dd|¦«| dd|¦«t|d¦«5}| |¦«ddd¦«dS#1swxYwYdS)Nr*rœrr#)	rr3r®rµÚhas_sectionrÍrÐr'rÑ)rêrœrrúrØr-s      r/rbzPyPIRCFile.updateBsú€åÔ-Ñ/Ô/ˆØ
Œ]ˆØŠB‰ŒˆØ×!Ò! &Ñ)Ô)ð	'Ø×Ò˜vÑ&Ô&Ð&؏
Š
6˜: xÑ0Ô0Ð0؏
Š
6˜: xÑ0Ô0Ð0Ý
"c‰]Œ]ð	˜aØLŠL˜‰OŒOˆOð	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	sÂB;Â;B?ÃB?©NN)rïrórôr2r4rërµrbrDr1r/r)r)sR€€€€€à:ÐØ€Mððððð3ð3ð3ðj
ð
ð
ð
ð
r1r)cóP—t|j¬¦« ¦«S)zG
    Read the PyPI access configuration as supported by distutils.
    )r_)r)r_rµ©rs r/Ú_load_pypircr=Os#€õ˜%œ)Ð$Ñ$Ô$×)Ò)Ñ+Ô+Ð+r1có^—t¦« |j|j¦«dSr“)r)rbrœrr<s r/Ú
_store_pypircr?Vs&€ÝL„L×Ò˜œ¨¬Ñ7Ô7Ð7Ð7Ð7r1có$—tjdkrrdtj ¦«vrdSdtj ¦«vrdSdtj ¦«vrdStjSdtjvrtjdStjd	ksttd
¦«stjStj¦«\}}}}}| ¦« 	dd¦«}| 	d
d¦« 	dd¦«}|dd…dkr|›d|›S|dd…dkrQ|ddkrDd}dt|d¦«dz
|dd…fz}dddœ}|d|tjzz
}nÕ|dd…dkrddlm
}|¦«S|dd …d!krMd!}tjd"tj¦«}| |¦«}|r| ¦«}n\|dd …d#krNddl}		dd$lm}
n#t,$rddl}
YnwxYw|	 |
 ¦«|||¦«\}}}|›d|›d|›S)%aúReturn a string that identifies the current platform.  This is used mainly to
    distinguish platform-specific build directories and platform-specific built
    distributions.  Typically includes the OS name and version and the
    architecture (as supplied by 'os.uname()'), although the exact information
    included depends on the OS; eg. on Linux, the kernel version isn't
    particularly important.

    Examples of returned values:
       linux-i586
       linux-alpha (?)
       solaris-2.6-sun4u

    Windows will return one of:
       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
       win32 (all others - specifically, sys.platform is returned)

    For other non-POSIX platforms, currently just returns 'sys.platform'.

    r‡Úamd64ú	win-amd64z(arm)ú	win-arm32z(arm64)z	win-arm64Ú_PYTHON_HOST_PLATFORMr3ÚunamersrrVrmr¨NéÚlinuxÚsunosrÚ5Úsolarisz%d.%sr§éÚ32bitÚ64bit)iÿÿÿlÿÿÿÿz.%sÚaix)Úaix_platforméÚcygwinz[\d.]+Údarwin)Ú	sysconfig)rtr\rŽrÍr˜Úplatformr‹rrEr#ÚintÚmaxsizeÚ_aix_supportrOr«rFÚASCIIrrÄÚ_osx_supportr-rSÚImportErrorÚget_platform_osxÚget_config_vars)Úosnamer–ÚreleaserÍÚmachineÚbitnessrOÚrel_rer)rYrSs           r/Úget_host_platformrb`sÖ€õ(
„w$‚€Ø•c”k×'Ò'Ñ)Ô)Ð)Ð)ؐ;Ø•c”k×'Ò'Ñ)Ô)Ð)Ð)ؐ;؝œ×)Ò)Ñ+Ô+Ð+Ð+ؐ;ÝŒ|Ðð¥"¤*Ð,Ð,ÝŒzÐ1Ô2Ð2å	„w'ÒÐ¥­¨WÑ!5Ô!5ÐõŒ|Ðõ13´±
´
Ñ-€VˆT7˜G Wð\Š\‰^Œ^×
#Ò
# C¨Ñ
,Ô
,€F؏oŠo˜c 3Ñ'Ô'×/Ò/°°SÑ9Ô9€Gà
ˆbˆqˆb„zWÒÐð!˜&˜& ' 'Ð*Ð*à	ŒwÒ	Ð	ؐ1Œ:˜ÒÐØˆFØ¥ W¨Q¤Z¡¤°1Ñ!4°g¸a¸b¸b´kÐ BÑBˆGð$+ÀÐIÐIˆGØu˜w¥s¤{Ô3Ñ3Ñ3ˆGøà	ŒuÒ	Ð	Ø-Ð-Ð-Ð-Ð-Ð-؈|‰~Œ~ÐØ	ŒxÒ	Ð	؈ݔ˜I¥r¤xÑ0Ô0ˆØLŠL˜Ñ!Ô!ˆØð	 Ø—g’g‘i”iˆGøØ	ŒxÒ	Ð	ØÐÐÐð	Ø+Ð+Ð+Ð+Ð+Ð+Ð+øÝð	ð	ð	ØÐÐÐÐÐð	øøøà#/×#@Ò#@À×AZÒAZÑA\ÔA\Ð^dÐfmÐovÑ#wÔ#wÑ ˆ˜à˜˜   ¨'¨'Ð2Ð2sÈ?IÉIÉIÚwin32rBrC)Úx86Úx64Úarmcóėtjdkrt¦«Stj d¦«}|t
vrt¦«St
|S)Nr‡ÚVSCMD_ARG_TGT_ARCH)rtr\rbr‹r¿Ú_TARGET_TO_PLAT)Úcross_compilation_targets r/Úget_platformrkºsQ€Ý	„w$‚€Ý Ñ"Ô"Ð"Ý!œzŸ~š~Ð.BÑCÔCÐØ¥Ð6Ð6Ý Ñ"Ô"Ð"ÝÐ3Ô4Ð4r1r:)rÞr“rfrh)…r³ÚcollectionsrÚ
contextlibræÚglobrr„rDr¶ÚloggingrtrDr«ràr›rZrrŽr2rÔr¿rÚdummy_threadingr_rrÚcompatrrr	r
rrr
rrrrrrrrrrrrrÚ	getLoggerrïrrFrrPrOr:rCr?rdr%rFror‰r‘r–rŸr¥rÉrÒÚcontextmanagerrØrÛrårírçrürþrorqÚVERBOSEr€r¹r’r–r™ržr¢r¦ÚIr­r©r²rµr¶r½rÆrÊrËrÎrÐrÜrîÚARCHIVE_EXTENSIONSrBrLryrSrƒr}r~rr‰r®rŠr‹rr¶rºrÊrÎrÖrØrärîrõrr'r)r=r?rbrirkrDr1r/ú<module>rwsÍ	ðð
€
€
€
ØÐÐÐÐÐØÐÐÐØ
€
€
€
Ø#Ð#Ð#Ð#Ð#Ð#Ø	€	€	€	Ø€€€Ø€€€Ø	€	€	€	ØÐÐÐØ	€	€	€	Ø
€
€
€
ðØ€J€J€J€JøØðððØ
€C€C€CðøøøàÐÐÐØ
€
€
€
Ø€€€Ø€€€Ø€€€ð(ØÐÐÐÐøØð(ð(ð(Ø'Ð'Ð'Ð'Ð'Ð'ð(øøøà€€€àÐÐÐÐÐð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð2ð
ˆÔ	˜8Ñ	$Ô	$€ðˆRŒZÐ)Ñ
*Ô
*€
ؐR”ZÐ 3Ñ4Ô4ÐØ
ˆRŒZÐ5Ñ
6Ô
6€
ØˆBŒJÐDÑEÔE€	Ø€R„ZÑԀ؀b„jÑÔ€ØˆBŒJ{Ñ#Ô#€	؈rŒzÐEÑFÔF€ðW!ðW!ðW!ðtytðytðytðxððð4ðððððð$

ð

ð

ð

ð ððð,ð,ð,ð^ððð&ÔððñÔððÔððñÔððÔð&ð&ð&ñÔð&ð
ð
ð
ð
ð
fñ
ô
ð
ð  ð ð ð6wðwðwðwðw6ñwôwðwðtððððððð&ñôðð4ˆ2Œ:ððœ:ñ	'ô'€ðððð>&(ð&(ð&(ð&(ðRðððð"
ð
ð
ð&ð&ð&ððððððð&˜2œ:ð'8Ø9;¼ñ?ô?Ðà”Ð,Ñ-Ô-€ððððð4"”*ð9ñ:ô:€ð
/ð
/ð
/ð ððð8ððð*DÐðððð#ð#ð#ð)ð)ð)ð)ð)ˆFñ)ô)ð)ðXCðCðCðCðCñCôCðCðRF!ðF!ðF!ðF!ðF!ñF!ôF!ðF!ðZUÐðAðAðAðAðHððð$	&€ðW+ðW+ðW+ðW+ðW+ˆvñW+ôW+ðW+ð|
ˆBŒJ~Ñ&Ô&€	Ø"˜œ
Ð#?Ñ@Ô@ÐØ b”jÐ!5Ñ6Ô6Ðððððððð8ðV3Ø\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\ððððð˜'Ô1ñôððBððððÐ'ñôððT3ð3ð3ð3ð3˜<¨ñ3ô3ð3ð#ð#ð#ð#ð#	Ô#ñ#ô#ð#ðð'ð'ð'ð'ð'ð'˜	Ô/ñ'ô'ð'ð"<ð<ð<ð<ð<)Ô'ñ<ô<ð<ð2$ð$ð$ðððððˆfñôððððððñôðð6"ð"ð"ð"ð"ñ"ô"ð"ð,5ð5ð5ð5ð5Ð#ñ5ô5ð5ðp+ð+ð+ð+ð+fñ+ô+ð+ð\/ð/ð/ð"JðJðJðJðJñJôJðJðZ,ð,ð,ð8ð8ð8ðP3ðP3ðP3ðhØØðð€ð5ð5ð5ð5ð5s!¶;»AÁAÁA"Á"	A.Á-A.