<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2a                 @   s  dZZ d[Zee  Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zd\ddZeejZdjddd ZejedZdZdZdgZdgZe ZZd]d d!d"d#Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Z d.d/ Z!d^d0d1Z"d_d2d3Z#d`d5d6Z$d7d8 Z%e& Z'dad e'd9d:d;Z(G d<d= d=Z)G d>d? d?Z*G d@dA dAe*Z+G dBdC dCZ,G dDdE dEe,e+Z-G dFdG dGe,e*Z.g Z/G dHdI dIe,e*Z0G dJdK dKZ1G dLdM dMZ2G dNdO dOZ3G dPdQ dQZ4dbdRdSZ5dTdU Z6dVdW Z7dXdY Z8d S )cwincygwindarwinc                 s<   t jjtr0t jjtrd nd  fdd} ndd } | S )NPYTHONCASEOKs   PYTHONCASEOKc                  s
    t jkS )N)_osenviron )keyr   8/opt/alt/python36/lib64/python3.6/_bootstrap_external.py_relax_case%   s    z%_make_relax_case.<locals>._relax_casec               S   s   dS )NFr   r   r   r   r	   r
   )   s    )sysplatform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r
   r   )r   r	   _make_relax_case   s    r   c             C   s   t | d@ jddS )Nl       little)intto_bytes)xr   r   r	   _w_long/   s    r   c             C   s   t j| dS )Nr   )r   
from_bytes)	int_bytesr   r   r	   _r_long4   s    r   c              G   s   t jdd | D S )Nc             S   s   g | ]}|r|j tqS r   )rstrippath_separators).0partr   r   r	   
<listcomp>;   s   z_path_join.<locals>.<listcomp>)path_sepjoin)
path_partsr   r   r	   
_path_join9   s    
r"   c             C   s`   t tdkr$| jt\}}}||fS x2t| D ]&}|tkr.| j|dd\}}||fS q.W d| fS )N   )maxsplit )lenr   
rpartitionr   reversedrsplit)pathfront_tailr   r   r   r	   _path_split?   s    r.   c             C   s
   t j| S )N)r   stat)r*   r   r   r	   
_path_statK   s    r0   c             C   s0   yt | }W n tk
r    dS X |jd@ |kS )NFi   )r0   OSErrorst_mode)r*   mode	stat_infor   r   r	   _path_is_mode_typeU   s
    r5   c             C   s
   t | dS )Ni   )r5   )r*   r   r   r	   _path_isfile^   s    r6   c             C   s   | st j } t| dS )Ni @  )r   getcwdr5   )r*   r   r   r	   _path_isdirc   s    r8     c             C   s   dj | t| }tj|tjtjB tjB |d@ }y2tj|d}|j	| W d Q R X tj
||  W n: tk
r   ytj| W n tk
r   Y nX  Y nX d S )Nz{}.{}i  wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwritereplacer1   unlink)r*   datar3   path_tmpfdfiler   r   r	   _write_atomicj   s    rJ   i3     r   s   
__pycache__zopt-z.pyz.pycN)optimizationc            C   s   |d k	r4t jdt |d k	r(d}t||r0dnd}tj| } t| \}}|jd\}}}tj	j
}	|	d krrtddj|r~|n|||	g}
|d krtjjdkrd}ntjj}t|}|dkr|j stdj|d	j|
t|}
t|t|
td  S )
NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner%   r#   .z$sys.implementation.cache_tag is None    z{!r} is not alphanumericz{}.{}{})	_warningswarnDeprecationWarning	TypeErrorr   fspathr.   r'   r   implementation	cache_tagNotImplementedErrorr    flagsoptimizestrisalnum
ValueErrorr;   _OPTr"   _PYCACHEBYTECODE_SUFFIXES)r*   debug_overriderM   messageheadr-   basesepresttagalmost_filenamer   r   r	   cache_from_source  s0    
rh   c             C   s   t jjd krtdtj| } t| \}}t|\}}|tkrNtdj	t| |j
d}|d
krptdj	|nV|dkr|jddd }|jtstdj	t|ttd  }|j stdj	||jdd	 }t||td	  S )Nz$sys.implementation.cache_tag is Nonez%{} not bottom-level directory in {!r}rN   rK      z!expected only 2 or 3 dots in {!r}z9optimization portion of filename does not start with {!r}z4optimization level {!r} is not an alphanumeric valuerO   >   rK   ri   )r   rU   rV   rW   r   rT   r.   r^   r\   r;   countr)   r   r]   r&   r[   	partitionr"   SOURCE_SUFFIXES)r*   rb   pycache_filenamepycache	dot_countrM   	opt_levelbase_filenamer   r   r	   source_from_cache4  s.    	




rs   c             C   s   t | dkrd S | jd\}}}| s:|j dd dkr>| S yt| }W n$ ttfk
rn   | d d }Y nX t|r||S | S )	NrO   rN   ri   r#   pyrv   )r&   r'   lowerrs   rW   r\   r6   )bytecode_pathre   r,   	extensionsource_pathr   r   r	   _get_sourcefileV  s    r{   c             C   sH   | j ttr.yt| S  tk
r*   Y qDX n| j ttr@| S d S d S )N)endswithtuplerm   rh   rW   r_   )filenamer   r   r	   _get_cachedi  s    r   c             C   s4   yt | j}W n tk
r&   d}Y nX |dO }|S )Ni     )r0   r2   r1   )r*   r3   r   r   r	   
_calc_modeu  s    
r   c                sD   d fdd	}y
t j}W n tk
r4   dd }Y nX ||  |S )Nc                sB   |d kr| j }n | j |kr0td| j |f |d | |f||S )Nzloader for %s cannot handle %s)name)r   ImportError)selfr   argskwargs)methodr   r	   _check_name_wrapper  s    
z(_check_name.<locals>._check_name_wrapperc             S   s<   x(dD ] }t ||rt| |t|| qW | jj|j d S )N
__module____name____qualname____doc__)r   r   r   r   )hasattrsetattrgetattr__dict__update)newoldrD   r   r   r	   _wrap  s    

z_check_name.<locals>._wrap)N)
_bootstrapr   	NameError)r   r   r   r   )r   r	   _check_name  s    

r   c             C   s<   | j |\}}|d kr8t|r8d}tj|j|d t |S )Nz,Not importing directory {}: missing __init__rO   )find_loaderr&   rP   rQ   r;   ImportWarning)r   fullnameloaderportionsmsgr   r   r	   _find_module_shim  s
    
r   c             C   s  i }|d k	r||d< nd}|d k	r*||d< | d d }| dd }| dd }|t kr|dj||}tjd| t|f|nVt|dkrd	j|}tjd| t|n*t|dkrd
j|}tjd| t||d k	r|yt|d }	W n tk
r   Y n2X t	||	kr4dj|}tjd| t|f|y|d d@ }
W n tk
rZ   Y n"X t	||
kr|tdj|f|| dd  S )Nr   z
<bytecode>r*   r         zbad magic number in {!r}: {!r}z{}z+reached EOF while reading timestamp in {!r}z0reached EOF while reading size of source in {!r}mtimezbytecode is stale for {!r}sizel    )
MAGIC_NUMBERr;   r   _verbose_messager   r&   EOFErrorr   KeyErrorr   )rF   source_statsr   r*   exc_detailsmagicraw_timestampraw_sizera   source_mtimesource_sizer   r   r	   _validate_bytecode_header  sL    





r   c             C   sP   t j| }t|tr8tjd| |d k	r4tj|| |S tdj	|||dd S )Nzcode object from {!r}zNon-code object in {!r})r   r*   )
marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   r;   )rF   r   rx   rz   coder   r   r	   _compile_bytecode  s    


r   rO   c             C   s8   t t}|jt| |jt| |jtj|  |S )N)	bytearrayr   extendr   r   dumps)r   r   r   rF   r   r   r	   _code_to_bytecode  s
    r   c             C   s>   dd l }tj| j}|j|}tjd d}|j| j|d S )NrO   T)tokenizerA   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoderr   r   r	   decode_source  s
    
r   )r   submodule_search_locationsc      	      C   s  |d kr<d}t |drFy|j| }W qF tk
r8   Y qFX n
tj|}tj| ||d}d|_|d krx6t D ](\}}|j	t
|rl|| |}||_P qlW d S |tkrt |dry|j| }W n tk
r   Y qX |rg |_n||_|jg kr|rt|d }|jj| |S )Nz	<unknown>get_filename)originT
is_packagerO   )r   r   r   r   rT   r   
ModuleSpec_set_fileattr_get_supported_file_loadersr|   r}   r   	_POPULATEr   r   r.   append)	r   locationr   r   specloader_classsuffixesr   dirnamer   r   r	   spec_from_file_location  s>    



r   c               @   sL   e Zd ZdZdZdZedd Zedd Zedd	d
Z	edddZ
dS )WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc             C   s2   yt jt j|S  tk
r,   t jt j|S X d S )N)_winregOpenKeyHKEY_CURRENT_USERr1   HKEY_LOCAL_MACHINE)clsr   r   r   r	   _open_registry\  s    z$WindowsRegistryFinder._open_registryc             C   sp   | j r| j}n| j}|j|dtjd d  d}y&| j|}tj|d}W d Q R X W n t	k
rj   d S X |S )Nz%d.%drK   )r   sys_versionr%   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYr;   r   version_infor   r   
QueryValuer1   )r   r   registry_keyr   hkeyfilepathr   r   r	   _search_registryc  s    z&WindowsRegistryFinder._search_registryNc             C   sx   | j |}|d krd S yt| W n tk
r6   d S X x:t D ]0\}}|jt|r@tj|||||d}|S q@W d S )N)r   )r   r0   r1   r   r|   r}   r   spec_from_loader)r   r   r*   targetr   r   r   r   r   r   r	   	find_specr  s    
zWindowsRegistryFinder.find_specc             C   s"   | j ||}|d k	r|jS d S d S )N)r   r   )r   r   r*   r   r   r   r	   find_module  s    z!WindowsRegistryFinder.find_module)NN)N)r   r   r   r   r   r   classmethodr   r   r   r   r   r   r   r	   r   P  s   r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_LoaderBasicsc             C   s@   t | j|d }|jddd }|jdd }|dko>|dkS )Nr#   rN   rO   rK   __init__)r.   r   r)   r'   )r   r   r~   filename_base	tail_namer   r   r	   r     s    z_LoaderBasics.is_packagec             C   s   d S )Nr   )r   r   r   r   r	   create_module  s    z_LoaderBasics.create_modulec             C   s8   | j |j}|d kr$tdj|jtjt||j d S )Nz4cannot load module {!r} when get_code() returns None)get_coder   r   r;   r   _call_with_frames_removedexecr   )r   moduler   r   r   r	   exec_module  s
    
z_LoaderBasics.exec_modulec             C   s   t j| |S )N)r   _load_module_shim)r   r   r   r   r	   load_module  s    z_LoaderBasics.load_moduleN)r   r   r   r   r   r   r   r   r   r   r	   r     s   r   c               @   sJ   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZddddZdd Z	dS )SourceLoaderc             C   s   t d S )N)IOError)r   r*   r   r   r	   
path_mtime  s    zSourceLoader.path_mtimec             C   s   d| j |iS )Nr   )r   )r   r*   r   r   r	   
path_stats  s    zSourceLoader.path_statsc             C   s   | j ||S )N)set_data)r   rz   
cache_pathrF   r   r   r	   _cache_bytecode  s    zSourceLoader._cache_bytecodec             C   s   d S )Nr   )r   r*   rF   r   r   r	   r     s    zSourceLoader.set_datac             C   sR   | j |}y| j|}W n0 tk
rH } ztd|d|W Y d d }~X nX t|S )Nz'source not available through get_data())r   )r   get_datar1   r   r   )r   r   r*   r   excr   r   r	   
get_source  s    
zSourceLoader.get_sourcer#   )	_optimizec            C   s   t jt||dd|dS )Nr   T)dont_inheritrY   )r   r   compile)r   rF   r*   r  r   r   r	   source_to_code  s    zSourceLoader.source_to_codec       
   +   C   s^  | j |}d }yt|}W n tk
r2   d }Y nX y| j|}W n tk
rV   Y n~X t|d }y| j|}W n tk
r   Y nNX yt||||d}W n t	t
fk
r   Y n X tjd|| t||||dS | j|}| j||}	tjd| tj rZ|d k	rZ|d k	rZt|	|t|}y| j||| tjd| W n tk
rX   Y nX |	S )Nr   )r   r   r*   z{} matches {})r   rx   rz   zcode object from {}z
wrote {!r})r   rh   rW   r   r   r   r   r1   r   r   r   r   r   r   r  r   dont_write_bytecoder   r&   r   )
r   r   rz   r   rx   strF   
bytes_datar   code_objectr   r   r	   r     sN    




zSourceLoader.get_codeNrv   )
r   r   r   r   r   r   r   r   r  r   r   r   r   r	   r     s   

r   c                   sL   e Zd Zdd Zdd Zdd Ze fddZed	d
 Zdd Z	  Z
S )
FileLoaderc             C   s   || _ || _d S )N)r   r*   )r   r   r*   r   r   r	   r      s    zFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)	__class__r   )r   otherr   r   r	   __eq__&  s    zFileLoader.__eq__c             C   s   t | jt | jA S )N)hashr   r*   )r   r   r   r	   __hash__*  s    zFileLoader.__hash__c                s   t t| j|S )N)superr	  r   )r   r   )r
  r   r	   r   -  s    
zFileLoader.load_modulec             C   s   | j S )N)r*   )r   r   r   r   r	   r   9  s    zFileLoader.get_filenamec          	   C   s    t j|d
}|j S Q R X d S )Nr)rA   rB   read)r   r*   rI   r   r   r	   r   >  s    zFileLoader.get_data)r   r   r   r   r  r  r   r   r   r   __classcell__r   r   )r
  r	   r	    s   r	  c               @   s*   e Zd Zdd Zdd ZddddZd	S )
SourceFileLoaderc             C   s   t |}|j|jdS )N)r   r   )r0   st_mtimest_size)r   r*   r  r   r   r	   r   H  s    zSourceFileLoader.path_statsc             C   s   t |}| j|||dS )N)_mode)r   r   )r   rz   rx   rF   r3   r   r   r	   r   M  s    z SourceFileLoader._cache_bytecodei  )r  c      	      C   s   t |\}}g }x(|r8t| r8t |\}}|j| qW xlt|D ]`}t||}ytj| W qD tk
rv   wDY qD tk
r } zt	j
d|| d S d }~X qDX qDW yt||| t	j
d| W n0 tk
r } zt	j
d|| W Y d d }~X nX d S )Nzcould not create {!r}: {!r}zcreated {!r})r.   r8   r   r(   r"   r   mkdirFileExistsErrorr1   r   r   rJ   )	r   r*   rF   r  parentr~   r!   r   r   r   r   r	   r   R  s*    
zSourceFileLoader.set_dataN)r   r   r   r   r   r   r   r   r   r	   r  D  s   r  c               @   s   e Zd Zdd Zdd ZdS )SourcelessFileLoaderc             C   s0   | j |}| j|}t|||d}t|||dS )N)r   r*   )r   rx   )r   r   r   r   )r   r   r*   rF   r  r   r   r	   r   u  s    

zSourcelessFileLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r   {  s    zSourcelessFileLoader.get_sourceN)r   r   r   r   r   r   r   r   r	   r  q  s   r  c               @   sX   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd ZdS )ExtensionFileLoaderc             C   s   || _ || _d S )N)r   r*   )r   r   r*   r   r   r	   r     s    zExtensionFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)r
  r   )r   r  r   r   r	   r    s    zExtensionFileLoader.__eq__c             C   s   t | jt | jA S )N)r  r   r*   )r   r   r   r	   r    s    zExtensionFileLoader.__hash__c             C   s$   t jtj|}t jd|j| j |S )Nz&extension module {!r} loaded from {!r})r   r   r   create_dynamicr   r   r*   )r   r   r   r   r   r	   r     s
    
z!ExtensionFileLoader.create_modulec             C   s$   t jtj| t jd| j| j d S )Nz(extension module {!r} executed from {!r})r   r   r   exec_dynamicr   r   r*   )r   r   r   r   r	   r     s    zExtensionFileLoader.exec_modulec                s$   t | jd  t fddtD S )Nr#   c             3   s   | ]} d | kV  qdS )r   Nr   )r   suffix)	file_namer   r	   	<genexpr>  s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)r.   r*   anyEXTENSION_SUFFIXES)r   r   r   )r  r	   r     s    zExtensionFileLoader.is_packagec             C   s   d S )Nr   )r   r   r   r   r	   r     s    zExtensionFileLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r     s    zExtensionFileLoader.get_sourcec             C   s   | j S )N)r*   )r   r   r   r   r	   r     s    z ExtensionFileLoader.get_filenameN)r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r	   r    s   r  c               @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )_NamespacePathc             C   s$   || _ || _t| j | _|| _d S )N)_name_pathr}   _get_parent_path_last_parent_path_path_finder)r   r   r*   path_finderr   r   r	   r     s    z_NamespacePath.__init__c             C   s&   | j jd\}}}|dkrdS |dfS )NrN   r%   r   r*   __path__)r   r*   )r$  r'   )r   r  dotmer   r   r	   _find_parent_path_names  s    z&_NamespacePath._find_parent_path_namesc             C   s   | j  \}}ttj| |S )N)r-  r   r   modules)r   parent_module_namepath_attr_namer   r   r	   r&    s    z_NamespacePath._get_parent_pathc             C   sP   t | j }|| jkrJ| j| j|}|d k	rD|jd krD|jrD|j| _|| _| jS )N)r}   r&  r'  r(  r$  r   r   r%  )r   parent_pathr   r   r   r	   _recalculate  s    
z_NamespacePath._recalculatec             C   s   t | j S )N)iterr2  )r   r   r   r	   __iter__  s    z_NamespacePath.__iter__c             C   s   || j |< d S )N)r%  )r   indexr*   r   r   r	   __setitem__  s    z_NamespacePath.__setitem__c             C   s   t | j S )N)r&   r2  )r   r   r   r	   __len__  s    z_NamespacePath.__len__c             C   s   dj | jS )Nz_NamespacePath({!r}))r;   r%  )r   r   r   r	   __repr__  s    z_NamespacePath.__repr__c             C   s   || j  kS )N)r2  )r   itemr   r   r	   __contains__  s    z_NamespacePath.__contains__c             C   s   | j j| d S )N)r%  r   )r   r9  r   r   r	   r     s    z_NamespacePath.appendN)r   r   r   r   r-  r&  r2  r4  r6  r7  r8  r:  r   r   r   r   r	   r#    s   
r#  c               @   sP   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )_NamespaceLoaderc             C   s   t |||| _d S )N)r#  r%  )r   r   r*   r)  r   r   r	   r     s    z_NamespaceLoader.__init__c             C   s   dj |jS )Nz<module {!r} (namespace)>)r;   r   )r   r   r   r   r	   module_repr  s    z_NamespaceLoader.module_reprc             C   s   dS )NTr   )r   r   r   r   r	   r     s    z_NamespaceLoader.is_packagec             C   s   dS )Nr%   r   )r   r   r   r   r	   r     s    z_NamespaceLoader.get_sourcec             C   s   t dddddS )Nr%   z<string>r   T)r  )r  )r   r   r   r   r	   r     s    z_NamespaceLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.create_modulec             C   s   d S )Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.exec_modulec             C   s   t jd| j t j| |S )Nz&namespace module loaded with path {!r})r   r   r%  r   )r   r   r   r   r	   r     s    z_NamespaceLoader.load_moduleN)r   r   r   r   r   r<  r   r   r   r   r   r   r   r   r   r	   r;    s   	r;  c               @   sf   e Zd Zedd Zedd Zedd Zedd Zedd
dZedddZ	edddZ
d	S )
PathFinderc             C   s*   x$t jj D ]}t|dr|j  qW d S )Ninvalidate_caches)r   path_importer_cachevaluesr   r>  )r   finderr   r   r	   r>  #  s    
zPathFinder.invalidate_cachesc             C   sV   t jd k	rt j rtjdt x2t jD ]$}y||S  tk
rH   w&Y q&X q&W d S d S )Nzsys.path_hooks is empty)r   
path_hooksrP   rQ   r   r   )r   r*   hookr   r   r	   _path_hooks+  s    zPathFinder._path_hooksc             C   sf   |dkr*yt j }W n tk
r(   d S X ytj| }W n( tk
r`   | j|}|tj|< Y nX |S )Nr%   )r   r7   FileNotFoundErrorr   r?  r   rD  )r   r*   rA  r   r   r	   _path_importer_cache8  s    
zPathFinder._path_importer_cachec             C   sR   t |dr|j|\}}n|j|}g }|d k	r<tj||S tj|d }||_|S )Nr   )r   r   r   r   r   r   r   )r   r   rA  r   r   r   r   r   r	   _legacy_get_specN  s    

zPathFinder._legacy_get_specNc       	      C   s   g }x|D ]}t |ttfsq
| j|}|d k	r
t|drH|j||}n| j||}|d kr^q
|jd k	rl|S |j}|d krt	d|j
| q
W tj|d }||_|S d S )Nr   zspec missing loader)r   rZ   bytesrF  r   r   rG  r   r   r   r   r   r   )	r   r   r*   r   namespace_pathentryrA  r   r   r   r   r	   	_get_spec]  s(    



zPathFinder._get_specc             C   sd   |d krt j}| j|||}|d kr(d S |jd kr\|j}|rVd|_t||| j|_|S d S n|S d S )N	namespace)r   r*   rK  r   r   r   r#  )r   r   r*   r   r   rI  r   r   r	   r   }  s    
zPathFinder.find_specc             C   s   | j ||}|d krd S |jS )N)r   r   )r   r   r*   r   r   r   r	   r     s    zPathFinder.find_module)N)NN)N)r   r   r   r   r>  rD  rF  rG  rK  r   r   r   r   r   r	   r=    s   r=  c               @   sV   e Zd Zdd Zdd ZeZdd Zdd Zdd
dZ	dd Z
edd Zdd Zd	S )
FileFinderc                sX   g }x(|D ] \ }|j  fdd|D  q
W || _|p:d| _d| _t | _t | _d S )Nc             3   s   | ]}| fV  qd S )Nr   )r   r  )r   r   r	   r     s    z&FileFinder.__init__.<locals>.<genexpr>rN   r#   rv   )r   _loadersr*   _path_mtimeset_path_cache_relaxed_path_cache)r   r*   loader_detailsloadersr   r   )r   r	   r     s    
zFileFinder.__init__c             C   s
   d| _ d S )Nr#   rv   )rO  )r   r   r   r	   r>    s    zFileFinder.invalidate_cachesc             C   s*   | j |}|d krd g fS |j|jp&g fS )N)r   r   r   )r   r   r   r   r   r	   r     s    
zFileFinder.find_loaderc             C   s   |||}t ||||dS )N)r   r   )r   )r   r   r   r*   smslr   r   r   r   r	   rK    s    
zFileFinder._get_specNc             C   sb  d}|j dd }yt| jp"tj j}W n tk
rB   d	}Y nX || jkr\| j  || _t	 rr| j
}|j }n
| j}|}||krt| j|}xH| jD ]6\}	}
d|	 }t||}t|r| j|
|||g|S qW t|}xX| jD ]N\}	}
t| j||	 }tjd|dd ||	 |krt|r| j|
||d |S qW |r^tjd| tj|d }|g|_|S d S )
NFrN   rK   r#   r   z	trying {})	verbosityzpossible namespace for {}rv   )r'   r0   r*   r   r7   r  r1   rO  _fill_cacher
   rR  rw   rQ  r"   rN  r6   rK  r8   r   r   r   r   )r   r   r   is_namespacetail_moduler   cachecache_module	base_pathr  r   init_filename	full_pathr   r   r   r	   r     sF    




zFileFinder.find_specc       	      C   s   | j }ytj|ptj }W n tttfk
r:   g }Y nX tjj	dsTt
|| _nNt
 }x@|D ]8}|jd\}}}|rdj||j }n|}|j| q`W || _tjj	trdd |D | _d S )Nr   rN   z{}.{}c             S   s   h | ]}|j  qS r   )rw   )r   fnr   r   r	   	<setcomp>  s    z)FileFinder._fill_cache.<locals>.<setcomp>)r*   r   listdirr7   rE  PermissionErrorNotADirectoryErrorr   r   r   rP  rQ  rl   r;   rw   addr   rR  )	r   r*   contentslower_suffix_contentsr9  r   r+  r  new_namer   r   r	   rW    s"    

zFileFinder._fill_cachec                s    fdd}|S )Nc                s"   t | std| d | f S )Nzonly directories are supported)r*   )r8   r   )r*   )r   rS  r   r	   path_hook_for_FileFinder*  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )r   rS  rh  r   )r   rS  r	   	path_hook   s    
zFileFinder.path_hookc             C   s   dj | jS )NzFileFinder({!r}))r;   r*   )r   r   r   r	   r8  2  s    zFileFinder.__repr__)N)r   r   r   r   r>  r   r   r   rK  r   rW  r   ri  r8  r   r   r   r	   rM    s   	
0rM  c             C   s   | j d}| j d}|sB|r$|j}n||kr8t||}n
t||}|sTt|||d}y$|| d< || d< || d< || d< W n tk
r   Y nX d S )N
__loader____spec__)r   __file__
__cached__)getr   r  r  r   	Exception)nsr   pathname	cpathnamer   r   r   r   r	   _fix_up_module8  s"    


rs  c              C   s&   t tj f} ttf}ttf}| ||gS )N)r  r   extension_suffixesr  rm   r  r_   )
extensionssourcebytecoder   r   r	   r   O  s    r   c             C   s  | a t jat jatjt }x8dD ]0}|tjkr:t j|}n
tj| }t||| q W ddgfdddgff}x`|D ]P\}}|d	 }|tjkrtj| }P qpyt j|}P W qp tk
r   wpY qpX qpW td
t|d| t|d| t|ddj| yt jd}	W n tk
r   d }	Y nX t|d|	 t jd}
t|d|
 |dkrbt jd}t|d| t|dt	  t
jtj  |dkrtjd dt
krdt_d S )NrA   rP   builtinsr   posix/nt\rO   zimportlib requires posix or ntr   r   r   r%   _thread_weakrefwinregr   r
   z.pywz_d.pydT)rA   rP   rx  r   )r   r   r   r.  r   _builtin_from_namer   r   r    r   r"  r   rt  rm   r   r   r   )_bootstrap_moduleself_modulebuiltin_namebuiltin_module
os_details
builtin_osr   r   	os_modulethread_moduleweakref_modulewinreg_moduler   r   r	   _setupZ  sP    













r  c             C   s2   t |  t }tjjtj| g tjjt	 d S )N)
r  r   r   rB  r   rM  ri  	meta_pathr   r=  )r  supported_loadersr   r   r	   _install  s    r  )r   )r   r   )r9   )N)NNN)NNN)rO   rO   )N)N)9r   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r   r   r"   r.   r0   r5   r6   r8   rJ   type__code__r   r   r   r   r   _RAW_MAGIC_NUMBERr^   r]   rm   r_   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESrh   rs   r{   r   r   r   r   r   r   r   r   objectr   r   r   r   r   r	  r  r  r"  r  r#  r;  r=  rM  rs  r   r  r  r   r   r   r	   <module>   sj   
	

{-"
7


C@n)-5<*  
D