+
    ˜h©jí»  ã            
      ó´  € R t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIt^ RIH	t	 ^ RIH
t
 ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RI H!t! ^RI H"t" ^RI H#t# ^RI$H%t% ^RI$H&t& ^RI'H(t( ^R I)H*t* ^R!I+H,t, ^R"I+H-t- ^R#I+H.t. ^R$I+H/t/ ^R%I+H0t0 ^R&I+H1t1 ^R'I+H2t2 ^R(I+H3t3 ^R)I+H4t4 ^R*I+H5t5 ^R+I+H6t6 ^R,I+H7t7 ^R-I+H8t8 ^R.I9H:t: ^R/I;H<t< ^R0I;H=t= ^R1I;H>t> ^R2I;H?t? ^R3I;H@t@ ^R4I;HAtA ^R5I;HBtB ^R6IHCtC ^R7IHDtD ^R8IHEtE ^R9IFHGtG ^R:IFHHtH ]P,                  '       da   ^R;IHItI ^R<IHJtJ ^R=IHKtK ^R>I+HLtL ^R?I+HMtM ^R@I;HNtN ^RAI;HOtO ^RBI;HPtP ^RCIHQtQ ^RDIHRtR ^REIHStS ^RFITHUtU ^RGITHVtV ^RHITHWtW ^RIITHXtX ^RJIYHZtZ ]! RKRLRM7      t[R�RN RO llt\RP RQ lt]RR RS lt^RT RU lt_RV RW lt`RXRYRZRYR[RYR\RYR]RY/R^ R_ lltaR` Ra ltbRb tcRc tdRd teRe Rf ltfRg tgRh Ri lthRj tiRk Rl ltjRm tkRn tl ! Ro Rp4      tmRq tn ! Rr Rs]m4      to ! Rt Ru]p4      tq ! Rv Rw]m4      trRx Ry ltsR�Rz R{ lltt]R| R} l4       tu]R~ R l4       tuR€ R� ltuR‘R‚ ltv ! Rƒ R„]Pî                  4      tx ! R… R†]H4      ty ! R‡ Rˆ]x4      tzR�R‰ RŠ llt{R‹ RŒ lt|R� RŽ lt}R# )’z9High level utilities which build upon other modules here.)Úannotations)ÚdequeN)Úchain)ÚAbstractSet)ÚAny)ÚCallable)Úcast)Ú
Collection)ÚDict)ÚIterable)ÚIterator)ÚList)ÚOptional)Úoverload)ÚSequence)ÚTuple)ÚTYPE_CHECKING)ÚTypeVar)ÚUnion)Ú	coercions)Ú	operators)Úroles)Úvisitors©Úis_text_clause)Ú_deep_annotate)Ú_deep_deannotate)Ú_shallow_annotate)Ú_expand_cloned)Ú_from_objects)ÚHasCacheKey)Úsort_tables)Ú_find_columns)Ú_label_reference)Ú_textual_label_reference)ÚBindParameter)ÚClauseElement)ÚColumnClause)ÚColumnElement)ÚGrouping)ÚKeyedColumnElement)ÚLabel)ÚNamedColumn)ÚNull)ÚUnaryExpression)ÚColumn)ÚAlias)Ú
FromClause)ÚFromGrouping)ÚJoin)ÚScalarSelect)Ú
SelectBase)ÚTableClause)Ú_ET)Úexc)Úutil)ÚLiteral)ÚProtocol)Ú_EquivalentColumnMap)Ú_LimitOffsetType)Ú_TypeEngineArgument)ÚBinaryExpression)Ú
TextClause)Ú_JoinTargetElement)Ú_SelectIterable)Ú
Selectable)Ú_TraverseCallableType)ÚExternallyTraversible)ÚExternalTraversal)Ú_AnyExecuteParams)Ú_AnyMultiExecuteParams)Ú_AnySingleExecuteParams)Ú_CoreSingleExecuteParams)ÚRowÚ_CEúColumnElement[Any])Úboundc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
é   Úar1   ÚbÚa_subsetúOptional[FromClause]Úconsider_as_foreign_keysz(Optional[AbstractSet[ColumnClause[Any]]]ÚreturnzColumnElement[bool]© )Úformats   "ÚN/var/www/html/bestweb/venv/lib/python3.14/site-packages/sqlalchemy/sql/util.pyÚ__annotate__rZ   ^   s;   € ÷ !ñ !Øð!àð!ð #ð!ð Gð	!ð
 ñ!ó    c                ó6   € \         P                  ! V VVVR7      # )aÞ  Create a join condition between two tables or selectables.

e.g.::

    join_condition(tablea, tableb)

would produce an expression along the lines of::

    tablea.c.id == tableb.c.tablea_id

The join is determined based on the foreign key relationships
between the two selectables.   If there are multiple ways
to join, or no way to join, an error is raised.

:param a_subset: An optional expression that is a sub-component
    of ``a``.  An attempt will be made to join to just this sub-component
    first before looking at the full ``a`` construct, and if found
    will be successful even if there are other ways to join to ``a``.
    This allows the "right side" of a join to be passed thereby
    providing a "natural join".

)rS   rU   )r3   Ú_join_condition)rQ   rR   rS   rU   s   &&&&rY   Újoin_conditionr^   ^   s#   € ô8 ×ÒØ	Ø	ØØ!9ô	ð r[   c               ó$   € V ^8„  d   QhRRRRRR/# )rP   ÚclauseszList[FromClause]Újoin_tor1   rV   ú	List[int]rW   )rX   s   "rY   rZ   rZ   ‚   s$   € ÷ ñ ØðØ(2ðàñr[   c                óÀ   € \        \        V4      4      p. p\        V 4       F8  w  rEV F-  pVP                  V4      '       g   K  VP	                  V4       K/  	  K:  	  V# )ap  Given a list of FROM clauses and a selectable,
return the first index and element from the list of
clauses which can be joined against the selectable.  returns
None, None if no match is found.

e.g.::

    clause1 = table1.join(table2)
    clause2 = table4.join(table5)

    join_to = table2.join(table3)

    find_join_source([clause1, clause2], join_to) == clause1

)Úlistr   Ú	enumerateÚis_derived_fromÚappend)r`   ra   ÚselectablesÚidxÚiÚfÚss   &&     rY   Úfind_join_sourcerm   ‚   sV   € ô& ”} WÓ-Ó.€KØ
€CÜ˜'Ö"‰ˆÛˆAØ× Ñ  ×#Ô#Ø—
‘
˜1–ó ñ #ð €Jr[   c               ó$   € V ^8„  d   QhRRRRRR/# )rP   r`   úSequence[FromClause]Ú	join_fromr1   rV   rb   rW   )rX   s   "rY   rZ   rZ   ž   s$   € ÷ )ñ )Ø!ð)Ø.8ð)àñ)r[   c                óº  € \        \        V4      4      p. p\        V 4       F9  w  rEV F.  pVP                  V4      '       g   K  VP	                  V4        K7  	  K;  	  \        V4      ^8”  dm   . pV FZ  pW,          pV FI  p\        \        V4      4      P                  \        V4      4      '       g   K7  VP	                  V4        KX  	  K\  	  V'       d   V# V# )z‚Given a list of FROM clauses and a selectable,
return the indexes from the list of
clauses which is derived from the selectable.

)	rd   r   re   rf   rg   ÚlenÚsetÚsurface_selectablesÚintersection)	r`   rp   rh   Úliberal_idxrj   rk   rl   Úconservative_idxri   s	   &&       rY   Ú#find_left_clause_that_matches_givenrx   ž   sÑ   € ô ”} YÓ/Ó0€KØ€KÜ˜'Ö"‰ˆÛˆAð × Ñ  ×#Ô#Ø×"Ñ" 1Ô%Úó ñ #ô" ˆ;Ó˜!ÔØÐÛˆCØ•ˆAÛ �ÜÔ*¨1Ó-Ó.×;Ñ;Ü'¨Ó*÷ô ð %×+Ñ+¨CÔ0Úó !ñ ÷ Ø#Ð#àÐr[   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rP   r`   ro   ra   rA   ÚonclauseúOptional[ColumnElement[Any]]rV   rb   rW   )rX   s   "rY   rZ   rZ   Ê   s0   € ÷ 6ñ 6Ø!ð6àð6ð +ð6ð ñ	6r[   c           
     ó>  € . p\        \        V4      4      p\        V 4      ^8”  d   Ve   Rp\        V4      pMRpRp\	        V 4       F¹  w  rxVP                  V.4       Fž  p	V'       d`   Vf   Q h\        VP                  4      P                  V	P                  4      P                  V4      '       d   VP                  V4        K  Kj  Vf   \        P                  ! W‰4      '       g   KŒ  VP                  V4        K·  	  K»  	  \        V4      ^8”  dV   \        \        V  Uu. uF  p\        VP                  4      NK  	  up!  4      p
V Uu. uF  qpV,          V
9  g   K  VNK  	  ppV'       g"   Ve   \        \!        \        V 4      4      4      # V# u upi u upi )aì  Given a list of FROM clauses, a selectable,
and optional ON clause, return a list of integer indexes from the
clauses list indicating the clauses that can be joined from.

The presence of an "onclause" indicates that at least one clause can
definitely be joined from; if the list of clauses is of length one
and the onclause is given, returns that index.   If the list of clauses
is more than length one, and the onclause is given, attempts to locate
which clauses contain the same columns.

NTF)rs   r   rr   r"   re   Ú
differenceÚcÚunionÚ
issupersetrg   r3   Ú	_can_joinr   r   Ú_hide_fromsrd   Úrange)r`   ra   rz   ri   rh   Úresolve_ambiguityÚcols_in_onclauserj   rk   rl   Útoremoves   &&&        rY   Úfind_left_clause_to_join_fromr‡   Ê   sd  € ð  €CÜ”m GÓ,Ó-€Kô ˆ7ƒ|�aÔ˜HÒ0Ø ÐÜ(¨Ó2Ñà!ÐØÐä˜'Ö"‰ˆØ×'Ñ'¨¨Ö,ˆAß Ø'Ò3Ð3Ð3Ü�q—s‘s“8—>‘> !§#¡#Ó&×1Ñ1Ð2B×CÒCØ—J‘J˜q”MÚñ Dð Ò%¬¯ª¸×)=Ô)=Ø—
‘
˜1”Úó -ñ #ô ˆ3ƒx�!„|ô Ü¹7ÓC¹7°a”N 1§=¡=Ö1¹7ÑCÑDó
ˆñ Ó<™#�Q¨¥°8Ñ!;�qˆq™#ˆÐ<÷ �8Ò'Ü”Eœ#˜g›,Ó'Ó(Ð(àˆ
ùò Dùâ<s   Ä#FÅFÅ"Fc               ó$   € V ^8„  d   QhRRRRRR/# )rP   ÚfnzOCallable[[BinaryExpression[Any], ColumnElement[Any], ColumnElement[Any]], None]ÚexprrM   rV   ÚNonerW   )rX   s   "rY   rZ   rZ     s*   € ÷ ?ñ ?ð	ð?ð ð	?ð
 
ñ?r[   c                óL   a aa€ . oR V VV3R llo\        S! V4      4       RoR# )a¡  Produce a traversal of the given expression, delivering
column comparisons to the given function.

The function is of the form::

    def my_fn(binary, left, right): ...

For each binary expression located which has a
comparison operator, the product of "left" and
"right" will be delivered to that function,
in terms of that binary.

Hence an expression like::

    and_((a + b) == q + func.sum(e + f), j == r)

would have the traversal:

.. sourcecode:: text

    a <eq> q
    a <eq> e
    a <eq> f
    b <eq> q
    b <eq> e
    b <eq> f
    j <eq> r

That is, every combination of "left" and
"right" that doesn't further contain
a binary comparison is passed as pairs.

c               ó    € V ^8„  d   QhRRRR/# )rP   Úelementr&   rV   zIterator[ColumnElement[Any]]rW   )rX   s   "rY   rZ   Ú*visit_binary_product.<locals>.__annotate__,  s   € ÷ 'ñ '�}ð 'Ð)Eñ 'r[   c              3  óH  <"  € \        V \        4      '       d   V x € R# V P                  R 8X  d­   \        P                  ! V P
                  4      '       d‡   SP                  ^ V 4       S! V P                  4       F,  pS! V P                  4       F  pS! S^ ,          W4       K  	  K.  	  SP                  ^ 4       V P                  4        F  pS! V4       K  	  R# \        V \        4      '       d   V x € V P                  4        F  pS! V4       Rj  x€L
  K  	  R#  L
5i)ÚbinaryN)Ú
isinstancer4   Ú__visit_name__r   Úis_comparisonÚoperatorÚinsertÚleftÚrightÚpopÚget_childrenr'   )rŽ   ÚlÚrÚelemr‰   ÚstackÚvisits   &   €€€rY   rŸ   Ú#visit_binary_product.<locals>.visit,  så   øé € Ü�gœ|×,Ò,ð ŒMØ×#Ñ# xÔ/´I×4KÒ4KØ×Ñ÷5
ò 5
ð �L‰L˜˜GÔ$Ù˜7Ÿ<™<Ö(�Ù˜wŸ}™}Ö-�AÙ�u˜Q•x Ö&ó .ñ )ð �I‰I�aŒLØ×,Ñ,Ö.�Ù�d–ó /ô ˜'¤<×0Ò0Ø’Ø×,Ñ,Ö.�Ù  ›;×&Ò&ó /Ù&ùs   ƒAD"ÁB>D"ÄD ÄD"N)rd   )r‰   rŠ   rž   rŸ   s   f&@@rY   Úvisit_binary_productr¡     s(   ú€ ðN *,€E÷'ò 'ô* 	‰ˆt‹ÔØ‚Er[   Úcheck_columnsFÚinclude_aliasesÚinclude_joinsÚinclude_selectsÚinclude_crudc               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )rP   Úclauser&   r¢   Úboolr£   r¤   r¥   r¦   rV   zList[TableClause]rW   )rX   s   "rY   rZ   rZ   E  sP   € ÷ (ñ (Øð(ð ð(ð ð	(ð
 ð(ð ð(ð ð(ð ñ(r[   c               ój  a€ . o/ pV'       d   SP                   ;VR&   VR&   V'       d   SP                   VR&   V'       d   SP                   ;VR&   ;VR&   ;VR&   VR&   V'       d   V3R l;VR	&   ;VR
&   VR&   V'       d   V3R lpWvR&   SP                   VR&   \        P                  ! V / V4       S# )z1locate Table objects within the given expression.ÚselectÚcompound_selectÚjoinÚaliasÚsubqueryÚtablesampleÚlateralc                ó:   <€ SP                  V P                  4      # ©N©rg   Útable)ÚentÚtabless   &€rY   Ú<lambda>Úfind_tables.<locals>.<lambda>`  s   ø€ ˜Ÿ™ c§i¡iÔ0r[   r–   ÚupdateÚdeletec                ó>   <€ SP                  V P                  4       R # r³   r´   )Úcolumnr·   s   &€rY   Úvisit_columnÚ!find_tables.<locals>.visit_columne  s   ø€ Ø�M‰M˜&Ÿ,™,Ö'r[   r½   rµ   )rg   r   Útraverse)	r¨   r¢   r£   r¤   r¥   r¦   Ú	_visitorsr¾   r·   s	   &$$$$$  @rY   Úfind_tablesrÂ   E  sÕ   ø€ ð !#€FØ79€IçØ=C¿]¹]ÐJˆ	�(Ñ˜iÐ(9Ñ:çØ"ŸM™Mˆ	�&Ñçð $*§=¡=ð	1ˆ	�'Ñð 	1˜Y zÑ2ð 	1°YØñ6
à�iÑ çä0ð	
ˆ	�(Ñð 	
˜i¨Ñ1°I¸hÑ4G÷ õ	(ð +�(ÑàŸ™€IˆgÑä×Ò�f˜b )Ô,Ø€Mr[   c               ó    € V ^8„  d   QhRRRR/# )rP   r¨   r   rV   rW   )rX   s   "rY   rZ   rZ   p  s   € ÷ ,ñ ,˜Cð , Cñ ,r[   c                ób  € \         P                  ! 4       p. p\        V .4      pV'       Edƒ   VP                  4       p\	        V\
        4      '       Ed1   \	        V\        4      '       d'   \        P                  ! VP                  4      '       gõ   \	        V\        4      '       db   \	        VP                  \        4      '       gB   VP                  p\	        V\        4      '       d   VP                  pVP                  V4       Kã  \	        V\        4      '       d!   VP                  pVP                  V4       EK  \	        V\         4      '       d   EK2  WA9  d&   VP#                  V4       VP                  V4       EK]  EK`  VP%                  4        F  pVP                  V4       K  	  EK‹  V# )zmBreak up an 'order by' expression into individual column-expressions,
without DESC/ASC/NULLS FIRST/NULLS LAST)r9   Ú
column_setr   Úpopleftr’   r(   r.   r   Úis_ordering_modifierÚmodifierr+   rŽ   r4   r)   rg   r#   r$   Úaddrš   )r¨   ÚcolsÚresultrž   Útr~   s   &     rY   Úunwrap_order_byrÍ   p  s,  € ô �?Š?Ó€DØ€FÜ�6�(‹O€E÷ ˆ%Ø�M‰M‹OˆÜ�aœ×'Ó'Ü˜1œo×.Ò.Ü×1Ò1°!·*±*×=Ò=ä˜!œU×#Ò#¬JØ—	‘	œ<÷-ò -ð —I‘I�ä˜a¤×*Ò*ØŸ	™	�Aà—‘˜Q”ÙÜ˜AÔ/×0Ò0Ø—I‘I�à—‘˜Q”ÚÜ˜!Ô6×8Ò8ÚØŒ}Ø—‘˜”Ø—‘˜a× ò ð
 —^‘^Ö%�Ø—‘˜Q–ô &à€Mr[   c                ó>   € R  R lp\         P                  ! V / V4      # )c               ó$   € V ^8„  d   QhRRRRRR/# )rP   rŽ   rE   Úkwr   rV   úOptional[ExternallyTraversible]rW   )rX   s   "rY   rZ   Ú,unwrap_label_reference.<locals>.__annotate__   s$   € ÷ ñ Ø&ðØ.1ðà	(ñr[   c                ó„   € \        V \        4      '       d   V P                  # \        V \        4      '       d   Q R4       hR# )Fz&can't unwrap a textual label referenceN)r’   r#   rŽ   r$   )rŽ   rÐ   s   &,rY   ÚreplaceÚ'unwrap_label_reference.<locals>.replace   s8   € ô �gÔ/×0Ò0Ø—?‘?Ð"Ü˜Ô!9×:Ò:ØBÐBÓB�5Ùr[   )r   Úreplacement_traverse)rŽ   rÔ   s   & rY   Úunwrap_label_referencer×   Ÿ  s   € õô ×(Ò(¨°"°gÓ>Ð>r[   c           
     ó   € V  Uu0 uF  pVP                   e   VP                  MTkK!  	  pp\        \        V Uu. uF  p\	        V4      NK  	  up!  4      pV Uu. uF  q"V9  g   K  VNK  	  up# u upi u upi u upi )zÌGiven the columns clause and ORDER BY of a selectable,
return a list of column expressions that can be added to the collist
corresponding to the ORDER BY, without repeating those already
in the collist.

)Ú_order_by_label_elementrŽ   rd   r   rÍ   )ÚcollistÚorder_byÚcolÚcols_already_presentÚoÚto_look_fors   &&    rY   Ú expand_column_list_from_order_byrà   ¬  sˆ   € ñ óáˆCð ×2Ñ2Ò>ˆ�ŠÀCÒGÙð ð ô
 ”u¹8ÓD¹8°aœ¨qÖ1¹8ÑDÑEÓF€Ká&ÓJ™;�CÐ5IÑ*I�CˆC™;ÑJÐJùòùò
 EùâJs   …%A1ºA6ÁA;Á(A;c                ó<   € \        V4       F  pW8X  g   K   R# 	  R# )zÀGiven a target clause and a second to search within, return True
if the target is plainly present in the search without any
subqueries or aliases involved.

Basically descends through Joins.

TF)rt   )r¨   Úsearchr�   s   && rY   Úclause_is_presentrã   ½  s    € ô $ FÖ+ˆØŽ>Úñ ,ñ r[   c               ó    € V ^8„  d   QhRRRR/# )rP   r¨   r1   rV   zIterator[FromClause]rW   )rX   s   "rY   rZ   rZ   Í  s   € ÷ ñ  ð Ð0Dñ r[   c              #  ó0  "  € \        V \        4      '       d=   \        V P                  4       R j  x€L
  \        V P                  4       R j  x€L
  R # \        V \
        4      '       d    \        V P                  4       R j  x€L
  R # V x € R #  L^ LC L5ir³   )r’   r3   Útables_from_leftmostr—   r˜   r2   rŽ   )r¨   s   &rY   ræ   ræ   Í  se   é € Ü�&œ$×ÒÜ'¨¯©Ó4×4Ð4Ü'¨¯©Ó5×5Ò5Ü	�FœL×	)Ò	)Ü'¨¯©Ó7×7Ò7àŒñ 	5Ù5á7ùs3   ‚/B±B²BÁBÁ4BÂBÂBÂBÂBc              #  ó4  "  € V .pV'       d‰   VP                  4       pVx € \        V\        4      '       d*   VP                  VP                  VP
                  34       K[  \        V\        4      '       g   Ks  VP                  VP                  4       K�  R # 5ir³   )	r™   r’   r3   Úextendr—   r˜   r2   rg   rŽ   ©r¨   rž   r�   s   &  rY   rt   rt   ×  sg   é € ØˆH€Eß
Ø�y‰y‹{ˆØŠ
Ü�dœD×!Ò!Ø�L‰L˜$Ÿ)™) T§Z¡ZÐ0Ö1Ü˜œl×+Ô+Ø�L‰L˜Ÿ™Ö&ñ ùs   ‚BŽA&BÁ9Bc               ó    € V ^8„  d   QhRRRR/# )rP   r¨   r&   rV   zIterator[ClauseElement]rW   )rX   s   "rY   rZ   rZ   â  s   € ÷ ñ  ]ð Ð7Nñ r[   c              #  ó  "  € V .pV'       dö   VP                  4       p\        V\        \        34      '       d   Vx € \        V\        4      '       d*   VP                  VP                  VP                  34       Kw  \        V\        4      '       d   VP                  VP                  4       Kª  \        V\        4      '       d2   VP                  e   VP                  VP                  4       Kë  Vx € Kñ  Vf   K÷  Vx € Ký  R # 5ir³   )r™   r’   r6   r0   r3   rè   r—   r˜   r2   rg   rŽ   r'   rµ   ré   s   &  rY   Úsurface_selectables_onlyrì   â  s°   é € ØˆH€Eß
Ø�y‰y‹{ˆÜ�dœ[¬%Ð0×1Ò1ØŠJÜ�dœD×!Ò!Ø�L‰L˜$Ÿ)™) T§Z¡ZÐ0Ö1Ü˜œl×+Ò+Ø�L‰L˜Ÿ™Ö&Ü˜œl×+Ò+Ø�z‰zÒ%Ø—‘˜TŸZ™ZÖ(à”
ØÔØŒJñ ùs   ‚DŽC*DÃ=Dc                ó&  € \         \        3p\        V .4      pV'       dq   VP                  4       pWP                  9   d   VP                  V,          # VP                  4        F'  p\        WR4      '       d   K  VP                  V4       K)  	  Kx  R # r³   )r2   r5   r   rÆ   Ú_annotationsrš   r’   rg   )r½   Úannotation_nameÚfilter_rž   r�   Úsubs   &&    rY   Úextract_first_column_annotationrò   õ  st   € ÜœZÐ(€Gä�6�(‹O€Eß
Ø�}‰}‹ˆØ×/Ñ/Ô/Ø×$Ñ$ _Õ5Ð5Ø×$Ñ$Ö&ˆCÜ˜#×'Ò'ÙØ�L‰L˜Öó 'ñ r[   c               ó$   € V ^8„  d   QhRRRRRR/# )rP   r—   r1   r˜   rV   r©   rW   )rX   s   "rY   rZ   rZ     s!   € ÷ ñ ˜jð °ð Àñ r[   c                ól   € \        \        \        V 4      4      P                  \        V4      4      4      # )z:Return True if left/right have some overlapping selectable)r©   rs   rt   ru   )r—   r˜   s   &&rY   Úselectables_overlaprõ     s0   € ô ÜÔ Ó%Ó&×3Ñ3Ô4GÈÓ4NÓOóð r[   c                óL   a€ . oV3R lp\         P                  ! V / RV/4       S# )z¤Return an ordered list of "bound" values in the given clause.

E.g.::

    >>> expr = and_(table.c.foo == 5, table.c.foo == 7)
    >>> bind_values(expr)
    [5, 7]
c                ó>   <€ SP                  V P                  4       R # r³   )rg   Úeffective_value)ÚbindÚvs   &€rY   Úvisit_bindparamÚ$bind_values.<locals>.visit_bindparam  s   ø€ Ø	�‰�×%Ñ%Ö&r[   Ú	bindparam)r   rÀ   )r¨   rû   rú   s   & @rY   Úbind_valuesrþ     s-   ø€ ð 	€Aõ'ô ×Ò�f˜b ;°Ð"@ÔAØ€Hr[   c                óz   € \        V \        4      '       d   V P                  R R4      p RV ,          # \        V 4      # )Ú'z''z'%s')r’   ÚstrrÔ   Úrepr)rŽ   s   &rY   Ú_quote_ddl_exprr    s4   € Ü�'œ3×ÒØ—/‘/ # tÓ,ˆØ˜ÕÐä�G‹}Ðr[   c                  ó\   € ] tR tRt$ ^ tR]R&   ^tR]R&   ^tR]R&   RtR]R&   R R lt	R	t
R
# )Ú
_repr_basei'  ÚintÚ_LISTÚ_TUPLEÚ_DICTÚ	max_charsc               ó    € V ^8„  d   QhRRRR/# )rP   Úvaluer   rV   r  rW   )rX   s   "rY   rZ   Ú_repr_base.__annotate__0  s   € ÷ ñ ˜3ð  3ñ r[   c                	óÒ   € \        V4      p\        V4      pW0P                  8”  dA   V P                  ^,          pV^ V RW0P                  ,
          ,          ,           W$) R ,           pV# )rP   z# ... (%d characters truncated) ... N)r  rr   r
  )Úselfr  ÚrepÚlenrepÚsegment_lengths   &&   rY   ÚtruncÚ_repr_base.trunc0  sk   € Ü�5‹kˆÜ�S“ˆØ—N‘NÔ"Ø!Ÿ^™^¨qÕ0ˆNà�A�nÐ%à9Ø§¡Õ.õ0õð
 �oÐ&Ð'õ(ð ð ˆ
r[   rW   N)r
  )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r  Ú__annotations__r  r	  Ú	__slots__r  Ú__static_attributes__rW   r[   rY   r  r  '  s1   ‡ Ø€Eˆ3ƒNØ€FˆCƒOØ€Eˆ3ƒNà€IàƒN÷ñ r[   r  c                óF   € \        4       pR Vn        VP                  V 4      # ©é,  )r  r
  r  )r  Úrps   & rY   Ú_repr_single_valuer   @  s   € Ü	‹€BØ€B„LØ�8‰8�E‹?Ðr[   c                  ó:   € ] tR tRtRtR	tR
R R lltR R ltRtR# )Ú	_repr_rowiF  zProvide a string view of a row.c               ó    € V ^8„  d   QhRRRR/# )rP   ÚrowzRow[Any]r
  r  rW   )rX   s   "rY   rZ   Ú_repr_row.__annotate__K  s   € ÷ #ñ #˜Hð #°ñ #r[   c                	ó   € Wn         W n        R # r³   )r$  r
  )r  r$  r
  s   &&&rY   Ú__init__Ú_repr_row.__init__K  s   € ØŒØ"Žr[   c               ó   € V ^8„  d   QhRR/# ©rP   rV   r  rW   )rX   s   "rY   rZ   r%  O  s   € ÷ 
ñ 
˜#ñ 
r[   c                	ó®   a€ V P                   oR RP                  V3R lV P                   4       4      : \        V P                  4      ^8X  d   RMR: R2# )Ú(ú, c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   ©Ú.0r  r  s   & €rY   Ú	<genexpr>Ú%_repr_row.__repr__.<locals>.<genexpr>R  s   øé € Ð9± u‘e˜E—l�l³ùó   ƒÚ,Ú Ú))r  r­   r$  rr   )r  r  s   &@rY   Ú__repr__Ú_repr_row.__repr__O  sC   ø€ Ø—
‘
‰à�I‰IÔ9°·²Ó9Õ9Ü�t—x‘x“= AÔ%‰C¨2Ò-ð
ð 	
r[   )r
  r$  N)r$  r  )	r  r  r  r  Ú__doc__r  r'  r7  r  rW   r[   rY   r"  r"  F  s   † Ù)à€I÷#÷
ñ 
r[   r"  c                  ó"   € ] tR tRtR R ltRtR# )Ú_long_statementiW  c               ó   € V ^8„  d   QhRR/# r*  rW   )rX   s   "rY   rZ   Ú_long_statement.__annotate__X  s   € ÷ %ñ %˜ñ %r[   c                	ó–   € \        V 4      pVR 8”  d$   ^úp^dpW,
          V,
          pV ^ V  RV RW) R  2# \        P                  V 4      # )iô  ú ... z characters truncated ... N)rr   r  Ú__str__)r  ÚlselfÚlleftÚlrightr  s   &    rY   r@  Ú_long_statement.__str__X  se   € Ü�D“	ˆØ�3Œ;ØˆEØˆFØ•M FÕ*ˆEà˜˜%�=�/  u gð .,Ø,0°°¨NÐ+;ð=ðô
 —;‘;˜tÓ$Ð$r[   rW   N)r  r  r  r  r@  r  rW   r[   rY   r;  r;  W  s   † ÷%ñ %r[   r;  c                  ó‚   € ] tR tRtRtRtRR R lltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltRtR# )Ú_repr_paramsif  z¤Provide a string view of bound parameters.

Truncates display to a given number of 'multi' parameter sets,
as well as long values to a given number of characters.

Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	rP   ÚparamszOptional[_AnyExecuteParams]Úbatchesr  Ú
max_paramsr
  ÚismultizOptional[bool]rW   )rX   s   "rY   rZ   Ú_repr_params.__annotate__p  s<   € ÷ %ñ %à+ð%ð ð%ð ð	%ð
 ð%ð  ñ%r[   c                	óB   € Wn         WPn        W n        W@n        W0n        R # r³   )rH  rK  rI  r
  rJ  )r  rH  rI  rJ  r
  rK  s   &&&&&&rY   r'  Ú_repr_params.__init__p  s   € ð ŒØŒØŒØ"ŒØ$Žr[   c               ó   € V ^8„  d   QhRR/# r*  rW   )rX   s   "rY   rZ   rL  ~  s   € ÷ +ñ +˜#ñ +r[   c           	     	ó–  € V P                   f   V P                  V P                  4      # \        V P                  \        4      '       d   V P
                  pMu\        V P                  \        4      '       d   V P                  pMH\        V P                  \        4      '       d   V P                  pMV P                  V P                  4      # V P                   '       dÈ   \        RV P                  4      p\        V P                  4      V P                  8”  d}   RpRP                  V P                  VR V P                  ^,
           V4      ^ R W0P                  \        V P                  4      3,          V P                  VRR  V4      R,          34      # V P                  W!4      # V P                  \        RV P                  4      V4      # )NrH   z8 ... displaying %i of %i total bound parameter sets ... Ú :é   NNrI   éÿÿÿÿéþÿÿÿ)rK  r  rH  r’   rd   r  Útupler  Údictr	  r   rr   rI  r­   Ú_repr_multirF  )r  ÚtypÚmulti_paramsÚmsgs   &   rY   r7  Ú_repr_params.__repr__~  sx  € Ø�<‰<ÒØ—:‘:˜dŸk™kÓ*Ð*ä�d—k‘k¤4×(Ò(Ø—*‘*‰Cä˜Ÿ™¤U×+Ò+Ø—+‘+‰CÜ˜Ÿ™¤T×*Ò*Ø—*‘*‰Cà—:‘:˜dŸk™kÓ*Ð*à�<�<ˆ<ÜØ(Ø—‘óˆLô
 �4—;‘;Ó $§,¡,Ô.àNð ð —x‘xà×(Ñ(Ø(Ð);¨4¯<©<¸!Õ+;Ð<Øóð ˜Bð ð Ÿ|™|¬S°·±Ó-=Ð>Õ>Ø×(Ñ(¨°b°cÐ):¸CÓ@ÀÕDðó	ð 	ð ×'Ñ'¨Ó:Ð:à×$Ñ$ÜØ-Ø—K‘Kóð óð r[   c               ó$   € V ^8„  d   QhRRRRRR/# )rP   rY  rH   rX  r  rV   r  rW   )rX   s   "rY   rZ   rL  «  s(   € ÷ %ñ %à,ð%ð ð%ð 
ñ	%r[   c                	óÒ  a a€ V'       dº   \        V^ ,          \        4      '       d   S P                  oMr\        V^ ,          \        4      '       d   S P                  oMH\        V^ ,          \
        4      '       d   S P                  oMQ R\        T^ ,          4      ,          4       hRP                  VV 3R lV 4       4      pMRpVS P                  8X  d
   RV,          # RV,          # )é    zUnknown parameter type %sr-  c              3  óH   <"  € T F  pSP                  VS4      x € K  	  R # 5ir³   )rF  )r0  rH  Ú	elem_typer  s   & €€rY   r1  Ú+_repr_params._repr_multi.<locals>.<genexpr>¼  s$   øé € ð !ÙCO¸�×!Ñ! &¨)×4Ð4Ã<ùs   ƒ"r5  ú[%s]z(%s))	r’   rd   r  rU  r  rV  r	  Útyper­   )r  rY  rX  Úelementsr`  s   f&& @rY   rW  Ú_repr_params._repr_multi«  s¼   ù€ ÷
 Ü˜, q�/¬4×0Ò0Ø ŸJ™J‘	Ü˜L¨�O¬U×3Ò3Ø ŸK™K‘	Ü˜L¨�O¬T×2Ò2Ø ŸJ™J‘	ðÐ9Ü˜ a�Ó)õó �uð —y‘yõ !ÙCOó!ó ‰Hð ˆHà�$—*‘*ÔØ˜HÕ$Ð$à˜HÕ$Ð$r[   c               ó    € V ^8„  d   QhRRRR/# )rP   rH  zIterable[Any]rV   r   rW   )rX   s   "rY   rZ   rL  Ç  s   € ÷ 'ñ ' =ð '°Sñ 'r[   c                	ó´   € \        V4      p\        V4      pW0P                  8”  d/   V P                  ^,          pV^ V W$) R W0P                  ,
          3# VRR3# )rP   N)rd   rr   rJ  )r  rH  ÚlparamsÚ	lenparamsrB  s   &&   rY   Ú_get_batchesÚ_repr_params._get_batchesÇ  sc   € Ü�v“,ˆÜ˜“Lˆ	Ø—‘Ô&Ø—O‘O qÕ(ˆEà˜˜%Ð Ø˜˜Ð ØŸO™OÕ+ðð ð ˜D $Ð&Ð&r[   c               ó$   € V ^8„  d   QhRRRRRR/# )rP   rH  rI   rX  r  rV   r  rW   )rX   s   "rY   rZ   rL  Ô  s(   € ÷ 1ñ 1à'ð1ð ð1ð 
ñ	1r[   c                	óÌ   € W P                   J d   V P                  \        R V4      4      # W P                  J d   V P	                  \        RV4      4      # V P                  V4      # )rJ   úSequence[Any])r	  Ú_repr_param_dictr   r  Ú_repr_param_tupleÚ_repr_param_list)r  rH  rX  s   &&&rY   rF  Ú_repr_params._repr_paramsÔ  sa   € ð
 —*‘*ÓØ×(Ñ(ÜÐ/°Ó8óð ð —K‘KÓØ×)Ñ)¬$¨ÀÓ*GÓHÐHà×(Ñ(¨Ó0Ð0r[   c               ó    € V ^8„  d   QhRRRR/# )rP   rH  rJ   rV   r  rW   )rX   s   "rY   rZ   rL  â  s   € ÷ ñ Ð'?ð ÀCñ r[   c                	ón  a€ V P                   oV P                  VP                  4       4      w  pppV'       d[   R RP                  V3R lV 4       4      ,          pVRV R2,          pVRRP                  V3R lV 4       4      ,          ,          pV# RRP                  V3R lV 4       4      ,          pV# )	z{%sr-  c              3  óD   <"  € T F  w  rV: R S! V4       2x € K  	  R# 5i©z: NrW   ©r0  Úkeyr  r  s   &  €rY   r1  Ú0_repr_params._repr_param_dict.<locals>.<genexpr>ì  ó)   øé € ð á&7™
˜ð ‘g˜R¡ e£˜~Õ.Û&7ùó   ƒ r?  ú parameters truncated ... z%s}c              3  óD   <"  € T F  w  rV: R S! V4       2x € K  	  R# 5irv  rW   rw  s   &  €rY   r1  ry  ó  s)   øé € ð á&8™
˜ð ‘g˜R¡ e£˜~Õ.Û&8ùr{  z{%s}c              3  óD   <"  € T F  w  rV: R S! V4       2x € K  	  R# 5irv  rW   rw  s   &  €rY   r1  ry  ú  rz  r{  )r  rj  Úitemsr­   ©r  rH  Úitems_first_batchÚitems_second_batchÚtrunclenÚtextr  s   &&    @rY   ro  Ú_repr_params._repr_param_dictâ  sË   ø€ Ø—
‘
ˆð
 ×Ñ˜fŸl™l›nÓ-ñ		
ØØØ÷ ØØ—	‘	ô á&7óó õˆDð �e˜H˜:Ð%?Ð@Õ@ˆDØ�EØ—	‘	ô á&8óó õõ ˆDð ˆð Ø—	‘	ô á&7óó õˆDð ˆr[   c               ó    € V ^8„  d   QhRRRR/# )rP   rH  rn  rV   r  rW   )rX   s   "rY   rZ   rL    s   € ÷ ñ ¨ð ¸#ñ r[   c                	ór  a€ V P                   oV P                  V4      w  pppV'       dX   R RP                  V3R lV 4       4      ,          pVRV R2,          pVRP                  V3R lV 4       4      : R2,          pV# RRP                  V3R lV 4       4      : \        V4      ^8X  d   R	MR
: R2pV# )z(%sr-  c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  Ú1_repr_params._repr_param_tuple.<locals>.<genexpr>  ó   øé € ÐFÑ4E¨5™% Ÿ,˜,Ó4Eùr3  r?  r|  c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  r‰    ó   øé € ÐGÑ4F¨5™% Ÿ,˜,Ó4Fùr3  r6  r,  c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  r‰    rŠ  r3  r4  r5  )r  rj  r­   rr   r€  s   &&    @rY   rp  Ú_repr_params._repr_param_tuple  sÈ   ø€ Ø—
‘
ˆð ×Ñ˜fÓ%ñ		
ØØØ÷ ØØ—	‘	ÔFÑ4EÓFÓFõˆDð �e˜H˜:Ð%?Ð@Õ@ˆDØØ—	‘	ÔGÑ4FÓGÖGðõ ˆDð ˆð ð —	‘	ÔFÑ4EÓFÕFÜÐ,Ó-°Ô2‘¸Ò:ðˆDð ˆr[   c               ó    € V ^8„  d   QhRRRR/# )rP   rH  rI   rV   r  rW   )rX   s   "rY   rZ   rL    s   € ÷ ñ Ð'>ð À3ñ r[   c                	óR  a€ V P                   oV P                  V4      w  pppV'       d[   R RP                  V3R lV 4       4      ,          pVRV R2,          pVRRP                  V3R lV 4       4      ,          ,          pV# RRP                  V3R lV 4       4      ,          pV# )	z[%sr-  c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  Ú0_repr_params._repr_param_list.<locals>.<genexpr>#  rŠ  r3  r?  r|  z%s]c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  r’  '  rŒ  r3  rb  c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir³   rW   r/  s   & €rY   r1  r’  +  rŠ  r3  )r  rj  r­   r€  s   &&    @rY   rq  Ú_repr_params._repr_param_list  s³   ø€ Ø—
‘
ˆð
 ×Ñ˜fÓ%ñ		
ØØØ÷ ØØ—	‘	ÔFÑ4EÓFÓFõˆDð �e˜H˜:Ð%?Ð@Õ@ˆDØ�EØ—	‘	ÔGÑ4FÓGÓGõõ ˆDð ˆð Ø—	‘	ÔFÑ4EÓFÓFõˆDð ˆr[   )rI  rK  r
  rJ  rH  )rH  rI  rK  rJ  )éd   r  N)r  r  r  r  r9  r  r'  r7  rW  rj  rF  ro  rp  rq  r  rW   r[   rY   rF  rF  f  s<   † ñð =€I÷%õ+õZ%õ8'õ1õõ>÷0ñ r[   rF  c               ó$   € V ^8„  d   QhRRRRRR/# )rP   ÚcritrL   ÚnullszCollection[Any]rV   rW   )rX   s   "rY   rZ   rZ   0  s&   € ÷ Hñ H #ð H¨oð HÀ#ñ Hr[   c                óD   a€ V3R lp\         P                  ! V / RV/4      # )zOgiven criterion containing bind params, convert selected elements
to IS NULL.

c                ó  <€ \        V P                  \        4      '       dh   V P                  P                  S9   dM   V P                  V n        \        4       V n        \        P                  V n        \        P                  V n
        R # \        V P                  \        4      '       dY   V P                  P                  S9   d<   \        4       V n        \        P                  V n        \        P                  V n
        R # R # R # r³   )r’   r—   r%   Ú_identifying_keyr˜   r-   r   Úis_r•   Úis_notÚnegate)r‘   r™  s   &€rY   Úvisit_binaryÚ-adapt_criterion_to_null.<locals>.visit_binary6  s¢   ø€ ä�v—{‘{¤M×2Ò2Ø—‘×,Ñ,°Ô5ð !Ÿ,™,ˆFŒKÜ›6ˆFŒLÜ'Ÿm™mˆFŒOÜ%×,Ñ,ˆFŽMä�v—|‘|¤]×3Ò3Ø—‘×-Ñ-°Ô6ä›6ˆFŒLÜ'Ÿm™mˆFŒOÜ%×,Ñ,ˆFŽMñ	 7ñ 4r[   r‘   )r   Úcloned_traverse)r˜  r™  r   s   &f rY   Úadapt_criterion_to_nullr£  0  s$   ø€ õ-ô$ ×#Ò# D¨"¨x¸Ð.FÓGÐGr[   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rP   r—   rT   r˜   Ústop_onrV   rW   )rX   s   "rY   rZ   rZ   K  s0   € ÷ ñ Ø
ðàðð "ðð ñ	r[   c                ó’  € V f   V# VR 3.p\        V 4      pR pV'       d§   VP                  4       w  r\        V\        4      '       dT   WJdO   VP	                  4       pVP                  VP                  4      Vn        VP                  VP                  V34       MVP                  V4      pVe   Vf   Q hWn        Ve   Kª  TpK®  V# r³   )	ÚClauseAdapterr™   r’   r3   Ú_clonerÀ   rz   rg   r—   )r—   r˜   r¥  rž   ÚadapterÚretÚ	prevrights   &&&    rY   Úsplice_joinsr¬  K  s·   € ð
 ‚|ØˆàAFÈÀ¸€Eä˜DÓ!€GØ
€Cß
Ø Ÿ9™9›;ÑˆÜ�eœT×"Ò" uÓ';Ø—L‘L“NˆEØ$×-Ñ-¨e¯n©nÓ=ˆEŒNØ�L‰L˜%Ÿ*™* eÐ,Õ-à×$Ñ$ UÓ+ˆEØÒ ØÒ$Ð$Ð$Ø"ŒNØŒ;ØŠCà€Jr[   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rP   ÚcolumnszIterable[ColumnElement[Any]]r`   úOptional[ClauseElement]rÐ   r©   rV   zSequence[ColumnElement[Any]]rW   )rX   s   "rY   rZ   rZ   i  s0   € ÷ 'ñ 'Ø)ð'à%ð'ð ð'ð "ñ	'r[   c                ó   € R # r³   rW   ©r®  r`   rÐ   s   &*,rY   Úreduce_columnsr²  h  s   € ñ
 $'r[   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rP   r®  rB   r`   r¯  rÐ   r©   rV   z/Sequence[Union[ColumnElement[Any], TextClause]]rW   )rX   s   "rY   rZ   rZ   q  s0   € ÷ :ñ :Øð:à%ð:ð ð:ð 5ñ	:r[   c                ó   € R # r³   rW   r±  s   &*,rY   r²  r²  p  s   € ñ
 7:r[   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rP   r®  rB   r`   r¯  rÐ   r©   rV   z1Collection[Union[ColumnElement[Any], TextClause]]rW   )rX   s   "rY   rZ   rZ   x  s6   € ÷ Q'ñ Q'ØðQ'à%ðQ'ð ðQ'ð 7ñ	Q'r[   c                óR  aaa€ VP                  RR4      pVP                  RR4      o\        P                  ! V 4      pVP                  R V 4       4      o\        P                  ! 4       oS F£  p\        VP                   Uu. uF  qfP                  NK  	  up!   Fp  pS Fg  pWeJ d   K
   VP                  pTP                  T4      '       g   K0  S'       d   TP                  TP                  8X  g   KU  SP                  T4        Kn  	  Kr  	  K¥  	  V'       d2   VVV3R lp	V F#  p
V
f   K	  \        P                   ! V
/ RV	/4       K%  	  VP                  S4      # u upi   \        P                   d    T'       d    Kâ  h \        P                   d    T'       d    EK  h i ; i)a  given a list of columns, return a 'reduced' set based on natural
equivalents.

the set is reduced to the smallest list of columns which have no natural
equivalent present in the list.  A "natural equivalent" means that two
columns will ultimately represent the same value because they are related
by a foreign key.

\*clauses is an optional list of join clauses which will be traversed
to further identify columns that are "equivalent".

\**kw may specify 'ignore_nonexistent_tables' to ignore foreign keys
whose tables are not yet configured, or columns that aren't yet present.

This function is primarily used to determine the most minimal "primary
key" from a selectable, by reducing the set of primary key columns present
in the selectable to just those that are not repeated.

Úignore_nonexistent_tablesFÚonly_synonymsc              3  óL   "  € T F  p\        V4      '       g   K  Vx € K  	  R # 5ir³   r   )r0  r~   s   & rY   r1  Ú!reduce_columns.<locals>.<genexpr>”  s   é € ð NÙˆa¤°×!2�Š“:ùs   ‚$š
$c                ó  <€ V P                   \        P                  8X  dä   \        P                  ! \        SP                  S4       Uu. uF  qP                  NK  	  up!  4      pV P                  V9   dŒ   V P                  V9   dy   \        S4       Fg  pVP                  V P                  4      '       g   K&  S'       d(   VP                  V P                  P                  8X  g   KU  SP                  V4        R # 	  R # R # R # R # u upi r³   )r•   r   Úeqr9   rÅ   r   r}   Ú	proxy_setr—   r˜   ÚreversedÚshares_lineageÚnamerÉ   )r‘   r~   rÊ   Úcset_no_textÚomitr¸  s   &  €€€rY   r   Ú$reduce_columns.<locals>.visit_binary¶  sÁ   ø€ Ø�‰¤)§,¡,Ô.Ü—’ÜØ/;×/FÑ/FÀtÔ/LÓMÑ/L¨!Ÿ+œ+Ñ/LÑMñó�ð
 —;‘; $Ô&¨6¯<©<¸4Ô+?Ü% lÖ3˜Ø×+Ñ+¨F¯L©L×9Ô9ß -°·±¸6¿;¹;×;KÑ;KÖ1Kà ŸH™H QœKÚ!ó 4ñ ,@Ñ&ñ /ùò Ns   Á	Dr‘   )r™   r9   Ú
OrderedSetr}   rÅ   r   r½  Úforeign_keysr½   r8   ÚNoReferencedColumnErrorÚNoReferencedTableErrorr¿  rÀ  rÉ   r   rÀ   )r®  r`   rÐ   r·  rÅ   rÜ   r~   ÚfkÚfk_colr   r¨   rÁ  rÂ  r¸  s   &*,        @@@rY   r²  r²  x  sl  ú€ ð0 !#§¡Ð'BÀEÓ JÐØ—F‘F˜?¨EÓ2€Mä—’ Ó)€JØ8B×8MÑ8Mñ NÙóNó 9€Lô �?Š?Ó€DÛˆÜ°#·-²-Ó@±-¨QŸ.œ.±-Ñ@ÔAˆBÛ!�Ø“8ÙðØŸY™Y�Fð ×(Ñ(¨×+Ô+ß%¨¯©°3·8±8Ö);à—H‘H˜S”MÚó/ "ó Bñ ÷6 ÷	"ó ˆFØÔ!Ü×!Ò! &¨"¨x¸Ð.FÖGñ ð × Ñ  Ó&Ð&ùò_ Aøô ×2Ñ2ô ÷ 1Ú àÜ×1Ñ1ô ÷ 1Û àðús$   ÂE
Â,E#Å#F&	ÆF&	ÆF&	Æ$F&	c                ó®   aaaaa€ S'       d   S'       d   \         P                  ! R4      hR oVVVVV3R lp. o\        P                  ! V / RV/4       S# )z9traverse an expression and locate binary criterion pairs.zSCan only specify one of 'consider_as_foreign_keys' or 'consider_as_referenced_keys'c                ó$   € V P                  V4      # r³   )Úcompare)rQ   rR   s   &&rY   Úcol_isÚ"criterion_as_pairs.<locals>.col_isÛ  s   € à�y‰y˜‹|Ðr[   c                óT  <€ S'       g!   V P                   \        P                  Jd   R # \        V P                  \
        4      '       d!   \        V P                  \
        4      '       g   R # S'       dá   V P                  S9   d^   S! V P                  V P                  4      '       g   V P                  S9  d*   SP                  V P                  V P                  34       R # V P                  S9   d`   S! V P                  V P                  4      '       g   V P                  S9  d*   SP                  V P                  V P                  34       R # R # R # S'       dá   V P                  S9   d^   S! V P                  V P                  4      '       g   V P                  S9  d*   SP                  V P                  V P                  34       R # V P                  S9   d`   S! V P                  V P                  4      '       g   V P                  S9  d*   SP                  V P                  V P                  34       R # R # R # \        V P                  \        4      '       dÍ   \        V P                  \        4      '       d«   V P                  P                  V P                  4      '       d*   SP                  V P                  V P                  34       R # V P                  P                  V P                  4      '       d*   SP                  V P                  V P                  34       R # R # R # R # r³   )
r•   r   r¼  r’   r—   r(   r˜   rg   r/   Ú
references)r‘   Úany_operatorrÍ  rU   Úconsider_as_referenced_keysÚpairss   &€€€€€rY   r   Ú(criterion_as_pairs.<locals>.visit_binaryß  s  ø€ ß §¡´y·|±|Ó CÙÜ˜&Ÿ+™+¤}×5Ò5¼ZØ�L‰Lœ-÷>
ò >
ñ ç#Ø�{‰{Ð6Ô6Ù�v—|‘| V§[¡[×1Ò1Ø—<‘<Ð'?Ô?à—‘˜fŸl™l¨F¯K©KÐ8Ö9Ø—‘Ð!9Ô9Ù�v—{‘{ F§L¡L×1Ò1Ø—;‘;Ð&>Ô>à—‘˜fŸk™k¨6¯<©<Ð8Ö9ñ ?ñ :÷
 )Ø�{‰{Ð9Ô9Ù�v—|‘| V§[¡[×1Ò1Ø—<‘<Ð'BÔBà—‘˜fŸk™k¨6¯<©<Ð8Ö9Ø—‘Ð!<Ô<Ù�v—{‘{ F§L¡L×1Ò1Ø—;‘;Ð&AÔAà—‘˜fŸl™l¨F¯K©KÐ8Ö9ñ Bñ =ô ˜&Ÿ+™+¤v×.Ò.´:Ø—‘œf÷4ò 4ð —;‘;×)Ñ)¨&¯,©,×7Ò7Ø—L‘L &§,¡,°·±Ð!<Ö=Ø—\‘\×,Ñ,¨V¯[©[×9Ò9Ø—L‘L &§+¡+¨v¯|©|Ð!<Ö=ñ :ñ4Ñ.r[   r‘   )r8   ÚArgumentErrorr   rÀ   )Ú
expressionrU   rÒ  rÑ  r   rÍ  rÓ  s   &fff @@rY   Úcriterion_as_pairsr×  Ì  sX   ü€ ÷  ×$?Ü×Òð,ó
ð 	
ò÷%>ñ %>ðN BD€EÜ×Ò�j " x°Ð&>Ô?Ø€Lr[   c                  óÐ   € ] tR tRtRtRtRR R llt]'       d   ]R R l4       t	]R R	 l4       t	R
 R lt	]
P                  3R lt]
P                  ! R4      RR R ll4       tRtR# )r§  i  a	  Clones and modifies clauses based on column correspondence.

E.g.::

  table1 = Table(
      "sometable",
      metadata,
      Column("col1", Integer),
      Column("col2", Integer),
  )
  table2 = Table(
      "someothertable",
      metadata,
      Column("col1", Integer),
      Column("col2", Integer),
  )

  condition = table1.c.col1 == table2.c.col1

make an alias of table1::

  s = table1.alias("foo")

calling ``ClauseAdapter(s).traverse(condition)`` converts
condition to read::

  s.c.col1 == table2.c.col1

Nc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
R	RR/# )rP   Ú
selectablerC   ÚequivalentsúOptional[_EquivalentColumnMap]Ú
include_fnú)Optional[Callable[[ClauseElement], bool]]Ú
exclude_fnÚadapt_on_namesr©   Úanonymize_labelsÚadapt_from_selectablesú!Optional[AbstractSet[FromClause]]rW   )rX   s   "rY   rZ   ÚClauseAdapter.__annotate__4  sQ   € ÷ =ñ =àð=ð 4ð=ð >ð	=ð
 >ð=ð ð=ð ð=ð !Bñ=r[   c                	ó¤   € R V.RV/V n         Wn        W0n        W@n        \        P
                  ! T;'       g    / 4      V n        WPn        Wpn        R# )r¥  rá  N)	Ú__traverse_options__rÚ  rÝ  rß  r9   Úcolumn_dictrÛ  rà  râ  )r  rÚ  rÛ  rÝ  rß  rà  rá  râ  s   &&&&&&&&rY   r'  ÚClauseAdapter.__init__4  sS   € ð ˜
�|ØÐ 0ð%
ˆÔ!ð %ŒØ$ŒØ$ŒÜ×+Ò+¨K×,=Ð,=¸2Ó>ˆÔØ,ÔØ&<Ö#r[   c               ó    € V ^8„  d   QhRRRR/# ©rP   ÚobjzLiteral[None]rV   r‹   rW   )rX   s   "rY   rZ   rä  L  s   € ×;Ñ; Ð;°$Ñ;r[   c                	ó   € R # r³   rW   ©r  rë  s   &&rY   rÀ   ÚClauseAdapter.traverseK  s   € Ù8;r[   c               ó    € V ^8„  d   QhRRRR/# ©rP   rë  r7   rV   rW   )rX   s   "rY   rZ   rä  W  s   € ×0Ñ0 Ð0¨Ñ0r[   c                	ó   € R # r³   rW   rí  s   &&rY   rÀ   rî  V  s   € Ù-0r[   c               ó    € V ^8„  d   QhRRRR/# ©rP   rë  rÑ   rV   rW   )rX   s   "rY   rZ   rä  Y  s   € ÷ 	2ñ 	2Ø6ð	2à,ñ	2r[   c                	ó   € R # r³   rW   rí  s   &&rY   rÀ   rî  Y  s   € á.1r[   c                	ó´  € V P                   P                  WR 7      pVf]   WP                  9   dM   W9  dG   V P                  V,           F/  pV P                  VVVP	                  V.4      R7      pVf   K-  Vu # 	  V P
                  '       dJ   VfF   \        V\        4      '       d0   V P                   P                  P                  VP                  4      pV# )©Úrequire_embedded)r÷  Ú_seen)rÚ  Úcorresponding_columnrÛ  Ú_corresponding_columnr   rà  r’   r,   Úexported_columnsÚgetrÀ  )r  rÜ   r÷  rø  ÚnewcolÚequivs   &&&&  rY   rú  Ú#ClauseAdapter._corresponding_column]  sÈ   € ð —‘×5Ñ5Øð 6ó 
ˆð Š>˜c×%5Ñ%5Ô5¸#Ô:JØ×)Ñ)¨#×.Ð.�Ø×3Ñ3ØØ%5ØŸ+™+ s eÓ,ð 4ó �ð
 Ô%Ø!’Mñ /ð ××ÐØ’Ü˜3¤×,Ò,à—_‘_×5Ñ5×9Ñ9¸#¿(¹(ÓCˆFØˆr[   zsqlalchemy.sql.functionsc               ó$   € V ^8„  d   QhRRRRRR/# )rP   rÜ   r7   Ú_include_singleton_constantsr©   rV   zOptional[_ET]rW   )rX   s   "rY   rZ   rä  v  s)   € ÷ F
ñ F
ØðF
Ø6:ðF
à	ñF
r[   c                	ó¼  € \         P                  P                  pV P                  '       d   V P                  V4      '       g   R # V P                  '       d   V P	                  V4      '       d   R # \        V\        4      '       dÎ   \        WP                  4      '       g³   V P                  P                  V4      '       dX   V P                  '       d:   V P                   F'  pVP                  V4      '       g   K   V P                  # 	  R # V P                  # \        V\        4      '       d#   \        VP                  \        4      '       d   V# R # \        V\        4      '       g   R # V'       g   VP                  '       d   R # RVP                   9   d   VP                   R,          p\"        '       d   \        V\$        4      '       g   Q hV P                  '       dF   WP&                  9  d6   V P                   F#  pVP(                  P+                  VR4      f   K#   M	  R # \"        '       d   \        V\$        4      '       g   Q hV P-                  VRR7      # )NÚadapt_columnFTrö  )r9   Ú	preloadedÚsql_functionsrÝ  rß  r’   r1   ÚFunctionElementrÚ  rf   râ  r0   rŽ   r6   r(   Ú_is_singleton_constantrî   r   r*   rÛ  r~   rù  rú  )r  rÜ   r  Ú	functionsÚadps   &&&  rY   rÔ   ÚClauseAdapter.replaceu  sÑ  € ô —N‘N×0Ñ0ˆ	ð �?�?ˆ? 4§?¡?°3×#7Ò#7ÙØ�_�_ˆ_ §¡°×!5Ò!5Ùä�cœ:×&Ò&¬zØ×*Ñ*÷0
ò 0
ð �‰×.Ñ.¨s×3Ò3Ø×.×.Ð.Ø#×:Ô:˜Ø×.Ñ.¨s×3Ô3Ø!ð —‘Ð&ñ  ;ñ  $Ø—‘Ð&Ü˜C¤×'Ò'¬JØ—‘œ[÷-ò -ð �
ñ
 ä˜C¤×/Ò/Ùß-°#×2L×2LÐ2Lñ à˜S×-Ñ-Ô-Ø×"Ñ" >Õ2ˆCç‹=Ü˜cÔ#5×6Ò6Ð6Ð6à×&×&Ð&¨3×6FÑ6FÔ+FØ×2Ô2�Ø—5‘5×-Ñ-¨c°5Ó9ÔEÙñ 3ñ ç‹=Ü˜cÔ#5×6Ò6Ð6Ð6à×)Ñ)Ø $ð *ó 
ð 	
r[   )ræ  râ  rà  rÛ  rß  rÝ  rÚ  )ræ  rÚ  rÝ  rß  rÛ  rà  râ  )NNNFFN)F)r  r  r  r  r9  r  r'  r   r   rÀ   r9   Ú	EMPTY_SETrú  Úpreload_modulerÔ   r  rW   r[   rY   r§  r§    sk   † ñð<€I÷=÷* à	Ü;ó 
Ø;ð 
Ü0ó 
Ø0õ	2ð
 ,0¯>©>ôð0 
×ÒÐ3Ó4öF
ó 5ôF
r[   r§  c                  óz   € ] tR tRt]R R l4       t]R R l4       t]R R l4       t]R R	 l4       tR
 R ltRtR# )Ú_ColumnLookupi¿  c               ó    € V ^8„  d   QhRRRR/# )rP   rx  r‹   rV   rW   )rX   s   "rY   rZ   Ú_ColumnLookup.__annotate__Á  s   € ×1Ñ1˜tÐ1¨Ñ1r[   c                	ó   € R # r³   rW   ©r  rx  s   &&rY   Ú__getitem__Ú_ColumnLookup.__getitem__À  s   € Ù.1r[   c               ó    € V ^8„  d   QhRRRR/# )rP   rx  zColumnClause[Any]rV   rW   )rX   s   "rY   rZ   r  Ä  s   € ×KÑKÐ0ÐKÐ5FÑKr[   c                	ó   € R # r³   rW   r  s   &&rY   r  r  Ã  s   € ÙHKr[   c               ó    € V ^8„  d   QhRRRR/# )rP   rx  rM   rV   rW   )rX   s   "rY   rZ   r  Ç  s   € ×MÑMÐ1ÐMÐ6HÑMr[   c                	ó   € R # r³   rW   r  s   &&rY   r  r  Æ  s   € ÙJMr[   c               ó    € V ^8„  d   QhRRRR/# )rP   rx  r7   rV   rW   )rX   s   "rY   rZ   r  Ê  ó   € ×/Ñ/˜sÐ/ sÑ/r[   c                	ó   € R # r³   rW   r  s   &&rY   r  r  É  s   € Ù,/r[   c               ó    € V ^8„  d   QhRRRR/# )rP   rx  r   rV   rW   )rX   s   "rY   rZ   r  Ì  r  r[   c                	ó   € R # r³   rW   r  s   &&rY   r  r  Ì  s   € ©Cr[   rW   N)r  r  r  r  r   r  r  rW   r[   rY   r  r  ¿  s@   † ØÜ1ó Ø1àÜKó ØKàÜMó ØMàÜ/ó Ø/ç/Ñ/r[   r  c                  ó  a € ] tR tRt$ RtRtR]R&   RR V 3R lllt ! R R4      tR	 t	]
R
 R l4       t]
R R l4       tR R ltR V 3R llt]'       d   ]R R l4       t]t]P$                  tR R ltR R ltRtV ;t# )ÚColumnAdapteriÏ  a+  Extends ClauseAdapter with extra utility functions.

Key aspects of ColumnAdapter include:

* Expressions that are adapted are stored in a persistent
  .columns collection; so that an expression E adapted into
  an expression E1, will return the same object E1 when adapted
  a second time.   This is important in particular for things like
  Label objects that are anonymized, so that the ColumnAdapter can
  be used to present a consistent "adapted" view of things.

* Exclusion of items from the persistent collection based on
  include/exclude rules, but also independent of hash identity.
  This because "annotated" items all have the same hash identity as their
  parent.

* "wrapping" capability is added, so that the replacement of an expression
  E can proceed through a series of adapters.  This differs from the
  visitor's "chaining" feature in that the resulting object is passed
  through all replacing functions unconditionally, rather than stopping
  at the first one that returns non-None.

* An adapt_required option, used by eager loading to indicate that
  We don't trust a result row column that is not translated.
  This is to prevent a column from being interpreted as that
  of the child row in a self-referential scenario, see
  inheritance/test_basic.py->EagerTargetingTest.test_adapt_stringency

r®  r  c               ó<   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRR/	# )rP   rÚ  rC   rÛ  rÜ  Úadapt_requiredr©   rÝ  rÞ  rß  rà  Úallow_label_resolverá  râ  rã  rW   )rX   s   "rY   rZ   ÚColumnAdapter.__annotate__ø  se   € ÷ ñ àðð 4ðð ð	ð
 >ðð >ðð ðð "ðð ðð !Bñr[   c
           
     	ó,  <€ \         S
V `  VVVVVVV	R 7       \        P                  ! V P                  4      V n        V P                  '       g   V P                  '       d!   V P                  W P
                  4      V n        W0n	        Wpn
        RV n        R# ))rÝ  rß  rà  rá  râ  N)Úsuperr'  r9   ÚWeakPopulateDictÚ_locate_colr®  rÝ  rß  Ú_IncludeExcludeMappingr!  r"  Ú_wrap)r  rÚ  rÛ  r!  rÝ  rß  rà  r"  rá  râ  Ú	__class__s   &&&&&&&&&&€rY   r'  ÚColumnAdapter.__init__ø  s€   ø€ ô 	‰ÑØØØ!Ø!Ø)Ø-Ø#9ð 	ô 	
ô ×,Ò,¨T×-=Ñ-=Ó>ˆŒØ�?�?ˆ?˜dŸoŸo˜oØ×6Ñ6°t¿\¹\ÓJˆDŒLØ,ÔØ#6Ô ØˆŽ
r[   c                  ó"   € ] tR tRtR tR tRtR# )Ú$ColumnAdapter._IncludeExcludeMappingi  c                	ó   € Wn         W n        R # r³   )Úparentr®  )r  r/  r®  s   &&&rY   r'  Ú-ColumnAdapter._IncludeExcludeMapping.__init__  s   € Ø ŒKØ"ŽLr[   c                	ó¦  € V P                   P                  '       d"   V P                   P                  V4      '       d>   V P                   P                  '       dg   V P                   P                  V4      '       dF   V P                   P                  '       d(   V P                   P                  P                  V,          # V# V P                  V,          # r³   )r/  rÝ  rß  r)  r®  r  s   &&rY   r  Ú0ColumnAdapter._IncludeExcludeMapping.__getitem__  s‰   € à—‘×&×&Ð&¨t¯{©{×/EÑ/EÀc×/JÒ/JØ—+‘+×(×(Ð(¨T¯[©[×-CÑ-CÀC×-HÒ-HØ—;‘;×$×$Ð$ØŸ;™;×,Ñ,×4Ñ4°SÕ9Ð9à�JØ—<‘< Õ$Ð$r[   )r®  r/  N)r  r  r  r  r'  r  r  rW   r[   rY   r(  r-    s   † ò	#ö	%r[   r(  c                	ó  € \         P                   ! V 4      pWn        \        P                  ! VP                  4      Vn        VP                  '       g   VP                  '       d!   V P                  W"P
                  4      Vn        V# r³   )	Úcopyr)  r9   r&  r'  r®  rÝ  rß  r(  )r  r©  Úacs   && rY   ÚwrapÚColumnAdapter.wrap$  sV   € Ü�YŠY�t‹_ˆØŒÜ×*Ò*¨2¯>©>Ó:ˆŒ
Ø�=�=ˆ=˜BŸMŸM˜MØ×4Ñ4°R¿¹ÓDˆBŒJàˆ	r[   c               ó    € V ^8„  d   QhRRRR/# rê  rW   )rX   s   "rY   rZ   r#  .  s   € ×7Ñ7˜MÐ7¨dÑ7r[   c                	ó   € R # r³   rW   rí  s   &&rY   rÀ   ÚColumnAdapter.traverse-  s   € Ù47r[   c               ó    € V ^8„  d   QhRRRR/# rð  rW   )rX   s   "rY   rZ   r#  1  s   € ×,Ñ,˜CÐ, CÑ,r[   c                	ó   € R # r³   rW   rí  s   &&rY   rÀ   r:  0  s   € Ù),r[   c               ó    € V ^8„  d   QhRRRR/# ró  rW   )rX   s   "rY   rZ   r#  3  s   € ÷ !ñ !Ø2ð!à	(ñ!r[   c                	ó(   € V P                   V,          # r³   )r®  rí  s   &&rY   rÀ   r:  3  s   € ð �|‰|˜CÕ Ð r[   c               ó    € V ^8„  d   QhRRRR/# )rP   ÚvisitorrF   rV   r  rW   )rX   s   "rY   rZ   r#  8  s   € ÷ &ñ &Ð.ð &°=ñ &r[   c                	óR   <€ \        V\        4      '       g   Q h\        SV `  V4      # r³   )r’   r  r%  r   )r  r@  r*  s   &&€rY   r   ÚColumnAdapter.chain8  s%   ø€ Ü˜'¤=×1Ò1Ð1Ð1ä‰w‰}˜WÓ%Ð%r[   c               ó   € V ^8„  d   QhRR/# )rP   rV   zIterator[ColumnAdapter]rW   )rX   s   "rY   rZ   r#  @  s   € ×BÑBÐ&=ÑBr[   c                	ó   € R # r³   rW   )r  s   &rY   Úvisitor_iteratorÚColumnAdapter.visitor_iterator?  s   € Ù?Br[   c               ó    € V ^8„  d   QhRRRR/# ©rP   rÜ   rM   rV   r{   rW   )rX   s   "rY   rZ   r#  E  s   € ÷ ñ Ø%ðà	%ñr[   c                	ób   € V P                   V,          pW!J d   V P                  VR 4      f   R# V# )TN)r®  rú  )r  rÜ   rý  s   && rY   Úadapt_check_presentÚ!ColumnAdapter.adapt_check_presentE  s1   € ð —‘˜cÕ"ˆà‹=˜T×7Ñ7¸¸TÓBÒJÙàˆr[   c               ó    € V ^8„  d   QhRRRR/# rH  rW   )rX   s   "rY   rZ   r#  O  s   € ÷ *ñ *Ø%ð*à	%ñ*r[   c                	óv  € VP                   '       d0   V P                   F  pVP                  VR R7      pVf   K   M	  TpM\        P	                  W4      pV P
                  '       d"   V P
                  P                  V4      pVe   TpV P                  '       d   W1J d   R# W1Jd   V P                  Vn	        V# )T)r  N)
Ú_is_immutablerE  rÔ   r§  rÀ   r)  r'  r!  r"  Ú_allow_label_resolve)r  rÜ   Úvisr~   Úc2s   &&   rY   r'  ÚColumnAdapter._locate_colO  s¥   € ð ××ÐØ×,Ô,�Ø—K‘K À$�KÓG�Ø”=Ùñ -ð
 ‘ä×&Ñ& tÓ1ˆAà�:�:ˆ:Ø—‘×'Ñ'¨Ó*ˆBØŠ~Ø�à××Ð 1£8Ùð ‹<Ø%)×%=Ñ%=ˆAÔ"àˆr[   )r)  r!  r"  r®  )r®  r!  r"  r)  Ú__weakref__)NFNNFTFN)r  r  r  r  r9  r  r  r'  r(  r6  r   rÀ   r   r   ÚpropertyrE  Úadapt_clauser§  Úcopy_and_processÚ
adapt_listrJ  r'  r  Ú__classcell__)r*  s   @rY   r  r  Ï  s�   ø‡ ñð<€Ið Ó÷ò ÷:%ñ %òð Ü7ó Ø7àÜ,ó Ø,õ!÷
&ð &÷
 à	ÜBó 
ØBà€LØ×/Ñ/€Jõ÷*ó *r[   r  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rP   rŽ   r=   rÀ  zOptional[str]Útype_z"Optional[_TypeEngineArgument[int]]rV   zColumnElement[int]rW   )rX   s   "rY   rZ   rZ   |  s0   € ÷ ñ Øðà
ðð .ðð ñ	r[   c                óP   € \         P                  ! \        P                  WVR7      # )z±Convert the given value to an "offset or limit" clause.

This handles incoming integers and converts to an expression; if
an expression is already given, it is passed through.

)rÀ  rZ  )r   Úexpectr   ÚLimitOffsetRole)rŽ   rÀ  rZ  s   &&&rY   Ú_offset_or_limit_clauser^  |  s$   € ô ×ÒÜ×Ñ˜w¸ôð r[   c               ó    € V ^8„  d   QhRRRR/# )rP   r¨   r=   rV   rW   )rX   s   "rY   rZ   rZ   Œ  s   € ÷ ñ Øðàñr[   c                óz   € V f   R# \        V R4      '       d#   V P                  p\        P                  ! V4      # V # )z\Return the offset or limit clause as a simple integer if possible,
else return the clause.

NÚ_limit_offset_value)Úhasattrra  r9   Úasint)r¨   r  s   & rY   Ú)_offset_or_limit_clause_asint_if_possiblerd  Œ  s9   € ð ‚~ÙÜˆvÐ,×-Ò-Ø×*Ñ*ˆÜ�zŠz˜%Ó Ð àˆr[   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	rP   Úlimit_clauser=   Úoffset_clauseÚstartr  ÚstoprV   zATuple[Optional[ColumnElement[int]], Optional[ColumnElement[int]]]rW   )rX   s   "rY   rZ   rZ   œ  s;   € ÷ 2'ñ 2'Ø"ð2'à#ð2'ð ð2'ð ð	2'ð
 Gñ2'r[   c                ó`  € VeT   VeP   \        V4      pVf   ^ pV^ 8w  d	   W,           pV^ 8X  d   RpMVf   Q h\        V4      p\        W2,
          4      p W3# Vf   Ve   \        V4      p W3# Ve<   Vf8   \        V4      pVf   ^ pV^ 8w  d	   W,           pV^ 8X  d   RpW3# \        V4      pW3# )z0Compute LIMIT/OFFSET in terms of slice start/endN)rd  r^  )rf  rg  rh  ri  s   &&&&rY   Ú_make_slicerk  œ  sõ   € ð Ò˜TÒ-ÜAØó
ˆð Ò ØˆMà�AŒ:Ø)Õ1ˆMà˜AÔØ ‰Mà Ò,Ð,Ð,Ü3°MÓBˆMä.¨t­|Ó<ˆð& Ð&Ð&ð# 
Š˜4Ò+Ü.¨tÓ4ˆð  Ð&Ð&ð 
Ò	˜tš|ÜAØó
ˆð Ò ØˆMà�AŒ:Ø)Õ1ˆMà˜AÔØ ˆMð Ð&Ð&ô 4°MÓBˆMàÐ&Ð&r[   )NNr³   )NNF)~r9  Ú
__future__r   Úcollectionsr   r4  Ú	itertoolsr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r5  r   r   r   r   Ú_typingr   Ú
annotationr   r   r   Úbaser   r   Ú	cache_keyr    Úddlr!   rd  r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úschemar/   rÚ  r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Úutil.typingr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   Úengine.interfacesrG   rH   rI   rJ   Ú
engine.rowrK   rL   r^   rm   rx   r‡   r¡   rÂ   rÍ   r×   rà   rã   ræ   rt   rì   rò   rõ   rþ   r  r  r   r"  r  r;  rF  r£  r¬  r²  r×  ÚReplacingExternalTraversalr§  r  r  r^  rd  rk  rW   r[   rY   Ú<module>rz     sH  ðñ @å "å Û Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å Ý Ý Ý Ý #Ý 8Ý <Ý >Ý  Ý Ý 1Ý +Ý 4Ý &Ý .Ý #Ý #Ý "Ý #Ý Ý (Ý Ý !Ý Ý %Ý Ý Ý "Ý $Ý Ý $Ý "Ý #Ý Ý Ý Ý !Ý "à	××ÐÝ-Ý)Ý,Ý*Ý$Ý.Ý+Ý&Ý/Ý/Ý+Ý5Ý:Ý;Ý<Ý áˆeÐ/Ô0€÷!õHõ8)õX6õr?ðD(ð  ð(ð "ð	(ð
  ð(ð "ð(ð ÷(õV,ò^
?òKò"õ ò'õò&õòò&÷ñ ò2ô
�
ô 
ô"%�cô %ôG�:ô GõTH÷6ð: 
ô'ó 
ð'ð 
ô:ó 
ð:õQ'ôh<ô~q
�H×7Ñ7ô q
ôh0�Hô 0ô j�Mô j÷Zõ ÷ 2'r[   