Ë
    r™ãjæ ã                  óº	  — d Z ddlmZ ddl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	 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 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 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 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" 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' 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/ d(d)lm0Z0 d(dlmZ1 d(d*lm2Z2 d(d+lm3Z3 d(d,lm4Z4 d(dlmZ d(dl4mZ5 d(d-l4m6Z6 d(d.l7m8Z8 d(d/l7m9Z9 e
rdd0l:m;Z; dd1lm<Z< d(d2l=m>Z> dZ?	 	 	 	 	 	 	 ddd4„Z@ej‚                  j…                  d3d3¬5«       G d6„ d7e&«      «       ZCe3jˆ                  ej‚                  j…                  d8d3¬5«       G d9„ d:e&«      «       «       ZEe3jˆ                  ej‚                  j…                  d8¬;«       G d<„ d=eE«      «       «       ZFe3jˆ                  ej‚                  j…                  d8d8¬>«      ej‚                  j…                  d8d8d8¬?«      ej‚                  j…                  d8¬@«       G dA„ dBe&«      «       «       «       «       ZG G dC„ dD«      ZH G dE„ dFe&«      ZIe3jˆ                  ejx                  j…                  d8¬@«       G dG„ dHe&«      «       «       ZJe3jˆ                  ejx                  j…                  dI¬J«      ejx                  j…                  d¬J«       G dK„ dLeI«      «       «       «       ZKe3jˆ                  ejx                  j…                  d8¬J«      ejx                  j…                  dM¬J«      ejx                  j…                  dN¬J«      ejx                  j…                  dO¬J«      ejx                  j…                  dP¬J«       G dQ„ dReIej˜                  e3jš                  «      «       «       «       «       «       «       ZN G dS„ dT«      ZO G dU„ dVeI«      ZPejx                  j…                  dW¬J«       G dX„ dYeP«      «       ZQe3jˆ                  ejx                  j…                  dZ¬J«       G d[„ d\eP«      «       «       ZRe3jˆ                  ejx                  j…                  d]¬J«      ejx                  j…                  d3¬J«       G d^„ d_eI«      «       «       «       ZSe3jˆ                  ejx                  j…                  d`¬J«       G da„ dbePej˜                  «      «       «       ZTdc„ ZUy)ezTsqlalchemy.orm.interfaces.LoaderStrategy
implementations, and related MapperOptions.é    )ÚannotationsN)ÚAny)ÚDict)ÚLiteral)ÚOptional)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )Ú
attributes)Úexc)Ú
interfaces)Úloading)Úpath_registry)Ú
properties)Úquery)Úrelationships)Ú
unitofwork)Úutil)Ú_DEFER_FOR_STATE)Ú_RAISE_FOR_STATE)Ú_SET_DEFERRED_EXPIRED)ÚATTR_WAS_SET)ÚLoaderCallableStatus)ÚPASSIVE_OFF)ÚPassiveFlag)Ú_column_descriptions)Ú_ORMCompileState)Ú_ORMSelectCompileState)ÚQueryContext)ÚLoaderStrategy)ÚStrategizedProperty)Ú_state_session)ÚInstanceState)ÚLoad)Ú_none_only_set)ÚAliasedClassé   )Úevent)Úinspect)Úlog)Úsql)Úvisitors)ÚLABEL_STYLE_TABLENAME_PLUS_COL)ÚSelect)ÚMapper)ÚRelationshipProperty)ÚColumnElementFc
                óò  ‡‡— g }g }|xr | j                   Š|r!| j                  r|j                  t        «       |r|j                  t        j
                  «       |r/| j                  Š‰r!| j                  r|j                  ˆˆfd„«       |j                  D �]\  }| |j                  j                  | j                  «      u sŒ,|j                  j                  | j                  «      rŒRt        j                  |j                   | j                  f| ‰|||xr* | j                  xs | j"                  t$        j&                  u ||||	|| xs | j(                   | j*                  dœ|
¤Ž}|D ]  } ||| «       Œ |j-                  «       D ]Z  }| j                  |j.                  v sŒ|j.                  | j                     \  }}t1        j2                  || j                  |fi |¤Ž  n |D ]  } ||| «       Œ �Œ_ y )Nc                ó2   •— t        j                  | ‰‰«      S ©N)r   Ú_backref_listeners)ÚdescÚpropÚbackrefÚuselists     €€úd/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/orm/strategies.pyú<lambda>z%_register_attribute.<locals>.<lambda>s   s   ø€ ¤:×#@Ñ#@Ø˜' 7ó$€ ó    )Úparent_tokenr:   Úcompare_functionÚ	useobjectÚtrackparentÚtypecallableÚ	callable_Úactive_historyÚdefault_scalar_valueÚ
impl_classÚsend_modified_eventsÚdoc)r:   Úsingle_parentÚappendÚ_single_parent_validatorr   Ú_track_cascade_eventsÚback_populatesÚ_effective_sync_backrefÚself_and_descendantsÚ_propsÚgetÚkeyÚclass_managerÚ_attr_has_implr   Ú_register_attribute_implÚclass_Ú	directionr   Ú	ONETOMANYÚviewonlyrH   Úiterate_to_rootÚ
validatorsÚorm_utilÚ_validator_events)r8   Úmapperr@   r?   rB   rC   Úproxy_propertyrD   rF   rE   ÚkwÚpre_validate_hooksÚpost_validate_hooksÚmr7   ÚhookÚsuper_mÚfnÚoptsr9   r:   s                      @@r;   Ú_register_attributerh   L   sì  ù€ ð, ÐØÐàÒ(˜DŸL™L€Gá�T×'Ò'Ø×!Ñ!Ô":Ô;áØ×"Ñ"¤:×#CÑ#CÔDñ Ø×%Ñ%ˆÙ�t×3Ò3Ø×&Ñ&ôôð" ×(Ñ(ó $!ˆØ�1—8‘8—<‘<Ø�H‰Hó
ò 
à—/‘/×0Ñ0°·±Õ:Ü×6Ñ6Ø—‘Ø—‘ðð "ØØ!1Ø#Ø%ò à×&Ñ&ò >Ø—~‘~¬×)=Ñ)=Ð=à)Ø#Ø-Ø%9Ø%Ø)2 ]Ò%G¸$¿-¹-Ð6GØ—H‘Hñ%ð& ñ'ˆDð, +ò !�Ù�T˜4Õ ð!ð ×,Ñ,Ó.ò �Ø—8‘8˜w×1Ñ1Ò1Ø&×1Ñ1°$·(±(Ñ;‘H�B˜Ü×.Ñ.¨t°T·X±X¸rÑJÀTÒJÙð	ð ,ò !�Ù�T˜4Õ ò!ñG$!r=   )Ú
instrumentÚdeferredc                  ó6   ‡ — e Zd ZdZdZˆ fd„Z	 dd„Zd„ Zˆ xZS )Ú_UninstrumentedColumnLoaderz¶Represent a non-instrumented MapperProperty.

    The polymorphic_on argument of mapper() often results in this,
    if the argument is against the with_polymorphic selectable.

    )Úcolumnsc                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   )ÚsuperÚ__init__Úparent_propertyrm   ©ÚselfÚparentÚstrategy_keyÚ	__class__s      €r;   rp   z$_UninstrumentedColumnLoader.__init__µ   s%   ø€ Ü‰Ñ˜ Ô.Ø×+Ñ+×3Ñ3ˆ�r=   c                ól   — | j                   D ]%  }|r|j                   |   }|j                  ||«       Œ' y r5   )rm   Ú_append_dedupe_col_collection)	rs   Úcompile_stateÚquery_entityÚpathÚloadoptÚadapterÚcolumn_collectionÚkwargsÚcs	            r;   Úsetup_queryz'_UninstrumentedColumnLoader.setup_query¹   s;   € ð —‘ò 	NˆAÙØ—O‘O AÑ&�Ø×7Ñ7¸Ð;LÕMñ	Nr=   c	                 ó   — y r5   © ©	rs   Úcontextrz   r{   r|   r^   Úresultr}   Ú
populatorss	            r;   Úcreate_row_processorz0_UninstrumentedColumnLoader.create_row_processorÈ   s   € ð 	r=   r5   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rp   r�   rˆ   Ú__classcell__©rv   s   @r;   rl   rl   ª   s$   ø„ ñð €Iô4ð óNör=   rl   Tc                  ó<   ‡ — e Zd ZdZdZˆ fd„Z	 dd„Zd„ Zd„ Zˆ xZ	S )Ú_ColumnLoaderz8Provide loading behavior for a :class:`.ColumnProperty`.)rm   Úis_compositec                ó’   •— t         ‰| �  ||«       | j                  j                  | _        t	        | j                  d«      | _        y )NÚcomposite_class)ro   rp   rq   rm   Úhasattrr’   rr   s      €r;   rp   z_ColumnLoader.__init__Ý   s;   ø€ Ü‰Ñ˜ Ô.Ø×+Ñ+×3Ñ3ˆŒÜ# D×$8Ñ$8Ð:KÓLˆÕr=   c	                óþ   — | j                   D ]<  }
|r&|r|j                  |
«      }
|
€ y |j                   |
   }
|j                  |
|«       Œ> | j                   d   }|r|j                   |   }|€y ||| j                  <   y ©Nr   )rm   Úadapt_check_presentrx   rq   )rs   ry   rz   r{   r|   r}   r~   Úmemoized_populatorsÚcheck_for_adaptr   r€   Úfetchs               r;   r�   z_ColumnLoader.setup_queryâ   s‘   € ð —‘ò 		NˆAÙÙ"Ø×3Ñ3°AÓ6�AØ�yÙàŸ™¨Ñ*�Aà×7Ñ7¸Ð;LÕMð		Nð —‘˜Q‘ˆÙØ—O‘O EÑ*ˆEØˆ}ð à49Ð˜D×0Ñ0Ò1r=   c                ó   — d| _         | j                  d   j                  }| j                  j                  xs] | j                  d   j
                  xsB |j                  d uxr2 |j                  j                  |j                  d «      | j                  u }t        | j                  |d|j                  || j                  j                  ¬«       y )NTr   F)r@   r?   rD   rE   )Úis_class_levelrm   Útyperq   rD   Úprimary_keyÚversion_id_colÚ_columntopropertyrQ   rh   Úcompare_valuesÚ_default_scalar_value)rs   r^   ÚcoltyperD   s       r;   Úinit_class_attributez"_ColumnLoader.init_class_attribute  sÁ   € Ø"ˆÔØ—,‘,˜q‘/×&Ñ&ˆð × Ñ ×/Ñ/ò Ø�|‰|˜A‰×*Ñ*òð ×%Ñ%¨TÐ1ò (Ø×,Ñ,×0Ñ0°×1FÑ1FÈÓMØ×'Ñ'ð(ð 	ô 	Ø× Ñ ØØØ$×3Ñ3Ø)Ø!%×!5Ñ!5×!KÑ!Kö	
r=   c	                óô   — | j                   D ]I  }	|r|j                   |	   }	|j                  |	d«      }
|
sŒ)|d   j                  | j                  |
f«        y  |d   j                  | j                  df«       y ©NFÚquickÚexpireT)rm   Ú_getterrJ   rR   )rs   r…   rz   r{   r|   r^   r†   r}   r‡   ÚcolÚgetters              r;   rˆ   z"_ColumnLoader.create_row_processor  sx   € ð —<‘<ò 	:ˆCÙØ—o‘o cÑ*�Ø—^‘^ C¨Ó/ˆFÚØ˜7Ñ#×*Ñ*¨D¯H©H°fÐ+=Ô>Ùð	:ð �xÑ ×'Ñ'¨¯©°4Ð(8Õ9r=   ©F)
r‰   rŠ   r‹   rŒ   r�   rp   r�   r¥   rˆ   rŽ   r�   s   @r;   r‘   r‘   Ö   s)   ø„ ñ Cà)€IôMð ó:òB
ö.:r=   r‘   )Úquery_expressionc                  ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )Ú_ExpressionColumnLoaderc                óÈ   •‡— t         ‰| �  ||«       t        j                  «       j	                  d «      Št        ˆfd„| j                  j                  D «       «      | _        y )Nc              3  óB   •K  — | ]  }|j                  ‰«       –— Œ y ­wr5   )Úcompare)Ú.0r€   Únulls     €r;   ú	<genexpr>z3_ExpressionColumnLoader.__init__.<locals>.<genexpr>=  s!   øè ø€ ò ,
Ø$%�—	‘	˜$“Ôñ,
ùs   ƒ)	ro   rp   r,   rµ   ÚlabelÚanyrq   rm   Ú_have_default_expression)rs   rt   ru   rµ   rv   s      @€r;   rp   z _ExpressionColumnLoader.__init__6  sP   ù€ Ü‰Ñ˜ Ô.ô
 �x‰x‹z×Ñ Ó%ˆÜ(+ó ,
Ø)-×)=Ñ)=×)EÑ)Eô,
ó )
ˆÕ%r=   c                ó˜  — d }	|r|j                   r|j                   }	n"| j                  r| j                  j                  }	|	€y |	D ]%  }
|r|j                  |
   }
|j	                  |
|«       Œ' |	d   }|r|j                  |   }|€y ||| j                  <   |j
                  | j                  d   u r|r|j                   r|	d   |_        y y y y r—   )Ú_extra_criteriar¹   rq   rm   rx   Ú_polymorphic_discriminator)rs   ry   rz   r{   r|   r}   r~   r™   r   rm   r€   r›   s               r;   r�   z#_ExpressionColumnLoader.setup_queryA  së   € ð ˆÙ�w×.Ò.Ø×-Ñ-‰Gà×*Ò*Ø×*Ñ*×2Ñ2ˆGàˆ?Øàò 	NˆAÙØ—O‘O AÑ&�Ø×7Ñ7¸Ð;LÕMð	Nð
 ˜‘
ˆÙØ—O‘O EÑ*ˆEØˆ}ð à49Ð˜D×0Ñ0Ñ1ð ×3Ñ3°t·|±|ÀA±ÑFÙØ×'Ò'à6=¸a±jˆLÕ3ð (ð ð Gr=   c	                ó  — |rˆ|j                   r{|j                   }	|	D ]I  }
|r|j                  |
   }
|j                  |
d«      }|sŒ)|d   j                  | j                  |f«        y  |d   j                  | j                  df«       y y y r§   )r»   rm   rª   rJ   rR   )rs   r…   rz   r{   r|   r^   r†   r}   r‡   rm   r«   r¬   s               r;   rˆ   z,_ExpressionColumnLoader.create_row_processorq  s‘   € ñ �w×.Ò.Ø×-Ñ-ˆGàò >�ÙØ!Ÿ/™/¨#Ñ.�CØŸ™¨¨UÓ3�ÚØ˜wÑ'×.Ñ.°·±¸&Ð/AÔBÙð>ð ˜8Ñ$×+Ñ+¨T¯X©X°tÐ,<Õ=ð /ˆ7r=   c                ó²   — d| _         t        | j                  |d| j                  d   j                  j
                  d| j                  j                  ¬«       y )NTFr   )r@   r?   Úaccepts_scalar_loaderrE   )r�   rh   rq   rm   rž   r¢   r£   ©rs   r^   s     r;   r¥   z,_ExpressionColumnLoader.init_class_attribute‹  sJ   € Ø"ˆÔäØ× Ñ ØØØ!Ÿ\™\¨!™_×1Ñ1×@Ñ@Ø"'Ø!%×!5Ñ!5×!KÑ!Kö	
r=   )r‰   rŠ   r‹   rp   r�   rˆ   r¥   rŽ   r�   s   @r;   r°   r°   3  s   ø„ ô	
ò.Aò`>ö4

r=   r°   )rj   ri   )rj   ri   Ú	raiseload)Ú
do_nothingc                  óH   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Z	 d	d„Zd„ Z	d„ Z
ˆ xZS )
Ú_DeferredColumnLoaderzAProvide loading behavior for a deferred :class:`.ColumnProperty`.)rm   ÚgrouprÁ   c                ó  •— t         ‰| �  ||«       t        | j                  d«      rt	        d«      ‚| j
                  j                  dd«      | _        | j                  j                  | _        | j                  j                  | _	        y )Nr”   z8Deferred loading for composite types not implemented yetrÁ   F)
ro   rp   r•   rq   ÚNotImplementedErrorÚstrategy_optsrQ   rÁ   rm   rÅ   rr   s      €r;   rp   z_DeferredColumnLoader.__init__£  su   ø€ Ü‰Ñ˜ Ô.Ü�4×'Ñ'Ð):Ô;Ü%ØJóð ð ×+Ñ+×/Ñ/°¸UÓCˆŒØ×+Ñ+×3Ñ3ˆŒØ×)Ñ)×/Ñ/ˆ�
r=   c	           
     ó$  — |j                   r~|j                  j                  j                  r^| j                  |j                  j                  j                  v r2| j
                  j                  d«      j                  ||||||||«       y | j                  sZ| j                  r| j
                  j                  }	n| j
                  j                  }	|d   j                  | j                  |	f«       y |d   j                  | j                  df«       y )N©)rj   F©ri   TÚnewr©   F)Úrefresh_stater   Ú_compile_optionsÚ_only_load_propsrR   rq   Ú_get_strategyrˆ   r�   rÁ   Ú_raise_column_loaderÚ_deferred_column_loaderrJ   )
rs   r…   rz   r{   r|   r^   r†   r}   r‡   Úset_deferred_for_local_states
             r;   rˆ   z*_DeferredColumnLoader.create_row_processor­  sí   € ð* ×!Ò!Ø—‘×.Ñ.×?Ò?Ø—‘˜GŸM™M×:Ñ:×KÑKÑKà× Ñ ×.Ñ.Ø;óç"Ñ"ØØØØØØØØõ	ð ×$Ò$Ø�~Š~à×(Ñ(×=Ñ=ñ -ð
 ×(Ñ(×@Ñ@ð -ð �uÑ×$Ñ$ d§h¡hÐ0LÐ%MÕNà�xÑ ×'Ñ'¨¯©°5Ð(9Õ:r=   c           	     óÈ   — d| _         t        | j                  |d| j                  d   j                  j
                  | j                  d| j                  j                  ¬«       y )NTFr   )r@   r?   rC   Úload_on_unexpirerE   )r�   rh   rq   rm   rž   r¢   Ú_load_for_stater£   rÀ   s     r;   r¥   z*_DeferredColumnLoader.init_class_attributeà  sS   € Ø"ˆÔäØ× Ñ ØØØ!Ÿ\™\¨!™_×1Ñ1×@Ñ@Ø×*Ñ*Ø"Ø!%×!5Ñ!5×!KÑ!Kö	
r=   c	           	     ój  — |j                   j                  r| j                  j                  s�|r8t	        | j
                  «      j                  | j                  j                  «      sG|r5| j                  r)|j                  j                  d| j                  z  d«      s|rA| j                  |v r3 | j                  j                  d«      j                  |||||||fi |	¤Ž y | j                  rt         || j                  <   y | j"                  st$        || j                  <   y t&        || j                  <   y )Nzundefer_group_%sFrÊ   )Úcompile_optionsÚ_render_for_subqueryrq   Ú_renders_in_subqueriesÚsetrm   Úintersectionrt   Ú_should_undefer_in_wildcardrÅ   Ú
local_optsrQ   rR   rÐ   r�   r�   r   rÁ   r   r   )
rs   ry   rz   r{   r|   r}   r~   r™   Úonly_load_propsr`   s
             r;   r�   z!_DeferredColumnLoader.setup_queryí  s  € ð ×-Ñ-×BÒBØ×(Ñ(×?Ò?ñ Ü˜Ÿ™Ó%×2Ñ2Ø—K‘K×;Ñ;ôñ
 Ø—J’JØ×&Ñ&×*Ñ*Ø&¨¯©Ñ3°Uôñ   D§H¡H°Ñ$?ðˆD× Ñ ×.Ñ.Ø;óç‰kØØØØØØ!Ø#ñð óð × Ò Ü8MÐ × 4Ñ 4Ò5Ø—’Ü8HÐ × 4Ñ 4Ò5ä8HÐ × 4Ñ 4Ò5r=   c                óD  — |j                   st        j                  S |t        j                  z  st        j
                  S |j                  j                  }| j                  rg|j                  D �cg c]Q  }t        |t        «      r?t        |j                  t        «      r%|j                  | j                  k(  r|j                   ‘ŒS }}n| j                   g}|D �cg c]  }||j                  v sŒ|‘Œ }}t        |«      }|€9t!        j"                  dt%        j&                  |«      ›d| j                   ›d�«      ‚| j(                  r| j+                  ||d«       t-        j.                  |j                  |t1        |«      t2        «       t        j4                  S c c}w c c}w )NúParent instance zB is not bound to a Session; deferred load operation of attribute 'ú' cannot proceedÚraise)rR   r   Ú
ATTR_EMPTYr   ÚSQL_OKÚPASSIVE_NO_RESULTÚmanagerr^   rÅ   Úiterate_propertiesÚ
isinstancer"   ÚstrategyrÄ   Ú
unmodifiedr#   Úorm_excÚDetachedInstanceErrorr\   Ú	state_strrÁ   Ú_invoke_raise_loadr   Ú_load_scalar_attributesrÛ   r   r   )	rs   ÚstateÚpassiveÚlocalparentÚpÚtoloadÚkrÅ   Úsessions	            r;   rÖ   z%_DeferredColumnLoader._load_for_state   sV  € Ø�yŠyÜ'×2Ñ2Ð2àœ×+Ñ+Ò+Ü'×9Ñ9Ð9à—m‘m×*Ñ*ˆà�:Š:ð %×7Ñ7öàÜ˜aÔ!4Ô5Ü˜qŸz™zÔ+@ÔAØ—G‘G˜tŸz™zÒ)ð	 —“ðˆFñ ð —h‘h�ZˆFð #Ö<�q a¨5×+;Ñ+;Ò&;’Ð<ˆÐ<ä  Ó'ˆØˆ?Ü×/Ò/ô ×%Ñ% eÕ,¨d¯h«hð8óð ð �>Š>Ø×#Ñ# E¨7°GÔ<ä×'Ñ'Ø�L‰L˜%¤ U£¬[ô	
ô $×0Ñ0Ð0ùò9ùò =s   Á0AFÃFÃ.Fc                ó4   — t        j                  d| ›d�«      ‚)Nú'z(' is not available due to raiseload=True©Úsa_excÚInvalidRequestError©rs   rñ   rò   Úlazys       r;   rï   z(_DeferredColumnLoader._invoke_raise_loadH  s   € Ü×(Ò(Ú=AÐCó
ð 	
r=   r5   )r‰   rŠ   r‹   rŒ   r�   rp   rˆ   r¥   r�   rÖ   rï   rŽ   r�   s   @r;   rÄ   rÄ   ˜  s5   ø„ ñ Là/€Iô0ò1;òf
ð, ó1Iòf&1öP
r=   rÄ   c                  ó8   — e Zd ZdZddd„Zej                  fd„Zy)Ú_LoadDeferredColumnsz7serializable loader object used by DeferredColumnLoaderc                ó    — || _         || _        y r5   )rR   rÁ   )rs   rR   rÁ   s      r;   rp   z_LoadDeferredColumns.__init__Q  s   € ØˆŒØ"ˆ�r=   c                óÌ   — | j                   }|j                  j                  }|j                  |   }| j                  rd}nd}|j                  |«      }|j                  ||«      S )N)©rj   TrË   )rÁ   T)r  rË   )rR   rç   r^   rP   rÁ   rÐ   rÖ   )rs   rñ   rò   rR   ró   r8   ru   rê   s           r;   Ú__call__z_LoadDeferredColumns.__call__U  sc   € Ø�h‰hˆà—m‘m×*Ñ*ˆØ×!Ñ! #Ñ&ˆØ�>Š>ð‰Lð FˆLØ×%Ñ% lÓ3ˆØ×'Ñ'¨¨wÓ7Ð7r=   Nr­   )rR   ÚstrrÁ   Úbool)r‰   rŠ   r‹   rŒ   rp   r   r   r  rƒ   r=   r;   r   r   N  s   „ ÙAô#ð '1×&<Ñ&<ô 8r=   r   c                  ó,   ‡ — e Zd ZdZdZˆ fd„Zd„ Zˆ xZS )Ú_AbstractRelationshipLoaderz0LoaderStratgies which deal with related objects.)r^   Útargetr:   Úentityc                óþ   •— t         ‰| �  ||«       | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        y r5   )ro   rp   rq   r^   r
  r	  r:   rr   s      €r;   rp   z$_AbstractRelationshipLoader.__init__k  s^   ø€ Ü‰Ñ˜ Ô.Ø×*Ñ*×1Ñ1ˆŒØ×*Ñ*×1Ñ1ˆŒØ×*Ñ*×1Ñ1ˆŒØ×+Ñ+×3Ñ3ˆ�r=   c	           
     ód   — | j                   j                  d«      j                  ||||||||«      S )N))rþ   Ú	immediate)rq   rÐ   rˆ   r„   s	            r;   Ú#_immediateload_create_row_processorz?_AbstractRelationshipLoader._immediateload_create_row_processorr  sC   € ð ×#Ñ#×1Ñ1Ø$ó
ç
Ñ
ØØØØØØØØó	
ð	
r=   )r‰   rŠ   r‹   rŒ   r�   rp   r  rŽ   r�   s   @r;   r  r  f  s   ø„ Ù:à7€Iô4ö
r=   r  c                  ó   — e Zd ZdZy)Ú_DoNothingLoaderzßRelationship loader that makes no change to the object's state.

    Compared to NoLoader, this loader does not initialize the
    collection/attribute to empty/none; the usual default LazyLoader will
    take effect.

    N)r‰   rŠ   r‹   rŒ   rƒ   r=   r;   r  r  ‹  s   „ òr=   r  Únoload)rþ   c                  óL   — e Zd ZdZdZ ej                  dd«      d„ «       Zd„ Zy)Ú	_NoLoaderzQProvide loading behavior for a :class:`.Relationship`
    with "lazy=None".

    rƒ   z2.1z¦The ``noload`` loader strategy is deprecated and will be removed in a future release.  This option produces incorrect results by returning ``None`` for related items.c                ól   — d| _         t        | j                  |d| j                  j                  ¬«       y )NT)r@   rB   )r�   rh   rq   Úcollection_classrÀ   s     r;   r¥   z_NoLoader.init_class_attribute¢  s2   € ð #ˆÔäØ× Ñ ØØØ×-Ñ-×>Ñ>ö		
r=   c	                óP   ‡ — ˆ fd„}	|d   j                  ‰ j                  |	f«       y )Nc                ó€   •— ‰j                   r"t        j                  | |‰j                  «       y d |‰j                  <   y r5   )r:   r   Úinit_state_collectionrR   )rñ   Údict_Úrowrs   s      €r;   Úinvoke_no_loadz6_NoLoader.create_row_processor.<locals>.invoke_no_load¾  s-   ø€ Ø�|Š|Ü×0Ñ0°¸¸t¿x¹xÕHà"&��d—h‘h’r=   rÌ   )rJ   rR   )
rs   r…   rz   r{   r|   r^   r†   r}   r‡   r  s
   `         r;   rˆ   z_NoLoader.create_row_processor³  s&   ø€ ô	'ð 	�5Ñ× Ñ  $§(¡(¨NÐ!;Õ<r=   N)	r‰   rŠ   r‹   rŒ   r�   r   Ú
deprecatedr¥   rˆ   rƒ   r=   r;   r  r  —  s8   „ ñð
 €Ià€T‡_�_Øð	óñ
óð
ó=r=   r  Úselectrã   Úraise_on_sqlÚbaked_selectc                  óÞ   ‡ — e Zd ZU dZdZded<   ded<   ded<   ded<   d	ed
<   	 	 	 	 dˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ddddej                  fd„Zd„ Z ej                  d«      d„ «       Zd„ Zˆ xZS )Ú_LazyLoaderztProvide loading behavior for a :class:`.Relationship`
    with "lazy=True", that is loads when first accessed.

    )Ú
_lazywhereÚ_rev_lazywhereÚ_lazyload_reverse_optionÚ	_order_byÚuse_getÚis_aliased_classÚ_bind_to_colÚ_equated_columnsÚ_rev_bind_to_colÚ_rev_equated_columnsÚ_simple_lazy_clauseÚ_raise_alwaysÚ_raise_on_sqlzColumnElement[bool]r"  zDict[str, ColumnElement[Any]]r(  r#  r*  úRelationshipProperty[Any]rq   c                ór  •— t         ‰| �  ||«       | j                  d   dk(  | _        | j                  d   dk(  | _        t        | j                  «      j                  | _        | j                  j                  }|j                  «       \  | _        | _        | _        |j                  d¬«      \  | _        | _        | _        | j                  j"                  r/t%        j&                  | j                  j"                  «      | _        nd | _        | j*                  j-                  d| | j                  «       | j                   xrY | j.                   xrJ | j                  j0                  d   j3                  | j                  dd| j4                  j6                  ¬	«      | _        | j8                  rŠt;        | j                  «      D ]U  }|| j4                  j6                  v sŒ| j4                  j6                  |   D ]  }| j                  |   | j                  |<   Œ  ŒW | j*                  j-                  d
| «       y y )Nrþ   rã   r  T)Úreverse_directionz%s lazy loading clause %sr   F©Úuse_proxiesÚcompare_keysÚequivalentsz4%s will use Session.get() to optimize instance loads)ro   rp   rÈ   r-  r.  r*   r
  r'  rq   Ú_join_conditionÚcreate_lazy_clauser"  r(  r)  r#  r*  r+  Úorder_byr   Úto_listr%  ÚloggerÚinfor:   Ú_get_clauser³   r^   Ú_equivalent_columnsr&  Úlist)rs   rt   ru   Újoin_conditionr«   r€   rv   s         €r;   rp   z_LazyLoader.__init__ì  sþ  ø€ ô 	‰Ñ˜ Ô.Ø!×/Ñ/°Ñ7¸7ÑBˆÔØ!×/Ñ/°Ñ7¸>ÑIˆÔä '¨¯©Ó 4× EÑ EˆÔà×-Ñ-×=Ñ=ˆð
 ×-Ñ-Ó/ñ		
ØŒOØÔØÔ!ð ×-Ñ-ÀÐ-ÓEñ		
ØÔØÔ!ØÔ%ð ×Ñ×(Ò(Ü!Ÿ\™\¨$×*>Ñ*>×*GÑ*GÓHˆD�Nà!ˆDŒNà�‰×ÑÐ4°d¸D¿O¹OÔLð ×%Ñ%Ð%ò Ø—L‘LÐ òà—‘×'Ñ'¨Ñ*×2Ñ2Ø—‘Ø Ø"Ø ŸK™K×;Ñ;ð	 3ó ð 	Œð �<Š<Ü˜D×1Ñ1Ó2ò N�Ø˜$Ÿ+™+×9Ñ9Ò9Ø!Ÿ[™[×<Ñ<¸SÑAò N˜Ø37×3HÑ3HÈÑ3M˜×-Ñ-¨aÒ0ñNðNð
 �K‰K×ÑØFÈõð r=   c           	     ól  — d| _         | j                  j                  }| j                  j                  rd}d}nB| j                  j                  t
        j                  us| j                  s|rd}d}n	d}d}ndx}}t        | j                  |d| j                  | j                  j                  ||¬«       y )NTF)r@   rC   rB   rD   Ú_deferred_history)r�   rq   Ú_legacy_inactive_history_stylerD   rW   r   Ú	MANYTOONEr&  rh   rÖ   r  )rs   r^   rB  rD   rA  s        r;   r¥   z _LazyLoader.init_class_attribute%  s¸   € Ø"ˆÔð × Ñ ×?Ñ?ð 	'ð ×Ñ×.Ò.Ø!ˆNØ %Ñð × Ñ ×*Ñ*´*×2FÑ2FÑFØ—<’<á-Ø!%�Ø$)Ñ!à!&�Ø$(Ñ!à16Ð6ˆNÐ.äØ× Ñ ØØØ×*Ñ*Ø×-Ñ-×>Ñ>Ø)Ø/ö	
r=   c                ó¾   ‡‡— | j                   }|| j                  c}Šg Šd„ }t        j                  |i d|i«       ˆˆfd„}t        j                  |i d|i«      }|‰fS )Nc                ó   — d| _         y )NF)Úunique)Ú	bindparams    r;   Úvisit_bindparamzG_LazyLoader._memoized_attr__simple_lazy_clause.<locals>.visit_bindparamN  s
   € Ø$ˆIÕr=   rG  c                óä   •— | j                   ‰v r,‰j                  | j                  ‰| j                      d f«       y | j                  €)‰j                  | j                  d | j                  f«       y y r5   )Ú_identifying_keyrJ   rR   ÚcallableÚvalue)rG  Úbind_to_colÚparamss    €€r;   rH  zG_LazyLoader._memoized_attr__simple_lazy_clause.<locals>.visit_bindparamS  sh   ø€ Ø×)Ñ)¨[Ñ8Ø—‘à!Ÿ™Ø# I×$>Ñ$>Ñ?Øðõð ×#Ñ#Ð+Ø—‘˜yŸ}™}¨d°I·O±OÐDÕEð ,r=   )r"  r(  r-   ÚtraverseÚcloned_traverse)rs   Ú	lazywhereÚ	criterionrH  rM  rN  s       @@r;   Ú"_memoized_attr__simple_lazy_clausez._LazyLoader._memoized_attr__simple_lazy_clauseG  sr   ù€ Ø—O‘Oˆ	à"+¨T×->Ñ->Ðˆ	�;àˆò	%ô 	×Ñ˜) R¨+°Ð)GÔHõ
	Fô ×,Ñ,Ø�r˜K¨Ð9ó
ˆ	ð ˜&Ð Ð r=   c                óø  — | j                   \  }}|€,t        j                  ||D ���cg c]  \  }}}|‘Œ
 c}}}«      S | j                  j                  }|j                  «       }	t        j                  |	«      }
|t        j                  z  r|t        j                  z  }i }|D ]K  \  }}}|�>|r(|t        j                  z  r|j                  ||
||«      }n|j                  ||
||«      }|||<   ŒM ||fS c c}}}w r5   )r,  Úsql_utilÚadapt_criterion_to_nullrq   rt   Úobjr   Úinstance_dictr   ÚINIT_OKÚLOAD_AGAINST_COMMITTEDÚ#_get_committed_state_attr_by_columnÚ_get_state_attr_by_column)rs   rñ   rò   rR  Ú
param_keysrR   ÚidentrL  r^   Úor  rN  s               r;   Ú_generate_lazy_clausez!_LazyLoader._generate_lazy_clausee  s  € Ø $× 8Ñ 8Ñˆ	�:àˆ=Ü×3Ñ3Ø¸×DÐDÑ$5 C¨°šCÔDóð ð ×%Ñ%×,Ñ,ˆà�I‰I‹KˆÜ×(Ñ(¨Ó+ˆà”[×(Ñ(Ò(Ø”{×*Ñ*Ñ*ˆGàˆØ!+ò 	 ÑˆC�˜ØÐ Ù˜w¬×)KÑ)KÒKØ"×FÑFØ˜u e¨Wó‘Eð #×<Ñ<Ø˜u e¨Wó�Eð  ˆF�3ŠKð	 ð ˜&Ð Ð ùô3 Es   ¨C5c                ó:   — t        j                  d| ›d|›d�«      ‚)Nrù   z ' is not available due to lazy='rú   rý   s       r;   rï   z_LazyLoader._invoke_raise_load…  s   € Ü×(Ò(Ú8<ºdÐCó
ð 	
r=   Nrƒ   c                ó€  — |j                   s>| j                  j                  s|j                  r|j                  st
        j                  S |j                    }d }	| j                  xr | xs |j                   }
|t        j                  z  s|
r|t        j                  z  s|rt
        j                  S | j                  r;|t        j                  z  s(|
r|t        j                   z  r| j#                  ||d«       t%        |«      }|s\|t        j                  z  rt
        j                  S t'        j(                  dt+        j,                  |«      ›d| j                   ›d�«      ‚|
�r@| j/                  |||«      }	t
        j                  |	v rt
        j                  S t
        j0                  |	v rt
        j0                  S | j2                  j4                  st7        j8                  |	«      ry t7        j:                  |	«      ry | j                   |j<                  v r#|t        j>                  z  st
        j@                  S |jC                  | jD                  |	||¬«      }|�|t
        jF                  u ry |S |t        j                  z  r|t        j                   z  st
        j                  S | jI                  |||	||||||«	      S )Nrã   rá   z> is not bound to a Session; lazy load operation of attribute 'râ   )rò   Úlazy_loaded_from)%rR   rq   Úload_on_pendingÚ_load_pendingÚ
session_idr   rä   r&  r»   r   rå   r   ÚNON_PERSISTENT_OKræ   r-  ÚNO_RAISEÚRELATED_OBJECT_OKrï   r#   rì   rí   r\   rî   Ú_get_ident_for_use_getÚ	NEVER_SETr^   Úallow_partial_pksr&   rÜ   Ú
issupersetÚdictÚDEFERRED_HISTORY_LOADr   Ú_identity_lookupr
  ÚPASSIVE_CLASS_MISMATCHÚ_emit_lazyload)rs   rñ   rò   r|   Úextra_criteriaÚextra_optionsÚalternate_effective_pathÚexecution_optionsÚpendingÚprimary_key_identityr&  r÷   Úinstances                r;   rÖ   z_LazyLoader._load_for_stateŠ  sx  € ð �yŠyà×(Ñ(×8Ò8Ø×+Ò+à×#Ò#ä'×2Ñ2Ð2à—i‘i�-ˆØ#Ðà—,‘,ÒO¨ KÒ$N°w×7NÑ7NÐ3Nˆàœ+×,Ñ,Ò,±WØœ*×6Ñ6Ò6¹7ä'×9Ñ9Ð9ð ×Òàœk×2Ñ2Ò2ñ Øœ[×:Ñ:Ò:ð ×#Ñ# E¨7°GÔ<ä  Ó'ˆÙØœ×-Ñ-Ò-Ü+×=Ñ=Ð=ä×/Ò/ô ×%Ñ% eÕ,¨d¯h«hð8óð ò Ø#'×#>Ñ#>Ø˜ ó$Ð ô $×5Ñ5Ð9MÑMÜ+×=Ñ=Ð=Ü%×/Ñ/Ð3GÑGÜ+×5Ñ5Ð5ð
 —;‘;×0Ò0Ü!×.Ñ.Ð/CÔDØä!×,Ñ,Ð-AÔBØð —‘˜EŸJ™JÑ&Ø¤+×"CÑ"CÒCä+×8Ñ8Ð8ð ×/Ñ/Ø—‘Ø$ØØ!&ð	 0ó ˆHð Ð#ØÔ3×JÑJÑJØà#�Oàœk×0Ñ0Ò0Ø¤×!>Ñ!>Ò>ä+×=Ñ=Ð=à×"Ñ"ØØØ ØØØØØ$Øó

ð 
	
r=   c           	     ó  — |j                   j                  }|t        j                  z  r|j                  }n|j
                  }|j                  }| j                  j                  D �cg c]  } |||| j                  |   |¬«      ‘Œ c}S c c}w )N©rò   )	rç   r^   r   rZ  r[  r\  rn  rŸ   r)  )rs   r÷   rñ   rò   Úinstance_mapperÚget_attrr  Úpks           r;   rj  z"_LazyLoader._get_ident_for_use_get  s€   € ØŸ-™-×.Ñ.ˆà”[×7Ñ7Ò7Ø&×JÑJ‰Hà&×@Ñ@ˆHà—
‘
ˆð —k‘k×-Ñ-ö
àñ �U˜E 4×#8Ñ#8¸Ñ#<ÀgÖNò
ð 	
ùò 
s   Á' B
zsqlalchemy.orm.strategy_optionsc
                ó`  ‡ ‡— t         j                  j                  Š‰ j                  j	                  «       }
t        j                  |
g|
j                  t        j                  ¬«      }t        j                  }|d|dœz  }‰ j                  j                  �0|j                  ‰ j                  ‰ j                  j                  «      }|j                    }|s|t"        j$                  z  rt        j&                  ddi«      |_        ‰ j*                  }|j,                  s|r|j.                  rs|€|j0                  ‰ j                     }n|‰ j                     }|j,                  }|r2|j.                  r&d}|t3        j4                  ‰ j                  |«      fz  }||_        n5|€$|j                  j8                  ‰ j                     }n|‰ j                     }|r|xj6                  |z  c_        |xj:                  d|iz  c_        |rL‰ j<                  r&|t>        j@                  z  s‰ jC                  ||d«       tE        jF                  |||||	¬«      S ‰ jH                  r‰ jH                  |_%        ˆ ˆfd„}|jM                  |‰ j                  «      }‰ jO                  ||«      \  }}|	r#t         jP                  jS                  |	d	|i«      }	nd	|i}	‰ j                   |jT                  v r#|t>        jV                  z  stX        jZ                  S |r3t        j\                  t2        j^                  |ja                  «       «      r4y t        j\                  t2        jb                  |ja                  «       «      ry ‰ j<                  r&|t>        j@                  z  s‰ jC                  ||d«       |f|_2        |jg                  |||	¬
«      }|ji                  «       jk                  «       jm                  «       }‰ jn                  r|S tq        |«      }|r,|dkD  r"t        jr                  d‰ j                  z  «       |d   S y )N)Ú_raw_columnsÚ_propagate_attrsrÎ   F)Ú_invoke_all_eagersÚ_lazy_loaded_fromÚ	autoflushÚ_current_pathr  )Úload_optionsrv  c                óz  •— ‰j                   j                  D ]¡  }|j                  t        j                  u sŒ |j
                  sŒ-t        |j                  t        «      rŒH‰j                  j                  | j                  j                  |j                     «      j                  |«      j                  | «       Œ£ y r5   )rq   Ú_reverse_propertyrW   r   rC  Ú_use_getré   rê   r!  r%   Ú_construct_for_existing_pathrØ   r…  rt   ÚlazyloadÚprocess_compile_state)Úcompile_contextÚrevrs   Ústrategy_optionss     €€r;   Ú_lazyload_reversez5_LazyLoader._emit_lazyload.<locals>._lazyload_reversed  sŽ   ø€ Ø×+Ñ+×=Ñ=ò K�ð —M‘M¤Z×%9Ñ%9Ò9ØŸ›Ü& s§|¡|´[ÕAà$×)Ñ)×FÑFØ'×7Ñ7×EÑEØŸJ™Jñó÷ ‘h˜s“m×$9Ñ$9¸/Õ$JñKr=   Ú_sa_orm_load_options)rv  r   zKMultiple rows returned with uselist=False for lazily-loaded attribute '%s' r   ):r   Ú	preloadedÚorm_strategy_optionsr
  Ú__clause_element__r/   Ú_create_raw_selectr�  r   Údefault_compile_optionsr    Údefault_load_optionsrq   Ú	secondaryÚselect_fromr^   rR   r   ÚNO_AUTOFLUSHÚimmutabledictÚ_execution_optionsr&  r†  r»   Ú	load_pathr\   ÚLoaderCriteriaOptionÚ_with_optionsÚ_path_registryrÎ   r.  r   rh  rï   r   Ú_load_on_pk_identityr%  Ú_order_by_clausesÚ_add_compile_state_funcr`  Ú
EMPTY_DICTÚ
merge_withrn  ro  r   r   Úhas_intersectionÚ	_none_setÚvaluesÚ
_never_setÚ_where_criteriaÚexecuterF  ÚscalarsÚallr:   ÚlenÚwarn)rs   r÷   rñ   rx  rò   r|   rs  rt  ru  rv  ÚclauseelementÚstmtr†  rw  r&  Úeffective_pathrg   r�  Úlazy_clauserN  r†   Úlr�  s   `                     @r;   rr  z_LazyLoader._emit_lazyload  sÃ  ù€ ô  Ÿ>™>×>Ñ>ÐàŸ™×6Ñ6Ó8ˆÜ×(Ñ(Ø'˜Ø*×;Ñ;Ü-×EÑEô
ˆô
 $×8Ñ8ˆàØ"'Ø!&ñ
ñ 	
ˆð
 ×Ñ×)Ñ)Ð5Ø×#Ñ#Ø—‘˜T×1Ñ1×;Ñ;óˆDð —i‘i�-ˆñ �g¤
× 7Ñ 7Ò7Ü&*×&8Ñ&8¸+ÀuÐ9MÓ&NˆDÔ#à—,‘,ˆà×Ò¡'¨g×.EÒ.EØ'Ð/Ø!&§¡°×1EÑ1EÑ!F‘à!9¸$×:NÑ:NÑ!O�à×%Ñ%ˆDá˜7×2Ò2Ø�ØÜ×1Ñ1°$·+±+¸~ÓNðñ �ð "&ˆDÕØ%Ð-ð #Ÿ\™\×8Ñ8¸×9MÑ9MÑN‰Nð 6°d×6JÑ6JÑKˆNáØ×Ò -Ñ/Õà×Ò /°>Ð!BÑBÕáØ×!Ò!¨'´K×4HÑ4HÒ*HØ×'Ñ'¨¨w¸ÔGä×/Ñ/ØØØ$Ø)Ø"3ôð ð �>Š>Ø%)§^¡^ˆDÔ"õ	Kð ×+Ñ+Ø˜t×3Ñ3ó
ˆð #×8Ñ8¸ÀÓHÑˆ�VáÜ $§¡× :Ñ :Ø!Ð$:¸LÐ#Ió!Ñð
 '¨ð!Ðð
 �H‰H˜Ÿ
™
Ñ"Øœk×?Ñ?Ò?ä'×4Ñ4Ð4áÜ×$Ñ$¤X×%7Ñ%7¸¿¹»ÔIØä×"Ñ"¤8×#6Ñ#6¸¿¹»ÔHØà×Ò g´×0DÑ0DÒ&DØ×#Ñ# E¨7°NÔCà +˜~ˆÔà—‘Ø�&Ð,=ð !ó 
ˆð —‘“×(Ñ(Ó*×.Ñ.Ó0ˆà�<Š<ØˆMä�F“ˆAÙØ�q’5Ü—I‘IðJà×.Ñ.ñ/ôð ˜a‘yÐ àr=   c	                ó   ‡— | j                   Š|j                  j                  rd|j                  j                  j
                  rD| j                   |j                  j                  j
                  v r| j                  ||||||||«      S | j                  r|r{|j                  rot        j                  |j                  t        ‰| ||j                  r|j                  |«      nt        «      ‰«      }	|d   j                  | j                   |	f«       y |j                   s|j"                  r&ˆfd„}
|d   j                  | j                   |
f«       y y )NrÌ   c                ó*   •— | j                  |‰«       y r5   )Ú_reset)rñ   r  r  rR   s      €r;   Úreset_for_lazy_callablezA_LazyLoader.create_row_processor.<locals>.reset_for_lazy_callableä  s   ø€ ð —‘˜U CÕ(r=   )rR   r†  Ú_is_user_refreshr   rÎ   rÏ   r  r�   r»   r$   Ú"_instance_level_callable_processorrS   Ú_LoadLazyAttributeÚ_generate_extra_criteriaÚ_NO_EXTRA_CRITERIArJ   Úpopulate_existingÚalways_refresh)rs   r…   rz   r{   r|   r^   r†   r}   r‡   Úset_lazy_callabler¸  rR   s              @r;   rˆ   z _LazyLoader.create_row_processorª  s8  ø€ ð �h‰hˆð × Ñ ×1Ò1Ø—‘×.Ñ.×?Ò?Ø—‘˜GŸM™M×:Ñ:×KÑKÑKà×;Ñ;ØØØØØØØØó	ð 	ð ×"Ò"¡w°7×3JÒ3Jô ×@Ñ@à×$Ñ$Ü"ØØØð #×2Ò2ð  ×8Ñ8¸ÔAä/ó	ð ó!Ðð" �uÑ×$Ñ$ d§h¡hÐ0AÐ%BÕCØ×&Ò&¨&×*?Ò*?ô	)ð �uÑ×$Ñ$ d§h¡hÐ0GÐ%HÕIð +@r=   )rt   r/  ru   zTuple[Any, ...])r‰   rŠ   r‹   rŒ   r�   Ú__annotations__rp   r¥   rS  r`  rï   r   r¤  rÖ   rj  Úpreload_modulerr  rˆ   rŽ   r�   s   @r;   r!  r!  Ç  s¨   ø… ñð
€Ið  $Ó#Ø/Ó/Ø'Ó'Ø3Ó3à.Ó.ð7Ø/ð7Ø?Nõ7òr 
òD!ò<!ò@
ð ØØØ!%ØŸ/™/óu
òn
ð €T×ÑÐ:Ó;ñWó <ðWörEJr=   r!  c                  ó:   — e Zd ZdZd„ Zd„ Zej                  fd„Zy)r»  a¦  semi-serializable loader object used by LazyLoader

    Historically, this object would be carried along with instances that
    needed to run lazyloaders, so it had to be serializable to support
    cached instances.

    this is no longer a general requirement, and the case where this object
    is used is exactly the case where we can't really serialize easily,
    which is when extra criteria in the loader option is present.

    We can't reliably serialize that as it refers to mapped entities and
    AliasedClass objects that are local to the current process, which would
    need to be matched up on deserialize e.g. the sqlalchemy.ext.serializer
    approach.

    c                óP   — || _         |j                  | _        || _        || _        y r5   ©rR   ru   r|   rs  )rs   rR   Úinitiating_strategyr|   rs  s        r;   rp   z_LoadLazyAttribute.__init__  s&   € ØˆŒØ/×<Ñ<ˆÔØˆŒØ,ˆÕr=   c                ó¢   — | j                   t        urt        j                  d«       | j                  | j
                  | j                  t        dœS )NzvCan't reliably serialize a lazyload() option that contains additional criteria; please use eager loading for this caserÅ  )rs  r½  r   r¯  rR   ru   r|   )rs   s    r;   Ú__getstate__z_LoadLazyAttribute.__getstate__
  sH   € Ø×ÑÔ&8Ñ8Ü�I‰Ið ôð —8‘8Ø ×-Ñ-Ø—|‘|Ü0ñ	
ð 	
r=   c                óè   — | j                   }|j                  j                  }|j                  |   }|j                  | j
                     }|j                  ||| j                  | j                  ¬«      S )N)r|   rs  )	rR   rç   r^   rP   Ú_strategiesru   rÖ   r|   rs  )rs   rñ   rò   rR   r|  r8   rê   s          r;   r  z_LoadLazyAttribute.__call__  sn   € Ø�h‰hˆØŸ-™-×.Ñ.ˆØ×%Ñ% cÑ*ˆØ×#Ñ# D×$5Ñ$5Ñ6ˆà×'Ñ'ØØØ—L‘LØ×.Ñ.ð	 (ó 
ð 	
r=   N)	r‰   rŠ   r‹   rŒ   rp   rÈ  r   r   r  rƒ   r=   r;   r»  r»  ò  s!   „ ñò"-ò
ð '1×&<Ñ&<ô 
r=   r»  c                  ó   — e Zd ZdZdZdd„Zy)Ú_PostLoaderz;A relationship loader that emits a second SELECT statement.rƒ   Nc                óŠ  — |j                   j                  xs t        j                  j                  |z   }|j                  «       }t        j                  d|i«      }|r"|j                  j                  dd «      }|dk(  }	nd }d}	|�’| j                  j                  s#t        j                  d| j                  › d�«      ‚|j                  j                  dt        | «      › �|«      }|	s|dk  r|d||fS |	s"|j!                  dt        | «      › �|d	z
  i«      }t"        j$                  j'                  ||| j                  «      r|d||fS || j                     }
|| j                     }|
j)                  |j*                  d
«      s;|r|j,                  dz  |kD  r'|d||fS |j/                  | j0                  «      r|d||fS |d||fS )NÚsa_top_level_orm_contextÚrecursion_depthéÿÿÿÿFz'recursion_depth option on relationship z0 not valid for non-self-referential relationshipÚ_recursion_depth_r   r   Úloaderr(   T)ry   Úcurrent_pathr\   ÚPathRegistryÚrootÚ_get_top_level_contextr   r›  rÞ   rQ   rq   Ú_is_self_referentialrû   rü   rv  ÚidÚunionr   Ú	_PostLoadÚpath_existsÚcontainsr   ÚlengthÚcontains_mapperr^   )rs   r…   r{   r|   Ú
join_depthr²  Útop_level_contextrv  rÏ  Úunlimited_recursionÚpath_w_propÚeffective_path_w_props               r;   Ú_setup_for_recursionz _PostLoader._setup_for_recursion+  s  € à×!Ñ!×.Ñ.ÒL´(×2GÑ2G×2LÑ2LØñˆð $×:Ñ:Ó<ÐÜ ×.Ñ.Ø'Ð):Ð;ó
Ðñ Ø%×0Ñ0×4Ñ4Ð5FÈÓMˆOØ"1°RÑ"7Ñà"ˆOØ"'ÐàÐ&Ø×'Ñ'×<Ò<Ü×0Ñ0Ø=Ø×+Ñ+Ð,ð -8ð8óð ð
 &×7Ñ7×;Ñ;Ø#¤B t£H :Ð.°óˆOñ '¨?¸QÒ+>à"ØØ%Ø#ð	ð ñ 'Ø$5×$;Ñ$;à+¬B¨t«H¨:Ð6¸È!Ñ8Kðó%Ð!ô ×Ñ×(Ñ(Ø�^ T×%9Ñ%9ô
ð " 5Ð*;¸_ÐLÐLà˜4×/Ñ/Ñ0ˆØ .¨t×/CÑ/CÑ DÐà×#Ñ# G×$6Ñ$6¸ÔAÙØ(×/Ñ/°!Ñ3°jÒ@à&ØØ)Ø'ð	ð ð '×6Ñ6°t·{±{ÔCà"ØØ%Ø#ð	ð ð ˜tÐ%6¸ÐGÐGr=   r5   )r‰   rŠ   r‹   rŒ   r�   rä  rƒ   r=   r;   rÌ  rÌ  &  s   „ ÙEà€IôDHr=   rÌ  r  c                  ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )Ú_ImmediateLoader©rß  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ©ro   rp   rq   rß  rr   s      €r;   rp   z_ImmediateLoader.__init__v  ó%   ø€ Ü‰Ñ˜ Ô.Ø×.Ñ.×9Ñ9ˆ�r=   c                óX   — | j                   j                  d«      j                  |«       y ©N©)rþ   r  ©rq   rÐ   r¥   rÀ   s     r;   r¥   z%_ImmediateLoader.init_class_attributez  ó$   € Ø×Ñ×*Ñ*Ø!ó	
ç
Ñ
˜vÕ
&r=   c	                ó   — |j                   j                  j                  sy | j                  |||| j                  «      \  }	}
}}|
s"t
        j                  t        j                  z  }n!t
        j                  t        j                  z  }t        j                  j                  ||	| j                  | j                  | j                  ||||«	       y r5   )ry   rØ   Ú_enable_eagerloadsrä  rß  r   ÚPASSIVE_NO_FETCH_RELATEDr   rh  r   r   rÚ  Úcallable_for_pathrt   rq   Ú_load_for_path)rs   r…   rz   r{   r|   r^   r†   r}   r‡   r²  Ú
run_loaderrv  rÏ  Úflagss                 r;   rˆ   z%_ImmediateLoader.create_row_processor  s¹   € ð ×$Ñ$×4Ñ4×GÒGØð ×%Ñ% g¨t°W¸d¿o¹oÓNñ	
ØØØØñ ô
 ×7Ñ7¼+×:NÑ:NÑN‰Eä×*Ñ*¬[×-AÑ-AÑAˆEä×Ñ×+Ñ+ØØØ�K‰KØ× Ñ Ø×ÑØØØØõ
	
r=   c	                óÎ  — |rJt        |j                  j                  «      }	||j                  «       f|	_        |j                  «       }
|	f}n|}
d}| j                  }| j                  j                  d«      }|D ]i  \  }}|j                  }|s||vsŒ|j                  ||||
|¬«      }|t        t        j                  fvsŒH|j                  |«      j                  |||«       Œk y )Nrƒ   rí  )rt  ru  rv  )r%   r{   r
  Ú_recurser…   Ú_truncate_recursiverR   rq   rÐ   rn  rÖ   r   r   ræ   Úget_implÚset_committed_value)rs   r…   r{   ÚstatesÚ	load_onlyr|   rö  rÏ  rv  Únew_optru  rt  rR   Ú
lazyloaderrñ   Ú	overwriter  rL  s                     r;   rô  z_ImmediateLoader._load_for_path©  sü   € ñ Ü˜7Ÿ<™<×.Ñ.Ó/ˆGàØ× Ñ Ó"ðˆGŒOð (,×'?Ñ'?Ó'AÐ$Ø$˜J‰Mà'+Ð$ØˆMà�h‰hˆØ×)Ñ)×7Ñ7Ð8MÓNˆ
Ø &ò 	ÑˆE�9Ø—J‘JˆEá˜C uÒ,Ø"×2Ñ2ØØØ"/Ø-EØ&7ð 3ó �ð Ü Ü(×:Ñ:ð!ò ð —N‘N 3Ó'×;Ñ;Ø˜u eõñ	r=   )	r‰   rŠ   r‹   r�   rp   r¥   rˆ   rô  rŽ   r�   s   @r;   ræ  ræ  r  s   ø„ à€Iô:ò'ò
(
öT*r=   ræ  Úsubqueryc                  óx   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z G d
„ d«      Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú_SubqueryLoaderrç  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ré  rr   s      €r;   rp   z_SubqueryLoader.__init__Û  rê  r=   c                óX   — | j                   j                  d«      j                  |«       y rì  rî  rÀ   s     r;   r¥   z$_SubqueryLoader.init_class_attributeß  rï  r=   c                óv  — |}|j                   }t        j                  |d   «      }| j                  j	                  |«      r*| j
                  |d   u r| j                  | j
                  }}n||d   }}|rf|j                  |   j                  j                  |   }	t        |«      t        |	«      z
  }
|
r)|	t        j                  j                  ||
 d  «      z  }	n|}	|j                  }|D �cg c]<  }t        |	j                   d   j                  |j                   |   j"                  «      ‘Œ> }}||||	fS c c}w )Nr   r   )r{   r\   Ú_class_to_mapperrt   Úisarq   Ú	_entitiesÚentity_zeror   r®  r   rÔ  ÚcoerceÚlocal_columnsÚgetattrr
  r¡   rR   )rs   Úorig_query_entity_indexÚ	subq_pathÚcurrent_compile_stateÚis_rootÚgiven_subq_pathÚsubq_mapperÚleftmost_mapperÚleftmost_propÚnew_subq_pathÚ
additionalÚleftmost_colsr€   Úleftmost_attrs                 r;   Ú_get_leftmostz_SubqueryLoader._get_leftmostä  sI  € ð $ˆØ—N‘Nˆ	Ü×/Ñ/°	¸!±Ó=ˆð �K‰K�O‰O˜KÔ(Ø×$Ñ$¨	°!©Ñ4à-1¯[©[¸$×:NÑ:N˜]‰Oà-8¸)ÀA¹,˜]ˆOáð 2×;Ñ;Ø'ñç‰kŸ.™.¨ñ8ˆMô ˜Y›¬#¨mÓ*<Ñ<ˆJÙØ¤×!;Ñ!;×!BÑ!BØ˜z˜k˜lÐ+ó"ñ ‘ð ,ˆMà%×3Ñ3ˆð #ö
ð
 ô	 Ø×"Ñ" 1Ñ%×,Ñ,Ø×1Ñ1°!Ñ4×8Ñ8õð
ˆð 
ð  ¨}¸mÐKÐKùò
s   Ã-AD6c           	     óŠ  — |j                  «       j                  d «      }t        j                  j	                  t        j                  «      }|j
                  j                  |j
                  «       |}|j                  sEd|_         |j                  j                  |gt        ||¬«      D �	ch c]  }	|	d   �|	d   ’Œ c}	¢­Ž  |j                  |D �
cg c]:  }
t        j                  j                  t        j                   j"                  |
«      ‘Œ< c}
|j%                  «       «      }||_        |j(                  }|du rd|_        nN|€L|D �ch c]  }|j,                  ’Œ c}D ]/  }t/        |«      j1                  |j2                  «      rŒ(d|_         n |j4                  sd|_        |j*                  du rB|j6                  r6t9        j:                  ||j6                  «      }|r|j=                  ||z   «       |j?                  t@        «      jC                  «       }tE        jF                  ||d¬«      }|S c c}	w c c}
w c c}w )NF)ry   r
  Trƒ   ©Úuse_mapper_path)$Ú_cloneÚ	correlater   ÚQueryÚ__new__Ú__dict__ÚupdateÚ	_from_objÚ_enable_assertionsr™  Únon_generativer   Ú_adapt_col_listr,   Ú	coercionsÚexpectÚrolesÚColumnsClauseRoleÚ_get_current_adapterr€  Údistinct_target_keyÚ	_distinctÚtablerÛ   rm  rŸ   Ú_has_row_limiting_clauser¢  rU  Ú expand_column_list_from_order_byÚ_set_entitiesÚset_label_styler.   r  r\   r'   )rs   Úorig_compile_stateÚ
orig_queryr  r  Úleftmost_relationshipÚorig_entityÚqÚq2Úentr_  Útarget_colsr-  r€   ÚtÚto_addÚembed_qÚ
left_aliass                     r;   Ú_generate_from_original_queryz-_SubqueryLoader._generate_from_original_query  s  € ð ×ÑÓ×)Ñ)¨$Ó/ˆô �[‰[× Ñ ¤§¡Ó-ˆØ
�‰×Ñ˜1Ÿ:™:Ô&Øˆð �{Š{Ø#(ˆAÔ Ø(ˆA�M‰M×(Ñ(Øð	ô  4Ø"Ð2Dô öàð ˜8‘}Ð0ð	 ˜“Mòó	ð0 )×8Ñ8ð 'öàô —‘×$Ñ$¤S§Y¡Y×%@Ñ%@À!ÕDòð ×3Ñ3Ó5ó
ˆð %ˆŒà3×GÑGÐà $Ñ&ØˆA�KØ Ð(ð (3Ö3 !�a—g“gÒ3ò �Ü˜;Ó'×2Ñ2°1·=±=ÕAØ"&�A”KÙðð ×)Ò)Ø"$ˆAÔà�;‰;˜$Ñ 1×#6Ò#6ô ×>Ñ>Ø˜Q×0Ñ0óˆFñ Ø—‘ ¨fÑ 4Ô5ð ×#Ñ#Ô$BÓC×LÑLÓNˆÜ×*Ñ*Ø˜W°dô
ˆ
ð ÐùòAùò.ùò 4s   Â.H6
Ã?H;ÅI c                ón  — g }t        |j                  «       «      }t        |«      D ]W  \  }\  }}|dkD  r+||dz
     d   j                  }|j	                  |«      r|n|}	n|}	|j                  |	|j                  f«       ŒY t        |«      dk  r|}
nKt        |d   d   «      }|j                  r|j                  }
n!t        j                  |j                  d¬«      }
| j                  j                  }|D �cg c]/  }t        |
| j                   j"                  |   j                  «      ‘Œ1 }}|||
fS c c}w )Nr   r   r(   rÐ  Tr  )r>  ÚpairsÚ	enumerater^   r  rJ   rR   r®  r*   r'  r
  r\   r'   rq   r  r  rt   r¡   )rs   r?  r  Úto_joinrB  Úir^   r8   Úprev_mapperÚ	to_appendÚparent_aliasr;  Ú
local_colsr€   Ú
local_attrs                  r;   Ú_prep_for_joinsz_SubqueryLoader._prep_for_joinsy  s7  € àˆÜ�Y—_‘_Ó&Ó'ˆä!*¨5Ó!1ò 	2ÑˆA‰~�˜Ø�1Šuð $ A¨¡E™l¨1™o×4Ñ4�Ø+6¯?©?¸6Ô+B™KÈ‘	à"�	à�N‰N˜I t§x¡xÐ0Õ1ð	2ô& ˆw‹<˜!Òð &‰Lä˜7 2™; q™>Ó*ˆDØ×$Ò$Ø#Ÿ{™{‘ô  (×4Ñ4Ø—K‘K°ô �ð ×)Ñ)×7Ñ7ˆ
ð  ö
àô �L $§+¡+×"?Ñ"?ÀÑ"B×"FÑ"FÕGð
ˆ
ð 
ð ˜
 LÐ0Ð0ùò	
s   Ã74D2c                ód  — t        |«      }|dk(  r$t        ||d   d   «      j                  |«      g}�n^|dk(  rDt        ||d   d   «      j                  |«      t        ||d   d   «      j                  |«      g}�n|dkD  �r|dd D �cg c]F  }t        |d   «      j                  st        j                  |d   «      n|d   j                  |d   f‘ŒH }}g }	|rb|j                  d«      }t        |d   |d   «      }
|r|
j                  |d   d   «      }
n|
j                  |«      }
|	j                  |
«       |rŒbt        ||d   d   «      j                  |	d   j                  «      g|	z   t        ||d   d   «      j                  |«      gz   }|D ]  }
|j                  |
«      }Œ |S c c}w )Nr   r   r(   rÐ  )r®  r  Úof_typer*   r'  r\   r'   r
  ÚpoprJ   rt   Újoin)rs   r8  rD  r?  rH  Úeffective_entityÚltjÚitemÚmiddleÚinnerÚattrs              r;   Ú_apply_joinsz_SubqueryLoader._apply_joins¨  sá  € ô �'‹lˆØ�!Š8ä˜
 G¨A¡J¨q¡MÓ2×:Ñ:Ð;KÓLðŠGð �AŠXä˜
 G¨A¡J¨q¡MÓ2×:Ñ:¸<ÓHÜ˜ g¨b¡k°!¡nÓ5×=Ñ=Ø$óðŠGð �1‹Wð $ A b˜Mö
ð ô  ' t¨A¡wÓ/×@Ò@ô !×-Ñ-¨d°1©gÔ6à! !™WŸ^™^à˜‘Gòð
ˆFð 
ð ˆEáØ—z‘z !“}�Ü˜t A™w¨¨Q©Ó0�ÙØŸ<™<¨¨q©	°!©Ó5‘DàŸ<™<¨Ó5�Dà—‘˜TÔ"ò ô ˜ W¨Q¡Z°¡]Ó3×;Ñ;¸EÀ!¹H¿O¹OÓLÐMØñô ˜L¨'°"©+°a©.Ó9×AÑAØ(óðñð ð ò 	ˆDØ—‘�t“‰Að	ð ˆùòI
s   ÂAF-c                óÌ   — |j                   }|r5|j                  r)|t        j                  ||j	                  |«      «      fz  }|j                  |«      } |j                  |Ž }|S r5   )rŸ  r»   r\   rž  r¼  Ú_with_current_pathÚoptions)	rs   r…   r8  r  Úrewritten_pathr5  rP  r|   Únew_optionss	            r;   Ú_setup_optionsz_SubqueryLoader._setup_optionsÞ  so   € ð" !×.Ñ.ˆá�w×.Ò.ØÜ×-Ñ-Ø$Ø×4Ñ4°WÓ=óðñ ˆKð × Ñ  Ó0ˆØˆA�I‰I�{Ð#ˆàˆr=   c                óv   ‡ — ‰ j                   j                  r!ˆ fd„}|j                  |‰ j                   «      }|S )Nc                ó�   •— | xj                   t        t        j                  ‰j                  j
                  «      «      z  c_         y r5   ©Úeager_order_byÚtupler   r9  rq   r8  ©r�  rs   s    €r;   Ú_setup_outermost_orderbyzJ_SubqueryLoader._setup_outermost_orderby.<locals>._setup_outermost_orderby  s3   ø€ Ø×.Ò.´%Ü—L‘L ×!5Ñ!5×!>Ñ!>Ó?ó3ñ Ö.r=   )rq   r8  r£  )rs   r8  rc  s   `  r;   rc  z(_SubqueryLoader._setup_outermost_orderby   s;   ø€ Ø×Ñ×(Ò(ôð
 ×)Ñ)Ø(¨$×*>Ñ*>óˆAð ˆr=   c                  ó,   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zy)ú _SubqueryLoader._SubqCollectionsz±Given a :class:`_query.Query` used to emit the "subquery load",
        provide a load interface that executes the query at the
        first moment a value is needed.

        ©r÷   rv  r†  rN  ÚsubqÚ_datac                ó°   — |j                   | _         |j                  | _        |j                  | _        |j                  xs i | _        || _        d | _        y r5   rf  )rs   r…   rg  s      r;   rp   z)_SubqueryLoader._SubqCollections.__init__  sI   € ð #Ÿ?™?ˆDŒLØ%,×%>Ñ%>ˆDÔ"Ø '× 4Ñ 4ˆDÔØ!Ÿ.™.Ò.¨BˆDŒKØˆDŒIØˆD�Jr=   c                ór   — | j                   €| j                  «        | j                   j                  ||«      S r5   )rh  Ú_loadrQ   )rs   rR   Údefaults      r;   rQ   z$_SubqueryLoader._SubqCollections.get(  s*   € Ø�z‰zÐ!Ø—
‘
”Ø—:‘:—>‘> # wÓ/Ð/r=   c                ó¢  — t        j                  t        «      | _        | j                  }|j
                  �J ‚|j                  | j
                  «      }| j                  j                  r|j                  «       }| j                  }|j                  | j                  «      D ],  }|j                  «       }||dd     j                  |d   «       Œ. y )Nr   r   )ÚcollectionsÚdefaultdictr>  rh  rg  r÷   Úwith_sessionr†  Ú_populate_existingr¾  rN  Ú_to_tuple_instancerJ   )rs   r8  Údatar  Útups        r;   rk  z&_SubqueryLoader._SubqCollections._load-  s¯   € Ü$×0Ñ0´Ó6ˆDŒJà—	‘	ˆAØ—9‘9Ð$Ð$Ð$à—‘˜tŸ|™|Ó,ˆAà× Ñ ×3Ò3Ø×'Ñ'Ó)�ð —:‘:ˆDØ—x‘x §¡Ó,ò -�ð ×,Ñ,Ó.�Ø�S˜˜�W‘×$Ñ$ S¨¡VÕ,ñ	-r=   c                ó>   — | j                   €| j                  «        y y r5   )rh  rk  )rs   rñ   r  r  s       r;   rÒ  z'_SubqueryLoader._SubqCollections.loaderA  s   € Ø�z‰zÐ!Ø—
‘
•ð "r=   N)	r‰   rŠ   r‹   rŒ   r�   rp   rQ   rk  rÒ  rƒ   r=   r;   Ú_SubqCollectionsre    s"   „ ñ	ð
ˆ	ò	ò	0ò
	-ó(	r=   rv  c           	     óz  — |j                   }|j                  j                  r|j                  j                  ry |j                  j                  |«      }d|_        || j                     }|j                  |j                  dd «      }	|	�|	}
n| j                  }
|j                  j                  j                  dt        j                  j                  t        j                  j                  f«      \  }}|t        j                  j                  u }||z   }||z   }|j                  j                  j                  dt         f|j                  «      }t#        j$                  |d«      }|j&                  r>|j(                  j*                  €t-        j.                  d| ›d|›d�«       |j0                  }|j3                  |d	¬
«      }| j5                  ||||«      \  }}}}| j7                  ||||||«      }t        j8                  |
«      }|j                  j                  j;                  |j<                  dt         f|d||fi«      |_        |j?                  d	«      }| jA                  ||«      \  }}} |jB                  |Ž }| jE                  |||||
«      }| jG                  ||||||
|«      }| jI                  |«      }|S )NTÚpath_with_polymorphic)Úsubquery_pathsNr5  Úormzsubqueryloader for "z!" must invoke lambda callable at z  in order to produce a new query, decreasing the efficiency of caching for this statement.  Consider using selectinload() for more effective full-lambda cachingF)Úlegacy)%ry   rØ   rñ  Ú_for_refresh_stater	  ÚindexÚloaders_require_bufferingrq   rQ   r   r
  r   rœ  r\   rÔ  rÕ  r  r   Ú_get_plugin_class_for_pluginÚ_is_lambda_elementr†  rƒ  r   r¯  Ú	_resolvedÚ_create_entities_collectionr  r@  r   r¥  rv  Ú_set_enable_single_critrK  Úadd_columnsrV  r\  rc  )rs   r…   rz   r{   r
  r|   r}   ry   r  Úwith_poly_entityrP  r  rZ  r  r5  Úcompile_state_clsr4  r  r  r6  r?  r8  rD  rJ  rH  s                            r;   Ú_setup_query_from_rowprocz)_SubqueryLoader._setup_query_from_rowprocE  sá  € ð  ×-Ñ-ˆà×-Ñ-×@Ò@Ø×,Ñ,×?Ò?àà"/×"9Ñ"9×"?Ñ"?ÀÓ"MÐØ,0ˆÔ)à�D×(Ñ(Ñ)ˆð  Ÿ8™8Ø×$Ñ$Ð&=¸tó
Ðð Ð'Ø/Ñà#Ÿ{™{Ðà$+§M¡M×$DÑ$D×$HÑ$HØ$Ü×"Ñ"×'Ñ'¬×)>Ñ)>×)CÑ)CÐDó%
Ñ!ˆ	�>ð œx×4Ñ4×9Ñ9Ð9ˆØ Ñ$ˆ	Ø'¨$Ñ.ˆð —]‘]×5Ñ5×9Ñ9Øœ?Ð+¨W¯]©]ó
ˆ
ô -×IÑIØ˜ó
Ðð ×(Ò(Ø×#Ñ#×5Ñ5Ð=Ü—	’	ò šZð)ôð $×-Ñ-ˆJð
 /×JÑJØ˜uð Kó 
Ðð ×ÑØ#ØØØó	
ñ	
ØØØ!Øð ×7Ñ7ØØØØØ!Øó
ˆ
ô �K‰KÐ(Ó)ˆà&Ÿ}™}×?Ñ?×JÑJØ×%Ñ%àœÐ/°Ø(¨9°nÐ*Eðó 
ˆÔð ×%Ñ% eÓ,ˆØ,0×,@Ñ,@Ø˜	ó-
Ñ)ˆ�˜\ð ˆA�M‰M˜:Ð&ˆØ×ÑØˆw˜
 LÐ2Bó
ˆð ×ÑØØØØØØØó
ˆð ×)Ñ)¨!Ó,ˆàˆr=   c	           
     óþ  — |rL|j                   j                  �6|j                   j                  j                  rt        j                  dd«       |j
                  r| j                  ||||||||«      S | j                  |||| j                  «      \  }	}
}	}	|
sy t        |j                   t        «      sy | j                  j                  | j                     j                  j                  st!        j"                  d| z  «      ‚t%        |«      dk(  r+t'        j(                  |j*                  | j                  «      sMy t'        j(                  |d   | j                  «      s)| j                  j-                  |d   j.                  «      sy | j1                  ||||d   ||«      }|€y |j2                  �J ‚|| j4                     }| j4                  j6                  }|j9                  |j:                  d«      }|€/| j=                  ||«      }|j?                  |j:                  d|«       |r|D �cg c]  }|j@                  |   ‘Œ }}| jB                  r| jE                  |||||«       y | jG                  |||||«       y c c}w )Nz°The subqueryload loader option is not compatible with DML statements such as INSERT, UPDATE.  Only SELECT may be used.This warning will become an exception in a future release.ú2.0úJ'%s' does not support object population - eager loading cannot be applied.r   rÐ  rn  )$ry   Ú	statementÚis_dmlr   Úwarn_deprecatedrÍ   r  rä  rß  ré   r   rt   rS   rR   ÚimplÚsupports_populationrû   rü   r®  r\   Ú_entity_isar
  r  r^   r‡  r÷   rq   r  rQ   r   rv  rÛ   rm   r:   Ú_create_collection_loaderÚ_create_scalar_loader)rs   r…   rz   r{   r|   r^   r†   r}   r‡   Ú_rõ  rg  rI  rn  r€   s                  r;   rˆ   z$_SubqueryLoader.create_row_processorÍ  sp  € ñ Ø×%Ñ%×/Ñ/Ð;Ø×%Ñ%×/Ñ/×6Ò6ä× Ñ ðMð ô	ð × Ò Ø×;Ñ;ØØØØØØØØó	ð 	ð #×7Ñ7Ø�T˜7 D§O¡Oó
Ñˆˆ:�q˜!ñ Øä˜'×/Ñ/Ô1GÔHð à�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ô ˆt‹9˜Š>Ü×'Ñ'¨×(@Ñ(@À$Ç+Á+ÔNØÜ×%Ñ%Ø�‰H�d—k‘kô
à—+‘+—/‘/ $ r¡(§/¡/Ô2ð à×-Ñ-ØØØØ�‰HØØó
ˆð ˆ<Øà�|‰|Ð#Ð#Ð#à�D×(Ñ(Ñ)ˆà×)Ñ)×7Ñ7ˆ
ð
 —h‘h˜w×1Ñ1°=ÓAˆØÐØ×/Ñ/°¸Ó>ˆKØ�H‰H�W×'Ñ'¨¸ÔDáØ6@ÖA°˜'Ÿ/™/¨!Ó,ÐAˆJÐAà�<Š<Ø×*Ñ*Ø˜ ¨j¸*õð ×&Ñ&Ø˜ ¨j¸*õùò Bs   È*I:c                ó6  ‡ ‡‡‡— |j                  |«      Šˆˆ ˆfd„Šˆˆ fd„}|d   j                  ‰ j                  ‰f«       |d   j                  ‰ j                  |f«       |j                  r+|d   j                  ‰ j                  ‰j                  f«       y y )Nc                ó�   •—  ‰j                    ‰|«      d«      }| j                  ‰j                  «      j                  | ||«       y )Nrƒ   )rQ   rú  rR   rû  )rñ   r  r  Ú
collectionrn  rs   Útuple_getters       €€€r;   Úload_collection_from_subqzL_SubqueryLoader._create_collection_loader.<locals>.load_collection_from_subq<  s<   ø€ Ø(˜Ÿ™©°cÓ):¸BÓ?ˆJØ�N‰N˜4Ÿ8™8Ó$×8Ñ8Ø�u˜jõr=   c                ó8   •— ‰j                   |vr ‰| ||«       y y r5   ©rR   )rñ   r  r  r˜  rs   s      €€r;   Ú&load_collection_from_subq_existing_rowzY_SubqueryLoader._create_collection_loader.<locals>.load_collection_from_subq_existing_rowB  s    ø€ Ø�x‰x˜uÑ$Ù)¨%°¸Õ<ð %r=   rÌ   ÚexistingÚeager©Ú_tuple_getterrJ   rR   Úinvoke_all_eagersrÒ  )	rs   r…   r†   rn  rI  r‡   r›  r˜  r—  s	   `  `   @@r;   r‘  z)_SubqueryLoader._create_collection_loader7  s�   û€ ð ×+Ñ+¨JÓ7ˆö	õ	=ð 	�5Ñ× Ñ  $§(¡(Ð,EÐ!FÔGØ�:Ñ×%Ñ%Ø�X‰XÐ=Ð>ô	
ð ×$Ò$Ø�wÑ×&Ñ&¨¯©°+×2DÑ2DÐ'EÕFð %r=   c                ó6  ‡ ‡‡‡— |j                  |«      Šˆˆ ˆfd„Šˆˆ fd„}|d   j                  ‰ j                  ‰f«       |d   j                  ‰ j                  |f«       |j                  r+|d   j                  ‰ j                  ‰j                  f«       y y )Nc                óæ   •—  ‰j                    ‰|«      d«      }t        |«      dkD  rt        j                  d‰z  «       |d   }| j	                  ‰j
                  «      j                  | ||«       y )Nr5   r   úLMultiple rows returned with uselist=False for eagerly-loaded attribute '%s' r   )rQ   r®  r   r¯  rú  rR   rû  )rñ   r  r  r–  Úscalarrn  rs   r—  s        €€€r;   Úload_scalar_from_subqzD_SubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subqS  sk   ø€ Ø(˜Ÿ™©°cÓ):¸GÓDˆJÜ�:‹ Ò"Ü—	‘	ðGØIMñNôð
   ‘]ˆFØ�N‰N˜4Ÿ8™8Ó$×8Ñ8¸ÀÀvÕNr=   c                ó8   •— ‰j                   |vr ‰| ||«       y y r5   rš  )rñ   r  r  r¥  rs   s      €€r;   Ú"load_scalar_from_subq_existing_rowzQ_SubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subq_existing_row^  s    ø€ Ø�x‰x˜uÑ$Ù% e¨U°CÕ8ð %r=   rÌ   rœ  r�  rž  )	rs   r…   r†   rn  rI  r‡   r§  r¥  r—  s	   `  `   @@r;   r’  z%_SubqueryLoader._create_scalar_loaderN  s‘   û€ ð ×+Ñ+¨JÓ7ˆö		Oõ	9ð 	�5Ñ× Ñ  $§(¡(Ð,AÐ!BÔCØ�:Ñ×%Ñ%Ø�X‰XÐ9Ð:ô	
ð ×$Ò$Ø�wÑ×&Ñ&¨¯©°+×2DÑ2DÐ'EÕFð %r=   )r‰   rŠ   r‹   r�   rp   r¥   r  r@  rK  rV  r\  rc  rv  r‡  rˆ   r‘  r’  rŽ   r�   s   @r;   r  r  Ö  s^   ø„ ð  €Iô:ò'ò
/LòbbòH-1ò^4òl òD÷5ñ 5ònFòPhòTGö.Gr=   r  Újoinedc                  ó~   ‡ — e Zd ZdZdZˆ fd„Zd„ Z	 	 	 dd„Zd„ Zd„ Z	d„ Z
d	„ Z	 	 d	 	 	 dd
„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú_JoinedLoaderz[Provide loading behavior for a :class:`.Relationship`
    using joined eager loading.

    rß  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ré  rr   s      €r;   rp   z_JoinedLoader.__init__u  rê  r=   c                óX   — | j                   j                  d«      j                  |«       y rì  rî  rÀ   s     r;   r¥   z"_JoinedLoader.init_class_attributey  rï  r=   c	                ó8  — |j                   j                  sy|r9|j                  �-|j                  j                  rt	        j
                  dd«       n| j                  rd|_        || j                     }|r| j                  |||j                  «      nd}
|
dur| j                  |||||
«      \  }}}n…|j                  |j                  d«      sE| j                  r|j                  dz  | j                  kD  ry|j                  | j                   «      ry| j#                  ||||||||«      \  }}}}d|_        |j'                  |j                  dd«      }|�t)        |«      j*                  }nd}|| j,                     }t/        j0                  || j                   |||||| j                   |¬	«	       t        j2                  j5                  |j6                  «      }|r:|�t9        j:                  d
«      ‚|j6                  D �cg c]  }|€Œ|‘Œ	 c}|_        yyc c}w )z@Add a left outer join to the statement that's being constructed.Nz®The joinedload loader option is not compatible with DML statements such as INSERT, UPDATE.  Only SELECT may be used.This warning will become an exception in a future release.r‰  TFrÒ  r(   rx  )Úwith_polymorphicÚparentmapperÚchained_from_outerjoinz–Detected unaliased columns when generating joined load.  Make sure to use aliased=True or flat=True when using joined loading with with_polymorphic().)rØ   rñ  r‹  rŒ  r   r�  r:   Úmulti_row_eager_loadersrq   Ú_init_user_defined_eager_procr   Ú$_setup_query_on_user_defined_adapterrÜ  rß  rÝ  rÞ  r^   Ú_generate_row_adapterÚeager_adding_joinsrQ   r*   Úwith_polymorphic_mappersr
  r   Ú_setup_entity_queryÚNONE_SETrÜ   Úsecondary_columnsrû   rü   )rs   ry   rz   r{   r|   r}   r~   r¯  r°  r   Úuser_defined_adapterÚclausesÚadd_to_collectionr…  r®  Ú	has_nonesr€   s                    r;   r�   z_JoinedLoader.setup_query~  sK  € ð ×,Ñ,×?Ò?ØáØ×'Ñ'Ð3Ø×'Ñ'×.Ò.ä× Ñ ðMð õ	ð �\Š\Ø48ˆMÔ1à�D×(Ñ(Ñ)ˆñ ð ×.Ñ.Ø˜¨×(@Ñ(@ôð ð 	ð   uÑ,ð ×9Ñ9ØØØØØ$óñ	ØØÙ!ð  —=‘= ×!9Ñ!9¸8ÔDØ—?’?Ø—{‘{ Q‘¨¯©Ò8ØØ×)Ñ)¨$¯+©+Ô6Øð ×*Ñ*ØØØØØØ!ØØ&ó	ñØØØ!Ø&ð 04ˆMÔ,àŸ8™8Ø×$Ñ$Ð&=¸tó
Ðð Ð'Ü&Ø ó ç&Ñ&ñ ð  $Ðà�D—K‘KÑ ˆä×#Ñ#ØØ�K‰KØØØØØ-ØŸ™Ø#9õ
	
ô —M‘M×.Ñ.¨}×/NÑ/NÓOˆ	áØÐ+Ü×0Ñ0ðIóð ð  -×>Ñ>ö3ØÀ!Á-’Aò3�Õ/ð ùò3s   ÈHÈ	Hc                ó,  — d|j                   vry|j                  j                  }|j                  |j                  dd«      }|dur|S |j                   d   }|dd  \  }}|�|t        |t        «      r|j                  j                  |«      }t        j                  t        j                  j                  |j                  ||j                  j                  d¬«      }n£|j                  |j                  d«      ra|j                  |j                  d«      }	t        j                  t        j                  j                   |	|j                  j                  ¬«      }n&|j"                  j                  |j                  d «      }|j%                  |d|«       |S )NÚeager_from_aliasFÚ user_defined_eager_row_processoréþÿÿÿ)Ú
selectabler5  Úlimit_on_entityrx  )r5  )rÞ   r{   rt   rQ   r   ré   r  r	  Úaliasr\   Ú
ORMAdapterÚ_TraceAdaptRoleÚJOINEDLOAD_USER_DEFINED_ALIASr^   r=  rÜ  Ú JOINEDLOAD_PATH_WITH_POLYMORPHICÚ_polymorphic_adaptersrÛ   )
rs   r|   ry   Útarget_attributesr{   r}   rÄ  Úroot_mapperr8   r…  s
             r;   r²  z+_JoinedLoader._init_user_defined_eager_procþ  sx  € ð  W×%7Ñ%7Ñ7àà�|‰|×"Ñ"ˆð —(‘(Ø×$Ñ$Ð&HÈ%ó
ˆð ˜%ÑàˆNð ×"Ñ"Ð#5Ñ6ˆØ   ˜IÑˆ�TàÐÜ˜%¤Ô%ØŸ™×)Ñ)¨%Ó0�Ü×)Ñ)Ü×(Ñ(×FÑFØ—‘Ø Ø ŸK™K×;Ñ;Ø %ô‰Gð �}‰}Ø×(Ñ(Ð*Aôð $(§8¡8Ø!×,Ñ,Ð.Eó$Ð ô #×-Ñ-Ü×,Ñ,×MÑMØ$Ø $§¡× ?Ñ ?ô‘ð (×=Ñ=×AÑAØ—K‘K ó�ð 	�‰ØØ.Øô	
ð ˆr=   c                óî   — |j                  |«      }|r1|r/|j                  |«      }|j                  |j                  d|«       n!|r|}|j                  |j                  d|«       |j                  }|||fS )NrÀ  )Ú_get_entity_clausesÚwraprÛ   r   Úprimary_columns)rs   r…   r
  r{   r}   rº  r¼  s          r;   r³  z2_JoinedLoader._setup_query_on_user_defined_adapter7	  sˆ   € ð
 ×,Ñ,¨WÓ5ˆáÑ+Ø#7×#<Ñ#<¸WÓ#EÐ Ø�H‰HØ×"Ñ"Ø2Ø$õñ
 Ø#*Ð Ø�H‰HØ×"Ñ"Ø2Ø$ôð $×3Ñ3ÐØ# WÐ.?Ð?Ð?r=   c	                ó^  — |j                  |j                  dd «      }	|	r|	}
ngt        | j                  «      }|j                  r|j
                  }nd }t        j                  | j                  |�|j                  d¬«      nd dd¬«      }
t        |
«      }|j                  d| ft        j                  t        j                  j                  || j                  j                  ddd¬«      }|j                  sJ ‚|�0|j                  j                  d| j                   j"                  «      n| j                   j"                  }|sd}|j$                  j'                  | j(                  ||||||||r|j*                  nd	f	«       |j,                  }|j/                  |j                  d
|«       ||||fS )Nrx  T)Úflat)rÄ  rÑ  r  Újoinedloader_ormadapterF)r5  Úadapt_requiredÚallow_label_resolveÚanonymize_labelsÚ	innerjoinrƒ   Úeager_row_processor)rQ   r   r*   r
  r'  rÂ  r\   r'   r^   Ú_anonymous_fromclauseÚ_memorÅ  rÆ  ÚJOINEDLOAD_MEMOIZED_ADAPTERr=  rÞ   rq   rÖ  Úcreate_eager_joinsrJ   Ú_create_eager_joinr»   r¹  rÛ   )rs   ry   r
  r{   r|   r}   r~   r¯  r°  r…  Úto_adaptÚinspÚalt_selectableÚto_adapt_inspr»  rÖ  r¼  s                    r;   r´  z#_JoinedLoader._generate_row_adapterP	  s½  € ð  Ÿ8™8Ø×$Ñ$Ð&=¸tó
Ðñ Ø'‰Hä˜4Ÿ;™;Ó'ˆDØ×$Ò$Ø!%§¡‘à!%�ä×,Ñ,Ø—‘ð &Ð1ð #×8Ñ8¸dÐ8ÔCààØ $ô	ˆHô   Ó)ˆà×%Ñ%Ø&¨Ð-Ü×ÑÜ×$Ñ$×@Ñ@ØØŸ™×7Ñ7ØØ %Ø!ð &ó 	
ˆð ×'Ò'Ð'Ð'ð Ð"ð ×Ñ×"Ñ" ;°×0DÑ0D×0NÑ0NÔOà×%Ñ%×/Ñ/ð 	ñ ð &*Ð"à×(Ñ(×/Ñ/à×'Ñ'ØØØØØØØ&Ù+2�×'Ò'¸ð
ô	
ð *×;Ñ;ÐØ�‰�×)Ñ)Ð+@À'ÔJà˜Ð!2Ð4JÐJÐJr=   c
           	     ó’  ‡ — |€|j                   }
n|}
|j                  }d }||j                  vrv|st|j                  rht	        j
                  |j                  |j                  «      }t        |«      dkD  rt        j                  d«      ‚|r|j                  |d      }|d   |}}|€||j                  }}|j                  j                  |«      }|rÇt        |dd«      rn|j                  j                  |
j                  ‰ j                  «      r|
n‰ j                  «      }t        |j                   ‰ j"                  ‰ j$                  «      }nXt        t'        j(                  ‰ j                  |j                  d¬«      ‰ j"                  ‰ j$                  «      }n‰ j$                  }|j*                  sJ ‚| xs" | xs |dk(  xs |j,                  j.                  }|	}|j0                  j3                  d	‰ j                   fd
«      }|r|t5        ˆ fd„|D «       «      z  }|rwt'        j6                  ||j                  || xs6 |j,                  j.                  xs |xr t9        |t:        j<                  «      ‰ j                  |‰ j                      |¬«      }n‰ j?                  ||d   ||||«      }||j                  |<   |j                  |_         |s�t	        jB                  ‰ j$                  jD                  «      D ]U  }|
jF                  jH                  jK                  |«      sŒ)|r|jL                  |   }|jO                  ||jP                  «       ŒW ‰ j$                  jR                  r_|xjT                  t5        |jV                  jY                  t[        j\                  ‰ j$                  jR                  «      «      «      z  c_*        y y )Nr   z€Can't identify which query entity in which to joined eager load from.   Please use an exact match when specifying the join path.r   r'  FTr  ÚunnestedÚadditional_entity_criteriarƒ   c              3  ól   •K  — | ]+  }|j                   r|j                  ‰j                  «      –— Œ- y ­wr5   )Úpropagate_to_loadersÚ_resolve_where_criteriar^   )r´   Úaers   s     €r;   r¶   z3_JoinedLoader._create_eager_join.<locals>.<genexpr>
  s1   øè ø€ ò )àØ×*Ò*ð ×*Ñ*¨4¯;©;×7ñ)ùs   ƒ14©ÚisouterÚ
_left_memoÚ_right_memor»   rÁ  )/r^   Ú_should_nest_selectableÚeager_joinsÚfrom_clausesrU  Ú#find_left_clause_that_matches_givenrÂ  r®  rû   rü   Ú
setdefaultr  Úaliased_inspÚ_entity_for_mapperr  rt   r
  rR   rq   r\   r'   r'  r
  Úrepresents_outer_joinÚglobal_attributesrQ   ra  Ú_ORMJoinré   r,   ÚJoinÚ_splice_nested_inner_joinÚstop_onÚ_find_columnsÚprimaryjoinÚpersist_selectabler€   Úcontains_columnrm   rx   rÏ  r8  r`  Ú_target_adapterÚcopy_and_processr   r9  )rs   ry   rz   r{   r}   r¯  r»  rÖ  r°  rs  ró   Úshould_nest_selectableÚquery_entity_keyÚindexesÚclauseÚdefault_towrapÚtowrapÚefmÚonclauseÚattach_on_outsideÚextra_join_criteriarã  Ú	eagerjoinr«   s   `                       r;   rÜ  z _JoinedLoader._create_eager_joinŸ	  s½  ø€ ð ÐØ&×-Ñ-‰Kà&ˆKð
 "/×!FÑ!FÐàÐð  × 9Ñ 9Ñ9Ù*Ø×*Ò*ä×BÑBØ×*Ñ*¨L×,CÑ,CóˆGô �7‹|˜aÒô ×0Ñ0ð0óð ñ Ø&×3Ñ3°G¸A±JÑ?�ð
 4;¸1±:¸v .Ð àÐ#àØ×'Ñ'ð -Ðð
 ×*Ñ*×5Ñ5Ø˜nó
ˆñ Ü�wÐ 2°EÔ:ð
 ×*Ñ*×=Ñ=à"—‘ t§{¡{Ô3ñ  àŸ™ó�ô # 3§:¡:¨t¯x©x¸×9MÑ9MÓN‘ä"Ü×)Ñ)ØŸ™ W×%7Ñ%7Èôð —H‘HØ×(Ñ(ó‘ð ×+Ñ+ˆHà×'Ò'Ð'Ð'ð 'Ð&ò >Øˆ}ò>à˜JÑ&ò>ð ×'Ñ'×=Ñ=ð	 	ð -ÐØ%2×%DÑ%D×%HÑ%HØ)¨4¯;©;Ð7¸ó&
Ð"ñ &Ø¤5ó )à4ô)ó $ñ Ðñ ä ×)Ñ)ØØ×$Ñ$ØØ%˜ò MØ×+Ñ+×AÑAòMà*ÒK¬z¸&Ä#Ç(Á(Ó/KØŸ;™;Ø  §¡Ñ-Ø 3ô
‰Ið ×6Ñ6Ø�d˜2‘h ¨°Ð;NóˆIð 7@ˆ×!Ñ!Ð"2Ñ3ð )×3Ñ3ˆ	Ôáô  ×-Ñ-Ø×$Ñ$×0Ñ0óò �ð ×1Ñ1×3Ñ3×CÑCÀCÕHÙØ%Ÿo™o¨cÑ2˜Ø!×?Ñ?Ø˜]×:Ñ:õðð ×Ñ×(Ò(Ø×(Ò(¬EØ×*Ñ*×;Ñ;Ü—L‘L ×!5Ñ!5×!>Ñ!>Ó?óó-ñ Ö(ð )r=   c	           
     ó¤  — ||d   u sJ ‚|du rt        |t        j                  «      sJ ‚t        |t        j                  j
                  «      r!| j                  |||j                  ||||«      S t        |t        j                  «      �rQ|j                  }	| j                  |||j                  ||||	�|	d   j                  nd ¬«      }
|
�|j                  s|
j                  s|j                  |
«      }nBt        j                  |j                  |
|j                  |j                  |j                  ¬«      }|
j                   |_        |S | j                  |||j                  ||||j                  |	¬«      }
|
�Ut        j                  |
|j                  |j                  |j                  |j                  ¬«      }|
j                   |_        |S |du r	 J d«       ‚y |j#                  |«      sy |r-t%        |«      d	kD  r|d
   |u sJ ‚|dd |j&                  dd k7  ry t        j                  ||j(                  |d|||d   j                     |¬«      S )NrÁ  FrÐ  )Úentity_inside_join_structure)ré  rê  )r  Údetected_existing_path)ré  rë  z9assertion failed attempting to produce joined eager loadsr(   éýÿÿÿr   rè  )ré   r\   rõ  r,   rÂ  ÚFromGroupingr÷  Úelementrë  Úrightr^   ré  Ú_splice_into_centerÚleftr  rê  rý  r  r®  r{   rñ  )rs   r{   Úentity_we_want_to_splice_ontoÚjoin_objr»  r  rs  r  r  Újoin_right_pathÚtarget_joinr	  s               r;   r÷  z'_JoinedLoader._splice_nested_inner_join;
  s—  € ð* -°°R±Ñ8Ð8Ð8à'¨5Ñ0Ü˜h¬×(9Ñ(9Ô:Ð:Ð:ä�h¤§¡× ;Ñ ;Ô<à×1Ñ1ØØ-Ø× Ñ ØØØØ,óð ô ˜¤(×"3Ñ"3Õ4ð '×2Ñ2ˆOð ×8Ñ8ØØ-Ø—‘ØØØð 'Ð2ð $ BÑ'×.Ò.àð 9ó ˆKð Ð&ð  ×'Ò'°×0CÒ0CØ (× <Ñ <¸[Ó I‘Iä (× 1Ñ 1Ø Ÿ™Ø#Ø ×)Ñ)Ø (× 0Ñ 0Ø#+×#6Ñ#6ô!�Ið -8×,GÑ,G�	Ô)Ø Ð ð #×<Ñ<ØØ1Ø—M‘MØØØ"Ø19×1DÑ1DØ+:ð =ó 	�ð Ð*Ü (× 1Ñ 1Ø#Ø Ÿ™Ø ×)Ñ)Ø (× 0Ñ 0Ø$,×$8Ñ$8ô!�Ið 1<×0KÑ0K�IÔ-Ø$Ð$ð ,¨uÑ4àðOàNóOØàð -×0Ñ0Ð1MÔNØñ "¤cÐ*@Ó&AÀAÒ&Eð
 *¨"Ñ-Ð1MÑMÐMÐMðH & a¨Ð+¨t¯y©y¸¸2¨Ò>Øä× Ñ ØØ× Ñ ØØØ3Ø˜T "™XŸ_™_Ñ-Ø*ô
ð 	
r=   c                ój  — |j                   }|r| j                  |||j                  «      nd}|durE|}|j                  r|r|j	                  |j                  «      }n8|j                  r,|j                  }n|j                  |j                  d«      }|€y| j                  j                  ||«      r|S y)NFr×  )ry   r²  r   Úcompound_eager_adapterrÎ  rQ   r^   Ú_result_has_identity_key)	rs   r…   r†   r}   r{   r|   ry   rº  Ú	decorators	            r;   Ú_create_eager_adapterz#_JoinedLoader._create_eager_adapterè
  sÆ   € Ø×-Ñ-ˆñ ð ×.Ñ.Ø˜¨×(:Ñ(:ôð ð 	ð   uÑ,Ø,ˆIð ×3Ò3¹	Ø%ŸN™NØ!×8Ñ8ó‘	ð ×5Ò5Ø)×@Ñ@‘	àŸ™Ø×(Ñ(Ð*?óˆIð Ð Øà�;‰;×/Ñ/°¸	ÔBØÐð r=   c	           
     ó¢  — |j                   j                  j                  sy | j                  j                  | j
                     j                  j                  st        j                  d| z  «      ‚| j                  rd|_        || j                     }	| j                  ||||	|«      }
|
durs| j
                  }t        j                  || j                   |||	| j"                     |
«      }| j                  s| j%                  ||||«       y | j'                  ||||«       y | j                  j)                  d«      j+                  ||||||||«       y )NrŠ  TFrí  )ry   rØ   rñ  rt   rS   rR   rŽ  r�  rû   rü   r:   Úloaders_require_uniquingrq   r  r   Ú_instance_processorr^   r
  r’  r‘  rÐ   rˆ   )rs   r…   rz   r{   r|   r^   r†   r}   r‡   Úour_pathÚeager_adapterrR   Ú	_instances                r;   rˆ   z"_JoinedLoader.create_row_processor  sN  € ð ×$Ñ$×4Ñ4×GÒGØà�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ð
 �<Š<Ø/3ˆGÔ,à˜×,Ñ,Ñ-ˆà×2Ñ2Ø�V˜W h°ó
ˆð  Ñ%Ø—(‘(ˆCä×3Ñ3ØØ—‘ØØØ˜Ÿ™Ñ%ØóˆIð —<’<Ø×*Ñ*¨7°C¸ÀJÕOà×.Ñ.Ø˜S )¨Zõð × Ñ ×.Ñ.Ø%óç"Ñ"ØØØØØØØØõ	r=   c                ó
  ‡‡‡— ˆˆˆfd„}ˆˆˆfd„}ˆfd„}|d   j                  | j                  |f«       |d   j                  | j                  |f«       ‰j                  r!|d   j                  | j                  |f«       y y )Nc                óº   •— t        j                  | |‰«      }t        j                  |d«      }|‰j                   | ‰f<    ‰|«      }|�|j	                  |«       y y ©NÚappend_without_event©r   r  r   ÚUniqueAppenderrJ   )	rñ   r  r  r–  Úresult_listÚinstr!  r…   rR   s	         €€€r;   Ú#load_collection_from_joined_new_rowzT_JoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_new_rowK  sg   ø€ ô $×9Ñ9¸%ÀÈÓLˆJÜ×-Ñ-ØÐ2óˆKð 0;ˆG×Ñ  s˜|Ñ,Ù˜S“>ˆDØÐØ×"Ñ" 4Õ(ð  r=   c                óþ   •— | ‰f‰j                   v r‰j                   | ‰f   }n>t        j                  | |‰«      }t        j                  |d«      }|‰j                   | ‰f<    ‰|«      }|�|j	                  |«       y y r$  r&  )	rñ   r  r  r(  r–  r)  r!  r…   rR   s	         €€€r;   Ú(load_collection_from_joined_existing_rowzY_JoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_existing_rowX  s’   ø€ Ø�sˆ|˜w×1Ñ1Ñ1Ø%×0Ñ0°%¸°Ñ>‘ô (×=Ñ=Ø˜5 #ó�
ô #×1Ñ1ØÐ 6ó�ð 4?�×"Ñ" E¨3 <Ñ0Ù˜S“>ˆDØÐØ×"Ñ" 4Õ(ð  r=   c                ó   •—  ‰|«       y r5   rƒ   ©rñ   r  r  r!  s      €r;   Ú load_collection_from_joined_execzQ_JoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_execk  ó
   ø€ Ù�c�Nr=   rÌ   rœ  r�  ©rJ   rR   r   )rs   r…   rR   r!  r‡   r*  r,  r/  s    ```    r;   r‘  z'_JoinedLoader._create_collection_loaderJ  s†   ú€ ö	)ö	)ô&	ð 	�5Ñ× Ñ Ø�X‰XÐ:Ð;ô	
ð 	�:Ñ×%Ñ%Ø�X‰XÐ?Ð@ô	
ð ×$Ò$Ø�wÑ×&Ñ&Ø—‘Ð;Ð<õð %r=   c                ó  ‡ ‡‡— ˆˆfd„}ˆˆˆ fd„}ˆfd„}|d   j                  ‰ j                  |f«       |d   j                  ‰ j                  |f«       |j                  r!|d   j                  ‰ j                  |f«       y y )Nc                ó   •—  ‰|«      |‰<   y r5   rƒ   )rñ   r  r  r!  rR   s      €€r;   Úload_scalar_from_joined_new_rowzL_JoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_new_rowz  s   ø€ ñ # 3›ˆE�#ŠJr=   c                ój   •—  ‰|«      }‰|v r!||‰   urt        j                  d‰z  «       y y ||‰<   y )Nr£  )r   r¯  )rñ   r  r  rœ  r!  rR   rs   s       €€€r;   Ú$load_scalar_from_joined_existing_rowzQ_JoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_existing_row  sM   ø€ ñ ! “~ˆHð �e‰|Ø 5¨¡:Ñ-Ü—I‘IðKàñõð .ð &��c’
r=   c                ó   •—  ‰|«       y r5   rƒ   r.  s      €r;   Úload_scalar_from_joined_execzI_JoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_exec’  r0  r=   rÌ   rœ  r�  r1  )rs   r…   rR   r!  r‡   r4  r6  r8  s   ` ``    r;   r’  z#_JoinedLoader._create_scalar_loadery  s�   ú€ õ	(ö
	&ô&	ð 	�5Ñ× Ñ  $§(¡(Ð,KÐ!LÔMØ�:Ñ×%Ñ%Ø�X‰XÐ;Ð<ô	
ð ×$Ò$Ø�wÑ×&Ñ&Ø—‘Ð7Ð8õð %r=   )NNF)FN)r  z#Union[Mapper, None, Literal[False]]r  z$Optional[path_registry.PathRegistry])r‰   rŠ   r‹   rŒ   r�   rp   r¥   r�   r²  r³  r´  rÜ  r÷  r  rˆ   r‘  r’  rŽ   r�   s   @r;   rª  rª  j  sƒ   ø„ ñð
 €Iô:ò'ð ØØ$ó~ò@7òr@ò2MKò^ZðL ØGKðk
ð'
ðk
ð !Eók
òZ"òH<ò|-ö^#r=   rª  Úselectinc                  ó’   ‡ — e Zd ZdZ ej
                  dg d¢«      ZdZedd„«       Z	ˆ fd„Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú_SelectInLoader)rß  Ú	omit_joinÚ_parent_aliasÚ_query_infoÚ_fallback_query_infoÚ	queryinfo)Úload_only_childÚload_with_joinÚin_exprÚpk_colsÚzero_idxÚn_pkÚchild_lookup_colsiô  c                óê   — |�t        |d«      €| j                  S |j                  j                  dd «      }|€| j                  S t	        |t
        «      r|dk  rt        j                  d|› d�«      ‚|S )NrÞ   Ú	chunksizer   z'chunksize=zF' is not an appropriate input, please use a positive non-zero integer.)r•   Ú
_chunksizerÞ   rQ   ré   Úintrû   ÚArgumentError)Úclsr|   Ú
user_inputs      r;   Ú_set_chunksizez_SelectInLoader._set_chunksize¹  s�   € àˆ?œg g¨|Ó<ÐDØ—>‘>Ð!à×'Ñ'×+Ñ+¨K¸Ó>ˆ
ØÐØ—>‘>Ð!Ü˜J¬Ô,°
¸Q²Ü×&Ñ&Ø˜j˜\ð *:ð ;óð ð Ðr=   c                óœ  •— t         ‰| �  ||«       | j                  j                  | _        | j                  j                  t
        j                  u }| j                  j                  t
        j                  u }| j                  j                  �| j                  j                  | _        n¾| j                  j                  d«      }|r|j                  | _        n�|r>| j                  j                  s(| j                  j                  }|j                  | _        nO| j                  j                  d   j!                  |j"                  dd| j                  j$                  ¬«      | _        | j                  rC|r+| j'                  «       | _        | j+                  «       | _        y | j/                  «       | _        y | j+                  «       | _        y )Nrí  r   TFr2  )ro   rp   rq   rß  rW   r   rC  Ú
MANYTOMANYr<  rÐ   r&  r×  r6  Ú&secondary_can_be_used_for_related_joinrt   r<  r³   r#  r=  Ú_init_for_omit_join_m2or>  Ú_init_for_joinr?  Ú_init_for_omit_join)rs   rt   ru   Úis_m2oÚis_m2mrÿ  Ú	join_condrv   s          €r;   rp   z_SelectInLoader.__init__È  st  ø€ Ü‰Ñ˜ Ô.Ø×.Ñ.×9Ñ9ˆŒØ×%Ñ%×/Ñ/´:×3GÑ3GÐGˆØ×%Ñ%×/Ñ/´:×3HÑ3HÐHˆà×Ñ×)Ñ)Ð5Ø!×1Ñ1×;Ñ;ˆD�Nà×-Ñ-×;Ñ;Ø%óˆJñ Ø!+×!3Ñ!3�•Ù × 4Ñ 4× IÒ IØ ×0Ñ0×@Ñ@�	à×DÑDð •ð "&§¡×!8Ñ!8¸Ñ!;×!CÑ!CØ×-Ñ-Ø $Ø!&Ø $§¡× ?Ñ ?ð	 "Dó "�”ð �>Š>ÙØ#'×#?Ñ#?Ó#A�Ô Ø,0×,?Ñ,?Ó,A�Õ)à#'×#;Ñ#;Ó#=�Õ à#×2Ñ2Ó4ˆDÕr=   c           
     óš  ‡ ‡— t        ‰ j                  j                  j                  «      Š‰j	                  ˆˆ fd„t        ‰«      D «       «       ‰ j                  j                  D �cg c]  }|‰v sŒ‰|   ‘Œ c}x}}t        |«      dkD  rt        j                  |Ž }d}n|d   }d}‰ j                  dd|||t        |«      d «      S c c}w )Nc              3  ó‚   •K  — | ]6  }‰j                   j                  j                  |d «      D ]  }|‰|   f–— Œ Œ8 y­w)rƒ   N)rt   r=  rQ   )r´   rö   ÚequivÚpk_to_fkrs   s      €€r;   r¶   z6_SelectInLoader._init_for_omit_join.<locals>.<genexpr>ð  sN   øè ø€ ò 
àØŸ™×8Ñ8×<Ñ<¸QÀÓCò
ð ð �H˜Q‘KÔ ð
Ø ñ
ùs   ƒ<?r   Fr   T)rn  rq   r6  Úlocal_remote_pairsr#  r>  rt   rŸ   r®  r,   Útuple_Ú
query_info)rs   r«   rD  Úfk_colsrC  rE  r\  s   `     @r;   rU  z#_SelectInLoader._init_for_omit_joinì  sË   ù€ ÜØ× Ñ ×0Ñ0×CÑCó
ˆð 	�‰ô 
ä˜(“^ô
ô 	
ð &*§[¡[×%<Ñ%<ö
Ø!ÀÀxÂˆH�S‹Mò
ð 	
ˆ�'ô ˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHà�‰Ø�5˜' 7¨H´c¸'³lÀDó
ð 	
ùò
s   Á(	CÁ2Cc           
     ó:  — | j                   j                  }t        |«      dkD  rt        j                  |Ž }d}n|d   }d}| j
                  j                  d«      }|D �cg c]  }|j                  |   ‘Œ }}| j                  dd|||t        |«      |«      S c c}w )Nr   Fr   Trí  )	r^   rŸ   r®  r,   r^  rq   rÐ   r)  r_  )rs   rD  rC  rE  rÿ  r~  Úlookup_colss          r;   rS  z'_SelectInLoader._init_for_omit_join_m2o  s�   € Ø—+‘+×)Ñ)ˆÜˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHà×)Ñ)×7Ñ7Ð8MÓNˆ
ØAHÖI¸2�z×2Ñ2°2Ó6ÐIˆÐIà�‰Ø�%˜ '¨8´S¸³\À;ó
ð 	
ùò Js   Á Bc           
     óv  — t        | j                  j                  «      | _        t	        | j                  «      }| j                  j
                  D �cg c]  }|j                  |«      ‘Œ }}t        |«      dkD  rt        j                  |Ž }d}n|d   }d}| j                  dd|||t        |«      d «      S c c}w )Nr   Fr   T)r'   rt   rV   r=  r*   rŸ   Ú_adapt_elementr®  r,   r^  r_  )rs   Úpa_inspr«   rD  rC  rE  s         r;   rT  z_SelectInLoader._init_for_join  s°   € Ü)¨$¯+©+×*<Ñ*<Ó=ˆÔÜ˜$×,Ñ,Ó-ˆà37·;±;×3JÑ3Jö
Ø,/ˆG×"Ñ" 3Õ'ð
ˆð 
ô ˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHØ�‰Ø�4˜ '¨8´S¸³\À4ó
ð 	
ùò
s   ÁB6c                óX   — | j                   j                  d«      j                  |«       y rì  rî  rÀ   s     r;   r¥   z$_SelectInLoader.init_class_attribute$  rï  r=   c	                óž  — |j                   r| j                  ||||||||«      S | j                  |||| j                  ¬«      \  }	}
}}|
sy |j                  j
                  j                  sy | j                  j                  | j                     j                  j                  st        j                  d| z  «      ‚t        |«      dk(  r+t        j                   |j"                  | j                  «      sMy t        j                   |d   | j                  «      s)| j                  j%                  |d   j&                  «      sy |	}|| j(                     }|j+                  |j,                  dd «      }|�t/        |«      }n| j0                  }t2        j4                  j7                  ||| j                  | j(                  | j8                  ||||«	       y )Nrç  rŠ  r   rÐ  rx  )rÍ   r  rä  rß  ry   rØ   rñ  rt   rS   rR   rŽ  r�  rû   rü   r®  r\   r�  r
  r  r^   rq   rQ   r   r*   r
  r   rÚ  ró  rô  )rs   r…   rz   r{   r|   r^   r†   r}   r‡   r²  rõ  rv  rÏ  Úselectin_pathrâ  r…  rP  s                    r;   rˆ   z$_SelectInLoader.create_row_processor)  sÂ  € ð × Ò Ø×;Ñ;ØØØØØØØØó	ð 	ð  ×%Ñ%Ø�T˜7¨t¯©ð &ó 
ñ	
ØØØØñ
 Øà×$Ñ$×4Ñ4×GÒGØà�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ô ˆt‹9˜Š>Ü×'Ñ'¨×(@Ñ(@À$Ç+Á+ÔNØÜ×%Ñ%Ø�‰H�d—k‘kô
à—+‘+—/‘/ $ r¡(§/¡/Ô2ð à&ˆà˜4×/Ñ/Ñ0ˆð 'Ÿ?™?Ø×ÑÐ 7¸ó
Ðð Ð'Ü&Ð'7Ó8Ñà#Ÿ{™{Ðä×Ñ×+Ñ+ØØØ�K‰KØ× Ñ Ø×ÑØØØØõ
	
r=   c	           	     óö	  ‡ — |r‰ j                   |vry ‰ j                  }	|	j                  rÁt        j                  t
        «      }
g }‰ j                  }|j                  |	j                  t        j                  ¬«      }|D ]j  \  }}|j                  } |||«      }t        j                  |v r‰ j                  }	 n2d |vr|
|   j                  |||f«       ŒW|j                  |||f«       Œl |	j                  s/|D ��cg c]"  \  }}|j                   d   ||j                  |f‘Œ$ }
}}|	j                   }|	j"                  }|	j$                  s;|j&                  r/|D �cg c]  }|j)                  |«      ‘Œ }}|j)                  |«      }|j+                  «       }t-        j.                  g |¢|‘t0        j2                  d|dœ¬«      }‰ j4                  j6                  �b‰ j8                  du rT|j;                  ‰ j4                  j6                  «      j=                  |‰ j4                  j>                  j@                  «      }n|	j$                  s|j;                  |«      }na|j;                  ‰ jB                  «      j=                  tE        ‰ jB                  ‰ j4                  j                   «      jG                  |«      «      }|jI                  |jK                  tM        jN                  d«      «      «      }|jP                  jR                  }|‰ j4                     }||jT                  u r|jV                  }nP|jV                  }|jT                  jV                  }tY        ||«      D ��cg c]  \  }}|j[                  ||«      ‘Œ }}}|r5|j\                  r)|t_        j`                  ||jc                  |«      «      fz  }|�|je                  «       } |jf                  |Ž }|ji                  d|i«      }|jj                  r|jm                  d¬	«      }‰ j4                  jn                  r}|	j$                  sP‰ j4                  jn                  }|j&                  r|D �cg c]  }|j)                  |«      ‘Œ }} |jn                  |Ž }n!ˆ fd
„} |jq                  | ‰ j4                  «      }‰ js                  |«      }!|	j                  r‰ ju                  
|	||||!«       y ‰ jw                  
|	||||!«       y c c}}w c c}w c c}}w c c}w )Nr{  r   rz  )Úcompile_state_pluginÚplugin_subject)r€  rÎ   r�  TÚprimary_keysr…  )r¾  c                ó�   •— | xj                   t        t        j                  ‰j                  j
                  «      «      z  c_         y r5   r_  rb  s    €r;   rc  z@_SelectInLoader._load_for_path.<locals>._setup_outermost_orderbyE  s3   ø€ Ø#×2Ò2´eÜŸ™ T×%9Ñ%9×%BÑ%BÓCó7ñ Ö2r=   )<rR   r>  rA  rn  ro  r>  rt   Ú_state_ident_getterrG  r   ÚPASSIVE_NO_FETCHrn  r   ræ   r?  rJ   rD  rC  rB  r'  rd  r”  r/   r•  r   r–  rq   r˜  r<  r™  rO  r6  Úsecondaryjoinr=  r  rM  ÚfilterÚin_r,   rG  ry   Úselect_statementÚuser_passed_queryrŸ  ÚzipÚ'_adapt_cached_option_to_uncached_optionr»   r\   rž  r¼  rù  rY  Ú_update_compile_optionsr¾  rv  r8  r£  rO  Ú_load_via_childÚ_load_via_parent)"rs   r…   r{   rü  rý  rP  r|   rÏ  rv  r_  Ú
our_statesÚnone_statesr^   Úget_related_identrñ   r   Ú
state_dictÚrelated_identrD  rC  r«   Ú
entity_sqlr8  r5  r²  r[  Úcached_optionsÚuncached_optionsÚorig_optÚuncached_optr`  Úelemrc  rI  s"   `                                 r;   rô  z_SelectInLoader._load_for_path€  sû  ø€ ñ ˜Ÿ™¨Ñ2Øà×%Ñ%ˆ
à×%Ò%Ü$×0Ñ0´Ó6ˆJØˆKà—[‘[ˆFð !'× :Ñ :Ø×,Ñ,Ü"×3Ñ3ð !;ó !Ðð
 %+ò GÑ ��yØ"ŸZ™Z�
Ù 1°%¸Ó D�ô (×9Ñ9¸]ÑJØ!%×!:Ñ!:�JÙð ˜}Ñ,Ø˜}Ñ-×4Ñ4Ø 
¨IÐ6õð  ×&Ñ&¨¨z¸9Ð'EÕFð'Gð, ×)Ò)ð )/÷á$�E˜9ð —‘˜1‘˜u e§j¡j°)Ò<ðˆJñ ð
 ×$Ñ$ˆØ×$Ñ$ˆà×(Ò(ð  ×0Ò0àDKöØ=@Ð$×3Ñ3°CÕ8ð�ð ð +×9Ñ9¸'ÓB�à%×8Ñ8Ó:ˆ
Ü×%Ñ%Ø/˜7Ð/ JÐ/Ü-×EÑEà(-Ø"2ñô
ˆð × Ñ ×*Ñ*Ð6Ø—‘ $Ñ&ð —‘˜d×2Ñ2×<Ñ<Ó=×BÑBØ˜D×0Ñ0×@Ñ@×NÑNó‰Að ×*Ò*ð
 —‘Ð.Ó/‰Að
 —‘˜d×0Ñ0Ó1×6Ñ6Ü˜×*Ñ*¨D×,@Ñ,@×,DÑ,DÓE×MÑMØ$óóˆAð �H‰H�W—[‘[¤§¡¨~Ó!>Ó?Ó@ˆð ×*Ñ*×;Ñ;ˆ
ð2 ˜d×2Ñ2Ñ3ˆà˜×2Ñ2Ñ2Ø$×2Ñ2‰Kà'×5Ñ5ˆNØ&×8Ñ8×FÑFÐô /2Ø"Ð$4ó/÷	ñ +�H˜lð ×@Ñ@Ø˜\õðˆKñ ñ �w×.Ò.ØÜ×-Ñ-Ø$Ø×4Ñ4°WÓ=óðñ ˆKð Ð&Ø+×?Ñ?ÓAˆNàˆA�I‰I�{Ð#ˆà×%Ñ% ¸Ð&GÓHˆØ×$Ò$Ø×#Ñ#°dÐ#Ó;ˆAà×Ñ×(Ò(Ø×,Ò,Ø!%×!5Ñ!5×!>Ñ!>�Ø#×4Ò4ð %3ö&à ð )×7Ñ7¸Õ=ð&�Nð &ð �A—J‘J Ð/‘ôð
 ×-Ñ-Ø,¨d×.BÑ.Bó�ð ×'Ñ'¨Ó0ˆ	à×%Ò%Ø× Ñ ØØØØØØ!Øõð ×!Ñ!ØØØØØ!ØõùóGùò ùópùò<&s   Ã='S%ÅS+ÍS0ÑS6c                ó  — | j                   }|j                  }	|j                  }
t        |«      }|�r|d| }||d  }|D �cg c]  }|
r|d   n|‘Œ }}|j                  j                  |d|i|¬«      }|j                  �'|j                  j                  r|j                  «       }n|j                  «       }|D �ci c]  }|d |	 ||	   “Œ }}|D ]d  }|j                  |d «      }||   D ]H  \  }}}|s| j                  |v rŒ|j                  | j                  «      j                  |||s|n|g«       ŒJ Œf |r�Œ|D ]C  \  }}}|s| j                  |v rŒ|j                  | j                  «      j                  ||d «       ŒE y c c}w c c}w )Nr   rl  ©rN  rv  )r:   rF  rE  r>  r÷   r«  r…   Úrequires_uniquingrF  Ú_raw_all_tuplesrQ   rR   rú  rû  )rs   rz  r{  r_  r8  r…   rv  rI  r:   rF  rE  Úour_keysÚchunkrR   rl  r†   Úrowsr  rs  Úrelated_objrñ   r  r   s                          r;   rx  z_SelectInLoader._load_via_childd  s³  € ð —,‘,ˆØ�‰ˆØ×&Ñ&ˆô ˜
Ó#ˆÚØ˜Q˜yÐ)ˆEØ 	 
Ð+ˆHØCHÖI¸C¡h˜C šF°CÑ7ÐIˆLÐIØ—_‘_×,Ñ,ØØ&¨Ð5Ø"3ð -ó ˆFð
 �~‰~Ð)¨f¯n©n×.NÒ.NØ—}‘}“‘à×-Ñ-Ó/�Ø59Ö:¨c�C˜˜�J  D¡	Ñ)Ð:ˆDÐ:àò �ð #Ÿh™h s¨DÓ1�Ø/9¸#©ò Ñ+�E˜5 )Ù$¨¯©°UÑ):Ø à—N‘N 4§8¡8Ó,×@Ñ@ØØÙ+2™¸¸õñ	ðó ð@ (3ò 	MÑ#ˆE�5˜)Ù §¡¨UÑ!2Øð �N‰N˜4Ÿ8™8Ó$×8Ñ8¸ÀÀtÕLñ	Mùò; Jùò ;s   ÁFÂ:Fc                ób  — | j                   }|j                  }|j                  }	|rdnd }
|�r}|d| }||d  }|D �cg c]  }|	r|d   d   n|d   ‘Œ }}|j                  j	                  |d|i|¬«      }|j
                  �'|j
                  j                  r|j                  «       }n|j                  «       }t        j                  t        «      }|D ]  }||d |    j                  ||   «       Œ |D ]°  \  }}}}|s| j                  |v rŒ|j                  ||
«      }|sX|rVt        |«      dkD  rt!        j"                  d| z  «       |j%                  | j                  «      j'                  |||d   «       Œ…|j%                  | j                  «      j'                  |||«       Œ² |r�Œ|y y c c}w )Nrƒ   r   rl  r†  r   r£  )r:   rF  rE  r÷   r«  r…   r‡  rF  rˆ  rn  ro  r>  rJ   rR   rQ   r®  r   r¯  rú  rû  )rs   rz  r_  r8  r…   rv  rI  r:   rF  rE  Ú_empty_resultrŠ  rR  rl  r†   r‹  rs  r  rR   rñ   r}  r   r–  s                          r;   ry  z _SelectInLoader._load_via_parent�  sÇ  € ð —,‘,ˆØ�‰ˆØ×&Ñ&ˆÙ%™¨4ˆâØ˜q Ð+ˆEØ# I JÐ/ˆJð AFöØ8<™h��Q‘˜’
¨D°©GÑ3ðˆLð ð —_‘_×,Ñ,ØØ&¨Ð5Ø"3ð -ó ˆFð
 �~‰~Ð)¨f¯n©n×.NÒ.NØ—}‘}“‘à×-Ñ-Ó/�Ü×*Ñ*¬4Ó0ˆDØò 3�Ø�S˜˜$�ZÑ ×'Ñ'¨¨D©	Õ2ð3ð 6;ò Ñ1��U˜J¨	Ù  T§X¡X°Ñ%;Øà!ŸX™X c¨=Ó9�
á¡:Ü˜:“¨Ò*ÜŸ	™	ð.à04ñ5ôð
 —N‘N 4§8¡8Ó,×@Ñ@Ø˜z¨:°a©=õð —N‘N 4§8¡8Ó,×@Ñ@Ø˜z¨:õð'õ+ ùòs   ¼F,)ÚreturnrK  )r‰   rŠ   r‹   r�   rn  Ú
namedtupler_  rJ  ÚclassmethodrO  rp   rU  rS  rT  r¥   rˆ   rô  rx  ry  rŽ   r�   s   @r;   r;  r;  Ÿ  ss   ø„ ð€Ið (�×'Ñ'Øò	
ó€Jð €Jàòó ðô"5òH
ò0
ò 
ò 'ò
U
ònbòH7Mör2r=   r;  c                ó’   ‡‡— ˆfd„Šˆfd„}ˆfd„}t        j                  | d|ddd¬«       t        j                  | d|ddd¬«       y )Nc           	     ó  •— |��|j                   ‰j                   k(  rh|j                  t        j                  |«      «      }|rB||ur>t	        j
                  dt        j                  |«      ›d| j                  ›d‰›d�d¬«      ‚|S )Nz	Instance z+ is already associated with an instance of z	 via its z0 attribute, and is only allowed a single parent.Úbbf1)Úcode)	rR   Ú	hasparentr   Úinstance_staterû   rü   r\   Úinstance_strrV   )rñ   rL  ÚoldvalueÚ	initiatorr–  r8   s        €r;   Ú	_do_checkz+_single_parent_validator.<locals>._do_checkÓ  sz   ø€ ØÐ §¡°$·(±(Ò!:Ø!×+Ñ+¬J×,EÑ,EÀeÓ,LÓMˆIÙ˜X¨UÑ2Ü×0Ò0ô  ×,Ñ,¨UÕ3°U·\³\Â4ðIð  ôð ð ˆr=   c                ó   •—  ‰| |d |«      S r5   rƒ   )rñ   rL  rš  r›  s      €r;   rJ   z(_single_parent_validator.<locals>.appendà  s   ø€ Ù˜  t¨YÓ7Ð7r=   c                ó   •—  ‰| |||«      S r5   rƒ   )rñ   rL  r™  rš  r›  s       €r;   Úset_z&_single_parent_validator.<locals>.set_ã  s   ø€ Ù˜  x°Ó;Ð;r=   rJ   T)ÚrawÚretvalrD   rÛ   )r)   Úlisten)r7   r8   rJ   rž  r›  s    `  @r;   rK   rK   Ò  sE   ù€ ôô8ô<ô 
‡L�LØˆh˜ D°Àdõô 
‡L�L��u˜d¨°TÈ$ÖOr=   )NNNNFNN)VrŒ   Ú
__future__r   rn  Útypingr   r   r   r   r   r	   r
   Ú r   r   rì   r   r   r   r   r   r   r   r   r\   Úbaser   r   r   r   r   r   r   r…   r   r   r   r    r!   r"   r÷   r#   rñ   r$   r�  r%   r&   r'   r)   rû   r*   r+   r,   rU  r-   Úsql.selectabler.   r/   r^   r0   r1   Úsql.elementsr2   r½  rh   ÚColumnPropertyÚstrategy_forrl   Úclass_loggerr‘   r°   rÄ   r   r  r  r  ÚMemoizedSlotsÚ
Identifiedr!  r»  rÌ  ræ  r  rª  r;  rK   rƒ   r=   r;   ú<module>r­     sÆ  ðñ/õ #ã Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý "Ý "Ý 'Ý Ý &Ý Ý Ý )Ý %Ý +Ý !Ý &Ý +Ý #Ý  Ý "Ý  Ý Ý Ý Ý Ý Ý Ý Ý "Ý Ý ;Ý #áÝÝ3Ý,ð Ð ð ØØØØØØó[!ð| ×Ñ×'Ñ'°5À5Ð'ÓIô( .ó (ó Jð(ðV ×ÑØ×Ñ×'Ñ'°4À%Ð'ÓHôX:�Nó X:ó Ió ðX:ðv ×ÑØ×Ñ×'Ñ'¸Ð'Ó>ô`
˜mó `
ó ?ó ð`
ðF ×ÑØ×Ñ×'Ñ'°À$Ð'ÓGØ×Ñ×'Ñ'Ø˜d¨dð (ó ð ×Ñ×'Ñ'°4Ð'Ó8ôm
˜Nó m
ó 9óó Hó ðm
÷`8ñ 8ô0"
 .ô "
ðJ ×ÑØ×#Ñ#×0Ñ0¸DÐ0ÓAô�~ó ó Bó ðð ×ÑØ×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°dÐ0Ó;ô*=Ð+ó *=ó <ó @ó ð*=ðZ ×ÑØ×#Ñ#×0Ñ0°dÐ0Ó;Ø×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°gÐ0Ó>Ø×#Ñ#×0Ñ0°nÐ0ÓEØ×#Ñ#×0Ñ0°nÐ0ÓEôbJØ ×!3Ñ!3°S·^±^óbJó Fó Fó ?ó @ó <ó ðbJ÷J1
ñ 1
ôhIHÐ-ô IHðX ×#Ñ#×0Ñ0°kÐ0ÓBô`�{ó `ó Cð`ðF ×ÑØ×#Ñ#×0Ñ0°jÐ0ÓAôO
G�kó O
Gó Bó ðO
Gðd ×ÑØ×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°eÐ0Ó<ôoÐ/ó oó =ó @ó ðoðd ×ÑØ×#Ñ#×0Ñ0°jÐ0ÓAôn�k 4×#5Ñ#5ó nó Bó ðnóbPr=   