o
     JAfj                     @   sB  	 d dl Z d dlZd dlmZ dZejdv rd ZZnd dlZe Z	e	dkZe	dkZdZ
dZer5d	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(y   dZ"dZ$dZ%dZ'Y nw d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,ereegZ-n e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.10/uuid.pyr   N   s    r   c                   @   s<  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r7|dddd}|ddd}t|dkr2td	t|d
}|d ur`t|d
krEtd|dd d |ddd  |ddd  |dd   }|d urut|d
krntdtj|dd}|d urt|dkrtd|\}}	}
}}}d|  krdk std tdd|	  krdk std tdd|
  krdk std tdd|  krdk std tdd|  krdk std tdd|  krdk std  td |d> |B }|d!> |	d"> B |
d#> B |d$> B |B }|d ur+d|  kr&d%d&> k s+td' td'|d urVd%|  kr?dksDtd( 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__   s   




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  d S 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__      
zUUID.__eq__c                 C   s   t |tr| j|jk S tS rH   rI   rL   r   r   r   __lt__   rO   zUUID.__lt__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __gt__   rO   zUUID.__gt__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __le__  rO   zUUID.__le__c                 C   s   t |tr| j|jkS tS rH   rI   rL   r   r   r   __ge__  rO   zUUID.__ge__c                 C   s
   t | jS rH   )hashr   r4   r   r   r   __hash__     
zUUID.__hash__c                 C   s   | j S rH   r   rU   r   r   r   __int__  s   zUUID.__int__c                 C   s   d| j jt| f S )Nz%s(%r))	__class__r	   strrU   r   r   r   __repr__  s   zUUID.__repr__c                 C   s   t d)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      rX   )r4   r5   r   r   r   __str__  s   
2zUUID.__str__c                 C   s   | j ddS )Nr   r   )r   to_bytesrU   r   r   r   r6        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?   rU   r   r   r   r8   &  s   zUUID.fieldsc                 C   s
   | j d? S )Nr"   rX   rU   r   r   r   r:   +     
zUUID.time_lowc                 C      | j d? d@ S )Nr#     rX   rU   r   r   r   r;   /  rc   zUUID.time_midc                 C   rf   )Nr$   rg   rX   rU   r   r   r   r<   3  rc   zUUID.time_hi_versionc                 C   rf   )N8      rX   rU   r   r   r   r=   7  rc   zUUID.clock_seq_hi_variantc                 C   rf   )Nr%   ri   rX   rU   r   r   r   r>   ;  rc   zUUID.clock_seq_lowc                 C   s   | j d@ d> | jd> B | jB S )N  r%   r   )r<   r;   r:   rU   r   r   r   time?  s
   z	UUID.timec                 C   s   | j d@ d> | jB S )N?   r   )r=   r>   rU   r   r   r   r@   D  s   zUUID.clock_seqc                 C   s
   | j d@ S )Nl    rX   rU   r   r   r   r?   I  re   z	UUID.nodec                 C   s
   d| j  S )Nr^   rX   rU   r   r   r   r5   M  re   zUUID.hexc                 C   s   dt |  S )Nz	urn:uuid:)r[   rU   r   r   r   urnQ  s   zUUID.urnc                 C   s.   | j d@ stS | j d@ stS | j d@ stS tS )Nr(   l            l            )r   RESERVED_NCSRFC_4122RESERVED_MICROSOFTRESERVED_FUTURErU   r   r   r   variantU  s   


zUUID.variantc                 C   s    | j tkrt| jd? d@ S d S )Nr)      )rr   ro   r   rU   r   r   r   r9   `  s   
zUUID.version)NNNNNN)#r	   r
   r   	__slots__r   r   rA   rE   rG   rN   rP   rQ   rR   rS   rV   rY   r\   r3   ra   propertyr6   r7   r8   r:   r;   r<   r=   r>   rk   r@   r?   r5   rm   rr   r9   r   r   r   r   r   T   sd    3V














r   c              	   G   s   dd l }dd l}dd l}dd l}zM|jd|j|j}|	ddg |j
| |j|d}|d u r6W d S t|j}d|d< |j|f| |j|j|d}	|	sRW d S |	 \}
}||
W S  t|jfyj   Y d S w )	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argsr}   r~   r   r   Z	path_dirs
executabler|   procrz   r{   r   r   r   _get_command_stdoutg  s*    
r   c                 C   s
   | d@  S )Nl        r   macr   r   r   _is_universal  rW   r   c                 C   s   	 t | |}|d u rd S d }|D ]D}|   }tt|D ]3}|| |v rSz||| }	t|	tdd}
W n t	t
fyD   Y q w t|
rO|
    S |pR|
}q q|pXd S )N    r   )r   lowerrstripr   ranger.   r   r,   
_MAC_DELIMr/   
IndexErrorr   )r   r   keywordsZget_word_indexrz   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r%tdd |D sd S ddd |D }ntdd |D s0d S d|}zt|dW S  tyE   Y d S w )Nr   c                 s   s,    | ]}d t |  kodkn  V  qdS )r&      Nr.   .0partr   r   r   	<genexpr>  s   * z_parse_mac.<locals>.<genexpr>r   c                 s   s    | ]	}| d dV  qdS )r      0N)rjustr   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y%   Y d S w d }|D ]/}|  }z|| }	W n	 tyA   Y q*w t|	}
|
d u rKq*t|
rS|
  S |d u rY|
}q*|S rH   )	r   readliner   r   indexr/   r   r   r   )r   r   headingrz   r   Zcolumn_indexr   r   r   r   r   r   r   r   _find_mac_under_heading  s6   
r   c                  C   s6   	 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      | d S Nr&   r   r   r   r   r   <lambda>      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   r   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y   Y d S w tdd| |gdd }|r.|S tdd| |gdd }|r?|S tdd| d| gdd }|rR|S d S )	Nr   Zarpz-anc                 S      dS )Nr   r   r   r   r   r   r         z_arp_getnode.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   z(%s)c                 S   r   )Nr   r   r   r   r   r   r     r   )r~   socketgethostbynamegethostnamer   r   fsencode)r~   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   r   )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      	 t  S rH   _windll_getnoder   r   r   r   _ipconfig_getnode/     r   c                   C   r   rH   r   r   r   r   r   _netbios_getnode4  r   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 )Nrd   )_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   s^   	 t d urt S ttg D ] } z|  a W n   Y qt d ur,dt   kr*dk r,t   S  q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y(   tj}Y nw t||dS dd l}| }|d d }td urI|tkrItd }|a|d u rXdd l}|	d}|d@ }	|d? d	@ }
|d
? d@ }|d@ }|d? d@ }| d u ryt
 } t|	|
|||| fddS )N)r6   r   r   d   l    @'Hwr&      l    r   rg   r%   rj   ri   r   rl   )r8   r9   )r   r   r/   r   r   rk   time_ns_last_timestampr   r   r   )r?   r@   r   Zsafely_generatedr   rk   ZnanosecondsZ	timestampr   r:   r;   r<   r>   r=   r   r   r   uuid1  s<    


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   r~   urandomr   r   r   r   uuid4  s   r   c                 C   s:   	 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   rT   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);r~   sysenumr   
__author__platformZ_AIXZ_LINUXsystemZ_platform_systemr   r   rn   ro   rp   rq   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    .

  )#&







&	