Ë
    ¶�/jS  ã                   óL   — d dl Z d dlZd dlmZmZmZ d dlZd dlZ G d„ d«      Z	y)é    N)ÚIteratorÚOptionalÚTuplec                   ó  — e Zd ZdZddedefd„Zdefd„Zdedefd„Zdd	edefd
„Z	defd„Z
defd„Zdefd„Zdefd„Zdefd„Zdedefd„Zdded   ddfd„Zdeddfd„Zej,                  dedefd„«       Zej,                  defd„«       Zy)ÚParserz)Helper class for parsing DNS wire format.ÚwireÚcurrentc                 óˆ   — || _         d| _        t        | j                   «      | _        |r| j	                  |«       || _        y)a  Initialize a Parser

        *wire*, a ``bytes`` contains the data to be parsed, and possibly other data.
        Typically it is the whole message or a slice of it.

        *current*, an `int`, the offset within *wire* where parsing should begin.
        r   N)r   r	   ÚlenÚendÚseekÚfurthest)Úselfr   r	   s      úJC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/wire.pyÚ__init__zParser.__init__   s7   € ð ˆŒ	ØˆŒÜ�t—y‘y“>ˆŒÙØ�I‰I�gÔØˆ�ó    Úreturnc                 ó4   — | j                   | j                  z
  S ©N)r   r	   ©r   s    r   Ú	remainingzParser.remaining   s   € Ø�x‰x˜$Ÿ,™,Ñ&Ð&r   Úsizec                 ó.  — |dk\  sJ ‚|| j                  «       kD  rt        j                  j                  ‚| j                  | j
                  | j
                  |z    }| xj
                  |z  c_        t        | j                  | j
                  «      | _        |S ©Nr   )r   ÚdnsÚ	exceptionÚ	FormErrorr   r	   Úmaxr   )r   r   Úoutputs      r   Ú	get_byteszParser.get_bytes    ss   € Ø�qŠyÐˆyØ�$—.‘.Ó"Ò"Ü—-‘-×)Ñ)Ð)Ø—‘˜4Ÿ<™<¨$¯,©,¸Ñ*=Ð>ˆØ�Š˜Ñ�Ü˜DŸM™M¨4¯<©<Ó8ˆŒØˆr   Úlength_sizec                 ón   — t         j                  | j                  |«      d«      }| j                  |«      S )NÚbig©ÚintÚ
from_bytesr    )r   r!   Úlengths      r   Úget_counted_byteszParser.get_counted_bytes)   s*   € Ü—‘ §¡¨{Ó ;¸UÓCˆØ�~‰~˜fÓ%Ð%r   c                 ó@   — | j                  | j                  «       «      S r   )r    r   r   s    r   Úget_remainingzParser.get_remaining-   s   € Ø�~‰~˜dŸn™nÓ.Ó/Ð/r   c                 óR   — t        j                  d| j                  d«      «      d   S )Nz!Bé   r   ©ÚstructÚunpackr    r   s    r   Ú	get_uint8zParser.get_uint80   ó!   € Ü�}‰}˜T 4§>¡>°!Ó#4Ó5°aÑ8Ð8r   c                 óR   — t        j                  d| j                  d«      «      d   S )Nz!Hé   r   r-   r   s    r   Ú
get_uint16zParser.get_uint163   r1   r   c                 óR   — t        j                  d| j                  d«      «      d   S )Nz!Ié   r   r-   r   s    r   Ú
get_uint32zParser.get_uint326   r1   r   c                 óL   — t         j                  | j                  d«      d«      S )Né   r#   r$   r   s    r   Ú
get_uint48zParser.get_uint489   s   € Ü�~‰~˜dŸn™n¨QÓ/°Ó7Ð7r   Úformatc                 ór   — t        j                  || j                  t        j                  |«      «      «      S r   )r.   r/   r    Úcalcsize)r   r;   s     r   Ú
get_structzParser.get_struct<   s%   € Ü�}‰}˜V T§^¡^´F·O±OÀFÓ4KÓ%LÓMÐMr   NÚoriginzdns.name.Namec                 ój   — t         j                  j                  | «      }|r|j                  |«      }|S r   )r   ÚnameÚfrom_wire_parserÚ
relativize)r   r?   rA   s      r   Úget_namezParser.get_name?   s,   € Ü�x‰x×(Ñ(¨Ó.ˆÙØ—?‘? 6Ó*ˆDØˆr   Úwherec                 ón   — |dk  s|| j                   kD  rt        j                  j                  ‚|| _        y r   )r   r   r   r   r	   )r   rE   s     r   r   zParser.seekE   s-   € ð �1Š9˜ §¡Ò(Ü—-‘-×)Ñ)Ð)Øˆ�r   c              #   óL  K  — |dk\  sJ ‚|| j                  «       kD  rt        j                  j                  ‚| j                  }	 | j
                  |z   | _        d –— | j
                  | j                  k7  rt        j                  j                  ‚	 || _        y # || _        w xY w­wr   )r   r   r   r   r   r	   )r   r   Ú	saved_ends      r   Úrestrict_tozParser.restrict_toL   s‰   è ø€ à�qŠyÐˆyØ�$—.‘.Ó"Ò"Ü—-‘-×)Ñ)Ð)Ø—H‘Hˆ	ð		!Ø—|‘| dÑ*ˆDŒHÛð �|‰|˜tŸx™xÒ'Ü—m‘m×-Ñ-Ð-ð (ð !ˆD�Hø�yˆD�Hüs   ‚AB$ÁAB ÂB$Â	B!Â!B$c              #   ód   K  — 	 d –— | j                   | _        y # | j                   | _        w xY w­wr   )r   r	   r   s    r   Úrestore_furthestzParser.restore_furthest]   s&   è ø€ ð	)ØŠJàŸ=™=ˆD�Lø˜4Ÿ=™=ˆD�Lüs   ‚0„ ˆ0š-­0)r   )r,   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úbytesr%   r   r   r    r(   r*   r0   r4   r7   r:   Ústrr   r>   r   rD   r   Ú
contextlibÚcontextmanagerr   rI   rK   © r   r   r   r      s  „ Ù3ñ ˜Uð  ¨Só  ð'˜3ó 'ð˜cð  eó ñ&¨Sð &¸ó &ð0˜uó 0ð9˜3ó 9ð9˜Có 9ð9˜Có 9ð8˜Có 8ðN ð N¨ó Nñ˜x¨Ñ8ð ÀOó ð˜#ð  $ó ð ×Ñð! ð !¨ò !ó ð!ð  ×Ñð) (ò )ó ñ)r   r   )
rR   r.   Útypingr   r   r   Údns.exceptionr   Údns.namer   rT   r   r   Ú<module>rX      s%   ðó Û ß ,Ñ ,ã Û ÷W)ò W)r   