Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 N”ªjú/ã@s€dZddlZdZdZGdd„deƒZGdd„deƒZd d „Zd7}|d|j kr„Pq„WdS)Nz1first and last must be IP addresses, not networksz%%s and %s are not of the same versionz*last IP address must be greater than firstrézunknown IP versionr%) Ú isinstanceÚ _BaseAddressÚ TypeErrorÚversionr rrÚ_max_prefixlenr(r/r2r0Ú _ALL_ONES)r+r,r-Zip_bitsZ first_intZlast_intZnbitsÚnetrrr Úsummarize_address_rangeÊs0         r;ccs˜t|ƒ}i}xL|rX|jƒ}|jƒ}|j|ƒ}|dkr>|||<q||kr||=|j|ƒqWd}x4t|jƒƒD]$}|dk r†|j|jkr†ql|V|}qlWdS)N)ÚlistÚpopÚsupernetÚgetÚappendÚsortedÚvaluesÚbroadcast_address)r)Zto_mergeÚsubnetsr:r>Zexistingr,rrr Ú_collapse_addresses_internals$   rEc Cs8g}g}g}xä|D]Ü}t|tƒrT|rH|dj|jkrHtd||dfƒ‚|j|ƒq|j|jkr¼|rˆ|dj|jkrˆtd||dfƒ‚y|j|jƒWqîtk r¸|j|j ƒYqîXq|rä|dj|jkrätd||dfƒ‚|j|ƒqWt t |ƒƒ}|�r,x&t |ƒD]\}}|j t||ƒƒ�qWt||ƒS) Nr%z%%s and %s are not of the same versionéÿÿÿÿrFrFrFrFrF)r4r5Ú_versionr6r@Ú _prefixlenr8r-ÚAttributeErrorÚnetwork_addressrAÚsetr.Úextendr;rE)r)ZaddrsZipsZnetsr-r+r,rrr Úcollapse_addresses2s4     rMcCs(t|tƒr|jƒSt|tƒr$|jƒStS)N)r4Ú _BaseNetworkÚ_get_networks_keyr5Ú_get_address_keyÚNotImplemented)Úobjrrr Úget_mixed_type_keyhs   rSc@s”eZdZfZedd„ƒZedd„ƒZedd„ƒZedd„ƒZd d „Z d d „Z e d d„ƒZ e dd„ƒZ e dd„ƒZe dd„ƒZe dd„ƒZdd„ZdS)Ú_IPAddressBasecCs|jƒS)N)Ú_explode_shorthand_ip_string)Úselfrrr Úexploded‡sz_IPAddressBase.explodedcCst|ƒS)N)r )rVrrr Ú compressedŒsz_IPAddressBase.compressedcCs|jƒS)N)Ú_reverse_pointer)rVrrr Úreverse_pointer‘s z_IPAddressBase.reverse_pointercCsdt|ƒf}t|ƒ‚dS)Nz%200s has no version specified)ÚtypeÚNotImplementedError)rVÚmsgrrr r7œsz_IPAddressBase.versioncCsF|dkrd}t|||jfƒ‚||jkrBd}t|||j|jfƒ‚dS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrGr9r8)rVrr]rrr Ú_check_int_address¡s  z!_IPAddressBase._check_int_addresscCs.t|ƒ}||kr*d}t|||||jfƒ‚dS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r"rrG)rVrZ expected_lenZ address_lenr]rrr Ú_check_packed_addressªs z$_IPAddressBase._check_packed_addresscCs|j|j|?AS)N)r9)ÚclsÚ prefixlenrrr Ú_ip_int_from_prefix±s z"_IPAddressBase._ip_int_from_prefixc Cs\t||jƒ}|j|}||?}d|>d}||krX|jd}|j|dƒ}d}t||ƒ‚|S)Nr%érz&Netmask pattern %r mixes zeroes & ones)r2r8rr ) r`Úip_intZtrailing_zeroesraZ leading_onesZall_onesZbyteslenZdetailsr]rrr Ú_prefix_from_ip_int¾s      z"_IPAddressBase._prefix_from_ip_intcCsd|}t|ƒd‚dS)Nz%r is not a valid netmask)r )r`Z netmask_strr]rrr Ú_report_invalid_netmask×sz&_IPAddressBase._report_invalid_netmaskc Csjtjj|ƒs|j|ƒy t|ƒ}Wntk r@|j|ƒYnXd|koV|jknsf|j|ƒ|S)Nr)Ú_BaseV4Ú_DECIMAL_DIGITSÚ issupersetrfÚintr r8)r`Z prefixlen_strrarrr Ú_prefix_from_prefix_stringÜs    z)_IPAddressBase._prefix_from_prefix_stringcCs†y|j|ƒ}Wntk r,|j|ƒYnXy |j|ƒStk rLYnX||jN}y |j|ƒStk r€|j|ƒYnXdS)N)Ú_ip_int_from_stringrrfrer r9)r`Úip_strrdrrr Ú_prefix_from_ip_stringõs   z%_IPAddressBase._prefix_from_ip_stringcCs|jt|ƒffS)N)Ú __class__r )rVrrr Ú __reduce__sz_IPAddressBase.__reduce__N)rrrÚ __slots__ÚpropertyrWrXrZr7r^r_Ú classmethodrbrerfrkrnrprrrr rT�s        "rTc@s`eZdZfZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dS)r5cCs|jS)N)r()rVrrr Ú__int__&sz_BaseAddress.__int__c Cs2y|j|jko|j|jkStk r,tSXdS)N)r(rGrIrQ)rVÚotherrrr Ú__eq__)s   z_BaseAddress.__eq__cCsFt|tƒstS|j|jkr*td||fƒ‚|j|jkrB|j|jkSdS)Nz%%s and %s are not of the same versionF)r4r5rQrGr6r()rVrurrr Ú__lt__0s     z_BaseAddress.__lt__cCs t|tƒstS|jt|ƒ|ƒS)N)r4rjrQro)rVrurrr Ú__add__<s z_BaseAddress.__add__cCs t|tƒstS|jt|ƒ|ƒS)N)r4rjrQro)rVrurrr Ú__sub__As z_BaseAddress.__sub__cCsd|jjt|ƒfS)Nz%s(%r))rorr )rVrrr Ú__repr__Fsz_BaseAddress.__repr__cCst|j|jƒƒS)N)r Ú_string_from_ip_intr()rVrrr Ú__str__Isz_BaseAddress.__str__cCsttt|jƒƒƒS)N)ÚhashÚhexrjr()rVrrr Ú__hash__Lsz_BaseAddress.__hash__cCs |j|fS)N)rG)rVrrr rPOsz_BaseAddress._get_address_keycCs|j|jffS)N)ror()rVrrr rpRsz_BaseAddress.__reduce__N)rrrrqrtrvrwrxryrzr|rrPrprrrr r5s  r5c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z edd„ƒZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed!d"„ƒZed#d$„ƒZed%d&„ƒZd'd(„Zd)d*„Zd+d,„ZdAd/d0„ZdBd1d2„Zed3d4„ƒZed5d6„ƒZed7d8„ƒZed9d:„ƒZed;d<„ƒZ ed=d>„ƒZ!ed?d@„ƒZ"d.S)CrNcCs i|_dS)N)Ú_cache)rVrrrr Ú__init___sz_BaseNetwork.__init__cCsd|jjt|ƒfS)Nz%s(%r))rorr )rVrrr rzbsz_BaseNetwork.__repr__cCsd|j|jfS)Nz%s/%d)rJra)rVrrr r|esz_BaseNetwork.__str__ccs<t|jƒ}t|jƒ}x"t|d|ƒD]}|j|ƒVq$WdS)Nr%)rjrJrCÚrangeÚ_address_class)rVÚnetworkÚ broadcastÚxrrr Úhostshs  z_BaseNetwork.hostsccs<t|jƒ}t|jƒ}x"t||dƒD]}|j|ƒVq$WdS)Nr%)rjrJrCr‚rƒ)rVr„r…r†rrr Ú__iter__ts  z_BaseNetwork.__iter__cCslt|jƒ}t|jƒ}|dkr>|||kr0tdƒ‚|j||ƒS|d7}|||krZtdƒ‚|j||ƒSdS)Nrzaddress out of ranger%)rjrJrCÚ IndexErrorrƒ)rVÚnr„r…rrr Ú __getitem__zs    z_BaseNetwork.__getitem__cCs^t|tƒstS|j|jkr*td||fƒ‚|j|jkrB|j|jkS|j|jkrZ|j|jkSdS)Nz%%s and %s are not of the same versionF)r4rNrQrGr6rJÚnetmask)rVrurrr rw‡s       z_BaseNetwork.__lt__c CsFy,|j|jko,|j|jko,t|jƒt|jƒkStk r@tSXdS)N)rGrJrjrŒrIrQ)rVrurrr rv“s   z_BaseNetwork.__eq__cCstt|jƒt|jƒAƒS)N)r}rjrJrŒ)rVrrr r›sz_BaseNetwork.__hash__cCsL|j|jkrdSt|tƒrdSt|jƒt|jƒkoBt|jƒkSSdS)NF)rGr4rNrjrJr(rC)rVrurrr Ú __contains__žs   z_BaseNetwork.__contains__cCs(|j|kp&|j|kp&|j|kp&|j|kS)N)rJrC)rVrurrr Úoverlaps«s   z_BaseNetwork.overlapscCs<|jjdƒ}|dkr8|jt|jƒt|jƒBƒ}||jd<|S)NrC)r€r?rƒrjrJÚhostmask)rVr†rrr rC²s    z_BaseNetwork.broadcast_addresscCs8|jjdƒ}|dkr4|jt|jƒ|jAƒ}||jd<|S)Nr�)r€r?rƒrjrŒr9)rVr†rrr r�»s   z_BaseNetwork.hostmaskcCsd|j|jfS)Nz%s/%d)rJrH)rVrrr Úwith_prefixlenÃsz_BaseNetwork.with_prefixlencCsd|j|jfS)Nz%s/%s)rJrŒ)rVrrr Ú with_netmaskÇsz_BaseNetwork.with_netmaskcCsd|j|jfS)Nz%s/%s)rJr�)rVrrr Ú with_hostmaskËsz_BaseNetwork.with_hostmaskcCst|jƒt|jƒdS)Nr%)rjrCrJ)rVrrr Ú num_addressesÏsz_BaseNetwork.num_addressescCsdt|ƒf}t|ƒ‚dS)Nz%%200s has no associated address class)r[r\)rVr]rrr rƒÔsz_BaseNetwork._address_classcCs|jS)N)rH)rVrrr raÜsz_BaseNetwork.prefixlenccsD|j|jkstd||fƒ‚t|tƒs2td|ƒ‚|j|jkoH|j|jksZtd||fƒ‚||krfdS|jd|j|jfƒ}|j ƒ\}}x€||ko˜||k�r|j|jkrÈ|j|jkrÈ|V|j ƒ\}}qŠ|j|jkrô|j|jkrô|V|j ƒ\}}qŠt d|||fƒ‚qŠW||k�r|Vn$||k�r.|Vnt d|||fƒ‚dS)Nz%%s and %s are not of the same versionz%s is not a network objectz%s not contained in %sz%s/%sz3Error performing exclusion: s1: %s s2: %s other: %s) rGr6r4rNrJrCr rorarDÚAssertionError)rVruÚs1Ús2rrr Úaddress_excludeàs<$               z_BaseNetwork.address_excludecCs`|j|jkrtd||fƒ‚|j|jkr,dS|j|jkr 0z0prefix length diff %d is invalid for netblock %s) rHr8r rjrJrCr�r‚ro) rVÚprefixlen_diffÚ new_prefixÚ new_prefixlenÚstartÚendÚstepZnew_addrZcurrentrrr rDhs,       z_BaseNetwork.subnetscCsˆ|jdkr|S|dk rB||jkr(tdƒ‚|dkr8tdƒ‚|j|}|j|}|dkrftd|j|fƒ‚|jt|jƒt|jƒ|>@|fƒS)Nrznew prefix must be shorterr%z(cannot set prefixlen_diff and new_prefixz;current prefixlen is %d, cannot have a prefixlen_diff of %d)rHr rarorjrJrŒ)rVr™ršr›rrr r>�s     z_BaseNetwork.supernetcCs|jjo|jjS)N)rJÚ is_multicastrC)rVrrr rŸÆs z_BaseNetwork.is_multicastcCs|jjo|jjS)N)rJÚ is_reservedrC)rVrrr r Òs z_BaseNetwork.is_reservedcCs|jjo|jjS)N)rJÚ is_link_localrC)rVrrr r¡Þsz_BaseNetwork.is_link_localcCs|jjo|jjS)N)rJÚ is_privaterC)rVrrr r¢és z_BaseNetwork.is_privatecCs|j S)N)r¢)rVrrr Ú is_globalõs z_BaseNetwork.is_globalcCs|jjo|jjS)N)rJÚis_unspecifiedrC)rVrrr r¤s z_BaseNetwork.is_unspecifiedcCs|jjo|jjS)N)rJÚ is_loopbackrC)rVrrr r¥ s z_BaseNetwork.is_loopback)r%N)r%N)#rrrr�rzr|r‡rˆr‹rwrvrr�rŽrrrCr�r�r‘r’r“rƒrar—r˜rOrDr>rŸr r¡r¢r£r¤r¥rrrr rNVs>            N0 5 ) rNc @s²eZdZfZdZdedZedƒZeddddd d d d d h ƒZ eZ iZ dd„Z e dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZdd„Zdd„Zdd„Zedd„ƒZed d!„ƒZd"S)#rgrrr%Ú 0123456789éÿéþéüéøéðéàéÀrrcCst|ƒS)N)r )rVrrr rU0sz$_BaseV4._explode_shorthand_ip_stringc Csn||jkrdt|tƒr|}n.y|j|ƒ}Wntk rF|j|ƒ}YnXt|j|ƒƒ}||f|j|<|j|S)N)Ú_netmask_cacher4rjrkr rnr rb)r`ÚargrarŒrrr Ú _make_netmask3s  z_BaseV4._make_netmaskcCs||s tdƒ‚|jdƒ}t|ƒdkr.td|ƒ‚ytjt|j|ƒdƒStk rv}ztd||fƒd‚WYdd}~XnXdS)NzAddress cannot be emptyÚ.rzExpected 4 octets in %rrz%s in %r)rr!r"rjÚ from_bytesÚmapÚ _parse_octetr )r`rmZoctetsÚexcrrr rlKs   z_BaseV4._ip_int_from_stringcCsŠ|s tdƒ‚|jj|ƒs(d}t||ƒ‚t|ƒdkrDd}t||ƒ‚t|dƒ}|dkrr|ddkrrd }t||ƒ‚|d kr†td |ƒ‚|S) NzEmpty octet not permittedz#Only decimal digits permitted in %réz$At most 3 characters permitted in %ré érÚ0z3Ambiguous (octal/decimal) value in %r not permittedr§zOctet %d (> 255) not permitted)r rhrir"rj)r`Z octet_strr]Z octet_intrrr r´es       z_BaseV4._parse_octetcCsdjtt|jddƒƒƒS)Nr±rr)Újoinr³r r)r`rdrrr r{Šs z_BaseV4._string_from_ip_intcCsÂ|jdƒ}t|ƒdkr†y$x|D]}t|ƒ|jkrdSqWWntk rNdSXx0t|ƒD]$\}}|dkrZ|||dkrZdSqZWdSy t|ƒ}Wntk r¦dSXd|ko¼|jkSS)Nr±rFrr%T)r!r"rjÚ_valid_mask_octetsr Ú enumerater8)rVrŒÚmaskr†ÚidxÚyrrr Ú_is_valid_netmask—s"     z_BaseV4._is_valid_netmaskc sh|jdƒ}y‡fdd„tt|ƒDƒ}Wntk r:dSXt|ƒt|ƒkrPdS|d|dkrddSdS) Nr±csg|]}|ˆjkr|‘qSr)r»)Ú.0r†)rVrr ú Âsz(_BaseV4._is_hostmask..Frr%TrF)r!r³rjr r")rVrmr1Úpartsr)rVr Ú _is_hostmask¶s z_BaseV4._is_hostmaskcCs&t|ƒjdƒddd…}dj|ƒdS)Nr±r%z .in-addr.arparF)r r!rº)rVZreverse_octetsrrr rYËsz_BaseV4._reverse_pointercCs|jS)N)r8)rVrrr Ú max_prefixlenÔsz_BaseV4.max_prefixlencCs|jS)N)rG)rVrrr r7Øsz_BaseV4.versionN)rrrrqrGÚ IPV4LENGTHr9Ú frozensetrhr»r8r®rUrsr°rlr´r{rÀrÄrYrrrÅr7rrrr rgs"     %  rgc@sˆeZdZdZdd„Zedd„ƒZedd„ƒZeej ƒd d „ƒƒZ eej ƒd d „ƒƒZ ed d„ƒZ edd„ƒZ edd„ƒZedd„ƒZdS)r r(Ú __weakref__cCsrt|tƒr|j|ƒ||_dSt|tƒrF|j|dƒtj|dƒ|_dSt|ƒ}d|krbtd|ƒ‚|j |ƒ|_dS)NrrrzUnexpected '/' in %r) r4rjr^r(Úbytesr_r²r rrl)rVrÚaddr_strrrr r�ãs     zIPv4Address.__init__cCs t|jƒS)N)rr()rVrrr ÚpackedszIPv4Address.packedcCs ||jjkS)N)Ú _constantsÚ_reserved_network)rVrrr r  s zIPv4Address.is_reservedcs4t‡fdd„ˆjjDƒƒo2t‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|kVqdS)Nr)rÁr:)rVrr ú (sz)IPv4Address.is_private..c3s|]}ˆ|kVqdS)Nr)rÁr:)rVrr rÎ)s)ÚanyrÌÚ_private_networksÚallÚ_private_networks_exceptions)rVr)rVr r¢szIPv4Address.is_privatecCs||jjko|j S)N)rÌÚ_public_networkr¢)rVrrr r£,szIPv4Address.is_globalcCs ||jjkS)N)rÌÚ_multicast_network)rVrrr rŸ>s zIPv4Address.is_multicastcCs ||jjkS)N)rÌÚ_unspecified_address)rVrrr r¤Is zIPv4Address.is_unspecifiedcCs ||jjkS)N)rÌÚ_loopback_network)rVrrr r¥TszIPv4Address.is_loopbackcCs ||jjkS)N)rÌÚ_linklocal_network)rVrrr r¡^szIPv4Address.is_link_localN)r(rÈ)rrrrqr�rrrËr Ú functoolsÚ lru_cacher¢r£rŸr¤r¥r¡rrrr r Ýs#   r c@sjeZdZdd„Zdd„Zdd„Zdd„Zd d „Zej Z e d d „ƒZ e d d„ƒZ e dd„ƒZ e dd„ƒZdS)rcCsÞt|ttfƒr2tj||ƒt|jƒ|_|j|_ dSt|t ƒr–tj||dƒt |ƒdkrht|dƒ|_ n|j|_ t|dd�|_|jj |_ |jj |_ dSt|ƒ}tj||dƒt|dd�|_|jj |_ |jj |_ |jj |_ dS)Nrr%F)r)r4rÉrjr r�rr(r„r8rHÚtupler"rŒr�r$)rVrr#rrr r�ks(        zIPv4Interface.__init__cCsd|j|jƒ|jjfS)Nz%s/%d)r{r(r„ra)rVrrr r|‡s zIPv4Interface.__str__c CsDtj||ƒ}| s|tkr|Sy |j|jkStk r>dSXdS)NF)r rvrQr„rI)rVruÚ address_equalrrr rv‹s  zIPv4Interface.__eq__c CsNtj||ƒ}|tkrtSy|j|jkp4|j|jko4|Stk rHdSXdS)NF)r rwrQr„rI)rVruÚ address_lessrrr rw—s  zIPv4Interface.__lt__cCst|j|jt|jjƒfƒS)N)r}r(rHrjr„rJ)rVrrr r£szIPv4Interface.__hash__cCs t|jƒS)N)r r()rVrrr r-¨szIPv4Interface.ipcCsd|j|jƒ|jfS)Nz%s/%s)r{r(rH)rVrrr r�¬s zIPv4Interface.with_prefixlencCsd|j|jƒ|jfS)Nz%s/%s)r{r(rŒ)rVrrr r‘±s zIPv4Interface.with_netmaskcCsd|j|jƒ|jfS)Nz%s/%s)r{r(r�)rVrrr r’¶s zIPv4Interface.with_hostmaskN)rrrr�r|rvrwrrTrprrr-r�r‘r’rrrr ris     rc@s.eZdZeZddd„Zeejƒdd„ƒƒZ dS)rTcCsþtj||ƒt|ttfƒr&|}|j}n^t|tƒrT|d}t|ƒdkrL|dn|j}n0t|ƒ}|j |dƒ}t|ƒdkr~|dn|j}t |ƒ|_ |j |ƒ\|_ |_t|j ƒ}|t|j ƒ@|krâ|rÎtd|ƒ‚nt |t|j ƒ@ƒ|_ |j|jdkrú|j|_dS)Nrr%rz%s has host bits set)rNr�r4rjrÉr8rÚr"r$rlr rJr°rŒrHr rˆr‡)rVrrr#r½ÚargsrËrrr r�Ës(%    zIPv4Network.__init__cCs&|jtdƒko|jtdƒk o$|j S)Nz 100.64.0.0/10)rJrrCr¢)rVrrr r£s zIPv4Network.is_globalN)T) rrrr rƒr�rrrØrÙr£rrrr r¼s  Crc@s¤eZdZedƒZedƒZedƒZedƒZedƒedƒedƒedƒedƒedƒed ƒed ƒed ƒed ƒed ƒedƒedƒedƒgZedƒedƒgZ edƒZ e dƒZ dS)Ú_IPv4Constantsz169.254.0.0/16z 127.0.0.0/8z 224.0.0.0/4z 100.64.0.0/10z 0.0.0.0/8z 10.0.0.0/8z 172.16.0.0/12z 192.0.0.0/24z192.0.0.170/31z 192.0.2.0/24z192.168.0.0/16z 198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z 240.0.0.0/4z255.255.255.255/32z 192.0.0.9/32z 192.0.0.10/32z0.0.0.0N) rrrrr×rÖrÔrÓrÐrÒrÍr rÕrrrr rÞs,  rÞc@sšeZdZfZdZdedZdZedƒZ eZ iZ e dd„ƒZ e dd „ƒZe d d „ƒZe d d „ƒZe ddd„ƒZdd„Zdd„Zedd„ƒZedd„ƒZdS)Ú_BaseV6r3rr%rcZ0123456789ABCDEFabcdefcCsJ||jkr@t|tƒr|}n |j|ƒ}t|j|ƒƒ}||f|j|<|j|S)N)r®r4rjrkr rb)r`r¯rarŒrrr r°Zs   z_BaseV6._make_netmaskcCsê|s tdƒ‚|jdƒ}d}t|ƒ|kr:d||f}t|ƒ‚d|dkr¶yt|jƒƒj}Wn4tk rŒ}ztd||fƒd‚WYdd}~XnX|jd|d ?d @ƒ|jd|d @ƒ|jd}t|ƒ|kräd |d|f}t|ƒ‚d}xDtdt|ƒdƒD].} || �sü|dk �r$d |}t|ƒ‚| }�qüW|dk �rÐ|} t|ƒ|d} |d �st| d8} | �rtd}t||ƒ‚|d�sœ| d8} | �rœd}t||ƒ‚|j| | } | dk�r:d}t||jd|fƒ‚njt|ƒ|jk�röd}t||j|fƒ‚|d �sd}t||ƒ‚|d�s*d}t||ƒ‚t|ƒ} d } d } ytd } x,t| ƒD] } | d K} | |j || ƒO} �qJW| d | K} x0t| d ƒD] } | d K} | |j || ƒO} �qˆW| St k �rä}ztd||fƒd‚WYdd}~XnXdS)NzAddress cannot be emptyú:r¶z At least %d parts expected in %rr±r%z%s in %rz%xriÿÿz!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %rrFrFrF) rr!r"r r=r(r@Ú _HEXTET_COUNTr‚Ú _parse_hextetr )r`rmrÃZ _min_partsr]Zipv4_intrµZ _max_partsZ skip_indexÚiZparts_hiZparts_loZ parts_skippedrdrrr rlls„    $                z_BaseV6._ip_int_from_stringcCs>|jj|ƒstd|ƒ‚t|ƒdkr4d}t||ƒ‚t|dƒS)NzOnly hex digits permitted in %rrz$At most 4 characters permitted in %rr)Ú _HEX_DIGITSrir r"rj)r`Z hextet_strr]rrr râÔs     z_BaseV6._parse_hextetc Cs¦d}d}d}d}xJt|ƒD]>\}}|dkrP|d7}|dkr>|}||krX|}|}qd}d}qW|dkr¢||}|t|ƒkr‚|dg7}dg|||…<|dkr¢dg|}|S) Nr%rr¹ÚrFrFrFrF)r¼r") r`ÚhextetsZbest_doublecolon_startZbest_doublecolon_lenZdoublecolon_startZdoublecolon_lenÚindexZhextetZbest_doublecolon_endrrr Ú_compress_hextetsîs.   z_BaseV6._compress_hextetsNcsZ|dkrt|jƒ}||jkr$tdƒ‚d|‰‡fdd„tdddƒDƒ}|j|ƒ}dj|ƒS) NzIPv6 address is too largez%032xcs&g|]}dtˆ||d…dƒ‘qS)z%xrr)rj)rÁr†)Úhex_strrr rÂ3sz/_BaseV6._string_from_ip_int..rrrrà)rjr(r9r r‚rèrº)r`rdrær)rér r{s   z_BaseV6._string_from_ip_intcsŒt|tƒrt|jƒ}nt|tƒr,t|jƒ}nt|ƒ}|j|ƒ}d|‰‡fdd„tdddƒDƒ}t|ttfƒr‚ddj |ƒ|j fSdj |ƒS) Nz%032xcsg|]}ˆ||d…‘qS)rr)rÁr†)rérr rÂKsz8_BaseV6._explode_shorthand_ip_string..rrrz%s/%drà) r4rr rJrr-rlr‚rNrºrH)rVrmrdrÃr)rér rU8s     z$_BaseV6._explode_shorthand_ip_stringcCs&|jddd…jddƒ}dj|ƒdS)Nr%ràrår±z .ip6.arparF)rWÚreplacerº)rVZ reverse_charsrrr rYPsz_BaseV6._reverse_pointercCs|jS)N)r8)rVrrr rÅYsz_BaseV6.max_prefixlencCs|jS)N)rG)rVrrr r7]sz_BaseV6.version)N)rrrrqrGÚ IPV6LENGTHr9rárÇrär8r®rsr°rlrârèr{rUrYrrrÅr7rrrr rßFs"    h  0  rßc@s°eZdZdZdd„Zedd„ƒZedd„ƒZed d „ƒZed d „ƒZ ed d„ƒZ ee j ƒdd„ƒƒZ edd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZdS)r r(rÈcCsrt|tƒr|j|ƒ||_dSt|tƒrF|j|dƒtj|dƒ|_dSt|ƒ}d|krbtd|ƒ‚|j |ƒ|_dS)NrrrzUnexpected '/' in %r) r4rjr^r(rÉr_r²r rrl)rVrrÊrrr r�hs     zIPv6Address.__init__cCs t|jƒS)N)rr()rVrrr rËŒszIPv6Address.packedcCs ||jjkS)N)rÌrÔ)rVrrr rŸ‘s zIPv6Address.is_multicastcst‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|kVqdS)Nr)rÁr†)rVrr rÎ¥sz*IPv6Address.is_reserved..)rÏrÌÚ_reserved_networks)rVr)rVr r œs zIPv6Address.is_reservedcCs ||jjkS)N)rÌr×)rVrrr r¡§szIPv6Address.is_link_localcCs ||jjkS)N)rÌÚ_sitelocal_network)rVrrr Ú is_site_local±s zIPv6Address.is_site_localcsHˆj}|dk r|jSt‡fdd„ˆjjDƒƒoFt‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|kVqdS)Nr)rÁr:)rVrr rÎÔsz)IPv6Address.is_private..c3s|]}ˆ|kVqdS)Nr)rÁr:)rVrr rÎÕs)Ú ipv4_mappedr¢rÏrÌrÐrÑrÒ)rVrïr)rVr r¢¿s zIPv6Address.is_privatecCs|j S)N)r¢)rVrrr r£ØszIPv6Address.is_globalcCs |jdkS)Nr)r()rVrrr r¤és zIPv6Address.is_unspecifiedcCs |jdkS)Nr%)r()rVrrr r¥ôs zIPv6Address.is_loopbackcCs |jd?dkrdSt|jd@ƒS)Nriÿÿlÿÿ)r(r )rVrrr rïÿs zIPv6Address.ipv4_mappedcCs4|jd?dkrdSt|jd?d@ƒt|jd@ƒfS)Né`i é@lÿÿ)r(r )rVrrr Úteredo s zIPv6Address.teredocCs$|jd?dkrdSt|jd?d@ƒS)Népi éPlÿÿ)r(r )rVrrr Ú sixtofours zIPv6Address.sixtofourN)r(rÈ)rrrrqr�rrrËrŸr r¡rîrØrÙr¢r£r¤r¥rïròrõrrrr r bs$    r c@s‚eZdZdd„Zdd„Zdd„Zdd„Zd d „Zej Z e d d „ƒZ e d d„ƒZ e dd„ƒZ e dd„ƒZe dd„ƒZe dd„ƒZdS)rcCsÞt|ttfƒr2tj||ƒt|jƒ|_|j|_ dSt|t ƒr–tj||dƒt |ƒdkrht|dƒ|_ n|j|_ t|dd�|_|jj |_ |jj |_ dSt|ƒ}tj||dƒt|dd�|_|jj |_ |jj |_ |jj |_ dS)Nrr%F)r)r4rÉrjr r�rr(r„r8rHrÚr"rŒr�r$)rVrr#rrr r�+s(        zIPv6Interface.__init__cCsd|j|jƒ|jjfS)Nz%s/%d)r{r(r„ra)rVrrr r|Cs zIPv6Interface.__str__c CsDtj||ƒ}| s|tkr|Sy |j|jkStk r>dSXdS)NF)r rvrQr„rI)rVrurÛrrr rvGs  zIPv6Interface.__eq__c CsNtj||ƒ}|tkrtSy|j|jkp4|j|jko4|Stk rHdSXdS)NF)r rwrQr„rI)rVrurÜrrr rwSs  zIPv6Interface.__lt__cCst|j|jt|jjƒfƒS)N)r}r(rHrjr„rJ)rVrrr r_szIPv6Interface.__hash__cCs t|jƒS)N)r r()rVrrr r-dszIPv6Interface.ipcCsd|j|jƒ|jfS)Nz%s/%s)r{r(rH)rVrrr r�hs zIPv6Interface.with_prefixlencCsd|j|jƒ|jfS)Nz%s/%s)r{r(rŒ)rVrrr r‘ms zIPv6Interface.with_netmaskcCsd|j|jƒ|jfS)Nz%s/%s)r{r(r�)rVrrr r’rs zIPv6Interface.with_hostmaskcCs|jdko|jjS)Nr)r(r„r¤)rVrrr r¤wszIPv6Interface.is_unspecifiedcCs|jdko|jjS)Nr%)r(r„r¥)rVrrr r¥{szIPv6Interface.is_loopbackN)rrrr�r|rvrwrrTrprrr-r�r‘r’r¤r¥rrrr r)s       rc@s.eZdZeZd dd„Zdd„Zedd„ƒZdS) rTcCsþtj||ƒt|ttfƒr&|}|j}n^t|tƒrT|d}t|ƒdkrL|dn|j}n0t|ƒ}|j |dƒ}t|ƒdkr~|dn|j}t |ƒ|_ |j |ƒ\|_ |_t|j ƒ}|t|j ƒ@|krâ|rÎtd|ƒ‚nt |t|j ƒ@ƒ|_ |j|jdkrú|j|_dS)Nrr%rz%s has host bits set)rNr�r4rjrÉr8rÚr"r$rlr rJr°rŒrHr rˆr‡)rVrrr#r½rÝrËrrr r��s(    zIPv6Network.__init__ccs@t|jƒ}t|jƒ}x&t|d|dƒD]}|j|ƒVq(WdS)Nr%)rjrJrCr‚rƒ)rVr„r…r†rrr r‡Îs  zIPv6Network.hostscCs|jjo|jjS)N)rJrîrC)rVrrr rîÚs zIPv6Network.is_site_localN)T) rrrr rƒr�r‡rrrîrrrr r€s > rc@sêeZdZedƒZedƒZedƒedƒedƒedƒedƒedƒed ƒed ƒed ƒedƒg Zed ƒed ƒedƒedƒedƒedƒgZedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒed ƒgZed!ƒZ d"S)#Ú_IPv6Constantsz fe80::/10zff00::/8z::1/128z::/128z ::ffff:0:0/96z64:ff9b:1::/48z100::/64z 2001::/23z 2001:db8::/32z 2002::/16zfc00::/7z 2001:1::1/128z 2001:1::2/128z 2001:3::/32z2001:4:112::/48z 2001:20::/28z 2001:30::/28z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z fec0::/10N) rrrrr×rÔrÐrÒrìrírrrr röês6          rö)T)"Ú __version__rØrÆrër rr rrrrrr$r.r2r;rErMrSrTÚtotal_orderingr5rNrgr rrrÞrÌrßr rrrörrrr Ú sV #716:EE Sa&HWj-