a
    zej                     @   sN  d dl Z d dlZd dlmZ dZejdv r4d ZZn d dlZe Z	e	dkZe	dkZdZ
dZerhd	Z
d
Zg d\ZZZZeZeZG dd deZG d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"d# Zd$d% Z d&d' Z!z*d dl"Z"e#e"d(dZ$e#e"d)dZ%e"j&Z'W n$ e(yL   dZ"dZ$dZ%dZ'Y n0 d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,er~eegZ-nFejd2kreeegZ-n.ejd3krg Z-neregZ-neeeeegZ-e j.d4kre*ge- Z/ne j.d5kre+ge- Z/ne-Z/da0d6d7 Z1da2dDd8d9Z3d:d; Z4d<d= Z5d>d? Z6ed@Z7edAZ8edBZ9edCZ:dS )E    N)EnumzKa-Ping Yee <ping@zesty.ca>)win32darwinFZAIXZLinux   :   .T)zreserved for NCS compatibilityzspecified in RFC 4122z$reserved for Microsoft compatibilityzreserved for future definitionc                   @   s   e Zd ZdZdZdZdS )SafeUUIDr   N)__name__
__module____qualname__safeZunsafeunknown r   r   /usr/lib/python3.9/uuid.pyr   N   s   r   c                   @   s6  e Zd ZdZd<ejd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d Zdd Zdd Zedd Zed d! Zed"d# Zed$d% Zed&d' Zed(d) Zed*d+ Zed,d- Zed.d/ Zed0d1 Zed2d3 Zed4d5 Zed6d7 Z ed8d9 Z!ed:d; Z"dS )=UUID)intis_safe__weakref__N)r   c                C   s  |||||g d dkr td|d url|dddd}|ddd}t|dkrbtd	t|d
}|d urt|d
krtd|dd d |ddd  |ddd  |dd   }|d urt|d
krtdtj|dd}|d urt|dkrtd|\}}	}
}}}d|  kr0dk s:n tdd|	  krRdk s\n tdd|
  krtdk s~n tdd|  krdk sn tdd|  krdk sn tdd|  krdk sn td |d> |B }|d!> |	d"> B |
d#> B |d$> B |B }|d urDd|  kr:d%d&> k sDn td'|d urd%|  krfdkspn td(|d)M }|d*O }|d+M }||d,> O }t	| d-| t	| d.| d S )/N   zGone of the hex, bytes, bytes_le, fields, or int arguments must be givenzurn: zuuid:z{}-    z$badly formed hexadecimal UUID string   z bytes_le is not a 16-char string   r            zbytes is not a 16-char stringbig)	byteorder   zfields is not a 6-tupler   l        z*field 1 out of range (need a 32-bit value)i   z*field 2 out of range (need a 16-bit value)z*field 3 out of range (need a 16-bit value)   z*field 4 out of range (need an 8-bit value)z*field 5 out of range (need an 8-bit value)          z*field 6 out of range (need a 48-bit value)`   P   @   0         z*int is out of range (need a 128-bit value)zillegal version numberl                    l          L   r   r   )
count	TypeErrorreplacestriplen
ValueErrorint_
from_bytesobject__setattr__)selfhexbytesbytes_lefieldsr   versionr   time_lowtime_midtime_hi_versionclock_seq_hi_variantclock_seq_lownode	clock_seqr   r   r   __init__   st     




zUUID.__init__c                 C   s&   d| j i}| jtjkr"| jj|d< |S Nr   r   )r   r   r   r   value)r4   dr   r   r   __getstate__   s    
zUUID.__getstate__c                 C   s:   t | d|d  t | dd|v r.t|d ntj d S rB   )r2   r3   r   r   )r4   stater   r   r   __setstate__   s    zUUID.__setstate__c                 C   s   t |tr| j|jkS tS N
isinstancer   r   NotImplementedr4   otherr   r   r   __eq__   s    
zUUID.__eq__c                 C   s   t |tr| j|jk S tS rH   rI   rL   r   r   r   __lt__   s    
zUUID.__lt__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __gt__   s    
zUUID.__gt__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __le__  s    
zUUID.__le__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __ge__  s    
zUUID.__ge__c                 C   s
   t | jS rH   )hashr   r4   r   r   r   __hash__  s    zUUID.__hash__c                 C   s   | j S rH   r   rT   r   r   r   __int__  s    zUUID.__int__c                 C   s   d| j jt| f S )Nz%s(%r))	__class__r	   strrT   r   r   r   __repr__  s    zUUID.__repr__c                 C   s   t dd S )NzUUID objects are immutable)r+   )r4   namerC   r   r   r   r3     s    zUUID.__setattr__c                 C   sD   d| j  }d|d d |dd |dd |dd |dd  f S )N%032xz%s-%s-%s-%s-%sr      r      rV   )r4   r5   r   r   r   __str__  s    
2zUUID.__str__c                 C   s   | j ddS )Nr   r   )r   to_bytesrT   r   r   r   r6     s    z
UUID.bytesc                 C   s<   | j }|dd d |ddd  |ddd  |dd   S )Nr   r   r   r   r   r6   )r4   r6   r   r   r   r7      s    (
zUUID.bytes_lec                 C   s   | j | j| j| j| j| jfS rH   )r:   r;   r<   r=   r>   r?   rT   r   r   r   r8   &  s    zUUID.fieldsc                 C   s
   | j d? S )Nr"   rV   rT   r   r   r   r:   +  s    zUUID.time_lowc                 C   s   | j d? d@ S )Nr#     rV   rT   r   r   r   r;   /  s    zUUID.time_midc                 C   s   | j d? d@ S )Nr$   rb   rV   rT   r   r   r   r<   3  s    zUUID.time_hi_versionc                 C   s   | j d? d@ S )N8      rV   rT   r   r   r   r=   7  s    zUUID.clock_seq_hi_variantc                 C   s   | j d? d@ S )Nr%   rd   rV   rT   r   r   r   r>   ;  s    zUUID.clock_seq_lowc                 C   s   | j d@ d> | jd> B | jB S )N  r%   r   )r<   r;   r:   rT   r   r   r   time?  s
    z	UUID.timec                 C   s   | j d@ d> | jB S )N?   r   )r=   r>   rT   r   r   r   r@   D  s    zUUID.clock_seqc                 C   s
   | j d@ S )Nl    rV   rT   r   r   r   r?   I  s    z	UUID.nodec                 C   s
   d| j  S )Nr\   rV   rT   r   r   r   r5   M  s    zUUID.hexc                 C   s   dt |  S )Nz	urn:uuid:)rY   rT   r   r   r   urnQ  s    zUUID.urnc                 C   s2   | j d@ stS | j d@ stS | j d@ s*tS tS d S )Nr(   l            l            )r   RESERVED_NCSRFC_4122RESERVED_MICROSOFTRESERVED_FUTURErT   r   r   r   variantU  s    


zUUID.variantc                 C   s    | j tkrt| jd? d@ S d S )Nr)      )rm   rj   r   rT   r   r   r   r9   `  s    
zUUID.version)NNNNNN)#r	   r
   r   	__slots__r   r   rA   rE   rG   rN   rO   rP   rQ   rR   rU   rW   rZ   r3   r_   propertyr6   r7   r8   r:   r;   r<   r=   r>   rf   r@   r?   r5   rh   rm   r9   r   r   r   r   r   T   s`   4  V














r   c              	   G   s   dd l }dd l}dd l}dd l}z|jd|j|j}|	ddg |j
| |j|d}|d u rlW d S t|j}d|d< |j|f| |j|j|d}	|	sW d S |	 \}
}||
W S  t|jfy   Y d S 0 d S )	Nr   PATHz/sbinz	/usr/sbin)pathCLC_ALL)stdoutstderrenv)ioosshutil
subprocessenvirongetdefpathsplitpathsepextendwhichjoindictPopenPIPEDEVNULLcommunicateBytesIOOSErrorSubprocessError)commandargsrx   ry   rz   r{   Z	path_dirs
executablerw   procru   rv   r   r   r   _get_command_stdoutg  s(     
r   c                 C   s
   | d@  S )Nl        r   macr   r   r   _is_universal  s    r   c                 C   s   t | |}|d u rd S d }|D ]}|   }tt|D ]f}|| |v r>z"||| }	t|	tdd}
W n t	t
fy   Y q>0 t|
r|
    S |p|
}q>q|pd S )N    r   )r   lowerrstripr   ranger.   r   r,   
_MAC_DELIMr/   
IndexErrorr   )r   r   keywordsZget_word_indexru   first_local_maclinewordsiwordr   r   r   r   _find_mac_near_keyword  s"    	
r   c                 C   s   |  t}t|dkrd S trJtdd |D s4d S ddd |D }n tdd |D s`d S d|}zt|dW S  ty   Y d S 0 d S )Nr   c                 s   s*   | ]"}d t |  kodkn  V  qdS )r&      Nr.   .0partr   r   r   	<genexpr>  r   z_parse_mac.<locals>.<genexpr>r   c                 s   s   | ]}| d dV  qdS )r      0N)rjustr   r   r   r   r     r   c                 s   s   | ]}t |d kV  qdS )r   Nr   r   r   r   r   r     r   r   )r   r   r.   _MAC_OMITS_LEADING_ZEROESallr   r   r/   )r   partsZhexstrr   r   r   
_parse_mac  s    

r   c              	   C   s   t | |}|d u rd S |   }z||}W n tyH   Y d S 0 d }|D ]b}|  }z|| }	W n ty   Y qRY n0 t|	}
|
d u rqRt|
r|
  S |d u rR|
}qR|S rH   )	r   readliner   r   indexr/   r   r   r   )r   r   headingru   r   Zcolumn_indexr   r   r   r   r   r   r   r   _find_mac_under_heading  s.    

r   c                  C   s4   d} dD ]&}t d|| dd }|r*|  S  d S d S )N)s   hwaddrs   ethers   address:s   lladdr)r   z-az-avZifconfigc                 S   s   | d S Nr&   r   r   r   r   r   <lambda>  r   z#_ifconfig_getnode.<locals>.<lambda>r   )r   r   r   r   r   r   _ifconfig_getnode  s    r   c                  C   s    t dddgdd } | r| S d S )NZiplinks
   link/etherc                 S   s   | d S r   r   r   r   r   r   r     r   z_ip_getnode.<locals>.<lambda>r   r   r   r   r   _ip_getnode  s    r   c                  C   s   dd l } dd l}z|| }W n ty6   Y d S 0 tdd| |gdd }|rZ|S tdd| |gdd }|r||S tdd| d| gdd }|r|S d S )	Nr   Zarpz-anc                 S   s   dS )Nr   r   r   r   r   r   r     r   z_arp_getnode.<locals>.<lambda>c                 S   s   | d S r   r   r   r   r   r   r     r   z(%s)c                 S   s   | d S )Nr   r   r   r   r   r   r     r   )ry   socketgethostbynamegethostnamer   r   fsencode)ry   r   Zip_addrr   r   r   r   _arp_getnode  s"    r   c                   C   s   t dddgdd S )NZlanscanz-ais   lan0c                 S   s   dS )Nr   r   r   r   r   r   r   (  r   z"_lanscan_getnode.<locals>.<lambda>r   r   r   r   r   _lanscan_getnode%  s    r   c                   C   s   t dddS )NZnetstatz-ians   Address)r   r   r   r   r   _netstat_getnode*  s    r   c                   C   s   t  S rH   _windll_getnoder   r   r   r   _ipconfig_getnode/  s    r   c                   C   s   t  S rH   r   r   r   r   r   _netbios_getnode4  s    r   Zgenerate_time_safeZ
UuidCreatec                   C   s   d S rH   r   r   r   r   r   _load_system_functionsG  s    r   c                  C   s   t rt  \} }t| djS d S )Nra   )_generate_time_safer   r?   )	uuid_time_r   r   r   _unix_getnodeK  s    
r   c                  C   s   t rt  } t| djS d S )N)r7   )_UuidCreater   r?   )Z
uuid_bytesr   r   r   r   Q  s    r   c                  C   s   dd l } | ddB S )Nr   r%   l        )randomgetrandbits)r   r   r   r   _random_getnodeW  s    r   r   r   posixntc                  C   sd   t d urt S ttg D ]H} z
|  a W n   Y qY n0 t d urdt   krRdk rn qt   S qd S )Nr   r!   )_node_GETTERSr   )getterr   r   r   getnode  s    	

 
r   c                 C   s  t d ur\| |  u rd u r\n n<t  \}}zt|}W n tyN   tj}Y n0 t||dS dd l}| }|d d }td ur|tkrtd }|a|d u rdd l}|	d}|d@ }	|d? d	@ }
|d
? d@ }|d@ }|d? d@ }| d u rt
 } t|	|
|||| fddS )N)r6   r   r   d   l    @'Hwr&      l    r   rb   r%   re   rd   r   rg   )r8   r9   )r   r   r/   r   r   rf   time_ns_last_timestampr   r   r   )r?   r@   r   Zsafely_generatedr   rf   ZnanosecondsZ	timestampr   r:   r;   r<   r>   r=   r   r   r   uuid1  s8     

r   c                 C   s<   ddl m} || jt|d dd }t|d d ddS )	Nr   )md5utf-8F)Zusedforsecurityr   r   r6   r9   )hashlibr   r6   digestr   )	namespacer[   r   r   r   r   r   uuid3  s    
r   c                   C   s   t tdddS )Nr   r   r   )r   ry   urandomr   r   r   r   uuid4  s    r   c                 C   s8   ddl m} || jt|d  }t|d d ddS )Nr   )sha1r   r   r   r   )r   r   r6   r   r   )r   r[   r   rS   r   r   r   uuid5  s    r   z$6ba7b810-9dad-11d1-80b4-00c04fd430c8z$6ba7b811-9dad-11d1-80b4-00c04fd430c8z$6ba7b812-9dad-11d1-80b4-00c04fd430c8z$6ba7b814-9dad-11d1-80b4-00c04fd430c8)NN);ry   sysenumr   
__author__platformZ_AIXZ_LINUXsystemZ_platform_systemr   r   ri   rj   rk   rl   r   r0   r6   Zbytes_r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_uuidgetattrr   r   Zhas_uuid_generate_time_safeZ_has_uuid_generate_time_safeImportErrorr   r   r   r   Z_OS_GETTERSr[   r   r   r   r   r   r   r   r   ZNAMESPACE_DNSZNAMESPACE_URLZNAMESPACE_OIDZNAMESPACE_X500r   r   r   r   <module>/   s   

  )#&




&	