JFIF  x x C         C     "        } !1AQa "q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2 B #3R br $4 % &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz   ?  N m? j EP ó Åßjc@sWdZddlZddlZddlZddlZddlZddlZddddddgZdefd „ƒYZ iZ gZ dd d „Z dd „Zd ed„Zd„Zd„Zd d„Zejd dkrïd„Zn d„Zd„Zdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZeZd!efd"„ƒYZd#efd$„ƒYZeZ d%efd&„ƒYZ!d'efd(„ƒYZ"d)efd*„ƒYZ#d+efd,„ƒYZ$d-„Z%ej&jd.ƒr$e%ƒnej&jd/ƒròed0ƒr[e d0ded0ƒƒned1ƒr€e d1ded1ƒƒned2ƒr¥e d2de"d2ƒƒned3ƒrÊe d3ded3ƒƒned4ƒròe d4ded4ƒƒqònejd dkr¦d5efd6„ƒYZ'gZ iZ e d7e'ƒej(j)ej&jd8d9ƒd:ƒZ*xKd;d<d=d>d?d@e*fD]+Z+ee+ƒrte e+dee+ƒƒqtqtWnejdAkrHdBefdC„ƒYZ,dDefdE„ƒYZ-e dFde-dFƒdƒe d;de-d;ƒdƒe dGde-dGƒdƒe dBde-dHƒdƒnejd dIkr˜ed?ƒr˜gZ iZ e dJdedKd?dLgƒdƒndMej&kr4ej&dMj.ej/ƒZ0e0j1ƒxXe0D]PZ2e2dNkrÑee2dƒZ3e3d dkr!e e2dee2ƒdƒq!qÑqÑWdZ2[2[0ndO„Z4e5dPkrSe4ƒndS(Qs?Interfaces for launching and remotely controlling Web browsers.iÿÿÿÿNtErrortopentopen_newt open_new_tabtgettregistercBseZRS((t__name__t __module__(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRsicCsU||gt|jƒ<|dkr2tj|ƒn|dkrQtjd|ƒndS(s9Register a browser connector and, optionally, connection.iN(t _browserstlowert _tryordertappendtinsert(tnametklasstinstancetupdate_tryorder((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRs   cCsì|dk r|g}nt}x»|D]³}d|krqtj|ƒ}|ddkrdt|d ƒSt|ƒSq%yt|jƒ}Wntk r¤t |ƒ}nX|ddk r½|dS|ddk r%|dƒSq%Wt dƒ‚dS(sCReturn a browser launcher instance appropriate for the environment.s%siÿÿÿÿt&iis!could not locate runnable browserN( tNoneR tshlextsplittBackgroundBrowsertGenericBrowserRR tKeyErrort _synthesizeR(tusingt alternativestbrowsertcommand((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRs$      icCs:x3tD]+}t|ƒ}|j|||ƒrtSqWtS(N(R RRtTruetFalse(turltnewt autoraiseR R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR:s   cCs t|dƒS(Ni(R(R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRAscCs t|dƒS(Ni(R(R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRDscCsì|jƒd}t|ƒs&ddgStjj|ƒ}yt|jƒ}Wntk rfddgSX|d}|râ|jƒ|jkrâddl }|j |ƒ}||_ tjj|ƒ|_t |d||ƒd|gSddgS(s¾Attempt to synthesize a controller base on existing controllers. This is useful to create a controller when a user specifies a path to an entry in the BROWSER environment variable -- we can copy a general controller to operate using a specific installation of the desired browser in this way. If we can't create a controller in this way, or if there is no executable for the requested browser, return [None, None]. iiiÿÿÿÿN( Rt _iscommandRtostpathtbasenameRR RtcopyR R(RRtcmdR Rt controllerR&((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRHs"         itwincCs`|jƒ}tjj|ƒr1|jdƒr1tSx(dD] }tjj||ƒr8tSq8WtS(Ns.exes.bat(s.exes.bat(s.exes.bat(R R#R$tisfiletendswithRR(R'text((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt _isexecutableis ! cCsZtjj|ƒrVtj|ƒtj}|tj@sO|tj@sO|tj@rVtSnt S(N( R#R$R*tstattST_MODEtS_IXUSRtS_IXGRPtS_IXOTHRR(R'tmode((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR-rs 'cCsrt|ƒrtStjjdƒ}|s,tSx?|jtjƒD]+}tjj ||ƒ}t|ƒr?tSq?WtS(sSReturn True if cmd is executable or can be found on the executable search path.tPATH( R-RR#tenvironRRRtpathsepR$tjoin(R'R$tdtexe((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR"ys  t BaseBrowsercBsSeZdZdgZdd„Zded„Zd„Zd„Ze d„ƒZ RS( s3Parent class for all browsers. Do not use directly.s%stcCs||_||_dS(N(R R%(tselfR ((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt__init__�s icCs t‚dS(N(tNotImplementedError(R<RR R!((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR“scCs|j|dƒS(Ni(R(R<R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR–scCs|j|dƒS(Ni(R(R<R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR™scCs7|r3|jƒjdƒr3tdj|ƒƒ‚ndS(sCEnsures that the URL is safe to pass to subprocesses as a parametert-s+Invalid URL (leading dash disallowed): {!r}N(tlstript startswitht ValueErrortformat(R((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt _check_urlœs( RRt__doc__targsR=RRRRt staticmethodRD(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR:Šs    RcBs&eZdZd„Zded„ZRS(sVClass for all browsers started with a command and without remote functionality.cCs]t|tƒr'||_dg|_n|d|_|d|_tjj|jƒ|_dS(Ns%sii(t isinstancet basestringR RFR#R$R%(R<R ((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR=§s    icCs¡|j|ƒ|jgg|jD]}|jd|ƒ^q }yItjd dkrgtj|ƒ}ntj|dtƒ}|j ƒ SWnt k rœt SXdS(Ns%siR)t close_fds( RDR RFtreplacetsystplatformt subprocesstPopenRtwaittOSErrorR(R<RR R!targtcmdlinetp((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR±s  & (RRRER=RR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR£s RcBseZdZded„ZRS(sHClass for all browsers which are to be started in the background.icCsÙ|j|ƒ|jgg|jD]}|jd|ƒ^q }y�tjd dkrgtj|ƒ}nHtt ddƒ}|s”tt ddƒ}ntj|dt d|ƒ}|j ƒdkSWnt k rÔtSXdS(Ns%siR)tsetsidtsetpgrpRJt preexec_fn(RDR RFRKRLRMRNROtgetattrR#RRtpollRQR(R<RR R!RRRSRTRU((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRÃs  & (RRRERR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR¿st UnixBrowsercBsVeZdZdZddgZdZdZdZe Z e Z d„Z de d„ZRS(s=Parent class for all Unix browsers with remote functionality.s%actions%sc Cs{g}|rC|jrCt|ƒ}|j|}|rC|g}qCn|jg||}|sf|jr{ttjdƒ}nd}ttddƒ}|s®ttddƒ}nt j |dt d|d|j rÕ|pØdd|d|ƒ} |rFt jd ƒ| jƒ} | dkrAt jd ƒ| jƒ} | dkrAt Sn| S|jrl| jƒdkret StSn | jƒ SdS( Nsr+RURVRJtstdintstdouttstderrRWii(t raise_optstintR t backgroundtfileR#tdevnullRRXRNRORtredirect_stdoutttimetsleepRYRRP( R<RFtremoteR!t raise_opttoptRStinoutRURTtrc((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt_invokeßs<         icCs"|dkr|j}n_|dkr0|j}nG|dkrc|jdkrW|j}qw|j}ntdd|ƒ‚|j|jd|ƒƒg|jD]$}|jd|ƒjd|ƒ^qš}|j|t |ƒ}|sg|j D]}|jd|ƒ^qé}|j|t t ƒSt SdS(NiiisBad 'new' parameter to open(); sexpected 0, 1, or 2, got %ss%actions%s( t remote_actiontremote_action_newwintremote_action_newtabRRRDRKt remote_argsRkRRFR(R<RR R!tactionRRRFtsuccess((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR s$       1(N(RRRERR^RoRlRmRnRR`RRcRkR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRZÔs  ,tMozillacBs>eZdZddgZddgZdZdZdZeZ RS(s-Launcher class for Mozilla/Netscape browsers.s-noraises-raises-remotesopenURL(%s%action)R;s ,new-windows,new-tab( RRRER^RoRlRmRnRR`(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRr&s  tGaleoncBs8eZdZddgZddgZdZdZeZRS(s,Launcher class for Galeon/Epiphany browsers.s-noraiseR;s%actions%ss-ns-w( RRRER^RoRlRmRR`(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRs3s   tChromecBs2eZdZddgZdZdZdZeZRS(s)Launcher class for Google Chrome browser.s%actions%sR;s --new-window( RRRERoRlRmRnRR`(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRt=s  tOperacBs2eZdZddgZdZdZdZeZRS(s!Launcher class for Opera browser.s%actions%sR;s --new-window( RRRERoRlRmRnRR`(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRuIs  tElinkscBs8eZdZddgZdZdZdZeZeZ RS(s#Launcher class for Elinks browsers.s-remotesopenURL(%s%action)R;s ,new-windows,new-tab( RRRERoRlRmRnRR`Rc(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRvSs t KonquerorcBseZdZded„ZRS(s±Controller for the KDE File Manager (kfm, or Konqueror). See the output of ``kfmclient --commands`` for more information on the Konqueror remote-control interface. ic Cs„|j|ƒ|dkr"d}nd}ttjdƒ}ttddƒ}|sgttddƒ}ny4tjd||gdtd |d |d |ƒ}Wnt k r®nX|j ƒtSy:tjd d |gdtd |d |d |d|ƒ}Wnt k r nX|j ƒdkr!tSy:tjdd|gdtd |d |d |d|ƒ}Wnt k rot SX|j ƒdkSdS(NitnewTabtopenURLsr+RURVt kfmclientRJR[R\R]t konquerors--silentRWtkfms-d( RDRaR#RbRXRRNRORRQRPRYR(R<RR R!RpRbRURT((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRhsB              (RRRERR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRwastGrailcBs)eZd„Zd„Zded„ZRS(c Csddl}ddl}ddl}ddl}tjj|jƒdƒ}|jtj ƒƒd}tjj||dƒ}|j|ƒ}|s–dS|j|j |j ƒ} x_|D]W} y| j | ƒWn9|jk rytj| ƒWq tk rq XqµX| SqµWdS(Niÿÿÿÿs .grail-unixis-*(tglobtpwdtsocketttempfileR#R$R7t gettempdirtgetpwuidtgetuidRtAF_UNIXt SOCK_STREAMtconnectterrortunlinktIOError( R<R~RR€R�ttempdirtusertfilenametmaybeststfn((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt_find_grail_rcŸs*       cCs1|jƒ}|sdS|j|ƒ|jƒdS(Nii(R‘tsendtclose(R<RpR�((s//opt/alt/python27/lib64/python2.7/webbrowser.pyt_remote¹s    icCs@|j|ƒ|r)|jd|ƒ}n|jd|ƒ}|S(NsLOADNEW sLOAD (RDR”(R<RR R!tok((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRÁs  (RRR‘R”RR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR}›s  c Csdtdƒr%tddtdƒƒndtjkrYtdƒrYtddtdƒƒndtjkr�tdƒr�tddtdƒƒndtjkrÁtdƒrÁtdttdƒƒntdƒrætddtdƒƒnx3dD]+}t|ƒrít|dt|ƒƒqíqíWtdƒrAtdttdƒƒn%tdƒrftdttdƒƒnx3dD]+}t|ƒrmt|dt|ƒƒqmqmWtdƒrÁtddtdƒƒnx3dD]+}t|ƒrÈt|dt |ƒƒqÈqÈWtdƒrtddt dƒƒntdƒrAtddtdƒƒntdƒr`tdt dƒndS( Nsxdg-opentGNOME_DESKTOP_SESSION_IDs gvfs-opens gnome-opentKDE_FULL_SESSIONRzs x-www-browsersmozilla-firefoxtfirefoxsmozilla-firebirdtfirebirdt iceweaselticeapet seamonkeytmozillatnetscapeR|R{tgaleontepiphanyt skipstones google-chrometchrometchromiumschromium-browsertoperatmosaictgrail( smozilla-firefoxR˜smozilla-firebirdR™RšR›RœR�Rž(RŸR (s google-chromeR¢R£schromium-browser( R"RRRR#R5RwRrRsRtRuR}(R((s//opt/alt/python27/lib64/python2.7/webbrowser.pytregister_X_browsersÑsD              tDISPLAYtTERMs www-browsertlinkstelinkstlynxtw3mtWindowsDefaultcBseZded„ZRS(icCs;|j|ƒytj|ƒWntk r2tSXtSdS(N(RDR#t startfilet WindowsErrorRR(R<RR R!((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR(s   (RRRR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR®'sswindows-defaultt PROGRAMFILESsC:\Program FilessInternet Explorer\IEXPLORE.EXER˜R™RœR�RžR¤tdarwintMacOSXcBs&eZdZd„Zded„ZRS(s{Launcher class for Aqua browsers on Mac OS X Optionally specify a browser name on instantiation. Note that this will not work for Aqua browsers if the user has moved the application package after installation. If no browser is specified, the default browser, as specified in the Internet System Preferences panel, will be used. cCs ||_dS(N(R (R<R ((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR=Qsic Csò|j|ƒd|kr&d|}ntt|ƒƒ}|jdkr`d|jddƒ}nR|jdkrxd}nd |d }d |jddƒ}d |j||f}tjd dƒ}|dkrÔtS|j |ƒ|j ƒ}| S(Nt:sfile:tdefaultsopen location "%s"t"s%22tOmniWebR;s toWindow %dis OpenURL "%s"s‰tell application "%s" activate %s %s end tellt osascripttw( RDR_tboolR RKR#tpopenRRtwriteR“( R<RR R!tscriptttoWindowR'tosapipeRj((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRTs"       (RRRER=RR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR³Gs  tMacOSXOSAScriptcBs eZd„Zded„ZRS(cCs ||_dS(N(t_name(R<R ((s//opt/alt/python27/lib64/python2.7/webbrowser.pyR=wsicCs”|j|ƒ|jdkr5d|jddƒ}nd|j|jddƒf}tjddƒ}|dkrvtS|j|ƒ|jƒ}| S(NRµsopen location "%s"R¶s%22sž tell application "%s" activate open location "%s" end R¸R¹( RDRÁRKR#R»RRR¼R“(R<RR R!R½R¿Rj((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRzs    (RRR=RR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyRÀvs tsafariR¢Rµtos2t os2netscapetstarts%stBROWSERR;c Csddl}dtjd}y#|jtjddƒ\}}Wn=|jk r}tj|IJtj|IJtjdƒnXd}x>|D]6\}}|dkr®d}q�|dkr�d}q�q�Wt|ƒdkrötj|IJtjdƒn|d}t||ƒd GHdS( NiÿÿÿÿsDUsage: %s [-n | -t] url -n: open new window -t: open new tabiitntds-ns-tis(tgetoptRLtargvRˆR]texittlenR( RÈtusagetoptsRFtmsgtnew_wintotaR((s//opt/alt/python27/lib64/python2.7/webbrowser.pytmain¶s( #       t__main__(6RER#RRLR.RNRdt__all__t ExceptionRRR RRRRRRRRRMR-R"tobjectR:RRRZRrtNetscapeRsRttChromiumRuRvRwR}R§R5R®R$R7tiexploreRR³RÀRR6t _userchoicestreverseRSR'RÒR(((s//opt/alt/python27/lib64/python2.7/webbrowser.pyts¨            R    :6 >           /    #