ó
    ¬œ‘h¨¡  ã                  ó(  • % S r SSKJr  SSKrSSKJrJrJrJrJ	r	J
r
Jr  SSKrSSKrSSKJr  SSKJr  SSKJrJrJrJrJrJrJr  SSKJr  SS	KJr  SS
K J!r!  SSK"J#r#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*J+r+  SSK,J-r-  SSK.J/r/J0r0J1r1J2r2  SSK3J4r4J5r5  SSK6J7r7J8r8J9r9  SSK:J;r;  SSK<J=r=  SSK>J?r?  SSK@JArAJBrB  \(       a  SSKCJDrDJErE  SSKJFrFJGrGJHrHJIrI  SSKJJKrKJLrLJMrM  0 rNS\OS'   SSSSS.rP " S S \;5      rQ " S! S"5      rR " S# S$\\   5      rS " S% S\=5      rTg)&z.
Base and utility classes for pandas objects.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚGenericÚLiteralÚcastÚfinalÚoverload)Úusing_copy_on_write)Úlib)ÚAxisIntÚDtypeObjÚ
IndexLabelÚNDFrameTÚSelfÚShapeÚnpt)ÚPYPY)Úfunction©ÚAbstractMethodError)Úcache_readonlyÚdoc)Úfind_stack_level)Úcan_hold_element)Úis_object_dtypeÚ	is_scalar)ÚExtensionDtype)ÚABCDataFrameÚABCIndexÚABCMultiIndexÚ	ABCSeries)ÚisnaÚremove_na_arraylike)Ú
algorithmsÚnanopsÚops)ÚDirNamesMixin)ÚOpsMixin)ÚExtensionArray)Úensure_wrapped_if_datetimelikeÚextract_array)ÚHashableÚIterator)ÚDropKeepÚNumpySorterÚNumpyValueArrayLikeÚScalarLike_co)Ú	DataFrameÚIndexÚSerieszdict[str, str]Ú_shared_docsÚIndexOpsMixinÚ )ÚklassÚinplaceÚuniqueÚ
duplicatedc                  ód   ^ • \ rS rSr% SrS\S'   \S 5       rS
S jrSSS jjr	SU 4S jjr
S	rU =r$ )ÚPandasObjectée   z'
Baseclass for various pandas objects.
zdict[str, Any]Ú_cachec                ó   • [        U 5      $ )z;
Class constructor (for this class it's just `__class__`).
)Útype©Úselfs    ÚTC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\pandas/core/base.pyÚ_constructorÚPandasObject._constructorm   s   € ô
 �D‹zÐó    c                ó,   • [         R                  U 5      $ )z9
Return a string representation for a particular object.
)ÚobjectÚ__repr__rC   s    rE   rK   ÚPandasObject.__repr__t   s   € ô
 �‰˜tÓ$Ð$rH   c                óœ   • [        U S5      (       d  gUc  U R                  R                  5         gU R                  R                  US5        g)zF
Reset cached properties. If ``key`` is passed, only clears that key.
r@   N)Úhasattrr@   ÚclearÚpop)rD   Úkeys     rE   Ú_reset_cacheÚPandasObject._reset_cache{   s;   € ô �t˜X×&Ñ&ØØ‰;Ø�K‰K×ÑÕà�K‰K�O‰O˜C Õ&rH   c                ó²   >• [        U SS5      nU(       a5  U" SS9n[        [        U5      (       a  U5      $ UR                  5       5      $ [        TU ]  5       $ )z`
Generates the total memory usage for an object that returns
either a value or Series of values
Úmemory_usageNT©Údeep)ÚgetattrÚintr   ÚsumÚsuperÚ
__sizeof__)rD   rU   ÚmemÚ	__class__s      €rE   r\   ÚPandasObject.__sizeof__†   sQ   ø€ ô
 ˜t ^°TÓ:ˆÞÙ DÑ)ˆCÜœi¨Ÿn™n�sÓ<Ð<°#·'±'³)Ó<Ð<ô ‰wÑ!Ó#Ð#rH   © )ÚreturnÚstr©N)rQ   z
str | Nonera   ÚNone©ra   rY   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__ÚpropertyrF   rK   rR   r\   Ú__static_attributes__Ú__classcell__)r^   s   @rE   r>   r>   e   s6   ø‡ ñð
 Óàñó ðô%ö	'÷$õ $rH   r>   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚNoNewAttributesMixiné”   ah  
Mixin which prevents adding new attributes.

Prevents additional attributes via xxx.attribute = "something" after a
call to `self.__freeze()`. Mainly used to prevent the user from using
wrong attributes on an accessor (`Series.cat/.str/.dt`).

If you really want to add a new attribute at a later time, you need to use
`object.__setattr__(self, key, value)`.
c                ó2   • [         R                  U SS5        g)z)
Prevents setting additional attributes.
Ú__frozenTN)rJ   Ú__setattr__rC   s    rE   Ú_freezeÚNoNewAttributesMixin._freeze    s   € ô 	×Ñ˜4 ¨TÕ2rH   c                óÊ   • [        U SS5      (       a;  US:X  d5  U[        U 5      R                  ;   d  [        XS 5      c  [        SU S35      e[        R                  XU5        g )Nrs   Fr@   z"You cannot add any new attribute 'Ú')rX   rB   Ú__dict__ÚAttributeErrorrJ   rt   )rD   rQ   Úvalues      rE   rt   Ú NoNewAttributesMixin.__setattr__§   s^   € ô �4˜ U×+Ñ+Ø�8‹OØ”d˜4“j×)Ñ)Ó)Ü�t $Ó'Ñ3ä Ð#EÀcÀUÈ!Ð!LÓMÐMÜ×Ñ˜4 eÕ,rH   r`   N)ra   rd   )rQ   rb   ra   rd   )rf   rg   rh   ri   rj   ru   rt   rm   r`   rH   rE   rp   rp   ”   s   † ñ	ô3÷-rH   rp   c                  óè   • \ rS rSr% SrS\S'   SrS\S'   S\S	'   S
S/r\" \5      r	\
\S 5       5       r\S 5       r\
\SS j5       5       r\
\S 5       5       rS rSSS jjr\
SS j5       rS r\rSrg)ÚSelectionMixiné¶   z}
mixin implementing the selection & aggregation interface on a group-like
object sub-classes need to define: obj, exclusions
r   ÚobjNzIndexLabel | NoneÚ
_selectionzfrozenset[Hashable]Ú
exclusionsr@   Ú__setstate__c                ó°   • [        U R                  [        [        [        [
        [        R                  45      (       d  U R                  /$ U R                  $ rc   )Ú
isinstancer�   ÚlistÚtupler"   r    ÚnpÚndarrayrC   s    rE   Ú_selection_listÚSelectionMixin._selection_listÂ   sB   € ô Ø�O‰Oœd¤E¬9´hÄÇ
Á
ÐK÷
ñ 
ð —O‘OÐ$Ð$Ø�‰ÐrH   c                ó¤   • U R                   b  [        U R                  [        5      (       a  U R                  $ U R                  U R                      $ rc   )r�   r…   r€   r"   rC   s    rE   Ú_selected_objÚSelectionMixin._selected_objË   s8   € à�?‰?Ñ"¤j°·±¼9×&EÑ&EØ—8‘8ˆOà—8‘8˜DŸO™OÑ,Ð,rH   c                ó.   • U R                   R                  $ rc   )r�   ÚndimrC   s    rE   r�   ÚSelectionMixin.ndimÒ   s   € ð ×!Ñ!×&Ñ&Ð&rH   c                óP  • [        U R                  [        5      (       a  U R                  $ U R                  b%  U R                  R	                  U R
                  5      $ [        U R                  5      S:”  a%  U R                  R                  U R                  SSS9$ U R                  $ )Nr   é   T)ÚaxisÚ
only_slice)	r…   r€   r"   r�   Ú_getitem_nocopyrŠ   Úlenr‚   Ú
_drop_axisrC   s    rE   Ú_obj_with_exclusionsÚ#SelectionMixin._obj_with_exclusions×   s   € ô �d—h‘h¤	×*Ñ*Ø—8‘8ˆOà�?‰?Ñ&Ø—8‘8×+Ñ+¨D×,@Ñ,@ÓAÐAäˆt�‰Ó !Ó#ð
 —8‘8×&Ñ& t§¡¸QÈ4Ð&ÐPÐPà—8‘8ˆOrH   c                óœ  • U R                   b  [        SU R                    S35      e[        U[        [        [
        [        [        R                  45      (       a®  [        U R                  R                  R                  U5      5      [        [        U5      5      :w  aQ  [        [        U5      R                  U R                  R                  5      5      n[        S[!        U5      SS  35      eU R#                  [        U5      SS9$ XR                  ;  a  [        SU 35      eU R                  U   R$                  nU R#                  XS9$ )	Nz
Column(s) z already selectedzColumns not found: r“   éÿÿÿÿé   )r�   zColumn not found: )r�   Ú
IndexErrorr…   r†   r‡   r"   r    rˆ   r‰   r—   r€   ÚcolumnsÚintersectionÚsetÚ
differenceÚKeyErrorrb   Ú_gotitemr�   )rD   rQ   Úbad_keysr�   s       rE   Ú__getitem__ÚSelectionMixin.__getitem__é   s  € Ø�?‰?Ñ&Ü˜z¨$¯/©/Ð):Ð:KÐLÓMÐMä�cœD¤%¬´H¼b¿j¹jÐI×JÑJÜ�4—8‘8×#Ñ#×0Ñ0°Ó5Ó6¼#¼cÀ#»h»-ÓGÜ¤ C£× 3Ñ 3°D·H±H×4DÑ4DÓ EÓF�ÜÐ!4´S¸³]À1ÀRÐ5HÐ4IÐJÓKÐKØ—=‘=¤ c£°�=Ð3Ð3ð Ÿ(™(Ó"ÜÐ!3°C°5Ð9Ó:Ð:Ø—8‘8˜C‘=×%Ñ%ˆDØ—=‘= �=Ð0Ð0rH   c                ó   • [        U 5      e)zÂ
sub-classes to define
return a sliced object

Parameters
----------
key : str / list of selections
ndim : {1, 2}
    requested ndim of result
subset : object, default None
    subset to act on
r   )rD   rQ   r�   Úsubsets       rE   r¤   ÚSelectionMixin._gotitemù   s   € ô " $Ó'Ð'rH   c                ó   • SnUR                   S:X  a?  [        R                  " U5      (       a  X;   d  [        R                  " U5      (       a  UnU$ UR                   S:X  a,  [        R                  " U5      (       a  XR                  :X  a  UnU$ )z?
Infer the `selection` to pass to our constructor in _gotitem.
Nr�   r“   )r�   r   r   Úis_list_likeÚname)rD   rQ   r©   Ú	selections       rE   Ú_infer_selectionÚSelectionMixin._infer_selection  su   € ð ˆ	Ø�;‰;˜!ÓÜ�]Š]˜3×Ñ C£M´c×6FÒ6FÀs×6KÑ6KàˆIð Ðð �[‰[˜AÓ¤#§-¢-°×"4Ñ"4¸ÇÁÓ9KØˆIØÐrH   c                ó   • [        U 5      erc   r   )rD   ÚfuncÚargsÚkwargss       rE   Ú	aggregateÚSelectionMixin.aggregate  s   € Ü! $Ó'Ð'rH   r`   re   rc   )r�   rY   )r©   zSeries | DataFrame)rf   rg   rh   ri   rj   rk   r�   Ú_internal_namesr¡   Ú_internal_names_setr	   rl   rŠ   r   r�   r�   r™   r¦   r¤   r¯   rµ   Úaggrm   r`   rH   rE   r~   r~   ¶   sÄ   ‡ ñð
 
ƒMØ$(€JÐ!Ó(Ø#Ó#Ø Ð0€OÙ˜oÓ.Ðà
Øñó ó ðð ñ-ó ð-ð Øó'ó ó ð'ð Øñó ó ðò 1ö (ð óó ðò(ð ƒCrH   r~   c            	      óà  • \ rS rSr% SrSr\" S/5      rS\S'   \	S;S j5       r
\	S<S j5       r\S=S	 j5       r\	" \S
S9r\	S>S j5       rS?S jr\	S?S j5       r\S 5       r\	S?S j5       r\	S?S j5       r\	S@S j5       r\SS\R.                  4       SAS jj5       r\\	SBS j5       5       r\" SSSS9 SC     SDS jj5       r\" \SSSS9 SC     SDS jj5       rS r\rSES jr\ SBS  j5       r!\SCSFS! jj5       r"\     SG         SHS" jj5       r#S# r$\SISJS$ jj5       r%\	SBS% j5       r&\	SBS& j5       r'\	SBS' j5       r(\SKSLS( jj5       r)\" \*RV                  S)S)S)\,RZ                  " S*5      S+9  SM     SNS, jj5       r+S-\.S.'   \/  SO       SPS/ jj5       r0\/  SO       SQS0 jj5       r0\" \.S.   S1S29  SR       SSS3 jj5       r0S4S5.STS6 jjr1\SUSVS7 jj5       r2S8 r3S9 r4S:r5g)Wr7   i  zK
Common ops mixin to support a unified interface / docs for Series / Index
iè  Útolistzfrozenset[str]Ú_hidden_attrsc                ó   • [        U 5      erc   r   rC   s    rE   ÚdtypeÚIndexOpsMixin.dtype(  ó   € ô " $Ó'Ð'rH   c                ó   • [        U 5      erc   r   rC   s    rE   Ú_valuesÚIndexOpsMixin._values-  rÀ   rH   c                ó2   • [         R                  " X5        U $ )zO
Return the transpose, which is by definition self.

Returns
-------
%(klass)s
)ÚnvÚvalidate_transpose)rD   r³   r´   s      rE   Ú	transposeÚIndexOpsMixin.transpose2  s   € ô 	×Ò˜dÔ+ØˆrH   aÙ  
        Return the transpose, which is by definition self.

        Examples
        --------
        For Series:

        >>> s = pd.Series(['Ant', 'Bear', 'Cow'])
        >>> s
        0     Ant
        1    Bear
        2     Cow
        dtype: object
        >>> s.T
        0     Ant
        1    Bear
        2     Cow
        dtype: object

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx.T
        Index([1, 2, 3], dtype='int64')
        )r   c                ó.   • U R                   R                  $ )zv
Return a tuple of the shape of the underlying data.

Examples
--------
>>> s = pd.Series([1, 2, 3])
>>> s.shape
(3,)
)rÂ   ÚshaperC   s    rE   rÊ   ÚIndexOpsMixin.shape[  s   € ð �|‰|×!Ñ!Ð!rH   c                ó   • [        U 5      erc   r   rC   s    rE   Ú__len__ÚIndexOpsMixin.__len__h  s   € ä! $Ó'Ð'rH   c                ó   • g)a  
Number of dimensions of the underlying data, by definition 1.

Examples
--------
>>> s = pd.Series(['Ant', 'Bear', 'Cow'])
>>> s
0     Ant
1    Bear
2     Cow
dtype: object
>>> s.ndim
1

For Index:

>>> idx = pd.Index([1, 2, 3])
>>> idx
Index([1, 2, 3], dtype='int64')
>>> idx.ndim
1
r“   r`   rC   s    rE   r�   ÚIndexOpsMixin.ndimo  s   € ð0 rH   c                ó^   • [        U 5      S:X  a  [        [        U 5      5      $ [        S5      e)aH  
Return the first element of the underlying data as a Python scalar.

Returns
-------
scalar
    The first element of Series or Index.

Raises
------
ValueError
    If the data is not length = 1.

Examples
--------
>>> s = pd.Series([1])
>>> s.item()
1

For an index:

>>> s = pd.Series([1], index=['a'])
>>> s.index.item()
'a'
r“   z6can only convert an array of size 1 to a Python scalar)r—   ÚnextÚiterÚ
ValueErrorrC   s    rE   ÚitemÚIndexOpsMixin.item‰  s*   € ô6 ˆt‹9˜‹>Üœ˜T›
Ó#Ð#ÜÐQÓRÐRrH   c                ó.   • U R                   R                  $ )a%  
Return the number of bytes in the underlying data.

Examples
--------
For Series:

>>> s = pd.Series(['Ant', 'Bear', 'Cow'])
>>> s
0     Ant
1    Bear
2     Cow
dtype: object
>>> s.nbytes
24

For Index:

>>> idx = pd.Index([1, 2, 3])
>>> idx
Index([1, 2, 3], dtype='int64')
>>> idx.nbytes
24
)rÂ   ÚnbytesrC   s    rE   rØ   ÚIndexOpsMixin.nbytes¨  s   € ð4 �|‰|×"Ñ"Ð"rH   c                ó,   • [        U R                  5      $ )a"  
Return the number of elements in the underlying data.

Examples
--------
For Series:

>>> s = pd.Series(['Ant', 'Bear', 'Cow'])
>>> s
0     Ant
1    Bear
2     Cow
dtype: object
>>> s.size
3

For Index:

>>> idx = pd.Index([1, 2, 3])
>>> idx
Index([1, 2, 3], dtype='int64')
>>> idx.size
3
)r—   rÂ   rC   s    rE   ÚsizeÚIndexOpsMixin.sizeÄ  s   € ô4 �4—<‘<Ó Ð rH   c                ó   • [        U 5      e)aÛ  
The ExtensionArray of the data backing this Series or Index.

Returns
-------
ExtensionArray
    An ExtensionArray of the values stored within. For extension
    types, this is the actual array. For NumPy native types, this
    is a thin (no copy) wrapper around :class:`numpy.ndarray`.

    ``.array`` differs from ``.values``, which may require converting
    the data to a different form.

See Also
--------
Index.to_numpy : Similar method that always returns a NumPy array.
Series.to_numpy : Similar method that always returns a NumPy array.

Notes
-----
This table lays out the different array types for each extension
dtype within pandas.

================== =============================
dtype              array type
================== =============================
category           Categorical
period             PeriodArray
interval           IntervalArray
IntegerNA          IntegerArray
string             StringArray
boolean            BooleanArray
datetime64[ns, tz] DatetimeArray
================== =============================

For any 3rd-party extension types, the array type will be an
ExtensionArray.

For all remaining dtypes ``.array`` will be a
:class:`arrays.NumpyExtensionArray` wrapping the actual ndarray
stored within. If you absolutely need a NumPy array (possibly with
copying / coercing data), then use :meth:`Series.to_numpy` instead.

Examples
--------
For regular NumPy types like int, and float, a NumpyExtensionArray
is returned.

>>> pd.Series([1, 2, 3]).array
<NumpyExtensionArray>
[1, 2, 3]
Length: 3, dtype: int64

For extension types, like Categorical, the actual ExtensionArray
is returned

>>> ser = pd.Series(pd.Categorical(['a', 'b', 'a']))
>>> ser.array
['a', 'b', 'a']
Categories (2, object): ['a', 'b']
r   rC   s    rE   ÚarrayÚIndexOpsMixin.arrayà  s   € ô~ " $Ó'Ð'rH   NFc                óê  • [        U R                  [        5      (       a  U R                  R                  " U4X#S.UD6$ U(       a1  [        [        UR                  5       5      5      n[        SU S35      eU[        R                  L=(       aM    U[        R                  L =(       a/    [        R                  " U R                  [        R                  5      (       + nU R                  nU(       aV  [!        Xs5      (       d  [        R"                  " XqS9nOUR%                  5       nX7[        R&                  " [)        U 5      5      '   [        R"                  " XqS9nU(       a  U(       a  U(       d„  [+        5       (       au  [        R,                  " U R                  SS USS 5      (       aI  [+        5       (       a*  U(       d#  UR/                  5       nSUR0                  l        U$ UR%                  5       nU$ )ac  
A NumPy ndarray representing the values in this Series or Index.

Parameters
----------
dtype : str or numpy.dtype, optional
    The dtype to pass to :meth:`numpy.asarray`.
copy : bool, default False
    Whether to ensure that the returned value is not a view on
    another array. Note that ``copy=False`` does not *ensure* that
    ``to_numpy()`` is no-copy. Rather, ``copy=True`` ensure that
    a copy is made, even if not strictly necessary.
na_value : Any, optional
    The value to use for missing values. The default value depends
    on `dtype` and the type of the array.
**kwargs
    Additional keywords passed through to the ``to_numpy`` method
    of the underlying array (for extension arrays).

Returns
-------
numpy.ndarray

See Also
--------
Series.array : Get the actual data stored within.
Index.array : Get the actual data stored within.
DataFrame.to_numpy : Similar method for DataFrame.

Notes
-----
The returned array will be the same up to equality (values equal
in `self` will be equal in the returned array; likewise for values
that are not equal). When `self` contains an ExtensionArray, the
dtype may be different. For example, for a category-dtype Series,
``to_numpy()`` will return a NumPy array and the categorical dtype
will be lost.

For NumPy dtypes, this will be a reference to the actual data stored
in this Series or Index (assuming ``copy=False``). Modifying the result
in place will modify the data stored in the Series or Index (not that
we recommend doing that).

For extension types, ``to_numpy()`` *may* require copying data and
coercing the result to a NumPy type (possibly object), which may be
expensive. When you need a no-copy reference to the underlying data,
:attr:`Series.array` should be used instead.

This table lays out the different dtypes and default return types of
``to_numpy()`` for various dtypes within pandas.

================== ================================
dtype              array type
================== ================================
category[T]        ndarray[T] (same dtype as input)
period             ndarray[object] (Periods)
interval           ndarray[object] (Intervals)
IntegerNA          ndarray[object]
datetime64[ns]     datetime64[ns]
datetime64[ns, tz] ndarray[object] (Timestamps)
================== ================================

Examples
--------
>>> ser = pd.Series(pd.Categorical(['a', 'b', 'a']))
>>> ser.to_numpy()
array(['a', 'b', 'a'], dtype=object)

Specify the `dtype` to control how datetime-aware data is represented.
Use ``dtype=object`` to return an ndarray of pandas :class:`Timestamp`
objects, each with the correct ``tz``.

>>> ser = pd.Series(pd.date_range('2000', periods=2, tz="CET"))
>>> ser.to_numpy(dtype=object)
array([Timestamp('2000-01-01 00:00:00+0100', tz='CET'),
       Timestamp('2000-01-02 00:00:00+0100', tz='CET')],
      dtype=object)

Or ``dtype='datetime64[ns]'`` to return an ndarray of native
datetime64 values. The values are converted to UTC and the timezone
info is dropped.

>>> ser.to_numpy(dtype="datetime64[ns]")
... # doctest: +ELLIPSIS
array(['1999-12-31T23:00:00.000000000', '2000-01-01T23:00:00...'],
      dtype='datetime64[ns]')
)ÚcopyÚna_valuez/to_numpy() got an unexpected keyword argument 'rx   ©r¾   Nr�   F)r…   r¾   r   rÞ   Úto_numpyrÒ   rÓ   ÚkeysÚ	TypeErrorr   Ú
no_defaultrˆ   ÚnanÚ
issubdtypeÚfloatingrÂ   r   Úasarrayrá   Ú
asanyarrayr#   r   Úshares_memoryÚviewÚflagsÚ	writeable)	rD   r¾   rá   râ   r´   r¥   ÚfillnaÚvaluesÚresults	            rE   rä   ÚIndexOpsMixin.to_numpy!  sl  € ô~ �d—j‘j¤.×1Ñ1Ø—:‘:×&Ò& uÐU°4ÑUÈfÑUÐUÞÜœD §¡£Ó/Ó0ˆHÜØAÀ(ÀÈ1ÐMóð ð
 œCŸN™NÐ*÷ Tà¤§¡Ð'×R¬B¯MªM¸$¿*¹*ÄbÇkÁkÓ,RÔSð 	ð —‘ˆÞÜ# F×5Ñ5ô Ÿš FÑ8‘àŸ™›�à08”2—=’=¤ d£Ó,Ñ-ä—’˜FÑ0ˆæž®Ô2E×2GÑ2GÜ×Ò §¡¨R¨aÐ 0°&¸¸!°*×=Ñ=ä&×(Ñ(¶Ø#Ÿ[™[›]�FØ-2�F—L‘LÔ*ð ˆð $Ÿ[™[›]�FàˆrH   c                ó$   • U R                   (       + $ rc   )rÛ   rC   s    rE   ÚemptyÚIndexOpsMixin.empty§  s   € ð —9‘9Œ}ÐrH   ÚmaxÚminÚlargest)ÚopÚopposer{   c                ó0  • U R                   n[        R                  " U5        [        R                  " X#U5      n[	        U[
        5      (       at  U(       d]  UR                  5       R                  5       (       a:  [        R                  " S[        U 5      R                   S3[        [        5       S9  gUR                  5       $ [        R                   " XRS9nUS:X  a9  [        R                  " S[        U 5      R                   S3[        [        5       S9  U$ )a  
Return int position of the {value} value in the Series.

If the {op}imum is achieved in multiple locations,
the first row position is returned.

Parameters
----------
axis : {{None}}
    Unused. Parameter needed for compatibility with DataFrame.
skipna : bool, default True
    Exclude NA/null values when showing the result.
*args, **kwargs
    Additional arguments and keywords for compatibility with NumPy.

Returns
-------
int
    Row position of the {op}imum value.

See Also
--------
Series.arg{op} : Return position of the {op}imum value.
Series.arg{oppose} : Return position of the {oppose}imum value.
numpy.ndarray.arg{op} : Equivalent method for numpy arrays.
Series.idxmax : Return index label of the maximum values.
Series.idxmin : Return index label of the minimum values.

Examples
--------
Consider dataset containing cereal calories

>>> s = pd.Series({{'Corn Flakes': 100.0, 'Almond Delight': 110.0,
...                'Cinnamon Toast Crunch': 120.0, 'Cocoa Puff': 110.0}})
>>> s
Corn Flakes              100.0
Almond Delight           110.0
Cinnamon Toast Crunch    120.0
Cocoa Puff               110.0
dtype: float64

>>> s.argmax()
2
>>> s.argmin()
0

The maximum cereal calories is the third element and
the minimum cereal calories is the first element,
since series is zero-indexed.
úThe behavior of úx.argmax/argmin with skipna=False and NAs, or with all-NAs is deprecated. In a future version this will raise ValueError.©Ú
stacklevelrœ   ©Úskipna)rÂ   rÅ   Úvalidate_minmax_axisÚvalidate_argmax_with_skipnar…   r*   r#   ÚanyÚwarningsÚwarnrB   rf   ÚFutureWarningr   Úargmaxr&   Ú	nanargmax©rD   r”   r  r³   r´   Údelegateró   s          rE   r
  ÚIndexOpsMixin.argmax¬  sì   € ðl —<‘<ˆÜ
×Ò Ô%Ü×/Ò/°¸fÓEˆä�h¤×/Ñ/Þ˜hŸm™m›o×1Ñ1×3Ñ3Ü—’Ø&¤t¨D£z×':Ñ':Ð&;ð <Fð Fô "Ü/Ó1òð à—‘Ó(Ð(ä×%Ò% hÑ>ˆFØ˜‹|Ü—’Ø&¤t¨D£z×':Ñ':Ð&;ð <Fð Fô "Ü/Ó1òð ˆMrH   Úsmallestc                ó0  • U R                   n[        R                  " U5        [        R                  " X#U5      n[	        U[
        5      (       at  U(       d]  UR                  5       R                  5       (       a:  [        R                  " S[        U 5      R                   S3[        [        5       S9  gUR                  5       $ [        R                   " XRS9nUS:X  a9  [        R                  " S[        U 5      R                   S3[        [        5       S9  U$ )Nrþ   rÿ   r   rœ   r  )rÂ   rÅ   r  Úvalidate_argmin_with_skipnar…   r*   r#   r  r  r  rB   rf   r	  r   Úargminr&   Ú	nanargminr  s          rE   r  ÚIndexOpsMixin.argmin   së   € ð —<‘<ˆÜ
×Ò Ô%Ü×/Ò/°¸fÓEˆä�h¤×/Ñ/Þ˜hŸm™m›o×1Ñ1×3Ñ3Ü—’Ø&¤t¨D£z×':Ñ':Ð&;ð <Fð Fô "Ü/Ó1òð à—‘Ó(Ð(ä×%Ò% hÑ>ˆFØ˜‹|Ü—’Ø&¤t¨D£z×':Ñ':Ð&;ð <Fð Fô "Ü/Ó1òð ˆMrH   c                ó6   • U R                   R                  5       $ )aü  
Return a list of the values.

These are each a scalar type, which is a Python scalar
(for str, int, float) or a pandas scalar
(for Timestamp/Timedelta/Interval/Period)

Returns
-------
list

See Also
--------
numpy.ndarray.tolist : Return the array as an a.ndim-levels deep
    nested list of Python scalars.

Examples
--------
For Series

>>> s = pd.Series([1, 2, 3])
>>> s.to_list()
[1, 2, 3]

For Index:

>>> idx = pd.Index([1, 2, 3])
>>> idx
Index([1, 2, 3], dtype='int64')

>>> idx.to_list()
[1, 2, 3]
)rÂ   r»   rC   s    rE   r»   ÚIndexOpsMixin.tolist"  s   € ðD �|‰|×"Ñ"Ó$Ð$rH   c                óø   • [        U R                  [        R                  5      (       d  [	        U R                  5      $ [        U R                  R                  [        U R                  R                  5      5      $ )a  
Return an iterator of the values.

These are each a scalar type, which is a Python scalar
(for str, int, float) or a pandas scalar
(for Timestamp/Timedelta/Interval/Period)

Returns
-------
iterator

Examples
--------
>>> s = pd.Series([1, 2, 3])
>>> for x in s:
...     print(x)
1
2
3
)	r…   rÂ   rˆ   r‰   rÓ   ÚmaprÕ   ÚrangerÛ   rC   s    rE   Ú__iter__ÚIndexOpsMixin.__iter__H  sN   € ô, ˜$Ÿ,™,¬¯
©
×3Ñ3ä˜Ÿ™Ó%Ð%ä�t—|‘|×(Ñ(¬%°·±×0AÑ0AÓ*BÓCÐCrH   c                óF   • [        [        U 5      R                  5       5      $ )zã
Return True if there are any NaNs.

Enables various performance speedups.

Returns
-------
bool

Examples
--------
>>> s = pd.Series([1, 2, 3, None])
>>> s
0    1.0
1    2.0
2    3.0
3    NaN
dtype: float64
>>> s.hasnans
True
)Úboolr#   r  rC   s    rE   ÚhasnansÚIndexOpsMixin.hasnansd  s   € ô2 ”D˜“J—N‘NÓ$Ó%Ð%rH   c                óŒ   • U R                   n[        U[        5      (       a  UR                  XS9$ [        R
                  " XAX#S9$ )aú  
An internal function that maps values using the input
correspondence (which can be a dict, Series, or function).

Parameters
----------
mapper : function, dict, or Series
    The input correspondence object
na_action : {None, 'ignore'}
    If 'ignore', propagate NA values, without passing them to the
    mapping function
convert : bool, default True
    Try to find better dtype for elementwise function results. If
    False, leave as dtype=object. Note that the dtype is always
    preserved for some extension array dtypes, such as Categorical.

Returns
-------
Union[Index, MultiIndex], inferred
    The output of the mapping function applied to the index.
    If the function returns a tuple with more than one element
    a MultiIndex will be returned.
)Ú	na_action)r!  Úconvert)rÂ   r…   r*   r  r%   Ú	map_array)rD   Úmapperr!  r"  Úarrs        rE   Ú_map_valuesÚIndexOpsMixin._map_values  s>   € ð2 �l‰lˆä�cœ>×*Ñ*Ø—7‘7˜6�7Ð7Ð7ä×#Ò# C¸9ÑVÐVrH   c           	     ó4   • [         R                  " U UUUUUS9$ )a=  
Return a Series containing counts of unique values.

The resulting object will be in descending order so that the
first element is the most frequently-occurring element.
Excludes NA values by default.

Parameters
----------
normalize : bool, default False
    If True then the object returned will contain the relative
    frequencies of the unique values.
sort : bool, default True
    Sort by frequencies when True. Preserve the order of the data when False.
ascending : bool, default False
    Sort in ascending order.
bins : int, optional
    Rather than count values, group them into half-open bins,
    a convenience for ``pd.cut``, only works with numeric data.
dropna : bool, default True
    Don't include counts of NaN.

Returns
-------
Series

See Also
--------
Series.count: Number of non-NA elements in a Series.
DataFrame.count: Number of non-NA elements in a DataFrame.
DataFrame.value_counts: Equivalent method on DataFrames.

Examples
--------
>>> index = pd.Index([3, 1, 2, 3, 4, np.nan])
>>> index.value_counts()
3.0    2
1.0    1
2.0    1
4.0    1
Name: count, dtype: int64

With `normalize` set to `True`, returns the relative frequency by
dividing all values by the sum of values.

>>> s = pd.Series([3, 1, 2, 3, 4, np.nan])
>>> s.value_counts(normalize=True)
3.0    0.4
1.0    0.2
2.0    0.2
4.0    0.2
Name: proportion, dtype: float64

**bins**

Bins can be useful for going from a continuous variable to a
categorical variable; instead of counting unique
apparitions of values, divide the index in the specified
number of half-open bins.

>>> s.value_counts(bins=3)
(0.996, 2.0]    2
(2.0, 3.0]      2
(3.0, 4.0]      1
Name: count, dtype: int64

**dropna**

With `dropna` set to `False` we can also see NaN index values.

>>> s.value_counts(dropna=False)
3.0    2
1.0    1
2.0    1
4.0    1
NaN    1
Name: count, dtype: int64
)ÚsortÚ	ascendingÚ	normalizeÚbinsÚdropna)r%   Úvalue_counts_internal)rD   r+  r)  r*  r,  r-  s         rE   Úvalue_countsÚIndexOpsMixin.value_countsŸ  s*   € ôn ×/Ò/ØØØØØØñ
ð 	
rH   c                ó¬   • U R                   n[        U[        R                  5      (       d  UR	                  5       nU$ [
        R                  " U5      nU$ rc   )rÂ   r…   rˆ   r‰   r;   r%   Úunique1d)rD   rò   ró   s      rE   r;   ÚIndexOpsMixin.uniqueÿ  sE   € Ø—‘ˆÜ˜&¤"§*¡*×-Ñ-à—]‘]“_ˆFð ˆô  ×(Ò(¨Ó0ˆFØˆrH   c                ó\   • U R                  5       nU(       a  [        U5      n[        U5      $ )a¼  
Return number of unique elements in the object.

Excludes NA values by default.

Parameters
----------
dropna : bool, default True
    Don't include NaN in the count.

Returns
-------
int

See Also
--------
DataFrame.nunique: Method nunique for DataFrame.
Series.count: Count non-NA/null observations in the Series.

Examples
--------
>>> s = pd.Series([1, 3, 5, 7, 7])
>>> s
0    1
1    3
2    5
3    7
4    7
dtype: int64

>>> s.nunique()
4
)r;   r$   r—   )rD   r-  Úuniqss      rE   ÚnuniqueÚIndexOpsMixin.nunique  s'   € ðF —‘“ˆÞÜ'¨Ó.ˆEÜ�5‹zÐrH   c                ó8   • U R                  SS9[        U 5      :H  $ )zÆ
Return boolean if values in the object are unique.

Returns
-------
bool

Examples
--------
>>> s = pd.Series([1, 2, 3])
>>> s.is_unique
True

>>> s = pd.Series([1, 2, 3, 1])
>>> s.is_unique
False
F)r-  )r6  r—   rC   s    rE   Ú	is_uniqueÚIndexOpsMixin.is_unique0  s   € ð& �|‰| 5ˆ|Ð)¬S°«YÑ6Ð6rH   c                ó2   • SSK Jn  U" U 5      R                  $ )zñ
Return boolean if values in the object are monotonically increasing.

Returns
-------
bool

Examples
--------
>>> s = pd.Series([1, 2, 2])
>>> s.is_monotonic_increasing
True

>>> s = pd.Series([3, 2, 1])
>>> s.is_monotonic_increasing
False
r   ©r4   )Úpandasr4   Úis_monotonic_increasing©rD   r4   s     rE   r>  Ú%IndexOpsMixin.is_monotonic_increasingE  ó   € õ& 	!á�T‹{×2Ñ2Ð2rH   c                ó2   • SSK Jn  U" U 5      R                  $ )zô
Return boolean if values in the object are monotonically decreasing.

Returns
-------
bool

Examples
--------
>>> s = pd.Series([3, 2, 2, 1])
>>> s.is_monotonic_decreasing
True

>>> s = pd.Series([1, 2, 3])
>>> s.is_monotonic_decreasing
False
r   r<  )r=  r4   Úis_monotonic_decreasingr?  s     rE   rC  Ú%IndexOpsMixin.is_monotonic_decreasing\  rA  rH   c                ól  • [        U R                  S5      (       a  U R                  R                  US9$ U R                  R                  nU(       ab  [	        U R
                  5      (       aH  [        (       d=  [        [        R                  U R                  5      nU[        R                  " U5      -  nU$ )a	  
Memory usage of the values.

Parameters
----------
deep : bool, default False
    Introspect the data deeply, interrogate
    `object` dtypes for system-level memory consumption.

Returns
-------
bytes used

See Also
--------
numpy.ndarray.nbytes : Total bytes consumed by the elements of the
    array.

Notes
-----
Memory usage does not include memory consumed by elements that
are not components of the array if deep=False or if used on PyPy

Examples
--------
>>> idx = pd.Index([1, 2, 3])
>>> idx.memory_usage()
24
rU   rV   )rN   rÞ   rU   rØ   r   r¾   r   r   rˆ   r‰   rÂ   r   Úmemory_usage_of_objects)rD   rW   Úvrò   s       rE   Ú_memory_usageÚIndexOpsMixin._memory_usages  sˆ   € ô> �4—:‘:˜~×.Ñ.Ø—:‘:×*Ñ*Øð +ð ð ð �J‰J×ÑˆÞ”O D§J¡J×/Ñ/¿ºÜœ"Ÿ*™* d§l¡lÓ3ˆFØ”×,Ò,¨VÓ4Ñ4ˆAØˆrH   r8   z”            sort : bool, default False
                Sort `uniques` and shuffle `codes` to maintain the
                relationship.
            )rò   ÚorderÚ	size_hintr)  c                óx  • [         R                  " U R                  XS9u  p4UR                  [        R
                  :X  a  UR                  [        R                  5      n[        U [        5      (       a  U R                  U5      nX44$ SSKJn   U" X@R                  S9nX44$ ! [         a    U" U5      n X44$ f = f)N)r)  Úuse_na_sentinelr   r<  rã   )r%   Ú	factorizerÂ   r¾   rˆ   Úfloat16ÚastypeÚfloat32r…   r!   rF   r=  r4   ÚNotImplementedError)rD   r)  rM  ÚcodesÚuniquesr4   s         rE   rN  ÚIndexOpsMixin.factorize�  s°   € ô$ $×-Ò-Ø�L‰L˜tñ
‰ˆð �=‰=œBŸJ™JÓ&Ø—n‘n¤R§Z¡ZÓ0ˆGä�dœM×*Ñ*à×'Ñ'¨Ó0ˆGð ˆ~Ðõ %ð)Ù ¯z©zÑ:�ð
 ˆ~Ðøô	 'ó )ñ   ›.‘Øˆ~Ðð	)ús   ÂB" Â"B9Â8B9a  
        Find indices where elements should be inserted to maintain order.

        Find the indices into a sorted {klass} `self` such that, if the
        corresponding elements in `value` were inserted before the indices,
        the order of `self` would be preserved.

        .. note::

            The {klass} *must* be monotonically sorted, otherwise
            wrong locations will likely be returned. Pandas does *not*
            check this for you.

        Parameters
        ----------
        value : array-like or scalar
            Values to insert into `self`.
        side : {{'left', 'right'}}, optional
            If 'left', the index of the first suitable location found is given.
            If 'right', return the last such index.  If there is no suitable
            index, return either 0 or N (where N is the length of `self`).
        sorter : 1-D array-like, optional
            Optional array of integer indices that sort `self` into ascending
            order. They are typically the result of ``np.argsort``.

        Returns
        -------
        int or array of int
            A scalar or array of insertion points with the
            same shape as `value`.

        See Also
        --------
        sort_values : Sort by the values along either axis.
        numpy.searchsorted : Similar method from NumPy.

        Notes
        -----
        Binary search is used to find the required insertion points.

        Examples
        --------
        >>> ser = pd.Series([1, 2, 3])
        >>> ser
        0    1
        1    2
        2    3
        dtype: int64

        >>> ser.searchsorted(4)
        3

        >>> ser.searchsorted([0, 4])
        array([0, 3])

        >>> ser.searchsorted([1, 3], side='left')
        array([0, 2])

        >>> ser.searchsorted([1, 3], side='right')
        array([1, 3])

        >>> ser = pd.Series(pd.to_datetime(['3/11/2000', '3/12/2000', '3/13/2000']))
        >>> ser
        0   2000-03-11
        1   2000-03-12
        2   2000-03-13
        dtype: datetime64[ns]

        >>> ser.searchsorted('3/14/2000')
        3

        >>> ser = pd.Categorical(
        ...     ['apple', 'bread', 'bread', 'cheese', 'milk'], ordered=True
        ... )
        >>> ser
        ['apple', 'bread', 'bread', 'cheese', 'milk']
        Categories (4, object): ['apple' < 'bread' < 'cheese' < 'milk']

        >>> ser.searchsorted('bread')
        1

        >>> ser.searchsorted(['bread'], side='right')
        array([3])

        If the values are not monotonically sorted, wrong locations
        may be returned:

        >>> ser = pd.Series([2, 1, 3])
        >>> ser
        0    2
        1    1
        2    3
        dtype: int64

        >>> ser.searchsorted(1)  # doctest: +SKIP
        0  # wrong result, correct would be 1
        Úsearchsortedc                ó   • g rc   r`   ©rD   r{   ÚsideÚsorters       rE   rV  ÚIndexOpsMixin.searchsorted,  ó   € ð 	rH   c                ó   • g rc   r`   rX  s       rE   rV  r[  5  r\  rH   r4   )r9   c                ó  • [        U[        5      (       a$  S[        U5      R                   S3n[	        U5      eU R
                  n[        U[        R                  5      (       d  UR                  XUS9$ [        R                  " UUUUS9$ )Nz(Value must be 1-D array-like or scalar, z is not supported)rY  rZ  )
r…   r   rB   rf   rÔ   rÂ   rˆ   r‰   rV  r%   )rD   r{   rY  rZ  Úmsgrò   s         rE   rV  r[  >  sŒ   € ô �eœ\×*Ñ*à:Ü˜“;×'Ñ'Ð(Ð(9ð;ð ô ˜S“/Ð!à—‘ˆÜ˜&¤"§*¡*×-Ñ-à×&Ñ& uÀÐ&ÐGÐGä×&Ò&ØØØØñ	
ð 	
rH   Úfirst©Úkeepc               ó*   • U R                  US9nX)    $ ©Nra  )Ú_duplicated)rD   rb  r<   s      rE   Údrop_duplicatesÚIndexOpsMixin.drop_duplicatesX  s    € Ø×%Ñ%¨4Ð%Ð0ˆ
à�KÑ Ð rH   c                óŠ   • U R                   n[        U[        5      (       a  UR                  US9$ [        R                  " X!S9$ rd  )rÂ   r…   r*   r<   r%   )rD   rb  r%  s      rE   re  ÚIndexOpsMixin._duplicated]  s:   € à�l‰lˆÜ�cœ>×*Ñ*Ø—>‘> t�>Ð,Ð,Ü×$Ò$ SÑ4Ð4rH   c                óò  • [         R                  " X5      nU R                  n[        USSS9n[         R                  " XTR
                  5      n[        U5      n[        U[        5      (       a6  [        R                  " UR                  UR                  UR                  5      n[        R                  " SS9   [         R                  " XEU5      nS S S 5        U R!                  WUS9$ ! , (       d  f       N= f)NT)Úextract_numpyÚextract_rangeÚignore)Úall)r­   )r'   Úget_op_result_namerÂ   r,   Úmaybe_prepare_scalar_for_oprÊ   r+   r…   r  rˆ   ÚarangeÚstartÚstopÚstepÚerrstateÚarithmetic_opÚ_construct_result)rD   Úotherrû   Úres_nameÚlvaluesÚrvaluesró   s          rE   Ú_arith_methodÚIndexOpsMixin._arith_methodd  s¶   € Ü×)Ò)¨$Ó6ˆà—,‘,ˆÜ °TÈÑNˆÜ×1Ò1°'¿=¹=ÓIˆÜ0°Ó9ˆÜ�gœu×%Ñ%Ü—i’i §¡¨w¯|©|¸W¿\¹\ÓJˆGä�[Š[˜XÓ&Ü×&Ò& w¸Ó<ˆF÷ 'ð ×%Ñ% f°8Ð%Ð<Ð<÷ 'Õ&ús   Â8C(Ã(
C6c                ó   • [        U 5      e)zf
Construct an appropriately-wrapped result from the ArrayLike result
of an arithmetic-like operation.
r   )rD   ró   r­   s      rE   rw  ÚIndexOpsMixin._construct_results  s   € ô
 " $Ó'Ð'rH   r`   )ra   r   )ra   zExtensionArray | np.ndarray)ra   r   )ra   r   re   )ra   r*   )r¾   znpt.DTypeLike | Nonerá   r  râ   rJ   ra   z
np.ndarray)ra   r  )NT)r”   zAxisInt | Noner  r  ra   rY   )ra   r.   )r"  r  )FTFNT)
r+  r  r)  r  r*  r  r-  r  ra   r5   )T)r-  r  ra   rY   )F)rW   r  ra   rY   )FT)r)  r  rM  r  ra   z"tuple[npt.NDArray[np.intp], Index])..)r{   r2   rY  úLiteral['left', 'right']rZ  r0   ra   znp.intp)r{   znpt.ArrayLike | ExtensionArrayrY  r€  rZ  r0   ra   znpt.NDArray[np.intp])ÚleftN)r{   z$NumpyValueArrayLike | ExtensionArrayrY  r€  rZ  zNumpySorter | Nonera   znpt.NDArray[np.intp] | np.intp)rb  r/   )r`  )rb  r/   ra   znpt.NDArray[np.bool_])6rf   rg   rh   ri   rj   Ú__array_priority__Ú	frozensetr¼   rk   rl   r¾   rÂ   r	   rÇ   ÚTrÊ   rÍ   r�   rÕ   rØ   rÛ   rÞ   r   rç   rä   rö   r   r
  r  r»   Úto_listr  r   r  r&  r/  r;   r6  r9  r>  rC  rH  r%   rN  ÚtextwrapÚdedentr6   r
   rV  rf  re  r|  rw  rm   r`   rH   rE   r7   r7     sM  ‡ ñð
 ÐÙ$-Ø	ˆ
ó%€M�>ó ð ó(ó ð(ð ó(ó ð(ð ó	ó ð	ñ 	Øðñ	€Að: ó
"ó ð
"ô(ð óó ðð2 ñSó ðSð< ó#ó ð#ð6 ó!ó ð!ð6 ó>(ó ð>(ð@ ð '+ØØŸ>™>ð	Cà#ðCð ðCð ð	Cð 
ôCó ðCðJ Øóó ó ðñ 	ˆE˜% yÑ1à:>ðQØ"ðQØ37ðQà	ôQó 2ðQñf 	ˆ�E %¨zÑ:à:>ðØ"ðØ37ðà	ôó ;ðòB"%ðH €GôDð8 ó&ó ð&ð4 õWó ðWð> ð  ØØØØð]
àð]
ð ð]
ð ð	]
ð ð]
ð 
ô]
ó ð]
ò~ð õ%ó ð%ðN ó7ó ð7ð( ó3ó ð3ð, ó3ó ð3ð, õ'ó ð'ñR 	Ø×ÑØØØØ�_Š_ðó
ñð Ø $ðàðð ðð 
,ô	óðð6`	ð ØñðR ð *-Ø!ð	àðð 'ðð ð	ð
 
ôó ðð ð *-Ø!ð	à-ðð 'ðð ð	ð
 
ôó ðñ 	ˆ�nÑ	%¨WÑ5ð *0Ø%)ð	
à3ð
ð 'ð
ð #ð	
ð
 
(ô
ó 6ð
ð2 3:÷ !ð
 õ5ó ð5ò=õ(rH   )Urj   Ú
__future__r   r†  Útypingr   r   r   r   r   r	   r
   r  Únumpyrˆ   Úpandas._configr   Úpandas._libsr   Úpandas._typingr   r   r   r   r   r   r   Úpandas.compatr   Úpandas.compat.numpyr   rÅ   Úpandas.errorsr   Úpandas.util._decoratorsr   r   Úpandas.util._exceptionsr   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   r    r!   r"   Úpandas.core.dtypes.missingr#   r$   Úpandas.corer%   r&   r'   Úpandas.core.accessorr(   Úpandas.core.arrayliker)   Úpandas.core.arraysr*   Úpandas.core.constructionr+   r,   Úcollections.abcr-   r.   r/   r0   r1   r2   r=  r3   r4   r5   r6   rk   Ú_indexops_doc_kwargsr>   rp   r~   r7   r`   rH   rE   Ú<module>rŸ     s  ðòõ #ã ÷÷ ñ ó ã å .å ÷÷ ñ õ Ý .Ý -÷õ 5å 4÷õ 5÷ó ÷÷
ñ õ
 /Ý *Ý -÷ö
 ÷÷
ó ÷ñ ð  "€ˆnÓ !àØØØ!ñ	Ð ô,$�=ô ,$÷^-ñ -ôDd�W˜XÑ&ô dôN[(�Hõ [(rH   