python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
ipaddress.cpython-312.opt-2.pyc

ˑe$F	dZddlZdZdZGddeZGddeZd	Zd1d
ZdZ	dZ
d
ZdZdZ
dZdZdZdZdZGddZdaej*GddeZej*GddeZGddZee_GddZGdd eeZGd!d"eZGd#d$eeZGd%d&Zee_ee_Gd'd(ZGd)d*eeZ Gd+d,e Z!Gd-d.eeZ"Gd/d0Z#e#e _e#e"_y)2z1.0N ceZdZy)AddressValueErrorN__name__
__module____qualname__=/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/ipaddress.pyrr/rrceZdZy)NetmaskValueErrorNrrrr
rrrrrc		t|S#ttf$rYnwxYw	t|S#ttf$rYnwxYwt	|d)Nz. does not appear to be an IPv4 or IPv6 address)IPv4AddressrrIPv6Address
ValueErroraddresss r

ip_addressrsl
7##01


7##01

{"PQ
RR
  
/AAc		t||S#ttf$rYnwxYw	t||S#ttf$rYnwxYwt	|d)Nz. does not appear to be an IPv4 or IPv6 network)IPv4NetworkrrIPv6Networkr)rstricts  r

ip_networkr9sp
7F++01


7F++01

{"PQ
RRs!!1AAc		t|S#ttf$rYnwxYw	t|S#ttf$rYnwxYwt	|d)Nz0 does not appear to be an IPv4 or IPv6 interface)
IPv4Interfacerr
IPv6Interfacerrs r
ip_interfacer!Vsl(
W%%01


W%%01

{"RS
TTrcX		|jdS#t$rtdwxYw)Nz&Address negative or too large for IPv4to_bytes
OverflowErrorrrs r
v4_int_to_packedr'xs;C""CABBC)cX		|jdS#t$rtdwxYw)Nz&Address negative or too large for IPv6r$rs r
v6_int_to_packedr+s;C##CABBCr(ct	t|jd}t|dkDrtd||S)N/zOnly one '/' permitted in )strsplitlenr)raddrs  r
_split_optional_netmaskr3s<Kw<c"D
4y1}"<WK HIIKrc#K	t|}t|x}}|D](}|j|jdzk7r||f|}|}*||fywN)iternext_ip)	addressesitfirstlastips     r
_find_address_ranger?sg
iB8ED
66TXX\!+E	
+sAAcT	|dk(r|St|||dz
zjS)Nrr6)min
bit_length)numberbitss  r
_count_righthand_zero_bitsrEs6	{tvg*66899rc#XK	t|trt|tstd|j|jk7rt|d|d||kDrt	d|jdk(rt
}n!|jdk(rt}nt	d|j}|j}|j}||kr`tt||||z
dzjdz
}||||z
f}||d|zz
}|dz
|jk(ry||kr_yyw)	Nz1first and last must be IP addresses, not networks and  are not of the same versionz*last IP address must be greater than firstr#zunknown IP versionr6)
isinstance_BaseAddress	TypeErrorversionrrr_max_prefixlenr9rArErB	_ALL_ONES)r<r=r>ip_bits	first_intlast_intnbitsnets        r
summarize_address_rangerUs-2|
,
l
+KLL}}$&'	't|EFF}}
	!	
-..""G		IxxH
x
.y'B	)A-99;a?A)Wu_-.	Q%Z	q=BLL(x
sD%D*(D*c#ZK	t|}i}|rU|j}|j}|j|}||||<n||k7r||=|j	||rUd}t|j
D]$}||j|jk\r||}&ywN)listpopsupernetgetappendsortedvaluesbroadcast_address)r:to_mergesubnetsrTrZexistingr=s       r
_collapse_addresses_internalrcs0IHG
lln<<>;;x( #GH
_!OOH%Dgnn&'%%)>)>>	s
A%B+(AB+c	g}g}g}|D]}t|trD|r0|dj|jk7rt|d|dd|j	|X|j
|jk(rO|r0|dj|jk7rt|d|dd	|j	|j|r0|dj|jk7rt|d|dd|j	|tt|}|r.t|D] \}}|jt||"t||zS#t$r|j	|jYwxYw)NrGrH)rJrK_versionrLr\
_prefixlenrNr>AttributeErrornetwork_addressr]setr?extendrUrc)r:addrsipsnetsr>r<r=s       r
collapse_addressesro0s"
E
C
Db,'s2w''2;;6!#SW!.//JJrN
]]b//
/s2w''2;;6!#SW!.//
/

255!R))R[[8!#T"X!/00KKO%*S
C.s3	?KE4LL0=>	?(55!"
/

2--.
/s.E""$F
	F
c	t|tr|jSt|tr|j	St
SrW)rJ_BaseNetwork_get_networks_keyrK_get_address_keyNotImplemented)objs r
get_mixed_type_keyrvfsA"#|$$$&&	C	&##%%rceZdZ	dZedZedZedZedZdZ	dZ
edZed	Z
ed
ZedZedZed
ZdZy)_IPAddressBaserc$	|jSrW)_explode_shorthand_ip_stringselfs r
explodedz_IPAddressBase.explodedsH0022rc	t|SrWr/r{s r

compressedz_IPAddressBase.compressedsI4yrc$	|jSrW)_reverse_pointerr{s r
reverse_pointerz_IPAddressBase.reverse_pointers	$$&&rc6dt|fz}t|)Nz%200s has no version specifiedtypeNotImplementedErrorr|msgs  r
rMz_IPAddressBase.versions.$t*>!#&&rc|dkrd}t|||jfz||jkDr'd}t|||j|jfzy)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrfrOrN)r|rrs   r
_check_int_addressz!_IPAddressBase._check_int_addresssgQ;AC#C7DMM*B$BCCT^^#FC#C7D4G4G+/==+:%:;
;$rc`t|}||k7rd}t|||||jfzy)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r1rrf)r|rexpected_lenaddress_lenrs     r
_check_packed_addressz$_IPAddressBase._check_packed_addresssG'l,&JC#C7K+7+H%HI
I'rc<	|j|j|z	zSrW)rO)cls	prefixlens  r
_ip_int_from_prefixz"_IPAddressBase._ip_int_from_prefixs!	}}

 :;;rc	t||j}|j|z
}||z	}d|zdz
}||k7r1|jdz}|j|d}d}t||z|S)Nr6bigz&Netmask pattern %r mixes zeroes & ones)rErNr%r)	rip_inttrailing_zeroesrleading_onesall_onesbyteslendetailsrs	         r
_prefix_from_ip_intz"_IPAddressBase._prefix_from_ip_ints
	5V585G5GI&&8	0Na'8#))Q.Hooh6G:CS7]++rc$d|z}t|d)Nz%r is not a valid netmask)r)rnetmask_strrs   r
_report_invalid_netmaskz&_IPAddressBase._report_invalid_netmasks)K7$$.rc	|jr|js|j|	t|}dcxkr|j
ksn|j||S#t$r|j|YFwxYwNr)isasciiisdigitrintrrN)r
prefixlen_strrs   r
_prefix_from_prefix_stringz)_IPAddressBase._prefix_from_prefix_strings
	%%'M,A,A,C''
6	7M*IY4#"4"44''
6		7''
6	7sA))BBc,		|j|}	|jS#t$r|j|Y.wxYw#t$rYnwxYw|j
z}	|j|S#t$r|j|YywxYwrW)_ip_int_from_stringrrrrrO)rip_strrs   r
_prefix_from_ip_stringz%_IPAddressBase._prefix_from_ip_strings
		0,,V4F	**622!	0''/	0			#--	0**622	0''/	0s2&AAA	AA%A66BBc	t|ttfr||jfSt|tst|}t
|dkDr|S|d|jfS)Nr6r)rJbytesrrNtupler3r1)rrs  r
_split_addr_prefixz!_IPAddressBase._split_addr_prefixsf	gs|,C....'5).g6Gw<!Nqz3----rc2|jt|ffSrW)	__class__r/r{s r

__reduce__z_IPAddressBase.__reduce__-s~~D	|++rN)rr	r
	__slots__propertyr}rrrMrrclassmethodrrrrrrrrrr
rxrxsI
33'''';I
<
<0//000B...,rrxc`eZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
fdZxZS)
rKrc|jSrWr9r{s r
__int__z_BaseAddress.__int__>sxxrc	|j|jk(xr|j|jk(S#t$r	tcYSwxYwrW)r9rfrhrtr|others  r
__eq__z_BaseAddress.__eq__AsF	"HH		)8

7
9	"!!	"s36AAct|tstS|j|jk7rt	|d|d|j
|j
k7r|j
|j
kSyNrGrHF)rJrKrtrfrLr9rs  r
__lt__z_BaseAddress.__lt__Hs_%.!!==ENN*!5*+
+88uyy 88eii''rcht|tstS|jt||zSrWrJrrtrrs  r
__add__z_BaseAddress.__add__T*%%!!~~c$i%/00rcht|tstS|jt||z
SrWrrs  r
__sub__z_BaseAddress.__sub__YrrcL|jjdt|dSN()rrr/r{s r
__repr__z_BaseAddress.__repr__^>>22CI>>rcJt|j|jSrW)r/_string_from_ip_intr9r{s r
__str__z_BaseAddress.__str__as4++DHH566rcPttt|jSrW)hashhexrr9r{s r
__hash__z_BaseAddress.__hash__dsCDHH
&''rc|j|fSrWrfr{s r
rsz_BaseAddress._get_address_keygs

t$$rc4|j|jffSrW)rr9r{s r
rz_BaseAddress.__reduce__js~~{**rc	|r|ddk(rtt||Stddl}|j	datj|}|st||S|j\}}}|dk(r|jdk(rd}nd}|dk(r
|j}n|jdz}|r||dzd	z
z
}|r|d
z
}tt||d|||S)Nresrz(#?)(_?)([xbnX])nr#bxr6r.0)formatr/_address_fmt_rerecompile	fullmatchsuper
__format__groupsrfrNr)	r|fmtrm	alternategroupingfmt_basepadlenrs	        r
rz_BaseAddress.__format__ms
	c"gn#d)S))" jj);<O%%c*7%c**()
%	8Xs?}}!s?((F((A-FfkAo%FaKFc$iI;axz(!LMMr)rr	r
rrrrrrrrrrsrr
__classcell__rs@r
rKrK3sMI"1
1
?7(%+/N/NrrKceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jdZe
jdZed
ZedZedZedZedZedZdZdZdZd#dZd#dZedZedZdZ dZ!edZ"edZ#edZ$ed Z%ed!Z&ed"Z'y)$rqcL|jjdt|dSrrr{s r
rz_BaseNetwork.__repr__rrc8d|j|jfzSN%s/%d)rirr{s r
rz_BaseNetwork.__str__s$..???rc#K	t|j}t|j}t|dz|D]}|j	|ywr5rrir_range_address_classr|network	broadcastrs    r
hostsz_BaseNetwork.hostssX	d**+../	w{I.	)A%%a((	)sAAc#Kt|j}t|j}t||dzD]}|j	|ywr5rrs    r
__iter__z_BaseNetwork.__iter__sQd**+../	w	A
.	)A%%a((	)sAAct|j}t|j}|dk\r'||z|kDrtd|j	||zS|dz
}||z|krtd|j	||zS)Nrzaddress out of ranger6)rrir_
IndexErrorr)r|rrrs    r
__getitem__z_BaseNetwork.__getitem__sd**+../	6{Y& !788&&w{33
FA1}w& !788&&y1}55rcLt|tstS|j|jk7rt	|d|d|j
|j
k7r|j
|j
kS|j|jk7r|j|jkSyr)rJrqrtrfrLrinetmaskrs  r
rz_BaseNetwork.__lt__s%.!!==ENN*!5*+
+5#8#88''%*?*???<<5==(<<%--//rc	|j|jk(xrF|j|jk(xr+t|jt|jk(S#t$r	t
cYSwxYwrW)rfrirrrhrtrs  r
rz_BaseNetwork.__eq__sk	"MMU^^3<((E,A,AA<%U]]);;
=	"!!	"sA A##A54A5cjtt|jt|jzSrW)rrrirr{s r
rz_BaseNetwork.__hash__s&C,,-DLL0AABBrc|j|jk7ryt|try|j|jjz|j
jk(SNF)rfrJrqr9rrirs  r
__contains__z_BaseNetwork.__contains__sN==ENN*e\*99t||///43G3G3K3KKKrc	|j|vxs.|j|vxs|j|vxs|j|vSrWrir_rs  r
overlapsz_BaseNetwork.overlapssQ8##u,7""e+
6%%-5++t3	7rcv|jt|jt|jzSrW)rrrihostmaskr{s r
r_z_BaseNetwork.broadcast_addresss3""3t';';#<#&t}}#5$67	7rcd|jt|j|jzSrW)rrrrOr{s r
rz_BaseNetwork.hostmasks%""3t||#4t~~#EFFrc8d|j|jfzSr)rirgr{s r
with_prefixlenz_BaseNetwork.with_prefixlens$..@@@rc8|jd|jSNr-)rirr{s r
with_netmaskz_BaseNetwork.with_netmasks..==rc8|jd|jSr)rirr{s r

with_hostmaskz_BaseNetwork.with_hostmasks..

>>rc`	t|jt|jz
dzSr5)rr_rir{s r

num_addressesz_BaseNetwork.num_addressess+44))*S1E1E-FFJJrc6dt|fz}t|)Nz%%200s has no associated address classrrs  r
rz_BaseNetwork._address_classs
6d
E!#&&rc|jSrW)rgr{s r
rz_BaseNetwork.prefixlensrc#K	|j|jk(st|d|dt|tstd|z|j	|st|d|||k(ry|j
|jd|j}|j\}}||k7rv||k7rq|j	|r||j\}}n=|j	|r||j\}}ntd|d|d|||k7r||k7rq||k(r|y||k(r|ytd|d|d|w)	NrGrHz%s is not a network objectz not contained in r-z Error performing exclusion: s1: z s2: z other: )rfrLrJrq	subnet_ofrrrirraAssertionError)r|rs1s2s    r
address_excludez_BaseNetwork.address_excludesY"	F}}.!5*+
+%.85@AAt$EFFD=5+@+@+0??!<=BEkbEkr"B$B%&("e&566EkbEk;H
5[H!"$b%"12
2sD(E+(Ec*	|j|jk7rt|d|d|j|jkry|j|jkDry|j|jkry|j|jkDryy)NrGz are not of the same typerer6r)rfrLrirrs  r
compare_networksz_BaseNetwork.compare_networksgs	@==ENN*!5*+
+%"7"77%"7"77<<%--'<<%--'rcJ	|j|j|jfSrW)rfrirr{s r
rrz_BaseNetwork._get_networks_keys$	

t33T\\BBrNc#K	|j|jk(r|y|9||jkrtd|dk7rtd||jz
}|dkrtd|j|z}||jkDrtd||fzt|j}t|j
dz}t|jdz|z	}t|||D]}|j||f}|yw)Nznew prefix must be longerr6(cannot set prefixlen_diff and new_prefixrzprefix length diff must be > 0z0prefix length diff %d is invalid for netblock %s)	rgrNrrrir_rrr)	r|prefixlen_diff
new_prefix
new_prefixlenstartendstepnew_addrcurrents	         r
raz_BaseNetwork.subnetss&	2??d111J!DOO+ !<==" !KLL'$//9NA=>>.8
4...B!4F))*
*D(()$(()A-DMM"Q&>9eS$/	Hnnh
%>?GM	sDD
cv	|jdk(r|S|9||jkDrtd|dk7rtd|j|z
}|j|z
}|dkrtd|j|fz|jt	|j
t	|j|zz|fS)Nrznew prefix must be shorterr6r"z;current prefixlen is %d, cannot have a prefixlen_diff of %d)rgrrrrrir)r|r#r$r%s    r
rZz_BaseNetwork.supernets	(??aK!DOO+ !=>>" !KLL!__z9N7
1M012
2~~$$%T\\):n)LM	rc`	|jjxr|jjSrW)riis_multicastr_r{s r
r-z_BaseNetwork.is_multicasts1	$$114&&33	5rc	|j|jk7rt|d|d|j|jkxr|j|jk\S#t$rtd|d|wxYw)NrGrHz*Unable to test subnet containment between )rfrLrir_rh)ars  r

_is_subnet_ofz_BaseNetwork._is_subnet_ofs	4zzQZZ'1#U1#-I JKK%%):)::?''1+>+>>
@	4''(cqc34
4	4sAA  A;c(	|j||SrWr0rs  r
rz_BaseNetwork.subnet_ofs?!!$..rc(	|j||SrWr2rs  r
supernet_ofz_BaseNetwork.supernet_ofsA!!%..rc`	|jjxr|jjSrW)riis_reservedr_r{s r
r6z_BaseNetwork.is_reserved1	$$003&&22	4rc`	|jjxr|jjSrW)ri
is_link_localr_r{s r
r9z_BaseNetwork.is_link_local+s1	$$225&&44	6rcV	tfdjjDS)Nc3ZK|]"}j|vxrj|v$ywrWr).0priv_networkr|s  r
	<genexpr>z*_BaseNetwork.is_private.<locals>.<genexpr>?s>J#''<7:))\9:Js(+any
_constants_private_networksr{s`r

is_privatez_BaseNetwork.is_private6s2	J'+'H'HJJ	Jrc	|jSrWrCr{s r
	is_globalz_BaseNetwork.is_globalC	??""rc`	|jjxr|jjSrW)riis_unspecifiedr_r{s r
rIz_BaseNetwork.is_unspecifiedNs1	$$336&&55	7rc`	|jjxr|jjSrW)riis_loopbackr_r{s r
rKz_BaseNetwork.is_loopbackZr7r)r6N)(rr	r
rrrrrrrrrr		functoolscached_propertyr_rrrrrrrrrrrrrarZr-staticmethodr0rr4r6r9rCrFrIrKrrr
rqrqs?@
))6
"C
L777GGAA>>??KK''I2V.`C3j'R	5	5	4	4//	4	466
J
J##	7	7	4	4rrqceZdZgZy)_BaseConstantsN)rr	r
rBrrr
rPrPgsrrPceZdZ	dZdZdezdz
ZeZiZdZ	e
dZe
dZe
dZ
e
d	Zd
ZedZedZy
)_BaseV4rr#r.r6ct|SrWrr{s r
rzz$_BaseV4._explode_shorthand_ip_strings4yrcn	||jvrxt|tr+|}d|cxkr|jks&n|j	|n	|j|}t|j|}||f|j|<|j|S#t$r|j|}YVwxYwr)
_netmask_cacherJrrNrrrrrrrargrrs    r

_make_netmaskz_BaseV4._make_netmasks	c(((#s#	Y<#*<*<<//	:@ # > >s CI
"#"9"9)"DEG&-y&8Cs#!!#&&
)@!$ : :3 ?I@sBB43B4c	|std|jd}t|dk7rtd|z	tj	t|j|dS#t$r}t|d|dd}~wwxYw)NAddress cannot be empty.r#zExpected 4 octets in %rr in )rr0r1r
from_bytesmap_parse_octetr)rroctetsexcs    r
rz_BaseV4._ip_int_from_strings	#$=>>c"v;!#$=$FGG	J>>#c&6&6"?GG	J##v$>?TI	Js)A''	B0BBc6	|std|jr|jsd}t||zt|dkDrd}t||z|dk7r|ddk(rd}t||zt	|d}|d	kDrtd
|z|S)NzEmpty octet not permittedz#Only decimal digits permitted in %rz$At most 3 characters permitted in %rrrz%Leading zeros are not permitted in %r
zOctet %d (> 255) not permitted)rrrr1r)r	octet_strr	octet_ints    r
r_z_BaseV4._parse_octets	899!!#	(9(9(;7CS9_--y>A8CS9_--	! 39CS9_--	2&	s?=	IJJrc	b	djtt|jddS)Nr[r#r)joinr^r/r%)rrs  r
rz_BaseV4._string_from_ip_ints*	xxCE!:;<<rcl	t|jdddd}dj|dzS)Nr[rez
.in-addr.arpa)r/r0ri)r|reverse_octetss  r
rz_BaseV4._reverse_pointers8	
T-dd3xx'/99rc|jSrWrNr{s r

max_prefixlenz_BaseV4.max_prefixlen"""rc|jSrWrr{s r
rMz_BaseV4.version}}rN)rr	r
rrf
IPV4LENGTHrOrNrUrzrrXrr_rrrrnrMrrr
rRrRosIHJ!#INN''2JJ2!!F
=
=:##rrRceZdZ	dZdZedZedZeejdZ
eejdZedZedZ
ed	Zed
Zy)r)r9__weakref__c8	t|tr|j|||_yt|tr-|j|dtj
||_yt|}d|vrtd||j||_y)Nr#r-Unexpected '/' in )
rJrrr9rrr]r/rrr|raddr_strs   r
__init__zIPv4Address.__init__s
	gs###G,DHgu%&&w2~~g.DHw<(?#&8$DEE++H5rc.	t|jSrW)r'r9r{s r
packedzIPv4Address.packed%8))rc4	||jjvSrW)rA_reserved_networkr{s r
r6zIPv4Address.is_reserved*s	t8888rcV	tfdjjDS)Nc3&K|]}|v
ywrWrr<rTr|s  r
r>z)IPv4Address.is_private.<locals>.<genexpr>?L343;Lr?r{s`r
rCzIPv4Address.is_private5s%	L$//*K*KLLLrcP||jjvxr
|jSrW)rA_public_networkrCr{s r
rFzIPv4Address.is_globalAs%4??:::R4???RRrc4	||jjvSrWrA_multicast_networkr{s r
r-zIPv4Address.is_multicastF	t9999rc6	||jjk(SrW)rA_unspecified_addressr{s r
rIzIPv4Address.is_unspecifiedQs	t;;;;rc4	||jjvSrW)rA_loopback_networkr{s r
rKzIPv4Address.is_loopback\s	t8888rc4	||jjvSrWrA_linklocal_networkr{s r
r9zIPv4Address.is_link_localf	t9999rN)rr	r
rryrr{r6rL	lru_cacherCrFr-rIrKr9rrr
rrs9&I!6F**99YMMYSS::<<99::rrceZdZdZej
dZdZdZdZ	dZ
ejZe
dZe
dZe
d	Ze
d
Zy)rc|j|\}}tj||t||fd|_|jj
|_|jj|_yNF)r)rrryrrrrgr|rr2masks    r
ryzIPv4Interface.__init__sZ,,W5
dT4("D$<>||++,,11rc.|jjSrWrrr{s r
rzIPv4Interface.hostmask{||$$$rcVd|j|j|jfzSrrr9rgr{s r
rzIPv4Interface.__str__s,$22488<//++	+rctj||}|tus|s|S	|j|jk(S#t$rYywxYwr)rrrtrrhr|r
address_equals   r
rzIPv4Interface.__eq__P#**47
N*-  	<<5==00			=	A	A	ctj||}|turtS	|j|jkxs|j|jk(xr|S#t$rYywxYwr)rrrtrrhr|raddress_lesss   r
rzIPv4Interface.__lt__sl"))$6>)!!	LL5==0CLLEMM1Bl
D		s7A	A*)A*ct|j|jt|jj
fSrWrr9rgrrrir{s r
rzIPv4Interface.__hash__+TXXtDLL4P4P0QRSSrc,t|jSrW)rr9r{s r
r>zIPv4Interface.ip488$$rcV|j|jd|jSrrr{s r
rzIPv4Interface.with_prefixlen%22488<//+	+rcV|j|jd|jSrrr9rr{s r
rzIPv4Interface.with_netmask%22488<,,(	(rcV|j|jd|jSrrr9rr{s r
rzIPv4Interface.with_hostmask%22488<--)	)rN)rr	r
ryrLrMrrrrrrxrrr>rrrrrr
rrqs2%%+

T **J
%%++(())rrcReZdZ	eZddZeejdZ	y)rc	|j|\}t|_|j|\|_|_t
|j}|t
|jz|k7r6|rtd|zt|t
|jz|_|j
|jdz
k(r|j|_
y|j
|jk(rfd|_
yy)N%s has host bits setr6ctgSrW)rr2sr
<lambda>z&IPv4Network.__init__.<locals>.<lambda>+d"3!4r)rrrirXrrgrrrNrrr|rrrr{r2s     @r
ryzIPv4Network.__init__s!	D,,W5
d*40(,(:(:4(@%doT))*C%%/ !7$!>??'2636t||3D4E(F$??t22Q67DJ
__!4!4
54DJ6rc	|jtdvxr|jtdvxr
|jS)N
100.64.0.0/10)rirr_rCr{s r
rFzIPv4Network.is_globalsO	))[-IIK**k/.JJL$OO#	%rNT)
rr	r
rrryrrLrrFrrr
rrs;	!N25hY
%
%rrc4eZdZedZedZedZedZededededededed	ed
ededed
edededgZedZ	e
dZy)_IPv4Constantsz169.254.0.0/16z127.0.0.0/8z224.0.0.0/4rz	0.0.0.0/8z
10.0.0.0/8z
172.16.0.0/12z192.0.0.0/29z192.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/24z240.0.0.0/4z255.255.255.255/32z0.0.0.0N)rr	r
rrrrrrBr~rrrrr
rrs$%56#M2$]3!/2O	K L!M"$%O$N#$%N#$%O$%&$%M"()
"$M2&y1rrceZdZ	dZdZdezdz
ZdZedZ	eZ
iZedZ
edZed	Zed
ZeddZd
ZdZedZedZedZy)_BaseV6rrIr.r6r0123456789ABCDEFabcdefc,	||jvrwt|tr+|}d|cxkr|jks%n|j	|n|j|}t
|j|}||f|j|<|j|Sr)rUrJrrNrrrrrVs    r
rXz_BaseV6._make_netmask=s	c(((#s#	Y<#*<*<<//	:::3?	!#"9"9)"DEG&-y&8Cs#!!#&&rcH	|std|jd}d}t||krd||fz}t|d|dvrU	t|j	j
}|j
d|d	z	d
zz|j
d|d
zz|jdz}t||kDrd|dz
|fz}t|d}tdt|dz
D]}	||	r	|d
|z}t||	}||}
t||z
dz
}|ds|
dz}
|
rd}t||z|ds|dz}|rd}t||z|j|
|zz
}|dkrd}t||jdz
|fzt||jk7rd}t||j|fz|dsd}t||z|dsd}t||zt|}
d}d}	d}
t|
D]}	|
d	z}
|
|j||	z}
 |
d	|zz}
t|dD]}	|
d	z}
|
|j||	z}
 |
S#t$r}t|d|dd}~wwxYw#t$r}t|d|dd}~wwxYw)NrZ:rcz At least %d parts expected in %rr[rer\%xr*r6z!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 %r)rr0r1rrYr9r\
_HEXTET_COUNTr
_parse_hextetr)rrparts
_min_partsripv4_intra
_max_parts
skip_indexiparts_hiparts_lo
parts_skippedrs              r
rz_BaseV6._ip_int_from_stringQsC	#$=>>S!
u:
"4
F7KKC#C((%)
N&uyy{377
LL(b.F!:;<LLF!234
&&*
u:
"5Av8NNC#C((
q#e*q.)	A8)<vEC+C00

	!!H5zJ.2H8A
LC+C&L999A
MC+C&L99--H1DEMq G's/@/@/BF.K(KLL
5zS...D's/@/@&.I(IJJ8H'f559I'f555zHHM	JF8_
62
#++E!H55
6
rM))FH9a(
62
#++E!H55
6MO%
N'c6(BCM
NP	J##v$>?TI	Js1
#I :A%J 	I?)I::I?	J!JJ!c	|jj|std|zt|dkDrd}t||zt	|dS)NzOnly hex digits permitted in %rr#z$At most 4 characters permitted in %rr*)_HEX_DIGITS
issupersetrr1r)r
hextet_strrs   r
rz_BaseV6._parse_hextets\	))*5>KLLz?Q8CS:-..:r""rc	d}d}d}d}t|D]%\}}|dk(r|dz
}|dk(r|}||kDs|}|}"d}d}'|dkDr*||z}|t|k(r|dgz
}dg||||dk(rdg|z}|S)Nrerrr6)	enumerater1)	rhextetsbest_doublecolon_startbest_doublecolon_lendoublecolon_startdoublecolon_lenindexhextetbest_doublecolon_ends	         r
_compress_hextetsz_BaseV6._compress_hextetss	"$ &w/	'ME6}1$$*(-%"%99+:(->*"#$&!	' !#$:$8%9 $s7|3B4DF4G*+?@%*$.rNc
	|t|j}||jkDrtdd|z}t	dddDcgc]}dt|||dzdz}}|j|}dj
|Scc}w)	NzIPv6 address is too large%032xrrr#rr*r)rr9rOrrrri)rrhex_strrrs     r
rz_BaseV6._string_from_ip_ints	>\FCMM!899F";@B?Ka4#ga!nb11KK''0xx  LsBc	t|trt|j}n1t|trt|j
}nt|}|j
|}d|z}tdddDcgc]
}|||dz}}t|ttfr ddj||jfzSdj|Scc}w)Nrrrr#rr)rJrr/rir r>rrrqrirg)r|rrrrrs      r
rzz$_BaseV6._explode_shorthand_ip_strings	dK(--.F
m
,\FYF))&1F").q"a9A1Q399d\=9:chhuot???xx:s>Ccp	|jdddjdd}dj|dzS)Nrerrr[z	.ip6.arpa)r}replaceri)r|
reverse_charss  r
rz_BaseV6._reverse_pointer2s<	


dd+33C<
xx
&44rcn	|jd\}}}|sd}||fS|rd|vrtd|z||fS)N%zInvalid IPv6 address: "%r")	partitionr)rr2sepscope_ids    r
_split_scope_idz_BaseV6._split_scope_id;sZ
	%..s3c8HX~SH_#$@6$IJJX~rc|jSrWrmr{s r
rnz_BaseV6.max_prefixlenOrorc|jSrWrr{s r
rMz_BaseV6.versionSrqrrW)rr	r
rrf
IPV6LENGTHrOr	frozensetrrNrUrrXrrrrrzrrNrrrnrMrrr
rr)sIHJ!#IM45KNN''&eJeJN##2--^!!2*5&##rrc2eZdZ	dZdZfdZdZfdZedZ	edZ
edZed	Zed
Z
edZeej dZed
ZedZedZedZedZedZxZS)r)r9	_scope_idrtc	t|tr |j|||_d|_yt|t
r5|j
|dtj|d|_d|_yt|}d|vrtd||j|\}|_|j||_y)Nr*rr-rv)rJrrr9rrrr]r/rrrrws   r
ryzIPv6Address.__init__^s	"gs###G,DH!DNgu%&&w3~~gu5DH!DNw<(?#&8$DEE#'#7#7#A $.++H5rc`t|}|jr|dz|jzS|S)Nr)rrr)r|rrs  r
rzIPv6Address.__str__s-"04v|dnn,JFJrcDt|j|jfSrW)rr9rr{s r
rzIPv6Address.__hash__sTXXt~~.//rcxt||}|turtS|sy|jt	|ddk(S)NFr)rrrtrgetattr)r|rrrs   r
rzIPv6Address.__eq__s=u-
N*!!~~T!BBBrc	|jSrW)rr{s r
rzIPv6Address.scope_ids	~~rc.	t|jSrW)r+r9r{s r
r{zIPv6Address.packedr|rc4	||jjvSrWrr{s r
r-zIPv6Address.is_multicastrrcV	tfdjjDS)Nc3&K|]}|v
ywrWr)r<rr|s  r
r>z*IPv6Address.is_reserved.<locals>.<genexpr>sI419Ir)r@rA_reserved_networksr{s`r
r6zIPv6Address.is_reserveds%	Idoo&H&HIIIrc4	||jjvSrWrr{s r
r9zIPv6Address.is_link_localrrc4	||jjvSrW)rA_sitelocal_networkr{s r

is_site_localzIPv6Address.is_site_locals		t9999rc	j}||jStfdjjDS)Nc3&K|]}|v
ywrWrrs  r
r>z)IPv6Address.is_private.<locals>.<genexpr>rr)ipv4_mappedrCr@rArB)r|rs` r
rCzIPv6Address.is_privatesB	&&")))L$//*K*KLLLrc	|jSrWrEr{s r
rFzIPv6Address.is_globalrGrc"	|jdk(Srrr{s r
rIzIPv6Address.is_unspecified	xx1}rc"	|jdk(Sr5rr{s r
rKzIPv6Address.is_loopbackr
rcZ	|jdz	dk7ryt|jdzS)Nrrr9rr{s r
rzIPv6Address.ipv4_mappeds0	
HHNv%488j011rc	|jdz	dk7ryt|jdz	dzt|jdzfS)N`i @r
rr{s r
teredozIPv6Address.teredosN	
HHNz)TXX^z9:TXXI
235	5rc`	|jdz	dk7ryt|jdz	dzS)Npi Pr
rr{s r
	sixtofourzIPv6Address.sixtofour!s4	
HHO&DHHNj899r)rr	r
rryrrrrrr{r-r6r9rrLrrCrFrIrKrrrrrs@r
rrXs=93I&6PK0C		**::JJ::::YMM##
2
255
:
:rrceZdZdZej
dZfdZdZdZ	dZ
ejZe
dZe
dZe
d	Ze
d
Ze
dZe
dZxZS)
r c|j|\}}tj||t||fd|_|jj
|_|jj|_yr)rrryrrrrgrs    r
ryzIPv6Interface.__init__1rrc.|jjSrWrr{s r
rzIPv6Interface.hostmask9rrc>dt||jfzSr)rrrg)r|rs r
rzIPv6Interface.__str__=s%%'/+//++	+rctj||}|tus|s|S	|j|jk(S#t$rYywxYwr)rrrtrrhrs   r
rzIPv6Interface.__eq__Arrctj||}|tur|S	|j|jkxs|j|jk(xr|S#t$rYywxYwr)rrrtrrhrs   r
rzIPv6Interface.__lt__Msl"))$6>)	LL5==0CLLEMM1Bl
D		s7A	A&%A&ct|j|jt|jj
fSrWrr{s r
rzIPv6Interface.__hash__Yrrc,t|jSrW)rr9r{s r
r>zIPv6Interface.ip^rrcV|j|jd|jSrrr{s r
rzIPv6Interface.with_prefixlenbrrcV|j|jd|jSrrr{s r
rzIPv6Interface.with_netmaskgrrcV|j|jd|jSrrr{s r
rzIPv6Interface.with_hostmasklrrcP|jdk(xr|jjSr)r9rrIr{s r
rIzIPv6Interface.is_unspecifiedqsxx1}<!<!<<rcP|jdk(xr|jjSr5)r9rrKr{s r
rKzIPv6Interface.is_loopbackusxx1}9!9!99r)rr	r
ryrLrMrrrrrrxrrr>rrrrIrKrrs@r
r r /s2%%+

T **J
%%++(())==::rr c0eZdZ	eZddZdZedZy)rc	|j|\}t|_|j|\|_|_t
|j}|t
|jz|k7r6|rtd|zt|t
|jz|_|j
|jdz
k(r|j|_
y|j
|jk(rfd|_
yy)Nrr6ctgSrW)rrsr
rz&IPv6Network.__init__.<locals>.<lambda>rr)rrrirXrrgrrrNrrrs     @r
ryzIPv6Network.__init__s	<,,W5
d*40(,(:(:4(@%doT))*C%%/ !7$!>??'2636t||3D4E(F$??t22Q67DJ
__ 3 3
34DJ4rc#K	t|j}t|j}t|dz|dzD]}|j	|ywr5rrs    r
rzIPv6Network.hostss\	d**+../	w{IM2	)A%%a((	)sAAc`	|jjxr|jjSrW)rirr_r{s r
rzIPv6Network.is_site_locals1		$$225&&44	6rNr)	rr	r
rrryrrrrrr
rrzs-	!N.5`
)66rrceZdZedZedZededededededed	ed
ededg
Zeded
edededededededededededededgZedZy)_IPv6Constantsz	fe80::/10zff00::/8z::1/128z::/128z
::ffff:0:0/96z100::/64z	2001::/23z2001:2::/48z
2001:db8::/32z2001:10::/28zfc00::/7z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z	fec0::/10N)	rr	r
rrrrBrrrrr
r*r*s$[1$Z0	IHO$JK M"O$N#JK 
	F[3II 6IJ 7JZ!8JZ!8JZ!8JZ!8J	%[1rr*r)$__version__rLrrrrrrrrr!r'r+r3r?rErUrcrorvrxrtotal_orderingrKrqrPrArRrrrrrrr rr*rrr
<module>r-s



0
00
0S:S:UDC(
C (
: 4n.b36l2o,o,d
hN>hNhNVD4>D4D4N
)JJZr:'<r:j@)K@)FO%'<O%d22>('ll^	T:'<T:nH:KH:VY6'<Y6x22B('r