Sc @sddlZddlZddlZddlZdZd ZdZdZdZ dZ dZ dZ dZ dejjfdYZdS(iNll ldll'll@Bl1la lJ5wld( gY@g.Ag@@cCs|dkrdSd}x<tttD](}|t|dkr)|d}Pq)q)W|dksm|dkrtjjd|n|S(Nilis%s value out of bounds(tNonetxrangetlent_powstdnst exceptiont SyntaxError(twhattdesctexpti((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt _exponent_ofs  cCs|dkrd}|d9}nd}tt|d}t|d}||d8}t|d}||d8}t|d}|t|d8}t|}|||||fS(Niiii6i`i(tlongtroundtint(Rtsigntdegreestminutestseconds((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_float_to_tuple*s   cCs|ddkr-d}t|dd}nd}t|d}|t|dd7}|t|dd7}|t|dd7}||S( NiiigN@ig @ig@wKA(tfloat(RRtvalue((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_tuple_to_float:scCsBt|}t||d@}|td|d@}|d|S(Nii i(R R tpow(RRtexponenttbase((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt _encode_sizeFs cCsy|d@}|dkr/tjjd|n|d@d?}|dkrbtjjd|nt|td|S(Nii sbad %s exponentiis bad %s basei (RRRR R(RRRR((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt _decode_sizeLs   tLOCcBseZdZddddddgZeeedZde dZ de d Z e e Z ddd Z dd Ze eZd Zd ZdZeeeddZdZdZeeeddZRS(s}LOC record @ivar latitude: latitude @type latitude: (int, int, int, int) tuple specifying the degrees, minutes, seconds, and milliseconds of the coordinate. @ivar longitude: longitude @type longitude: (int, int, int, int) tuple specifying the degrees, minutes, seconds, and milliseconds of the coordinate. @ivar altitude: altitude @type altitude: float @ivar size: size of the sphere @type size: float @ivar horizontal_precision: horizontal precision @type horizontal_precision: float @ivar vertical_precision: vertical precision @type vertical_precision: float @see: RFC 1876tlatitudet longitudetaltitudetsizethorizontal_precisiontvertical_precisionc Cstt|j||t|ts7t|trFt|}nt|trdt|}n||_t|tst|trt|}nt|trt|}n||_ t||_ t||_ t||_ t||_ dS(sInitialize a LOC record instance. The parameters I{latitude} and I{longitude} may be either a 4-tuple of integers specifying (degrees, minutes, seconds, milliseconds), or they may be floating point values specifying the number of degrees. The other parameters are floats. Size, horizontal precision, and vertical precision are specified in centimeters.N(tsuperRt__init__t isinstanceRR RRRRRR R!R"( tselftrdclasstrdtypeRRRR thprectvprec((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyR$ks   c Ks<|jddkr)d}|jd}nd}d|jd}|jddkrid}|jd}nd}d|jd}d||jd|jd |jd |||jd|jd |jd ||jd f }|jtks |jtks |jtkr8|d |jd |jd |jd f7}n|S( NitNtSitEtWs(%d %d %d.%03d %s %d %d %d.%03d %s %0.2fmiiigY@s %0.2fm %0.2fm %0.2fm( RRRR t _default_sizeR!t_default_hprecR"t_default_vprec( R&torigint relativizetkwtlat_hemispheret lat_degreestlong_hemispheret long_degreesttext((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pytto_texts*!c Cs-ddddg}ddddg}t}t} t} |j|d<|j} | jrt| |d<|j} d| kr| jd\} } | jstj j dnt| |d<|ddkrtj j dnt | }|dks"|dks"| j r7tj j d n|dkrLd }n|dkrad }nd}|t| |d<|j} q| jrt| |d<|j} qn| d kr|dcd 9= 60isbad latitude milliseconds valueidi R,iR+sbad latitude hemisphere valuesbad longitude seconds valueslongitude seconds >= 60s bad longitude milliseconds valueR.R-sbad longitude hemisphere valuetmgY@(R/R0R1tget_intt get_stringtisdigitRtsplitRRRRRtgettunescapet is_eol_or_eofRtget_eol(tclsR'R(ttokR2R3RRR R)R*ttRt millisecondstlR<RttokenR((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt from_texts      %             %              c Cs|jddkr3d}td|jd}nd}t|jd}|d|jdd|jdd|jd|}d |}|jddkrd}td|jd}nd}t|jd}|d|jdd|jdd|jd|}d |}t|jd } t|jd } t|jd } t|jd } tj dd| | | ||| } |j | dS(Niiii6i`iiill1R shorizontal precisionsvertical precisions!BBBBIII( RR RRRR R!R"tstructtpacktwrite(R&tfiletcompressR2RRRHRRRR R)R*twire((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pytto_wires.% %  c Cs^tjd||||!\}}} } } } } | dkrUt| dd} ndtd| d} | dks| dkrtjjdn| dkrt| dd} ndtd| d} | dks| d krtjjd nt| d } t|d }t| d } t| d} |||| | | || | S(Ns!BBBBIIIli6igVgV@s bad latitudegfgf@s bad longitudegcAR shorizontal precisionsvertical precision(RLtunpackRRRt FormErrorR(RER'R(RQtcurrenttrdlenR2tversionR R)R*RRR((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt from_wire$s"2  cCsltj}|j||j}|jd|j|j||j}|jt||S(Ni(t cStringIOtStringIORRtgetvaluetseekttruncatetclosetcmp(R&tothertftwire1twire2((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_cmp<s        cCs t|jS(N(RR(R&((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_get_float_latitudeHscCst||_dS(N(RR(R&R((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_set_float_latitudeKstdocs"latitude as a floating point valuecCs t|jS(N(RR(R&((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_get_float_longitudeQscCst||_dS(N(RR(R&R((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyt_set_float_longitudeTss#longitude as a floating point valueN(t__name__t __module__t__doc__t __slots__R/R0R1R$RtTrueR:RKt classmethodRRRXRdReRftpropertytfloat_latitudeRhRitfloat_longitude(((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyRUs&  a          ( ll ldll'll@Bl1la lJ5wld( (RYRLt dns.exceptionRt dns.rdataRR/R0R1R RRRRtrdatatRdataR(((s9/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/LOC.pyts