File: //lib/python3/dist-packages/twisted/names/__pycache__/dns.cpython-310.pyc
o
�b�� � @ s� d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl m
Z
mZmZ ddl
mZmZmZ ddlmZmZ ddlmZ dd lmZmZmZmZ dd
lmZmZmZ g d�Z ej!Z!dd
� Z"dd� Z#dd� Z$dd� Z%dZ&e'dd�\Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBd ZCi e(d!�e)d"�e*d#�e+d$�e,d%�e-d&�e.d'�e/d(�e0d)�e1d*�e2d+�e3d,�e4d-�e5d.�e6d/�e7d0�e8d1�e9d2e:d3e;d4e<d5e=d6e>d7e?d8e@d9eAd:eBd;eCd<i�ZDe'd=d>�\ZEZFZGZHZIeEd?eFd@eGdAeHdBeIdCiZJdDdE� eeD�K� eJ�K� �D �ZLe'ddF�\ZMZNZOZPdGZQeMdHeNdIeOdJePdKeQdLiZRdMdE� eR�K� D �ZSe'dN�\ZTZUZVdOZWdFZXe'dP�\ZYZZZ[Z\Z]Z^dQZ_e'dQd�\Z`ZaZbG dRdS� dSe�ZcddTldmeZemfZfmgZg dUdV� ZhdWdX� ZidYdZ� Zjd[d\� Zkd]d^� ZlG d_d`� d`e�ZmG dadb� dbemec�Zneem�G dcdd� dd��Zoeem�G dedf� df��Zpeeem�G dgdh� dh���Zqeem�G didj� djejrejs��Zteem�G dkdl� dlejrejs��Zueem�G dmdn� dnejs��Zveen�G dodp� dpejrejs��ZwG dqdr� drew�ZxG dsdt� dtew�ZyG dudv� dvew�ZzG dwdx� dxew�Z{G dydz� dzew�Z|G d{d|� d|ew�Z}G d}d~� d~ew�Z~G dd�� d�ew�ZG d�d�� d�ew�Z�een�G d�d�� d�ejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejrejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejrejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejrejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejrejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejrejs��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejsejr��Z�een�G d�d�� d�ejsejr��Z�G d�d�� d�e��Z�een�G d�d�� d�ejsejr��Z�d�d�� Z�d�d�� Z� d�d�d��Z�G d�d�� d�ejs�Z�G d�d�� d�ejs�Z�G d�d�� d��Z�G d�d�� d�e�ej��Z�G d�d�� d�e�ej��Z�dS )�zU
DNS protocol implementation.
Future Plans:
- Get rid of some toplevels, maybe.
� N)�BytesIO)�chain)�Optional�SupportsInt�Union)� Attribute� Interface�implementer)�defer�protocol)�CannotListenError)�failure�log� randbytes�util)�cmp�
comparable�nativeString)d�
IEncodable�IRecord�IEncodableRecord�A�A6�AAAA�AFSDB�CNAME�DNAME�HINFO�MAILA�MAILB�MB�MD�MF�MG�MINFO�MR�MX�NAPTR�NS�NULL�OPT�PTR�RP�SOA�SPF�SRV�TXT�SSHFP�TSIG�WKS�ANY�CH�CS�HS�IN�ALL_RECORDS�AXFR�IXFR�EFORMAT�ENAME�ENOTIMP�EREFUSED�ESERVER�EBADVERSION�EBADSIG�EBADKEY�EBADTIME�Record_A� Record_A6�Record_AAAA�Record_AFSDB�Record_CNAME�Record_DNAME�Record_HINFO� Record_MB� Record_MD� Record_MF� Record_MG�Record_MINFO� Record_MR� Record_MX�Record_NAPTR� Record_NS�Record_NULL�
Record_PTR� Record_RP�
Record_SOA�
Record_SPF�
Record_SRV�Record_SSHFP�Record_TSIG�
Record_TXT�
Record_WKS�
UnknownRecord�
QUERY_CLASSES�QUERY_TYPES�REV_CLASSES� REV_TYPES�EXT_QUERIES�Charstr�Message�Name�Query�RRHeader�SimpleRecord�DNSDatagramProtocol�DNSMixin�DNSProtocol�OK�
OP_INVERSE� OP_NOTIFY�OP_QUERY� OP_STATUS� OP_UPDATE�PORT�AuthoritativeDomainError�DNSQueryTimeoutError�DomainErrorc C s
t | g�S )z�
Construct a bytes object representing a single byte with the given
ordinal value.
@type ordinal: L{int}
@rtype: L{bytes}
��bytes)�ordinal� r{ �3/usr/lib/python3/dist-packages/twisted/names/dns.py�
_ord2bytes� s
r} c C s t | �dd� S )z�
Represent a mostly textful bytes object in a way suitable for
presentation to an end user.
@param bytes: The bytes to represent.
@rtype: L{str}
� N)�reprrx r{ r{ r| �
_nicebytes� s r� c C s d� d�dd� | D ���S )z�
Represent a list of mostly textful bytes objects in a way suitable for
presentation to an end user.
@param list: The list of bytes to represent.
@rtype: L{str}
z[{}]�, c S s g | ]}t |��qS r{ )r� )�.0�br{ r{ r| �
<listcomp>� s z"_nicebyteslist.<locals>.<listcomp>)�format�join)�listr{ r{ r| �_nicebyteslist� s r� c C s t �dtjddd��d S )z�
Wrapper around L{twisted.python.randbytes.RandomFactory.secureRandom} to
return 2 random bytes.
@rtype: L{bytes}
�H� T)�fallbackr )�struct�unpackr �secureRandomr{ r{ r{ r| �randomSource� s r� �5 r~ � � �! �# �&