
    <|h                         d Z ddlmZmZmZ ddlZddlZddlZddlm	Z	  G d de
      Zd Z ej                  d       ej                  d	       ej                  d
      fdZefdZeZd Zy)z1
Private support for parsing textual addresses.

    )absolute_importdivisionprint_functionN)hostname_typesc                       e Zd Zy)AddressSyntaxErrorN)__name__
__module____qualname__     Y/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/resolver/_addresses.pyr   r   $   s    r   r   c                    t        | t              s| j                         } | j                  d      }t	        |      dk7  rt        |       |D ]:  }|j                         st
        t	        |      dkD  s(|d   dk(  s1t        |        	 |D cg c]  }t        |       }}t        j                  dg| S c c}w #  t        |       xY w)z
    Convert an IPv4 address in text form to binary struct.

    *text*, a ``text``, the IPv4 address in textual form.

    Returns a ``binary``.
       .      r   0BBBB)

isinstancebytesencodesplitlenr   isdigitintstructpack)textpartspartintss       r   _ipv4_inet_atonr"   (   s     dE"{{}JJtE
5zQ && +||~$$t9q=T!W^$T**+'&+,dD	,,{{6)D)) -' &&s   B> B9!B> 9B> >Cs   (.*):(\d+\.\d+\.\d+\.\d+)$s   ::.*s   .*::$c                    t        | t              s| j                         } | dk(  rd} |j                  |       }|ot	        t        |j                  d                  }dj                  |j                  d      j                         |d   |d   |d   |d         j                         } |j                  |       }|| dd } n|j                  |       }|| dd	 } | j                  d
      }t        |      }|dkD  rt        d}g }	|D ]{  }
|
dk(  r8|rt        |       d}t        dd|z
  dz         D ]  }|	j                  d        @t        |
      }|dkD  rt        |       |dk7  rdd|z
  z  |
z   }
|	j                  |
       } |dk  r|st        |       dj                  |	      } 	 t!        j"                  |       S # t         j$                  t&        f$ r t        |       w xY w)z
    Convert an IPv6 address in text form to binary form.

    *text*, a ``text``, the IPv6 address in textual form.

    Returns a ``binary``.
    s   ::s   0::N   z{}:{:02x}{:02x}:{:02x}{:02x}r   r         :   Fr   Ts   0000r      0)r   r   r   match	bytearrayr"   groupformatdecoder   r   SyntaxErrorr   rangeappendjoinbinascii	unhexlifyError	TypeError)r   
_v4_ending_colon_colon_start_colon_colon_endmbchunksl
seen_empty	canonicalc_lcs                r   _ipv6_inet_atonrC   C   s     dE"{{}u} 	A9oaggaj12/66qwwqz7H7H7J78tQqT1Q478t=>Dfh 	 	  &A9ABx""4(y9D ZZFFA1uJI  8(..J1a!eai( *  )* QBAv(..QwQV_)Q  	1uZ &&88ID
'!!$''NNI& ' &&'s   *F? ?%G$c                 Z    | rt        | t              sy	  ||        y# t        $ r Y yw xY w)NFT)r   r   r   )hostparses     r   _is_addrrG      s6    z$7d   s    	**c                     | r9t        | t              r)t        | t              rdnd}| j                  |d      d   } t	        | t
              S )N%   %r   r   )r   r   strr   rG   rC   )rE   ss     r   is_ipv6_addrrM      s@    
40dC(Cdzz!Q"D/**r   )__doc__
__future__r   r   r   r3   rer   gevent.resolverr   
ValueErrorr   r"   compilerC   rG   is_ipv4_addrrM   r   r   r   <module>rU      sz   . A @  	  *	 	'8  *rzz*HI'1rzz(';%/RZZ	%:J'Z )  +r   