§
    HºiD  ã            
       ó  — U d Z ddlZddlZddlZddlZddlmZmZ ddlZ	ddl
Z	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	 G d„ de	j        j        ¦  «        Z G d„ d¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de	j        j        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zej        eej        eej        eej        eej        eiZ eeef         e!d<   dedefd„Z"dee#z  dddefd„Z$dee#z  de%de&de&def
d „Z'd!ededdfd"„Z(ej        Zej)        Z)ej*        Z*ej+        Z+ej        Zej,        Z,ej        Zej-        Z-ej.        Z.ej/        Z/ej        Zej        ZdS )#zEDNS Optionsé    N)ÚAnyÚDictc                   óX   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZed„ ¦   «         ZdS )Ú
OptionTypezEDNS option type codesé   é   é   é   é   é	   é
   é   é   é   é   é   c                 ó   — dS ©Niÿÿ  © ©Úclss    úM/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/edns.pyÚ_maximumzOptionType._maximum?   ó   € àˆuó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚNSIDÚDAUÚDHUÚN3UÚECSÚEXPIREÚCOOKIEÚ	KEEPALIVEÚPADDINGÚCHAINÚEDEÚREPORTCHANNELÚclassmethodr   r   r   r   r   r   #   sq   € € € € € Ø Ð ð €Dà
€Cà
€Cà
€Cà
€Cà€Fà€Fà€Ià€Gà€Eà
€Cà€Màðð ñ „[ðð ð r   r   c                   óª   — e Zd ZdZdeez  fd„Zddedz  dedz  fd„Z	defd„Z
dd
„Zededddd fd„¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚOptionz%Base class for all EDNS option types.Úotypec                 óD   — t                                |¦  «        | _        dS )z_Initialize an option.

        *otype*, a ``dns.edns.OptionType``, is the option type.
        N)r   Úmaker/   )Úselfr/   s     r   Ú__init__zOption.__init__G   s   € õ
  —_’_ UÑ+Ô+ˆŒ
ˆ
ˆ
r   NÚfileÚreturnc                 ó   — t           ‚)zUConvert an option to wire format.

        Returns a ``bytes`` or ``None``.

        ©ÚNotImplementedError©r2   r4   s     r   Úto_wirezOption.to_wireN   s
   € õ "Ð!r   c                 ó   — t           ‚©Nr7   ©r2   s    r   Úto_textzOption.to_textV   s   € Ý!Ð!r   ÚGenericOptionc                 ó\   — |                       ¦   «         }|€J ‚t          | j        |¦  «        S )zrCreates a dns.edns.GenericOption equivalent of this rdata.

        Returns a ``dns.edns.GenericOption``.
        )r:   r?   r/   )r2   Úwires     r   Ú
to_genericzOption.to_genericY   s/   € ð
 �|Š|‰~Œ~ˆØÐÐÐÝ˜TœZ¨Ñ.Ô.Ð.r   Úparserúdns.wire.Parserc                 ó   — t           ‚)a  Build an EDNS option object from wire format.

        *otype*, a ``dns.edns.OptionType``, is the option type.

        *parser*, a ``dns.wire.Parser``, the parser, which should be
        restructed to the option length.

        Returns a ``dns.edns.Option``.
        r7   ©r   r/   rC   s      r   Úfrom_wire_parserzOption.from_wire_parserb   s
   € õ "Ð!r   c                 óv   — |                       ¦   «         }|                      ¦   «         }||k    rdS ||k    rdS dS )z�Compare an EDNS option with another option of the same type.

        Returns < 0 if < *other*, 0 if == *other*, and > 0 if > *other*.
        r   é   éÿÿÿÿ)r:   )r2   ÚotherrA   Úowires       r   Ú_cmpzOption._cmpo   s?   € ð
 �|Š|‰~Œ~ˆØ—’‘”ˆØ�5Š=ˆ=Ø�1Ø�%Š<ˆ<Ø�1Øˆrr   c                 ó†   — t          |t          ¦  «        sdS | j        |j        k    rdS |                      |¦  «        dk    S )NFr   ©Ú
isinstancer.   r/   rM   ©r2   rK   s     r   Ú__eq__zOption.__eq__|   sD   € Ý˜%¥Ñ(Ô(ð 	Ø�5ØŒ:˜œÒ$Ð$Ø�5Ø�yŠy˜ÑÔ 1Ò$Ð$r   c                 ó†   — t          |t          ¦  «        sdS | j        |j        k    rdS |                      |¦  «        dk    S )NTr   rO   rQ   s     r   Ú__ne__zOption.__ne__ƒ   sD   € Ý˜%¥Ñ(Ô(ð 	Ø�4ØŒ:˜œÒ$Ð$Ø�4Ø�yŠy˜ÑÔ 1Ò$Ð$r   c                 óŒ   — t          |t          ¦  «        r| j        |j        k    rt          S |                      |¦  «        dk     S ©Nr   ©rP   r.   r/   ÚNotImplementedrM   rQ   s     r   Ú__lt__zOption.__lt__Š   ó?   € Ý˜%¥Ñ(Ô(ð 	"¨D¬J¸%¼+Ò,EÐ,EÝ!Ð!Ø�yŠy˜ÑÔ !Ò#Ð#r   c                 óŒ   — t          |t          ¦  «        r| j        |j        k    rt          S |                      |¦  «        dk    S rV   rW   rQ   s     r   Ú__le__zOption.__le__�   ó?   € Ý˜%¥Ñ(Ô(ð 	"¨D¬J¸%¼+Ò,EÐ,EÝ!Ð!Ø�yŠy˜ÑÔ 1Ò$Ð$r   c                 óŒ   — t          |t          ¦  «        r| j        |j        k    rt          S |                      |¦  «        dk    S rV   rW   rQ   s     r   Ú__ge__zOption.__ge__”   r]   r   c                 óŒ   — t          |t          ¦  «        r| j        |j        k    rt          S |                      |¦  «        dk    S rV   rW   rQ   s     r   Ú__gt__zOption.__gt__™   rZ   r   c                 ó*   — |                       ¦   «         S r<   )r>   r=   s    r   Ú__str__zOption.__str__ž   s   € Ø�|Š|‰~Œ~Ðr   r<   ©r5   r?   )r   r   r   r   r   Ústrr3   r   Úbytesr:   r>   rB   r,   rG   rM   rR   rT   rY   r\   r_   ra   rc   r   r   r   r.   r.   D   sF  € € € € € Ø/Ð/ð,˜j¨3Ñ.ð ,ð ,ð ,ð ,ð"ð "˜C $™Jð "°%¸$±,ð "ð "ð "ð "ð"˜ð "ð "ð "ð "ð/ð /ð /ð /ð ð
" Zð 
"Ð9Jð 
"Èxð 
"ð 
"ð 
"ñ „[ð
"ðð ð ð%ð %ð %ð%ð %ð %ð$ð $ð $ð
%ð %ð %ð
%ð %ð %ð
$ð $ð $ð
ð ð ð ð r   r.   c                   ó”   ‡ — e Zd ZdZdeez  deez  fˆ fd„Zddedz  dedz  fd„Z	defd	„Z
dd
„Zedeez  dddefd„¦   «         Zˆ xZS )r?   zwGeneric Option Class

    This class is used for EDNS option types for which we have no better
    implementation.
    r/   Údatac                 óž   •— t          ¦   «                              |¦  «         t          j        j                             |d¦  «        | _        d S )NT)Úsuperr3   ÚdnsÚrdataÚRdataÚ	_as_bytesrh   )r2   r/   rh   Ú	__class__s      €r   r3   zGenericOption.__init__©   s:   ø€ Ý‰Œ×Ò˜ÑÔÐÝ”I”O×-Ò-¨d°DÑ9Ô9ˆŒ	ˆ	ˆ	r   Nr4   r5   c                 óL   — |r|                      | j        ¦  «         d S | j        S r<   )Úwriterh   r9   s     r   r:   zGenericOption.to_wire­   ó+   € Øð 	Ø�JŠJ�t”yÑ!Ô!Ð!Ø�4à”9Ðr   c                 ó   — d| j         › �S )NzGeneric )r/   r=   s    r   r>   zGenericOption.to_text´   s   € Ø&˜$œ*Ð&Ð&Ð&r   c                 ó   — | S r<   r   r=   s    r   rB   zGenericOption.to_generic·   s   € Øˆr   rC   rD   c                 ó>   —  | ||                      ¦   «         ¦  «        S r<   ©Úget_remainingrF   s      r   rG   zGenericOption.from_wire_parserº   s"   € ð ˆs�5˜&×.Ò.Ñ0Ô0Ñ1Ô1Ð1r   r<   rd   )r   r   r   r   r   re   rf   r3   r   r:   r>   rB   r,   r.   rG   Ú__classcell__©ro   s   @r   r?   r?   ¢   sù   ø€ € € € € ðð ð:˜j¨3Ñ.ð :°e¸c±kð :ð :ð :ð :ð :ð :ðð ˜C $™Jð °%¸$±,ð ð ð ð ð'˜ð 'ð 'ð 'ð 'ðð ð ð ð ð2Ø Ñ$ð2Ø.?ð2à	ð2ð 2ð 2ñ „[ð2ð 2ð 2ð 2ð 2r   r?   c                   ó¬   ‡ — e Zd ZdZddededz  defˆ fd„Zdefd	„Zed
ede	fd„¦   «         Z
ddedz  dedz  fd„Zedeez  ddde	fd„¦   «         Zˆ xZS )Ú	ECSOptionz!EDNS Client Subnet (ECS, RFC7871)Nr   ÚaddressÚsrclenÚscopelenc                 óz  •— t          ¦   «                              t          j        ¦  «         t          j                             |¦  «        }|t          j        k    r|d| _	        |€d}t          j
        j                             |¦  «        }t          j
        j                             |dd¦  «        }t          j
        j                             |dd¦  «        }n›|t          j        k    r|d| _	        |€d}t          j
        j                             |¦  «        }t          j
        j                             |dd¦  «        }t          j
        j                             |dd¦  «        }nt!          d	¦  «        ‚|€J ‚|| _        || _        || _        t          j                             ||¦  «        }t+          t-          j        |d
z  ¦  «        ¦  «        }|d|…         | _        |dz  }|dk    rQt3          j        dt7          | j        dd…         ¦  «        dd|z
  z  z  ¦  «        }| j        dd…         |z   | _        dS dS )aŠ  *address*, a ``str``, is the client address information.

        *srclen*, an ``int``, the source prefix length, which is the
        leftmost number of bits of the address to be used for the
        lookup.  The default is 24 for IPv4 and 56 for IPv6.

        *scopelen*, an ``int``, the scope prefix length.  This value
        must be 0 in queries, and should be set in responses.
        é   Né8   r   é€   rI   é   é    zBad address familyç       @r   ÚBrJ   éÿ   )rj   r3   r   r$   rk   ÚinetÚaf_for_addressÚsocketÚAF_INET6Úfamilyrl   rm   Ú_as_ipv6_addressÚ_as_intÚAF_INETÚ_as_ipv4_addressÚ
ValueErrorr|   r}   r~   Ú	inet_ptonÚintÚmathÚceilÚaddrdataÚstructÚpackÚord)
r2   r|   r}   r~   Úafr–   ÚnbytesÚnbitsÚlastro   s
            €r   r3   zECSOption.__init__Ä   sè  ø€ õ 	‰Œ×Ò�œÑ(Ô(Ð(ÝŒX×$Ò$ WÑ-Ô-ˆà•”Ò Ð ØˆDŒKØˆ~Ø�Ý”i”o×6Ò6°wÑ?Ô?ˆGÝ”Y”_×,Ò,¨V°Q¸Ñ<Ô<ˆFÝ”y”×.Ò.¨x¸¸CÑ@Ô@ˆHˆHØ•6”>Ò!Ð!ØˆDŒKØˆ~Ø�Ý”i”o×6Ò6°wÑ?Ô?ˆGÝ”Y”_×,Ò,¨V°Q¸Ñ;Ô;ˆFÝ”y”×.Ò.¨x¸¸BÑ?Ô?ˆHˆHåÐ1Ñ2Ô2Ð2àÐ!Ð!Ð!ØˆŒØˆŒØ ˆŒå”8×%Ò% b¨'Ñ2Ô2ˆÝ•T”Y˜v¨™|Ñ,Ô,Ñ-Ô-ˆð !  & Ô)ˆŒØ˜‘
ˆØ�AŠ:ˆ:Ý”;˜s¥C¨¬°b°c°cÔ(:Ñ$;Ô$;¸tÈÈEÉ	Ñ?RÑ$SÑTÔTˆDØ œM¨#¨2¨#Ô.°Ñ5ˆDŒMˆMˆMð ˆ:r   r5   c                 ó6   — d| j         › d| j        › d| j        › �S )NzECS ú/z scope/)r|   r}   r~   r=   s    r   r>   zECSOption.to_textó   s&   € ØH�d”lÐHÐH T¤[ÐHÐH¸¼ÐHÐHÐHr   Útextc                 óÎ  — d}|                       ¦   «         }d}t          |¦  «        dk    r	|d         }nNt          |¦  «        dk    r(|d         |k    rt          d| › d�¦  «        ‚|d         }nt          d| › d�¦  «        ‚|                     d¦  «        }|dk    r|                      d¦  «        \  }}d	}n3|dk    r|                      d¦  «        \  }}}nt          d| › d�¦  «        ‚	 t	          |¦  «        }n$# t          $ r t          d
d|› d�z   ¦  «        ‚w xY w	 t	          |¦  «        }	n$# t          $ r t          dd|› d�z   ¦  «        ‚w xY wt          ||	|¦  «        S )a€  Convert a string into a `dns.edns.ECSOption`

        *text*, a `str`, the text form of the option.

        Returns a `dns.edns.ECSOption`.

        Examples:

        >>> import dns.edns
        >>>
        >>> # basic example
        >>> dns.edns.ECSOption.from_text('1.2.3.4/24')
        >>>
        >>> # also understands scope
        >>> dns.edns.ECSOption.from_text('1.2.3.4/24/32')
        >>>
        >>> # IPv6
        >>> dns.edns.ECSOption.from_text('2001:4b98::1/64/64')
        >>>
        >>> # it understands results from `dns.edns.ECSOption.to_text()`
        >>> dns.edns.ECSOption.from_text('ECS 1.2.3.4/24/32')
        r$   NrI   r   r€   zcould not parse ECS from "ú"rŸ   Ú0zinvalid scope z": scope must be an integerzinvalid srclen z": srclen must be an integer)ÚsplitÚlenr‘   Úcountr“   r{   )
r    Úoptional_prefixÚtokensÚecs_textÚ	n_slashesr|   ÚtsrclenÚtscopeÚscoper}   s
             r   Ú	from_textzECSOption.from_textö   sÃ  € ð0  ˆØ—’‘”ˆØˆÝˆv‰;Œ;˜!ÒÐØ˜a”yˆHˆHÝ�‰[Œ[˜AÒÐØ�aŒy˜OÒ+Ð+Ý Ð!E¸dÐ!EÐ!EÐ!EÑFÔFÐFØ˜a”yˆHˆHåÐA¸$ÐAÐAÐAÑBÔBÐBØ—N’N 3Ñ'Ô'ˆ	Ø˜Š>ˆ>Ø'Ÿ~š~¨cÑ2Ô2ÑˆG�WØˆFˆFØ˜!Š^ˆ^Ø'/§~¢~°cÑ':Ô':Ñ$ˆG�W˜f˜fåÐA¸$ÐAÐAÐAÑBÔBÐBð	YÝ˜‘K”KˆEˆEøÝð 	Yð 	Yð 	YÝÐ-Ð0W°FÐ0WÐ0WÐ0WÑWÑXÔXÐXð	Yøøøð	Ý˜‘\”\ˆFˆFøÝð 	ð 	ð 	ÝØ!Ð$M¨Ð$MÐ$MÐ$MÑMñô ð ð	øøøõ ˜ &¨%Ñ0Ô0Ð0s   Ã-C= Ã=!DÄ"D2 Ä2!Er4   c                 ó”   — t          j        d| j        | j        | j        ¦  «        | j        z   }|r|                     |¦  «         d S |S )Nú!HBB)r—   r˜   rŒ   r}   r~   r–   rq   ©r2   r4   Úvalues      r   r:   zECSOption.to_wire-  sM   € åŒK˜ ¤¨T¬[¸$¼-ÑHÔHÈ4Ì=ÑXð 	ð ð 	Ø�JŠJ�uÑÔÐØ�4àˆLr   r/   rC   rD   c                 ó¢  — |                      d¦  «        \  }}}t          t          j        |dz  ¦  «        ¦  «        }|                     |¦  «        }|dk    r+d|z
  }t
          j                             |d|z  z   ¦  «        }	n@|dk    r+d|z
  }t
          j                             |d|z  z   ¦  «        }	nt          d¦  «        ‚ | |	||¦  «        S )	Nr°   r…   rI   é   ó    r€   é   zunsupported family)
Ú
get_structr“   r”   r•   Ú	get_bytesrk   Úipv4Ú	inet_ntoaÚipv6r‘   )
r   r/   rC   rŒ   Úsrcr­   ÚaddrlenÚprefixÚpadÚaddrs
             r   rG   zECSOption.from_wire_parser7  sÓ   € ð $×.Ò.¨vÑ6Ô6Ñˆ��UÝ•d”i  c¡	Ñ*Ô*Ñ+Ô+ˆØ×!Ò! 'Ñ*Ô*ˆØ�QŠ;ˆ;Ø�g‘+ˆCÝ”8×%Ò% f¨w¸©}Ñ&<Ñ=Ô=ˆDˆDØ�qŠ[ˆ[Ø�w‘,ˆCÝ”8×%Ò% f¨w¸©}Ñ&<Ñ=Ô=ˆDˆDåÐ1Ñ2Ô2Ð2àˆs�4˜˜eÑ$Ô$Ð$r   rV   r<   )r   r   r   r   re   r“   r3   r>   Ústaticmethodr.   r®   r   rf   r:   r,   r   rG   rx   ry   s   @r   r{   r{   Á   s  ø€ € € € € Ø+Ð+ð-6ð -6 ð -6¨S°4©Zð -6È#ð -6ð -6ð -6ð -6ð -6ð -6ð^I˜ð Ið Ið Ið Ið ð41˜ð 41 ð 41ð 41ð 41ñ „\ð41ðlð ˜C $™Jð °%¸$±,ð ð ð ð ð ð%Ø Ñ$ð%Ø.?ð%à	ð%ð %ð %ñ „[ð%ð %ð %ð %ð %r   r{   c                   óŒ   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZed„ ¦   «         ZdS )ÚEDECodezExtended DNS Error (EDE) codesr   rI   r€   r   r´   r   r	   r
   r   r   r   r   r   r   é   r   r¶   é   r   é   é   é   é   é   rƒ   c                 ó   — dS r   r   r   s    r   r   zEDECode._maximumg  r   r   N)r   r   r   r   ÚOTHERÚUNSUPPORTED_DNSKEY_ALGORITHMÚUNSUPPORTED_DS_DIGEST_TYPEÚSTALE_ANSWERÚFORGED_ANSWERÚDNSSEC_INDETERMINATEÚDNSSEC_BOGUSÚSIGNATURE_EXPIREDÚSIGNATURE_NOT_YET_VALIDÚDNSKEY_MISSINGÚRRSIGS_MISSINGÚNO_ZONE_KEY_BIT_SETÚNSEC_MISSINGÚCACHED_ERRORÚ	NOT_READYÚBLOCKEDÚCENSOREDÚFILTEREDÚ
PROHIBITEDÚSTALE_NXDOMAIN_ANSWERÚNOT_AUTHORITATIVEÚNOT_SUPPORTEDÚNO_REACHABLE_AUTHORITYÚNETWORK_ERRORÚINVALID_DATAr,   r   r   r   r   rÃ   rÃ   J  s¹   € € € € € Ø(Ð(à€EØ#$Ð Ø!"ÐØ€LØ€MØÐØ€LØÐØÐØ€NØ€NØÐØ€LØ€LØ€IØ€GØ€HØ€HØ€JØÐØÐØ€MØÐØ€MØ€Làðð ñ „[ðð ð r   rÃ   c                   ó–   ‡ — e Zd ZdZh d£Zddeez  dedz  fˆ fd„Zdefd„Zdd	e	dz  de
dz  fd
„Zedeez  dddefd„¦   «         Zˆ xZS )Ú	EDEOptionz!Extended DNS Error (EDE, RFC8914)>   ÚDSÚNSECÚDNSKEYÚDNSSECÚRRSIGsÚNXDOMAINNÚcoder    c                 óö   •— t          ¦   «                              t          j        ¦  «         t                               |¦  «        | _        |�$t          |t          ¦  «        st          d¦  «        ‚|| _
        dS )zÃ*code*, a ``dns.edns.EDECode`` or ``str``, the info code of the
        extended error.

        *text*, a ``str`` or ``None``, specifying additional information about
        the error.
        Nztext must be string or None)rj   r3   r   r*   rÃ   r1   rí   rP   re   r‘   r    )r2   rí   r    ro   s      €r   r3   zEDEOption.__init__q  sa   ø€ õ 	‰Œ×Ò�œÑ(Ô(Ð(å—L’L Ñ&Ô&ˆŒ	ØÐ¥J¨tµSÑ$9Ô$9ÐÝÐ:Ñ;Ô;Ð;ØˆŒ	ˆ	ˆ	r   r5   c                 ó  ‡ — d‰ j         › �}‰ j         t          v r\t                               ‰ j         ¦  «        }d                     ˆ fd„|                     d¦  «        D ¦   «         ¦  «        }|d|› d�z  }‰ j        �|d‰ j        › �z  }|S )NzEDE ú c              3   óV   •K  — | ]#}|‰j         v r|n|                     ¦   «         V — Œ$d S r<   )Ú_preserve_caseÚtitle)Ú.0Úwordr2   s     €r   ú	<genexpr>z$EDEOption.to_text.<locals>.<genexpr>„  sP   øè è € ð ð àð  Ô 3Ð3Ð3��¸¿º¹¼ðð ð ð ð ð r   Ú_z (ú)z: )rí   rÃ   r>   Újoinr¤   r    )r2   ÚoutputÚdescs   `  r   r>   zEDEOption.to_text€  s«   ø€ Ø#˜œ	Ð#Ð#ˆØŒ9�ÐÐÝ—?’? 4¤9Ñ-Ô-ˆDØ—8’8ð ð ð ð à ŸJšJ s™OœOðñ ô ñ ô ˆDð �l˜4�l�l�lÑ"ˆFØŒ9Ð ØÐ&˜4œ9Ð&Ð&Ñ&ˆFØˆr   r4   c                 ó´   — t          j        d| j        ¦  «        }| j        �|| j                             d¦  «        z  }|r|                     |¦  «         d S |S )Nz!HÚutf8)r—   r˜   rí   r    Úencoderq   r±   s      r   r:   zEDEOption.to_wire�  s[   € Ý”˜D $¤)Ñ,Ô,ˆØŒ9Ð Ø�T”Y×%Ò% fÑ-Ô-Ñ-ˆEàð 	Ø�JŠJ�uÑÔÐØ�4àˆLr   r/   rC   rD   c                 óú   — t                                |                     ¦   «         ¦  «        }|                     ¦   «         }|r,|d         dk    r
|d d…         }|                     d¦  «        }nd } | ||¦  «        S )NrJ   r   rý   )rÃ   r1   Ú
get_uint16rw   Údecode)r   r/   rC   rí   r    Úbtexts         r   rG   zEDEOption.from_wire_parser˜  s~   € õ �|Š|˜F×-Ò-Ñ/Ô/Ñ0Ô0ˆØ×#Ò#Ñ%Ô%ˆàð 	Ø�BŒx˜1Š}ˆ}Ø˜C˜R˜C”y�Ø—K’K Ñ'Ô'ˆEˆEàˆEàˆs�4˜ÑÔÐr   r<   )r   r   r   r   rò   rÃ   re   r3   r>   r   rf   r:   r,   r   r.   rG   rx   ry   s   @r   ræ   ræ   l  sð   ø€ € € € € Ø+Ð+àMÐMÐM€Nðð ˜W s™]ð °#¸±*ð ð ð ð ð ð ð˜ð ð ð ð ð	ð 	˜C $™Jð 	°%¸$±,ð 	ð 	ð 	ð 	ð ð Ø Ñ$ð Ø.?ð à	ð ð  ð  ñ „[ð ð  ð  ð  ð  r   ræ   c                   ó†   ‡ — e Zd Zdefˆ fd„Zddededz  fd„Zdefd„Ze	de
ez  d	ej        j        defd
„¦   «         Zˆ xZS )Ú
NSIDOptionÚnsidc                 ól   •— t          ¦   «                              t          j        ¦  «         || _        d S r<   )rj   r3   r   r    r  )r2   r  ro   s     €r   r3   zNSIDOption.__init__ª  s(   ø€ Ý‰Œ×Ò�œÑ)Ô)Ð)ØˆŒ	ˆ	ˆ	r   Nr4   r5   c                 óL   — |r|                      | j        ¦  «         d S | j        S r<   )rq   r  r9   s     r   r:   zNSIDOption.to_wire®  rr   r   c                 óÒ   — t          d„ | j        D ¦   «         ¦  «        r| j                             ¦   «         }n+t          j        | j        ¦  «                             ¦   «         }d|› �S )Nc              3   ó.   K  — | ]}|d k    o|dk    V — ŒdS )r„   é~   Nr   )rô   Úcs     r   rö   z%NSIDOption.to_text.<locals>.<genexpr>¶  s/   è è € Ð:Ð:¨1ˆq�DŠyÐ&˜Q $šYÐ:Ð:Ð:Ð:Ð:Ð:r   zNSID )Úallr  r  ÚbinasciiÚhexlify)r2   r²   s     r   r>   zNSIDOption.to_textµ  sb   € ÝÐ:Ð:°´	Ð:Ñ:Ô:Ñ:Ô:ð 	9à”I×$Ò$Ñ&Ô&ˆEˆEåÔ$ T¤YÑ/Ô/×6Ò6Ñ8Ô8ˆEØ�uˆˆÐr   r/   rC   c                 ó<   —  | |                      ¦   «         ¦  «        S r<   rv   rF   s      r   rG   zNSIDOption.from_wire_parser½  s    € ð ˆs�6×'Ò'Ñ)Ô)Ñ*Ô*Ð*r   r<   ©r   r   r   rf   r3   r   r:   re   r>   r,   r   rk   rA   ÚParserr.   rG   rx   ry   s   @r   r  r  ©  sË   ø€ € € € € ð˜Uð ð ð ð ð ð ðð ˜Cð ¨5°4©<ð ð ð ð ð˜ð ð ð ð ð ð+Ø Ñ$ð+Ø.1¬h¬oð+à	ð+ð +ð +ñ „[ð+ð +ð +ð +ð +r   r  c                   óŠ   ‡ — e Zd Zdedefˆ fd„Zddededz  fd„Zdefd„Ze	d	e
ez  d
ej        j        defd„¦   «         Zˆ xZS )ÚCookieOptionÚclientÚserverc                 óR  •— t          ¦   «                              t          j        ¦  «         || _        || _        t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r5t          |¦  «        dk     st          |¦  «        dk    rt          d¦  «        ‚d S d S )Nr   zclient cookie must be 8 bytesr   r„   z5server cookie must be empty or between 8 and 32 bytes)rj   r3   r   r&   r  r  r¥   r‘   )r2   r  r  ro   s      €r   r3   zCookieOption.__init__Å  s˜   ø€ Ý‰Œ×Ò�Ô*Ñ+Ô+Ð+ØˆŒØˆŒÝˆv‰;Œ;˜!ÒÐÝÐ<Ñ=Ô=Ð=Ýˆv‰;Œ;˜!ÒÐ¥ V¡¤¨q¢ µC¸±K´KÀ"Ò4DÐ4DÝÐTÑUÔUÐUð ÐÐ4DÐ4Dr   Nr4   r5   c                 óÀ   — |rN|                      | j        ¦  «         t          | j        ¦  «        dk    r|                      | j        ¦  «         d S | j        | j        z   S rV   )rq   r  r¥   r  r9   s     r   r:   zCookieOption.to_wireÎ  s[   € Øð 	-Ø�JŠJ�t”{Ñ#Ô#Ð#Ý�4”;ÑÔ !Ò#Ð#Ø—
’
˜4œ;Ñ'Ô'Ð'Ø�4à”; ¤Ñ,Ð,r   c                 óò   — t          j        | j        ¦  «                             ¦   «         }t	          | j        ¦  «        dk    r,t          j        | j        ¦  «                             ¦   «         }nd}d|› |› �S )Nr   Ú zCOOKIE )r  r  r  r  r¥   r  )r2   r  r  s      r   r>   zCookieOption.to_text×  sm   € ÝÔ! $¤+Ñ.Ô.×5Ò5Ñ7Ô7ˆÝˆtŒ{ÑÔ˜aÒÐÝÔ% d¤kÑ2Ô2×9Ò9Ñ;Ô;ˆFˆFàˆFØ)˜Ð) Ð)Ð)Ð)r   r/   rC   c                 ód   —  | |                      d¦  «        |                     ¦   «         ¦  «        S )Nr   )r¸   rw   rF   s      r   rG   zCookieOption.from_wire_parserß  s0   € ð ˆs�6×#Ò# AÑ&Ô&¨×(<Ò(<Ñ(>Ô(>Ñ?Ô?Ð?r   r<   r  ry   s   @r   r  r  Ä  så   ø€ € € € € ðV˜uð V¨eð Vð Vð Vð Vð Vð Vð-ð -˜Cð -¨5°4©<ð -ð -ð -ð -ð*˜ð *ð *ð *ð *ð ð@Ø Ñ$ð@Ø.1¬h¬oð@à	ð@ð @ð @ñ „[ð@ð @ð @ð @ð @r   r  c                   óš   ‡ — e Zd Zdej        j        fˆ fd„Zddededz  fd„Z	de
fd„Zedee
z  d	ej        j        defd
„¦   «         Zˆ xZS )ÚReportChannelOptionÚagent_domainc                 ól   •— t          ¦   «                              t          j        ¦  «         || _        d S r<   )rj   r3   r   r+   r  )r2   r  ro   s     €r   r3   zReportChannelOption.__init__è  s,   ø€ Ý‰Œ×Ò�Ô1Ñ2Ô2Ð2Ø(ˆÔÐÐr   Nr4   r5   c                 ó6   — | j                              |¦  «        S r<   )r  r:   r9   s     r   r:   zReportChannelOption.to_wireì  s   € ØÔ ×(Ò(¨Ñ.Ô.Ð.r   c                 ó:   — d| j                              ¦   «         z   S )NzREPORTCHANNEL )r  r>   r=   s    r   r>   zReportChannelOption.to_textï  s   € Ø $Ô"3×";Ò";Ñ"=Ô"=Ñ=Ð=r   r/   rC   c                 ó<   —  | |                      ¦   «         ¦  «        S r<   )Úget_namerF   s      r   rG   z$ReportChannelOption.from_wire_parserò  s   € ð ˆs�6—?’?Ñ$Ô$Ñ%Ô%Ð%r   r<   )r   r   r   rk   ÚnameÚNamer3   r   rf   r:   re   r>   r,   r   rA   r  r.   rG   rx   ry   s   @r   r  r  æ  sÏ   ø€ € € € € ð) S¤X¤]ð )ð )ð )ð )ð )ð )ð/ð /˜Cð /¨5°4©<ð /ð /ð /ð /ð>˜ð >ð >ð >ð >ð ð&Ø Ñ$ð&Ø.1¬h¬oð&à	ð&ð &ð &ñ „[ð&ð &ð &ð &ð &r   r  Ú_type_to_classr/   r5   c                 óL   — t                                | ¦  «        }|€t          }|S )z„Return the class for the specified option type.

    The GenericOption class is used if a more specific class is not
    known.
    )r%  Úgetr?   )r/   r   s     r   Úget_option_classr(    s&   € õ ×
Ò
˜UÑ
#Ô
#€CØ
€{ÝˆØ€Jr   rC   rD   c                 ó€   — t                                | ¦  «        } t          | ¦  «        }|                     | |¦  «        S )a  Build an EDNS option object from wire format.

    *otype*, an ``int``, is the option type.

    *parser*, a ``dns.wire.Parser``, the parser, which should be
    restricted to the option length.

    Returns an instance of a subclass of ``dns.edns.Option``.
    )r   r1   r(  rG   )r/   rC   r   s      r   Úoption_from_wire_parserr*    s8   € õ �OŠO˜EÑ"Ô"€EÝ
˜5Ñ
!Ô
!€CØ×Ò  vÑ.Ô.Ð.r   rA   ÚcurrentÚolenc                 óÀ   — t           j                             ||¦  «        }|                     |¦  «        5  t	          | |¦  «        cddd¦  «         S # 1 swxY w Y   dS )ar  Build an EDNS option object from wire format.

    *otype*, an ``int``, is the option type.

    *wire*, a ``bytes``, is the wire-format message.

    *current*, an ``int``, is the offset in *wire* of the beginning
    of the rdata.

    *olen*, an ``int``, is the length of the wire-format option data

    Returns an instance of a subclass of ``dns.edns.Option``.
    N)rk   rA   r  Úrestrict_tor*  )r/   rA   r+  r,  rC   s        r   Úoption_from_wirer/     sž   € õ  ŒX�_Š_˜T 7Ñ+Ô+€FØ	×	Ò	˜DÑ	!Ô	!ð 6ð 6Ý& u¨fÑ5Ô5ð6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6s   ¶AÁAÁAÚimplementationc                 ó   — | t           |<   dS )z«Register the implementation of an option type.

    *implementation*, a ``class``, is a subclass of ``dns.edns.Option``.

    *otype*, an ``int``, is the option type.
    N)r%  )r0  r/   s     r   Úregister_typer2  5  s   € ð +…N�5ÑÐÐr   )0r   r  r”   rŠ   r—   Útypingr   r   Údns.enumrk   Údns.inetÚdns.ipv4Údns.ipv6Údns.nameÚ	dns.rdataÚdns.wireÚenumÚIntEnumr   r.   r?   r{   rÃ   ræ   r  r  r  r$   r*   r    r&   r+   r%  Ú__annotations__r(  re   r*  rf   r“   r/  r2  r!   r"   r#   r%   r'   r(   r)   r   r   r   ú<module>r>     s”  ðð$ Ð Ð à €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€ðð ð ð ð �”Ô!ñ ô ð ðB[ð [ð [ð [ð [ñ [ô [ð [ð|2ð 2ð 2ð 2ð 2�Fñ 2ô 2ð 2ð>F%ð F%ð F%ð F%ð F%�ñ F%ô F%ð F%ðRð ð ð ð ˆcŒhÔñ ô ð ðD: ð : ð : ð : ð : �ñ : ô : ð : ðz+ð +ð +ð +ð +�ñ +ô +ð +ð6@ð @ð @ð @ð @�6ñ @ô @ð @ðD&ð &ð &ð &ð &˜&ñ &ô &ð &ð( „N�IØ„N�IØ„O�ZØÔ�|ØÔÐ1ð)€��Z �_Ô%ð ð ñ ð
˜Jð 
¨3ð 
ð 
ð 
ð 
ð/Ø˜Ñð/Ø%6ð/àð/ð /ð /ð /ð"6Ø˜Ñð6Ø#(ð6Ø36ð6Ø>Að6àð6ð 6ð 6ð 6ð*+ #ð +¨jð +¸Tð +ð +ð +ð +ð „€Ø„n€Ø„n€Ø„n€Ø„n€Ø	Ô	€Ø	Ô	€ØÔ €	Ø
Ô
€ØÔ€Ø„n€ØÔ(€€€r   