+
    ‰4iä   ã            
       ó°  € R t ^ RIt^ RIt^ RIHt ]P                  R9   d
   ^ RI	H
tHt M^ RIH
tHt ^ RIHtHtHtHt ^ RIHtHtHtHtHtHtHt  ^ t!^t"Rt#Rt$]t%Rt&^t'^
t(^]!,          ^,
          t)]!]",          t*^]",          ^,
          t+],! ]-! ^ ]!^,           4       U u. uF"  q ])^]!V ,
          ,          ^,
          ,          3NK$  	  up 4      t.],! ]-! ^ ]!^,           4       U u. uF#  p ])^]!V ,
          ,          ^,
          ,          V 3NK%  	  up 4      t/],! ]-! ^ ]!^,           4       U u. uF  q ^]!V ,
          ,          ^,
          3NK  	  up 4      t0],! ]-! ^ ]!^,           4       U u. uF  p ^]!V ,
          ,          ^,
          V 3NK  	  up 4      t1RR	 lt2RR
 lt3RR lt4R t5R t6R t7R tR t8R t9R tR tRR ltR tR tR tR t:R# u up i u up i u up i u up i )zIPv4 address logic.N)Ú	inet_aton)Ú	inet_ptonÚAF_INET)ÚAddrFormatErrorÚZEROFILLÚ	INET_ATONÚ	INET_PTON)Úvalid_wordsÚ
valid_bitsÚbits_to_intÚint_to_bitsÚ	valid_binÚ
int_to_binÚ
bin_to_intú%dÚ.ÚIPv4c                ó¤   € \        V \        4      '       g   \        R\        V 4      ,          4      h \	        W4       R#   \
         d     R# i ; i)a<  
:param addr: An IPv4 address in presentation (string) format.

:param flags: decides which rules are applied to the interpretation of the
    addr value. Supported constants are INET_PTON and ZEROFILL. See the
    :class:`IPAddress` documentation for details.

.. versionchanged:: 0.10.1
    ``flags`` is scheduled to default to :data:`INET_PTON` instead of :data:`INET_ATON`
    in the future.

:return: ``True`` if IPv4 address is valid, ``False`` otherwise.

.. versionchanged:: 1.0.0
    Returns ``False`` instead of raising :exc:`AddrFormatError` for empty strings.
zInvalid type: %sFT)Ú
isinstanceÚstrÚ	TypeErrorÚtypeÚ
str_to_intr   )ÚaddrÚflagss   &&Ú7/usr/lib/python3/dist-packages/netaddr/strategy/ipv4.pyÚ	valid_strr   Q   sL   € ô" �dœC× Ò ÜÐ*¬T°$«ZÕ7Ó8Ð8ðÜ�4Ôñ øô ô Úðús   ³A  Á AÁAc           	     ó   € \        V : R24      pRV 9   d   VhV\        ,          ;'       g    V\        ,          '       * pV\        ,          '       dB   RP	                  V P                  R4       Uu. uF  pR\        V4      ,          NK  	  up4      p MbV'       d[   \        ;QJ d+    R V P                  R4       4       F  '       g   K   RM 	  RM! R V P                  R4       4       4      '       d   Vh V'       d   \        \        V 4      pM\        V 4      p \        P                  ! RV4      ^ ,          # u upi   \         d    Thi ; i)	aG  
:param addr: An IPv4 dotted decimal address in string form.

:param flags: decides which rules are applied to the interpretation of the
    addr value. Supported constants are INET_PTON and ZEROFILL. See the
    :class:`IPAddress` documentation for details.

:return: The equivalent unsigned integer for a given IPv4 address.
z$ is not a valid IPv4 address string!Ú:r   r   c              3   óp   "  € T F,  p\        V4      ^8„  ;'       d    VP                  R4      x € K.  	  R# 5i)é   Ú0N)ÚlenÚ
startswith)Ú.0Úps   & r   Ú	<genexpr>Ústr_to_int.<locals>.<genexpr>{   s,   é € ÐUÁ_Àœ3˜q›6 A™:×;Ð;¨!¯,©,°sÓ*;Ô;Ã_ùs   ‚6œ6TFú>I)r   r   r   r   ÚjoinÚsplitÚintÚanyÚ
_inet_ptonr   Ú
_inet_atonÚOSErrorÚ_structÚunpack)r   r   ÚerrorÚ	pton_modeÚiÚpackeds   &&    r   r   r   k   sý   € ô ËÐNÓO€EØ
ˆd„{ØˆØœ	Õ!×:Ð:¨´Õ):Ô%:€IØŒx×ÔØ�x‰x°·
±
¸3´Ó@±¨1˜¤ A£Ÿ˜±Ñ@ÓA‰ß	—s“sÑUÀTÇZÁZÐPSÄ_ÓU—s—s’sÑUÀTÇZÁZÐPSÄ_ÓU×UÒUØˆðßÜ¤¨Ó.‰Fä Ó%‰Fô �>Š>˜$ Ó'¨Õ*Ð*ùò Aøô ô Øˆðús   Á1D:Ã7D? Ã?D? ÄD? Ä?Ec                óº   € ^ T u;8:  d   \         8:  d;   M M7RV ^,	          V ^,	          ^ÿ,          V ^,	          ^ÿ,          V ^ÿ,          3,          # \        V : R24      h)zÉ
:param int_val: An unsigned integer.

:param dialect: (unused) Any value passed in is ignored.

:return: The IPv4 presentation (string) format address equivalent to the
    unsigned integer provided.
z%d.%d.%d.%dz( is not a valid 32-bit unsigned integer!©Úmax_intÚ
ValueError)Úint_valÚdialects   &&r   Ú
int_to_strr<   ˆ   sY   € ð 	ˆGÖ”w×ØØ�r�MØ˜�]˜dÕ"Ø˜�\˜TÕ!Ø�d�Nð	 
õ 
ð 	
ô ËÐRÓSÐSó    c                ó¶   € \        V 4       Uu. uF  pRV,          NK  	  ppVP                  4        VP                  . RO4       RP                  V4      # u upi )zƒ
:param int_val: An unsigned integer.

:return: The reverse DNS lookup for an IPv4 address in network byte
    order integer form.
r   r   )zin-addrÚarpaÚ )Úint_to_wordsÚreverseÚextendr)   )r:   r4   Úwordss   &  r   Úint_to_arparE   œ   sN   € ô  ,¨GÔ4Ó5Ñ4˜!ˆT�A�XˆXÑ4€EÐ5Ø	‡M�M„OØ	‡L�LÒ(Ô)Ø�8‰8�E‹?Ðùò 6s   ŽAc                ó0   € \         P                  ! RV 4      # )z…
:param int_val: the integer to be packed.

:return: a packed string that is equivalent to value represented by an
unsigned integer.
r(   )r0   Úpack©r:   s   &r   Úint_to_packedrI   ©   s   € ô �<Š<˜˜gÓ&Ð&r=   c                ó>   € \         P                  ! RV 4      ^ ,          # )zñ
:param packed_int: a packed string containing an unsigned integer.
    It is assumed that string is packed in network byte order.

:return: An unsigned integer equivalent to value of network address
    represented by packed binary string.
r(   )r0   r1   )Ú
packed_ints   &r   Úpacked_to_intrL   ³   s   € ô �>Š>˜$ 
Ó+¨AÕ.Ð.r=   c                 ó,   € \        V \        \        4      # ©N)Ú_valid_wordsÚ	word_sizeÚ	num_words©rD   s   &r   r	   r	   ¾   s   € Ü˜œy¬)Ó4Ð4r=   c                óª   € ^ T u;8:  d   \         8:  g   M \        V : R24      hV ^,	          V ^,	          ^ÿ,          V ^,	          ^ÿ,          V ^ÿ,          3# )z•
:param int_val: An unsigned integer.

:return: An integer word (octet) sequence that is equivalent to value
    represented by an unsigned integer.
z< is not a valid integer value supported bythis address type!r7   rH   s   &r   rA   rA   Â   sP   € ð �Ö"œ7Ö"ÜÛSZÐ\ó
ð 	
ð �r�M˜G r�M¨TÕ1°G¸qµLÀDÕ3HÈ'ÐTXÍ.ÐYÐYr=   c                óª   € \        V 4      '       g   \        V : R24      h\        P                  ! R\        P                  ! R.V O5!  4      ^ ,          # )zž
:param words: A list or tuple containing integer octets.

:return: An unsigned integer that is equivalent to value represented
    by word (octet) sequence.
z/ is not a valid octet list for an IPv4 address!r(   Ú4B)r	   r9   r0   r1   rG   rR   s   &r   Úwords_to_intrV   Ð   sB   € ô �u×ÒÜÓPUÐWÓXÐXÜ�>Š>˜$¤§¢¨TÐ :°EÓ :Ó;¸AÕ>Ð>r=   c                 ó,   € \        V \        \        4      # rN   )Ú_valid_bitsÚwidthÚword_sep©Úbitss   &r   r
   r
   Ü   s   € Ü�tœU¤HÓ-Ð-r=   c                 ó,   € \        V \        \        4      # rN   )Ú_bits_to_intrY   rZ   r[   s   &r   r   r   à   s   € Ü˜œe¤XÓ.Ð.r=   c                 óX   € Vf   \        4       R,          p\        V \        \        V4      # )NrZ   )ÚglobalsÚ_int_to_bitsrP   rQ   )r:   rZ   s   &&r   r   r   ä   s%   € ØÒÜ“9˜ZÕ(ˆÜ˜¤¬I°xÓ@Ð@r=   c                 ó"   € \        V \        4      # rN   )Ú
_valid_binrY   ©Úbin_vals   &r   r   r   ê   s   € Ü�gœuÓ%Ð%r=   c                 ó"   € \        V \        4      # rN   )Ú_int_to_binrY   rH   s   &r   r   r   î   ó   € Ü�w¤Ó&Ð&r=   c                 ó"   € \        V \        4      # rN   )Ú_bin_to_intrY   rd   s   &r   r   r   ò   rh   r=   c                ó
  € . p\        RV ,          4      p\        V \        4      '       d©   RV 9   d   Vh RV 9   d2   V P                  R4       Uu. uF  pR\	        V4      ,          NK  	  ppMR\	        V 4      ,          .p ^\        V4      u;8:  d   ^8:  d9   M Vh\        ^\        V4      ,
          4       F  pVP                  R4       K  	  MVhV'       g   VhR\        V4      ,          # u upi   \
         d    Thi ; i)zú
Expands a partial IPv4 address into a full 4-octet version.

:param addr: an partial or abbreviated IPv4 address

:return: an expanded IP address in presentation format (x.x.x.x)

>>> expand_partial_address('1.2')
'1.2.0.0'

.. versionadded:: 1.1.0
z!invalid partial IPv4 address: %r!r   r   r   r!   z%s.%s.%s.%s)
r   r   r   r*   r+   r9   r"   ÚrangeÚappendÚtuple)r   Útokensr2   Úor4   s   &    r   Úexpand_partial_addressrq   ö   sð   € ð €FäÐ?À$ÕFÓG€Eä�$œ×ÒØ�$Œ;àˆKð	Ø�dŒ{Ø15·±¸C´ÓA±¨A˜$¤ Q£Ÿ-˜-±�ÐA�à¤ T£Õ*Ð+‘ð ”�F“Ö ˜qÖ ð ˆKô ˜1œs 6›{�?Ö+�Ø—‘˜cÖ"ò ,ð ˆKçØˆàœ5 ›=Õ(Ð(ùò Bøô ô 	ØˆKð	ús#   µC4 ÁC/Á*C4 Á-C4 Ã/C4 Ã4D)Úwin32Úcygwin)é    rN   );Ú__doc__ÚsysÚ_sysÚstructr0   Úsocketr   r.   ÚplatformÚnetaddr.fbsocketr   r-   r   Únetaddr.corer   r   r   r   Únetaddr.strategyr	   rO   r
   rX   r   r^   r   ra   r   rc   r   rg   r   rj   rY   rP   Úword_fmtrZ   ÚfamilyÚfamily_nameÚversionÚ	word_baser8   rQ   Úmax_wordÚdictrl   Úprefix_to_netmaskÚnetmask_to_prefixÚprefix_to_hostmaskÚhostmask_to_prefixr   r   r<   rE   rI   rL   rA   rV   rq   )r4   s   0r   Ú<module>r‰      s  ðñ ã Û å *ð ‡=�=Ð'Ô'÷ BÐA÷ 8ç HÓ H÷÷ ñ ð 	€ð €	ð €ð €ð 
€ð €ð €ð €	ð ˆU�(�Q�,€ð �YÕ€	ð ˆi�<˜!Õ€ñ ÉÈqÐRWÐZ[ÕR[ÔI\Ó]ÑI\ÀA˜g¨¨u°q­yÕ)9¸AÕ)=Õ>Ó?ÑI\Ñ]Ó^Ð ñ ÉÈqÐRWÐZ[ÕR[ÔI\Ó]ÑI\ÀA˜7 a¨E°A­IÕ&6¸Õ&:Õ;¸QÓ?ÑI\Ñ]Ó^Ð ñ ÁÀaÈÐQRÍÔ@SÓTÑ@S¸1  e¨a¥iÕ 0°1Õ 4Ó6Ñ@SÑTÓUÐ ñ ÁÀaÈÐQRÍÔ@SÓTÑ@S¸1˜Q 5¨1¥9Õ-°Õ1°AÓ6Ñ@SÑTÓUÐ ôô4+ô:Tò(
ò'ò/ò5òZò	?ò.ò/ôAò&ò'ò'ô')ùòc ^ùò ^ùò Uùò Us   Â(GÃ!)G	Ä%!GÅ!"G