o
    %zh5                     @   s`   d dl mZmZmZmZ d dlZd dlZddlmZ ddl	m
Z
mZmZmZ dd Zdd	 ZdS )
    )unicode_literalsdivisionabsolute_importprint_functionN   )unwrap)byte_clsbytes_to_liststr_cls	type_namec                 C   sh  | t tjtjgvrttdttjttjt| t|ts)t	tdt
|| tjkr0dnd}t||krBttd|t|| tjkrOdtt| S td|}i }d}d	}t|d
 D ]&\}}|dkr|d	ur|| }	|	|vry|||	< t||	}d	}qa|d	u r|}qadd |D }
|dk rd|
S || }|| }d|
d	| d d|
|d	  S )a  
    Windows compatibility shim for socket.inet_ntop().

    :param address_family:
        socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6

    :param packed_ip:
        A byte string of the network form of an IP address

    :return:
        A unicode string of the IP address
    p
            address_family must be socket.AF_INET (%s) or socket.AF_INET6 (%s),
            not %s
            zA
            packed_ip must be a byte string, not %s
                  zA
            packed_ip must be %d bytes long - is %d
            z%d.%d.%d.%d	   !HHHHHHHHr   N)c                 S   s   g | ]
}t |d d qS )   N)hex).0o r   K/var/www/html/kangema/venv/lib/python3.10/site-packages/asn1crypto/_inet.py
<listcomp>I   s    zinet_ntop.<locals>.<listcomp>r   :::)setsocketAF_INETAF_INET6
ValueErrorr   repr
isinstancer   	TypeErrorr   lentupler	   structunpack	enumeratemaxjoin)address_family	packed_iprequired_lenoctetsruns_of_zerolongest_run
zero_indexioctetlengthhexed
zero_startzero_endr   r   r   	inet_ntop   sV   




(r6   c                 C   s  | t tjtjgvrttdttjttjt| t|ts)t	tdt
|| tjkrk|d}t|dk}|sWg }|D ]}t|}|dksM|dk rQd} n|| q?|rbttdt|tjd	g|R  S d
}|d}|dkryd}n4|dkr|d}t|dk}n$|d\}}|d}	|d}
dt|	 t|
 }|	dg|  |
 }|sg }|D ]}t|d}|dks|dk rd} n|| qtjdg|R  S ttdt|)a  
    Windows compatibility shim for socket.inet_ntop().

    :param address_family:
        socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6

    :param ip_string:
        A unicode string of an IP address

    :return:
        A byte string of the network form of the IP address
    r   zD
            ip_string must be a unicode string, not %s
            .r      r   Tz
                ip_string must be a dotted string with four integers in the
                range of 0 to 255, got %s
                s   !BBBBFr   r   r      0r   i  r   z?
        ip_string must be a valid ipv6 string, got %s
        )r   r   r   r   r   r   r   r    r
   r!   r   splitr"   intappendr$   packcount)r)   	ip_stringr,   errorintsr   omittedbeginendbegin_octets
end_octetsmissingr   r   r   	inet_ptonT   sl   








rI   )
__future__r   r   r   r   r   r$   _errorsr   _typesr   r	   r
   r   r6   rI   r   r   r   r   <module>   s   I