
    Eqg                     T    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	dS )    N)IteratorOptionalTuplec                      e 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dS )Parserr   wirecurrentc                     || _         d| _        t          | j                   | _        |r|                     |           || _        d S Nr   )r   r	   lenendseekfurthest)selfr   r	   s      :/var/www/html/env/lib/python3.11/site-packages/dns/wire.py__init__zParser.__init__   sD    	ty>> 	IIg    returnc                      | j         | j        z
  S N)r   r	   r   s    r   	remainingzParser.remaining   s    x$,&&r   sizec                     |dk    sJ ||                                  k    rt          j        j        | j        | j        | j        |z            }| xj        |z  c_        t          | j        | j                  | _        |S r   )r   dns	exception	FormErrorr   r	   maxr   )r   r   outputs      r   	get_byteszParser.get_bytes   ss    qyyyy$..""""-))4<$,*==>DM4<88r      length_sizec                     t                               |                     |          d          }|                     |          S )Nbigint
from_bytesr    )r   r"   lengths      r   get_counted_byteszParser.get_counted_bytes    s3    { ; ;UCC~~f%%%r   c                 P    |                      |                                           S r   )r    r   r   s    r   get_remainingzParser.get_remaining$   s    ~~dnn..///r   c                 ^    t          j        d|                     d                    d         S )Nz!Br!   r   structunpackr    r   s    r   	get_uint8zParser.get_uint8'   %    }T4>>!#4#455a88r   c                 ^    t          j        d|                     d                    d         S )Nz!H   r   r-   r   s    r   
get_uint16zParser.get_uint16*   r1   r   c                 ^    t          j        d|                     d                    d         S )Nz!I   r   r-   r   s    r   
get_uint32zParser.get_uint32-   r1   r   c                 ^    t                               |                     d          d          S )N   r$   r%   r   s    r   
get_uint48zParser.get_uint480   s"    ~~dnnQ//777r   formatc                 v    t          j        ||                     t          j        |                              S r   )r.   r/   r    calcsize)r   r;   s     r   
get_structzParser.get_struct3   s*    }VT^^FOF4K4K%L%LMMMr   Noriginzdns.name.Namec                 r    t           j                            |           }|r|                    |          }|S r   )r   namefrom_wire_parser
relativize)r   r?   rA   s      r   get_namezParser.get_name6   s5    x((.. 	+??6**Dr   wherec                 X    |dk     s|| j         k    rt          j        j        || _        d S r   )r   r   r   r   r	   )r   rE   s     r   r   zParser.seek<   s/     199((-))r   c              #     K   |dk    sJ ||                                  k    rt          j        j        | j        }	 | j        |z   | _        d V  | j        | j        k    rt          j        j        	 || _        d S # || _        w xY wr   )r   r   r   r   r   r	   )r   r   	saved_ends      r   restrict_tozParser.restrict_toC   s      qyyyy$..""""-))H			!|d*DHEEE |tx''m-- ( !DHHHyDH    s   4A: :	Bc              #   N   K   	 d V  | j         | _        d S # | j         | _        w xY wr   )r   r	   r   s    r   restore_furthestzParser.restore_furthestT   s6      	)JJJ=DLLL4=DL((((s    $)r   )r!   r   )__name__
__module____qualname__bytesr&   r   r   r    r)   r+   r0   r4   r7   r:   strr   r>   r   rD   r   
contextlibcontextmanagerr   rI   rK    r   r   r   r      s          U  S        '3 ' ' ' 'c e    & &S & & & & &0u 0 0 0 093 9 9 9 99C 9 9 9 99C 9 9 9 98C 8 8 8 8N N N N N N x8 O    # $     ! ! ! ! ! !  )( ) ) ) ) ) )r   r   )
rQ   r.   typingr   r   r   dns.exceptionr   dns.namer   rS   r   r   <module>rW      s         , , , , , , , , , ,     N) N) N) N) N) N) N) N) N) N)r   