§
    Hºiu  ã                   ó  — d Z ddlZddlZddlmZ ddlZddlZ ej        d¦  «        Z	de
defd„Z ej        d¦  «        Z ej        d	¦  «        Z ej        d
¦  «        Zddee
z  dede
fd„ZdZde
defd„Zdee
z  defd„ZdS )zIPv6 helper functions.é    N)ÚListz0+([0-9a-f]+)ÚaddressÚreturnc                 ó�  — t          | ¦  «        dk    rt          d¦  «        ‚t          j        | ¦  «        }g }d}t          |¦  «        }||k     rp|||dz   …                              ¦   «         }t
                               |¦  «        }|�|                     d¦  «        }|                     |¦  «         |dz  }||k     °pd}d}d}	d}
t          d	¦  «        D ]*}||         d
k    r|
r|}||	z
  }||k    r|	}|}d}
Œ$|
s|}	d}
Œ+|
rd	}||	z
  }||k    r|	}|}|dk    r–|dk    rN|dk    s|dk    rB|d         dk    r6|dk    rd}nd}|t          j                             | dd…         ¦  «        z   }nWd                     |d|…         ¦  «        dz   d                     |||z   d…         ¦  «        z   }nd                     |¦  «        }|S )zÍConvert an IPv6 address in binary form to text form.

    *address*, a ``bytes``, the IPv6 address in binary form.

    Raises ``ValueError`` if the address isn't 16 bytes long.
    Returns a ``str``.
    é   z IPv6 addresses are 16 bytes longr   é   Né   éÿÿÿÿFé   Ú0Té   é   Úffffz::z::ffff:é   ú:)ÚlenÚ
ValueErrorÚbinasciiÚhexlifyÚdecodeÚ_leading_zeroÚmatchÚgroupÚappendÚrangeÚdnsÚipv4Ú	inet_ntoaÚjoin)r   ÚhexÚchunksÚiÚlÚchunkÚmÚ
best_startÚbest_lenÚstartÚlast_was_zeroÚendÚcurrent_lenÚprefixÚthexs                  úM/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/ipv6.pyr   r      s6  € õ ˆ7�|„|�rÒÐÝÐ;Ñ<Ô<Ð<Ý
Ô
˜7Ñ
#Ô
#€CØ€FØ	€AÝˆC‰Œ€AØ
ˆaŠ%ˆ%Ø�A˜˜A™�I”×%Ò%Ñ'Ô'ˆõ ×Ò Ñ&Ô&ˆØˆ=Ø—G’G˜A‘J”JˆEØ�Š�eÑÔÐØ	ˆQ‰ˆð ˆaŠ%ˆ%ð €JØ€HØ€EØ€MÝ�1‰XŒXð !ð !ˆØ�!Œ9˜ÒÐØð &Ø�Ø! E™k�Ø Ò)Ð)Ø!&�JØ*�HØ %�øØð 	!ØˆEØ ˆMøØð #ØˆØ˜E‘kˆØ˜Ò!Ð!ØˆJØ"ˆHØ�!‚|€|Ø˜Š?ˆ? ¨A¢ °¸Q²°À6È!Ä9ÐPVÒCVÐCVà˜1Š}ˆ}Ø��à"�Ø�CœH×.Ò.¨w°r°s°s¬|Ñ<Ô<Ñ<ˆDˆDð —’˜   Ô,Ñ-Ô-Øñà—(’(˜6 *¨xÑ"7Ð"9Ð"9Ô:Ñ;Ô;ñ<ð ˆDð �xŠx˜ÑÔˆØ€Kó    s   (.*):(\d+\.\d+\.\d+\.\d+)$s   ::.*s   .*::$FÚtextÚignore_scopec                 ó¤  — t          | t          ¦  «        s|                      ¦   «         }n| }|rJ|                     d¦  «        }t	          |¦  «        }|dk    r	|d         }n|dk    rt
          j        j        ‚|dk    rt
          j        j        ‚|                     d¦  «        r&|                     d¦  «        st
          j        j        ‚| 	                    d¦  «        r&| 	                    d¦  «        st
          j        j        ‚|dk    rd}t                               |¦  «        }|�“t
          j                             |                     d¦  «        ¦  «        }|                     d	¦  «                             ¦   «         › d
|d         d›|d	         d›d
|d         d›|d         d›�                     ¦   «         }t                                |¦  «        }|�|d	d…         }n&t"                               |¦  «        }|�
|dd…         }|                     d¦  «        }t	          |¦  «        }|dk    rt
          j        j        ‚d}g }	|D ]˜}
|
dk    rD|rt
          j        j        ‚d}t%          dd|z
  d	z   ¦  «        D ]}|	                     d¦  «         ŒŒLt	          |
¦  «        }|dk    rt
          j        j        ‚|dk    rdd|z
  z  |
z   }
|	                     |
¦  «         Œ™|dk     r|st
          j        j        ‚d                     |	¦  «        }	 t+          j        |¦  «        S # t*          j        t0          f$ r t
          j        j        ‚w xY w)a+  Convert an IPv6 address in text form to binary form.

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

    *ignore_scope*, a ``bool``.  If ``True``, a scope will be ignored.
    If ``False``, the default, it is an error for a scope to be present.

    Returns a ``bytes``.
    ó   %é   r   r/   ó   :s   ::s   0::Nr	   r   Ú02xé   r
   r   FTs   0000r   ó   0)Ú
isinstanceÚbytesÚencodeÚsplitr   r   Ú	exceptionÚSyntaxErrorÚendswithÚ
startswithÚ
_v4_endingr   r   Ú	inet_atonr   r   Ú_colon_colon_startÚ_colon_colon_endr   r   r   r   Ú	unhexlifyÚErrorÚ	TypeError)r0   r1   ÚbtextÚpartsr#   r%   Úbr!   Ú
seen_emptyÚ	canonicalÚcÚ_Úlcs                r.   rB   rB   h   sR  € õ �d�EÑ"Ô"ð Ø—’‘”ˆˆàˆàð ,Ø—’˜DÑ!Ô!ˆÝ�‰JŒJˆØ�Š6ˆ6Ø˜!”HˆEˆEØ�ŠUˆUÝ”-Ô+Ð+à�‚|€|ÝŒmÔ'Ð'Ø	�Š˜Ñ	Ô	ð  e§n¢n°UÑ&;Ô&;ð ÝŒmÔ'Ð'Ø	×	Ò	˜$Ñ	Ô	ð ¨×(8Ò(8¸Ñ(?Ô(?ð ÝŒmÔ'Ð'Ø	�%ŠˆØˆõ 	×Ò˜ÑÔ€AØ€}ÝŒH×Ò˜qŸwšw q™zœzÑ*Ô*ˆà�wŠw�q‰zŒz× Ò Ñ"Ô"ÐNÐN Q q¤TÐNÐN¨q°¬tÐNÐNÐN¸!¸A¼$ÐNÐNÀAÀaÄDÐNÐNÐNß
Š&‰(Œ(ð 	õ 	× Ò  Ñ'Ô'€AØ€}Ø�a�b�b”	ˆˆå×"Ò" 5Ñ)Ô)ˆØˆ=Ø˜#˜2˜#”JˆEð �[Š[˜ÑÔ€FÝˆF‰Œ€AØˆ1‚u€uÝŒmÔ'Ð'Ø€JØ€IØð  ð  ˆØ�Š8ˆ8Øð 0Ý”mÔ/Ð/ØˆJÝ˜1˜a !™e a™iÑ(Ô(ð *ð *�Ø× Ò  Ñ)Ô)Ð)Ð)ð*õ �Q‘”ˆBØ�AŠvˆvÝ”mÔ/Ð/Ø�QŠwˆwØ˜Q ™V‘_¨Ñ)�Ø×Ò˜QÑÔÐÐØˆ1‚u€u�Z€uÝŒmÔ'Ð'Ø�HŠH�YÑÔ€Eð
(ÝÔ! %Ñ(Ô(Ð(øÝŒN�IÐ&ð (ð (ð (ÝŒmÔ'Ð'ð(øøøs   ÌL' Ì'(Ms             ÿÿc                 ó6   — |                       t          ¦  «        S )zŒIs the specified address a mapped IPv4 address?

    *address*, a ``bytes`` is an IPv6 address in binary form.

    Returns a ``bool``.
    )r@   Ú_mapped_prefix)r   s    r.   Ú	is_mappedrR   Æ   s   € ð ×Ò�nÑ-Ô-Ð-r/   c                 ó:   — t          t          | ¦  «        ¦  «        S )a  Verify that *address* is a valid text form IPv6 address and return its
    canonical text form.  Addresses with scopes are rejected.

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

    Raises ``dns.exception.SyntaxError`` if the text is not valid.
    )r   rB   )r0   s    r.   ÚcanonicalizerT   Ñ   s   € õ •Y˜t‘_”_Ñ%Ô%Ð%r/   )F)Ú__doc__r   ÚreÚtypingr   Údns.exceptionr   Údns.ipv4Úcompiler   r:   Ústrr   rA   rC   rD   ÚboolrB   rQ   rR   rT   © r/   r.   ú<module>r^      sM  ðð$ Ð à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€à�”
Ð+Ñ,Ô,€ðB�uð B ð Bð Bð Bð BðJ ˆRŒZÐ6Ñ7Ô7€
Ø�R”Z Ñ)Ô)Ð Ø�2”:˜iÑ(Ô(Ð ðX(ð X(�C˜%‘Kð X(¨tð X(Àð X(ð X(ð X(ð X(ðv ,€ð.�uð . ð .ð .ð .ð .ð&�s˜U‘{ð & sð &ð &ð &ð &ð &ð &r/   