???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
iV                 @   s  d dl Z d dlZd dlZd dlZd dlZddddddgZG dd deZi Zg Z	dNd
dZ
dOddZdPddZdd Zdd ZdQddZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZeZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZd*d+ Ze jjd,rhe  e jjd-rej d.re
d.ded. ej d/re
d/ded/ ej d0re
d0ded0 ej d1re
d1ded1 ej d2re
d2ded2 ej!dd3 d4krG d5d6 d6eZ"g Z	i Ze
d7e" e j#j$e jjd8d9d:Z%x8d;d<d=d>d?d@e%fD ]"Z&ej e&rde
e&dee& qdW ej!dAkrG dBdC dCeZ'G dDdE dEeZ(e
dFde(dFdR e
d;de(d;dS e
dGde(dGdT e
dCde(dHdU dIe jkrpe jdI j)e j*Z+e+j,  xBe+D ]:Z-e-dJkr*ee-dVZ.e.d	 dkr*e
e-dee-dW q*W dZ-[-[+dKdL Z/e0dMkre/  dS )X    NErroropenopen_newopen_new_tabgetregisterc               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   "/usr/lib64/python3.6/webbrowser.pyr      s      c             C   s<   ||gt | j < |dkr$tj|  n|dk r8tjd|  d S )Nr   )	_browserslower	_tryorderappendinsert)nameklassinstanceupdate_tryorderr   r   r   r      s
    c             C   s   | d k	r| g}nt }x|D ]}d|krVtj|}|d dkrLt|d d S t|S qyt|j  }W n tk
r   t|}Y nX |d d k	r|d S |d d k	r|d  S qW t	dd S )Nz%sr   &r   z!could not locate runnable browserr   )
r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer   )ZusingZalternativesbrowsercommandr   r   r   r      s$    


Tc             C   s,   x&t D ]}t|}|j| ||rdS qW dS )NTF)r   r   r   )urlnew	autoraiser   r   r   r   r   r   9   s
    
c             C   s
   t | dS )Nr   )r   )r!   r   r   r   r   @   s    c             C   s
   t | dS )N   )r   )r!   r   r   r   r   C   s    c             C   s   | j  d }tj|sd d gS tjj|}yt|j  }W n tk
rR   d d gS X |d }|r|j |jkrdd l	}|j	|}| |_
tjj| |_t| d || d |gS d d gS )Nr   r   )r   shutilwhichospathbasenamer   r   r   copyr   r   )r   r   cmdr   r    Z
controllerr*   r   r   r   r   G   s"    


r   c               @   sB   e Zd ZdgZdddZdddZd	d
 Zdd Zedd Z	dS )BaseBrowserz%s c             C   s   || _ || _d S )N)r   r)   )selfr   r   r   r   __init__n   s    zBaseBrowser.__init__r   Tc             C   s   t d S )N)NotImplementedError)r.   r!   r"   r#   r   r   r   r   r   s    zBaseBrowser.openc             C   s   | j |dS )Nr   )r   )r.   r!   r   r   r   r   u   s    zBaseBrowser.open_newc             C   s   | j |dS )Nr$   )r   )r.   r!   r   r   r   r   x   s    zBaseBrowser.open_new_tabc             C   s$   | r | j  jdr td|  d S )N-zInvalid URL: )lstrip
startswith
ValueError)r!   r   r   r   
_check_url{   s    zBaseBrowser._check_urlN)r-   )r   T)
r   r	   r
   argsr/   r   r   r   staticmethodr5   r   r   r   r   r,   i   s   

r,   c               @   s   e Zd Zdd ZdddZdS )	r   c             C   sF   t |tr|| _dg| _n|d | _|dd  | _tjj| j| _d S )Nz%sr   r   )
isinstancestrr   r6   r'   r(   r)   )r.   r   r   r   r   r/      s    


zGenericBrowser.__init__r   Tc                sv   | j   | jg fdd| jD  }y6tjd d dkrFtj|}ntj|dd}|j  S  tk
rp   dS X d S )Nc                s   g | ]}|j d  qS )z%s)replace).0arg)r!   r   r   
<listcomp>   s   z'GenericBrowser.open.<locals>.<listcomp>   winT)	close_fdsF)	r5   r   r6   sysplatform
subprocessPopenwaitOSError)r.   r!   r"   r#   cmdlinepr   )r!   r   r      s    

zGenericBrowser.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r      s   
r   c               @   s   e Zd ZdddZdS )r   r   Tc                sz   | j   | jg fdd| jD  }y:tjd d dkrFtj|}ntj|ddd}|j d kS  tk
rt   dS X d S )Nc                s   g | ]}|j d  qS )z%s)r:   )r;   r<   )r!   r   r   r=      s   z*BackgroundBrowser.open.<locals>.<listcomp>r>   r?   T)r@   start_new_sessionF)	r5   r   r6   rA   rB   rC   rD   pollrF   )r.   r!   r"   r#   rG   rH   r   )r!   r   r      s    
zBackgroundBrowser.openN)r   T)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s>   e Zd ZdZdZdZddgZdZdZdZ	dd Z
dd	d
ZdS )UnixBrowserNFTz%actionz%sc       
      C   s   g }|r*| j r*t|}| j | }|r*|g}| jg| | }|sD| jrLtj}nd }tj|d|| jrd|pfd |dd}|ry|jd}	|	 S  tj	k
r   dS X n&| jr|j
 d krdS dS n
|j  S d S )NT)r@   stdinstdoutstderrrI      F)
raise_optsintr   
backgroundrC   DEVNULLrD   redirect_stdoutrE   ZTimeoutExpiredrJ   )
r.   r6   Zremoter#   Z	raise_optoptrG   ZinoutrH   rcr   r   r   _invoke   s0    

 



zUnixBrowser._invoker   c                s   | j  |dkr| j nB|dkr*| j n2|dkrL| jd krD| j q\| j ntdd|   fdd| jD }dd |D }| j|d	|}|sfd
d| jD }| j|ddS d	S d S )Nr   r   r$   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sc                s    g | ]}|j d j d qS )z%sz%action)r:   )r;   r<   )actionr!   r   r   r=      s   z$UnixBrowser.open.<locals>.<listcomp>c             S   s   g | ]}|r|qS r   r   )r;   r<   r   r   r   r=      s    Tc                s   g | ]}|j d  qS )z%s)r:   )r;   r<   )r!   r   r   r=      s    F)r5   remote_actionremote_action_newwinremote_action_newtabr   remote_argsrW   r6   )r.   r!   r"   r#   r6   Zsuccessr   )rX   r!   r   r      s&    


zUnixBrowser.open)r   T)r   r	   r
   rP   rR   rT   r\   rY   rZ   r[   rW   r   r   r   r   r   rK      s   #rK   c               @   s$   e Zd ZddgZdZdZdZdZdS )Mozillaz%actionz%sr-   z-new-windowz-new-tabTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   r]      s
   r]   c               @   s,   e Zd ZddgZddgZdZdZdZdZd	S )
Netscapez-noraisez-raisez-remotezopenURL(%s%action)r-   z,new-windowz,new-tabTN)	r   r	   r
   rP   r\   rY   rZ   r[   rR   r   r   r   r   r^   
  s   r^   c               @   s(   e Zd ZddgZddgZdZdZdZdS )	Galeonz-noraiser-   z%actionz%sz-nz-wTN)r   r	   r
   rP   r\   rY   rZ   rR   r   r   r   r   r_     s
   r_   c               @   s$   e Zd ZddgZdZdZdZdZdS )Chromez%actionz%sr-   z--new-windowTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   r`     s
   r`   c               @   s$   e Zd ZddgZdZdZdZdZdS )Operaz%actionz%sr-   z--new-windowTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   ra   +  s
   ra   c               @   s(   e Zd ZddgZdZdZdZdZdZdS )Elinksz-remotezopenURL(%s%action)r-   z,new-windowz,new-tabFN)	r   r	   r
   r\   rY   rZ   r[   rR   rT   r   r   r   r   rb   5  s   rb   c               @   s   e Zd ZdddZdS )	Konquerorr   Tc             C   s   | j | |dkrd}nd}tj}ytjd||gd|||d}W n tk
rT   Y nX |j  dS y tjdd|gd|||dd	}W n tk
r   Y nX |j d krdS y tjd
d|gd|||dd	}W n tk
r   dS X |j d kS d S )Nr$   ZnewTabZopenURL	kfmclientT)r@   rL   rM   rN   	konquerorz--silent)r@   rL   rM   rN   rI   kfmz-dF)r5   rC   rS   rD   rF   rE   rJ   )r.   r!   r"   r#   rX   devnullrH   r   r   r   r   J  s<    
zKonqueror.openN)r   T)r   r	   r
   r   r   r   r   r   rc   C  s   rc   c               @   s&   e Zd Zdd Zdd Zd
ddZd	S )Grailc             C   s   dd l }dd l}dd l}dd l}tjj|j d}|jtj	 d }tjj||d }|j |}|shd S |j|j
|j}	xX|D ]P}
y|	j|
 W n8 tk
r   ytj|
 W n tk
r   Y nX Y q~X |	S q~W d S )Nr   z.grail-unixz-*)globpwdsockettempfiler'   r(   joinZ
gettempdirgetpwuidgetuidZAF_UNIXZSOCK_STREAMZconnectrF   unlink)r.   ri   rj   rk   rl   ZtempdiruserfilenameZmaybessfnr   r   r   _find_grail_rc|  s*    

zGrail._find_grail_rcc             C   s&   | j  }|sdS |j| |j  dS )Nr   r   )ru   sendclose)r.   rX   rs   r   r   r   _remote  s    
zGrail._remoter   Tc             C   s0   | j | |r| jd| }n| jd| }|S )NzLOADNEW zLOAD )r5   rx   )r.   r!   r"   r#   okr   r   r   r     s
    
z
Grail.openN)r   T)r   r	   r
   ru   rx   r   r   r   r   r   rh   x  s   rh   c              C   s  t jdrtdd td dtjkr>t jdr>tdd td dtjkrbt jdrbtdd td dtjkrt jdrtdttd t jdrtdd td x&dD ]} t j| rt| d t|  qW x&dD ]} t j| rt| d t|  qW t jdrtdttd nt jdr*tdttd x*dD ]"} t j| r0t| d t	|  q0W t jdrrtdd td x*d D ]"} t j| rxt| d t
|  qxW t jdrtdd td t jdrtdd td t jdrtdtd  d S )!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz	gvfs-openz
gnome-openZKDE_FULL_SESSIONrd   zx-www-browserfirefox	iceweaseliceape	seamonkeymozilla-firefoxmozilla-firebirdfirebirdmozillanetscaperf   re   galeonepiphanyZ	skipstonegoogle-chromechromechromiumchromium-browseroperaZmosaicZgrail)rz   r{   r|   r}   )r~   r   r   r   r   )r   r   )r   r   r   r   )r%   r&   r   r   r'   environrc   r]   r^   r_   r`   ra   rh   )r   r   r   r   register_X_browsers  sH    



 


r   ZDISPLAYZTERMzwww-browserZlinksZelinksZlynxZw3mr>   r?   c               @   s   e Zd ZdddZdS )WindowsDefaultr   Tc             C   s6   | j | ytj| W n tk
r,   dS X dS d S )NFT)r5   r'   Z	startfilerF   )r.   r!   r"   r#   r   r   r   r   	  s    
zWindowsDefault.openN)r   T)r   r	   r
   r   r   r   r   r   r     s   r   zwindows-defaultZPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErz   r   r}   r   r   r   darwinc               @   s   e Zd Zdd ZdddZdS )	MacOSXc             C   s
   || _ d S )N)r   )r.   r   r   r   r   r/   2  s    zMacOSX.__init__r   Tc       	      C   s   | j | d|krd| }tt|}| jdkrBd|jdd }n<| jdkrRd}nd	|d
  }d|jdd }d| j||f }tjdd}|d krdS |j| |j }| S )N:zfile:defaultzopen location "%s""z%22ZOmniWebr-   ztoWindow %dr   zOpenURL "%s"ztell application "%s"
                                activate
                                %s %s
                            end tell	osascriptwF)	r5   rQ   boolr   r:   r'   popenwriterw   )	r.   r!   r"   r#   scriptZtoWindowr+   osapiperV   r   r   r   r   5  s"    



zMacOSX.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r   (  s   
r   c               @   s   e Zd Zdd ZdddZdS )	MacOSXOSAScriptc             C   s
   || _ d S )N)_name)r.   r   r   r   r   r/   X  s    zMacOSXOSAScript.__init__r   Tc             C   sl   | j | | jdkr&d|jdd }nd| j|jddf }tjdd}|d krTdS |j| |j }| S )	Nr   zopen location "%s"r   z%22z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r   r   F)r5   r   r:   r'   r   r   rw   )r.   r!   r"   r#   r   r   rV   r   r   r   r   [  s    


zMacOSXOSAScript.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r   W  s   r   Zsafarir   r   ZBROWSERr-   c        	      C   s   dd l } dtjd  }y| j tjdd  d\}}W nJ | jk
r~ } z,t|tjd t|tjd tjd W Y d d }~X nX d}x*|D ]"\}}|dkrd}q|dkrd}qW t|dkrt|tjd tjd |d }t|| td	 d S )
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr   Zntd)filez-nz-tr$   )	getoptrA   argverrorprintrN   exitlenr   )	r   ZusageZoptsr6   msgZnew_winoar!   r   r   r   main  s(      

r   __main__)Nr   )N)r   T)r   r   r   r   r   r   r   )1r'   r   r%   rA   rC   __all__	Exceptionr   r   r   r   r   r   r   r   r   objectr,   r   r   rK   r]   r^   r_   r`   ZChromiumra   rb   rc   rh   r   r   r&   rB   r   r(   rm   Ziexplorer   r   r   r   pathsepZ_userchoicesreverserG   r+   r   r   r   r   r   r   <module>   s   



"O

	
56B

/



