Ë
   ÅýÌÎ©dã            	       óØ  — U d dl Zd dlmc mZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lm Z  erd dl!m"Z" d dl#m$Z$ dZ%de&de'fd„Z(dede'fd„Z)de*de'fd„Z+de,de'fd„Z-de'de'fd„Z. e(d«      Z/ e(d«      Z0 ed«      Z1de1de1fd„Z2ddd e3e1   ddfd!„Z4d"e*ejj                     ee1   z  d#e&dee1   fd$„Z6 ed%«      d&e7e8d'f   de3e7e'e'e8f      fd(„«       Z9 G d)„ d*«      Z:d+Z; G d,„ d-«      Z< G d.„ d/«      Z= ed0«      xs e
j|                  j~                  Z@e8eAd1<   ed2e8d3e'e8z  de8fd4„«       ZBd5e8d3e'e8z  de8fd6„ZCy)7é    N)ÚOrderedDictÚabc)ÚCallableÚIteratorÚSequence)Ú	lru_cache)ÚFunctionType)ÚTYPE_CHECKINGÚTypeVar)ÚInvalidArgument)Úint_from_bytes)Únext_up)Ú_function_key)ÚChoiceT)ÚConjectureDatal   ÿÿÿÿ ÚnameÚreturnc                 ó€   — t        j                  | j                  «       «      j                  «       }t	        |d d «      S )Né   )ÚhashlibÚsha384ÚencodeÚdigestr   )r   Úhasheds     úi/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/conjecture/utils.pyÚcalc_label_from_namer   #   s0   € Ü�^‰^˜DŸK™K›MÓ*×1Ñ1Ó3€FÜ˜&  !˜*Ó%Ð%ó    Úfc                 óâ   — t        | t        «      rt        t        | d¬«      «      S t        | t        «      rt        | «      S 	 t        | «      S # t        $ r t        t	        | «      «      cY S w xY w)NT)Úignore_name)Ú
isinstancer	   Úcalc_label_from_hashr   ÚtypeÚcalc_label_from_clsÚ	Exception)r   s    r   Úcalc_label_from_callabler&   (   sa   € Ü�!”\Ô"Ü#¤M°!ÀÔ$FÓGÐGÜ	�A”tÔ	Ü" 1Ó%Ð%ð	0Ü'¨Ó*Ð*øÜò 	0ä&¤t¨A£wÓ/Ò/ð	0ús   Á
A ÁA.Á-A.Úclsc                 ó,   — t        | j                  «      S ©N)r   Ú__qualname__)r'   s    r   r$   r$   6   s   € Ü × 0Ñ 0Ó1Ð1r   Úobjc                 ó<   — t        t        t        | «      «      «      S r)   )r   ÚstrÚhash)r+   s    r   r"   r"   :   s   € Ü¤¤D¨£I£Ó/Ð/r   Úlabelsc                  ó:   — d}| D ]  }|dz  t         z  }||z  }Œ |S )Nr   é   )Ú
LABEL_MASK)r/   ÚlabelÚls      r   Úcombine_labelsr5   >   s4   € Ø€EØò ˆØ˜!‘œzÑ)ˆØ�‰
‰ðð €Lr   za sample() in Samplerzone more from many()ÚTÚvc                 ó   — | S r)   © )r7   s    r   Úidentityr:   M   s   € Ø€Hr   Údatar   Úlsc                 óš   — t        t        |«      dz
  «      D ]1  }| j                  |t        |«      dz
  «      }||   ||   c||<   ||<   Œ3 y)aO  Shuffle ``ls`` in place, drawing from ``data``.

    Reversed Fisher-Yates shuffle: swap each element with itself or with a
    later element.  This shrinks i==j for each element, i.e. towards no change,
    so a shuffled sequence shrinks back to its original order.  We don't
    consider the last element as it's always a no-op.
    r1   N)ÚrangeÚlenÚdraw_integer)r;   r<   ÚiÚjs       r   Úfisher_yates_shufflerC   Q   sU   € ô ”3�r“7˜Q‘;Óò $ˆØ×Ñ˜a¤ R£¨1¡Ó-ˆØ˜!‘u˜b ™eˆˆˆ1‰ˆr�!Šuñ$r   ÚvaluesÚstrategy_namec                 óš  — dt         j                  v r\t        | t         j                  d   j                  «      r5| j                  dk7  rgt        d| j                  › d| j                  › d�«      ‚t        | t        t        j                  t        j                  f«      st        d| ›d|› d�«      ‚t        | t        «      r| S t        | «      S )	NÚnumpyr1   zPOnly one-dimensional arrays are supported for sampling, and the given value has z dimensions (shape z²).  This array would give samples of array slices instead of elements!  Use np.ravel(values) to convert to a one-dimensional array, or tuple(values) if you want to sample slices.zCannot sample from z\ because it is not an ordered collection. Hypothesis goes to some length to ensure that the a”   strategy has stable results between runs. To replay a saved test case, the sampled values must have the same iteration order on every run - ruling out sets, dicts, etc due to hash randomization. Most cases can simply use `sorted(values)`, but mixed types or special values such as math.nan require careful handling - and note that when shrinking a test case, Hypothesis treats earlier values as simpler.)ÚsysÚmodulesr!   ÚndarrayÚndimr   Úshaper   r   r   ÚenumÚEnumMetar>   Útuple)rD   rE   s     r   Úcheck_samplerP   ^   sÇ   € ð ”#—+‘+Ñ¤*¨V´S·[±[ÀÑ5I×5QÑ5QÔ"RØ�;‰;˜!ÒÜ!ð+Ø+1¯;©;¨-Ð7JØ—<‘<�.ð !)ð)óð ô ˜¤¬c¯l©l¼D¿M¹MÐ JÔKÜØ! & ð ,AØANÀð P;ð;ó

ð 
	
ô �&œ%Ô ð ˆÜ�‹=Ðr   é@   Úweights.c                 óà  — t        | «      }t        |«      D �cg c]  }|d d g‘Œ	 }}t        | «      }t        |«      } |d«      } |d«      }g }g }	| D �
cg c]  }
|
|z  ‘Œ	 }}
g }t	        |«      D ]Q  \  }}||z  }|j                  |«       |dk(  r	|||   d<   Œ*|dk  r|j                  |«       ŒA|	j                  |«       ŒS t        j                  |«       t        j                  |	«       |�rš|	�r—t        j                  |«      }t        j                  |	«      }||k7  }|sÆt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }d	d
|iz  }t        t        j                   |«      «      ‚d }||   }||kD  }|s™t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                   |«      «      ‚d x}}||   d   }d }||u }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                   |«      «      ‚d x}x}}|||   d<   |||   z
  ||   d<   ||   ||   z   |z
  ||<   ||   dk  rt        j"                  ||«       n'||   dk(  r	|||   d<   nt        j"                  |	|«       |r|	r�Œ—|	r|||	j%                  «          d<   |	rŒ|r|||j%                  «          d<   |rŒg }|D �]  \  }}}t'        |t(        «      }|�sddt        j                  «       v st        j                  t&        «      rt        j                  t&        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  t(        «      rt        j                  t(        «      ndt        j                  |«      dœz  }t        t        j                   |«      «      ‚d }g }t'        |t(        «      }|}|sd }||u }|}|�sÊddt        j                  «       v st        j                  t&        «      rt        j                  t&        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  t(        «      rt        j                  t(        «      ndt        j                  |«      dœz  }|j                  |«       |sŒt        j                  dfd|f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  } d d!| iz  }!|j                  |!«       t        j*                  |d«      i z  }"d"d#|"iz  }#t        t        j                   |#«      «      ‚d x}x}x}x}}d }||u}|s™t        j                  d$|fd%||f«      d&t        j                  «       v st        j                  |«      rt        j                  |«      nd&t        j                  |«      d'œz  }dd|iz  }t        t        j                   |«      «      ‚d x}}|€|j                  |||f«       �ŒÚ||k  r|j                  ||||z
  f«       �Œø|j                  |||f«       �Œ |j-                  «        |S c c}w c c}
w )(Nr   r1   é   )ú!=)z%(py0)s != %(py2)sÚloÚhi©Úpy0Úpy2zassert %(py4)sÚpy4)ú>)z%(py1)s > %(py3)sÚone)Úpy1Úpy3zassert %(py5)sÚpy5©Úis)z%(py1)s is %(py4)s)r^   r[   zassert %(py6)sÚpy6z5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r!   ÚbaseÚint)rY   r^   rZ   r[   z.%(py6)s
{%(py6)s = %(py2)s(%(py3)s, %(py4)s)
}Ú	alternate)rZ   r_   r[   rc   )z%(py8)s is %(py11)s)Úpy8Úpy11ú%(py13)sÚpy13zassert %(py16)sÚpy16©úis not)z%(py0)s is not %(py3)sÚalternate_chance)rY   r_   )r?   r>   Úsumr#   Ú	enumerateÚappendÚheapqÚheapifyÚheappopÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚheappushÚpopr!   re   Ú_format_boolopÚsort)$rR   ÚnrA   ÚtableÚtotalÚnum_typeÚzeror]   ÚsmallÚlargeÚwÚprobabilitiesÚscaled_probabilitiesrn   ÚscaledrV   rW   Ú@py_assert1Ú@py_format3Ú@py_format5Ú@py_assert0Ú@py_assert2Ú@py_format4Ú@py_format6Ú@py_assert3Ú@py_format7Ú	new_tablerd   rf   Ú@py_assert5Ú@py_assert10Ú@py_assert9Ú@py_format12Ú@py_format14Ú@py_format15Ú@py_format17s$                                       r   Úcompute_sampler_tabler�   ~   sT  € äˆG‹€AÜFKÈAÃhÖ,OÀ¨a°°tª_Ð,O€EÐ,OÜ�‹L€EÜ�E‹{€Há�A‹;€DÙ
�1‹+€Cà€EØ€Eà(/Ö0 1�Q˜“YÐ0€MÐ0Ø(*Ðä(¨Ó7ò ÑˆÐØ! AÑ%ˆØ×#Ñ# FÔ+Ø�QŠ;ØˆE�!‰H�QŠKØ�aŠZØ�L‰L˜�Oà�L‰L˜�Oðô 
‡M�M�%ÔÜ	‡M�M�%Ôâ
’EÜ�]‰]˜5Ó!ˆÜ�]‰]˜5Ó!ˆà�R‰x���ˆr�R�����‰ˆr��‹ˆr�����Š�R��‹�R������‰Ø# BÑ'Ð-Ð'¨#Ñ-×-×-Õ-Ð'¨#×-×-Ó-Ð'×-×-×-×-×-Ð-¨#×-×-Ó-¨#×-×-×-×-×-×-Ó-Ø�R‰y˜‰|Ð#˜tÐ#ˆ|˜tÐ#×#×#Õ#ˆ|˜t×#×#Ó#ˆ|×#×#Ò#˜t×#×#×#×#×#×#Ó#Øˆˆb‰	�!‰ØÐ1°"Ñ5Ñ5ˆˆb‰	�!‰à  Ñ$Ð';¸BÑ'?Ñ?Øñ$Ð˜RÑ ð   Ñ# aÒ'Ü�N‰N˜5 "Õ%Ø! "Ñ%¨Ò*ØˆE�"‰I�aŠLä�N‰N˜5 "Ô%ñ% “Eñ& Ø $ˆˆe�i‰i‹kÑ˜1Ñò á
Ø $ˆˆe�i‰i‹kÑ˜1Ñò ð /1€IØ-2ó 	BÑ)ˆˆiÐ)Ü˜$¤Ó$Ð$Ò$×$×$×$×$Õ$Œz×$×$Ó$Œz×$×$×$×$×$Ò$˜$×$×$Ó$˜$×$×$×$×$×$Ò$¤×$×$Ó$¤×$×$Ô$Ð$×$×$×$×$×$Ð$Ù>Œz˜)¤SÓ)Ð>Ð)Ð>Ñ)¸$Ð>¨Y¸$Ð->×>×>×>×>×>Ó>Œz×>×>Ó>Œz×>×>×>×>×>Ò>˜)×>×>Ó>˜)×>×>×>×>×>Ò>¤S×>×>Ó>¤S×>×>Ô>Ð)×>×>×>Ñ>Ñ)×>×>Ò>¨Y¸$×>×>×>×>×>Ñ>¨Y×>×>Ó>¨Y×>×>Ô>¸$×>×>×>×>×>×>×>×>×>×>×>×>×>Ð>Ø'+Ð+Ð tÐ+×+×+Õ+Ð t×+×+×+×+×+Ñ+Ð×+×+Ó+Ð×+×+Ô+ t×+×+×+×+×+×+Ñ+ØÐØ×Ñ˜d DÐ*:Ð;Ö<Ø˜ÒØ×Ñ˜i¨¨sÐ5EÑ/EÐFÖGà×Ñ˜d IÐ/?Ð@ÖAð	Bð ‡N�NÔØÐùò{ -Pùò 1s   ™_&Á_+c                   ój   — e Zd ZU dZeeeeef      ed<   ddœde	e   de
fd„Zdd	œd
ddedz  defd„Zy)ÚSamplera(  Sampler based on Vose's algorithm for the alias method. See
    http://www.keithschwarz.com/darts-dice-coins/ for a good explanation.

    The general idea is that we store a table of triples (base, alternate, p).
    base. We then pick a triple uniformly at random, and choose its alternate
    value with probability p and else choose its base value. The triples are
    chosen so that the resulting mixture has the right distribution.

    We maintain the following invariants to try to produce good shrinks:

    1. The table is in lexicographic (base, alternate) order, so that choosing
       an earlier value in the list always lowers (or at least leaves
       unchanged) the value.
    2. base[i] < alternate[i], so that shrinking the draw always results in
       shrinking the chosen element.
    r‚   T)ÚobserverR   r    c                óD   — || _         t        t        |«      «      | _        y r)   )r    r�   rO   r‚   )ÚselfrR   r    s      r   Ú__init__zSampler.__init__Õ   s   € ØˆŒÜ*¬5°«>Ó:ˆ�
r   N)Úforcedr;   r   r¤   r   c                óH  ‡— | j                   r|j                  t        «       ‰€d nt        ˆfd„| j                  D «       «      }|j                  | j                  || j                   ¬«      \  }}}d }‰��s‰|k(  xr |dkD  }g }‰|k(  }	|	}
|	s|}
|
�sQt        j                  d|	fd‰|f«      dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      nddt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }d	d
|iz  }|j                  |«       |	sXdddt        j                  «       v st        j                  |«      rt        j                  |«      ndiz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}}	|j!                  ||| j                   ¬«      }| j                   r|j#                  «        |�r¿g }d }‰|u }	|	}
|	s|‰k(  }|}
|
�s�t        j                  d|	fd‰|f«      dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      dœz  }dd|iz  }|j                  |«       |	s¹t        j                  dfd|‰f«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  ‰«      rt        j                  ‰«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }t        j$                  ‰|f«      dz   d|iz  }t        t        j                  |«      «      ‚d x}
x}x}	x}}|S g }d }‰|u }	|	}
|	s|‰k(  }|}
|
�s�t        j                  d|	fd‰|f«      dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      dœz  }dd|iz  }|j                  |«       |	s¹t        j                  dfd|‰f«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  ‰«      rt        j                  ‰«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }t        j$                  ‰|f«      dz   d|iz  }t        t        j                  |«      «      ‚d x}
x}x}	x}}|S )Nc              3   óN   •K  — | ]  \  }}}‰|k(  s
‰|k(  r|d kD  r|||f–— Œ y­w)r   Nr9   )Ú.0rd   rf   rn   r¤   s       €r   ú	<genexpr>z!Sampler.sample.<locals>.<genexpr>ä   s?   øè ø€ ò á7�T˜9Ð&6Ø˜T’> f°	Ò&9Ð>NÐQRÒ>Rð �yÐ"2Ô3ñùs   ƒ"%©r¤   r    r   ©ú==)z%(py2)s == %(py4)sr¤   rd   )rZ   r[   z%(py6)src   z%(py8)srg   Úforced_use_alternater1   zassert %(py11)srh   ra   ©z%(py2)s is %(py5)s©rZ   r`   ú%(py7)sÚpy7)z%(py9)s == %(py11)srf   )Úpy9rh   ri   rj   z
>assert %(py16)srk   )r    Ú
start_spanÚSAMPLE_IN_SAMPLER_LABELÚnextr‚   Úchoiceru   rv   rw   rx   ry   rz   rq   r   r{   r|   Údraw_booleanÚ	stop_spanÚ_format_assertmsg)r¢   r;   r¤   Úforced_choicerd   rf   rn   r¬   rŒ   r“   r�   rŽ   r”   Ú@py_format9Ú@py_format10r™   Úuse_alternateÚ@py_assert4r—   r’   Ú@py_format8rš   r›   rœ   s     `                     r   ÚsamplezSampler.sampleÙ   sI  ø€ ð �<Š<Ø�O‰OÔ3Ô4ð ˆ~ñ äó à;?¿:¹:ôó ð 	ð -1¯K©KØ�J‰JØ Ø—L‘Lð -8ó -
Ñ)ˆˆiÐ)ð
  $ÐØÑð $*¨YÑ#6Ò#OÐ;KÈaÑ;OÐ Ù9�6˜T‘>Ô9Ð%9×9×9Ö9�6˜T×9×9×9×9×9Ñ9�6×9×9Ó9�6×9×9×9×9×9Ò9˜T×9×9Ó9˜T×9×9×9×9×9×9×9×9×9Ó9Ð%9×9×9Ó9Ð%9×9×9×9×9×9×9×9×9×9×9×9Ö9à×)Ñ)ØØ'Ø—L‘Lð *ó 
ˆð
 �<Š<Ø�N‰NÔÚÙM˜TÐM�6˜T�>ÔM Y°&Ñ%8×M×M×MÐM�6˜T×M×M×M×M×MÑM�6×M×MÓM�6×M×MÔM˜T×M×M×M×M×M×MÕM Y°&×M×M×M×M×MÑM Y×M×MÓM Y×M×M×M×M×MÒM°&×M×MÓM°&×M×M×M×M×M×M×M×M×MÒM¸6À9Ð:M×M×M×M×M×M×MÔMØÐáC˜TÐC�6˜T�>ÔC T¨V¡^×C×C×CÐC�6˜T×C×C×C×C×CÑC�6×C×CÓC�6×C×CÔC˜T×C×C×C×C×C×CÕC T¨V×C×C×C×C×CÑC T×C×CÓC T×C×C×C×C×CÒC¨V×C×CÓC¨V×C×C×C×C×C×C×C×C×CÒC°f¸d°^×C×C×C×C×C×CÔCØˆKr   )Ú__name__Ú
__module__r*   Ú__doc__ÚlistrO   re   ÚfloatÚ__annotations__r   Úboolr£   r¿   r9   r   r   rŸ   rŸ   Á   sc   … ñð" ��c˜3 �oÑ&Ñ'Ó'àDHò ; ¨¡ð ;¸Tó ;ð "ò	*àð*ð �d‘
ð	*ð
 
ô*r   rŸ   zIteration over many() is interleaved with other draws.  Are you iterating over several many() objects at once, e.g. with zip()?c                   óÌ   — e Zd ZdZdddœdddedeez  d	eez  d
edz  deddfd„Zdd„Zde	dz  de
ddfd„Zded   fd„Zded   fd„Zddedz  ddfd„Zdefd„Zdd„Zdefd„Zy)Úmanyaý  Utility class for collections. Bundles up the logic we use for "should I
    keep drawing more values?" and handles starting and stopping spans in
    the right place.

    Intended usage is something like:

    with many(data, ...) as elements:
        for _ in elements:
            if not add_stuff_to_result():
                elements.reject()

    Leaving the loop early with ``break``, ``return``, or an exception is
    supported, and keeps both the span tree and the choice sequence well-formed.
    NTr©   r;   r   Úmin_sizeÚmax_sizeÚaverage_sizer¤   r    r   c          	      óZ  — d}||k  }||k  }	||k  }
|r|	r|
�st        j                  d||	|
fd||||f«      t        j                  |«      dt        j                  «       v st        j
                  |«      rt        j                  |«      nddt        j                  «       v st        j
                  |«      rt        j                  |«      nddt        j                  «       v st        j
                  |«      rt        j                  |«      nddœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}x}	}
g }d }
||
u }	|	}|	s||k  }||k  }|xr |}|�sÈt        j                  d
|	fd||
f«      dt        j                  «       v st        j
                  |«      rt        j                  |«      ndt        j                  |
«      dœz  }dd|iz  }|j                  |«       |	süt        j                  dfd|||f«      dt        j                  «       v st        j
                  |«      rt        j                  |«      nddt        j                  «       v st        j
                  |«      rt        j                  |«      nddt        j                  «       v st        j
                  |«      rt        j                  |«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}	x}
x}}|| _
        || _        || _        || _        t        ||z
  ||z
  «      | _        d| _        d| _        d| _        || _        d | _        d| _        d| _        d| _        d| _        d| _        y )Nr   )ú<=rÍ   rÍ   )z%(py1)s <= %(py5)sz%(py5)s <= %(py6)sz%(py6)s <= %(py7)srÉ   rË   rÊ   )r^   r`   rc   r°   zassert %(py9)sr±   ra   r­   r¤   r®   r¯   r°   )rÍ   rÍ   )z%(py9)s <= %(py12)sz%(py12)s <= %(py13)s)r±   Úpy12rj   z%(py15)sÚpy15r1   zassert %(py18)sÚpy18F)ru   rv   rz   rw   rx   ry   r{   r|   rq   r   rÉ   rÊ   r;   Úforced_sizeÚ_calc_p_continueÚ
p_continueÚcountÚ
rejectionsÚ
force_stopr    Ú_depthÚ	_iteratedÚ_closedÚ_doneÚ_in_elementÚ	_rejected)r¢   r;   rÉ   rÊ   rË   r¤   r    r�   r�   r“   r½   r¾   r»   rŒ   r—   Ú@py_assert11r’   rš   Ú@py_format16rœ   Ú@py_format19s                        r   r£   zmany.__init__  s0  € ð Ð8ˆq�HÑ8Ð8�H Ñ8Ð8 °Ñ8×8×8×8Ô8ˆq�H °×8×8Ó8ˆq×8×8×8×8×8Ð8�H×8×8Ó8�H×8×8×8×8×8Ò8 ×8×8Ó8 ×8×8×8×8×8Ò8°×8×8Ó8°×8×8×8×8×8×8×8Ù?˜Ð?ˆv˜ˆ~Ô? ¨VÑ!?Ð?¨V°xÑ!?×?×?×?Ô?ˆv˜×?×?×?×?×?Ñ?ˆv×?×?Ó?ˆv×?×?Ô?˜×?×?×?×?×?×?Ö? ¨V°x×?×?×?×?×?Ñ? ×?×?Ó? ×?×?×?×?×?Ò?¨V×?×?Ó?¨V×?×?×?×?×?Ò?°x×?×?Ó?°x×?×?×?×?×?×?×?×?×?×?×?×?×?Ô?Ø ˆŒØ ˆŒØˆŒ	Ø!ˆÔÜ*¨<¸(Ñ+BÀHÈxÑDWÓXˆŒØˆŒ
ØˆŒØˆŒØˆŒØ"&ˆŒØˆŒØˆŒØˆŒ
Ø ˆÔØˆ�r   c                 ój   — | j                   �t        d«      ‚| j                  j                  | _         | S )NzCannot reuse a many() object.)r×   r   r;   Údepth©r¢   s    r   Ú	__enter__zmany.__enter__8  s,   € Ø�;‰;Ð"Ü!Ð"AÓBÐBØ—i‘i—o‘oˆŒØˆr   Úexc_typeÚ_c                 ó   — d| _         | j                  j                  ry | j                  j                  | j	                  «       k7  r|€t        t        «      ‚y | j                  «        |€%| j                  sd| _	        | j                  «        y y y )NT)rÙ   r;   Úfrozenrá   Ú_expected_depthr   Ú_INTERLEAVED_MANY_MSGÚ_finish_elementrÚ   rÖ   Ú_decide)r¢   rä   rå   s      r   Ú__exit__zmany.__exit__>  sy   € ØˆŒØ�9‰9×ÒØØ�9‰9�?‰?˜d×2Ñ2Ó4Ò4ØÐÜ%Ô&;Ó<Ð<ØØ×ÑÔØÐ D§J¢Jð #ˆDŒOØ�L‰L�Nð	 %/Ðr   c                 ó¤   — | j                   �| j                  rt        d«      ‚| j                  rt        d«      ‚d| _        | j	                  «       S )Nzmmany() must be used as `with many(...) as elements:` followed by `for _ in elements:`, inside the with-block.z,Cannot iterate over a many() more than once.T)r×   rÙ   r   rØ   Ú_iteraterâ   s    r   Ú__iter__zmany.__iter__M  sM   € Ø�;‰;Ð $§,¢,Ü!ðKóð ð �>Š>Ü!Ð"PÓQÐQØˆŒØ�}‰}‹Ðr   c              #   óT  K  — | j                   }	 | j                  rt        d«      ‚|j                  | j	                  «       k7  rt        t
        «      ‚| j                  r| j                  «        | j                  «       sy | xj                  dz  c_	        d| _        d| _
        d –— Œ˜­w)NTz,Cannot iterate over many() after exiting it.r1   F)r;   rÙ   r   rá   rè   ré   rÛ   rê   rë   rÔ   rÜ   )r¢   r;   s     r   rî   zmany._iterateX  s‹   è ø€ Ø�y‰yˆØØ�|Š|Ü%Ð&TÓUÐUØ�z‰z˜T×1Ñ1Ó3Ò3Ü%Ô&;Ó<Ð<Ø×ÒØ×$Ñ$Ô&Ø—<‘<”>ØØ�JŠJ˜!‰O�JØ#ˆDÔØ"ˆDŒNÛð ùs   ‚B&B(Úwhyc                 ór  — | j                   r| j                  rt        d«      ‚| xj                  dz  c_        | xj                  dz  c_        d| _        | j                  t        dd| j                  z  «      kD  r=| j                  | j                  k  r| j                  j                  |«       yd| _	        yy)z�Reject the current element (i.e. don't count it towards our budget
        of elements because it's not going to go in the final collection).z>reject() can only be called once per element, inside the loop.r1   Té   rT   N)
rÛ   rÜ   r   rÔ   rÕ   ÚmaxrÉ   r;   Úmark_invalidrÖ   )r¢   rñ   s     r   Úrejectzmany.rejecth  s’   € ð ×Ò 4§>¢>Ü!ØPóð ð 	�
Š
�a‰�
Ø�Š˜1Ñ�ØˆŒð �?‰?œS  A¨¯
©
¡NÓ3Ò3Ø�z‰z˜DŸM™MÒ)Ø—	‘	×&Ñ& sÕ+à"&�•ð	 4r   c                 óÞ  — | j                   }d }||u}|s­t        j                  d|fd||f«      dt        j                  «       v st        j
                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                   | j                  xr | j                  z   S )Nrl   )z2%(py2)s
{%(py2)s = %(py0)s._depth
} is not %(py5)sr¢   )rY   rZ   r`   zassert %(py7)sr°   )r×   ru   rv   rw   rx   ry   rz   r{   r|   rÛ   r    )r¢   rŒ   r½   r“   r’   r¾   s         r   rè   zmany._expected_depthz  s�   € Ø�{‰{Ð& $Ð&ˆ{ $Ð&×&×&Õ&ˆ{ $×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&ˆ{×&×&Ò& $×&×&×&×&×&×&Ó&Ø�{‰{˜d×.Ñ.Ò?°4·<±<Ñ@Ð@r   c                 ó’   — | j                   r;d| _         | j                  r'| j                  j                  | j                  ¬«       y y y )NF)Údiscard)rÛ   r    r;   r·   rÜ   râ   s    r   rê   zmany._finish_element~  s?   € Ø×ÒØ$ˆDÔØ�|Š|ð —	‘	×#Ñ#¨D¯N©NÐ#Õ;ð ð r   c                 ó   — | j                   rN| j                  | j                  k  r5| j                  j	                  d| j                  › d| j                  › �«       | j
                  r| j                  j                  t        «       | j                  | j                  k(  r| j                  | j                  k  }�nåd }| j                   �rg }| j                  }d }||u }|}|s| j                  }| j                  }	||	k(  }
|
}|�sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }|j!                  |«       |sát        j                  d	
fd
	f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |	«      dœz  }dd|iz  }|j!                  |«       t        j"                  |d«      i z  }dd|iz  }t%        t        j&                  |«      «      ‚d x}x}x}x}x}x}x}
}	d}n]| j                  | j                  k  rd}nA| j                  | j                  k\  rd}n%| j                  �| j                  | j                  k  }| j                  j(                  dc}| j                  _        | j                  j+                  | j,                  || j
                  ¬«      }|| j                  _        |s-d| _        | j
                  r| j                  j1                  «        |S )Nzstopped with z elements, below min_size=ra   )z3%(py4)s
{%(py4)s = %(py2)s.forced_size
} is %(py7)sr¢   )rZ   r[   r°   z%(py9)sr±   rª   )zT%(py13)s
{%(py13)s = %(py11)s.count
} == %(py17)s
{%(py17)s = %(py15)s.forced_size
})rh   rj   rÏ   Úpy17z%(py19)sÚpy19r1   zassert %(py22)sÚpy22FTr   r©   )rÖ   rÔ   rÉ   r;   rõ   r    r²   ÚONE_FROM_MANY_LABELrÊ   rÑ   ru   rv   rw   rx   ry   rz   rq   r   r{   r|   Úunique_element_depthr¶   rÓ   rÚ   r·   )r¢   Úshould_continueÚforced_resultrŒ   r“   Ú@py_assert6r–   r�   Ú@py_assert12Ú@py_assert16Ú@py_assert14r¾   r»   Ú@py_format18Ú@py_format20Ú@py_format21Ú@py_format23rá   s                     r   rë   zmany._decide†  sz  € Ø�?Š?˜tŸz™z¨D¯M©MÒ9Ø�I‰I×"Ñ"Ø §
¡
˜|Ð+EÀdÇmÁmÀ_ÐUôð �<Š<Ø�I‰I× Ñ Ô!4Ô5Ø�=‰=˜DŸM™MÒ)ð #Ÿj™j¨4¯=©=Ñ8ŠOà ˆMØ�‹ñ R�t×'Ñ'ÐQ¨4ÐQÐ'¨4Ð/ÔQ°4·:±:ÐQÀ×AQÑAQÐQ°:ÐAQÑ3Q×Q×Q×QÐQÐ'¨4×Q×Q×Q×Q×QÑQ�t×Q×QÓQ�t×Q×QÔQÐ'×Q×QÒQ¨4×Q×Q×Q×Q×Q×QÕQ°:ÐAQ×Q×Q×Q×Q×QÑQ°4×Q×QÓQ°4×Q×QÔQ°:×Q×Q×Q×Q×QÐQÀ×Q×QÓQÀ×Q×QÔQÐAQ×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×QÖQØ %‘Ø—‘˜dŸm™mÒ+Ø $‘Ø—‘˜tŸ}™}Ò,Ø %‘Ø×!Ñ!Ð-Ø $§
¡
¨T×-=Ñ-=Ñ =�ð 59·I±I×4RÑ4RÐTUÐ1ˆE�4—9‘9Ô1Ø"Ÿi™i×4Ñ4Ø—‘Ø$ØŸ™ð 5ó ˆOð
 .3ˆD�I‰IÔ*ÙØˆDŒJØ�|Š|Ø—	‘	×#Ñ#Ô%ØÐr   )r   rÈ   r)   )r   N)rÀ   rÁ   r*   rÂ   re   rÄ   rÆ   r£   rã   r#   Úobjectrì   r   rï   rî   r-   rö   rè   rê   rë   r9   r   r   rÈ   rÈ     sÝ   „ ñð, "Øòàðð ðð ˜‘+ð	ð
 ˜E‘kðð �d‘
ðð ðð 
óó8ð ¨¡ð °&ð ¸Tó ð	˜( 4™.ó 	ð˜( 4™.ó ñ '˜# ™*ð '°ó 'ð$A ó Aó<ð%˜ô %r   rÈ   c                   óN   — e Zd ZdZdedeez  ddfd„Zded   fd„Zded   fd	„Z	y)
Úinvert_manyab  The inversion counterpart of ``many``: the boolean choices that
    ``many`` would draw around each element. Fixed-size collections draw no
    booleans at all; variable-size ones draw a continuation boolean before
    each element (forced while below min_size, but forced draws still consume
    a choice) and a final False to stop (forced at max_size).rÉ   rÊ   r   Nc                 ó   — ||k7  | _         y r)   ©Ú_variable_size)r¢   rÉ   rÊ   s      r   r£   zinvert_many.__init__µ  s   € Ø&¨(Ñ2ˆÕr   )r   .c                 ó"   — | j                   rdS dS )N)Tr9   r  râ   s    r   Úmorezinvert_many.more¸  s   € Ø×-Ò-ˆwÐ5°2Ð5r   c                 ó"   — | j                   rdS dS )N)Fr9   r  râ   s    r   Údonezinvert_many.done»  s   € Ø×.Ò.ˆxÐ6°BÐ6r   )
rÀ   rÁ   r*   rÂ   re   rÄ   r£   rO   r  r  r9   r   r   r  r  ®  sH   „ ñAð3 ð 3°°e±ð 3Àó 3ð6�e˜NÑ+ó 6ð7�e˜NÑ+ô 7r   r  g        ÚSMALLEST_POSITIVE_FLOATÚdesired_avgrÊ   c                 ób  — | |k  }|sÞt        j                  d|fd| |f«      dt        j                  «       v st        j                  | «      rt        j
                  | «      nddt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }t        j                  | |f«      dz   d|iz  }t        t        j                  |«      «      ‚d}| |k(  ry	d
d	d
| z   z  z
  }|dk(  s|t        j                  k(  rád}||k  }d
}||k  }	|r|	sÅt        j                  d||	fd|||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      ndt        j
                  |«      dœz  }
t        j                  |«      dz   d|
iz  }t        t        j                  |«      «      ‚dx}x}x}	}|S d}||k  }d
}||k  }	|r|	sÅt        j                  d||	fd|||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      ndt        j
                  |«      dœz  }
t        j                  |«      dz   d|
iz  }t        t        j                  |«      «      ‚dx}x}x}	}t        ||«      | kD  r%|dz  }|t        k  rt        }nt        ||«      | kD  rŒ%d	}| t        ||«      z
  dkD  �r:d}||k  }||k  }	|r|	sôt        j                  d||	fd|||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }t        j                  ||f«      dz   d|iz  }t        t        j                  |«      «      ‚dx}x}}	||z   dz  }t        ||«      | k  r|}n|}| t        ||«      z
  dkD  r�Œ:d}||k  }d
}||k  }	|r|	sÅt        j                  d||	fd|||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      ndt        j
                  |«      dœz  }
t        j                  |«      dz   d|
iz  }t        t        j                  |«      «      ‚dx}x}x}	}t        ||«      }	|	| k  }|�sdt        j                  d|fd|	| f«      dt        j                  «       v st        j                  t        «      rt        j
                  t        «      nddt        j                  «       v st        j                  |«      rt        j
                  |«      nddt        j                  «       v st        j                  |«      rt        j
                  |«      ndt        j
                  |	«      dt        j                  «       v st        j                  | «      rt        j
                  | «      nddœz  }
dd|
iz  }t        t        j                  |«      «      ‚dx}	}|S ) zCReturn the p_continue which will generate the desired average size.)rÍ   )z%(py0)s <= %(py2)sr  rÊ   rX   z
>assert %(py4)sr[   Nç      ð?r1   r   )rÍ   ú<)z%(py1)s <= %(py4)sú%(py4)s < %(py6)srÓ   )r^   r[   rc   z
>assert %(py8)srg   )r  r  )ú%(py1)s < %(py4)sr  g-Cëâ6?g{®Gáz„?)r  z%(py4)s < %(py5)srW   )r^   r[   r`   z
>assert %(py7)sr°   rT   )z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} <= %(py6)sÚ_p_continue_to_avg)rY   r^   rZ   r[   rc   zassert %(py8)s)ru   rv   rw   rx   ry   rz   r¸   r{   r|   ÚmathÚinfr  r  )r  rÊ   rŒ   r�   rŽ   rÓ   r�   r�   r–   r“   r”   rº   rW   r’   r¾   Úmids                   r   rÒ   rÒ   Â  s8  € ð ˜(Ñ"×;×;Õ;ˆ;˜(×;×;×;×;×;Ñ;ˆ;×;×;Ó;ˆ;×;×;×;×;×;Ò;˜(×;×;Ó;˜(×;×;×;Ñ; [°(Ð$;×;×;×;×;×;Ô;Ø�hÒØØ�S˜A ™OÑ,Ñ,€JØ�Q‚˜(¤d§h¡hÒ.ØÐ.ˆq�JÑ"Ð. Ð.�J Ñ"×.×.×.Ð.ˆq�J ×.×.Ó.ˆq×.×.×.×.×.Ð.�J×.×.Ó.�J×.×.Ô. ×.×.×. J×.×.×.×.×.×.Ò.ØÐØÐ)ˆ1ˆzÑÐ)˜AÐ)ˆz˜AÑ×)×)×)Ð)ˆ1ˆz˜A×)×)Ó)ˆ1×)×)×)×)×)Ð)ˆz×)×)Ó)ˆz×)×)Ô)˜A×)×)×)˜z×)×)×)×)×)×)Ò)ô ˜Z¨Ó
2°[Ò
@à�fÑˆ
ð
 Ô/Ò/Ü0ˆJØô ˜Z¨Ó
2°[Ó
@ð 
€BØ
Ô*¨:°xÓ@Ñ
@À4Ó
GØÐ4ˆq�:Ñ"Ð4�: Ñ"×4×4×4Ð4ˆq�: ×4×4Ó4ˆq×4×4×4×4×4Ð4�:×4×4Ó4�:×4×4×4×4×4Ò4 ×4×4Ó4 ×4×4×4Ñ4 Z°Ð$4×4×4×4×4×4×4Ð4Ø˜B‰ !Ñ#ˆÜ˜c 8Ó,°Ò;Ø‰JàˆBð Ô*¨:°xÓ@Ñ
@À4Ô
Gð Ð)ˆ1ˆzÑÐ)˜AÐ)ˆz˜AÑ×)×)×)Ð)ˆ1ˆz˜A×)×)Ó)ˆ1×)×)×)×)×)Ð)ˆz×)×)Ó)ˆz×)×)Ô)˜A×)×)×)˜z×)×)×)×)×)×)Ò)Ü˜j¨(Ó3ÐBÐ3°{ÑB×B×BÖBÐ3°{×B×B×B×B×BÑBÔ×B×BÓBÔ×B×B×B×B×BÒB˜j×B×BÓB˜j×B×B×B×B×BÒB¨(×B×BÓB¨(×B×BÔBÐ3×B×B×B×B×BÐB°{×B×BÓB°{×B×B×B×B×B×BÓBØÐr   rÓ   c                 ó8   — | dk\  r|S dd| z
  z  dz
  d| |z  z
  z  S )zBReturn the average_size generated by this p_continue and max_size.r1   r  r9   )rÓ   rÊ   s     r   r  r  é  s1   € à�Q‚ØˆØ�1�z‘>Ñ" QÑ&¨1¨z¸8Ñ/CÑ+CÑDÐDr   )DÚbuiltinsrw   Ú_pytest.assertion.rewriteÚ	assertionÚrewriteru   rM   r   rr   r  rH   Úcollectionsr   r   Úcollections.abcr   r   r   Ú	functoolsr   Útypesr	   Útypingr
   r   Úhypothesis.errorsr   Úhypothesis.internal.compatr   Úhypothesis.internal.floatsr   Ú"hypothesis.internal.lambda_sourcesr   Ú%hypothesis.internal.conjecture.choicer   Ú#hypothesis.internal.conjecture.datar   r2   r-   re   r   r&   r#   r$   r
  r"   r5   r³   rþ   r6   r:   rÃ   rC   ÚEnumrP   rO   rÄ   r�   rŸ   ré   rÈ   r  Ú
float_infoÚminr  rÅ   rÒ   r  r9   r   r   ú<module>r2     s  ð÷ … ƒÛ Û Û Û 
ß (ß 8Ñ 8Ý Ý ß )å -Ý 5Ý .Ý <áÝ=ÝBð €
ð&˜sð & só &ð
0 ð 0¨Só 0ð2˜Tð 2 có 2ð0˜fð 0¨ó 0ð˜Cð  Có ñ /Ð/FÓGÐ Ù*Ð+AÓBÐ ñ ˆCƒL€ð�ð �aó ð
$Ð/ð 
$°T¸!±Wð 
$Àó 
$ðØ�—‘‰O˜h q™kÑ)ðØ:=ðàˆa�[óñ@ ˆ2ƒð? 5¨°¨Ñ#4ð ?¸¸eÀCÈÈeÀOÑ>TÑ9Uò ?ó ð?÷DBñ BðL<ð ÷_ñ _÷D7ñ 7ñ" ")¨£Ò!C°·±×1CÑ1CÐ ˜Ó Cð ð# %ð #°3¸±;ð #À5ò #ó ð#ðLE 5ð E°C¸%±Kð EÀEô Er   