PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib/python2.7/site-packages/setuptools
Viewing File: /usr/lib/python2.7/site-packages/setuptools/package_index.pyc
� ��hc@s_dZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZddlmZddlmZddlmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*ddlm+Z+dd l,m-Z-dd l.m/Z/dd l.m0Z0dd l1m2Z2ej3d �Z4ej3dej5�Z6ej3d�Z7ej3dej5�j8Z9dj:�Z;ddddgZ<dZ=d�Z>d�Z?e@d�ZAe@d�ZBe@d�ZCe@e e@d�ZDe@d�ZEd�ZFej3dej5�ZGeFd ��ZHd!ejId" ed#�d$jIfZJd%eKfd&��YZLd'eLfd(��YZMdefd)��YZNej3d*�jOZPd+�ZQd,�ZRd-�ZSdd.�ZTd/�ZUejVd0�ZWeTe=�eW�ZWd1�ZXd2�ZYdS(3s#PyPI and direct package downloadingi����N( t CHECKOUT_DISTt Distributiont BINARY_DISTtnormalize_patht SOURCE_DISTtrequiret Environmenttfind_distributionst safe_namet safe_versiont to_filenamet Requirementt DEVELOP_DIST(t ssl_support(tlog(tDistutilsError(turllib2thttplibtStringIOt HTTPErrorturlparset urlunparsetunquotet splitusert url2pathnametname2codepointtunichrturljointurlsplitt urlunsplit(t filterfalse(t translate(thashlib(twraps(tget_all_headerss^egg=([-A-Za-z0-9_.]+)$shref\s*=\s*['"]?([^'"> ]+)s�<a href="([^"#]+)">([^<]+)</a> \s+\(<a (?:title="MD5 hash" \s+)href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\)s([-+.a-z0-9]{2,}):s.tar.gz .tar.bz2 .tar .zip .tgzt PackageIndextdistros_for_urltparse_bdist_wininsttinterpret_distro_nameicCs�|j�}d\}}}|jd�r�|jd�rL|d }d}q�|jdd�r~|dd!}|d }d}q�|jd �r�|d }d }q�|jd d �r�|dd!}|d }d }q�n|||fS(s=Return (base,pyversion) or (None,None) for possible .exe names.exes .win32.exei����twin32s .win32-pyi�i����i����s.win-amd64.exei�s win-amd64s .win-amd64-pyi��N(NNN(tlowertNonetendswitht startswith(tnameR(tbasetpy_vertplat((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR%-s$           cCs�t|�\}}}}}}t|jd�d�}|dkrk|dkrkt|jd�d�}nd|kr�|jdd�\}}n||fS(Nt/i����ssourceforge.nettdownloadi����t#i(RRtsplit(turltschemetservertpatht parameterstquerytfragmentR-((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytegg_info_for_urlEs ccs�t|�\}}xt|||�D] }|Vq%W|r�tj|�}|r�x1t||jd�|dt�D] }|VqqWq�ndS(sEYield egg or source distribution objects that might be found at a URLit precedenceN(R;tdistros_for_locationt EGG_FRAGMENTtmatchR&tgroupR(R4tmetadataR-R:tdistR?((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR$Ms "cCs�|jd�r|d }n|jd�rMd|krMtj|||�gS|jd�r�t|�\}}}|dk r�t||||t|�Snx>tD]6}|j|�r�|t|� }t|||�Sq�WgS(s:Yield egg or source distribution objects based on basenames.egg.zipi����s.eggt-s.exeN( R*Rt from_locationR%R)R&Rt EXTENSIONStlen(tlocationtbasenameRAtwin_baseR.tplatformtext((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR=Ys   cCs"tt|�tjj|�|�S(sEYield possible egg or source distribution objects based on a filename(R=RtosR7RH(tfilenameRA((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytdistros_for_filenamensc cs�|jd�}|s^xFt|d�D]1\}}t|�dkr&|jd�r&dSq&Wnxatdt|�d�D]F}t||dj|| �dj||�d|d|d |�VqxWdS( s�Generate 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! RCiispy2.Nit py_versionR<RJ(R3t enumerateRFR+trangeRtjoin( RGRHRAROR<RJtpartstitp((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR&us!  ) ccs�t�}|j}|dkrMxgt|j|�D]}||�|Vq1Wn;x8|D]0}||�}||krT||�|VqTqTWdS(sHList unique elements, preserving order. Remember all elements ever seen.N(tsettaddR)Rt __contains__(titerabletkeytseentseen_addtelementtk((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytunique_everseen�s         cst���fd��}|S(ss Wrap a function returning an iterable such that the resulting iterable only ever yields unique items. cst�||��S(N(R_(targstkwargs(tfunc(s</usr/lib/python2.7/site-packages/setuptools/package_index.pytwrapper�s(R!(RbRc((Rbs</usr/lib/python2.7/site-packages/setuptools/package_index.pyt unique_values�ss(<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>ccsx�tj|�D]�}|j�\}}tttj|j�jd���}d|ksgd|krx7t j|�D]#}t |t |j d���VqwWqqWxdd D]\}|j |�}|dkr�t j||�}|rt |t |j d���Vqq�q�WdS( sEFind rel="homepage" and rel="download" links in `page`, yielding URLst,thomepageR1is <th>Home Pages<th>Download URLi����N(s <th>Home Pages<th>Download URL(tRELtfinditertgroupsRVtmaptstrtstripR(R3tHREFRt htmldecodeR@tfindtsearch(R4tpageR?ttagtreltrelstpos((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfind_external_links�s'(  sPython-urllib/%s setuptools/%sit setuptoolsitContentCheckercBs)eZdZd�Zd�Zd�ZRS(sP A null content checker that defines the interface for checking content cCsdS(s3 Feed a block of data to the hash. N((tselftblock((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfeed�scCstS(sC Check the hash. Return False if validation fails. (tTrue(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytis_valid�scCsdS(su Call reporter with information about the checker (hash name) substituted into the template. N((Rytreporterttemplate((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytreport�s(t__name__t __module__t__doc__R{R}R�(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRx�s  t HashCheckercBsJeZejd�Zd�Zed��Zd�Zd�Z d�Z RS(sK(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=(?P<expected>[a-f0-9]+)cCsO||_|dkr0tj|dt�|_ntj|�|_||_dS(Ntmd5tusedforsecurity(t hash_nameR tnewtFalsethashtexpected(RyR�R�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt__init__�s   cCsLt|�d}|st�S|jj|�}|s<t�S||j��S(s5Construct a (possibly null) ContentChecker from a URLi����(RRxtpatternRpt groupdict(tclsR4R:R?((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfrom_url�scCs|jj|�dS(N(R�tupdate(RyRz((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR{�scCs|jj�|jkS(N(R�t hexdigestR�(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR}scCs||j}||�S(N(R�(RyR~Rtmsg((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�s ( R�R�tretcompileR�R�t classmethodR�R{R}R�(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s    cBs�eZdZdd'd(ed�Zed�Zed�Zed�Z d�Z d�Z d �Z d �Z d(d �Zd �Zd(d �Zd�Zd�Zd�Zd�Zd�Zeeed(d�Zeed�Zd�ZdZd�Zd�Zd(d�Zed��Zd�Zed��Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&ed#��Z'd$�Z(d%�Z)d&�Z*RS()s;A distribution index that scans web pages for download URLsshttps://pypi.python.org/simplet*cOs�tj|||�|d|jd� |_i|_i|_i|_tjdj t t |���j |_ g|_|r�tjr�|s�tj�r�tj|�|_n tj|_dS(NR0t|(RR�R*t index_urlt scanned_urlst fetched_urlst package_pagesR�R�RRRjRR?tallowstto_scanR t is_availabletfind_ca_bundlet opener_fortopenerRturlopen(RyR�thostst ca_bundlet verify_sslR`tkw((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR� s   ' !c CsU||jkr| rdSt|j|<t|�sD|j|�dStt|��}|r�|j|�sodS|jd|�n|s�| s�||jkr�tt |j |��dS|j|�s�t|j|<dS|j d|�t|j|<|j |d|�}|dkrdSt|j|j<d|jjdd�j�krZ|j�dS|j}|j�}t|t�s�t|t�r�d}n|jjd �p�d}|j|d �}n|j�xBtj|�D]1}t|t|jd ���} |j| �q�W|j|j �rQt!|d d�d krQ|j"||�}ndS(s<Evaluate a URL as a possible download, and maybe retrieve itNsFound link: %ss Reading %ss<Download error on %s: %%s -- Some packages may not be found!thtmls content-typetslatin-1tcharsettignoreitcodei�(#R�R|t URL_SCHEMEtprocess_filenametlistR$turl_oktdebugR�RjRWtinfotopen_urlR)R4theaderstgetR(tclosetreadt isinstanceRkRt get_paramtdecodeRmRhRRnR@t process_urlR+R�tgetattrt process_index( RyR4tretrievetdiststfR-RqR�R?tlink((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�sN      !     *cCs�tjj|�s&|jd|�dStjj|�r�| r�tjj|�}x9tj|�D]%}|jtjj||�t �qaWnt |�}|r�|j d|�t t |j|��ndS(Ns Not found: %ss Found: %s(RLR7texiststwarntisdirtrealpathtlistdirR�RRR|RNR�R�RjRW(RytfntnestedR7titemR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�Js& cCs}t|�}|r-|jd�j�dksF|jt|�d�rJtSd}|rit||��n|j||�dS(Nitfiles, Link to % s ***BLOCKED*** by --allow-hosts (R�R@R(R�RR|RR�(RyR4tfataltsR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�Zs :cCsfx_|D]W}tjj|�rx<tj|�D](}|jd�r/|j||�q/q/WqqWdS(Ns .egg-link(RLR7R�R�R*t scan_egg_link(Ryt search_pathR�tentry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytscan_egg_linksds  cCs�gttjttjj||���D]}|r(|^q(}t|�dkr�xXttjj||d��D]4}tjj||�|_ t |_ |j |�qrWndS(Nii( RjRkRltopenRLR7RRRFRRGRR<RW(RyR7R�t_ftlinesRB((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�ks 4& c s�fd�}xQtj|�D]@}y&|t|t|jd����Wqtk r^qXqW||�\}}|r xyt||�D]h}t|�\}} |jd�r�| r�|r�|d||f7}q��j |�n�j |�q�Wt j d�|�SdSdS(s#Process the contents of a PyPI pagecs�|j�j�r�ttt|t�j�jd���}t|�dkr�d|dkr�t|d�}t|d�}t �j j |j �i�|<t |�t |�fSndS(NR0iR2ii(NN(R+R�R�RjRRFR3RR R|R�t setdefaultR(R R)(R�RStpkgtver(Ry(s</usr/lib/python2.7/site-packages/setuptools/package_index.pytscanvs%"is.pys #egg=%s-%scSsd|jddd�S(Ns<a href="%s#md5=%s">%s</a>iii(R@(tm((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt<lambda>�sR�N( RmRhRRnR@t ValueErrorRvR;R*tneed_version_infotscan_urltPYPI_MD5tsub( RyR4RqR�R?R�R�tnew_urlR-tfrag((Rys</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�ts$&  cCs|jd|�dS(NsPPage at %s links to .py file(s) without version info; an index scan is required.(tscan_all(RyR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��scGsO|j|jkr;|r+|j||�n|jd�n|j|j�dS(Ns6Scanning index of all packages (this may take a while)(R�R�R�R�R�(RyR�R`((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s  cCs�|j|j|jd�|jj|j�sN|j|j|jd�n|jj|j�ss|j|�nx3t|jj|jd��D]}|j|�q�WdS(NR0(( R�R�t unsafe_nameR�R�RZt project_nametnot_found_in_indexR�(Ryt requirementR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt find_packages�s%cCsk|j�|j|�x8||jD])}||kr;|S|jd||�q%Wtt|�j||�S(Ns%s does not match %s(tprescanR�RZR�tsuperR#tobtain(RyR�t installerRB((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s   cCsi|j|jd|�|j�se|j�tj|�td|jjtj j |�f��ndS(s- checker is a ContentChecker sValidating %%s checksum for %ss7%s validation failed for %s; possible download problem?N( R�R�R}R�RLtunlinkRR�R,R7RH(RytcheckerRMttfp((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt check_hash�s     cCsrxk|D]c}|jdksJt|� sJ|jd�sJtt|��rZ|j|�q|jj|�qWdS(s;Add `urls` to the list that will be prescanned for searchessfile:N(R�R)R�R+R�R$R�tappend(RyturlsR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytadd_find_links�s  cCs2|jr%tt|j|j��nd|_dS(s7Scan urls scheduled for prescanning (e.g. --find-links)N(R�R�RjR�R)(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s cCsN||jr |jd}}n|jd}}|||j�|j�dS(Ns#Couldn't retrieve index page for %rs3Couldn't find index page for %r (maybe misspelled?)(RZR�R�R�R�(RyR�tmethR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s   cCs�t|t�s�t|�}|rp|j||�}t|�\}}|jd�rl|j|||�}n|Stjj |�r�|Sytj |�}Wq�t k r�t d|f��q�Xnt |j||�dd�S(sLocate 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. s.pys1Not a URL, existing file, or requirement spec: %rRGN(R�R R�t _download_urlR;R*t gen_setupRLR7R�tparseR�RR�tfetch_distributionR)(RytspecttmpdirR5tfoundR-R:((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR1�s"  c sK�jd|�i�d}d����fd�}|rc�j��j|�||�}n|dk r�|p�|||�}n|dkr��jdk r��j�||�}n|dkr�| r��j|�||�}n|dkr�jd�r dpd|�n/�jd|�|jd�j|j|��SdS( s|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. sSearching for %scs�|dkr�}nx�||jD]q}|jtkrn� rn|�kr#�jd|�d�|<q#q#n||kr#|jtks�� r#|Sq#WdS(Ns&Skipping development or system egg: %si(R)RZR<R R�R(treqtenvRB(t develop_okRytskippedtsource(s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRo2s    "s2No local packages or download links found for %s%ssa source distribution of R�sBest match: %sRGN( R�R)R�R�R�R�tcloneR1RG( RyR�R�t force_scanR�R�t local_indexRBRo((R�RyR�R�s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�s.       cCs/|j||||�}|dk r+|jSdS(s3Obtain 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(R�R)RG(RyR�R�RR�RB((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfetch\s c Csqtj|�}|rLgt||jd�d�D]}|jr1|^q1pOg}t|�dkrBtjj |�}tjj |�|kr�tjj ||�}ddl m } | ||�s�tj||�|}q�nttjj |d�d�} | jd|dj|djtjj|�df�| j�|S|ratd||f��n td ��dS( Nii����(tsamefilessetup.pytwsIfrom setuptools import setup setup(name=%r, version=%r, py_modules=[%r]) is�Can't unambiguously interpret project/version identifier %r; any dashes in the name or version should be escaped using underscores. %rspCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.(R>R?R&R@R)tversionRFRLR7RHtdirnameRRtsetuptools.command.easy_installRtshutiltcopy2R�twriteR�tsplitextR�R( RyRMR:R�R?tdR�RHtdstRR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�is44  i c Cs�|jd|�d \}}}zItj|�}|j|�}t|t�rqtd||j|j f��n|j�}d}|j } d} d|kr�t |d�} t t t| ��} |j|||| | �nt|d�}x`trO|j| �} | rK|j| �|j| �|d7}|j|||| | �q�Pq�W|j|||�|SWd|r~|j�n|r�|j�nXdS( NsDownloading %ssCan't download %s: %s %sii����scontent-lengthsContent-Lengthtwbi(NNN(R�R)R�R�R�R�RRR�R�t dl_blocksizeR"tmaxRjtintt reporthookR�R|R�R{R R�R�( RyR4RMtfpR�R�R�R�tblocknumtbstsizetsizesRz((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt _download_to�s>        cCsdS(N((RyR4RMRtblksizeR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�scCs�|jd�rt|�Syt||j�SWn�ttjfk r�tj�d}dj g|j D]}t |�^qf�}|r�|j ||�q�t d||f��n'tjk r�tj�d}|Stjk r/tj�d}|r|j ||j�q�t d||jf��n�tjk r�tj�d}|rk|j ||j�q�t d||jf��nStjk r�tj�d}|r�|j ||�q�t d||f��nXdS(Nsfile:it s%s %ssDownload error for %s: %ss;%s returned a bad status line. The server might be down, %s(R+t local_opentopen_with_authR�R�Rt InvalidURLtsystexc_infoRRR`RkR�RRRtURLErrortreasont BadStatusLinetlinet HTTPException(RyR4twarningtvtargR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s@ +cCs�t|�\}}|rLx7d|krH|jdd�jdd�}qWnd}|jd�rn|d }ntjj||�}|jt|��s�tdj |���n|S( sB >>> import pathlib >>> du = PackageIndex._resolve_download_filename >>> root = getfixture('tmp_path') >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz' >>> str(pathlib.Path(du(url, root)).relative_to(root)) 'setuptools-78.1.0.tar.gz' Ensures the target is always in tmpdir. >>> url = 'https://anyhost/%2fhome%2fuser%2f.ssh%2fauthorized_keys' >>> du(url, root) Traceback (most recent call last): ... ValueError: Invalid filename... s..t.s\t_t__downloaded__s.egg.zipi����sInvalid filename {}( R;treplaceR*RLR7RRR+RkR�tformat(R4R�R,R:RM((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt_resolve_download_filename�s% cCs4|j||�}|j||�p3|j||�S(s2 Determine the download filename. (R-t _download_vcst_download_other(RyR4R�RM((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�scCsdt|�j}|jd�\}}}tddgdgt|��}tt|h|@�d�S(s  >>> rvcs = PackageIndex._resolve_vcs >>> rvcs('git+http://foo/bar') 'git' >>> rvcs('hg+https://foo/bar') 'hg' >>> rvcs('git:myhost') 'git' >>> rvcs('hg:myhost') >>> rvcs('http://foo/bar') t+tsvntgitthgN(RR5t partitionRVtbooltnexttiterR)(R4R5tpretseptposttallowed((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt _resolve_vcss #c Cs�|j|�}|sdS|dkr5|j||�S|jd�\}}}|j|�\}}|jd�tj|dd||g�td|d|dd|gd |d |d dd |d g�}|dk r�|jd�tj||�n|S(NR1R2s*Doing {vcs} clone from {url} to {filename}R�s--quietR2s-CtcheckoutR3s--cwdtups-rs-qsChecking out {rev}( R<t _download_svnR4t_vcs_split_rev_from_urlR�t subprocesst check_calltdictR)(RyR4t spec_filenametvcsRMR)trevt co_commands((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR.!s   !  cCsTt|�j}|dkr4tjjt|�j�S|j|t�|j ||�S(NR�( RR5turllibtrequestRRR7R�R|t_attempt_download(RyR4RMR5((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR/8s  cCs|j|t�dS(N(R�R|(RyR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�@scCsK|j||�}d|jdd�j�krC|j|||�S|SdS(NR�s content-typeR�(RR�R(t_download_html(RyR4RMR�((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRJCscCs�t|�}xW|D]O}|j�rtjd|�r^|j�tj|�|j||�SPqqW|j�tj|�td|��dS(Ns <title>([^- ]+ - )?Revision \d+:sUnexpected HTML page found at ( R�RlR�RpR�RLR�R?R(RyR4R�RMR�R#((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRKJs       c Csh|jdd�d}g}|j�jd�r'd|kr't|�\}}}}}} | r'|jd�r'd|dkr'|djdd�\}}t|�\} } | r$d | kr�| jd d�\} } d | d | g}n d | g}| }t|||||| f�}q$q'n|jd ||�d ddg|||g}tj|�|S(NR2iissvn:t@s//R0it:s --usernames --passwords'Doing subversion checkout from %s to %sR1R=s-q( R3R(R+RRRR�RARB(RyR4RMtcredsR5tnetlocR7RUtqR�tauththosttusertpasswordR1((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR?Ys$!&  ' c Cs�t|�}|jjdd�d}|jjd�\}}}|jd�\}}}|rj||fn |d f\}} |jd|d|dd �j�} | | fS( s� Given a possible VCS URL, return a clean URL and resolved revision if any. >>> vsrfu = PackageIndex._vcs_split_rev_from_url >>> vsrfu('git+https://github.com/pypa/setuptools@v69.0.0#egg-info=setuptools') ('https://github.com/pypa/setuptools', 'v69.0.0') >>> vsrfu('git+https://github.com/pypa/setuptools#egg-info=setuptools') ('https://github.com/pypa/setuptools', None) >>> vsrfu('http://foo/bar') ('http://foo/bar', None) R0ii����R2RLR5R7R:R�N( RR5R3R7R4t rpartitionR)t_replacetgeturl( R4RSt clean_schemetno_fragment_pathR)R8R9R:t clean_pathRFtresolved((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR@ps $ cGstj||�dS(N(RR�(RyR�R`((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��scGstj||�dS(N(RR�(RyR�R`((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��scGstj||�dS(N(RR�(RyR�R`((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR��s(R�N(+R�R�R�R)R|R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R1R�RR�RRRR�t staticmethodR-R�R<R.R/R�RJRKR?R@R�R�R�(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR#sN 0   *       )A * $  ($         s!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?cCs3t|t�s|S|dkr)t|�St|�S(Ni�(R�RRtchr(tc((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytuchr�s  cCs{|jd�}|jd�r4t|dd�}n=|jd�rVt|d�}ntj||jd��}t|�S(Nis#xiiR2i(R@R+RRR�R_(R?twhat((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt decode_entity�scCs tt|�S(s'Decode HTML entities in the given text.(t entity_subRa(ttext((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRn�scs�fd�}|S(Ncs��fd�}|S(Ncs?tj�}tj��z�||�SWdtj|�XdS(N(tsockettgetdefaulttimeouttsetdefaulttimeout(R`Rat old_timeout(Rbttimeout(s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt_socket_timeout�s   ((RbRi(Rh(Rbs</usr/lib/python2.7/site-packages/setuptools/package_index.pyRi�s((RhRi((Rhs</usr/lib/python2.7/site-packages/setuptools/package_index.pytsocket_timeout�s cCs=t|�}|j�}tj|�}|j�}|j�S(s� A function compatible with Python 2.3-3.3 that will encode auth from a URL suitable for an HTTP header. >>> _encode_auth('username%3Apassword') u'dXNlcm5hbWU6cGFzc3dvcmQ=' (Rtencodetbase64t encodestringR�trstrip(RQtauth_st auth_bytest encoded_bytestencoded((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt _encode_auth�s    cCsQt|�\}}}}}}|jd�r?tjd��n|dkr`t|�\}} nd }|r�dt|�}t|| ||||f�} tj | �} | j d|�ntj |�} | j dt �|| �} |rMt| j �\} }}}}}| |krM|| krMt| |||||f�| _ qMn| S( s4Open a urllib2 request, handling HTTP authenticationRMsnonnumeric port: ''thttpthttpssBasic t Authorizations User-Agent(RtRuN( RR*RRRR)RsRRtRequestt add_headert user_agentR4(R4R�R5ROR7tparamsR9R�RQRRR�RIRts2th2tpath2tparam2tquery2tfrag2((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�s&  !'cCs|S(N((R4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt fix_sf_url�scCsot|�\}}}}}}t|�}tjj|�rItj|�S|jd�r=tjj|�r=g}x�tj |�D]�} | dkr�t tjj || �d�} | j �} | j �Pn.tjjtjj || ��r�| d7} n|jd| | f�q�Wd|ddj |�} d\} } nd\} } } t|| | id d6t| ��S(s7Read a local path, with special support for directoriesR0s index.htmltrbs<a href=%r>%s</a>s<html><head><title>%s</title>s</head><body>%s</body></html>s i�tOKi�sPath not founds Not founds text/htmls content-type(i�R�(i�sPath not founds Not found(RRRLR7tisfileRR�R*R�R�R�RRR�R�R�RR(R4R5R6R7tparamR9R�RMtfilesR�Rtbodytstatustmessage((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR�s*  !   !  (ZR�RRARLR�RRdRlt pkg_resourcesRRRRRRRRRR R R R RwR t distutilsRtdistutils.errorsRtsetuptools.compatRRRRRRRRRRRRRRRtfnmatchRtsetuptools.py24compatR R!tsetuptools.py27compatR"R�R>tIRmR�R?R�R3REt__all__t_SOCKET_TIMEOUTR%R;R)R$R=RNR&R_RdRgRvRRytobjectRxR�R#R�RbR_RaRnRjRsR�RR�R(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt<module>sl       X^         "  !$���   $