+
    Tj]Q                     
   ^ RI Ht ^ RIHtHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHt ^ R	IHt ^ R
IHt ]]]3t  ! R R4      t! ! R R]!]4      t" ! R R]"4      t# ! R R4      t$ ! R R4      t% ! R R]%]"4      t& ! R R]"4      t' ! R R]"4      t( ! R R]"4      t) ! R R]"4      t* ! R R ]"4      t+ ! R! R"]"4      t, ! R# R$]"4      t- ! R% R&]%]#4      t. ! R' R(]%]#4      t/ ! R) R*]#4      t0 ! R+ R,]%]#4      t1 ! R- R.4      t2 ! R/ R0]2]%]"4      t3 ! R1 R2]#4      t4 ! R3 R4]#4      t5 ! R5 R6]"4      t6 ! R7 R8]64      t7 ! R9 R:]"4      t8 ! R; R<]"4      t9 ! R= R>]%]#4      t:]Pv                   ! R? R@]!]4      4       t<]Pv                   ! RA RB]!]4      4       t=]Pv                   ! RC RD]%]!]4      4       t> ! RE RF]2]%]"4      t? ! RG RH]"4      t@ ! RI RJ]#4      tA ! RK RL]"4      tB ! RM RN]"4      tC ! RO RP]"4      tD ! RQ RR]2]%]"4      tE ! RS RT]%]#4      tF ! RU RV]"4      tG ! RW RX]#4      tH ! RY RZ]$]#4      tI ! R[ R\]$]#4      tJ ! R] R^]%]#4      tK ! R_ R`]#4      t ! Ra Rb]I4      tL ! Rc Rd]%]#4      tMRe# )f    )Decimal)BaseSpatialFieldGeometryField)	AreaFieldDistanceField)GEOSGeometry)Point)
FieldError)NotSupportedError)	BinaryFieldBooleanField	CharField
FloatFieldFuncIntegerField	TextField	TransformValue)Cast)cached_propertyc                      a a ] tR t^t oRtR	tV 3R lt]R 4       t]	R 4       t
R
V 3R lltV 3R ltRR ltRtVtV ;t# )GeoFuncMixinNc                h  < \         SV `  ! V/ VB  V P                   F  pV P                  V,          p\	        V\
        4      '       g   K.   VP                  pVP                  p\	        V\        4      '       d   V'       d<   \	        V\        4      '       g&   \        RV P                  V^,           3,          4      hVP                  '       g   V'       g   \        R4      hV'       d   K  \        V\        VP                  R7      R7      V P                  V&   K  	  R #   \         d    R p Li ; i)Nz9%s function requires a geometric argument in position %d.z$SRID is required for all geometries.sridoutput_field)super__init__geom_param_possource_expressions
isinstancer   r   r
   valuer   r   	TypeErrornamer   
ValueError)selfexpressionsextraposexprr   geom	__class__s   &*,    [/var/www/idalgo/venv/lib/python3.14/site-packages/django/contrib/gis/db/models/functions.pyr   GeoFuncMixin.__init__   s    +// &&C**3/DdE**$#00 ::Dt\22"<??Oyy#'*+  999\ !GHH</4}$))'D0'',+ '  $#$s   D!!D10D1c                .    V P                   P                  # N)r-   __name__r'   s   &r.   r%   GeoFuncMixin.name;   s    ~~&&&    c                ^    V P                   V P                  ^ ,          ,          P                  # r   )r!   r    fieldr3   s   &r.   	geo_fieldGeoFuncMixin.geo_field?   s$    &&t':':1'=>DDDr5   c                   < V P                   f*   Vf&   VP                  P                  V P                  4      p\        SV `  ! W3RV/VB # )Nfunction)r<   opsspatial_function_namer%   r   as_sql)r'   compiler
connectionr<   extra_contextr-   s   &&&&,r.   r?   GeoFuncMixin.as_sqlC   sC    == X%5!~~;;DIIFHw~hWXWWWr5   c           
     Z  < \         S
V `  ! V/ VB pV P                  '       g   V# VP                  4       pV P                   F\  pWE,          p\	        V\
        4      '       d   K#  \        V P                  : R V^,           : R\        V4      P                  : R24      h	  VP                  P                  pV P                  R,           F\  pVP                  V,          pVP                  P                  p	W8w  g   K4  \        W4      P                  ! V/ VB VP                  V&   K^  	  V# )z/ function requires a GeometryField in position z, got .:   NN)r   resolve_expressionr    get_source_fieldsr"   r   r$   r%   typer2   r9   r   r!   r   r   )r'   argskwargsressource_fieldsr*   r8   	base_sridr+   	expr_sridr-   s   &*,       r.   rG   GeoFuncMixin.resolve_expressionH   s   g($9&9"""J --/&&C!&Ee]33 		aU,,	  ' MM&&	&&r**C))#.D))..I%.7/$$/%&*/6.4/6&&s+ + 
r5   c                    \        VR 4      '       g.   V'       d&   \        W4      '       g   \        RV: RV: R24      hV# )rG   zThe z) parameter has the wrong type: should be rE   )hasattrr"   r$   )r'   r#   
param_namecheck_typess   &&&&r.   _handle_paramGeoFuncMixin._handle_paramf   s;    u233:e#A#A!;0  r5    r7   r1    N)r2   
__module____qualname____firstlineno__r<   r    r   propertyr%   r   r9   r?   rG   rU   __static_attributes____classdictcell____classcell__r-   __classdict__s   @@r.   r   r      sS     HN: ' ' E EX
< r5   r   c                       ] tR t^ptRtR# )GeoFuncrW   Nr2   rZ   r[   r\   r^   rW   r5   r.   rd   rd   p       r5   rd   c                   0   a  ] tR t^tt o ]R 4       tRtV tR# )GeomOutputGeoFuncc                B    \        V P                  P                  R 7      # )r   )r   r9   r   r3   s   &r.   r   GeomOutputGeoFunc.output_fieldu   s    $.."5"566r5   rW   N)r2   rZ   r[   r\   r   r   r^   r_   rb   s   @r.   rh   rh   t   s     7 7r5   rh   c                   *   a  ] tR t^zt o RtR tRtV tR# )SQLiteDecimalToFloatMixinz
By default, Decimal values are converted to str by the SQLite backend,
which is not acceptable by the GIS functions expecting numeric values.
c           
     P   V P                  4       pTP                  VP                  4        Uu. uFU  p\        VR 4      '       d?   \	        VP
                  \        4      '       d   \        \        VP
                  4      4      MTNKW  	  up4       VP                  ! W3/ VB # u upi )r#   )
copyset_source_expressionsget_source_expressionsrR   r"   r#   r   r   floatr?   )r'   r@   rA   rB   ro   r+   s   &&&,  r.   	as_sqlite#SQLiteDecimalToFloatMixin.as_sqlite   s    yy{## !779 :D tW--*TZZ2Q2Q %

+, :		
 {{8A=AAs   AB#rW   N)r2   rZ   r[   r\   __doc__rs   r^   r_   rk   s   @r.   rm   rm   z   s     
B Br5   rm   c                   *   a  ] tR t^t o RtR tRtV tR# )OracleToleranceMixing?c                   \        V P                  V P                  P                  R V P                  4      R \
        4      4      pV P                  4       pVP                  . V P                  4       OVN4       VP                  ! W3/ VB # )	tolerance)
r   rU   r)   getry   NUMERIC_TYPESro   rp   rq   r?   )r'   r@   rA   rB   ry   clones   &&&,  r.   	as_oracleOracleToleranceMixin.as_oracle   sy    

{DNN;
	 		$$%Pt'B'B'D%Pi%PQ||HBMBBr5   rW   N)r2   rZ   r[   r\   ry   r}   r^   r_   rk   s   @r.   rw   rw      s     I
C 
Cr5   rw   c                   L   a a ] tR t^t o^t]R 4       tV 3R ltR tRt	Vt
V ;t# )Areac                ,    \        V P                  4      # r1   )r   r9   r3   s   &r.   r   Area.output_field   s    ((r5   c                   < VP                   P                  '       g-   V P                  P                  V4      '       d   \	        R 4      h\
        SV `  ! W3/ VB # )z2Area on geodetic coordinate systems not supported.)featuressupports_area_geodeticr9   geodeticr   r   r?   r'   r@   rA   rB   r-   s   &&&,r.   r?   Area.as_sql   sV    ""999dnn>U>U?
 ?
 $D  w~hDmDDr5   c                ~    V P                   P                  V4      '       d   R VR&   RVR&   V P                  ! W3/ VB # )z+%(function)s(%(expressions)s, %(spheroid)d)templateTspheroid)r9   r   r?   )r'   r@   rA   rB   s   &&&,r.   rs   Area.as_sqlite   s?    >>"":..(UM*%(,M*%{{8A=AAr5   rW   )r2   rZ   r[   r\   arityr   r   r?   rs   r^   r_   r`   ra   s   @@r.   r   r      s.     E) )EB Br5   r   c                   ,    ] tR t^t]! 4       t^tRtRtR# )AzimuthrW   Nr   rF   	r2   rZ   r[   r\   r   r   r   r    r^   rW   r5   r.   r   r          <LENr5   r   c                   P   a a ] tR t^t o]! 4       tRV 3R lltV 3R ltRtVt	V ;t
# )	AsGeoJSONc                   < V.pVe'   VP                  V P                  VR\        4      4       ^ pV'       d   V'       d   ^pMV'       d   ^pM
V'       d   ^pVP                  V4       \        SV `  ! V/ VB  R # N	precisionappendrU   intr   r   )	r'   
expressionbboxcrsr   r)   r(   optionsr-   s	   &&&&&,  r.   r   AsGeoJSON.__init__   sl    !l t11)[#NO4GGG7#+//r5   c                   < V P                  4       pV P                  4       pVP                  VR ,          4       \        \        V`  ! W3/ VB # :NrF   N)rq   ro   rp   r   r   r?   r'   r@   rA   rB   r!   r|   r-   s   &&&,  r.   r}   AsGeoJSON.as_oracle   sH    !88:		$$%7%;<Y-hTmTTr5   rW   )FF   )r2   rZ   r[   r\   r   r   r   r}   r^   r_   r`   ra   s   @@r.   r   r      s     ;L0U Ur5   r   c                   T   a a ] tR t^t oRt]! 4       tRV 3R lltV 3R ltRt	Vt
V ;t# )AsGMLc                   < W!.pVe'   VP                  V P                  VR\        4      4       \        SV `  ! V/ VB  R # r   r   )r'   r   versionr   r)   r(   r-   s   &&&&, r.   r   AsGML.__init__   s@    + t11)[#NO+//r5   c                   < V P                  4       pV^ ,          pV P                  4       pVP                  V^,          .4       VP                  ^8X  d   RMRVR&   \        \
        V`  ! W3/ VB # )r   zSDO_UTIL.TO_GML311GEOMETRYzSDO_UTIL.TO_GMLGEOMETRYr<   )rq   ro   rp   r#   r   r   r?   )r'   r@   rA   rB   r!   r   r|   r-   s   &&&,   r.   r}   AsGML.as_oracle   sw    !88:$Q'		$$&8&;%<= }}! )* 	j!
 UE)(P-PPr5   rW   )rF   )   r   )r2   rZ   r[   r\   r    r   r   r   r}   r^   r_   r`   ra   s   @@r.   r   r      s"     N;L0
Q 
Qr5   r   c                   D   a a ] tR t^t o]! 4       tRV 3R lltRtVtV ;t	# )AsKMLc                   < V.pVe'   VP                  V P                  VR\        4      4       \        SV `  ! V/ VB  R # r   r   r'   r   r   r)   r(   r-   s   &&&, r.   r   AsKML.__init__   ?    !l t11)[#NO+//r5   rW   )r   
r2   rZ   r[   r\   r   r   r   r^   r_   r`   ra   s   @@r.   r   r      s     ;L0 0r5   r   c                   D   a a ] tR t^t o]! 4       tRV 3R lltRtVtV ;t	# )AsSVGc                   < \        VR 4      '       d   TM
\        V4      pVVV P                  VR\        4      .p\        SV `  ! V/ VB  R# )rG   r   N)rR   r   rU   r   r   )r'   r   relativer   r)   r(   r-   s   &&&&, r.   r   AsSVG.__init__   sS    *>??HS] 	 y+s;

 	+//r5   rW   )Fr   r   ra   s   @@r.   r   r      s     ;L	0 	0r5   r   c                   (    ] tR tRt]! 4       t^tRtR# )AsWKBi  rW   N)r2   rZ   r[   r\   r   r   r   r^   rW   r5   r.   r   r     s    =LEr5   r   c                   (    ] tR tRt]! 4       t^tRtR# )AsWKTi	  rW   N)r2   rZ   r[   r\   r   r   r   r^   rW   r5   r.   r   r   	  s    ;LEr5   r   c                   N   a a ] tR tRt oRV 3R lltV 3R ltV 3R ltRtVtV ;t	# )BoundingCirclei  c                *   < \         SV `  ! W3/ VB  R # r1   )r   r   )r'   r   num_segr)   r-   s   &&&,r.   r   BoundingCircle.__init__  s    66r5   c                   < V P                  4       pVP                  V P                  4       ^ ,          .4       \        \        V`  ! W3/ VB # r7   )ro   rp   rq   r   r   r}   r'   r@   rA   rB   r|   r-   s   &&&, r.   r}   BoundingCircle.as_oracle  L    		$$d&A&A&CA&F%GH^U5
$1
 	
r5   c                   < V P                  4       pVP                  V P                  4       ^ ,          .4       \        \        V`  ! W3/ VB # r7   )ro   rp   rq   r   r   rs   r   s   &&&, r.   rs   BoundingCircle.as_sqlite  r   r5   rW   )0   )
r2   rZ   r[   r\   r   r}   rs   r^   r_   r`   ra   s   @@r.   r   r     s     7

 
r5   r   c                       ] tR tRt^tRtR# )Centroidi!  rW   Nr2   rZ   r[   r\   r   r^   rW   r5   r.   r   r   !      Er5   r   c                       ] tR tRt^tRtRtR# )ClosestPointi%  rW   Nr   r2   rZ   r[   r\   r   r    r^   rW   r5   r.   r   r   %      ENr5   r   c                       ] tR tRt^tRtRtR# )
Differencei*  rW   Nr   r   rW   r5   r.   r   r   *  r   r5   r   c                   6   a  ] tR tRt o ]R 4       tR tRtV tR# )DistanceResultMixini/  c                ,    \        V P                  4      # r1   )r   r9   r3   s   &r.   r    DistanceResultMixin.output_field0  s    T^^,,r5   c                p    V P                   P                  ;'       d    V P                   P                  R 8H  # )i  )r9   	geographyr   r3   s   &r.   source_is_geography'DistanceResultMixin.source_is_geography4  s)    ~~''GGDNN,?,?4,GGr5   rW   N)	r2   rZ   r[   r\   r   r   r   r^   r_   rk   s   @r.   r   r   /  s#     - -H Hr5   r   c                   V   a a ] tR tRt oRtRtRV 3R lltV 3R ltV 3R ltRt	Vt
V ;t# )	Distancei8  Nc                n   < W.pVe   V P                  VR\        4      V n        \        SV `  ! V/ VB  R # )Nr   )rU   boolr   r   r   )r'   expr1expr2r   r)   r(   r-   s   &&&&, r.   r   Distance.__init__<  s8    n ..xTJDM+//r5   c                  < V P                  4       pR pVP                  ^,          pV P                  4       pVP                  P                  V8w  d`   \        V\        4      '       d   WvP                  n        M8\        V\        VP                  P                  VR7      4      VP                  ^&   V'       g   V P                  P                  V4      '       d   V P                  '       dZ   VP                  P                  R4      pVP                  P                  \        V P                  P                  V4      4      4       MVP                  P                  R4      p\         \"        V`J  ! W3RV/VB # )N)r   r   DistanceSpheroidDistanceSpherer<   )ro   r!   r   r   r   r"   r   r   r   r   r9   r   r   r=   r>   r   r   r   r?   )	r'   r@   rA   rB   r|   r<   r   r   r-   s	   &&&,    r.   as_postgresqlDistance.as_postgresqlB  s0   		((+,,.	''94%''/8"",.2!u'9'9'>'>)T/((+
 T^^44Z@@ }}} &>>??@RS((//$..11*=> &>>??@PQXu,
+3
7D
 	
r5   c                   < V P                   P                  V4      '       d'   R VR&   \        \        V P                  4      4      VR&   \
        SV `  ! W3/ VB # )z8COALESCE(%(function)s(%(expressions)s, %(spheroid)s), 0)r   r   )r9   r   r   r   r   r   r?   r   s   &&&,r.   rs   Distance.as_sqlitea  sV    >>"":.. K *% ),D,?(@M*%w~hDmDDr5   r   r   r1   )r2   rZ   r[   r\   r    r   r   r   rs   r^   r_   r`   ra   s   @@r.   r   r   8  s%     NH0
>E Er5   r   c                       ] tR tRt^tRtR# )Envelopeik  rW   Nr   rW   r5   r.   r   r   k  r   r5   r   c                       ] tR tRt^tRtR# )ForcePolygonCWio  rW   Nr   rW   r5   r.   r   r   o  r   r5   r   c                   J   a a ] tR tRt o^tRtRV 3R lltV 3R ltRtVt	V ;t
# )FromWKBis  c                   < VV P                  VR \        4      .pRV9  d   \        VR7      VR&   \        SV `  ! V/ VB  R# r   r   r   NrU   r   r   r   r   r'   r   r   r)   r(   r-   s   &&&, r.   r   FromWKB.__init__w  J    tVS1
 &$1t$<E.!+//r5   c                   < V P                  4       pV P                  4       pVP                  VR ,          4       \        \        V`  ! W3/ VB # r   )rq   ro   rp   r   r   r?   r   s   &&&,  r.   r}   FromWKB.as_oracle  sH    !88:		$$%7%;<We+HRMRRr5   rW   r7   )r2   rZ   r[   r\   r   r    r   r}   r^   r_   r`   ra   s   @@r.   r   r   s  s      EN0S Sr5   r   c                       ] tR tRtRtR# )FromWKTi  rW   Nre   rW   r5   r.   r   r     rf   r5   r   c                   J   a a ] tR tRt o]! 4       tRV 3R lltR tRtVt	V ;t
# )GeoHashi  c                   < V.pVe'   VP                  V P                  VR\        4      4       \        SV `  ! V/ VB  R # r   r   r   s   &&&, r.   r   GeoHash.__init__  r   r5   c                    V P                  4       p\        VP                  4      ^8  d%   VP                  P                  \	        ^d4      4       VP
                  ! W3/ VB # )r   )ro   lenr!   r   r   r?   )r'   r@   rA   rB   r|   s   &&&, r.   as_mysqlGeoHash.as_mysql  sL    		u''(1,$$++E#J7||HBMBBr5   rW   r1   )r2   rZ   r[   r\   r   r   r   r   r^   r_   r`   ra   s   @@r.   r   r     s     ;L0C Cr5   r   c                   4    ] tR tRt]! 4       t^tRtRtRt	Rt
R# )GeometryDistancei  rY   z <-> rW   Nr   )r2   rZ   r[   r\   r   r   r   r<   
arg_joinerr    r^   rW   r5   r.   r  r    s    <LEHJNr5   r  c                       ] tR tRt^tRtRtR# )Intersectioni  rW   Nr   r   rW   r5   r.   r  r    r   r5   r  c                   8   a  ] tR tRt o ]! 4       tRtR tRtV t	R# )GeometryTypei  	geom_typec                N    VP                  V P                  4      w  rER V R2pWe3# )z&(SELECT DECODE(SDO_GEOMETRY.GET_GTYPE(z),1, 'POINT',2, 'LINESTRING',3, 'POLYGON',4, 'COLLECTION',5, 'MULTIPOINT',6, 'MULTILINESTRING',7, 'MULTIPOLYGON',8, 'SOLID','UNKNOWN')))compilelhs)r'   r@   rA   rB   r  paramssqls   &&&,   r.   r}   GeometryType.as_oracle  s;    &&txx0&&)U 	+
 	 {r5   rW   N)
r2   rZ   r[   r\   r   r   lookup_namer}   r^   r_   rk   s   @r.   r  r    s     ;LK r5   r  c                   (    ] tR tRtRt]! 4       tRtR# )IsEmptyi  isemptyrW   N)r2   rZ   r[   r\   r  r   r   r^   rW   r5   r.   r  r    s    K>Lr5   r  c                   D   a a ] tR tRt oRt]! 4       tV 3R ltRtVt	V ;t
# )IsValidi  isvalidc                @   < \         SV `  ! W3/ VB w  rER V,          V3# )z%CASE %s WHEN 'TRUE' THEN 1 ELSE 0 END)r   r}   )r'   r@   rA   rB   r  r  r-   s   &&&,  r.   r}   IsValid.as_oracle  s)    g'NN6<fDDr5   rW   )r2   rZ   r[   r\   r  r   r   r}   r^   r_   r`   ra   s   @@r.   r  r    s     K>LE Er5   r  c                   Z   a a ] tR tRt oRV 3R lltV 3R ltV 3R ltV 3R ltRtVt	V ;t
# )Lengthi  c                6   < W n         \        SV `  ! V3/ VB  R # r1   )r   r   r   )r'   r   r   r)   r-   s   &&&,r.   r   Length.__init__  s     (%(r5   c                   < V P                   P                  V4      '       d(   VP                  P                  '       g   \	        R 4      h\
        SV `  ! W3/ VB # )z6This backend doesn't support Length on geodetic fields)r9   r   r   supports_length_geodeticr   r   r?   r   s   &&&,r.   r?   Length.as_sql  sP    NN##J//''@@@#H  w~hDmDDr5   c                N  < V P                  4       pR pV P                  4       '       d0   VP                  P                  \	        V P
                  4      4       MV P                  P                  V4      '       dZ   VP                  P                  R4      pVP                  P                  \	        V P                  P                  V4      4      4       M=\        R V P                  4        4       4      pV^8  d   VP                  P                  p\        \        V`>  ! W3RV/VB # )NLengthSpheroidc              3   L   "   T F  q'       g   K  VP                   x  K  	  R # 5ir1   dim.0fs   & r.   	<genexpr>'Length.as_postgresql.<locals>.<genexpr>  s     C%=eaee%=s   	$$r<   )ro   r   r!   r   r   r   r9   r   r=   r>   minrH   length3dr   r  r?   )r'   r@   rA   rB   r|   r<   r$  r-   s   &&&,   r.   r   Length.as_postgresql  s    		##%%$$++E$--,@A^^$$Z00 "~~;;<LMH$$++E$..2I2I*2U,VWCT%;%;%=CCCQw%>>22VU*
+3
7D
 	
r5   c                   < R pV P                   P                  V4      '       d   V P                  '       d   RMRp\        SV `  ! W3RV/VB # )NGeodesicLengthGreatCircleLengthr<   )r9   r   r   r   r?   )r'   r@   rA   rB   r<   r-   s   &&&, r.   rs   Length.as_sqlite  sG    >>"":..+/==='>QHw~hWXWWWr5   r   )T)r2   rZ   r[   r\   r   r?   r   rs   r^   r_   r`   ra   s   @@r.   r  r    s!     )E
$X Xr5   r  c                   ,    ] tR tRt]! 4       t^tRtRtR# )LineLocatePointi  rW   Nr   r   rW   r5   r.   r2  r2    r   r5   r2  c                       ] tR tRtRtR# )	MakeValidi  rW   Nre   rW   r5   r.   r4  r4    rf   r5   r4  c                   (    ] tR tRt]! 4       t^tRtR# )MemSizei  rW   Nr2   rZ   r[   r\   r   r   r   r^   rW   r5   r.   r6  r6        >LEr5   r6  c                   (    ] tR tRt]! 4       t^tRtR# )NumGeometriesi  rW   Nr7  rW   r5   r.   r:  r:    r8  r5   r:  c                   (    ] tR tRt]! 4       t^tRtR# )	NumPointsi  rW   Nr7  rW   r5   r.   r<  r<    r8  r5   r<  c                   B   a a ] tR tRt o^tV 3R ltV 3R ltRtVtV ;t	# )	Perimeteri  c                ,  < R pV P                   P                  V4      '       d"   V P                  4       '       g   \        R4      h\	        R V P                  4        4       4      pV^8  d   VP                  P                  p\        SV `$  ! W3RV/VB # )Nz<ST_Perimeter cannot use a non-projected non-geography field.c              3   8   "   T F  qP                   x  K  	  R # 5ir1   r#  r%  s   & r.   r(  *Perimeter.as_postgresql.<locals>.<genexpr>  s     :!9A%%!9s   r<   )
r9   r   r   r   r*  rH   r=   perimeter3dr   r?   )r'   r@   rA   rB   r<   r$  r-   s   &&&,  r.   r   Perimeter.as_postgresql  s    >>"":..t7O7O7Q7Q#N  :!7!7!9::7!~~11Hw~hWXWWWr5   c                ~   < V P                   P                  V4      '       d   \        R 4      h\        SV `  ! W3/ VB # )z+Perimeter cannot use a non-projected field.)r9   r   r   r   r?   r   s   &&&,r.   rs   Perimeter.as_sqlite   s8    >>"":..#$QRRw~hDmDDr5   rW   )
r2   rZ   r[   r\   r   r   rs   r^   r_   r`   ra   s   @@r.   r>  r>    s     E	XE Er5   r>  c                       ] tR tRt^tRtR# )PointOnSurfacei&  rW   Nr   rW   r5   r.   rG  rG  &  r   r5   rG  c                       ] tR tRt^tRtR# )Reversei*  rW   Nr   rW   r5   r.   rI  rI  *  r   r5   rI  c                   6   a a ] tR tRt oRV 3R lltRtVtV ;t# )Rotatei.  c                   < VV P                  VR \        4      .pVeP   \        V\        4      '       g   \	        R4      hVP                  \        VP                  \        4       R7      4       \        SV `(  ! V/ VB  R# )angleNzorigin argument must be a Pointr   )rU   r{   r"   r	   r$   r   r   wktr   r   r   )r'   r   rM  originr)   r(   r-   s   &&&&, r.   r   Rotate.__init__/  sm    ug}=
 fe,, ABBuVZZmoNO+//r5   rW   r1   r2   rZ   r[   r\   r   r^   r_   r`   ra   s   @@r.   rK  rK  .  s     	0 	0r5   rK  c                   6   a a ] tR tRt oRV 3R lltRtVtV ;t# )Scalei;  c                   < VV P                  VR \        4      V P                  VR\        4      .pVR8w  d'   VP                  V P                  VR\        4      4       \        SV `  ! V/ VB  R# )xy        zN)rU   r{   r   r   r   )r'   r   rU  rV  rX  r)   r(   r-   s   &&&&&, r.   r   Scale.__init__<  si    q#}5q#}5

 8t11!S-HI+//r5   rW   )rW  rQ  ra   s   @@r.   rS  rS  ;  s     0 0r5   rS  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )
SnapToGridiG  c           
     P  <a  \        V4      pV.pVR9   d8   TP                  V Uu. uF  pS P                  VR\        4      NK  	  up4       MBV^8X  d1   V. V 3R lVR,           4       OV 3R lVR,           4       O,          pM\	        R4      h\
        SS `  ! V/ VB  R# u upi )	rF   rY   c              3   R   <"   T F  pSP                  VR \        4      x  K  	  R# 5irX   rU   r{   r&  argr'   s   & r.   r(  &SnapToGrid.__init__.<locals>.<genexpr>R  s#     Q$$$S"m<<   $':r   NNc              3   R   <"   T F  pSP                  VR \        4      x  K  	  R# 5irX   r^  r_  s   & r.   r(  ra  S  s#     R	$$$S"m<<	rb  :r   r   Nz2Must provide 1, 2, or 4 arguments to `SnapToGrid`.N)rF   r   )r   extendrU   r{   r&   r   r   )r'   r   rJ   r)   nargsr(   r`  r-   s   f&*,   r.   r   SnapToGrid.__init__H  s    D	!lF?GKLt##C];tL aZ QRQRS	R K
 QRR+// Ms    B#rW   rQ  ra   s   @@r.   r[  r[  G  s     0 0r5   r[  c                       ] tR tRt^tRtRtR# )SymDifferenceiZ  rW   Nr   r   rW   r5   r.   rh  rh  Z  r   r5   rh  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )r   i_  c                   < VV P                  VR \        4      .pRV9  d   \        VR7      VR&   \        SV `  ! V/ VB  R# r   r   r   s   &&&, r.   r   Transform.__init__`  r   r5   rW   rQ  ra   s   @@r.   r   r   _  s     0 0r5   r   c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )	Translateij  c                   < V P                  4       p\        V P                  4      ^8  d%   VP                  P                  \	        ^ 4      4       \
        \        V`  ! W3/ VB # )   )ro   r   r!   r   r   r   rm  rs   r   s   &&&, r.   rs   Translate.as_sqlitek  sP    		t&&'!+$$++E!H5Y0WWWr5   rW   )r2   rZ   r[   r\   rs   r^   r_   r`   ra   s   @@r.   rm  rm  j  s     X Xr5   rm  c                       ] tR tRt^tRtRtR# )Unionis  rW   Nr   r   rW   r5   r.   rr  rr  s  r   r5   rr  N)Ndecimalr   #django.contrib.gis.db.models.fieldsr   r    django.contrib.gis.db.models.sqlr   r   django.contrib.gis.geosr   django.contrib.gis.geos.pointr	   django.core.exceptionsr
   	django.dbr   django.db.modelsr   r   r   r   r   r   r   r   r   django.db.models.functionsr   django.utils.functionalr   r   rr   r{   r   rd   rh   rm   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  register_lookupr  r  r  r  r2  r4  r6  r:  r<  r>  rG  rI  rK  rS  r[  rh  rm  rr  rW   r5   r.   <module>r~     s    O E 0 / - '
 
 
 , 3eW%S Sl	lD 	7 7B B*C C B B.g U U0QG Q.0G 00G 0G 
G 

)+< 
&#%6 $ 
%'8 
H H0E"$8' 0Ef  & Sg S*	g 	Cg C"w '): 
 !!<  ", !!"lI " ""
 !!E"L) E "E%X "6 %XPg 	! 	g 
G 
 
E#%97 E()+< g 
0 
0	0%'8 	00*,= 0&(*; 
0! 0X X "3 r5   