ó
    §ñ:iÒK  ã                   ó¸   • S r SSKrSSKJr  SSKJr  SSKrSSKJ	r	  SSK
Jr  SSKJr  S	S
KJrJr  S rS r\\\S.rS rS rS rS rSS jrSS jrSS jrS rg)zAUtilities to handle multiclass/multioutput target in classifiers.é    N)ÚSequence)Úchain)Úissparseé   )Úget_namespace)ÚVisibleDeprecationWarningé   )Ú_assert_all_finiteÚcheck_arrayc                 ó¢   • [        U 5      u  p[        U S5      (       d  U(       a   UR                  UR                  U 5      5      $ [	        U 5      $ )NÚ	__array__)r   ÚhasattrÚunique_valuesÚasarrayÚset©ÚyÚxpÚis_array_api_compliants      Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/sklearn/utils/multiclass.pyÚ_unique_multiclassr      sA   € Ü!.¨qÓ!1Ñ€BÜˆq�+×ÑÖ"8Ø×Ñ §
¡
¨1£Ó.Ð.ä�1‹vˆó    c                 ón   • [        U 5      u  pUR                  [        U S/ SQS9R                  S   5      $ )Nr   ©ÚcsrÚcscÚcoo)Ú
input_nameÚaccept_sparser	   )r   Úaranger   Úshape)r   r   Ú_s      r   Ú_unique_indicatorr#      s8   € Ü˜!Ó�E€BØ�9‰9Ü�A #Ò5JÑK×QÑQÐRSÑTóð r   )ÚbinaryÚ
multiclassúmultilabel-indicatorc                  óü  ^• [        U 6 u  pU (       d  [        S5      e[        S U  5       5      nUSS1:X  a  S1n[        U5      S:”  a  [        SU-  5      eUR	                  5       nUS:X  a*  [        [        S U  5       5      5      S:”  a  [        S	5      e[
        R                  US
5      mT(       d  [        S[        U 5      -  5      eU(       a9  UR                  U  Vs/ s H  nT" U5      PM     sn5      nUR                  U5      $ [        [        R                  " U4S jU  5       5      5      n[        [        S U 5       5      5      S:”  a  [        S5      eUR                  [        U5      5      $ s  snf )a)  Extract an ordered array of unique labels.

We don't allow:
    - mix of multilabel and multiclass (single label) targets
    - mix of label indicator matrix and anything else,
      because there are no explicit labels)
    - mix of label indicator matrices of different sizes
    - mix of string and integer labels

At the moment, we also don't allow "multiclass-multioutput" input type.

Parameters
----------
*ys : array-likes
    Label values.

Returns
-------
out : ndarray of shape (n_unique_labels,)
    An ordered array of unique labels.

Examples
--------
>>> from sklearn.utils.multiclass import unique_labels
>>> unique_labels([3, 5, 5, 5, 7, 7])
array([3, 5, 7])
>>> unique_labels([1, 2, 3, 4], [2, 2, 3, 4])
array([1, 2, 3, 4])
>>> unique_labels([1, 2, 10], [5, 11])
array([ 1,  2,  5, 10, 11])
zNo argument has been passed.c              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Útype_of_target)Ú.0Úxs     r   Ú	<genexpr>Ú unique_labels.<locals>.<genexpr>N   s   é € Ð1ªb¨”> !×$Ð$ªbùs   ‚r$   r%   r	   z'Mix type of y not allowed, got types %sr&   c              3   óT   #   • U  H  n[        U/ S QS9R                  S   v •  M      g7f)r   )r   r	   N)r   r!   )r+   r   s     r   r-   r.   [   s(   é € ð ÚVXÐQR”˜AÒ-BÑC×IÑIÈ!ÖLÒVXùs   ‚&(zCMulti-label binary indicator input with different numbers of labelsNzUnknown label type: %sc              3   óB   >#   • U  H  nS  T" U5       5       v •  M     g7f)c              3   ó$   #   • U  H  ov •  M     g 7fr)   © )r+   Úis     r   r-   Ú*unique_labels.<locals>.<genexpr>.<genexpr>o   s   é € Ð(FÒ4E¨q¬Ò4Eùs   ‚Nr2   )r+   r   Ú_unique_labelss     €r   r-   r.   o   s!   øé € Ð'SÒPRÈ1Ñ(F±NÀ1Ô4E×(FÐ(FÒPRùs   ƒc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr)   )Ú
isinstanceÚstr)r+   Úlabels     r   r-   r.   q   s   é € Ð=²9¨%Œz˜%¤×%Ð%²9ùs   ‚z,Mix of label input types (string and number))r   Ú
ValueErrorr   ÚlenÚpopÚ_FN_UNIQUE_LABELSÚgetÚreprÚconcatr   r   Úfrom_iterabler   Úsorted)	Úysr   r   Úys_typesÚ
label_typer   Ú	unique_ysÚ	ys_labelsr5   s	           @r   Úunique_labelsrH   )   so  ø€ ô@ "/°Ð!3Ñ€BÞÜÐ7Ó8Ð8ô Ñ1©bÓ1Ó1€HØ�H˜lÐ+Ó+Ø �>ˆä
ˆ8ƒ}�qÓÜÐBÀXÑMÓNÐNà—‘“€Jð 	Ð,Ó,ÜÜñ ÙVXóó ó
ð
 óô ØQó
ð 	
ô
 '×*Ñ*¨:°tÓ<€NÞÜÐ1´D¸³HÑ<Ó=Ð=æà—I‘I¹"Ó=º"°Q™~¨aÖ0¹"Ñ=Ó>ˆ	Ø×Ñ 	Ó*Ð*ä”E×'Ò'Ô'SÑPRÓ'SÓSÓT€Iä
Œ3Ñ=±9Ó=Ó=Ó>ÀÓBÜÐGÓHÐHà�:‰:”f˜YÓ'Ó(Ð(ùò >s   Ã"E9c           
      ó  • [        U 5      u  pUR                  U R                  S5      =(       aP    [        UR	                  UR                  UR                  XR                  5      U R                  5      U :H  5      5      $ )Núreal floating)r   ÚisdtypeÚdtypeÚboolÚallÚastypeÚint64r   s      r   Ú_is_integral_floatrQ   w   s_   € Ü!.¨qÓ!1Ñ€BØ�:‰:�a—g‘g˜Ó/÷ ´DØ
�‰ˆr�y‰y˜"Ÿ)™) A§x¡xÓ0°1·7±7Ó;¸qÑ@ÓAó5ð r   c           	      óš  • [        U 5      u  p[        U S5      (       d  [        U [        5      (       d  U(       aV  [	        SSSSSSS9n[
        R                  " 5          [
        R                  " S[        5         [        U 4SS0UD6n SSS5        [        U S
5      (       a#  U R                  S:X  a  U R                  S   S:”  d  g[!        U 5      (       a½  U R"                  S;   a  U R%                  5       n UR'                  U R(                  5      n[+        U R(                  5      S:H  =(       dc    UR,                  S:H  =(       d    UR,                  S:H  =(       a    SU;   =(       a+    U R.                  R0                  S;   =(       d    [3        U5      $ UR'                  U 5      nUR                  S   S:  =(       a.    UR5                  U R.                  S5      =(       d    [3        U5      $ ! [        [        4 a=  n[        U5      R                  S	5      (       a  e [        U 4S[        0UD6n  SnAGNªSnAff = f! , (       d  f       GN¹= f)a"  Check if ``y`` is in a multilabel format.

Parameters
----------
y : ndarray of shape (n_samples,)
    Target values.

Returns
-------
out : bool
    Return ``True``, if ``y`` is in a multilabel format, else ```False``.

Examples
--------
>>> import numpy as np
>>> from sklearn.utils.multiclass import is_multilabel
>>> is_multilabel([0, 1, 0, 1])
False
>>> is_multilabel([[1], [0, 2], []])
False
>>> is_multilabel(np.array([[1, 0], [0, 0]]))
True
>>> is_multilabel(np.array([[1], [0], [0]]))
False
>>> is_multilabel(np.array([[1, 0, 0]]))
True
r   TFr   ©r   Úallow_ndÚforce_all_finiteÚ	ensure_2dÚensure_min_samplesÚensure_min_featuresÚerrorrL   NúComplex data not supportedr!   r   r	   )ÚdokÚlilÚbiué   )rM   zsigned integerzunsigned integer)r   r   r7   r   ÚdictÚwarningsÚcatch_warningsÚsimplefilterr   r   r:   r8   Ú
startswithÚobjectÚndimr!   r   ÚformatÚtocsrr   Údatar;   ÚsizerL   ÚkindrQ   rK   )r   r   r   Úcheck_y_kwargsÚeÚlabelss         r   Úis_multilabelrn   ~   sã  € ô8 "/¨qÓ!1Ñ€BÜˆq�+×Ñ¤*¨Q´×"9Ñ"9Ö=Sô ØØØ"ØØ Ø !ñ
ˆô ×$Ò$Õ&Ü×!Ò! 'Ô+DÔEðCÜ Ñ@¨Ð@°Ñ@�÷ 'ô �A�w×Ñ A§F¡F¨a£K°A·G±G¸A±JÀ³NØä�‡{�{Ø�8‰8�~Ó%Ø—‘“	ˆAØ×!Ñ! !§&¡&Ó)ˆä�—‘‹K˜1Ñ÷ FØ—‘˜qÑ ×H V§[¡[°AÑ%5×$H¸AÀ¹K÷ FØ—‘—‘ Ñ&×DÔ*<¸VÓ*Dð	
ð ×!Ñ! !Ó$ˆà�|‰|˜A‰ Ñ"÷ 
Ø�J‰J�q—w‘wÐ NÓO÷ *Ü! &Ó)ð	
øô/ .¬zÐ:ó CÜ�q“6×$Ñ$Ð%A×BÑBØô   ÑB¬ÐB°>ÑB–ûðCú÷	 'Ö&ús0   ÁH;Á;G+Ç+H8Ç;2H3È-H;È3H8È8H;È;
I
c                 óB   • [        U SS9nUS;  a  [        SU S35      eg)a!  Ensure that target y is of a non-regression type.

Only the following target types (as defined in type_of_target) are allowed:
    'binary', 'multiclass', 'multiclass-multioutput',
    'multilabel-indicator', 'multilabel-sequences'

Parameters
----------
y : array-like
    Target values.
r   ©r   )r$   r%   zmulticlass-multioutputr&   zmultilabel-sequenceszUnknown label type: zy. Maybe you are trying to fit a classifier, which expects discrete classes on a regression target with continuous values.N)r*   r:   )r   Úy_types     r   Úcheck_classification_targetsrr   Ç   sB   € ô ˜A¨#Ñ.€FØð ó ô Ø" 6 (ð +8ð 8ó
ð 	
ðr   c           	      ó`  • [        U 5      u  p#[        U [        5      =(       d    [        U 5      =(       d    [	        U S5      =(       a    [        U [
        5      (       + =(       d    UnU(       d  [        SU -  5      eU R                  R                  S;   nU(       a  [        S5      e[        U 5      (       a  g[        SSSSSSS	9n[        R                  " 5          [        R                  " S
[        5        [        U 5      (       d   [        U 4SS0UD6n SSS5         [        U 5      (       a
  U S/SS24   OU S   n[        U[$        5      (       a  [        R&                  " S[(        5        [	        US5      (       d5  [        U[        5      (       a   [        U[
        5      (       d  [        S5      eU R,                  S;  a  g[/        U R0                  5      (       d  U R,                  S:X  a  gg[        U 5      (       d7  U R2                  ["        :X  a#  [        U R4                  S   [
        5      (       d  gU R,                  S:X  a  U R0                  S   S:”  a  Sn	OSn	UR7                  U R2                  S5      (       aX  [        U 5      (       a  U R8                  OU n
UR;                  X¢R=                  U
[>        5      :g  5      (       a  [A        X¡S9  SU	-   $ [        W5      (       a  UR8                  nURC                  U 5      R0                  S   S:”  d  U R,                  S:X  a  [E        U5      S:”  a  SU	-   $ g! [        [        4 a=  n[        U5      R!                  S5      (       a  e [        U 4S["        0UD6n  SnAGNnSnAff = f! , (       d  f       GN}= f! [*         a     GN÷f = f)a	  Determine the type of data indicated by the target.

Note that this type is the most specific type that can be inferred.
For example:

    * ``binary`` is more specific but compatible with ``multiclass``.
    * ``multiclass`` of integers is more specific but compatible with
      ``continuous``.
    * ``multilabel-indicator`` is more specific but compatible with
      ``multiclass-multioutput``.

Parameters
----------
y : {array-like, sparse matrix}
    Target values. If a sparse matrix, `y` is expected to be a
    CSR/CSC matrix.

input_name : str, default=""
    The data name used to construct the error message.

    .. versionadded:: 1.1.0

Returns
-------
target_type : str
    One of:

    * 'continuous': `y` is an array-like of floats that are not all
      integers, and is 1d or a column vector.
    * 'continuous-multioutput': `y` is a 2d array of floats that are
      not all integers, and both dimensions are of size > 1.
    * 'binary': `y` contains <= 2 discrete values and is 1d or a column
      vector.
    * 'multiclass': `y` contains more than two discrete values, is not a
      sequence of sequences, and is 1d or a column vector.
    * 'multiclass-multioutput': `y` is a 2d array that contains more
      than two discrete values, is not a sequence of sequences, and both
      dimensions are of size > 1.
    * 'multilabel-indicator': `y` is a label indicator matrix, an array
      of two dimensions with at least two columns, and at most 2 unique
      values.
    * 'unknown': `y` is array-like but none of the above, such as a 3d
      array, sequence of sequences, or an array of non-sequence objects.

Examples
--------
>>> from sklearn.utils.multiclass import type_of_target
>>> import numpy as np
>>> type_of_target([0.1, 0.6])
'continuous'
>>> type_of_target([1, -1, -1, 1])
'binary'
>>> type_of_target(['a', 'b', 'a'])
'binary'
>>> type_of_target([1.0, 2.0])
'binary'
>>> type_of_target([1, 0, 2])
'multiclass'
>>> type_of_target([1.0, 0.0, 3.0])
'multiclass'
>>> type_of_target(['a', 'b', 'c'])
'multiclass'
>>> type_of_target(np.array([[1, 2], [3, 1]]))
'multiclass-multioutput'
>>> type_of_target([[1, 2]])
'multilabel-indicator'
>>> type_of_target(np.array([[1.5, 2.0], [3.0, 1.6]]))
'continuous-multioutput'
>>> type_of_target(np.array([[0, 1], [1, 1]]))
'multilabel-indicator'
r   z:Expected array-like (array or non-string sequence), got %r)ÚSparseSeriesÚSparseArrayz1y cannot be class 'SparseSeries' or 'SparseArray'r&   TFr   rS   rY   rL   NrZ   z‡Support for labels represented as bytes is deprecated in v1.5 and will error in v1.7. Convert the labels to a string or integer format.zÝYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead - the MultiLabelBinarizer transformer can convert to this format.)r	   r   Úunknownr	   r$   r   z-multioutputÚ rJ   rp   Ú
continuousr%   )#r   r7   r   r   r   r8   r:   Ú	__class__Ú__name__rn   r_   r`   ra   rb   r   r   rc   rd   ÚbytesÚwarnÚFutureWarningÚ
IndexErrorre   Úminr!   rL   ÚflatrK   rh   ÚanyrO   Úintr
   r   r;   )r   r   r   r   ÚvalidÚsparse_pandasrk   rl   Úfirst_row_or_valÚsuffixrh   s              r   r*   r*   â   s'  € ôP "/¨qÓ!1Ñ€Bä	�A”xÓ	 ×	J¤H¨Q£K×	J´7¸1¸kÓ3J÷ 	#Ü˜1œcÓ"Ô"÷	"à!ð 
ö ÜØHÈ1ÑLó
ð 	
ð —K‘K×(Ñ(Ð,KÑK€MÞÜÐLÓMÐMä�Q×ÑØ%ô ØØØØØØñ€Nô 
×	 Ò	 Õ	"Ü×Ò˜gÔ'@ÔAÜ˜�{‰{ðCÜ Ñ@¨Ð@°Ñ@�÷	 
#ðô )1°¯©˜1˜a˜S¢!˜Vš9¸¸1¹ÐÜÐ&¬×.Ñ.Ü�MŠMðô ôô Ð(¨+×6Ñ6ÜÐ+¬X×6Ñ6ÜÐ/´×5Ñ5äð;óð ð 	‡v�v�VÓàÜˆq�w‰w�<‰<à�6‰6�Q‹;ààÜ�A�;‰;˜1Ÿ7™7¤fÓ,´ZÀÇÁÀqÁ	Ì3×5OÑ5Oàð 	‡v�v�ƒ{�q—w‘w˜q‘z A“~Ø‰àˆð 
‡z�z�!—'‘'˜?×+Ñ+ä! !Ÿ™ˆq�vŠv¨!ˆØ�6‰6�$Ÿ)™) D¬#Ó.Ñ.×/Ñ/Ü˜tÒ;Ø &Ñ(Ð(ô Ð ×!Ñ!Ø+×0Ñ0ÐØ	×Ñ˜Ó× Ñ  Ñ# aÓ'¨A¯F©F°a«K¼CÐ@PÓ<QÐTUÓ<Uà˜fÑ$Ð$àøôS .¬zÐ:ó CÜ�q“6×$Ñ$Ð%A×BÑBØô   ÑB¬ÐB°>ÑB–ûðCú÷ 
#Ö	"ûôN ó ÚðúsC   Ã,NÄ	L=Ä BN Ì=N
Í2NÍ?NÎN
Î
NÎ
NÎ
N-Î,N-c                 ó  • [        U SS5      c  Uc  [        S5      eUbm  [        U SS5      bN  [        R                  " U R                  [        U5      5      (       d  [        SU< SU R                  < 35      e g[        U5      U l        gg)a  Private helper function for factorizing common classes param logic.

Estimators that implement the ``partial_fit`` API need to be provided with
the list of possible classes at the first call to partial_fit.

Subsequent calls to partial_fit should check that ``classes`` is still
consistent with a previous value of ``clf.classes_`` when provided.

This function returns True if it detects that this was the first call to
``partial_fit`` on ``clf``. In that case the ``classes_`` attribute is also
set on ``clf``.

Úclasses_Nz8classes must be passed on the first call to partial_fit.z	`classes=z7` is not the same as on last call to partial_fit, was: TF)Úgetattrr:   ÚnpÚarray_equalrˆ   rH   )ÚclfÚclassess     r   Ú_check_partial_fit_first_callrŽ   ›  s�   € ô ˆs�J Ó%Ñ-°'±/ÜÐSÓTÐTà	Ñ	Ü�3˜
 DÓ)Ñ5Ü—>’> #§,¡,´¸gÓ0F×GÑGÝ ã18¸#¿,»,ðHóð ð Hð ô )¨Ó1ˆCŒLØð r   c                 ó0  • / n/ n/ nU R                   u  pVUb  [        R                  " U5      n[        U 5      (       GaÁ  U R	                  5       n [        R
                  " U R                  5      n[        U5       GH€  nU R                  U R                  U   U R                  US-       n	Ub2  X   n
[        R                  " U5      [        R                  " U
5      -
  nOSn
U R                   S   Xx   -
  n[        R                  " U R                  U R                  U   U R                  US-       SS9u  pÍ[        R                  " XÚS9nSU;   a  XìS:H  ==   U-  ss'   SU;  aE  Xx   U R                   S   :  a0  [        R                  " USS5      n[        R                  " USU5      nUR                  U5        UR                  UR                   S   5        UR                  XîR                  5       -  5        GMƒ     O”[        U5       H…  n[        R                  " U SS2U4   SS9u  pÍUR                  U5        UR                  UR                   S   5        [        R                  " XÑS9nUR                  XîR                  5       -  5        M‡     X#U4$ )a>  Compute class priors from multioutput-multiclass target data.

Parameters
----------
y : {array-like, sparse matrix} of size (n_samples, n_outputs)
    The labels for each example.

sample_weight : array-like of shape (n_samples,), default=None
    Sample weights.

Returns
-------
classes : list of size n_outputs of ndarray of size (n_classes,)
    List of classes for each column.

n_classes : list of int of size n_outputs
    Number of classes in each column.

class_prior : list of size n_outputs of ndarray of size (n_classes,)
    Class distribution of each column.
Nr	   r   T)Úreturn_inverse)Úweights)r!   rŠ   r   r   ÚtocscÚdiffÚindptrÚrangeÚindicesÚsumÚuniquerh   ÚbincountÚinsertÚappend)r   Úsample_weightr�   Ú	n_classesÚclass_priorÚ	n_samplesÚ	n_outputsÚy_nnzÚkÚcol_nonzeroÚnz_samp_weightÚzeros_samp_weight_sumÚ	classes_kÚy_kÚclass_prior_ks                  r   Úclass_distributionr©   ¾  s1  € ð, €GØ€IØ€KàŸ7™7Ñ€IØÑ ÜŸ
š
 =Ó1ˆä�‡{‚{Ø�G‰G‹IˆÜ—’˜Ÿ™Ó!ˆä�y×!ˆAØŸ)™) A§H¡H¨Q¡K°!·(±(¸1¸q¹5±/ÐBˆKàÑ(Ø!.Ñ!;�Ü(*¯ª¨}Ó(=ÄÇÂÀ~Ó@VÑ(VÑ%à!%�Ø()¯©°©
°U±XÑ(=Ð%äŸYšYØ—‘�q—x‘x ‘{ Q§X¡X¨a°!©e¡_Ð5Àdñ‰NˆIô ŸKšK¨ÑDˆMð �I‹~Ø¨1™nÓ-Ð1FÑFÓ-ð ˜	Ó! e¡h°·±¸±Ó&;ÜŸIšI i°°AÓ6�	Ü "§	¢	¨-¸Ð<QÓ R�à�N‰N˜9Ô%Ø×Ñ˜YŸ_™_¨QÑ/Ô0Ø×Ñ˜}×/@Ñ/@Ó/BÑB×Cò9 "ô< �yÖ!ˆAÜŸYšY qª¨A¨¡w¸tÑD‰NˆIØ�N‰N˜9Ô%Ø×Ñ˜YŸ_™_¨QÑ/Ô0ÜŸKšK¨ÑCˆMØ×Ñ˜}×/@Ñ/@Ó/BÑBÖCñ "ð  Ð,Ð,r   c                 óà  • U R                   S   n[        R                  " X245      n[        R                  " X245      nSn[        U5       H~  n[        US-   U5       Hh  nUSS2U4==   USS2U4   -  ss'   USS2U4==   USS2U4   -  ss'   X@SS2U4   S:H  U4==   S-  ss'   X@SS2U4   S:H  U4==   S-  ss'   US-  nMj     M€     US[        R                  " U5      S-   -  -  n	XI-   $ )aE  Compute a continuous, tie-breaking OvR decision function from OvO.

It is important to include a continuous value, not only votes,
to make computing AUC or calibration meaningful.

Parameters
----------
predictions : array-like of shape (n_samples, n_classifiers)
    Predicted classes for each binary classifier.

confidences : array-like of shape (n_samples, n_classifiers)
    Decision functions or predicted probabilities for positive class
    for each binary classifier.

n_classes : int
    Number of classes. n_classifiers must be
    ``n_classes * (n_classes - 1 ) / 2``.
r   r	   Nr^   )r!   rŠ   Úzerosr•   Úabs)
ÚpredictionsÚconfidencesr�   rŸ   ÚvotesÚsum_of_confidencesr¢   r3   ÚjÚtransformed_confidencess
             r   Ú_ovr_decision_functionr³     s  € ð& ×!Ñ! !Ñ$€IÜ�HŠH�iÐ+Ó,€EÜŸš 9Ð"8Ó9Ðà	€AÜ�9ÖˆÜ�q˜1‘u˜iÖ(ˆAØšq !˜tÓ$¨²A°q°DÑ(9Ñ9Ó$Øšq !˜tÓ$¨²A°q°DÑ(9Ñ9Ó$Øša ˜dÑ# qÑ(¨!Ð+Ó,°Ñ1Ó,Øša ˜dÑ# qÑ(¨!Ð+Ó,°Ñ1Ó,Ø�‰FŠAó )ñ ð 1Ø	ŒR�VŠVÐ&Ó'¨!Ñ+Ñ,ñÐð Ñ*Ð*r   )rw   r)   )Ú__doc__r`   Úcollections.abcr   Ú	itertoolsr   ÚnumpyrŠ   Úscipy.sparser   Úutils._array_apir   Úutils.fixesr   Ú
validationr
   r   r   r#   r=   rH   rQ   rn   rr   r*   rŽ   r©   r³   r2   r   r   Ú<module>r¼      sp   ðÙ Gó Ý $Ý ã Ý !å ,Ý 3ß 7òòð !Ø$Ø-ñÐ òK)ò\òF
òR
ô6vôr ôFG-óT*+r   