Ë
    ¹ûàgk  ã                   ó"  — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d„ de
«      Z G d„ dee«      Z  G d„ de«      Z! G d„ d«      Z" G d„ de"«      Z# G d„ de«      Z$ejJ                   G d„ de"e!«      «       Z&ejJ                   G d„ de!«      «       Z'ejJ                   G d„ de"e!«      «       Z(ejJ                   G d„ de"e!«      «       Z)ejJ                   G d„ d e"e!«      «       Z*ejJ                   G d!„ d"e"e!«      «       Z+ G d#„ d$«      Z, G d%„ d&«      Z-ejJ                   G d'„ d(e,e&«      «       Z.ejJ                   G d)„ d*e,e(«      «       Z/ejJ                   G d+„ d,e,e-e)«      «       Z0ejJ                   G d-„ d.e,e-e*«      «       Z1ejJ                   G d/„ d0e,e+«      «       Z2ejJ                   G d1„ d2e#e!«      «       Z3 G d3„ d4e!«      Z4ejJ                   G d5„ d6e4«      «       Z5ejJ                   G d7„ d8e5«      «       Z6ejJ                   G d9„ d:e4«      «       Z7ejJ                   G d;„ d<e7«      «       Z8ejJ                   G d=„ d>e4«      «       Z9ejJ                   G d?„ d@e9«      «       Z:ejJ                   G dA„ dBe#e!«      «       Z;ejJ                   G dC„ dDe!«      «       Z<ejJ                   G dE„ dFe!«      «       Z=ejJ                   G dG„ dHe=«      «       Z> G dI„ dJe«      Z? G dK„ dLe?e&«      Z@ G dM„ dNe?e(«      ZA G dO„ dPe?e)«      ZB G dQ„ dRe?e*«      ZC G dS„ dTe?e+«      ZD G dU„ dV«      ZEejJ                   G dW„ dXeEe'«      «       ZFejJ                   G dY„ dZeEe5«      «       ZGejJ                   G d[„ d\eEe6«      «       ZHejJ                   G d]„ d^eEe7«      «       ZIejJ                   G d_„ d`eEe8«      «       ZJejJ                   G da„ dbeEe9«      «       ZKejJ                   G dc„ ddeEe:«      «       ZLy)eé    N)ÚEmptyResultSetÚFullResultSet)ÚBaseDatabaseOperations)ÚCaseÚ
ExpressionÚFuncÚValueÚWhen)ÚBooleanFieldÚ	CharFieldÚDateTimeFieldÚFieldÚIntegerFieldÚ	UUIDField)ÚRegisterLookupMixin)Ú
OrderedSet)ÚRemovedInDjango60Warning)Úcached_property)Úmake_hashablec                   ó¼   — e Zd ZdZdZdZd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Z	 dd„Zd„ Zed„ «       Zy)ÚLookupNTFc                 ó(  — ||c| _         | _        | j                  «       | _        | j                  «       | _         t	        | j                   d«      r| j                   j                  «       }ng }|rddlm} t        ||«      rt        d«      ‚|| _
        y )NÚget_bilateral_transformsr   ©ÚQueryzBBilateral transformations on nested querysets are not implemented.)ÚlhsÚrhsÚget_prep_lookupÚget_prep_lhsÚhasattrr   Údjango.db.models.sql.queryr   Ú
isinstanceÚNotImplementedErrorÚbilateral_transforms)Úselfr   r   r$   r   s        úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/models/lookups.pyÚ__init__zLookup.__init__   s†   € Ø  #ÐˆŒ�$”(Ø×'Ñ'Ó)ˆŒØ×$Ñ$Ó&ˆŒÜ�4—8‘8Ð7Ô8Ø#'§8¡8×#DÑ#DÓ#FÑ à#%Ð Ùõ 9ä˜#˜uÔ%Ü)ØXóð ð %9ˆÕ!ó    c                 ó8   — | j                   D ]
  } ||«      }Œ |S ©N)r$   )r%   ÚvalueÚ	transforms      r&   Úapply_bilateral_transformsz!Lookup.apply_bilateral_transforms/   s&   € Ø×2Ñ2ò 	%ˆIÙ˜eÓ$‰Eð	%àˆr(   c                 óh   — | j                   j                  › d| j                  ›d| j                  ›d�S )Nú(ú, ú))Ú	__class__Ú__name__r   r   ©r%   s    r&   Ú__repr__zLookup.__repr__4   s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨<°r¸$¿(¹(¸ÀQÐGÐGr(   c                 ó®  — |€| j                   }| j                  r’g g }}|D ]…  }t        || j                  j                  ¬«      }| j                  |«      }|j                  |j                  «      }|j                  |«      \  }}	|j                  |«       |j                  |	«       Œ‡ ||fS | j                  ||«      \  }
}dgt        |«      z  |}}||fS )N©Úoutput_fieldú%s)r   r$   r	   r   r8   r-   Úresolve_expressionÚqueryÚcompileÚappendÚextendÚget_db_prep_lookupÚlen)r%   ÚcompilerÚ
connectionr   ÚsqlsÚsqls_paramsÚpr+   ÚsqlÚ
sql_paramsÚ_Úparamss               r&   Úbatch_process_rhszLookup.batch_process_rhs7   sÝ   € Øˆ;Ø—(‘(ˆCØ×$Ò$Ø " B�+ˆDØò /�Ü˜a¨d¯h©h×.CÑ.CÔD�Ø×7Ñ7¸Ó>�Ø×0Ñ0°·±Ó@�Ø"*×"2Ñ"2°5Ó"9‘��ZØ—‘˜CÔ Ø×"Ñ" :Õ.ð/ð �[Ð Ð ð ×/Ñ/°°ZÓ@‰IˆAˆvØ!% ¬¨V«Ñ 4°f�+ˆDØ�[Ð Ð r(   c                 ól   — | j                  «       r| j                  gS | j                  | j                  gS r*   )Úrhs_is_direct_valuer   r   r4   s    r&   Úget_source_expressionszLookup.get_source_expressionsH   s-   € Ø×#Ñ#Ô%Ø—H‘H�:ÐØ—‘˜$Ÿ(™(Ð#Ð#r(   c                 óT   — t        |«      dk(  r|d   | _        y |\  | _        | _        y )Né   r   )r@   r   r   )r%   Ú	new_exprss     r&   Úset_source_expressionszLookup.set_source_expressionsM   s'   € Üˆy‹>˜QÒØ  ‘|ˆD�Hà!*ÑˆDŒH�d•hr(   c                 ó¢  — | j                   rt        | j                  d«      r| j                  S t        | j                  d«      r[t        | j                  j                  d«      r/| j                  j                  j                  | j                  «      S | j                  S | j                  «       rt        | j                  «      S | j                  S )Nr:   r8   Úget_prep_value)Úprepare_rhsr    r   r   r8   rS   rL   r	   r4   s    r&   r   zLookup.get_prep_lookupS   s”   € Ø×Ò¤7¨4¯8©8Ð5IÔ#JØ—8‘8ˆOÜ�4—8‘8˜^Ô,Ü�t—x‘x×,Ñ,Ð.>Ô?Ø—x‘x×,Ñ,×;Ñ;¸D¿H¹HÓEÐEð �x‰xˆð ×%Ñ%Ô'Ü˜Ÿ™“?Ð"Ø�x‰xˆr(   c                 óp   — t        | j                  d«      r| j                  S t        | j                  «      S ©Nr:   )r    r   r	   r4   s    r&   r   zLookup.get_prep_lhs]   s(   € Ü�4—8‘8Ð1Ô2Ø—8‘8ˆOÜ�T—X‘X‹Ðr(   c                 ó   — d|gfS )Nr9   © )r%   r+   rB   s      r&   r?   zLookup.get_db_prep_lookupb   s   € Ø�u�gˆÐr(   c                 óÌ   — |xs | j                   }t        |d«      r|j                  |j                  «      }|j	                  |«      \  }}t        |t        «      rd|› d�}||fS )Nr:   r/   r1   )r   r    r:   r;   r<   r"   r   )r%   rA   rB   r   rF   rI   s         r&   Úprocess_lhszLookup.process_lhse   sc   € ØŠo�T—X‘XˆÜ�3Ð,Ô-Ø×(Ñ(¨¯©Ó8ˆCØ×&Ñ& sÓ+‰ˆˆVÜ�cœ6Ô"à�c�U˜!�*ˆCØ�Fˆ{Ðr(   c                 ó–  — | j                   }| j                  r]| j                  «       r!t        || j                  j
                  ¬«      }| j                  |«      }|j                  |j                  «      }t        |d«      r7|j                  |«      \  }}t        |t        «      s|r|d   dk7  rd|z  }||fS | j                  ||«      S )Nr7   Úas_sqlr   r/   z(%s))r   r$   rL   r	   r   r8   r-   r:   r;   r    r<   r"   r?   )r%   rA   rB   r+   rF   rI   s         r&   Úprocess_rhszLookup.process_rhso   s¸   € Ø—‘ˆØ×$Ò$Ø×'Ñ'Ô)ô ˜e°$·(±(×2GÑ2GÔH�Ø×3Ñ3°EÓ:ˆEØ×,Ñ,¨X¯^©^Ó<ˆEÜ�5˜(Ô#Ø"×*Ñ*¨5Ó1‰KˆC�ô ˜e¤UÔ+±¸¸A¹À#ºØ˜s‘l�Ø˜�;Ðà×*Ñ*¨5°*Ó=Ð=r(   c                 ó0   — t        | j                  d«       S ©Nr\   )r    r   r4   s    r&   rL   zLookup.rhs_is_direct_valueƒ   s   € Ü˜4Ÿ8™8 XÓ.Ð.Ð.r(   c                 ór   — g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r*   )rM   r>   Úget_group_by_cols)r%   ÚcolsÚsources      r&   ra   zLookup.get_group_by_cols†   s9   € ØˆØ×1Ñ1Ó3ò 	4ˆFØ�K‰K˜×0Ñ0Ó2Õ3ð	4àˆr(   c                 ó  — d}g }| j                   | j                  fD ]H  }|j                  j                  |«      rt	        t        |d¬«      d¬«      }d}|j                  |«       ŒJ |r t        | «      |Ž n| }|j                  ||«      S )NFT)Úthen)Údefault)	r   r   ÚopsÚ0conditional_expression_supported_in_where_clauser   r
   r=   Útyper\   )r%   rA   rB   ÚwrappedÚexprsÚexprÚlookups          r&   Ú	as_oraclezLookup.as_oracleŒ   s‡   € ð ˆØˆØ—X‘X˜tŸx™xÐ(ò 	ˆDØ�~‰~×NÑNÈtÔTÜœD ¨DÔ1¸5ÔA�Ø�Ø�L‰L˜Õð		ñ
 (/�”�d“˜UÑ#°DˆØ�}‰}˜X zÓ2Ð2r(   c                 ó   — t        «       S r*   )r   r4   s    r&   r8   zLookup.output_field™   s
   € ä‹~Ðr(   c                 óH   — | j                   | j                  | j                  fS r*   )r2   r   r   r4   s    r&   ÚidentityzLookup.identity�   s   € à�~‰~˜tŸx™x¨¯©Ð1Ð1r(   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S r*   )r"   r   ÚNotImplementedrq   )r%   Úothers     r&   Ú__eq__zLookup.__eq__¡   s%   € Ü˜%¤Ô(Ü!Ð!Ø�}‰} §¡Ñ.Ð.r(   c                 ó>   — t        t        | j                  «      «      S r*   )Úhashr   rq   r4   s    r&   Ú__hash__zLookup.__hash__¦   s   € Ü”M $§-¡-Ó0Ó1Ð1r(   c                 óð   — | j                  «       }||_        | j                  j                  |||||«      |_        t	        | j
                  d«      r$| j
                  j                  |||||«      |_        |S rV   )ÚcopyÚ
is_summaryr   r:   r    r   )r%   r;   Úallow_joinsÚreuseÚ	summarizeÚfor_saveÚcs          r&   r:   zLookup.resolve_expression©   sp   € ð �I‰I‹KˆØ ˆŒØ—‘×+Ñ+Ø�;  y°(ó
ˆŒô �4—8‘8Ð1Ô2Ø—H‘H×/Ñ/Ø�{ E¨9°hóˆAŒEð ˆr(   c                 óV   — |j                   j                  j                  sd|› d�}||fS )Nz
CASE WHEN z THEN 1 ELSE 0 END)rB   ÚfeaturesÚ&supports_boolean_expr_in_select_clause)r%   rA   rF   rI   s       r&   Úselect_formatzLookup.select_format·   s2   € ð ×"Ñ"×+Ñ+×RÒRØ˜s˜eÐ#5Ð6ˆCØ�Fˆ{Ðr(   c                 ó^   — | j                   j                  xr | j                  j                  S r*   )r   Úallowed_defaultr   r4   s    r&   r†   zLookup.allowed_default¿   s!   € à�x‰x×'Ñ'ÒD¨D¯H©H×,DÑ,DÐDr(   r*   )NTNFF)r3   Ú
__module__Ú__qualname__Úlookup_namerT   Úcan_use_none_as_rhsr'   r-   r5   rJ   rM   rQ   r   r   r?   rZ   r]   rL   ra   rn   r   r8   Úpropertyrq   ru   rx   r:   r„   r†   rX   r(   r&   r   r      s²   „ Ø€KØ€KØÐò9ò&ò
Hó!ò"$ò
+òòò
óò>ò(/òò3ð ñó ðð ñ2ó ð2ò/ò
2ð SXóòð ñEó ñEr(   r   c                   ó.   — e Zd ZdZdZdZed„ «       Zd„ Zy)Ú	Transformz…
    RegisterLookupMixin() is first so that get_lookup() and get_transform()
    first examine self and then check output_field.
    FrO   c                 ó(   — | j                  «       d   S ©Nr   )rM   r4   s    r&   r   zTransform.lhsÍ   s   € à×*Ñ*Ó,¨QÑ/Ð/r(   c                 óº   — t        | j                  d«      r| j                  j                  «       }ng }| j                  r|j	                  | j
                  «       |S )Nr   )r    r   r   Ú	bilateralr=   r2   )r%   r$   s     r&   r   z"Transform.get_bilateral_transformsÑ   sI   € Ü�4—8‘8Ð7Ô8Ø#'§8¡8×#DÑ#DÓ#FÑ à#%Ð Ø�>Š>Ø ×'Ñ'¨¯©Ô7Ø#Ð#r(   N)	r3   r‡   rˆ   Ú__doc__r‘   Úarityr‹   r   r   rX   r(   r&   r�   r�   Ä   s*   „ ñð
 €IØ€Eàñ0ó ð0ó$r(   r�   c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚBuiltinLookupc                 ó>  •— t         ‰| �  |||«      \  }}| j                  j                  j	                  «       }t        |j                  j                  d«      r�|j                  j                  j                  t        j                  ur_t        j                  dt        «       | j                  j                  j                  |¬«      }|j                  j                  ||«      |z  }|j                  j                  | j                  |«      |z  }|t!        |«      fS )NÚfield_cast_sqlzsThe usage of DatabaseOperations.field_cast_sql() is deprecated. Implement DatabaseOperations.lookup_cast() instead.)rB   )ÚsuperrZ   r   r8   Úget_internal_typer    rg   r2   r—   r   ÚwarningsÚwarnr   Údb_typeÚlookup_castr‰   Úlist)	r%   rA   rB   r   Úlhs_sqlrI   Úfield_internal_typerœ   r2   s	           €r&   rZ   zBuiltinLookup.process_lhsÜ   sù   ø€ Ü™'Ñ-¨h¸
ÀCÓH‰ˆ�Ø"Ÿh™h×3Ñ3×EÑEÓGÐä�J—N‘N×,Ñ,Ð.>Ô?Ø—‘×(Ñ(×7Ñ7Ü)×8Ñ8ñ9ô �M‰MðJô )ôð —h‘h×+Ñ+×3Ñ3¸zÐ3ÓJˆGà—‘×-Ñ-¨gÐ7JÓKÈgÑUð ð �N‰N×&Ñ& t×'7Ñ'7Ð9LÓMÐPWÑWð 	ð œ˜V›Ð$Ð$r(   c                 ó®   — | j                  ||«      \  }}| j                  ||«      \  }}|j                  |«       | j                  ||«      }|›d|›�|fS ©Nú )rZ   r]   r>   Ú
get_rhs_op)r%   rA   rB   rŸ   rI   Úrhs_sqlÚ
rhs_paramss          r&   r\   zBuiltinLookup.as_sqlô   s[   € Ø×*Ñ*¨8°ZÓ@‰ˆ�Ø"×.Ñ.¨x¸ÓDÑˆ�Ø�‰�jÔ!Ø—/‘/ *¨gÓ6ˆÚ!¡7Ð+¨VÐ3Ð3r(   c                 ó:   — |j                   | j                     |z  S r*   ©Ú	operatorsr‰   ©r%   rB   r   s      r&   r¤   zBuiltinLookup.get_rhs_opû   ó   € Ø×#Ñ# D×$4Ñ$4Ñ5¸Ñ;Ð;r(   r*   )r3   r‡   rˆ   rZ   r\   r¤   Ú__classcell__©r2   s   @r&   r•   r•   Û   s   ø„ õ%ò04ö<r(   r•   c                   ó   — e Zd ZdZdZd„ Zy)ÚFieldGetDbPrepValueMixinzZ
    Some lookups require Field.get_db_prep_value() to be called on their
    inputs.
    Fc           	      ó  — t        | j                  j                  dd «      }t        |dd «      xs  | j                  j                  j                  }| j                  s|g}d|D �cg c]  }t        |d«      r|n
 |||d¬«      ‘Œ c}fS c c}w )NÚtarget_fieldÚget_db_prep_valuer9   r\   T)Úprepared)Úgetattrr   r8   r²   Ú$get_db_prep_lookup_value_is_iterabler    )r%   r+   rB   Úfieldr²   Úvs         r&   r?   z+FieldGetDbPrepValueMixin.get_db_prep_lookup  s¢   € ô ˜Ÿ™×-Ñ-¨~¸tÓDˆä�EÐ.°Ó5ò 7Ø�x‰x×$Ñ$×6Ñ6ð 	ð ×8Ò8Ø�GˆEàð öð ô ˜q (Ô+ñ á*¨1¨jÀ4ÔHñIòð

ð 
	
ùòs   Á% B	N)r3   r‡   rˆ   r’   rµ   r?   rX   r(   r&   r¯   r¯   ÿ   s   „ ñð
 ,1Ð(ó
r(   r¯   c                   ó>   ‡ — e Zd ZdZdZd„ Zˆ fd„Zd„ Zdˆ fd„	Zˆ xZ	S )Ú FieldGetDbPrepValueIterableMixinzg
    Some lookups require Field.get_db_prep_value() to be called on each value
    in an iterable.
    Tc                 óN  — t        | j                  d«      r| j                  S g }| j                  D ]q  }t        |d«      rnQ| j                  rEt        | j                  j                  d«      r%| j                  j                  j                  |«      }|j                  |«       Œs |S )Nr:   rS   )r    r   rT   r   r8   rS   r=   )r%   Úprepared_valuesÚ	rhs_values      r&   r   z0FieldGetDbPrepValueIterableMixin.get_prep_lookup&  s�   € Ü�4—8‘8Ð1Ô2Ø—8‘8ˆOØˆØŸ™ò 	.ˆIÜ�yÐ"6Ô7ð Ø×!Ò!¤g¨d¯h©h×.CÑ.CÐEUÔ&VØ ŸH™H×1Ñ1×@Ñ@ÀÓK�	Ø×"Ñ" 9Õ-ð	.ð Ðr(   c                 óh   •— | j                  «       r| j                  ||«      S t        ‰| �  ||«      S r*   )rL   rJ   r˜   r]   )r%   rA   rB   r2   s      €r&   r]   z,FieldGetDbPrepValueIterableMixin.process_rhs4  s6   ø€ Ø×#Ñ#Ô%ð ×)Ñ)¨(°JÓ?Ð?ä‘7Ñ& x°Ó<Ð<r(   c                 óž   — |g}t        |d«      r|j                  |j                  «      }t        |d«      r|j                  |«      \  }}||fS )Nr:   r\   )r    r:   r;   r<   )r%   rA   rB   rF   ÚparamrI   s         r&   Úresolve_expression_parameterz=FieldGetDbPrepValueIterableMixin.resolve_expression_parameter<  sP   € Ø�ˆÜ�5Ð.Ô/Ø×,Ñ,¨X¯^©^Ó<ˆEÜ�5˜(Ô#Ø"×*Ñ*¨5Ó1‰KˆC�Ø�Fˆ{Ðr(   c                 ó¼   •‡ ‡‡— t         ‰‰ �  ‰‰|«      }t        ˆˆˆ fd„t        |Ž D «       Ž \  }}t        j                  j                  |«      }|t        |«      fS )Nc              3   óL   •K  — | ]  \  }}‰j                  ‰‰||«      –— Œ y ­wr*   )rÀ   )Ú.0rF   r¿   rA   rB   r%   s      €€€r&   ú	<genexpr>zEFieldGetDbPrepValueIterableMixin.batch_process_rhs.<locals>.<genexpr>K  s.   øè ø€ ò á�C˜ð ×1Ñ1°(¸JÈÈU×Sñùs   ƒ!$)r˜   rJ   ÚzipÚ	itertoolsÚchainÚfrom_iterableÚtuple)r%   rA   rB   r   Úpre_processedrF   rI   r2   s   ```    €r&   rJ   z2FieldGetDbPrepValueIterableMixin.batch_process_rhsD  s]   û€ Ü™Ñ1°(¸JÈÓLˆô
 õä"% }Ð"5ôð
‰ˆˆVô —‘×.Ñ.¨vÓ6ˆØ”E˜&“MÐ!Ð!r(   r*   )
r3   r‡   rˆ   r’   rµ   r   r]   rÀ   rJ   r¬   r­   s   @r&   r¹   r¹     s)   ø„ ñð
 ,0Ð(òô=ò÷"ñ "r(   r¹   c                   ó   — e Zd ZdZdZd„ Zy)ÚPostgresOperatorLookupz*Lookup defined by operators on PostgreSQL.Nc                 ó°   — | j                  ||«      \  }}| j                  ||«      \  }}t        |«      t        |«      z   }|›d| j                  ›d|›�|fS r¢   )rZ   r]   rÉ   Úpostgres_operator)r%   rA   rB   r   Ú
lhs_paramsr   r¦   rI   s           r&   Úas_postgresqlz$PostgresOperatorLookup.as_postgresqlY  sZ   € Ø×*Ñ*¨8°ZÓ@‰ˆˆZØ×*Ñ*¨8°ZÓ@‰ˆˆZÜ�zÓ"¤U¨:Ó%6Ñ6ˆÚ  $×"8Ó"8¹#Ð>ÀÐFÐFr(   )r3   r‡   rˆ   r’   rÎ   rÐ   rX   r(   r&   rÌ   rÌ   T  s   „ Ù4àÐóGr(   rÌ   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚExactÚexactc                 ó<  •— ddl m} t        | j                  |«      rr| j                  j	                  «       rM| j                  j
                  sB| j                  j                  «        | j                  j                  dg«       nt        d«      ‚t        ‰| �)  «       S )Nr   r   ÚpkzSThe QuerySet value for an exact lookup must be limited to one result using slicing.)r!   r   r"   r   Úhas_limit_oneÚhas_select_fieldsÚclear_select_clauseÚ
add_fieldsÚ
ValueErrorr˜   r   ©r%   r   r2   s     €r&   r   zExact.get_prep_lookupd  sw   ø€ Ý4ä�d—h‘h Ô&Ø�x‰x×%Ñ%Ô'Ø—x‘x×1Ò1Ø—H‘H×0Ñ0Ô2Ø—H‘H×'Ñ'¨¨Õ/ä ð0óð ô ‰wÑ&Ó(Ð(r(   c                 ó(  •— t        | j                  t        «      rht        | j                  dd«      rQ|j
                  j                  | j                  «      r,| j                  ||«      \  }}| j                  rdnd}||z  |fS t        ‰| �%  ||«      S )NÚconditionalFr9   zNOT %s)
r"   r   Úboolr´   r   rg   rh   rZ   r˜   r\   )r%   rA   rB   rŸ   rI   Útemplater2   s         €r&   r\   zExact.as_sqls  s‚   ø€ ô
 �t—x‘x¤Ô&Ü˜Ÿ™ -°Ô7Ø—‘×OÑOØ—‘ôð #×.Ñ.¨x¸ÓD‰OˆG�VØ#Ÿxšx‘t¨XˆHØ˜gÑ% vÐ-Ð-Ü‰w‰~˜h¨
Ó3Ð3r(   )r3   r‡   rˆ   r‰   r   r\   r¬   r­   s   @r&   rÒ   rÒ   `  s   ø„ à€Kô)÷4ð 4r(   rÒ   c                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚIExactÚiexactFc                 óx   •— t         ‰| �  ||«      \  }}|r!|j                  j                  |d   «      |d<   ||fS r�   )r˜   r]   rg   Úprep_for_iexact_query©r%   ÚqnrB   r   rI   r2   s        €r&   r]   zIExact.process_rhs‰  sA   ø€ Ü‘gÑ)¨"¨jÓ9‰ˆˆVÙØ"Ÿ™×<Ñ<¸VÀA¹YÓGˆF�1‰IØ�Fˆ{Ðr(   )r3   r‡   rˆ   r‰   rT   r]   r¬   r­   s   @r&   rá   rá   „  s   ø„ à€KØ€K÷ð r(   rá   c                   ó   — e Zd ZdZy)ÚGreaterThanÚgtN©r3   r‡   rˆ   r‰   rX   r(   r&   rè   rè   �  ó   „ à�Kr(   rè   c                   ó   — e Zd ZdZy)ÚGreaterThanOrEqualÚgteNrê   rX   r(   r&   rí   rí   •  ó   „ à�Kr(   rí   c                   ó   — e Zd ZdZy)ÚLessThanÚltNrê   rX   r(   r&   rñ   rñ   š  rë   r(   rñ   c                   ó   — e Zd ZdZy)ÚLessThanOrEqualÚlteNrê   rX   r(   r&   rô   rô   Ÿ  rï   r(   rô   c                   ó&   ‡ — e Zd ZeZeZˆ fd„Zˆ xZS )ÚIntegerFieldOverflowc                 ó,  •— | j                   }t        |t        «      rh| j                  j                  j                  «       }|j                  j                  |«      \  }}|�||k  r| j                  ‚|�||kD  r| j                  ‚t        ‰| �-  ||«      S r*   )r   r"   Úintr   r8   r™   rg   Úinteger_field_rangeÚunderflow_exceptionÚoverflow_exceptionr˜   r]   )r%   rA   rB   r   r    Ú	min_valueÚ	max_valuer2   s          €r&   r]   z IntegerFieldOverflow.process_rhs¨  s�   ø€ Ø�h‰hˆÜ�cœ3ÔØ"&§(¡(×"7Ñ"7×"IÑ"IÓ"KÐØ#-§>¡>×#EÑ#EØ#ó$Ñ ˆI�yð Ð$¨¨yªØ×.Ñ.Ð.ØÐ$¨¨yªØ×-Ñ-Ð-Ü‰wÑ" 8¨ZÓ8Ð8r(   )r3   r‡   rˆ   r   rû   rü   r]   r¬   r­   s   @r&   r÷   r÷   ¤  s   ø„ Ø(ÐØ'Ð÷9ð 9r(   r÷   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚIntegerFieldFloatRoundingzŽ
    Allow floats to work as query values for IntegerField. Without this, the
    decimal portion of the float would always be discarded.
    c                 óœ   •— t        | j                  t        «      r$t        j                  | j                  «      | _        t
        ‰| �  «       S r*   )r"   r   ÚfloatÚmathÚceilr˜   r   )r%   r2   s    €r&   r   z)IntegerFieldFloatRounding.get_prep_lookup¼  s3   ø€ Ü�d—h‘h¤Ô&Ü—y‘y §¡Ó*ˆDŒHÜ‰wÑ&Ó(Ð(r(   )r3   r‡   rˆ   r’   r   r¬   r­   s   @r&   r   r   ¶  s   ø„ ñ÷
)ð )r(   r   c                   ó   — e Zd Zy)ÚIntegerFieldExactN©r3   r‡   rˆ   rX   r(   r&   r  r  Â  ó   „ àr(   r  c                   ó   — e Zd ZeZy)ÚIntegerGreaterThanN©r3   r‡   rˆ   r   rû   rX   r(   r&   r
  r
  Ç  s   „ à'Ñr(   r
  c                   ó   — e Zd ZeZy)ÚIntegerGreaterThanOrEqualNr  rX   r(   r&   r  r  Ì  s
   „ ð (Ñr(   r  c                   ó   — e Zd ZeZy)ÚIntegerLessThanN©r3   r‡   rˆ   r   rü   rX   r(   r&   r  r  Ó  ó   „ à&Ñr(   r  c                   ó   — e Zd ZeZy)ÚIntegerLessThanOrEqualNr  rX   r(   r&   r  r  Ø  r  r(   r  c                   óL   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zd„ Zˆ fd„Zd„ Z	ˆ xZ
S )ÚInÚinc                 óš   •— t         ‰| �  «       }| j                  «       r+| j                  D ]  }t	        |dd «      x}sŒ| |«       z  }Œ |S )NÚget_refs)r˜   r  rL   r   r´   )r%   Úrefsr   Úget_rhs_refsr2   s       €r&   r  zIn.get_refsá  sV   ø€ Ü‰wÑÓ!ˆØ×#Ñ#Ô%Ø—x‘xò +�Ü#*¨3°
¸DÓ#AÐA�<ÑAØ™L›NÑ*‘Dð+ð ˆr(   c                 ó(  •— ddl m} t        | j                  |«      rh| j                  j	                  d¬«       | j                  j
                  s6| j                  j                  «        | j                  j                  dg«       t        ‰| �%  «       S )Nr   r   T)Úclear_defaultrÕ   )
r!   r   r"   r   Úclear_orderingr×   rØ   rÙ   r˜   r   rÛ   s     €r&   r   zIn.get_prep_lookupé  sh   ø€ Ý4ä�d—h‘h Ô&Ø�H‰H×#Ñ#°$Ð#Ô7Ø—8‘8×-Ò-Ø—‘×,Ñ,Ô.Ø—‘×#Ñ# T FÔ+Ü‰wÑ&Ó(Ð(r(   c                 óÌ  •— t        | j                  dd «      }|�||j                  k7  rt        d«      ‚| j	                  «       r`	 t        | j                  «      }|j                  d «       |st        ‚| j                  |||«      \  }}ddj                  |«      z   dz   }||fS t        ‰	| �1  ||«      S # t        $ r% | j                  D �cg c]  }|€Œ|‘Œ	 nc c}w }}Y Œvw xY w)NÚ_dbzvSubqueries aren't allowed across different databases. Force the inner query to be evaluated using `list(inner_query)`.r/   r0   r1   )r´   r   ÚaliasrÚ   rL   r   ÚdiscardÚ	TypeErrorr   rJ   Újoinr˜   r]   )
r%   rA   rB   Údb_rhsr   ÚrrC   rD   Úplaceholderr2   s
            €r&   r]   zIn.process_rhsó  sñ   ø€ Ü˜Ÿ™ 5¨$Ó/ˆØÐ &¨J×,<Ñ,<Ò"<ÜðMóð ð
 ×#Ñ#Ô%ð=Ü  §¡Ó*�Ø—‘˜DÔ!ñ Ü$Ð$ð !%× 6Ñ 6°xÀÈSÓ QÑˆD�+Ø §	¡	¨$£Ñ/°#Ñ5ˆKØ Ð-Ð-Ü‰wÑ" 8¨ZÓ8Ð8øô ò =Ø"&§(¡(Ö<˜Q¨a©m’qÑ<ùÒ<�Ò<ð=ús$   Á&B5 Â5C#ÃCÃCÃC#Ã"C#c                 ó   — d|z  S )NzIN %srX   rª   s      r&   r¤   zIn.get_rhs_op  s   € Ø˜‰}Ðr(   c                 óÐ   •— |j                   j                  «       }| j                  «       r,|r*t        | j                  «      |kD  r| j                  ||«      S t        ‰| �  ||«      S r*   )rg   Úmax_in_list_sizerL   r@   r   Úsplit_parameter_list_as_sqlr˜   r\   )r%   rA   rB   r)  r2   s       €r&   r\   z	In.as_sql  sZ   ø€ Ø%Ÿ>™>×:Ñ:Ó<Ðà×$Ñ$Ô&Ù Ü�D—H‘H“Ð 0Ò0à×3Ñ3°H¸jÓIÐIÜ‰w‰~˜h¨
Ó3Ð3r(   c                 ó0  — |j                   j                  «       }| j                  ||«      \  }}| j                  ||«      \  }}dg}g }	t	        dt        |«      |«      D ]‘  }
|
dkD  r|j                  d«       |j                  d|z  «       |	j                  |«       ||
|
|z    }||
|
|z    }dj                  |«      }|j                  |«       |j                  d«       |	j                  |«       Œ“ |j                  d«       dj                  |«      |	fS )Nr/   r   z OR z%s IN (r0   r1   Ú )	rg   r)  rZ   rJ   Úranger@   r=   r>   r#  )r%   rA   rB   r)  r   rÏ   r   r¦   Úin_clause_elementsrI   ÚoffsetrC   rD   Úparam_groups                 r&   r*  zIn.split_parameter_list_as_sql  s  € ð &Ÿ>™>×:Ñ:Ó<ÐØ×*Ñ*¨8°ZÓ@‰ˆˆZØ×0Ñ0°¸:ÓF‰ˆˆZØ!˜UÐØˆÜ˜Aœs :›Ð0@ÓAò 
	'ˆFØ˜ŠzØ"×)Ñ)¨&Ô1Ø×%Ñ% i°#¡oÔ6Ø�M‰M˜*Ô%Ø�v Ð)9Ñ 9Ð:ˆDØ$ V¨fÐ7GÑ.GÐHˆKØŸ)™) D›/ˆKØ×%Ñ% kÔ2Ø×%Ñ% cÔ*Ø�M‰M˜+Õ&ð
	'ð 	×!Ñ! #Ô&Ø�w‰wÐ)Ó*¨FÐ2Ð2r(   )r3   r‡   rˆ   r‰   r  r   r]   r¤   r\   r*  r¬   r­   s   @r&   r  r  Ý  s&   ø„ à€Kôô)ô9ò4ô4ö3r(   r  c                   ó0   ‡ — e Zd ZdZdZˆ fd„Zˆ fd„Zˆ xZS )ÚPatternLookupz%%%s%%Fc                 óî   •— t        | j                  d«      s| j                  rC|j                  | j                     j                  |j                  «      }|j                  |«      S t        ‰| �!  ||«      S r_   )	r    r   r$   Úpattern_opsr‰   ÚformatÚpattern_escr˜   r¤   )r%   rB   r   Úpatternr2   s       €r&   r¤   zPatternLookup.get_rhs_op5  sh   ø€ ô �4—8‘8˜XÔ&¨$×*CÒ*CØ ×,Ñ,¨T×-=Ñ-=Ñ>×EÑEØ×&Ñ&óˆGð —>‘> #Ó&Ð&ä‘7Ñ% j°#Ó6Ð6r(   c                 óÊ   •— t         ‰| �  ||«      \  }}| j                  «       r<|r:| j                  s.| j                  |j
                  j                  |d   «      z  |d<   ||fS r�   )r˜   r]   rL   r$   Úparam_patternrg   Úprep_for_like_queryrå   s        €r&   r]   zPatternLookup.process_rhsG  sf   ø€ Ü‘gÑ)¨"¨jÓ9‰ˆˆVØ×#Ñ#Ô%©&¸×9RÒ9RØ×*Ñ*¨Z¯^©^×-OÑ-OØ�q‘	ó.ñ ˆF�1‰Ið �Fˆ{Ðr(   )r3   r‡   rˆ   r9  rT   r¤   r]   r¬   r­   s   @r&   r2  r2  1  s   ø„ Ø€MØ€Kô7÷$ð r(   r2  c                   ó   — e Zd ZdZy)ÚContainsÚcontainsNrê   rX   r(   r&   r<  r<  P  s   „ à�Kr(   r<  c                   ó   — e Zd ZdZy)Ú	IContainsÚ	icontainsNrê   rX   r(   r&   r?  r?  U  ó   „ à�Kr(   r?  c                   ó   — e Zd ZdZdZy)Ú
StartsWithÚ
startswithz%s%%N©r3   r‡   rˆ   r‰   r9  rX   r(   r&   rC  rC  Z  s   „ à€KØ�Mr(   rC  c                   ó   — e Zd ZdZy)ÚIStartsWithÚistartswithNrê   rX   r(   r&   rG  rG  `  s   „ à�Kr(   rG  c                   ó   — e Zd ZdZdZy)ÚEndsWithÚendswithz%%%sNrE  rX   r(   r&   rJ  rJ  e  s   „ à€KØ�Mr(   rJ  c                   ó   — e Zd ZdZy)Ú	IEndsWithÚ	iendswithNrê   rX   r(   r&   rM  rM  k  rA  r(   rM  c                   ó   — e Zd ZdZd„ Zy)ÚRanger-  c                 ó   — d|d   ›d|d   ›�S )NzBETWEEN r   z AND rO   rX   rª   s      r&   r¤   zRange.get_rhs_opt  s   � Ø&)¨!£f¨c°!ªfÐ5Ð5r(   N)r3   r‡   rˆ   r‰   r¤   rX   r(   r&   rP  rP  p  s   „ à€Kó6r(   rP  c                   ó   — e Zd ZdZdZd„ Zy)ÚIsNullÚisnullFc                 óÔ  — t        | j                  t        «      st        d«      ‚t        | j                  t
        «      r{| j                  j                  �/| j                  j                  dk(  r2|j                  j                  r| j                  rt        }|‚t        }|‚| j                  rt        nt        }|‚| j                  ||«      \  }}| j                  rd|z  |fS d|z  |fS )Nz>The QuerySet value for an isnull lookup must be True or False.r,  z
%s IS NULLz%s IS NOT NULL)r"   r   rÞ   rÚ   r   r	   r+   r‚   Ú!interprets_empty_strings_as_nullsr   r   rZ   )r%   rA   rB   Úresult_exceptionrF   rI   s         r&   r\   zIsNull.as_sql}  sÖ   € Ü˜$Ÿ(™(¤DÔ)ÜØPóð ô �d—h‘h¤Ô&Ø�x‰x�~‰~Ð%Ø—‘—‘ "Ò$Ø×'Ñ'×IÒIà48·H²H¤=Ð ð #Ð"ô CQÐ ð #Ð"ð 6:·X²X¥>Ä=Ð Ø"Ð"Ø×&Ñ& x°Ó<‰ˆˆVØ�8Š8Ø #Ñ% vÐ-Ð-à# cÑ)¨6Ð1Ð1r(   N)r3   r‡   rˆ   r‰   rT   r\   rX   r(   r&   rS  rS  x  s   „ à€KØ€Kó2r(   rS  c                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚRegexÚregexFc                 ó
  •— | j                   |j                  v rt        ‰| �  ||«      S | j	                  ||«      \  }}| j                  ||«      \  }}|j                  j                  | j                   «      }|||fz  ||z   fS r*   )r‰   r©   r˜   r\   rZ   r]   rg   Úregex_lookup)	r%   rA   rB   r   rÏ   r   r¦   Úsql_templater2   s	           €r&   r\   zRegex.as_sql—  s‡   ø€ Ø×Ñ˜z×3Ñ3Ñ3Ü‘7‘> (¨JÓ7Ð7à"×.Ñ.¨x¸ÓD‰OˆC�Ø"×.Ñ.¨x¸ÓD‰OˆC�Ø%Ÿ>™>×6Ñ6°t×7GÑ7GÓHˆLØ 3¨ *Ñ,¨j¸:Ñ.EÐEÐEr(   )r3   r‡   rˆ   r‰   rT   r\   r¬   r­   s   @r&   rY  rY  ’  s   ø„ à€KØ€K÷Fð Fr(   rY  c                   ó   — e Zd ZdZy)ÚIRegexÚiregexNrê   rX   r(   r&   r_  r_  ¡  s   „ à�Kr(   r_  c                   ó0   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zd„ Zˆ xZS )Ú
YearLookupc                 ó  — ddl m} t        | j                  |«      }| j                  j                  j                  }t        |t
        «      r|j                  j                  ||¬«      }|S |j                  j                  ||¬«      }|S )Nr   )ÚExtractIsoYear)Úiso_year)	Údjango.db.models.functionsrd  r"   r   r8   r   rg   Ú%year_lookup_bounds_for_datetime_fieldÚ!year_lookup_bounds_for_date_field)r%   rB   Úyearrd  re  r8   Úboundss          r&   Úyear_lookup_boundszYearLookup.year_lookup_bounds§  s‚   € Ý=ä˜dŸh™h¨Ó7ˆØ—x‘x—|‘|×0Ñ0ˆÜ�l¤MÔ2Ø—^‘^×IÑIØØ!ð Jó ˆFð ˆð	  —^‘^×EÑEØØ!ð Fó ˆFð ˆr(   c                 óx  •— | j                  «       rš| j                  ||| j                  j                  «      \  }}| j                  ||«      \  }}| j	                  ||«      }| j                  || j                  «      \  }}|j                  | j                  ||«      «       |›d|›�|fS t        ‰	| �)  ||«      S r¢   )rL   rZ   r   r]   Úget_direct_rhs_sqlrk  r   r>   Úget_bound_paramsr˜   r\   )
r%   rA   rB   rŸ   rI   r¥   rH   ÚstartÚfinishr2   s
            €r&   r\   zYearLookup.as_sql¸  s¯   ø€ ð ×#Ñ#Ô%ð #×.Ñ.¨x¸ÀTÇXÁXÇ\Á\ÓR‰OˆG�VØ×)Ñ)¨(°JÓ?‰JˆG�QØ×-Ñ-¨j¸'ÓBˆGØ ×3Ñ3°JÀÇÁÓI‰MˆE�6Ø�M‰M˜$×/Ñ/°°vÓ>Ô?Ú%¡wÐ/°Ð7Ð7Ü‰w‰~˜h¨
Ó3Ð3r(   c                 ó:   — |j                   | j                     |z  S r*   r¨   rª   s      r&   rm  zYearLookup.get_direct_rhs_sqlÆ  r«   r(   c                 ó   — t        d«      ‚)NzAsubclasses of YearLookup must provide a get_bound_params() method)r#   ©r%   ro  rp  s      r&   rn  zYearLookup.get_bound_paramsÉ  s   € Ü!ØOó
ð 	
r(   )r3   r‡   rˆ   rk  r\   rm  rn  r¬   r­   s   @r&   rb  rb  ¦  s   ø„ òô"4ò<ö
r(   rb  c                   ó   — e Zd Zd„ Zd„ Zy)Ú	YearExactc                  ó   — y)NzBETWEEN %s AND %srX   rª   s      r&   rm  zYearExact.get_direct_rhs_sqlÐ  s   € Ø"r(   c                 ó
   — ||fS r*   rX   rs  s      r&   rn  zYearExact.get_bound_paramsÓ  s   € Ø�vˆÐr(   N)r3   r‡   rˆ   rm  rn  rX   r(   r&   ru  ru  Ï  s   „ ò#ór(   ru  c                   ó   — e Zd Zd„ Zy)ÚYearGtc                 ó   — |fS r*   rX   rs  s      r&   rn  zYearGt.get_bound_paramsØ  ó
   € ØˆyÐr(   N©r3   r‡   rˆ   rn  rX   r(   r&   ry  ry  ×  ó   „ ór(   ry  c                   ó   — e Zd Zd„ Zy)ÚYearGtec                 ó   — |fS r*   rX   rs  s      r&   rn  zYearGte.get_bound_paramsÝ  ó	   € Øˆxˆr(   Nr|  rX   r(   r&   r  r  Ü  ó   „ ór(   r  c                   ó   — e Zd Zd„ Zy)ÚYearLtc                 ó   — |fS r*   rX   rs  s      r&   rn  zYearLt.get_bound_paramsâ  r�  r(   Nr|  rX   r(   r&   r„  r„  á  r‚  r(   r„  c                   ó   — e Zd Zd„ Zy)ÚYearLtec                 ó   — |fS r*   rX   rs  s      r&   rn  zYearLte.get_bound_paramsç  r{  r(   Nr|  rX   r(   r&   r‡  r‡  æ  r}  r(   r‡  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚUUIDTextMixinzs
    Strip hyphens from a value when filtering a UUIDField on backends without
    a native datatype for UUID.
    c                 ó(  •— |j                   j                  seddlm} | j	                  «       rt        | j                  «      | _         || j                  t        d«      t        d«      t        «       ¬«      | _        t        ‰| �%  ||«      \  }}||fS )Nr   )ÚReplaceú-r,  r7   )
r‚   Úhas_native_uuid_fieldrf  rŒ  rL   r	   r   r   r˜   r]   )r%   ræ   rB   rŒ  r   rI   r2   s         €r&   r]   zUUIDTextMixin.process_rhsñ  st   ø€ Ø×"Ñ"×8Ò8Ý:à×'Ñ'Ô)Ü  §¡›?�”ÙØ—‘œ% ›*¤e¨B£i¼i»kôˆDŒHô ‘gÑ)¨"¨jÓ9‰ˆˆVØ�Fˆ{Ðr(   )r3   r‡   rˆ   r’   r]   r¬   r­   s   @r&   rŠ  rŠ  ë  s   ø„ ñ÷

ð 
r(   rŠ  c                   ó   — e Zd Zy)Ú
UUIDIExactNr  rX   r(   r&   r�  r�  þ  r  r(   r�  c                   ó   — e Zd Zy)ÚUUIDContainsNr  rX   r(   r&   r’  r’    r  r(   r’  c                   ó   — e Zd Zy)ÚUUIDIContainsNr  rX   r(   r&   r”  r”    r  r(   r”  c                   ó   — e Zd Zy)ÚUUIDStartsWithNr  rX   r(   r&   r–  r–    r  r(   r–  c                   ó   — e Zd Zy)ÚUUIDIStartsWithNr  rX   r(   r&   r˜  r˜    r  r(   r˜  c                   ó   — e Zd Zy)ÚUUIDEndsWithNr  rX   r(   r&   rš  rš    r  r(   rš  c                   ó   — e Zd Zy)ÚUUIDIEndsWithNr  rX   r(   r&   rœ  rœ    r  r(   rœ  )MrÆ   r  rš   Údjango.core.exceptionsr   r   Ú"django.db.backends.base.operationsr   Údjango.db.models.expressionsr   r   r   r	   r
   Údjango.db.models.fieldsr   r   r   r   r   r   Údjango.db.models.query_utilsr   Údjango.utils.datastructuresr   Údjango.utils.deprecationr   Údjango.utils.functionalr   Údjango.utils.hashabler   r   r�   r•   r¯   r¹   rÌ   Úregister_lookuprÒ   rá   rè   rí   rñ   rô   r÷   r   r  r
  r  r  r  r  r2  r<  r?  rC  rG  rJ  rM  rP  rS  rY  r_  rb  ru  ry  r  r„  r‡  rŠ  r�  r’  r”  r–  r˜  rš  rœ  rX   r(   r&   ú<module>r§     s  ðÛ Û Û ç @Ý Eß LÕ L÷÷ õ =Ý 2Ý =Ý 3Ý /ôjEˆZô jEôZ$Ð# Tô $ô.!<�Fô !<÷H
ñ 
ô>3"Ð'?ô 3"ôl	G˜Vô 	Gð ×Ñô 4Ð$ mó  4ó ð 4ðF ×Ñôˆ]ó ó ðð ×ÑôÐ*¨Mó ó ðð ×ÑôÐ1°=ó ó ðð ×ÑôÐ'¨ó ó ðð ×ÑôÐ.°ó ó ð÷9ñ 9÷$	)ñ 	)ð ×Ñô	Ð,¨eó 	ó ð	ð ×Ñô(Ð-¨{ó (ó ð(ð ×Ñô(ØÐ3Ð5Gó(ó ð(ð ×Ñô'Ð*Ð,EÀxó 'ó ð'ð ×Ñô'Ð1°?ó 'ó ð'ð ×ÑôP3Ð	)¨=ó P3ó ðP3ôf�Mô ð> ×Ñôˆ}ó ó ðð ×Ñô�ó ó ðð ×Ñô�ó ó ðð
 ×Ñô �*ó  ó ð ð ×Ñôˆ}ó ó ðð
 ×Ñô�ó ó ðð ×Ñô6Ð,¨mó 6ó ð6ð ×Ñô2ˆ]ó 2ó ð2ð2 ×ÑôFˆMó Fó ðFð ×ÑôˆUó ó ðô&
�ô &
ôR�
˜Eô ôˆZ˜ô ô
ˆjÐ,ô ô
ˆZ˜ô ô
ˆj˜/ô ÷
ñ ð& ×Ñô	� ó 	ó ð	ð ×Ñô	�= (ó 	ó ð	ð ×Ñô	�M 9ó 	ó ð	ð ×Ñô	�] Jó 	ó ð	ð ×Ñô	�m [ó 	ó ð	ð ×Ñô	�= (ó 	ó ð	ð ×Ñô	�M 9ó 	ó ñ	r(   