+
    ÏÜ³jd  ã                  óV  € R t ^ RIHt ^ RIt^ RIHtHt ^ RIHt ^ RI	t	^ RI
HtHtHt ^ RIt^ RIHt ^ RIHt ^ RIHu Ht ^ RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t& ^ R	I'H(t(H)t) ^ R
I*H+t+ ^ RI,H-t- ]'       d   ^ RI.H/t/ R R lt0R R lt1R R lt2R t3R t4]4! ]2]1]0](4      3R R llt5R t6]6! ]74      t8]6! ]94      t:];! R R ]<! ]4       4        4       4      t=]=3R lt>];! R ]= 4       4      t?]>! ]P€                  4      tA]>! ]P„                  4      tC]>! ]Pˆ                  4      tE]>! ]PŒ                  4      tG]>! ]P�                  4      tI]>! ]P”                  4      tK]>! ]P˜                  4      tM]>! ]Pœ                  4      tO]>! ]P                   4      tQ]>! ]P¤                  4      tS]>! ]P¨                  4      tU]>! ]P                  4      tV]>! ]P®                  4      tX];! . R1O4      tY];! . R2O4      tZ]C]A,          ]S,          ]U,          ]V,          ]X,          ]G,          ]Z,          ]Y,
          t[]?][,
          ]Y,          t\][]\,          t]R]] 2t^]]'       d   Q ]^4       hR R lt_]! R 4      t`R! R" ltaR# tbR$] R%]%/tcR& td]a! ][4      ]d! ]c4       ! R' R(]PÊ                  4      4       4       tf];! . R3O4      tg];! ]],           4      th]a! ][]g,          ]I];! . R4O4      ,          ,
          4       ! R) R*]f4      4       ti]a! ][]g,          ];! R+.4      ,          4       ! R, R-]f4      4       tj ! R. R4      tkR/]jR0]i/tlR# )5z
:func:`~pandas.eval` parsers.
)ÚannotationsN)ÚpartialÚreduce©Ú	iskeyword)ÚTYPE_CHECKINGÚClassVarÚTypeVar)ÚUndefinedVariableError)Úis_string_dtype)ÚARITH_OPS_SYMSÚBOOL_OPS_SYMSÚCMP_OPS_SYMSÚ	LOCAL_TAGÚMATHOPSÚ
REDUCTIONSÚUNARY_OPS_SYMSÚBinOpÚConstantÚFuncNodeÚOpÚTermÚUnaryOpÚis_term)Úclean_backtick_quoted_toksÚtokenize_string)ÚScope)Úprinting)ÚCallablec               ó    € V ^8„  d   QhRRRR/# ©é   Útokztuple[int, str]Úreturn© )Úformats   "Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/pandas/core/computation/expr.pyÚ__annotate__r'   7   s   € ÷ 5ñ 5˜ð 5¨_ñ 5ó    c                ó$   € V w  rYR8X  d   R3# T3# )a4  
Rewrite the assignment operator for PyTables expressions that use ``=``
as a substitute for ``==``.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values
Ú=ú==r$   ©r"   ÚtoknumÚtokvals   &  r&   Ú_rewrite_assignr/   7   s"   € ð �N€FØ Sœ=�4Ð4Ð4¨fÐ4Ð4r(   c               ó    € V ^8„  d   QhRRRR/# r    r$   )r%   s   "r&   r'   r'   J   s   € ÷ ñ ˜?ð ¨ñ r(   c                ó¤   € V w  rV\         P                  8X  d6   VR8X  d   \         P                  R3# VR8X  d   \         P                  R3# W3# W3# )a>  
Replace ``&`` with ``and`` and ``|`` with ``or`` so that bitwise
precedence is changed to boolean precedence.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values
Ú&ÚandÚ|Úor)ÚtokenizeÚOPÚNAMEr,   s   &  r&   Ú_replace_booleansr9   J   sS   € ð �N€FØ”—‘ÔØ�SŒ=Ü—=‘= %Ð'Ð'Ø�sŒ]Ü—=‘= $Ð&Ð&Øˆ~ÐØˆ>Ðr(   c               ó    € V ^8„  d   QhRRRR/# r    r$   )r%   s   "r&   r'   r'   c   s   € ÷ ñ ˜ð ¨_ñ r(   c                ót   € V w  rV\         P                  8X  d   VR8X  d   \         P                  \        3# W3# )aì  
Replace local variables with a syntactically valid name.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values

Notes
-----
This is somewhat of a hack in that we rewrite a string such as ``'@a'`` as
``'__pd_eval_local_a'`` by telling the tokenizer that ``__pd_eval_local_``
is a ``tokenize.OP`` and to replace the ``'@'`` symbol with it.
Ú@)r6   r7   r   r,   s   &  r&   Ú_replace_localsr=   c   s4   € ð( �N€FØ”—‘Ô ¨3¤Ü�{‰{œIÐ%Ð%Øˆ>Ðr(   c                ó   a a€ V V3R l# )z
Compose 2 callables.
c                 ó    <€ S! S! V / VB 4      # ©Nr$   )ÚargsÚkwargsÚfÚgs   *,€€r&   Ú<lambda>Ú_compose2.<locals>.<lambda>�   s   ø€ ¡1¡Q¨Ð%7°Ñ%7Ô#8r(   r$   )rC   rD   s   ffr&   Ú	_compose2rG   }   s   ù€ õ 9Ð8r(   c                 óP   € \        V 4      ^8”  g   Q R4       h\        \        V 4      # )z
Compose 2 or more callables.
z.At least 2 callables must be passed to compose)Úlenr   rG   )Úfuncss   *r&   Ú_composerK   „   s'   € ô ˆu‹:˜Œ>ÐKÐKÓKˆ>Ü”)˜UÓ#Ð#r(   c               ó    € V ^8„  d   QhRRRR/# )r!   ÚsourceÚstrr#   r$   )r%   s   "r&   r'   r'   Œ   s   € ÷ "ñ "Øð"ð
 	ñ"r(   c                ó†   a€ \        S4      '       g   Q R4       h\        P                  ! V3R l\        V 4       4       4      # )a‚  
Compose a collection of tokenization functions.

Parameters
----------
source : str
    A Python source code string
f : callable
    This takes a tuple of (toknum, tokval) as its argument and returns a
    tuple with the same structure but possibly different elements. Defaults
    to the composition of ``_rewrite_assign``, ``_replace_booleans``, and
    ``_replace_locals``.

Returns
-------
str
    Valid Python source code

Notes
-----
The `f` parameter can be any callable that takes *and* returns input of the
form ``(toknum, tokval)``, where ``toknum`` is one of the constants from
the ``tokenize`` module and ``tokval`` is a string.
zf must be callablec              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir@   r$   )Ú.0ÚxrC   s   & €r&   Ú	<genexpr>Ú_preparse.<locals>.<genexpr>«   s   øé € ð á(ˆAñ 	
ˆ!�ˆÛ(ùs   ƒ)Úcallabler6   Ú
untokenizer   ©rM   rC   s   &fr&   Ú	_preparserX   Œ   s>   ø€ ô< �A�;Š;Ð,Ð,Ó,ˆ;Ü×Òô ä  Ô(óó ð r(   c                ó   a € V 3R l# )zG
Factory for a type checking function of type ``t`` or tuple of types.
c                ó0   <€ \        V P                  S4      # r@   )Ú
isinstanceÚvalue)rR   Úts   &€r&   rE   Ú_is_type.<locals>.<lambda>µ   s   ø€ ”Z §¡¨Ô+r(   r$   )r]   s   fr&   Ú_is_typer_   ±   s   ø€ ô ,Ð+r(   c              #  óš   "  € T FA  p\        V\        4      '       g   K  \        V\        P                  4      '       g   K=  Vx € KC  	  R # 5ir@   )r[   ÚtypeÚ
issubclassÚastÚAST)rQ   Únodes   & r&   rS   rS   ½   s6   é € ð á9ˆÜ�$œ×ô 	ä",¨T´3·7±7×";÷ 	‚DÛ9ùs   ‚AŸAÁ
Ac              #  óB   "  € T F  p\        \        V4      x € K  	  R # 5ir@   )Úgetattrrc   )rQ   Únames   & r&   rS   rS   ¿   s   é € Ð9±¨”œ˜d×#Ð#³ùs   ‚c                ó2   a € V 3R lV 4       p\        V4      # )z=
Filter out AST nodes that are subclasses of ``superclass``.
c              3  ód   <"  € T F%  p\        VS4      '       g   K  VP                  x € K'  	  R # 5ir@   )rb   Ú__name__)rQ   re   Ú
superclasss   & €r&   rS   Ú _filter_nodes.<locals>.<genexpr>È   s    øé € ÐV©I D¼ÀDÈ*×9U”-�$—-–-«Iùs   ƒ0œ0)Ú	frozenset)rl   Ú	all_nodesÚ
node_namess   f& r&   Ú_filter_nodesrq   Ä   s   ø€ ô W©IÓV€JÜ�ZÓ Ð r(   c              #  ó8   "  € T F  qP                   x € K  	  R # 5ir@   )rk   ©rQ   rR   s   & r&   rS   rS   Ì   s   é € Ð;±
¨1ŸJžJ³
ùó   ‚ÚExprz$cannot both support and not support c               ó    € V ^8„  d   QhRRRR/# )r!   Ú	node_namerN   r#   zCallable[..., None]r$   )r%   s   "r&   r'   r'     s   € ÷ ñ  Sð Ð-@ñ r(   c                ó   a € V 3R lpV# )zN
Return a function that raises a NotImplementedError with a passed node name.
c                ó"   <€ \        R S R24      h)Ú'z' nodes are not implemented)ÚNotImplementedError)ÚselfrA   rB   rw   s   &*,€r&   rC   Ú _node_not_implemented.<locals>.f
  s   ø€ Ü! A i [Ð0KÐ"LÓMÐMr(   r$   )rw   rC   s   f r&   Ú_node_not_implementedr~     s   ø€ õ
Nð €Hr(   Ú_Tc               ó    € V ^8„  d   QhRRRR/# )r!   Únodeszset[str]r#   zCallable[[type[_T]], type[_T]]r$   )r%   s   "r&   r'   r'     s   € ÷ ñ �Hð Ð!?ñ r(   c                ó   a € R V 3R llpV# )zs
Decorator to disallow certain nodes from parsing. Raises a
NotImplementedError instead.

Returns
-------
callable
c               ó    € V ^8„  d   QhRRRR/# )r!   Úclsztype[_T]r#   r$   )r%   s   "r&   r'   Údisallow.<locals>.__annotate__   s   € ÷ 	ñ 	˜ð 	 Xñ 	r(   c                ó”   <€ RV n         S F9  p\        V4      pR V 2pV ;P                   V3,          un         \        WV4       K;  	  V # )Úvisit_r$   )Úunsupported_nodesr~   Úsetattr)r„   re   Ú
new_methodrh   r�   s   &   €r&   Ú
disallowedÚdisallow.<locals>.disallowed   sN   ø€ à "ˆÔÛˆDÜ.¨tÓ4ˆJØ˜D˜6�?ˆDà×!Ò! d WÕ,Õ!Ü�C˜zÖ*ñ ð ˆ
r(   r$   )r�   r‹   s   f r&   Údisallowr�     s   ø€ ÷	ð 	ð Ðr(   c                ó   a a€ V V3R lpV# )zc
Return a function to create an op class with its symbol already passed.

Returns
-------
callable
c                ó$   <€ \        SS.VO5/ VB # )zj
Return a partial function with an Op subclass with an operator already passed.

Returns
-------
callable
)r   )r|   re   rA   rB   Úop_classÚ	op_symbols   &&*,€€r&   rC   Ú_op_maker.<locals>.f7  s   ø€ ô �x Ð<¨TÒ<°VÑ<Ð<r(   r$   )r�   r‘   rC   s   ff r&   Ú	_op_makerr“   .  s   ù€ ö=ð €Hr(   ÚbinaryÚunaryc                ó   a € V 3R lpV# )z1
Decorator to add default implementation of ops.
c                óÖ   <€ SP                  4        FS  w  r\        W R 24      p\        W R24      pV F,  pWE,          pVf   K  \        W%4      p\        V RV 2V4       K.  	  KU  	  V # )Ú_opsÚ_op_nodes_mapr‡   )Úitemsrg   r“   r‰   )	r„   Úop_attr_namer�   ÚopsÚops_mapÚopÚop_nodeÚmade_opÚ
op_classess	   &       €r&   rC   Úadd_ops.<locals>.fL  sv   ø€ Ø&0×&6Ñ&6Ö&8Ñ"ˆLÜ˜# ¨tÐ4Ó5ˆCÜ˜c ^°=Ð#AÓBˆGÛ�Ø!�+�ØÔ&Ü'¨Ó5�GÜ˜C 6¨'¨Ð!3°WÖ=ó	 ñ '9ð ˆ
r(   r$   )r¡   rC   s   f r&   Úadd_opsr£   G  s   ø€ õ
	ð €Hr(   c                  óT  € ] tR tRt$ Rt]tR]R&   ]t	R]R&   ]
],           ],           tR0t]! ]! ]]RR7      4      t]tR1t]! ]! ]]RR7      4      t]P.                  ]P0                  ]P2                  ]P4                  ]P0                  ]P0                  ]P4                  ]P4                  /tR]R	&   ]3R
 R lltR tR tR t R t!R2R lt"R t#R t$R3R lt%R t&R t'R R lt(R R lt)R R lt*R R lt+R R  lt,R! R" lt-]-t.R# t/R$ R% lt0R& R' lt1R( t2R) t3R4R* lt4R+ t5R, t6R- t7R. t8R/t9R# )5ÚBaseExprVisitoriZ  z¨
Custom ast walker. Parsers of other engines should subclass this class
if necessary.

Parameters
----------
env : Scope
engine : str
parser : str
preparser : callable
zClassVar[type[Term]]Ú
const_typeÚ	term_typeT©Ústrictztuple[str, ...]rˆ   c               ó   € V ^8„  d   QhRR/# ©r!   r#   ÚNoner$   )r%   s   "r&   r'   ÚBaseExprVisitor.__annotate__‘  s   € ÷ ñ ÀDñ r(   c                	óD   € Wn         W n        W0n        W@n        R V n        R # r@   )ÚenvÚengineÚparserÚ	preparserÚassigner)r|   r¯   r°   r±   r²   s   &&&&&r&   Ú__init__ÚBaseExprVisitor.__init__‘  s   € ØŒØŒØŒØ"ŒØˆŽr(   c                	óâ  € \        V\        4      '       d=   V P                  V4      p \        P                  ! \        P
                  ! V4      4      pR\        V4      P                   2p\        W4      pV! V3/ VB #   \         de   p\        ;QJ d*    R  TP                  4        4       F  '       g   K   RM	  RM! R  TP                  4        4       4      '       d   RTn	        ThRp?ii ; i)c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir@   r   rs   s   & r&   rS   Ú(BaseExprVisitor.visit.<locals>.<genexpr>ž  s   é € Ð;©]¨”y —|�|«]ùrt   TFz4Python keyword not valid identifier in numexpr queryNr‡   )r[   rN   r²   rc   Úfix_missing_locationsÚparseÚSyntaxErrorÚanyÚsplitÚmsgra   rk   rg   )r|   re   rB   ÚcleanÚeÚmethodÚvisitors   &&,    r&   ÚvisitÚBaseExprVisitor.visit˜  s¹   € Ü�dœC× Ò Ø—N‘N 4Ó(ˆEðÜ×0Ò0´·²¸5Ó1AÓB�ð œ$˜t›*×-Ñ-Ð.Ð/ˆÜ˜$Ó'ˆÙ�tÑ&˜vÑ&Ð&øô ô ß“3Ñ;¨U¯[©[¬]Ó;—3—3’3Ñ;¨U¯[©[¬]Ó;×;Ò;ØR�A”EØ�ûðús#   ©*A? Á?C.Â
*C)Â7(C)Ã 	C)Ã)C.c                	ó˜   € \        VP                  4      ^8w  d   \        R4      hVP                  ^ ,          pV P                  ! V3/ VB # )é   z#only a single expression is allowed)rI   Úbodyr»   rÃ   )r|   re   rB   Úexprs   &&, r&   Úvisit_ModuleÚBaseExprVisitor.visit_Module¦  s?   € Üˆt�y‰y‹>˜QÔÜÐCÓDÐDØ�y‰y˜�|ˆØ�zŠz˜$Ñ) &Ñ)Ð)r(   c                	ó<   € V P                   ! VP                  3/ VB # r@   ©rÃ   r\   ©r|   re   rB   s   &&,r&   Ú
visit_ExprÚBaseExprVisitor.visit_Expr¬  s   € Ø�zŠz˜$Ÿ*™*Ñ/¨Ñ/Ð/r(   c                	ó¢  € VP                   p\        V4      p\        V4      '       Ed   \        V4      '       Ed   WPP                  9   dñ   \	        \
        W#34      w  rg\	        \        W#34      w  r‰V'       g   V'       g   V'       g	   V	'       d   V P                  V,          ! 4       pV	'       dB   V P                  P                  VP                  .4      p
V P                  W P                  4      pV'       dB   V P                  P                  VP                  .4      p
V P                  W P                  4      pV P                  V4      pW´W#3# r@   )rž   ra   r   Úrewrite_mapÚmapÚ_is_listÚ_is_strr¯   Úadd_tmpr\   r§   rÃ   )r|   re   ÚleftÚrightÚop_instanceÚop_typeÚ	left_listÚ
right_listÚleft_strÚ	right_strrh   rž   s   &&&&        r&   Ú_rewrite_membership_opÚ&BaseExprVisitor._rewrite_membership_op¯  sì   € à—g‘gˆÜ�{Ó#ˆô �4�=‹=œW UŸ^›^°×;KÑ;KÔ0KÜ$'¬°4°-Ó$@Ñ!ˆIÜ"%¤g°¨}Ó"=ÑˆH÷ ŸJ¯(·iØ"×.Ñ.¨wÖ7Ó9�÷ Ø—x‘x×'Ñ'¨¯©¨Ó6�ØŸ™ t¯X©XÓ6�çØ—x‘x×'Ñ'¨¯©¨Ó5�Ø—~‘~ d¯H©HÓ5�à�Z‰Z˜Ó$ˆØ Ð+Ð+r(   Nc                	ó¸   € Vf   V P                  VP                  RR7      pVf   V P                  VP                  RR7      pV P                  WV4      w  rEr#WEW#3# )NrÖ   )Úsider×   )rÃ   rÖ   r×   rÞ   )r|   re   rÖ   r×   rž   r�   s   &&&&  r&   Ú_maybe_transform_eq_neÚ&BaseExprVisitor._maybe_transform_eq_neÊ  sZ   € ØŠ<Ø—:‘:˜dŸi™i¨f�:Ó5ˆDØŠ=Ø—J‘J˜tŸz™z°�JÓ8ˆEØ$(×$?Ñ$?ÀÈEÓ$RÑ!ˆ�dØ˜TÐ(Ð(r(   c                	ó¼  € \         P                  ! \         P                  4      pVP                  '       dŠ   \	        VR 4      '       dx   VP                  '       gf   VP
                  V8X  dU   V P                  P                  \         P                  ! VP                  4      4      pV P                  W@P                  4      pVP                  '       dŠ   \	        VR 4      '       dx   VP                  '       gf   VP
                  V8X  dU   V P                  P                  \         P                  ! VP                  4      4      pV P                  W@P                  4      pW3# )r\   )
ÚnpÚdtypeÚfloat32Ú	is_scalarÚhasattrÚreturn_typer¯   rÕ   r\   r§   )r|   rÖ   r×   Úf32rh   s   &&&  r&   Ú_maybe_downcast_constantsÚ)BaseExprVisitor._maybe_downcast_constantsÒ  sà   € Ü�hŠh”r—z‘zÓ"ˆà�N�NˆNÜ˜˜g×&Ò&Ø—O—O�OØ×!Ñ! SÔ(ð —8‘8×#Ñ#¤B§J¢J¨t¯z©zÓ$:Ó;ˆDØ—>‘> $¯©Ó1ˆDà�O�OˆOÜ˜˜w×'Ò'Ø—N—N�NØ× Ñ  CÔ'ð —8‘8×#Ñ#¤B§J¢J¨u¯{©{Ó$;Ó<ˆDØ—N‘N 4¯©Ó2ˆEàˆ{Ðr(   c                	ó|   € VP                  V P                  V P                  V P                  V P                  V4      # r@   )Úevaluater¯   r°   r±   r§   )r|   ÚbinopÚeval_in_pythons   &&&r&   Ú_maybe_evalÚBaseExprVisitor._maybe_evalé  s0   € ð �~‰~Ø�H‰H�d—k‘k 4§;¡;°·±Àó
ð 	
r(   c           	     	óÌ  € V! W44      pVP                   '       d4   \        R VP                   RVP                   RVP                   R24      hV P                  R8w  dW   VP                  \
        9   d   \        VRR4      '       g   \        VRR4      '       d   V P                  WpP                  4      # VP                  V9   d   V P                  Wu4      # V P                  R8w  d}   \        VRR4      \        8X  gO   \        \        VRR4      4      '       g3   \        VRR4      \        8X  g   \        \        VRR4      4      '       d   V P                  WuV,           4      # V# )	z unsupported operand type(s) for z: 'z' and 'rz   ÚpytablesÚis_datetimeFrê   N)Úhas_invalid_return_typeÚ	TypeErrorrž   ra   r°   r   rg   rò   Ú
binary_opsÚobjectr   )r|   rž   r�   ÚlhsÚrhsrñ   Úmaybe_eval_in_pythonÚress   &&&&&&& r&   Ú_maybe_evaluate_binopÚ%BaseExprVisitor._maybe_evaluate_binopô  s/  € ñ �‹lˆà×&×&Ð&ÜØ2°3·6±6°(ð ;Ø—H‘H�:˜W S§X¡X J¨að1óð ð
 �;‰;˜*Ô$Ø�V‰V”|Ô#¬°°]ÀE×(JÒ(JÜ�s˜M¨5×1Ò1ð ×#Ñ# C¯©Ó9Ð9à�6‰6�^Ô#à×#Ñ# CÓ8Ð8Ø�[‰[˜JÔ&ä˜˜]¨DÓ1´VÔ;Ü"¤7¨3°¸tÓ#D×EÒEÜ˜3 ¨tÓ4¼Ô>Ü"¤7¨3°¸tÓ#D×EÒEð ×'Ñ'¨Ð>RÕ-RÓSÐSØˆ
r(   c                	ót   € V P                  V4      w  r4rVV P                  WV4      w  rVV P                  W4WV4      # r@   )râ   rì   rÿ   )r|   re   rB   rž   r�   rÖ   r×   s   &&,    r&   Úvisit_BinOpÚBaseExprVisitor.visit_BinOp  s<   € Ø$(×$?Ñ$?ÀÓ$EÑ!ˆ�dØ×4Ñ4°TÓA‰ˆØ×)Ñ)¨"¸ÓDÐDr(   c                	ó~   € V P                  VP                  4      pV P                  VP                  4      pV! V4      # r@   )rÃ   rž   Úoperand)r|   re   rB   rž   r  s   &&,  r&   Úvisit_UnaryOpÚBaseExprVisitor.visit_UnaryOp!  s0   € Ø�Z‰Z˜Ÿ™Ó ˆØ—*‘*˜TŸ\™\Ó*ˆÙ�'‹{Ðr(   c               ó   € V ^8„  d   QhRR/# ©r!   r#   r   r$   )r%   s   "r&   r'   r­   &  s   € ÷ ;ñ ;¨Dñ ;r(   c                	óR   € V P                   ! VP                  V P                  3/ VB # r@   )r§   Úidr¯   rÍ   s   &&,r&   Ú
visit_NameÚBaseExprVisitor.visit_Name&  s    € Ø�~Š~˜dŸg™g t§x¡xÑ:°6Ñ:Ð:r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   *  s   € ÷ 5ñ 5°Dñ 5r(   c                	óN   € V P                  VP                  V P                  4      # r@   ©r¦   r\   r¯   rÍ   s   &&,r&   Úvisit_NameConstantÚ"BaseExprVisitor.visit_NameConstant*  ó   € Ø�‰˜tŸz™z¨4¯8©8Ó4Ð4r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   .  s   € ÷ 5ñ 5¨4ñ 5r(   c                	óN   € V P                  VP                  V P                  4      # r@   r  rÍ   s   &&,r&   Ú	visit_NumÚBaseExprVisitor.visit_Num.  r  r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   1  s   € ÷ 5ñ 5°ñ 5r(   c                	óN   € V P                  VP                  V P                  4      # r@   r  rÍ   s   &&,r&   Úvisit_ConstantÚBaseExprVisitor.visit_Constant1  r  r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   5  s   € ÷ .ñ .¨4ñ .r(   c                	ó‚   € V P                   P                  VP                  4      pV P                  W0P                   4      # r@   )r¯   rÕ   Úsr§   )r|   re   rB   rh   s   &&, r&   Ú	visit_StrÚBaseExprVisitor.visit_Str5  s-   € Ø�x‰x×Ñ §¡Ó'ˆØ�~‰~˜d§H¡HÓ-Ð-r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   9  s   € ÷ .ñ .¨Dñ .r(   c                	óè   € V P                   P                  VP                   Uu. uF#  q0P                  V4      ! V P                   4      NK%  	  up4      pV P	                  W@P                   4      # u upi r@   )r¯   rÕ   ÚeltsrÃ   r§   )r|   re   rB   rÀ   rh   s   &&,  r&   Ú
visit_ListÚBaseExprVisitor.visit_List9  sQ   € Ø�x‰x×ÑÀ$Ç)Â)Ó LÁ)¸Q§¡¨A¤¨t¯x©xÖ!8Á)Ñ LÓMˆØ�~‰~˜d§H¡HÓ-Ð-ùò !Ms   ¤)A/c                ó8   € V P                  VP                  4      # )zdf.index[4]rÌ   rÍ   s   &&,r&   Úvisit_IndexÚBaseExprVisitor.visit_Index?  s   € à�z‰z˜$Ÿ*™*Ó%Ð%r(   c               ó   € V ^8„  d   QhRR/# r	  r$   )r%   s   "r&   r'   r­   C  s   € ÷ 2ñ 2°ñ 2r(   c                	óæ  € ^ RI Hp V P                  VP                  4      pV P                  VP                  4      pV! WPP
                  V P                  V P                  R7      p VP                  V,          pV P
                  P                  V4      p	V P                  W�P
                  R7      #   \         d5    T! Y@P
                  T P                  T P                  R7      pY†,          p Lui ; i)é    )Úeval)Ú
local_dictr°   r±   )r¯   )Úpandasr,  rÃ   r\   Úslicer¯   r°   r±   ÚAttributeErrorrÕ   r§   )
r|   re   rB   Úpd_evalr\   ÚslobjÚresultÚvrû   rh   s
   &&,       r&   Úvisit_SubscriptÚBaseExprVisitor.visit_SubscriptC  s»   € Ý*à—
‘
˜4Ÿ:™:Ó&ˆØ—
‘
˜4Ÿ:™:Ó&ˆÙØŸh™h¨t¯{©{À4Ç;Á;ô
ˆð	à—‘˜FÕ#ˆAð �x‰x×Ñ Ó"ˆØ�~‰~˜d¯©ˆ~Ó1Ð1øô ô 	áØ§(¡(°4·;±;ÀtÇ{Á{ôˆCð •ŠAð	ús   Á'B1 Â1<C0Ã/C0c               ó   € V ^8„  d   QhRR/# )r!   r#   r/  r$   )r%   s   "r&   r'   r­   W  s   € ÷ )ñ )¨Uñ )r(   c                ó  € VP                   pVe   V P                  V4      P                  pVP                  pVe   V P                  V4      P                  pVP                  pVe   V P                  V4      P                  p\        W4V4      # )zdf.index[slice(4,6)])ÚlowerrÃ   r\   ÚupperÚstepr/  )r|   re   rB   r9  r:  r;  s   &&,   r&   Úvisit_SliceÚBaseExprVisitor.visit_SliceW  sx   € à—
‘
ˆØÒØ—J‘J˜uÓ%×+Ñ+ˆEØ—
‘
ˆØÒØ—J‘J˜uÓ%×+Ñ+ˆEØ�y‰yˆØÒØ—:‘:˜dÓ#×)Ñ)ˆDä�U 4Ó(Ð(r(   c                ó@  € \        VP                  4      ^8w  d   \        R4      h\        VP                  ^ ,          \        P
                  4      '       g   \        R4      hV P                  P                  f   \        R4      h V P                  ! VP                  ^ ,          3/ VB p\        VRV4      V n        V P                  f   \        R4      hV P                  ! VP                  3/ VB #   \         d!    TP                  ^ ,          P                  p Lri ; i)zœ
support a single assignment node, like

c = a + b

set the assigner at the top level, must be a Name node which
might or might not exist in the resolvers

z#can only assign a single expressionz5left hand side of an assignment must be a single namez%cannot assign without a target objectrh   z@left hand side of an assignment must be a single resolvable name)rI   Útargetsr»   r[   rc   ÚNamer¯   ÚtargetÚ
ValueErrorrÃ   r
   r  rg   r³   r\   )r|   re   rB   r³   s   &&, r&   Úvisit_AssignÚBaseExprVisitor.visit_Assigne  sê   € ô ˆt�|‰|Ó Ô!ÜÐCÓDÐDÜ˜$Ÿ,™, q�/¬3¯8©8×4Ò4ÜÐUÓVÐVØ�8‰8�?‰?Ò"ÜÐDÓEÐEð	*Ø—z’z $§,¡,¨q¥/Ñ<°VÑ<ˆHô   ¨&°(Ó;ˆŒØ�=‰=Ò ÜØRóð ð �zŠz˜$Ÿ*™*Ñ/¨Ñ/Ð/øô &ô 	*Ø—|‘| A•×)Ñ)ŠHð	*ús   Â$C2 Ã2(DÄDc                	ó^  € VP                   pVP                  pVP                  p\        V\        P
                  4      '       d…   V P                  V4      p\        VR 4      '       d   VP                  pMV! V P                  4      p \        Ws4      pV P                  P                  V4      p	V P                  W�P                  4      # \        R\!        V4      P"                   24      h  \         d8    \        T\        P                  4      '       d   TP                  T8X  d   Tu # h i ; i)r\   zInvalid Attribute context )Úattrr\   Úctxr[   rc   ÚLoadrÃ   ré   r¯   rg   rÕ   r§   r0  r@  r  rB  ra   rk   )
r|   re   rB   rF  r\   rG  Úvisited_valueÚresolvedr4  rh   s
   &&,       r&   Úvisit_AttributeÚBaseExprVisitor.visit_Attributeƒ  sí   € Ø�y‰yˆØ—
‘
ˆà�h‰hˆÜ�cœ3Ÿ8™8×$Ò$à ŸJ™J uÓ-ˆMÜ�} g×.Ò.Ø(×.Ñ.‘á(¨¯©Ó2�ðÜ˜HÓ+�Ø—x‘x×'Ñ'¨Ó*�Ø—~‘~ d¯H©HÓ5Ð5ô Ð5´d¸3³i×6HÑ6HÐ5IÐJÓKÐKøô "ô ä˜e¤S§X¡X×.Ò.°5·8±8¸tÔ3CØ#’OØð	ús   ÂA C* Ã*>D,Ä*D,c                	ó”  € \        VP                  \        P                  4      '       d8   VP                  P                  R 8w  d   V P                  VP                  4      pMQ\        VP                  \        P                  4      '       g   \        R4      h V P                  VP                  4      pVf#   \        RVP                  P                   24      h\        VR4      '       d   VP                  p\        V\        4      '       d[   VP                   Uu. uF  qPP                  V4      NK  	  ppVP                   '       d   \        RVP"                   R24      hV! V!  # VP                   Uu. uF#  qPP                  V4      ! V P$                  4      NK%  	  ppVP                    F‘  p\        V\        P&                  4      '       g$   \        RVP                  P                   R24      hVP(                  '       g   KZ  V P                  VP                  4      ! V P$                  4      W7P(                  &   K“  	  V P$                  P+                  V! V/ VB 4      pV P-                  W€P$                  R7      #   \         d5     \        TP                  P                  4      p ELù  \         d    h i ; ii ; iu upi u upi )	Ú__call__z"Only named functions are supportedzInvalid function call r\   z
Function "z$" does not support keyword argumentsz keyword error in function call 'rz   )rh   r¯   )r[   Úfuncrc   Ú	AttributerF  rK  r@  rø   rÃ   r
   r   r  rB  ré   r\   rA   Úkeywordsrh   r¯   ÚkeywordÚargrÕ   r§   )	r|   re   rá   rB   rþ   rS  Únew_argsÚkeyrh   s	   &&&,     r&   Ú
visit_CallÚBaseExprVisitor.visit_Call›  s   € Ü�d—i‘i¤§¡×/Ò/°D·I±I·N±NÀjÔ4PØ×&Ñ& t§y¡yÓ1‰CÜ˜DŸI™I¤s§x¡x×0Ò0ÜÐ@ÓAÐAðØ—j‘j §¡Ó+�ð Š;äØ(¨¯©¯©¨Ð7óð ô �3˜× Ò Ø—)‘)ˆCä�cœ8×$Ò$Ø37·9²9Ó=±9¨CŸ
™
 3ž±9ˆHÐ=à�}�}ˆ}ÜØ  §¡ 
Ð*NÐOóð ñ ˜‘>Ð!ð >B¿YºYÓG¹Y°cŸ
™
 3œ¨¯©Ö1¹YˆHÐGà—}”}�Ü! #¤s§{¡{×3Ò3ô %Ø:¸4¿9¹9¿<¹<¸.ÈÐJóð ð —7—7’7Ø&*§j¡j°·±Ô&;¸D¿H¹HÓ&E�FŸ7™7“Oñ %ð —8‘8×#Ñ#¡C¨Ð$<°VÑ$<Ó=ˆDØ—>‘> t·±�>Ó:Ð:øôS *ô ðÜ" 4§9¡9§<¡<Ó0“CøÜ!ô àðúð	üò" >ùò Hs*   ÂI> ÄK Å5)KÉ>J=Ê
J,Ê,J9Ê9J=c                	ó   € V# r@   r$   )r|   rž   s   &&r&   Útranslate_InÚBaseExprVisitor.translate_InÎ  s   € Øˆ	r(   c           
     	óH  € VP                   pVP                  p\        V4      ^8X  dS   V P                  V^ ,          4      p\        P
                  ! WQP                  V^ ,          R7      pV P                  V4      # VP                  p. p\        W4RR7       FP  w  rYV P                  \        P                  ! V	.WpP                  V4      .R7      4      p
T	pVP                  V
4       KR  	  V P                  \        P                  ! \        P                  ! 4       VR7      4      # )rÆ   )rž   rÖ   r×   Tr¨   )ÚcomparatorsrÖ   rœ   )rž   Úvalues)rœ   r\  rI   rY  rc   r   rÖ   rÃ   ÚzipÚCompareÚappendÚBoolOpÚAnd)r|   re   rB   rœ   Úcompsrž   rð   rÖ   r]  ÚcompÚnew_nodes   &&,        r&   Úvisit_CompareÚBaseExprVisitor.visit_CompareÑ  sã   € Ø�h‰hˆØ× Ñ ˆô ˆu‹:˜Œ?Ø×"Ñ" 3 q¥6Ó*ˆBÜ—I’I ¯)©)¸5À½8ÔDˆEØ—:‘:˜eÓ$Ð$ð �y‰yˆØˆÜ˜C¨t×4‰HˆBØ—z‘zÜ—’¨¨°T×@QÑ@QÐRTÓ@UÐ?VÔWóˆHð ˆDØ�M‰M˜(Ö#ñ 5ð �z‰zœ#Ÿ*š*¬¯ª«	¸&ÔAÓBÐBr(   c                	ó`   € \        V\        \        34      '       d   V# V P                  V4      # r@   )r[   r   r   rÃ   )r|   Úbops   &&r&   Ú_try_visit_binopÚ BaseExprVisitor._try_visit_binopæ  s&   € Ü�cœB¤˜:×&Ò&ØˆJØ�z‰z˜#‹Ðr(   c                	óB   a a€ VV 3R  lpSP                   p\        W44      # )c                ó¬   <€ SP                  V 4      pSP                  V4      pSP                  SW#4      w  rEr#SP                  VSP                  W#4      # r@   )rj  râ   rÿ   rž   )rR   Úyrû   rü   rž   r�   re   r|   s   &&    €€r&   rÂ   Ú-BaseExprVisitor.visit_BoolOp.<locals>.visitorì  sS   ø€ Ø×'Ñ'¨Ó*ˆCØ×'Ñ'¨Ó*ˆCà%)×%@Ñ%@ÀÀsÓ%PÑ"ˆB˜#Ø×-Ñ-¨b°$·'±'¸3ÓDÐDr(   )r]  r   )r|   re   rB   rÂ   Úoperandss   ff,  r&   Úvisit_BoolOpÚBaseExprVisitor.visit_BoolOpë  s   ù€ ö	Eð —;‘;ˆÜ�gÓ(Ð(r(   )r³   r°   r¯   r±   r²   )ÚGtÚLtÚGtEÚLtEÚEqÚNotEqÚInÚNotInÚBitAndÚBitOrrb  ÚOrÚAddÚSubÚMultÚDivÚPowÚFloorDivÚMod)ÚUAddÚUSubÚInvertÚNot)NN))Úinznot in)r+   z!=Ú<Ú>z<=z>=r@   ):rk   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r¦   Ú__annotations__r   r§   r   r   r   rù   Úbinary_op_nodesÚdictr^  Úbinary_op_nodes_mapr   Ú	unary_opsÚunary_op_nodesÚunary_op_nodes_maprc   rw  ry  rx  rz  rÑ   rX   r´   rÃ   rÉ   rÎ   rÞ   râ   rì   rò   rÿ   r  r  r  r  r  r  r  r$  Úvisit_Tupler'  r5  r<  rC  rK  rV  rY  rf  rj  rq  Ú__static_attributes__r$   r(   r&   r¥   r¥   Z  sD  ‡ ñ
ð (0€JÐ$Ó/Ø&*€IÐ#Ó*à Õ-°Õ>€Jð€Oñ* ™s :¨ÀtÔLÓMÐà€IØ4€NÙ™c )¨^ÀDÔIÓJÐð 	�‰�—‘Ø�	‰	�3—9‘9Ø�‰�—‘Ø�	‰	�3—9‘9ð	€Kð 'Ó&à6?÷ ò'ò*ò0ò,ô6)òò.	
ô&òPEò
õ
;õ5õ5õ5õ.õ.ð €Kò&õ2õ()ò0ò<Lô01;òfòCò*ö
	)r(   r¥   c                  óT   a € ] tR tRt]! ]]! ]]]	4      R7      3R V 3R lllt
RtV ;t# )ÚPandasExprVisitoriû  )rC   c               ó   € V ^8„  d   QhRR/# r«   r$   )r%   s   "r&   r'   ÚPandasExprVisitor.__annotate__   s   € ÷ 
9ñ 
9ð 
ñ
9r(   c                	ó(   <€ \         SV `  WW44       R # r@   ©Úsuperr´   ©r|   r¯   r°   r±   r²   Ú	__class__s   &&&&&€r&   r´   ÚPandasExprVisitor.__init__   s   ø€ ô 	‰Ñ˜ fÖ8r(   r$   )rk   rŒ  r�  rŽ  r   rX   rK   r=   r9   r   r´   r˜  Ú__classcell__©r¡  s   @r&   rš  rš  û  s-   ø† ñ ØÙ�Ð(9Ð;UÓVô
÷
9÷ 
9ð 
9r(   rš  rˆ  c                  ó:   a € ] tR tRtRR l3R V 3R llltRtV ;t# )ÚPythonExprVisitori  c                	ó   € V # r@   r$   rW   s   &&r&   rE   ÚPythonExprVisitor.<lambda>  s   € ÁFr(   c               ó   € V ^8„  d   QhRR/# r«   r$   )r%   s   "r&   r'   ÚPythonExprVisitor.__annotate__  s   € ÷ Cñ Cà	ñCr(   c                	ó*   <€ \         SV `  WW4R 7       R# ))r²   Nrž  r   s   &&&&&€r&   r´   ÚPythonExprVisitor.__init__  s   ø€ ô 	‰Ñ˜ fÐÖBr(   r$   r@   )rk   rŒ  r�  rŽ  r´   r˜  r£  r¤  s   @r&   r¦  r¦    s   ø† ó .K÷C÷ Cð Cr(   r¦  c                  óŽ   € ] tR tRt$ RtR]R&   R]R&   R]R&   RR	 R
 llt]R 4       tR t	R R lt
R R ltR t]R 4       tRtR# )ru   i  zß
Object encapsulating an expression.

Parameters
----------
expr : str
engine : str, optional, default 'numexpr'
parser : str, optional, default 'pandas'
env : Scope, optional, default None
level : int, optional, default 2
r   r¯   rN   r°   r±   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r!   r°   rN   r±   r¯   zScope | NoneÚlevelÚintr#   r¬   r$   )r%   s   "r&   r'   ÚExpr.__annotate__&  s>   € ÷ "ñ "ð ð"ð ð	"ð
 ð"ð ð"ð 
ñ"r(   c                	ó  € Wn         T;'       g    \        V^,           R7      V n        W n        W0n        \
        V,          ! V P                  V P                  V P                  4      V n        V P                  4       V n        R# )rÆ   )r¯  N)	rÈ   r   r¯   r°   r±   ÚPARSERSÚ_visitorrº   Úterms)r|   rÈ   r°   r±   r¯   r¯  s   &&&&&&r&   r´   ÚExpr.__init__&  sX   € ð Œ	Ø×0Ð0œ% e¨a¥iÔ0ˆŒØŒØŒÜ ž¨¯©°$·+±+¸t¿{¹{ÓKˆŒØ—Z‘Z“\ˆŽ
r(   c                	ó0   € \        V P                  R R4      # )r³   N)rg   r´  ©r|   s   &r&   r³   ÚExpr.assigner5  s   € ä�t—}‘} j°$Ó7Ð7r(   c                	ó8   € V P                  V P                  4      # r@   )rµ  r¯   r¸  s   &r&   rN  ÚExpr.__call__9  s   € Ø�z‰z˜$Ÿ(™(Ó#Ð#r(   c               ó   € V ^8„  d   QhRR/# )r!   r#   rN   r$   )r%   s   "r&   r'   r±  <  s   € ÷ 1ñ 1˜#ñ 1r(   c                	óB   € \         P                  ! V P                  4      # r@   )r   Úpprint_thingrµ  r¸  s   &r&   Ú__repr__ÚExpr.__repr__<  s   € Ü×$Ò$ T§Z¡ZÓ0Ð0r(   c               ó   € V ^8„  d   QhRR/# )r!   r#   r°  r$   )r%   s   "r&   r'   r±  ?  s   € ÷ ñ ˜ñ r(   c                	ó,   € \        V P                  4      # r@   )rI   rÈ   r¸  s   &r&   Ú__len__ÚExpr.__len__?  s   € Ü�4—9‘9‹~Ðr(   c                óL   € V P                   P                  V P                  4      # )z
Parse an expression.
)r´  rÃ   rÈ   r¸  s   &r&   rº   Ú
Expr.parseB  s   € ð �}‰}×"Ñ" 4§9¡9Ó-Ð-r(   c                óØ   € \        V P                  4      '       d!   \        V P                  P                  .4      # \        R \        P
                  ! V P                  4       4       4      # )z!
Get the names in an expression.
c              3  ó8   "  € T F  qP                   x € K  	  R # 5ir@   )rh   )rQ   Úterms   & r&   rS   ÚExpr.names.<locals>.<genexpr>O  s   é € ÐGÑ/F tŸžÓ/Fùrt   )r   rµ  rn   rh   ÚcomÚflattenr¸  s   &r&   ÚnamesÚ
Expr.namesH  sG   € ô
 �4—:‘:×ÒÜ˜dŸj™jŸo™oÐ.Ó/Ð/ÜÑG¬s¯{ª{¸4¿:¹:Ô/FÓGÓGÐGr(   )r´  r°   r¯   rÈ   r±   rµ  )Únumexprr.  Nr+  )rk   rŒ  r�  rŽ  r�  r�  r´   Úpropertyr³   rN  r¿  rÃ  rº   rÍ  r˜  r$   r(   r&   ru   ru     s[   ‡ ñ
ð 
ƒJØƒKØƒK÷"ð ñ8ó ð8ò$õ1õò.ð ñHó ôHr(   Úpythonr.  )ÚAssignÚModuleru   )ÚYieldÚGeneratorExpÚIfExpÚDictCompÚSetCompÚReprÚLambdaÚSetrd   ÚIsÚIsNot)ÚDictra  ry  rz  )ra  rP  ry  rz  ÚTuple)mr�  Ú
__future__r   rc   Ú	functoolsr   r   rR  r   r6   Útypingr   r   r	   Únumpyrå   Úpandas.errorsr
   Úpandas.core.dtypes.commonr   Úpandas.core.commonÚcoreÚcommonrË  Úpandas.core.computation.opsr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úpandas.core.computation.parsingr   r   Úpandas.core.computation.scoper   Úpandas.io.formatsr   Úcollections.abcr   r/   r9   r=   rG   rK   rX   r_   ÚlistrÓ   rN   rÔ   rn   ÚdirÚ
_all_nodesrq   Ú_all_node_namesÚmodÚ
_mod_nodesÚstmtÚ_stmt_nodesrÈ   Ú_expr_nodesÚexpr_contextÚ_expr_context_nodesÚboolopÚ_boolop_nodesÚoperatorÚ_operator_nodesÚunaryopÚ_unary_op_nodesÚcmpopÚ_cmp_op_nodesÚcomprehensionÚ_comprehension_nodesÚexcepthandlerÚ_handler_nodesÚ	argumentsÚ_arguments_nodesÚ_keyword_nodesÚaliasÚ_alias_nodesÚ_hacked_nodesÚ_unsupported_expr_nodesÚ_unsupported_nodesÚ_base_supported_nodesÚintersectionÚ_msgr~   r   r�   r“   Ú_op_classesr£   ÚNodeVisitorr¥   Ú_python_not_supportedÚ_numexpr_supported_callsrš  r¦  ru   r³  r$   r(   r&   Ú<module>r     sl  ðñõ #ã 
÷õ Û ÷ñ ó å 0å 5ç  Ð  ÷÷ ÷ ÷ ÷ õ 0å &çÝ(õ5õ&õ2ò49ò$ñ ØÐ*¨OÐ=Wó÷"òJ,ñ �D‹>€Ù
�3‹-€ñ ñ á9±°C´Ô9óó €
ð )3ô !ñ Ñ;±
Ó;Ó;€Ù˜3Ÿ7™7Ó#€
Ù˜CŸH™HÓ%€Ù˜CŸH™HÓ%€Ù# C×$4Ñ$4Ó5Ð Ù˜cŸj™jÓ)€Ù §¡Ó-€Ù §¡Ó,€Ù˜cŸi™iÓ(€Ù$ S×%6Ñ%6Ó7Ð Ù˜s×0Ñ0Ó1€Ù  §¡Ó/Ð Ù˜sŸ{™{Ó+€Ù˜SŸY™YÓ'€ñ Ò6Ó7€ñ $òóÐ ð$ Øõàõð õð õ	ð
 õð õð õð õ	Ð ð )Ð+=Õ=ÀÕNÐ Ø!Ð$9Õ9€Ø	-¨l¨^Ð<€ßÐ ˜Ó Ðõñ ˆTƒ]€õò0ð, ˜ ¨Ð1€òñ& 
Ð
ÓÙˆÓôX)�c—o‘oó X)ó ó ðX)ñv "Ò"CÓDÐ Ù$ Z°'Õ%9Ó:Ð ñ 
ØÐ/Õ/Ø‘yÒ!PÓQÕQõSóô9˜ó 9ó	ð9ñ 
Ð
Ð4Õ
4±yÀ%ÀÓ7IÕ
IÓJôC˜ó Có KðC÷:Hñ :Hðz Ð&¨Ð2CÐ
D‚r(   