ó
    ÌÅLgm  ã                   ó   • S r SSKrSSKrSSKJrJrJrJrJrJ	r	J
r
  SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKr " S S\R0                  R2                  5      r " S S\R0                  R2                  5      rS r\	\R:                  R<                  \\R>                  R@                     \\R>                  R@                     \\   \!\"\!\"4   r#S	 r$ " S
 S5      r% " S S\RL                  RN                  5      r( " S S\RL                  RR                  5      r*SS\RV                  RX                  \RV                  RX                  SSS\R>                  RZ                  S4	S\S\\
\R>                  R@                  \.4      S\\!   S\\
\RV                  R^                  \.4      S\
\RV                  R^                  \.4   S\\
\R`                  Rb                  \.4      S\\
\!\.4      S\\R>                  Rd                     S\\
\R>                  R@                  \.4      S\"S\\Rf                  Rh                     4S jjr5g)z
DNS Zones.é    N)ÚAnyÚIterableÚListÚOptionalÚSetÚTupleÚUnionc                   ó   • \ rS rSrSrSrg)ÚUnknownOriginé&   zUnknown origin© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú./usr/lib/python3/dist-packages/dns/zonefile.pyr   r   &   s   † Ür   r   c                   ó   • \ rS rSrSrSrg)ÚCNAMEAndOtherDataé*   z!A node has a CNAME and other datar   Nr   r   r   r   r   r   *   s   † Ü+r   r   c                 ó  • [         R                  R                  R                  U5      nU R	                  U5      nUc  g UR                  5       nU[         R                  R                  R                  :X  a3  U[         R                  R                  R                  :X  a  [        S5      eU[         R                  R                  R                  :X  a4  U[         R                  R                  R                  :X  a  [        S5      eg g )Nz1rdataset type is not compatible with a CNAME nodez9CNAME rdataset is not compatible with a regular data node)	ÚdnsÚnodeÚNodeKindÚclassify_rdatasetÚget_nodeÚclassifyÚCNAMEÚREGULARr   )ÚtxnÚnameÚrdatasetÚrdataset_kindr   Ú	node_kinds         r   Ú_check_cname_and_other_datar(   .   sÃ   € Ü—H‘H×%Ñ%×7Ñ7¸ÓA€MØ�<‰<˜Ó€DØ�|àØ—‘“€Ià”S—X‘X×&Ñ&×,Ñ,Ó,ØœSŸX™X×.Ñ.×6Ñ6Ó6äÐ SÓTÐTà”S—X‘X×&Ñ&×.Ñ.Ó.ØœSŸX™X×.Ñ.×4Ñ4Ó4äØGó
ð 	
ð 5ð 	/r   c                 ó\   • U R                  5       n U R                  S5      (       d  SU -   n U $ )NÚ$)ÚupperÚ
startswith)Úss    r   Ú_upper_dollarizer.   Q   s*   € Ø	�‰‹	€AØ�<‰<˜×ÑØ�!‰GˆØ€Hr   c                   ó¾  • \ rS rSrSr       SS\R                  R                  S\R                  R                  S\R                  R                  S\S\\\\   4   S	\\R"                  R$                     S
\\   S\\R                  R                     S\\R(                  R*                     S\\   4S jjrS rS rS rS\S\\\\\\4   4S jrS rSS jrSrg)ÚReaderéX   z(Read a DNS zone file into a transaction.NÚtokÚrdclassr#   Úallow_includeÚallow_directivesÚ
force_nameÚ	force_ttlÚforce_rdclassÚforce_rdtypeÚdefault_ttlc                 óh  • Xl         UR                  R                  5       u  U l        U l        nU R                  U l        SU l        SU l        Ub  Un
U
c  SU l        SU l	        OX l        SU l	        U R
                  U l
        X l        X0l        / U l        S U l        U   USL a,  1 SkU l        U(       a  U R                  R!                  S5        O,USL a  [#        5       U l        O[#        S U 5       5      U l        X`l        Xpl        X€l        X�l        U R                  R-                  [.        5        g )Nr   FT>   ú$TTLú$ORIGINú	$GENERATEú$INCLUDEc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)r.   )Ú.0Úds     r   Ú	<genexpr>Ú"Reader.__init__.<locals>.<genexpr>†   s   é € Ð)XÒGWÀ!Ô*:¸1×*=Ð*=ÒGWùs   ‚)r2   ÚmanagerÚorigin_informationÚzone_originÚ
relativizeÚcurrent_originÚlast_ttlÚlast_ttl_knownr:   Údefault_ttl_knownÚ	last_nameÚzone_rdclassr#   Úsaved_stateÚcurrent_fileÚallowed_directivesÚaddÚsetr6   r7   r8   r9   Úcheck_put_rdatasetr(   )Úselfr2   r3   r#   r4   r5   r6   r7   r8   r9   r:   Ú_s               r   Ú__init__ÚReader.__init__[   s  € ð ŒØ14·±×1OÑ1OÓ1QÑ.ˆÔ	˜4œ?¨AØ"×.Ñ.ˆÔØˆŒØ#ˆÔØÑ Ø#ˆKØÑØ ˆDÔØ%*ˆDÕ"à*ÔØ%)ˆDÔ"Ø×,Ñ,ˆŒØ#ÔØŒØ13ˆÔØ+/ˆÔÙØ˜tÒ#Ú&FˆDÔ#ÞØ×'Ñ'×+Ñ+¨JÔ7øØ Ò&ô '*£eˆDÕ#ô '*Ñ)XÑGWÓ)XÓ&XˆDÔ#Ø$ŒØ"ŒØ*ÔØ(ÔØ�‰×#Ñ#Ô$?Õ@r   c                 óh   •  U R                   R                  5       nUR                  5       (       a  g M2  rA   )r2   ÚgetÚis_eol_or_eof©rV   Útokens     r   Ú	_eat_lineÚReader._eat_line�   s+   € ØØ—H‘H—L‘L“NˆEØ×"Ñ"×$Ñ$Øñ r   c                 ó˜   • U R                   R                  5       nUR                  5       (       d  [        R                  R
                  eU$ rA   )r2   r[   Úis_identifierr   Ú	exceptionÚSyntaxErrorr]   s     r   Ú_get_identifierÚReader._get_identifier“   s5   € Ø—‘—‘“ˆØ×"Ñ"×$Ñ$Ü—-‘-×+Ñ+Ð+Øˆr   c           	      óþ
  • SnU R                   b  U R                   nGO U R                  c  [        eU R                  R	                  SS9nUR                  5       (       d+  U R                  R                  XR                  5      U l        OKU R                  R	                  5       nUR                  5       (       a  gU R                  R                  U5        U R                  nUR                  U R                  5      (       d  U R                  5         gU R                  (       a  UR                  U R                  5      nU R                  b  U R                  nX0l        SU l        OKU R#                  5       nSn [$        R&                  R)                  UR*                  5      nX0l        SU l        SnU R.                  b  U R.                  nOhU R#                  5       n [$        R0                  R)                  UR*                  5      nX@R8                  :w  a  [$        R2                  R5                  S5      eUcK  U R#                  5       nSn [$        R&                  R)                  UR*                  5      nX0l        SU l        SnU R>                  b  U R>                  nO:U R#                  5       n [$        R@                  R)                  UR*                  5      n [$        RB                  R)                  UUU R                  U R                  U R                  U R                  5      nU R:                  (       dE  U[$        R@                  RJ                  :X  a'  URL                  U l        SU l        Uc  URL                  nUc  [$        R2                  R5                  S
5      eU RN                  RQ                  X#U5        g! [$        R&                  R,                   a    U R                  R                  U5         GNBf = f! [$        R2                  R4                   a    e [6         a+    U R8                  nU R                  R                  U5         GNDf = f! [$        R&                  R,                   aZ    U R:                  (       a  U R<                  nOU R                   (       a  U R                  nU R                  R                  U5         GNCf = f! [6         a.    [$        R2                  R5                  SUR*                   S35      ef = f! [$        R2                  R4                   a    e [6         aR    [D        RF                  " 5       SS u  px[$        R2                  R5                  S[I        U5       S	[I        U5       35      ef = f)z&Process one line from a DNS zone file.NT)Úwant_leadingúRR class is not zone's classúunknown rdatatype 'Ú'é   úcaught exception ú: úMissing default TTL value))r6   rJ   r   r2   r[   Úis_whitespaceÚas_namerN   r\   ÚungetÚis_subdomainrH   r_   rI   r7   rK   rL   re   r   ÚttlÚ	from_textÚvalueÚBadTTLr8   Ú
rdataclassrc   rd   Ú	ExceptionrO   rM   r:   r9   Ú	rdatatypeÚrdataÚsysÚexc_infoÚstrÚSOAÚminimumr#   rS   )	rV   r^   r$   rt   r3   ÚrdtypeÚrdÚtyÚvas	            r   Ú_rr_lineÚReader._rr_line™   sA  € àˆà�?‰?Ñ&Ø—?‘?ŠDà×"Ñ"Ñ*Ü#Ð#Ø—H‘H—L‘L¨d�LÐ3ˆEØ×&Ñ&×(Ñ(Ø!%§¡×!1Ñ!1°%×9LÑ9LÓ!M�•àŸ™Ÿ™›�Ø×&Ñ&×(Ñ(àØ—‘—‘˜uÔ%Ø—>‘>ˆDØ×$Ñ$ T×%5Ñ%5×6Ñ6Ø—‘Ô ØØ��Ø—‘ t×'7Ñ'7Ó8�ð �>‰>Ñ%Ø—.‘.ˆCØŒMØ"&ˆDÕà×(Ñ(Ó*ˆEØˆCð&Ü—g‘g×'Ñ'¨¯©Ó4�Ø #”Ø&*�Ô#Ø�ð
 ×ÑÑ)Ø×(Ñ(‰Gà×(Ñ(Ó*ˆEð&ÜŸ.™.×2Ñ2°5·;±;Ó?�ð ×+Ñ+Ó+Ü—m‘m×/Ñ/Ð0NÓOÐOà‰;à×(Ñ(Ó*ˆEØˆCð
&Ü—g‘g×'Ñ'¨¯©Ó4�Ø #”Ø&*�Ô#Ø�ð ×ÑÑ(Ø×&Ñ&‰Fà×(Ñ(Ó*ˆEðVÜŸ™×0Ñ0°·±Ó=�ð	VÜ—‘×$Ñ$ØØØ—‘Ø×#Ñ#Ø—‘Ø× Ñ óˆBð( ×%×%¨&´C·M±M×4EÑ4EÓ*Eð  "Ÿz™zˆDÔØ%)ˆDÔ"Ø‰{à—j‘j�ð ‰;Ü—-‘-×+Ñ+Ð,GÓHÐHà�‰�‰�T Õ#øôa —7‘7—>‘>ó &Ø—‘—‘˜u×%ð&ûô —=‘=×,Ñ,ó ØÜó &Ø×+Ñ+�Ø—‘—‘˜u×%ð&ûô —7‘7—>‘>ó &Ø×)×)Ø×*Ñ*‘CØ×(×(ØŸ-™-�CØ—‘—‘˜u×%ð&ûô ó VÜ—m‘m×/Ñ/Ð2EÀeÇkÁkÀ]ÐRSÐ0TÓUÐUðVûô �}‰}×(Ñ(ó 	àÜó 	Vô —|’|“~ b qÐ)‰HˆRÜ—-‘-×+Ñ+Ð.?ÄÀBÃ¸yÈÌ3ÈrË7È)Ð,TÓUÐUð	VúsR   Å88N6 Ç)O6 É8Q Ê+)S ËAT Î69O3Ï2O3Ï6AQ	ÑQ	ÑA4SÓSÓ8S?ÔA:U<ÚsideÚreturnc                 ó´  • [         R                  " S5      n[         R                  " S5      n[         R                  " S5      nSnSnSnSnSn	UR                  U5      n
U
(       a  U
R                  5       u  pVpxn	US:X  a  SnOmUR                  U5      nU(       a   UR                  5       u  pVnUS:X  a  SnSnSn	O5UR                  U5      nU(       a  UR                  5       u  pVpxUS:X  a  SnSn	[	        U5      n[	        U5      nUS;  a"  [
        R                  R                  S	U 35      eU	S
;  a"  [
        R                  R                  SU	 35      eXVXÞU	4$ )Nz"^.*\$({(\+|-?)(\d+),(\d+),(.)}).*$z^.*\$({(\+|-?)(\d+)}).*$z^.*\$({(\+|-?)(\d+),(\d+)}).*$Ú Ú+Ú0rC   )r‹   Ú-zinvalid offset sign )rC   ÚoÚxÚXÚnÚNzinvalid type )ÚreÚcompileÚmatchÚgroupsÚintr   rc   rd   )rV   r‡   Úis_generate1Úis_generate2Úis_generate3ÚmodÚsignÚoffsetÚwidthÚbaseÚg1Úg2Úg3ÚioffsetÚiwidths                  r   Ú_parse_modifyÚReader._parse_modify  sT  € ô —z’zÐ"GÓHˆÜ—z’zÐ"=Ó>ˆÜ—z’zÐ"CÓDˆð ˆØˆØˆØˆØˆØ×Ñ Ó%ˆÞØ-/¯Y©Y«[Ñ*ˆC�v dØ�r‹zØ�øà×#Ñ# DÓ)ˆBÞØ$&§I¡I£KÑ!�˜6Ø˜2“:Ø�DØ�Ø‘à!×'Ñ'¨Ó-�ÞØ/1¯y©y«{Ñ,�C˜vØ˜r“zØ"˜Ø�Dä�f“+ˆÜ�U“ˆà�zÓ!Ü—-‘-×+Ñ+Ð.BÀ4À&Ð,IÓJÐJØÐ5Ó5Ü—-‘-×+Ñ+¨m¸D¸6Ð,BÓCÐCà˜'¨4Ð/Ð/r   c           
      ó   ^• U R                   c  [        eU R                  R                  5       n [        R
                  R                  UR                  5      u  p#nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e  UR                  nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e  [        R                  R                  UR                  5      nX`l        SU l        U R                  R                  5       nUR                  5       (       d  [        R                  R                  e  [        R$                  R                  UR                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e XpR&                  :w  a  [        R                  R                  S5      e [        R(                  R                  UR                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e UR                  n	S[*        S[,        S	[*        S
[*        4S jn
S[*        S[,        S[*        S
[,        4U4S jjmU R/                  U5      u  p¼pÞnU R/                  U	5      u  nnnnn[1        X#S-   U5       GHb  nU
" UXÍ5      nU
" UUU5      nT" UXþ5      nT" UUU5      nUR3                  SU 3U5      nU	R3                  SU 3U5      n[        R4                  R                  UU R                   U R                  R6                  5      U l        U R8                  nUR;                  U R<                  5      (       d  U R?                  5           gU R@                  (       a  URA                  U R<                  5      n [        RB                  R                  UUUU R                   U R@                  U R<                  5      nU RH                  RK                  UWU5        GMe     g! [         a    [        R                  R                  ef = f! [         a    [        R                  R                  ef = f! [        R                  R                   a‚    U R                  (       d0  U R                   (       d  [        R                  R                  S5      eU R                   (       a  U R"                  n GNÑU R                  (       a  U R                  n GNñf = f! [        R                  R                   a    [        R                  R                  e[         a    U R&                  n GNÑf = f! [         a.    [        R                  R                  SUR                   S35      ef = f! [        R                  R                   a    e [         aS    [D        RF                  " 5       SS u  nn[        R                  R                  S[-        U5       S[-        U5       35      ef = f)zHProcess one line containing the GENERATE statement from a DNS
zone file.NTro   ri   rj   rk   ÚcounterÚoffset_signr�   rˆ   c                 ó    • US:X  a  US-  nX-   $ )z0Calculate the index from the counter and offset.r�   éÿÿÿÿr   )r¨   r©   r�   s      r   Ú_calculate_indexÚ/Reader._generate_line.<locals>._calculate_index  s   € à˜cÓ!Ø˜"‘�ØÑ#Ð#r   ÚindexrŸ   rž   c                 ó¼   >• US;   a  [        X5      R                  U5      $ T" U SU5      nSR                  USSS2   5      SU nUS:X  a  UR                  5       nU$ )zJFormat the index with the given base, and zero-fill it
to the given width.)rC   rŽ   r�   r�   r�   Ú.Nr«   r’   )ÚformatÚzfillÚjoinr+   )r®   rŸ   rž   ÚhexaÚnibblesÚ_format_indexs        €r   r¶   Ú,Reader._generate_line.<locals>._format_index…  sh   ø€ ð Ð+Ó+Ü˜eÓ*×0Ñ0°Ó7Ð7ñ ! ¨¨UÓ3ˆDØ—h‘h˜t¡D b D™zÓ*¨6¨EÐ2ˆGØ�s‹{Ø!Ÿ-™-›/�ØˆNr   é   r*   rl   rm   rn   )&rJ   r   r2   r[   r   Úgrangeru   rv   rb   rc   rd   ry   rt   rK   rL   rw   rM   r:   rx   rO   rz   r—   r~   r¥   ÚrangeÚreplacer$   Ú
idna_codecrN   rs   rH   r_   rI   r{   r|   r}   r#   rS   ) rV   r^   ÚstartÚstopÚstepÚlhsrt   r3   r�   Úrhsr¬   ÚlmodÚlsignÚloffsetÚlwidthÚlbaseÚrmodÚrsignÚroffsetÚrwidthÚrbaseÚiÚlindexÚrindexÚlzfindexÚrzfindexr$   r{   r‚   rƒ   r„   r¶   s                                   @r   Ú_generate_lineÚReader._generate_line>  s&  ø€ ð ×ÑÑ&ÜÐà—‘—‘“ˆð	,Ü #§
¡
× 4Ñ 4°U·[±[Ó AÑˆE˜Ø—H‘H—L‘L“NˆEØ×&Ñ&×(Ñ(Ü—m‘m×/Ñ/Ð/ð )ð	,Ø—+‘+ˆCØ—H‘H—L‘L“NˆEØ×&Ñ&×(Ñ(Ü—m‘m×/Ñ/Ð/ð )ð	$Ü—'‘'×#Ñ# E§K¡KÓ0ˆCØŒMØ"&ˆDÔØ—H‘H—L‘L“NˆEØ×&Ñ&×(Ñ(Ü—m‘m×/Ñ/Ð/ð )ð	(Ü—n‘n×.Ñ.¨u¯{©{Ó;ˆGØ—H‘H—L‘L“NˆEØ×&Ñ&×(Ñ(Ü—m‘m×/Ñ/Ð/ð )ð ×'Ñ'Ó'Ü—-‘-×+Ñ+Ð,JÓKÐKð	RÜ—]‘]×,Ñ,¨U¯[©[Ó9ˆFØ—H‘H—L‘L“NˆEØ×&Ñ&×(Ñ(Ü—m‘m×/Ñ/Ð/ð )ð �k‰kˆð	$¤cð 	$¼ð 	$ÄSð 	$ÌSô 	$ð	¤ð 	¬Cð 	¼ð 	Ä÷ 	ð /3×.@Ñ.@ÀÓ.EÑ+ˆ�W eØ.2×.@Ñ.@ÀÓ.EÑ+ˆˆe�W˜f eÜ�u Q™h¨×-ˆAñ & a¨Ó8ˆFÙ% a¨°Ó8ˆFá$ V¨UÓ;ˆHÙ$ V¨U°FÓ;ˆHà—;‘;  4 &˜z¨8Ó4ˆDØ—K‘K ! D 6 
¨HÓ5ˆEä ŸX™X×/Ñ/Ø�d×)Ñ)¨4¯8©8×+>Ñ+>óˆDŒNð —>‘>ˆDØ×$Ñ$ T×%5Ñ%5×6Ñ6Ø—‘Ô ÙØ��Ø—‘ t×'7Ñ'7Ó8�ðÜ—Y‘Y×(Ñ(ØØØØ×'Ñ'Ø—O‘OØ×$Ñ$ó�ð, �H‰H�L‰L˜˜s B×'ò[ .øôQ ó 	,Ü—-‘-×+Ñ+Ð+ð	,ûô ó 	,Ü—-‘-×+Ñ+Ð+ð	,ûô �w‰w�~‰~ó 	$Ø×'×'¨4×+A×+AÜ—m‘m×/Ñ/Ð0KÓLÐLØ×%×%Ø×&Ñ&“Ø×$×$Ø—m‘m�úð	$ûô �}‰}×(Ñ(ó 	,Ü—-‘-×+Ñ+Ð+Üó 	(Ø×'Ñ'‹Gð	(ûô ó 	RÜ—-‘-×+Ñ+Ð.AÀ%Ç+Á+ÀÈaÐ,PÓQÐQð	Rûôt —=‘=×,Ñ,ó àÜó 	ô Ÿ<š<›>¨"¨1Ð-‘��RÜ—m‘m×/Ñ/Ø'¬¨B« y°´3°r³7°)Ð<óð ð	úsb   °A5R  Â'AR( Ã>A?S Å?A2U3 È!A2W ÐAXÒ %R%Ò(%SÓA<U0ÕU0Õ/U0Õ3AW×W×8W?ØA;Y=c           
      óÐ
  •   U R                   R                  SS5      nUR                  5       (       a�  U R                  b  U R                  R	                  5         [        U R                  5      S:”  aN  U R                  R                  S5      u  U l         U l        U l	        U l        U l
        U l        U l        U l        MÀ  gUR                  5       (       a  MØ  UR                  5       (       a  U R                   R!                  5         GM
  UR"                  S   S:X  Ga…  [        U R$                  5      S:”  Gak  UR"                  R'                  5       nX R$                  ;  a#  [(        R*                  R-                  SU S35      eUS:X  aŸ  U R                   R                  5       nUR/                  5       (       d  [(        R*                  R-                  S	5      e[(        R0                  R3                  UR"                  5      U l        SU l        U R                   R!                  5         GOwUS
:X  a~  U R                   R5                  5       U l        U R                   R!                  5         U R6                  c  U R                  U l        U R8                  R;                  U R                  5        GOóUS:X  Ga²  U R                   R                  5       nUR"                  nU R                   R                  5       nUR/                  5       (       ad  [(        R<                  R3                  UR"                  U R                  U R                   R>                  5      nU R                   R!                  5         O@URA                  5       (       d  [(        R*                  R-                  S5      eU R                  nU R                  RC                  U R                   U R                  U R                  U R                  U R                  U R                  U R                  U R                  45        [E        U5      U l        [(        RF                  RI                  U R                  U5      U l         X@l        O:US:X  a  U RK                  5         O#[(        R*                  R-                  SU S35      eGM£  U R                   RM                  U5        U RO                  5         GMÐ  ! [(        R*                  R,                   at  nU R                   RQ                  5       u  p6Uc  Sn[(        R*                  R-                  SX6U4-  5      n[R        RT                  " 5       S   nURW                  U5      SeSnAff = f)z®Read a DNS zone file and build a zone object.

@raises dns.zone.NoSOA: No SOA RR was found at the zone origin
@raises dns.zone.NoNS: No NS RRset was found at the zone origin
TNr   r«   r*   zzone file directive 'z' is not allowedr<   zbad $TTLr=   r?   zbad origin in $INCLUDEr>   zUnknown zone file directive 'rk   zsyntax errorz	%s:%d: %srl   ),r2   r[   Úis_eofrQ   ÚcloseÚlenrP   ÚpoprJ   rN   rK   rL   r:   rM   Úis_eolÚ
is_commentÚget_eolrv   rR   r+   r   rc   rd   rb   rt   ru   Úget_namerH   r#   Ú_set_originr$   r¼   r\   ÚappendÚopenÚ	tokenizerÚ	TokenizerrÑ   rr   r…   Úwherer|   r}   Úwith_traceback)	rV   r^   ÚcÚfilenameÚ
new_originÚdetailÚline_numberÚexÚtbs	            r   ÚreadÚReader.readÃ  s"  € ð[	2ØØŸ™Ÿ™ T¨4Ó0�Ø—<‘<—>‘>Ø×(Ñ(Ñ4Ø×)Ñ)×/Ñ/Ô1Ü˜4×+Ñ+Ó,¨qÓ0ð !×,Ñ,×0Ñ0°Ó4ñ	Ø œHØ Ô/Ø œNØ Ô-Ø œMØ Ô/Ø Ô,Ø Ô2á ØØ—\‘\—^‘^ÙØ×%Ñ%×'Ñ'Ø—H‘H×$Ñ$Ô&ÚØ—[‘[ ‘^ sÔ*¬s°4×3JÑ3JÓ/KÈaÔ/Oð Ÿ™×)Ñ)Ó+�AØ× 7Ñ 7Ó7Ü!Ÿm™m×7Ñ7Ø3°A°3Ð6FÐGóð ð ˜F“{Ø $§¡§¡£˜Ø$×2Ñ2×4Ñ4Ü"%§-¡-×";Ñ";¸JÓ"GÐGÜ+.¯7©7×+<Ñ+<¸U¿[¹[Ó+I˜Ô(Ø15˜Ô.ØŸ™×(Ñ(Ö*Ø˜i›Ø.2¯h©h×.?Ñ.?Ó.A˜Ô+ØŸ™×(Ñ(Ô*Ø×+Ñ+Ñ3Ø/3×/BÑ/B˜DÔ,ØŸ™×,Ñ,¨T×-@Ñ-@ÖAØ˜jœØ $§¡§¡£˜Ø#(§;¡;˜Ø $§¡§¡£˜à ×.Ñ.×0Ñ0Ü),¯©×);Ñ);Ø %§¡¨T×-@Ñ-@À$Ç(Á(×BUÑBUó*˜Jð !ŸH™H×,Ñ,Õ.Ø!&×!4Ñ!4×!6Ñ!6Ü"%§-¡-×";Ñ";Ð<TÓ"UÐUà)-×)<Ñ)<˜JØ×(Ñ(×/Ñ/à $§¡Ø $× 3Ñ 3Ø $§¡Ø $× 1Ñ 1Ø $§¡Ø $× 3Ñ 3Ø $× 0Ñ 0Ø $× 6Ñ 6ð	ôô -1°«N˜Ô)Ü#&§=¡=×#:Ñ#:¸4×;LÑ;LÈhÓ#W˜œØ.8Õ+Ø˜kÓ)Ø×+Ñ+Õ-ä!Ÿm™m×7Ñ7Ø;¸A¸3¸aÐ@óð ò Ø—‘—‘˜uÔ%Ø—‘”òc øôd �}‰}×(Ñ(ó 	2Ø&*§h¡h§n¡nÓ&6Ñ#ˆXØ‰~Ø'�Ü—‘×*Ñ*Ø˜x°fÐ=Ñ=óˆBô —’“ Ñ"ˆBØ×#Ñ# BÓ'¨TÐ1ûð	2ús    ‚C S ÃPS ÓU%Ó1A/U Õ U%)rR   rQ   rJ   r:   rM   r6   r8   r9   r7   rN   rK   rL   rI   rP   r2   r#   rH   rO   )FTNNNNN)rˆ   N)r   r   r   r   r   r   rß   rà   rx   Ú
RdataClassÚtransactionÚTransactionÚboolr	   r   r~   r   r$   ÚNamer—   rz   Ú	RdataTyperX   r_   re   r…   r   r¥   rÑ   rê   r   r   r   r   r0   r0   X   s0  † Ù2ð $Ø7;Ø.2Ø#'Ø=AØ:>Ø%)ñ0Aà�]‰]×$Ñ$ð0Að —‘×*Ñ*ð0Að �_‰_×(Ñ(ð	0Að
 ð0Að    h¨s¡mÐ 3Ñ4ð0Að ˜SŸX™XŸ]™]Ñ+ð0Að ˜C‘=ð0Að   §¡× 9Ñ 9Ñ:ð0Að ˜sŸ}™}×6Ñ6Ñ7ð0Að ˜c‘]õ0Aòdòòv$ðp+0 #ð +0¨%°°S¸#¸sÀCÐ0GÑ*Hô +0òZC(÷Jb2r   r0   c                   ój   ^ • \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrU =r$ )ÚRRsetsReaderTransactioni(  c                 óF   >• U(       a   e[         TU ]  XU5        0 U l        g rA   )ÚsuperrX   Ú	rdatasets)rV   rF   ÚreplacementÚ	read_onlyÚ	__class__s       €r   rX   Ú RRsetsReaderTransaction.__init__)  s!   ø€ ÞÐˆ}Ü‰Ñ˜¨yÔ9Øˆ�r   c                 ó<   • U R                   R                  XU45      $ rA   )rö   r[   ©rV   r$   r�   Úcoverss       r   Ú_get_rdatasetÚ%RRsetsReaderTransaction._get_rdataset.  s   € Ø�~‰~×!Ñ! 4°Ð"8Ó9Ð9r   c                 óð   • / nU R                   R                  5        H!  u  u  n  pEX:X  d  M  UR                  U5        M#     [        U5      S:X  a  g [        R
                  R                  5       nX&l         U$ ©Nr   )rö   ÚitemsrÝ   rÖ   r   r   ÚNode)rV   r$   rö   Úrdataset_namerW   r%   r   s          r   Ú	_get_nodeÚ!RRsetsReaderTransaction._get_node1  sg   € Øˆ	Ø/3¯~©~×/CÑ/CÖ/EÑ+Ñ!ˆ]˜A˜qØÕ$Ø× Ñ  Ö*ñ 0Fô ˆy‹>˜QÓØÜ�x‰x�}‰}‹ˆØ"ŒØˆr   c                 óL   • X R                   XR                  UR                  4'   g rA   )rö   r�   rý   )rV   r$   r%   s      r   Ú_put_rdatasetÚ%RRsetsReaderTransaction._put_rdataset<  s   € ØCK�‰˜Ÿo™o¨x¯©Ð?Ò@r   c                 ó²   • / nU R                    H  nUS   U:X  d  M  UR                  U5        M!     [        U5      S:”  a  U H  nU R                   U	 M     g g r  )rö   rÝ   rÖ   )rV   r$   ÚremoveÚkeys       r   Ú_delete_nameÚ$RRsetsReaderTransaction._delete_name?  sT   € àˆØ—>”>ˆCØ�1‰v˜�~Ø—‘˜cÖ"ñ "ô ˆv‹;˜‹?Û�Ø—N‘N 3Ò'ò ð r   c                 óD   •  U R                   XU4	 g ! [         a     g f = frA   )rö   ÚKeyErrorrü   s       r   Ú_delete_rdatasetÚ(RRsetsReaderTransaction._delete_rdatasetI  s*   € ð	Ø—‘ ¨fÐ5Ñ6øÜó 	Ùð	ús   ‚ ’
žc                 ó@   • U R                    H  u  n  nX!:X  d  M    g   g©NTF©rö   )rV   r$   r‘   rW   s       r   Ú_name_existsÚ$RRsetsReaderTransaction._name_existsO  s#   € Ø—~”~‰GˆAˆq�!Ø�yÙñ &ð r   c                 ó2   • [        U R                  5      S:„  $ r  )rÖ   rö   ©rV   s    r   Ú_changedÚ RRsetsReaderTransaction._changedU  s   € Ü�4—>‘>Ó" QÑ&Ð&r   c                 óŠ  • U(       a¼  U R                  5       (       a¦  / nU R                  R                  5        Hj  u  u  n  pE[        R                  R                  X5R                  UR                  UR                  5      nUR                  U5        UR                  U5        Ml     U R                  R                  U5        g g g rA   )r  rö   r  r   ÚrrsetÚRRsetr3   r�   rý   ÚupdaterÝ   rF   Ú
set_rrsets)rV   ÚcommitÚrrsetsr$   rW   r%   r  s          r   Ú_end_transactionÚ(RRsetsReaderTransaction._end_transactionX  s‘   € Þ�d—m‘m—o‘oØˆFØ*.¯.©.×*>Ñ*>Ö*@Ñ&‘��q˜!ÜŸ	™	Ÿ™Ø×*Ñ*¨H¯O©O¸X¿_¹_ó�ð —‘˜XÔ&Ø—‘˜eÖ$ñ +Að �L‰L×#Ñ# FÕ+ð &ˆ6r   c                 ó   • g rA   r   )rV   Úorigins     r   rÜ   Ú#RRsetsReaderTransaction._set_originc  s   € Ør   c                 ó   • [         erA   ©ÚNotImplementedErrorr  s    r   Ú_iterate_rdatasetsÚ*RRsetsReaderTransaction._iterate_rdatasetsf  ó   € Ü!Ð!r   c                 ó   • [         erA   r)  r  s    r   Ú_iterate_namesÚ&RRsetsReaderTransaction._iterate_namesi  r-  r   r  )r   r   r   r   rX   rþ   r  r  r  r  r  r  r#  rÜ   r+  r/  r   Ú__classcell__)rù   s   @r   ró   ró   (  sE   ø† õò
:ò	òLò(òòò'ò	,òò"÷"ð "r   ró   c                   ó–   • \ rS rSr\R
                  R                  S\R                  R                  4S jr	S r
SS jrS rS rS rS	rg
)ÚRRSetsReaderManagerim  Fc                 ó6   • Xl         X l        X0l        / U l        g rA   )r&  rI   r3   r"  )rV   r&  rI   r3   s       r   rX   ÚRRSetsReaderManager.__init__n  s   € ð ŒØ$ŒØŒØˆ�r   c                 ó   • [         erA   r)  r  s    r   ÚreaderÚRRSetsReaderManager.readerv  r-  r   c                 ó*   • USL d   e[        U SS5      $ r  )ró   )rV   r÷   s     r   ÚwriterÚRRSetsReaderManager.writery  s   € Ø˜dÒ"Ð"Ð"Ü& t¨T°5Ó9Ð9r   c                 ó   • U R                   $ rA   )r3   r  s    r   Ú	get_classÚRRSetsReaderManager.get_class}  s   € Ø�|‰|Ðr   c                 ó¤   • U R                   (       a  [        R                  R                  nOU R                  nU R                  U R                   U4$ rA   )rI   r   r$   Úemptyr&  )rV   Ú	effectives     r   rG   Ú&RRSetsReaderManager.origin_information€  s4   € Ø�?�?ÜŸ™Ÿ™‰IàŸ™ˆIØ—‘˜TŸ_™_¨iÐ8Ð8r   c                 ó   • Xl         g rA   )r"  )rV   r"  s     r   r   ÚRRSetsReaderManager.set_rrsets‡  s   € Ø�r   )r&  r3   rI   r"  N)F)r   r   r   r   r   r$   Úrootrx   ÚINrX   r7  r:  r=  rG   r   r   r   r   r   r3  r3  m  s9   † à—X‘X—]‘]¨u¸c¿n¹n×>OÑ>Oôò"ô:òò9õr   r3  FÚtextr$   rt   r3   Údefault_rdclassr�   r:   r¼   r&  rI   rˆ   c
                 ó  • [        U[        5      (       a9  [        R                  R	                  U[        R                  R
                  U5      n[        U[        5      (       a   [        R                  R	                  XU5      n[        U[        5      (       a  [        R                  R	                  U5      n[        U[        5      (       a  [        R                  R	                  U5      nUb*  [        R                  R                  R                  U5      nOSn[        R                  R                  R                  U5      nUb*  [        R                  R                  R                  U5      nOSn[        X‰U5      n
U
R                  S5       n[        R                  R                  U SUS9n[!        UUUSUUUUUS9	nUR#                  5         SSS5        U
R$                  $ ! , (       d  f       U
R$                  $ = f)aù  Read one or more rrsets from the specified text, possibly subject
to restrictions.

*text*, a file object or a string, is the input to process.

*name*, a string, ``dns.name.Name``, or ``None``, is the owner name of
the rrset.  If not ``None``, then the owner name is "forced", and the
input must not specify an owner name.  If ``None``, then any owner names
are allowed and must be present in the input.

*ttl*, an ``int``, string, or None.  If not ``None``, the the TTL is
forced to be the specified value and the input must not specify a TTL.
If ``None``, then a TTL may be specified in the input.  If it is not
specified, then the *default_ttl* will be used.

*rdclass*, a ``dns.rdataclass.RdataClass``, string, or ``None``.  If
not ``None``, then the class is forced to the specified value, and the
input must not specify a class.  If ``None``, then the input may specify
a class that matches *default_rdclass*.  Note that it is not possible to
return rrsets with differing classes; specifying ``None`` for the class
simply allows the user to optionally type a class as that may be convenient
when cutting and pasting.

*default_rdclass*, a ``dns.rdataclass.RdataClass`` or string.  The class
of the returned rrsets.

*rdtype*, a ``dns.rdatatype.RdataType``, string, or ``None``.  If not
``None``, then the type is forced to the specified value, and the
input must not specify a type.  If ``None``, then a type must be present
for each RR.

*default_ttl*, an ``int``, string, or ``None``.  If not ``None``, then if
the TTL is not forced and is not specified, then this value will be used.
if ``None``, then if the TTL is not forced an error will occur if the TTL
is not specified.

*idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA
encoder/decoder.  If ``None``, the default IDNA 2003 encoder/decoder
is used.  Note that codecs only apply to the owner name; dnspython does
not do IDNA for names in rdata, as there is no IDNA zonefile format.

*origin*, a string, ``dns.name.Name``, or ``None``, is the origin for any
relative names in the input, and also the origin to relativize to if
*relativize* is ``True``.

*relativize*, a bool.  If ``True``, names are relativized to the *origin*;
if ``False`` then any relative names in the input are made absolute by
appending the *origin*.
NTz<input>)r¼   F)r5   r6   r7   r8   r9   r:   )Ú
isinstancer~   r   r$   ru   rE  rt   rx   rì   Úmakerz   rñ   r3  r:  rß   rà   r0   rê   r"  )rG  r$   rt   r3   rH  r�   r:   r¼   r&  rI   rF   r#   r2   r7  s                 r   Úread_rrsetsrL  ‹  s†  € ôz �&œ#×ÑÜ—‘×#Ñ# F¬C¯H©H¯M©M¸:ÓFˆÜ�$œ×ÑÜ�x‰x×!Ñ! $°
Ó;ˆÜ�#”s×ÑÜ�g‰g×Ñ Ó$ˆÜ�+œs×#Ñ#Ü—g‘g×'Ñ'¨Ó4ˆØÑÜ—.‘.×+Ñ+×0Ñ0°Ó9‰àˆÜ—n‘n×/Ñ/×4Ñ4°_ÓE€OØÑÜ—‘×(Ñ(×-Ñ-¨fÓ5‰àˆÜ! &°oÓF€GØ	�‰˜Ô	 Ü�m‰m×%Ñ% d¨IÀ*Ð%ÐMˆÜØØØØ"ØØØ!ØØ#ñ

ˆð 	�‰Œ÷ 
ð �>‰>Ð÷ 
Ô	ð �>‰>Ðús   ÆAG%Ç%
G>)6r   r“   r|   Útypingr   r   r   r   r   r   r	   Údns.exceptionr   Ú
dns.grangeÚdns.nameÚdns.nodeÚ	dns.rdataÚdns.rdataclassÚdns.rdatatypeÚdns.rdtypes.ANY.SOAÚ	dns.rrsetÚdns.tokenizerÚdns.transactionÚdns.ttlrc   ÚDNSExceptionr   r   r(   rß   rà   r$   rð   r—   rï   ÚSavedStateTyper.   r0   rí   rî   ró   ÚTransactionManagerr3  rx   rF  rE  r~   rì   rz   rñ   Ú	IDNACodecr  r  rL  r   r   r   Ú<module>r^     sV  ðñ$ ã 	Û 
ß C× CÑ Cã Û Û Û Û Û Û Û Û Û Û Û ô�C—M‘M×.Ñ.ô ô,˜Ÿ™×2Ñ2ô ,ò
ð. Ø‡M�M×ÑØˆS�X‰X�]‰]ÑØˆS�X‰X�]‰]ÑØˆS�MØØØØð
ñ	€ò÷M2ñ M2ô`B"˜cŸo™o×9Ñ9ô B"ôJ˜#Ÿ/™/×<Ñ<ô ð@ 15ØØ?B¿~¹~×?PÑ?PØ=@¿^¹^×=NÑ=NØ<@Ø-1Ø/3Ø25·(±(·-±-Øñ]Ø
ð]à
�5˜Ÿ™Ÿ™¨Ð+Ñ,Ñ
-ð]ð 
�#‰ð]ð �e˜CŸN™N×5Ñ5°sÐ:Ñ;Ñ<ð	]ð
 ˜3Ÿ>™>×4Ñ4°cÐ9Ñ:ð]ð �U˜3Ÿ=™=×2Ñ2°CÐ7Ñ8Ñ9ð]ð ˜%  S ™/Ñ*ð]ð ˜Ÿ™×+Ñ+Ñ,ð]ð �U˜3Ÿ8™8Ÿ=™=¨#Ð-Ñ.Ñ/ð]ð ð]ð 
ˆ#�)‰)�/‰/Ñö]r   