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/lib64/python2.7
Viewing File: /usr/lib64/python2.7/urllib2.pyo
� zfc@sWdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZyddlmZWn!ek r�ddlmZnXyddlZWnek reZnXeZddlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ddlm%Z%m&Z&m'Z'm(Z(e j)d Z*da,de j-ddedd�Z.d�Z/d e0fd ��YZ1d e1efd ��YZ2ej3d �Z4d�Z5ddDd��YZ6ddEd��YZ7d�Z8ddFd��YZ9de9fd��YZ:de9fd��YZ;de9fd��YZ<d�Z=de9fd��YZ>ddGd ��YZ?d!e?fd"��YZ@d#dHd$��YZAd%eAe9fd&��YZBd'eAe9fd(��YZCd)�ZDd*dId+��YZEd,e9eEfd-��YZFd.e9eEfd/��YZGd0e9fd1��YZHd2eHfd3��YZIeJed4�r�d5eHfd6��YZKnd7e9fd8��YZLd9e9fd:��YZMd;�ZNd<�ZOd=�ZPd>e9fd?��YZQd@e9fdA��YZRdBeRfdC��YZSdS(Js! An extensible library for opening URLs using a variety of protocols The simplest way to use this module is to call the urlopen function, which accepts a string containing a URL or a Request object (described below). It opens the URL and returns the results as file-like object; the returned object has some extra methods described below. The OpenerDirector manages a collection of Handler objects that do all the actual work. Each Handler implements a particular protocol or option. The OpenerDirector is a composite object that invokes the Handlers needed to open the requested URL. For example, the HTTPHandler performs HTTP GET and POST requests and deals with non-error returns. The HTTPRedirectHandler automatically deals with HTTP 301, 302, 303 and 307 redirect errors, and the HTTPDigestAuthHandler deals with digest authentication. urlopen(url, data=None) -- Basic usage is the same as original urllib. pass the url and optionally data to post to an HTTP URL, and get a file-like object back. One difference is that you can also pass a Request instance instead of URL. Raises a URLError (subclass of IOError); for HTTP errors, raises an HTTPError, which can also be treated as a valid response. build_opener -- Function that creates a new OpenerDirector instance. Will install the default handlers. Accepts one or more Handlers as arguments, either instances or Handler classes that it will instantiate. If one of the argument is a subclass of the default handler, the argument will be installed instead of the default. install_opener -- Installs a new opener as the default opener. objects of interest: OpenerDirector -- Sets up the User Agent as the Python-urllib client and manages the Handler classes, while dealing with requests and responses. Request -- An object that encapsulates the state of a request. The state can be as simple as the URL. It can also include extra HTTP headers, e.g. a User-Agent. BaseHandler -- exceptions: URLError -- A subclass of IOError, individual protocols have their own specific subclass. HTTPError -- Also a valid HTTP response, so you can treat an HTTP error as an exceptional event or valid response. internals: BaseHandler and parent _call_chain conventions Example usage: import urllib2 # set up authentication info authinfo = urllib2.HTTPBasicAuthHandler() authinfo.add_password(realm='PDQ Application', uri='https://mahler:8092/site-updates.py', user='klem', passwd='geheim$parole') proxy_support = urllib2.ProxyHandler({"http" : "http://ahad-haam:3128"}) # build a new opener that adds authentication and caching FTP handlers opener = urllib2.build_opener(proxy_support, authinfo, urllib2.CacheFTPHandler) # install it urllib2.install_opener(opener) f = urllib2.urlopen('http://www.python.org/') i����N(tStringIO(tunwraptunquotet splittypet splithosttquotet addinfourlt splitporttsplittagttoBytest splitattrt ftpwrappert splitusert splitpasswdt splitvalue(t localhostt url2pathnamet getproxiest proxy_bypassic Cs�|s|s|r�|dk r-td��ntsBtd��ntjdtjjd|d|�}td|�}t|�}nF|r�td|�}t|�}n"t dkr�t�a }nt }|j |||�S(NsDYou can't pass both context and any of cafile, capath, and cadefaultsSSL support not availabletpurposetcafiletcapathtcontext( tNonet ValueErrort _have_ssltssltcreate_default_contexttPurposet SERVER_AUTHt HTTPSHandlert build_openert_openertopen( turltdatattimeoutRRt cadefaultRt https_handlertopener((s/usr/lib64/python2.7/urllib2.pyturlopen�s$    cCs |adS(N(R (R'((s/usr/lib64/python2.7/urllib2.pytinstall_opener�stURLErrorcBseZd�Zd�ZRS(cCs|f|_||_dS(N(targstreason(tselfR,((s/usr/lib64/python2.7/urllib2.pyt__init__�s cCs d|jS(Ns<urlopen error %s>(R,(R-((s/usr/lib64/python2.7/urllib2.pyt__str__�s(t__name__t __module__R.R/(((s/usr/lib64/python2.7/urllib2.pyR*�s t HTTPErrorcBsAeZdZejZd�Zd�Zed��Zd�Z RS(sBRaised when HTTP error occurs, but also acts like non-error returncCsV||_||_||_||_||_|dk rR|j||||�ndS(N(tcodetmsgthdrstfptfilenameRt_HTTPError__super_init(R-R"R3R4R5R6((s/usr/lib64/python2.7/urllib2.pyR.�s      cCsd|j|jfS(NsHTTP Error %s: %s(R3R4(R-((s/usr/lib64/python2.7/urllib2.pyR/�scCs|jS(N(R4(R-((s/usr/lib64/python2.7/urllib2.pyR,�scCs|jS(N(R5(R-((s/usr/lib64/python2.7/urllib2.pytinfo�s( R0R1t__doc__RR.R8R/tpropertyR,R9(((s/usr/lib64/python2.7/urllib2.pyR2�s   s:\d+$cCs_|j�}tj|�d}|dkr@|jdd�}ntjd|d�}|j�S(s�Return request-host, as defined by RFC 2965. Variation from RFC: returned value is lowercased, for convenient comparison. ittHost(t get_full_urlturlparset get_headert _cut_port_retsubtlower(trequestR"thost((s/usr/lib64/python2.7/urllib2.pyt request_host�s   tRequestcBs�eZdided�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Z d�Z d �Z d �Zd �Zd �Zd �Zd�Zd�Zd�Zdd�Zd�ZRS(cCs�t|�|_t|j�\|_|_d|_d|_d|_d|_||_ i|_ x*|j �D]\}}|j ||�qmWi|_ |dkr�t|�}n||_||_dS(N(Rt_Request__originalRt_Request__fragmentRttypeREtportt _tunnel_hostR#theaderstitemst add_headertunredirected_hdrsRFtorigin_req_hostt unverifiable(R-R"R#RMRQRRtkeytvalue((s/usr/lib64/python2.7/urllib2.pyR.�s         cCs<|dkr/t|d|d��|j|St|�dS(Nt_Request__r_typet_Request__r_hosttget_i (RURV(tgetattrt__dict__tAttributeError(R-tattr((s/usr/lib64/python2.7/urllib2.pyt __getattr__�s  cCs|j�rdSdSdS(NtPOSTtGET(thas_data(R-((s/usr/lib64/python2.7/urllib2.pyt get_methods cCs ||_dS(N(R#(R-R#((s/usr/lib64/python2.7/urllib2.pytadd_datascCs |jdk S(N(R#R(R-((s/usr/lib64/python2.7/urllib2.pyR_ scCs|jS(N(R#(R-((s/usr/lib64/python2.7/urllib2.pytget_datascCs(|jrd|j|jfS|jSdS(Ns%s#%s(RIRH(R-((s/usr/lib64/python2.7/urllib2.pyR>s cCsV|jdkrOt|j�\|_|_|jdkrOtd|j�qOn|jS(Nsunknown url type: %s(RJRRRHRUR(R-((s/usr/lib64/python2.7/urllib2.pytget_types cCsR|jdkrKt|j�\|_|_|jrKt|j�|_qKn|jS(N(RERRRURVR(R-((s/usr/lib64/python2.7/urllib2.pytget_hosts  cCs|jS(N(RV(R-((s/usr/lib64/python2.7/urllib2.pyt get_selector%scCsJ|jdkr(|j r(|j|_n||_|j|_||_dS(Nthttps(RJRLRERHRV(R-RERJ((s/usr/lib64/python2.7/urllib2.pyt set_proxy(s   cCs|j|jkS(N(RVRH(R-((s/usr/lib64/python2.7/urllib2.pyt has_proxy1scCs|jS(N(RQ(R-((s/usr/lib64/python2.7/urllib2.pytget_origin_req_host4scCs|jS(N(RR(R-((s/usr/lib64/python2.7/urllib2.pytis_unverifiable7scCs||j|j�<dS(N(RMt capitalize(R-RStval((s/usr/lib64/python2.7/urllib2.pyRO:scCs||j|j�<dS(N(RPRk(R-RSRl((s/usr/lib64/python2.7/urllib2.pytadd_unredirected_header>scCs||jkp||jkS(N(RMRP(R-t header_name((s/usr/lib64/python2.7/urllib2.pyt has_headerBscCs"|jj||jj||��S(N(RMtgetRP(R-Rntdefault((s/usr/lib64/python2.7/urllib2.pyR@Fs cCs)|jj�}|j|j�|j�S(N(RPtcopytupdateRMRN(R-R5((s/usr/lib64/python2.7/urllib2.pyt header_itemsKsN(R0R1RtFalseR.R\R`RaR_RbR>RcRdReRgRhRiRjRORmRoR@Rt(((s/usr/lib64/python2.7/urllib2.pyRG�s(               tOpenerDirectorcBsSeZd�Zd�Zd�Zd�Zdejd�Z dd�Z d�Z RS(cCsMdt}d|fg|_g|_i|_i|_i|_i|_dS(NsPython-urllib/%ss User-agent(t __version__t addheadersthandlerst handle_opent handle_errortprocess_responsetprocess_request(R-tclient_version((s/usr/lib64/python2.7/urllib2.pyR.Qs     c Cs�t|d�s(tdt|���nt}xet|�D]W}|d krSq;n|jd�}|| }||d}|jd�r�|jd�|d}||d}yt|�}Wntk r�nX|j j |i�} | |j |<n]|d kr|}|j } n?|d kr3|}|j } n!|d kr;|}|j } nq;| j|g�} | rtj| |�n | j|�t}q;W|r�tj|j|�|j|�ndS( Nt add_parents%expected BaseHandler instance, got %rtredirect_requesttdo_opent proxy_opent_iterrorR!tresponseRD(R�R�R�(thasattrt TypeErrorRJRutdirtfindt startswithtintRR{RpRzR|R}t setdefaulttbisecttinsorttappendtTrueRyR( R-thandlertaddedtmethtitprotocolt conditiontjtkindtlookupRy((s/usr/lib64/python2.7/urllib2.pyt add_handler\sJ           cCsdS(N((R-((s/usr/lib64/python2.7/urllib2.pytclose�sc GsR|j|d�}x9|D]1}t||�}||�}|dk r|SqWdS(N((RpRXR( R-tchainR�t meth_nameR+RyR�tfunctresult((s/usr/lib64/python2.7/urllib2.pyt _call_chain�s    c Cs�t|t�r!t||�}n"|}|dk rC|j|�n||_|j�}|d}x8|jj|g�D]!}t ||�}||�}qxW|j ||�} |d}x;|j j|g�D]$}t ||�}||| �} q�W| S(Nt_requestt _response( t isinstancet basestringRGRRaR$RcR}RpRXt_openR|( R-tfullurlR#R$treqR�R�t processorR�R�((s/usr/lib64/python2.7/urllib2.pyR!�s"     cCss|j|jdd|�}|r%|S|j�}|j|j||d|�}|rZ|S|j|jdd|�S(NRqt default_openR�tunknownt unknown_open(R�RzRc(R-R�R#R�R�((s/usr/lib64/python2.7/urllib2.pyR��s   cGs�|d kr<|jd}|d}d|}d}|}n|j}|d}d}|||f|}|j|�}|r�|S|r�|dd f|}|j|�SdS( NthttpRfis http_error_%sit_erroriRqthttp_error_default(R�Rf(R{R�(R-tprotoR+tdictR�thttp_errt orig_argsR�((s/usr/lib64/python2.7/urllib2.pyR��s        N( R0R1R.R�R�R�Rtsockett_GLOBAL_DEFAULT_TIMEOUTR!R�R�(((s/usr/lib64/python2.7/urllib2.pyRvPs /   csRddl��fd�}t�}tttttttt g}t t d�ra|j t �nt�}xl|D]d}x[|D]S}||�r�t||�r�|j|�q�q~t||�r~|j|�q~q~WqqWx|D]}|j|�q�Wx|D]}|j|��q�Wx3|D]+}||�r=|�}n|j|�qW|S(s+Create an opener object from a list of handlers. The opener will use several default handlers, including support for HTTP, FTP and when applicable, HTTPS. If any of the handlers passed as arguments are subclasses of the default handlers, the default handlers will not be used. i����Ncst|�jtf�S(N(R�t ClassTypeRJ(tobj(ttypes(s/usr/lib64/python2.7/urllib2.pytisclass�stHTTPS(R�Rvt ProxyHandlertUnknownHandlert HTTPHandlertHTTPDefaultErrorHandlertHTTPRedirectHandlert FTPHandlert FileHandlertHTTPErrorProcessorR�thttplibR�Rtsett issubclasstaddR�tremoveR�(RyR�R'tdefault_classestskiptklasstcheckth((R�s/usr/lib64/python2.7/urllib2.pyR�s2            t BaseHandlercBs)eZdZd�Zd�Zd�ZRS(i�cCs ||_dS(N(tparent(R-R�((s/usr/lib64/python2.7/urllib2.pyR scCsdS(N((R-((s/usr/lib64/python2.7/urllib2.pyR� scCs#t|d�stS|j|jkS(Nt handler_order(R�R�R�(R-tother((s/usr/lib64/python2.7/urllib2.pyt__lt__s(R0R1R�RR�R�(((s/usr/lib64/python2.7/urllib2.pyR�s  R�cBs#eZdZdZd�ZeZRS(sProcess HTTP error responses.i�cCsd|j|j|j�}}}d|ko7dkns`|jjd|||||�}n|S(Ni�i,R�(R3R4R9R�R�(R-RDR�R3R4R5((s/usr/lib64/python2.7/urllib2.pyt http_responses   (R0R1R:R�R�thttps_response(((s/usr/lib64/python2.7/urllib2.pyR�s R�cBseZd�ZRS(cCs"t|j�||||��dS(N(R2R>(R-R�R6R3R4R5((s/usr/lib64/python2.7/urllib2.pyR�+s(R0R1R�(((s/usr/lib64/python2.7/urllib2.pyR�*sR�cBs:eZdZdZd�Zd�ZeZZZdZ RS(ii c Cs�|j�}|dkr$|dks<|dkr�|dkr�|jdd �}td �|jj�D��}t|d |d |j�d t�St|j �||||��dS(s�Return a Request or None in response to a redirect. This is called by the http_error_30x methods when a redirection response is received. If a redirection should take place, return a new Request to allow http_error_30x to perform the redirect. Otherwise, raise HTTPError if no-one else should try to handle this url. Return None if you can't but another Handler might. i-i.i/i3R^tHEADR]t s%20css3|])\}}|j�dkr||fVqdS(scontent-lengths content-typeN(scontent-lengths content-type(RC(t.0tktv((s/usr/lib64/python2.7/urllib2.pys <genexpr>Js RMRQRRN(i-i.i/i3(R^R�(i-i.i/( R`treplaceR�RMRNRGRiR�R2R>( R-R�R6R3R4RMtnewurltmt newheaders((s/usr/lib64/python2.7/urllib2.pyR�6s   c Cs d|kr"|jd�d}n&d|krD|jd�d}ndStj|�}|j r�|jr�t|�}d|d<ntj|�}tj|j�|�}|j�}|j d�p�|j d�p�|j d�st |||d |||��n|j ||||||�} | dkr4dSt |d �r�|j} | _| j|d�|jks�t| �|jkr�t |j�||j|||��q�ni} | _|_| j|d�d | |<|j�|j�|jj| d |j�S( Ntlocationiturit/ishttp://shttps://sftp://s) - Redirection to url '%s' is not allowedt redirect_dictiR$(t getheadersR?tpathtnetloctlistt urlunparseturljoinR>RCR�R2R�RR�R�Rpt max_repeatstlentmax_redirectionstinf_msgtreadR�R�R!R$( R-R�R6R3R4RMR�turlpartst newurl_lowertnewtvisited((s/usr/lib64/python2.7/urllib2.pythttp_error_302XsB         soThe HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: ( R0R1R�R�R�R�thttp_error_301thttp_error_303thttp_error_307R�(((s/usr/lib64/python2.7/urllib2.pyR�.s  " 8c Cs�t|�\}}|jd�s0d}|}nV|jd�sRtd|��n|jdd�}|dkryd}n|d|!}t|�\}}|dk r�t|�\}}n d}}||||fS(s3Return (scheme, user, password, host/port) given a URL or an authority. If a URL is supplied, it must have an authority (host:port) component. According to RFC 3986, having an authority component means the URL must have two slashes after the scheme: >>> _parse_proxy('file:/ftp.example.com/') Traceback (most recent call last): ValueError: proxy URL with no authority: 'file:/ftp.example.com/' The first three items of the returned tuple may be None. Examples of authority parsing: >>> _parse_proxy('proxy.example.com') (None, None, None, 'proxy.example.com') >>> _parse_proxy('proxy.example.com:3128') (None, None, None, 'proxy.example.com:3128') The authority component may optionally include userinfo (assumed to be username:password): >>> _parse_proxy('joe:password@proxy.example.com') (None, 'joe', 'password', 'proxy.example.com') >>> _parse_proxy('joe:password@proxy.example.com:3128') (None, 'joe', 'password', 'proxy.example.com:3128') Same examples, but with URLs instead: >>> _parse_proxy('http://proxy.example.com/') ('http', None, None, 'proxy.example.com') >>> _parse_proxy('http://proxy.example.com:3128/') ('http', None, None, 'proxy.example.com:3128') >>> _parse_proxy('http://joe:password@proxy.example.com/') ('http', 'joe', 'password', 'proxy.example.com') >>> _parse_proxy('http://joe:password@proxy.example.com:3128') ('http', 'joe', 'password', 'proxy.example.com:3128') Everything after the authority is ignored: >>> _parse_proxy('ftp://joe:password@proxy.example.com/rubbish:3128') ('ftp', 'joe', 'password', 'proxy.example.com') Test for no trailing '/' case: >>> _parse_proxy('http://joe:password@proxy.example.com') ('http', 'joe', 'password', 'proxy.example.com') R�s//sproxy URL with no authority: %rii����N(RR�RRR�R R ( tproxytschemetr_schemet authoritytendtuserinfothostporttusertpassword((s/usr/lib64/python2.7/urllib2.pyt _parse_proxy�s2      R�cBs#eZdZdd�Zd�ZRS(idcCse|dkrt�}n||_x=|j�D]/\}}t|d||||jd��q.WdS(Ns%s_opencSs||||�S(N((trR�RJR�((s/usr/lib64/python2.7/urllib2.pyt<lambda>�s(RRtproxiesRNtsetattrR�(R-R�RJR"((s/usr/lib64/python2.7/urllib2.pyR.�s     c Cs|j�}t|�\}}}}|dkr9|}n|j�|jr_t|j�r_dS|r�|r�dt|�t|�f} tj| �j �} |j dd| �nt|�}|j ||�||ks�|dkr�dS|j j |d|j�SdS(Ns%s:%ssProxy-authorizationsBasic RfR$(RcR�RRdRERRtbase64t b64encodetstripRORgR�R!R$( R-R�R�RJt orig_typet proxy_typeR�R�R�t user_passtcreds((s/usr/lib64/python2.7/urllib2.pyR��s       N(R0R1R�RR.R�(((s/usr/lib64/python2.7/urllib2.pyR��s tHTTPPasswordMgrcBs8eZd�Zd�Zd�Zed�Zd�ZRS(cCs i|_dS(N(tpasswd(R-((s/usr/lib64/python2.7/urllib2.pyR.scCs�t|t�r|g}n||jkr:i|j|<nxVttfD]H}tg|D]}|j||�^qW�}||f|j||<qGWdS(N(R�R�R R�Ruttuplet reduce_uri(R-trealmR�R�R t default_porttut reduced_uri((s/usr/lib64/python2.7/urllib2.pyt add_passwords (c Cs�|jj|i�}xjttfD]\}|j||�}xA|j�D]3\}}x$|D]}|j||�rZ|SqZWqGWq"WdS(N(NN(R RpR�RuR t iteritemst is_suburiR( R-R tauthuritdomainsR treduced_authurituristauthinfoR�((s/usr/lib64/python2.7/urllib2.pytfind_user_passwords c Cs�tj|�}|dr@|d}|d}|dp:d}nd }|}d}t|�\}}|r�|d kr�|d k r�idd6dd6j|�} | d k r�d || f}q�n||fS( s@Accept authority or URI and extract only the authority and path.iiiR�iPR�i�Rfs%s:%dN(R?turlsplitRRRp( R-R�R tpartsR�R�R�RERKtdport((s/usr/lib64/python2.7/urllib2.pyR &s        cCsi||krtS|d|dkr(tStj|d|df�}t|�t|d�kretStS(scCheck if test is below base in a URI tree Both args must be URIs in reduced form. ii(R�Rut posixpatht commonprefixR�(R-tbasettesttcommon((s/usr/lib64/python2.7/urllib2.pyR=s (R0R1R.RRR�R R(((s/usr/lib64/python2.7/urllib2.pyR s   tHTTPPasswordMgrWithDefaultRealmcBseZd�ZRS(cCsDtj|||�\}}|dk r1||fStj|d|�S(N(RRR(R-R RR�R�((s/usr/lib64/python2.7/urllib2.pyRNs    (R0R1R(((s/usr/lib64/python2.7/urllib2.pyR!LstAbstractBasicAuthHandlercBs;eZejdej�Zdd�Zd�Zd�Z RS(s5(?:[^,]*,)*[ ]*([^ ,]+)[ ]+realm=(["']?)([^"']*)\2cCs4|dkrt�}n||_|jj|_dS(N(RRR R(R-t password_mgr((s/usr/lib64/python2.7/urllib2.pyR.ds   c Cs�|j|d�}|r�tjj|�}|r�|j�\}}}|dkrgtjdtd�n|j �dkr�|j |||�Sq�ndS(Nt"t'sBasic Auth Realm was unquoteditbasic(R$R%( RpRR"trxtsearchtgroupstwarningstwarnt UserWarningRCtretry_http_basic_auth( R-tauthreqRER�RMtmoR�RR ((s/usr/lib64/python2.7/urllib2.pythttp_error_auth_reqedks   cCs�|jj||�\}}|dk r�d||f}dtj|�j�}|j|jd�|krodS|j|j|�|j j |d|j �SdSdS(Ns%s:%ssBasic %sR$( R RRRRRR@t auth_headerRmR�R!R$(R-RER�R R�tpwtrawtauth((s/usr/lib64/python2.7/urllib2.pyR-{s N( R0R1tretcompiletIR'RR.R0R-(((s/usr/lib64/python2.7/urllib2.pyR"Vs     tHTTPBasicAuthHandlercBseZdZd�ZRS(t AuthorizationcCs(|j�}|jd|||�}|S(Nswww-authenticate(R>R0(R-R�R6R3R4RMR"R�((s/usr/lib64/python2.7/urllib2.pythttp_error_401�s  (R0R1R1R:(((s/usr/lib64/python2.7/urllib2.pyR8�stProxyBasicAuthHandlercBseZdZd�ZRS(sProxy-authorizationcCs(|j�}|jd|||�}|S(Nsproxy-authenticate(RdR0(R-R�R6R3R4RMR�R�((s/usr/lib64/python2.7/urllib2.pythttp_error_407�s  (R0R1R1R<(((s/usr/lib64/python2.7/urllib2.pyR;�scCs}tjjd�r;td�}|j|�}|j�|Sgt|�D]}ttj dd��^qH}dj |�SdS(sReturn n random bytes.s /dev/urandomiiR<N( tosR�texistsR!R�R�trangetchrtrandomt randrangetjoin(tntftsR�tL((s/usr/lib64/python2.7/urllib2.pyt randombytes�s  1tAbstractDigestAuthHandlercBsSeZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z RS( cCsO|dkrt�}n||_|jj|_d|_d|_d|_dS(Ni(RRR Rtretriedt nonce_countt last_nonce(R-R ((s/usr/lib64/python2.7/urllib2.pyR.�s     cCs d|_dS(Ni(RJ(R-((s/usr/lib64/python2.7/urllib2.pytreset_retry_count�scCs�|j|d�}|jdkrBt|j�dd|d��n|jd7_|r�|j�d}|j�dkr�|j||�SndS(Nii�sdigest auth failediitdigest(RpRRJR2R>tsplitRCtretry_http_digest_auth(R-R1RER�RMR.R�((s/usr/lib64/python2.7/urllib2.pyR0�scCs�|jdd�\}}tt|��}|j||�}|r�d|}|jj|jd�|krndS|j|j|�|j j |d|j �}|SdS(NR�is Digest %sR$( ROtparse_keqv_listtparse_http_listtget_authorizationRMRpR1RRmR�R!R$(R-R�R4ttokent challengetchaltauth_valtresp((s/usr/lib64/python2.7/urllib2.pyRP�s cCs<tjd|j|tj�td�f�j�}|d S(Ns %s:%s:%s:%sii(thashlibtsha1RKttimetctimeRHt hexdigest(R-tnoncetdig((s/usr/lib64/python2.7/urllib2.pyt get_cnonce�scCsdyK|d}|d}|jd�}|jdd�}|jdd�}Wntk r_dSX|j|�\}} |dkr�dS|jj||j��\} } | dkr�dS|j�r�|j|j �|�} nd} d| || f} d|j �|j �f}|d kr�||j kr?|j d 7_ nd |_ ||_ d |j }|j|�}d ||||||�f}| || �|�}nD|dkr�| || �d|||�f�}ntd |��d| |||j �|f}|r|d|7}n| r5|d| 7}n|d|7}|r`|d||f7}n|S(NR R^tqopt algorithmtMD5topaques%s:%s:%ss%s:%sR4is%08xs%s:%s:%s:%s:%ssqop '%s' is not supported.s>username="%s", realm="%s", nonce="%s", uri="%s", response="%s"s , opaque="%s"s , digest="%s"s, algorithm="%s"s, qop=auth, nc=%s, cnonce="%s"(RpRtKeyErrortget_algorithm_implsR RR>R_tget_entity_digestRbR`ReRLRKR`R*(R-R�RVR R^RaRbRdtHtKDR�R2tentdigtA1tA2tncvaluetcnoncetnoncebittrespdigR((s/usr/lib64/python2.7/urllib2.pyRS�sV    !        ( csk|j�}|dkr$d��n.|dkr<d��ntd|j����fd�}�|fS(NRccSstj|�j�S(N(RYtmd5R](tx((s/usr/lib64/python2.7/urllib2.pyR�0R<tSHAcSstj|�j�S(N(RYRZR](Rr((s/usr/lib64/python2.7/urllib2.pyR�2R<s.Unsupported digest authentication algorithm %rcs�d||f�S(Ns%s:%s((RFtd(Rh(s/usr/lib64/python2.7/urllib2.pyR�7R<(tupperRRC(R-RbRi((Rhs/usr/lib64/python2.7/urllib2.pyRf+s     cCsdS(N(R(R-R#RV((s/usr/lib64/python2.7/urllib2.pyRg:sN( R0R1RR.RMR0RPR`RSRfRg(((s/usr/lib64/python2.7/urllib2.pyRI�s   = tHTTPDigestAuthHandlercBs#eZdZdZdZd�ZRS(s�An authentication protocol defined by RFC 2069 Digest authentication improves on basic authentication because it does not transmit passwords in the clear. R9i�cCs?tj|j��d}|jd|||�}|j�|S(Niswww-authenticate(R?R>R0RM(R-R�R6R3R4RMREtretry((s/usr/lib64/python2.7/urllib2.pyR:Is   (R0R1R:R1R�R:(((s/usr/lib64/python2.7/urllib2.pyRv?stProxyDigestAuthHandlercBseZdZdZd�ZRS(sProxy-Authorizationi�cCs2|j�}|jd|||�}|j�|S(Nsproxy-authenticate(RdR0RM(R-R�R6R3R4RMRERw((s/usr/lib64/python2.7/urllib2.pyR<Vs    (R0R1R1R�R<(((s/usr/lib64/python2.7/urllib2.pyRxQstAbstractHTTPHandlercBs/eZdd�Zd�Zd�Zd�ZRS(icCs ||_dS(N(t _debuglevel(R-t debuglevel((s/usr/lib64/python2.7/urllib2.pyR._scCs ||_dS(N(Rz(R-tlevel((s/usr/lib64/python2.7/urllib2.pytset_http_debuglevelbsc Cs:|j�}|s!td��n|j�r�|j�}|jd�s[|jdd�n|jd�s�|jddt|��q�n|}|j�r�t|j ��\}}t |�\}}n|jd�s�|jd|�nxH|j j D]:\}} |j �}|j|�s�|j|| �q�q�W|S(Ns no host givens Content-types!application/x-www-form-urlencodedsContent-lengths%dR=(RdR*R_RbRoRmR�RhRReRR�RxRk( R-RDRER#tsel_hostR�tseltsel_pathtnameRT((s/usr/lib64/python2.7/urllib2.pyt do_request_es.      c  s�|j�}|s!td��n||d|j|�}|j|j�t|j���jt�fd�|jj �D���d�d<td��j �D���|j r�i}d}|�kr��|||<�|=n|j |j d|�ny)|j |j �|j�|j��Wn,tjk rS}|j�t|��n7Xy|jd t�} Wntk r�|j�} nX| j| _tj| dt�} t| | j|j��} | j| _| j| _| S( s�Return an addinfourl object for the request, using http_class. http_class must implement the HTTPConnection API from httplib. The addinfourl return value is a file-like object. It also has methods and attributes including: - info(): return a mimetools.Message object for the headers - geturl(): return the original request URL - code: HTTP status code s no host givenR$c3s-|]#\}}|�kr||fVqdS(N((R�R�R�(RM(s/usr/lib64/python2.7/urllib2.pys <genexpr>�s R�t Connectioncss'|]\}}|j�|fVqdS(N(ttitle(R�R�Rl((s/usr/lib64/python2.7/urllib2.pys <genexpr>�ssProxy-AuthorizationRMt buffering(RdR*R$tset_debuglevelRzR�RPRsRMRNRLt set_tunnelRDR`ReR#R�R�R�t getresponseR�R�R�trecvt _fileobjectRR4R>tstatusR3R,( R-t http_classR�thttp_conn_argsRER�ttunnel_headerstproxy_auth_hdrterrR�R6RX((RMs/usr/lib64/python2.7/urllib2.pyR��s@ ,    )     (R0R1R.R}R�R�(((s/usr/lib64/python2.7/urllib2.pyRy]s   R�cBseZd�ZejZRS(cCs|jtj|�S(N(R�R�tHTTPConnection(R-R�((s/usr/lib64/python2.7/urllib2.pyt http_open�s(R0R1R�RyR�t http_request(((s/usr/lib64/python2.7/urllib2.pyR��s R�RcBs)eZddd�Zd�ZejZRS(icCstj||�||_dS(N(RyR.t_context(R-R{R((s/usr/lib64/python2.7/urllib2.pyR.�scCs|jtj|d|j�S(NR(R�R�tHTTPSConnectionR�(R-R�((s/usr/lib64/python2.7/urllib2.pyt https_open�sN(R0R1RR.R�RyR�t https_request(((s/usr/lib64/python2.7/urllib2.pyR�s tHTTPCookieProcessorcBs2eZdd�Zd�Zd�ZeZeZRS(cCs4ddl}|dkr'|j�}n||_dS(Ni����(t cookielibRt CookieJart cookiejar(R-R�R�((s/usr/lib64/python2.7/urllib2.pyR.�s  cCs|jj|�|S(N(R�tadd_cookie_header(R-RD((s/usr/lib64/python2.7/urllib2.pyR��scCs|jj||�|S(N(R�textract_cookies(R-RDR�((s/usr/lib64/python2.7/urllib2.pyR��sN(R0R1RR.R�R�R�R�(((s/usr/lib64/python2.7/urllib2.pyR��s    R�cBseZd�ZRS(cCs |j�}td|��dS(Nsunknown url type: %s(RcR*(R-R�RJ((s/usr/lib64/python2.7/urllib2.pyR��s (R0R1R�(((s/usr/lib64/python2.7/urllib2.pyR��scCsmi}x`|D]X}|jdd�\}}|ddkr[|ddkr[|dd!}n|||<q W|S(s>Parse list of key=value strings where keys are not duplicated.t=iiR$i����(RO(tltparsedteltR�R�((s/usr/lib64/python2.7/urllib2.pyRQ�s  cCs�g}d}t}}x�|D]�}|r?||7}t}qn|r�|dkr]t}qn|dkrrt}n||7}qn|dkr�|j|�d}qn|dkr�t}n||7}qW|r�|j|�ng|D]}|j�^q�S(spParse lists as described by RFC 2068 Section 2. In particular, parse comma-separated lists where the elements of the list may include quoted-strings. A quoted-string could contain a comma. A non-quoted string could have quotes in the middle. Neither commas nor quotes count if they are escaped. Only double-quotes count, not single-quotes. R<s\R$t,(RuR�R�R(RFtrestparttescapeRtcur((s/usr/lib64/python2.7/urllib2.pyRRs4            cCs-ytj|�SWntjk r(dSXdS(N(R�t gethostbynametgaierrorR(RE((s/usr/lib64/python2.7/urllib2.pyt_safe_gethostbyname+sR�cBs)eZd�ZdZd�Zd�ZRS(cCsq|j�}|d dkr`|dd!dkr`|jr`|jdkr`d|_|jj|�S|j|�SdS(Nis//iR�Rtftp(ReRERJR�R!topen_local_file(R-R�R"((s/usr/lib64/python2.7/urllib2.pyt file_open3s  , cCs|tjdkruy7ttjd�dtjtj��d�t_Wqutjk rqtjd�ft_quXntjS(NRi( R�tnamesRR R�tgethostbyname_ext gethostnameR�R�(R-((s/usr/lib64/python2.7/urllib2.pyt get_names>s$cCs[ddl}ddl}|j�}|j�}t|�}y�tj|�}|j}|jj |j dt �} |j |�d} t jtd| p�d|| f��} |r�t|�\}} n| s�| r(t|�|j�kr(|rd||} n d|} tt|d�| | �SWntk rJ}t|��nXtd��dS( Ni����tusegmtis6Content-type: %s Content-length: %d Last-modified: %s s text/plainsfile://trbsfile not on local host(t email.utilst mimetypesRdReRR=tstattst_sizetutilst formatdatetst_mtimeR�t guess_typet mimetoolstMessageRRR�R�RR!tOSErrorR*(R-R�temailR�RER7t localfiletstatstsizetmodifiedtmtypeRMRKtorigurlR4((s/usr/lib64/python2.7/urllib2.pyR�Is0        N(R0R1R�RR�R�R�(((s/usr/lib64/python2.7/urllib2.pyR�1s  R�cBseZd�Zd�ZRS(cCs�ddl}ddl}|j�}|s9td��nt|�\}}|dkrc|j}n t|�}t|�\}}|r�t |�\}}nd}t |�}|p�d}|p�d}yt j |�}Wn"t j k r�}t|��nXt|j��\} } | jd�} tt | �} | d | d} } | rg| d rg| d} ny/|j||||| |j�} | r�dp�d}xM| D]E}t|�\}}|j�d kr�|dkr�|j�}q�q�W| j| |�\}}d}|j|j��d}|r;|d|7}n|dk rd|dkrd|d|7}nt|�}tj|�}t|||j��SWn0|jk r�}td|tj �d�nXdS(Ni����sftp error: no host givenR<R�iiR7tDRJtatAR�RtsContent-type: %s sContent-length: %d s ftp error: %si(R�R�R�R7RtR�(!tftplibR�RdR*RRtFTP_PORTR�R R RR�R�R�R ReROtmapt connect_ftpR$RRCRutretrfileR�R>RR�R�Rt all_errorstsystexc_info(R-R�R�R�RERKR�R R4R�tattrstdirstfiletfwRJR[RTR6tretrlenRMR�tsf((s/usr/lib64/python2.7/urllib2.pytftp_openfs\          !   c Cs%t||||||dt�}|S(Nt persistent(R Ru(R-R�R RERKR�R$R�((s/usr/lib64/python2.7/urllib2.pyR��s (R0R1R�R�(((s/usr/lib64/python2.7/urllib2.pyR�es 5tCacheFTPHandlercBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs1i|_i|_d|_d|_d|_dS(Nii<i(tcacheR$tsoonesttdelayt max_conns(R-((s/usr/lib64/python2.7/urllib2.pyR.�s     cCs ||_dS(N(R�(R-tt((s/usr/lib64/python2.7/urllib2.pyt setTimeout�scCs ||_dS(N(R�(R-R�((s/usr/lib64/python2.7/urllib2.pyt setMaxConns�scCs�|||dj|�|f}||jkrJtj�|j|j|<n<t||||||�|j|<tj�|j|j|<|j�|j|S(NR�(RCR�R[R�R$R t check_cache(R-R�R RERKR�R$RS((s/usr/lib64/python2.7/urllib2.pyR��s" cCstj�}|j|krrxT|jj�D]@\}}||kr+|j|j�|j|=|j|=q+q+Wnt|jj��|_t|j�|j krxD|jj�D]3\}}||jkr�|j|=|j|=Pq�q�Wt|jj��|_ndS(N( R[R�R$RNR�R�tmintvaluesR�R�(R-R�R�R�((s/usr/lib64/python2.7/urllib2.pyR��s     cCsBx!|jj�D]}|j�qW|jj�|jj�dS(N(R�R�R�tclearR$(R-tconn((s/usr/lib64/python2.7/urllib2.pyt clear_cache�s (R0R1R.R�R�R�R�R�(((s/usr/lib64/python2.7/urllib2.pyR��s     (((((((TR:RRYR�R�R=RRAR5R�R�R[R?R�R*t cStringIORt ImportErrorRRuRR�turllibRRRRRRRRR R R R R RRRRRtversionRwRR R�R(R)tIOErrorR*R2R6RARFRGRvRR�R�R�R�R�R�RR!R"R8R;RHRIRvRxRyR�R�RR�R�RQRRR�R�R�R�(((s/usr/lib64/python2.7/urllib2.pyt<module>Ls�                 ^"     p� 'i H-@ 2  � n  + 4<