Ë
    ¾�jùS  ã                   ó¤   — d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	 d dl
m
Z
 d dlmZ d dlmZmZ d dlmZmZ  G d„ d	e«      Z G d
„ de«      Zy)é    N)ÚDictÚListÚOptionalÚTuple)ÚImage)Úretry)ÚSCROLL_STEPS)Ú	HTTPErrorÚUiObjectNotFoundError)ÚExistsÚ	intersectc            
       óà   ‡ — e Zd ZdZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%d&d'd(d)d*d+d,œ¥Zd-\  ZZZˆ fd.„Zd/„ Z	ˆ fd0„Z
ˆ fd1„Zd2„ Zd3„ Zd4„ Zd5„ Zˆ xZS )6ÚSelectorzNThe class is to build parameters for UiSelector passed to Android device.
    Útext)é   NÚtextContains)é   NÚtextMatches)é   NÚtextStartsWith)é   NÚ	className)é   NÚclassNameMatches)é    NÚdescription)é@   NÚdescriptionContains)é€   NÚdescriptionMatches)é   NÚdescriptionStartsWith)i   NÚ	checkable)i   FÚchecked)i   FÚ	clickable)i   FÚlongClickable)i    FÚ
scrollable)i @  FÚenabled)i €  FÚ	focusable)i   F)i   F)i   F)i   N)i   N)i    N)i  @ N)i  € r   )i   r   )ÚfocusedÚselectedÚpackageNameÚpackageNameMatchesÚ
resourceIdÚresourceIdMatchesÚindexÚinstance)ÚmaskÚchildOrSiblingÚchildOrSiblingSelectorc                 óØ   •— t         t        | �  | j                  d«       t         t        | �  | j                  g «       t         t        | �  | j
                  g «       |D ]
  }||   | |<   Œ y ©Nr   )Úsuperr   Ú__setitem__Ú_Selector__maskÚ_Selector__childOrSiblingÚ!_Selector__childOrSiblingSelector)ÚselfÚkwargsÚkÚ	__class__s      €úW/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/uiautomator2/_selector.pyÚ__init__zSelector.__init__.   sb   ø€ ÜŒh˜Ñ)¨$¯+©+°qÔ9ÜŒh˜Ñ)¨$×*?Ñ*?ÀÔDÜŒh˜Ñ)¨$×*GÑ*GÈÔLØò 	 ˆAØ˜Q‘iˆD�ŠGñ	 ó    c                 ó:  — | j                  «       }|j                  d«       dD ]%  }|j                  |«      rŒ|j                  |«       Œ' g }|j                  «       D ]%  \  }}|j	                  |dz   t        |«      z   «       Œ' ddj                  |«      z   dz   S )z) remove useless part for easily debugger r2   )r3   r4   ú=z
Selector [z, ú])ÚcopyÚpopÚgetÚitemsÚappendÚreprÚjoin)r<   ÚselectorÚkeyÚargsr>   Úvs         r@   Ú__str__zSelector.__str__5   s’   € à—9‘9“;ˆØ�‰�VÔØ?ò 	"ˆCØ—<‘< Õ$Ø—‘˜SÕ!ð	"ð ˆØ—n‘nÓ&ò 	+‰FˆQ�Ø�K‰K˜˜C™¤$ q£'Ñ)Õ*ð	+à˜dŸi™i¨›oÑ-°Ñ3Ð3rB   c                 óâ   •— || j                   v rSt        t        | �  ||«       t        t        | �  | j                  | | j                     | j                   |   d   z  «       y t        d|z  «      ‚)Nr   z%s is not allowed.)Ú_Selector__fieldsr7   r   r8   r9   ÚReferenceError)r<   r>   rP   r?   s      €r@   r8   zSelector.__setitem__A   sl   ø€ Ø�—‘ÑÜ”(˜DÑ-¨a°Ô3Ü”(Øñ$Ø$(§K¡KØ$(¨¯©Ñ$5¸¿¹ÀaÑ8HÈÑ8KÑ$KõMô !Ð!5¸Ñ!9Ó:Ð:rB   c                 óÈ   •— || j                   v rSt        t        | �  |«       t        t        | �  | j
                  | | j
                     | j                   |   d    z  «       y y r6   )rS   r7   r   Ú__delitem__r8   r9   )r<   r>   r?   s     €r@   rV   zSelector.__delitem__J   s_   ø€ Ø�—‘ÑÜ”(˜DÑ-¨aÔ0Ü”(Øñ$Ø$(§K¡KØ$(¨¯©Ñ$5¸¿¹ÀqÑ9IÈ!Ñ9LÐ8LÑ$LõNð rB   c                 ó*  ‡ — t        ˆ fd„‰ D «       «      }t        di |¤Ž}‰ ‰ j                     D ]   }|‰ j                     j                  |«       Œ" ‰ ‰ j                     D ].  }|‰ j                     j                  |j                  «       «       Œ0 |S )Nc              3   óx   •K  — | ]1  }|‰j                   ‰j                  ‰j                  fvsŒ)|‰|   f–— Œ3 y ­w©N)r9   r:   r;   )Ú.0r>   r<   s     €r@   ú	<genexpr>z!Selector.clone.<locals>.<genexpr>R   s@   øè ø€ ò  q°AØ�K‰K˜×.Ñ.°×0MÑ0Mð>
ò 5
�q˜$˜q™'”lñ ùs   ƒ*:®:© )Údictr   r:   rJ   r;   Úclone)r<   r=   rM   rP   Úss   `    r@   r^   zSelector.cloneQ   s›   ø€ Üó ¨Dô ó ˆô Ñ%˜fÑ%ˆØ�d×+Ñ+Ñ,ò 	6ˆAØ�T×*Ñ*Ñ+×2Ñ2°1Õ5ð	6à�d×3Ñ3Ñ4ò 	FˆAØ�T×2Ñ2Ñ3×:Ñ:¸1¿7¹7»9ÕEð	FàˆrB   c                 ó�   — | | j                      j                  d«       | | j                     j                  t        di |¤Ž«       | S )NÚchildr\   ©r:   rJ   r;   r   ©r<   r=   s     r@   ra   zSelector.child\   sA   € ØˆT×"Ñ"Ñ#×*Ñ*¨7Ô3ØˆT×*Ñ*Ñ+×2Ñ2´8Ñ3E¸fÑ3EÔFØˆrB   c                 ó�   — | | j                      j                  d«       | | j                     j                  t        di |¤Ž«       | S )NÚsiblingr\   rb   rc   s     r@   re   zSelector.siblinga   sA   € ØˆT×"Ñ"Ñ#×*Ñ*¨9Ô5ØˆT×*Ñ*Ñ+×2Ñ2´8Ñ3E¸fÑ3EÔFØˆrB   c                 óX   — | | j                      r|| | j                      d   d<   y || d<   y )Néÿÿÿÿr1   )r;   )r<   Úis     r@   Úupdate_instancezSelector.update_instancef   s4   € à�×-Ñ-Ò.ØBCˆD�×.Ñ.Ñ/°Ñ3°JÒ?à ˆD�ÒrB   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   r9   r:   r;   rA   rQ   r8   rV   r^   ra   re   ri   Ú__classcell__)r?   s   @r@   r   r      s1  ø„ ñðØ�ðà˜ðð 	�|ðð 	˜,ð	ð
 	�\ðð 	˜Lðð 	�|ðð 	˜|ðð 	˜nðð 	  ðð 	�_ðð 	�?ðð 	�_ðð 	˜ðð 	�oðð  	�?ð!ð" 	Ð&ð#ð$ %Ø%Ø'Ø.Ø&Ø-ØØ#ò3€Hð6 :lÑ6€FÐÐ6ô ò
4ô;ôNò	òò
ö
!rB   r   c                   óÄ  — e Zd Zdefd„Zed„ «       Zed„ «       Zed„ «       Zde	e
   fd„Zd0d	ee   dej                  fd
„Zd1d„Zdeeeeef   fd„Zd2d„Zd3d„Zd4defd„Zd5defd„Zd„ Zd6d„Zd7d„Zd8d„Zd8d„Zd9d„Zd0d„Zd9d„Z d„ Z!d0d„Z"d0d„Z#d0d„Z$d„ Z%d„ Z&e%e&cZ'Z(d „ Z)d!„ Z*d"„ Z+d#„ Z,d$efd%„Z-ed&„ «       Z.d'„ Z/d(„ Z0d)„ Z1d*„ Z2d+„ Z3d,„ Z4d-„ Z5ed.„ «       Z6ed/„ «       Z7y):ÚUiObjectrM   c                 óB   — || _         || _        |j                  | _        y rY   )ÚsessionrM   Újsonrpc)r<   rr   rM   s      r@   rA   zUiObject.__init__o   s   € ØˆŒØ ˆŒØ—‘ˆ�rB   c                 ó.   — | j                   j                  S rY   )rr   Úwait_timeout©r<   s    r@   ru   zUiObject.wait_timeoutt   s   € à�|‰|×(Ñ(Ð(rB   c                 ó   — t        | «      S )z-check if the object exists in current window.)r   rv   s    r@   ÚexistszUiObject.existsx   s   € ô �d‹|ÐrB   c                 óL   — | j                   j                  | j                  «      S )zui object info.)rs   ÚobjInforM   rv   s    r@   ÚinfozUiObject.info}   s   € ð �|‰|×#Ñ# D§M¡MÓ2Ð2rB   Úreturnc                 óL   — | j                   j                  | j                  «      S )z!all matched ui objects info list.)rs   ÚobjInfoOfAllInstancesrM   rv   s    r@   Ú	info_listzUiObject.info_list‚   s   € à�|‰|×1Ñ1°$·-±-Ó@Ð@rB   NÚ
display_idc                 óx   — | j                   j                  |¬«      }|j                  | j                  «       «      S )N)r€   )rr   Ú
screenshotÚcropÚbounds)r<   r€   Úims      r@   r‚   zUiObject.screenshot†   s.   € Ø�\‰\×$Ñ$°
Ð$Ó;ˆØ�w‰w�t—{‘{“}Ó%Ð%rB   c                 óŠ   — | j                  |¬«       | j                  |¬«      \  }}| j                  j                  ||«       y)ag  
        Click UI element. 

        Args:
            timeout: seconds wait element show up
            offset: (xoff, yoff) default (0.5, 0.5) -> center

        The click method does the same logic as java uiautomator does.
        1. waitForExists 2. get VisibleBounds center 3. send click event

        Raises:
            UiObjectNotFoundError
        ©Útimeout)ÚoffsetN)Ú	must_waitÚcenterrr   Úclick)r<   rˆ   r‰   ÚxÚys        r@   rŒ   zUiObject.clickŠ   s:   € ð 	�‰˜wˆÔ'Ø�{‰{ &ˆ{Ó)‰ˆˆ1Ø�‰×Ñ˜1˜aÕ rB   c                 óœ   — | j                   }|j                  d«      xs |j                  d«      }|d   |d   |d   |d   f\  }}}}||||fS )z]
        Returns:
            left_top_x, left_top_y, right_bottom_x, right_bottom_y
        ÚvisibleBoundsr„   ÚleftÚtopÚrightÚbottom)r{   rH   )r<   r{   r„   ÚlxÚlyÚrxÚrys          r@   r„   zUiObject.bounds�   s`   € ð
 �y‰yˆØ—‘˜/Ó*Ò@¨d¯h©h°xÓ.@ˆØ ™¨°©¸¸w¹ÈÐPXÑIYÐY‰ˆˆB��BØ�B˜˜BÐÐrB   c                 óz   — | j                  «       \  }}}}|€d}|\  }}||z
  ||z
  }	}|||z  z   }
||	|z  z   }|
|fS )z¼
        Args:
            offset: optional, (x_off, y_off)
                (0, 0) means left-top, (0.5, 0.5) means middle(Default)
        Return:
            center point (x, y)
        ©ç      à?r›   )r„   )r<   r‰   r•   r–   r—   r˜   ÚxoffÚyoffÚwidthÚheightr�   rŽ   s               r@   r‹   zUiObject.center§   s`   € ð Ÿ™›‰ˆˆB��BØˆ>ØˆFØ‰
ˆˆdØ˜R™  b¡ˆvˆØ�˜‘ÑˆØ�˜$‘ÑˆØ�1ˆvˆrB   c                 ó¨   — | j                  «        |dkD  r=t        j                  |«       | j                  sy| j                  «        |dz  }|dkD  rŒ=y)zÕ
        Click until element is gone

        Args:
            maxretry (int): max click times
            interval (float): sleep time between clicks

        Return:
            Bool if element is gone
        r   Tr   F)Úclick_existsÚtimeÚsleeprx   )r<   ÚmaxretryÚintervals      r@   Ú
click_gonezUiObject.click_gone¸   sP   € ð 	×ÑÔØ˜ŠlÜ�J‰J�xÔ Ø—;’;ØØ×ÑÔØ˜‰MˆHð ˜‹lð rB   c                 óH   — 	 | j                  |¬«       y# t        $ r Y yw xY w)Nr‡   TF)rŒ   r   ©r<   rˆ   s     r@   r¡   zUiObject.click_existsÌ   s*   € ð	Ø�J‰J˜wˆJÔ'ØøÜ$ò 	Ùð	ús   ‚ •	! !Údurationc                 ó†   — | j                  |¬«       | j                  «       \  }}| j                  j                  |||«      S )z‚
        Args:
            duration (float): seconds of pressed
            timeout (float): seconds wait element show up
        r‡   )rŠ   r‹   rr   Ú
long_click)r<   r©   rˆ   r�   rŽ   s        r@   r«   zUiObject.long_clickÓ   s:   € ð 	�‰˜wˆÔ'Ø�{‰{‹}‰ˆˆ1Ø�|‰|×&Ñ& q¨!¨XÓ6Ð6rB   c                 ó6  ‡ ‡— |j                  dd«      }|j                  dd «      }‰ j                  |¬«       t        |dz  «      Št        |«      dk\  sd|v sd|v rˆ ˆfd	„} ||i |¤ŽS ‰ j                  j                  ‰ j                  t        d
i |¤Ž‰«      S )Nr©   r›   rˆ   r‡   éÈ   r   r�   rŽ   c                 ó’   •— ‰j                   j                  | |«      \  } }‰j                  j                  ‰j                  | |‰«      S rY   )rr   Úpos_rel2absrs   ÚdragTorM   )r�   rŽ   r<   Ústepss     €€r@   Údrag2xyz!UiObject.drag_to.<locals>.drag2xyè   s?   ø€ Ø—|‘|×/Ñ/°Ø01ó3‘��1à—|‘|×*Ñ*¨4¯=©=¸!¸QÀÓFÐFrB   r\   )rG   rŠ   ÚintÚlenrs   r°   rM   r   )r<   rO   r=   r©   rˆ   r²   r±   s   `     @r@   Údrag_tozUiObject.drag_toà   s“   ù€ Ø—:‘:˜j¨#Ó.ˆØ—*‘*˜Y¨Ó-ˆØ�‰˜wˆÔ'ä�H˜s‘NÓ#ˆÜˆt‹9˜Š>˜S F™]¨c°V©mõGñ
 ˜DÐ+ FÑ+Ð+Ø�|‰|×"Ñ" 4§=¡=´(Ñ2D¸VÑ2DÀeÓLÐLrB   c                 ó  — |dv sJ ‚| j                  «        | j                  }|j                  d«      xs |j                  d«      }|d   |d   |d   |d   f\  }}}}||z   dz  ||z   dz  }
}	|d	k(  r!| j                  j	                  |	|
|	||¬
«       y|dk(  r$| j                  j	                  |	|
|	|dz
  |¬
«       y|dk(  r!| j                  j	                  |	|
||
|¬
«       y|dk(  r$| j                  j	                  |	|
|dz
  |
|¬
«       yy)aZ  
        Performs the swipe action on the UiObject.
        Swipe from center

        Args:
            direction (str): one of ("left", "right", "up", "down")
            steps (int): move steps, one step is about 5ms
            percent: float between [0, 1]

        Note: percent require API >= 18
        # assert 0 <= percent <= 1
        )r‘   r“   ÚupÚdownr�   r„   r‘   r’   r“   r”   r   r·   )r±   r¸   r   N)rŠ   r{   rH   rr   Úswipe)r<   Ú	directionr±   r{   r„   r•   r–   r—   r˜   ÚcxÚcys              r@   r¹   zUiObject.swipeð   s$  € ð Ð;Ñ;Ð;Ð;à�‰ÔØ�y‰yˆØ—‘˜/Ó*Ò@¨d¯h©h°xÓ.@ˆØ ™¨°©¸¸w¹ÈÐPXÑIYÐY‰ˆˆB��BØ�r‘'˜a‘ " r¡'¨a¡ˆBˆØ˜ÒØ�L‰L×Ñ˜r 2 r¨2°UÐÕ;Ø˜&Ò Ø�L‰L×Ñ˜r 2 r¨2°©6¸ÐÕ?Ø˜&Ò Ø�L‰L×Ñ˜r 2 r¨2°UÐÕ;Ø˜'Ò!Ø�L‰L×Ñ˜r 2 r¨A¡v¨r¸ÐÕ?ð "rB   c                 óâ   ‡‡— | j                   j                  Šdˆfd„	Šˆfd„} ||«       ||«       ||«       ||«      f\  }}}	}
| j                  j                  | j                  |||	|
|«      S )z†
        perform two point gesture.
        Usage:
        d().gesture(startPoint1, startPoint2, endPoint1, endPoint2, steps)
        c                 ó&   •—  ‰| |«      \  } }| |dœS )N)r�   rŽ   r\   )r�   rŽ   Úrel2abss     €r@   ÚpointzUiObject.gesture.<locals>.point  s   ø€ Ù˜1˜a“=‰DˆAˆqØ Ñ#Ð#rB   c                 ó6   •— t        | «      t        k(  r ‰| Ž S | S rY   )ÚtypeÚtuple)ÚptrÀ   s    €r@   ÚctpzUiObject.gesture.<locals>.ctp  s   ø€ Ü!% b£¬UÒ!2‘5˜"�:Ð:¸Ð:rB   )r   r   )rr   r¯   rs   ÚgesturerM   )r<   Ústart1Ústart2Úend1Úend2r±   rÅ   Ús1Ús2Úe1Úe2rÀ   r¿   s              @@r@   rÆ   zUiObject.gesture  si   ù€ ð —,‘,×*Ñ*ˆõ	$ô	;ñ ˜V›¡c¨&£k±3°t³9¹cÀ$»iÐG‰ˆˆB��BØ�|‰|×#Ñ# D§M¡M°2°r¸2¸rÀ5ÓIÐIrB   c                 óP   — | j                   j                  | j                  ||«      S rY   )rs   ÚpinchInrM   ©r<   Úpercentr±   s      r@   Úpinch_inzUiObject.pinch_in!  s   € Ø�|‰|×#Ñ# D§M¡M°7¸EÓBÐBrB   c                 óP   — | j                   j                  | j                  ||«      S rY   )rs   ÚpinchOutrM   rÑ   s      r@   Ú	pinch_outzUiObject.pinch_out$  s   € Ø�|‰|×$Ñ$ T§]¡]°G¸UÓCÐCrB   c                 ó  — |€| j                   }|dz   }|r5	 | j                  j                  | j                  t	        |dz  «      |¬«      S 	 | j                  j                  | j                  t	        |dz  «      |¬«      S # t
        $ r7}t        j                  d|z  t        «       | j                  «       cY d}~S d}~ww xY w# t
        $ r8}t        j                  d|z  t        «       | j                  «        cY d}~S d}~ww xY w)zõ
        Wait until UI Element exists or gone

        Args:
            timeout (float): wait element timeout

        Example:
            d(text="Clock").wait()
            d(text="Settings").wait(exists=False) # wait until it's gone
        Né
   iè  )Úhttp_timeoutzwaitForExists readTimeout: %s)ru   rs   ÚwaitForExistsrM   r³   r
   ÚwarningsÚwarnÚRuntimeWarningrx   ÚwaitUntilGone)r<   rx   rˆ   Ú	http_waitÚes        r@   ÚwaitzUiObject.wait'  sü   € ð ˆ?Ø×'Ñ'ˆGØ˜b‘Lˆ	Ùð%Ø—|‘|×1Ñ1°$·-±-Ü25°gÀ±nÓ2EØ?Hð 2ó Jð Jð)Ø—|‘|×1Ñ1°$·-±-Ü25°gÀ±nÓ2EØ?Hð 2ó Jð Jøô ò %Ü—‘Ð=ÀÑAÜ,ô.à—{‘{“}Õ$ûð%ûô ò )Ü—‘Ð=ÀÑAÜ,ô.àŸ;™;›=Ð(Õ(ûð)ús;   —3B  Á3C Â 	C Â	,B;Â5C Â;C Ã	DÃ-C?Ã9DÃ?Dc                 óH   — |xs | j                   }| j                  d|¬«      S )z” wait until ui gone
        Args:
            timeout (float): wait element gone timeout

        Returns:
            bool if element gone
        F)rx   rˆ   )ru   rá   r¨   s     r@   Ú	wait_gonezUiObject.wait_goneH  s'   € ð Ò.˜T×.Ñ.ˆØ�y‰y ¨wˆyÓ7Ð7rB   c                 ól   — | j                  ||«      s"t        dt        | j                  «      ddœ«      ‚y)z3 wait and if not found raise UiObjectNotFoundError iþ‚ÿÿrá   )ÚcodeÚdataÚmethodN)rá   r   ÚstrrM   )r<   rx   rˆ   s      r@   rŠ   zUiObject.must_waitS  s1   € à�y‰y˜ Ô)Ü'°ÄÀTÇ]Á]ÓASÐ_eÑ(fÓgÐgð *rB   c                 ó$   — | j                  |«      S )z alias of set_text )Úset_text)r<   r   s     r@   Ú	send_keyszUiObject.send_keysX  s   € à�}‰}˜TÓ"Ð"rB   c                 óÀ   — | j                  |¬«       |s%| j                  j                  | j                  «      S | j                  j	                  | j                  |«      S ©Nr‡   )rŠ   rs   ÚclearTextFieldrM   ÚsetText)r<   r   rˆ   s      r@   rê   zUiObject.set_text\  sG   € Ø�‰˜wˆÔ'ÙØ—<‘<×.Ñ.¨t¯}©}Ó=Ð=à—<‘<×'Ñ'¨¯©°tÓ<Ð<rB   c                 óp   — | j                  |¬«       | j                  j                  | j                  «      S )z get text from field r‡   )rŠ   rs   ÚgetTextrM   r¨   s     r@   Úget_textzUiObject.get_textc  s)   € à�‰˜wˆÔ'Ø�|‰|×#Ñ# D§M¡MÓ2Ð2rB   c                 óH   — | j                  |¬«       | j                  d «      S rí   )rŠ   rê   r¨   s     r@   Ú
clear_textzUiObject.clear_texth  s   € Ø�‰˜wˆÔ'Ø�}‰}˜TÓ"Ð"rB   c                 ó~   — t        | j                   | j                  j                  «       j                  di |¤Ž«      S ©Nr\   )rp   rr   rM   r^   ra   rc   s     r@   ra   zUiObject.childl  s1   € Ü˜Ÿ™Ð&A d§m¡m×&9Ñ&9Ó&;×&AÑ&AÑ&KÀFÑ&KÓLÐLrB   c                 ó~   — t        | j                   | j                  j                  «       j                  di |¤Ž«      S rö   )rp   rr   rM   r^   re   rc   s     r@   re   zUiObject.siblingo  s1   € Ü˜Ÿ™Ð&C d§m¡m×&9Ñ&9Ó&;×&CÑ&CÑ&MÀfÑ&MÓNÐNrB   c                 ó  — d|v rC|j                  d«      }| j                  j                  | j                  t	        di |¤Ž||«      }n0| j                  j                  | j                  t	        di |¤Ž|«      }t        | j                  |«      S ©NÚallow_scroll_searchr\   )rG   rs   ÚchildByTextrM   r   rp   rr   ©r<   Útxtr=   rú   Únames        r@   Úchild_by_textzUiObject.child_by_textt  s   € Ø  FÑ*Ø"(§*¡*Ð-BÓ"CÐØ—<‘<×+Ñ+¨D¯M©M¼8Ñ;MÀfÑ;MØ,/Ð1DóF‰Dð —<‘<×+Ñ+¨D¯M©M¼8Ñ;MÀfÑ;MØ,/ó1ˆDä˜Ÿ™ dÓ+Ð+rB   c                 ó  — d|v rC|j                  d«      }| j                  j                  | j                  t	        di |¤Ž||«      }n0| j                  j                  | j                  t	        di |¤Ž|«      }t        | j                  |«      S rù   )rG   rs   ÚchildByDescriptionrM   r   rp   rr   rü   s        r@   Úchild_by_descriptionzUiObject.child_by_description~  s€   € à  FÑ*Ø"(§*¡*Ð-BÓ"CÐØ—<‘<×2Ñ2°4·=±=Ü3;Ñ3E¸fÑ3EÀsØ3FóH‰Dð —<‘<×2Ñ2°4·=±=Ü3;Ñ3E¸fÑ3EÀsóLˆDä˜Ÿ™ dÓ+Ð+rB   c                 óŠ   — t        | j                  | j                  j                  | j                  t        di |¤Ž|«      «      S rö   )rp   rr   rs   ÚchildByInstancerM   r   )r<   Úinstr=   s      r@   Úchild_by_instancezUiObject.child_by_instanceŠ  s;   € äØ�L‰LØ�L‰L×(Ñ(¨¯©¼Ñ8JÀ6Ñ8JØ)-ó/ó0ð 	0rB   c                 ó   — t        «       ‚rY   )ÚNotImplementedErrorrv   s    r@   ÚparentzUiObject.parent‘  s   € ô "Ó#Ð#rB   r1   c                 ó<  — t        | j                  t        «      rt        d«      ‚| j                  j	                  «       }|dk  r2d|d<   |d= | j
                  j                  |«      }||z   dk\  sJ ‚||z  }|j                  |«       t        | j                  |«      S )z0
        Raises:
            IndexError
        z=Index is not supported when UiObject returned by child_by_xxxr   r1   )
Ú
isinstancerM   rè   Ú
IndexErrorr^   rs   Úcountri   rp   rr   )r<   r1   rM   r  s       r@   Ú__getitem__zUiObject.__getitem__˜  sŸ   € ô
 �d—m‘m¤SÔ)ÜØOóð ð —=‘=×&Ñ&Ó(ˆØ�aŠ<Ø#$ˆH�ZÑ Ø˜Ð$Ø—L‘L×&Ñ& xÓ0ˆEØ˜eÑ# qÒ(Ð(Ð(Ø˜ÑˆHà× Ñ  Ô*Ü˜Ÿ™ hÓ/Ð/rB   c                 óL   — | j                   j                  | j                  «      S rY   )rs   r  rM   rv   s    r@   r  zUiObject.count¬  s   € à�|‰|×!Ñ! $§-¡-Ó0Ð0rB   c                 ó   — | j                   S rY   )r  rv   s    r@   Ú__len__zUiObject.__len__°  s   € Ø�z‰zÐrB   c                 óV   ‡‡— | | j                   cŠŠ G ˆˆfd„dt        «      } |«       S )Nc                   ó$   •— e Zd Zd„ Zˆ ˆfd„ZeZy)úUiObject.__iter__.<locals>.Iterc                 ó   — d| _         y )Nrg   )r0   rv   s    r@   rA   z(UiObject.__iter__.<locals>.Iter.__init__·  s	   € Ø�•
rB   c                 ó~   •— | xj                   dz  c_         | j                   ‰k  r‰| j                      S t        «       ‚)Nr   )r0   ÚStopIteration)r<   ÚlengthÚobjs    €€r@   Únextz$UiObject.__iter__.<locals>.Iter.nextº  s2   ø€ Ø—
’
˜a‘•
Ø—:‘: Ò&Ø˜tŸz™z™?Ð*ä'›/Ð)rB   N)rj   rk   rl   rA   r  Ú__next__)r  r  s   €€r@   ÚIterr  ¶  s   ø„ ò õ*ð ‰HrB   r  )r  Úobject)r<   r  r  r  s     @@r@   Ú__iter__zUiObject.__iter__³  s'   ù€ Ø˜DŸJ™JˆˆˆV÷	”6ô 	ñ ‹vˆrB   c                 ó.   — d„ } | j                   |fi |¤ŽS )Nc                 óH   — t        | |«      \  }}}}||k  r|d   | d   z
  S dS ©Nr‘   r“   rg   ©r   ©Úrect1Úrect2r‘   r’   r“   r”   s         r@   Ú	onrightofz!UiObject.right.<locals>.onrightofÆ  ó5   € Ü'0°¸Ó'>Ñ$ˆD�#�u˜fØ58¸6²\�5˜‘= 5¨¡>Ñ1ÐIÀrÐIrB   ©Ú_UiObject__view_beside)r<   r=   r&  s      r@   r“   zUiObject.rightÅ  s"   € ò	Jð "ˆt×!Ñ! )Ñ6¨vÑ6Ð6rB   c                 ó.   — d„ } | j                   |fi |¤ŽS )Nc                 óH   — t        | |«      \  }}}}||k  r| d   |d   z
  S dS r!  r"  r#  s         r@   ÚonleftofzUiObject.left.<locals>.onleftofÍ  r'  rB   r(  )r<   r=   r,  s      r@   r‘   zUiObject.leftÌ  s"   € ò	Jð "ˆt×!Ñ! (Ñ5¨fÑ5Ð5rB   c                 ó.   — d„ } | j                   |fi |¤ŽS )Nc                 óH   — t        | |«      \  }}}}||k  r| d   |d   z
  S dS ©Nr’   r”   rg   r"  r#  s         r@   ÚabovezUiObject.up.<locals>.aboveÔ  ó5   € Ü'0°¸Ó'>Ñ$ˆD�#�u˜fØ59¸E²\�5˜‘< %¨¡/Ñ1ÐIÀrÐIrB   r(  )r<   r=   r0  s      r@   r·   zUiObject.upÓ  ó"   € ò	Jð "ˆt×!Ñ! %Ñ2¨6Ñ2Ð2rB   c                 ó.   — d„ } | j                   |fi |¤ŽS )Nc                 óH   — t        | |«      \  }}}}||k  r|d   | d   z
  S dS r/  r"  r#  s         r@   ÚunderzUiObject.down.<locals>.underÛ  r1  rB   r(  )r<   r=   r5  s      r@   r¸   zUiObject.downÚ  r2  rB   c                 óP  — | j                   d   }d\  }}t        | j                  t        di |¤Ž«      j	                  «       }t        |«      D ]V  \  }} |||d   «      }	|	dk\  sŒ|dk  s|	|k  sŒ#t        di |¤Ž}
|
j                  |«       |	t        | j                  |
«      }}ŒX |S )Nr„   )rg   Nr   r\   )r{   rp   rr   r   r   Ú	enumerateri   )r<   Úonsideofr=   r„   Úmin_distÚfoundr   r0   r{   ÚdistÚui_selectors              r@   Ú__view_besidezUiObject.__view_besideá  s­   € Ø—‘˜8Ñ$ˆØ"‰ˆ�%Ü˜TŸ\™\¬8Ñ+=°fÑ+=Ó>×HÑHÓJˆ	Ü$ YÓ/ò 	L‰KˆE�4Ù˜F D¨¡NÓ3ˆDØ�q‹y˜h¨šl¨d°X«oÜ&Ñ0¨Ñ0�Ø×+Ñ+¨EÔ2Ø"&¬°·±¸{Ó(K˜%‘ð	Lð ˆrB   c                 óh   ‡‡— | j                   Š| j                  Š G ˆˆfd„dt        «      } |«       S )úØ
        Args:
            dimention (str): one of "vert", "vertically", "vertical", "horiz", "horizental", "horizentally"
            action (str): one of "forward", "backward", "toBeginning", "toEnd", "to"
        c                   ó(   •— e Zd Zd„ Zd„ Zdˆ ˆfd„	Zy)úUiObject.fling.<locals>._Flingc                 ó    — d| _         d| _        y ©NTÚforward©Ú	_verticalÚactionrv   s    r@   rA   z'UiObject.fling.<locals>._Fling.__init__ø  ó   € Ø!%�”Ø'�•rB   c                 ól   — |dv r	d| _         | S |dv r	d| _         | S |dv r	|| _        | S t        d|z  «      ‚©N)ÚhorizÚ
horizentalÚhorizentallyF)ÚvertÚ
verticallyÚverticalT)rD  ÚbackwardÚtoBeginningÚtoEndÚtozinvalid prop %s©rF  rG  Ú
ValueError©r<   rN   s     r@   Ú__getattr__z*UiObject.fling.<locals>._Fling.__getattr__ü  óX   € ØÐAÑAØ%*�D”NØ�KØÐ<Ñ<Ø%)�D”NØ�KØð ñ ð #&�D”KØ�KÜ Ð!2°SÑ!8Ó9Ð9rB   c                 ób  •— | j                   dk(  r‰j                  ‰| j                  «      S | j                   dk(  r‰j                  ‰| j                  «      S | j                   dk(  r‰j	                  ‰| j                  |«      S | j                   dk(  r‰j                  ‰| j                  |«      S y )NrD  rQ  rR  rS  )rG  ÚflingForwardrF  ÚflingBackwardÚflingToBeginningÚ
flingToEnd)r<   Ú
max_swipesr=   rs   rM   s      €€r@   Ú__call__z'UiObject.fling.<locals>._Fling.__call__
  s¤   ø€ Ø—;‘; )Ò+Ø"×/Ñ/°¸$¿.¹.ÓIÐIØ—[‘[ JÒ.Ø"×0Ñ0°¸4¿>¹>ÓJÐJØ—[‘[ MÒ1Ø"×3Ñ3°H¸d¿n¹nØ4>ó@ð @à—[‘[ GÒ+Ø"×-Ñ-¨h¸¿¹Ø.8ó:ð :ð ,rB   N)éô  )rj   rk   rl   rA   rX  r`  ©rs   rM   s   €€r@   Ú_FlingrA  ÷  s   ø„ ò(ò:÷
:rB   rc  )rs   rM   r  )r<   rc  rs   rM   s     @@r@   ÚflingzUiObject.flingí  s,   ù€ ð —,‘,ˆØ—=‘=ˆ÷	:”Vô 	:ñ> ‹xˆrB   c                 óh   ‡‡— | j                   Š| j                  Š G ˆˆfd„dt        «      } |«       S )r?  c                   ó,   •— e Zd Zd„ Zd„ Zedfˆ ˆfd„	Zy)ú UiObject.scroll.<locals>._Scrollc                 ó    — d| _         d| _        y rC  rE  rv   s    r@   rA   z)UiObject.scroll.<locals>._Scroll.__init__#  rH  rB   c                 ól   — |dv r	d| _         | S |dv r	d| _         | S |dv r	|| _        | S t        d|z  «      ‚rJ  rU  rW  s     r@   rX  z,UiObject.scroll.<locals>._Scroll.__getattr__'  rY  rB   ra  c                 ó¶  •— | j                   dv r;| j                   dk(  r‰j                  n‰j                  } |‰| j                  |«      S | j                   dk(  r‰j	                  ‰| j                  ||«      S | j                   dk(  r‰j                  ‰| j                  ||«      S | j                   dk(  r&‰j                  ‰t        di |¤Ž| j                  «      S y )N)rD  rQ  rD  rR  rS  rT  r\   )rG  ÚscrollForwardÚscrollBackwardrF  ÚscrollToBeginningÚscrollToEndÚscrollTor   )r<   r±   r_  r=   rç   rs   rM   s        €€r@   r`  z)UiObject.scroll.<locals>._Scroll.__call__5  sÕ   ø€ à—;‘;Ð"9Ñ9Ø6:·k±kÀYÒ6N˜W×2Ò2ÐT[×TjÑTj�FÙ! (¨D¯N©N¸EÓBÐBØ—[‘[ MÒ1Ø"×4Ñ4°X¸t¿~¹~Ø5?ÀóHð Hà—[‘[ GÒ+Ø"×.Ñ.¨x¸¿¹Ø/9¸5óBð Bà—[‘[ DÒ(Ø"×+Ñ+¨H´hÑ6HÀÑ6HØ,0¯N©Nó<ð <ð )rB   N)rj   rk   rl   rA   rX  r	   r`  rb  s   €€r@   Ú_Scrollrg  "  s   ø„ ò(ò:ð &2¸c÷ <rB   rp  )rM   rs   r  )r<   rp  rs   rM   s     @@r@   ÚscrollzUiObject.scroll  s.   ù€ ð —=‘=ˆØ—,‘,ˆ÷ 	<”fô  	<ñD ‹yÐrB   rY   )NN)rš   )rØ   g      ð?)r   )r›   N)rØ   )éd   )rr  é2   )TN)8rj   rk   rl   r   rA   Úpropertyru   rx   r{   r   r   r   r   r³   r   r‚   rŒ   r   r„   r‹   r¦   Úboolr¡   Úfloatr«   rµ   r¹   rÆ   rÓ   rÖ   rá   rã   rŠ   rë   rê   rò   rô   ra   re   Úchild_selectorÚfrom_parentrÿ   r  r  r	  r  r  r  r  r“   r‘   r·   r¸   r)  rd  rq  r\   rB   r@   rp   rp   n   s•  „ ð'¨(ó 'ð
 ñ)ó ð)ð ñó ðð ñ3ó ð3ðA˜4 ™:ó Añ& X¨c¡]ð &¸e¿k¹kó &ó!ð& ˜˜c 3¨¨SÐ0Ñ1ó  óó"ñ(¨ó ñ7 5ó 7òMó @ó>Jó$CóDó)óB	8óhò
#ó=ó3ó
#òMòOð #(¨Ð€N�Kò,ò
,ò0ò$ð0 Có 0ð( ñ1ó ð1òòò$7ò6ò3ò3ò
ð ñ(ó ð(ðT ñ+ó ñ+rB   rp   )Úloggingr¢   rÛ   Útypingr   r   r   r   ÚPILr   r   Úuiautomator2._protor	   Úuiautomator2.exceptionsr
   r   Úuiautomator2.utilsr   r   r]   r   r  rp   r\   rB   r@   ú<module>r     s@   ðÛ Û Û ß .Ó .å Ý å ,ß Dß 0ô]!ˆtô ]!ô@Vˆvõ VrB   