Ë
    cQbjáX  ã                   ó
  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  e j0                  e«      Zi ej6                  d“ej8                  d“ej:                  d“ej<                  d“ej>                  d“ej@                  d“ejB                  d“ejD                  d“ejF                  d“ejH                  d“ejJ                  d“ejL                  d“ejN                  d“ejP                  d“ejR                  d“ejT                  d“ejV                  d“i ejX                  d“ejZ                  d“ej\                  d“ej^                  d“ej`                  d “ejb                  d!“ejd                  d"“ejf                  d#“ejh                  d$“ejj                  d%“ejl                  d&“ejn                  d'“ejp                  d(“ejr                  d)“ejt                  d*“ejv                  d+“ejx                  d,“¥i ejz                  d-“ej|                  d.“ej~                  d/“ej€                  d0“ej‚                  d1“ej„                  d2“ej†                  d3“ejˆ                  d4“ejŠ                  d5“ejŒ                  d6“ejŽ                  d7“ej�                  d8“ej’                  d9“ej”                  d:“ej–                  d;“ej˜                  d<“ejš                  d=“¥i ejœ                  d>“ejž                  d?“ej                   d@“ej¢                  dA“ej¤                  dB“ej¦                  dC“ej¨                  dD“ejª                  dE“ej¬                  dF“ej®                  dG“ej°                  dH“ej²                  dI“ej´                  dJ“ej¶                  dK“ej¸                  dL“ejº                  dM“ej¼                  dN“¥i ej¾                  dO“ejÀ                  dP“ejÂ                  dQ“ejÄ                  dR“ejÆ                  dS“ejÈ                  dT“ejÊ                  dU“ejÌ                  dV“ejÎ                  dW“ejÐ                  dX“ejÒ                  dY“ejÔ                  dZ“ejÖ                  d[“ejØ                  d\“ejÚ                  d]“ejÜ                  d^“ejÞ                  d_“¥ejà                  d`ejâ                  daejä                  dbejæ                  dcejè                  ddi¥Zu G de„ df«      Zvy)gé    N)Ú	b64encode)Úparse)ÚunquoteÚurlparse)Ú__version__)ÚWebDriverException)Úutils)ÚClientConfig)ÚCommand)Ú	ErrorCode)ÚPOSTz/session)ÚDELETEz/session/$sessionId)ÚGETú/session/$sessionId/window)r   z"/session/$sessionId/window/handles)r   ú/session/$sessionId/url)r   z/session/$sessionId/forward)r   z/session/$sessionId/back)r   z/session/$sessionId/refresh)r   z /session/$sessionId/execute/sync)r   z!/session/$sessionId/execute/async)r   r   )r   z/session/$sessionId/title)r   z/session/$sessionId/source)r   z/session/$sessionId/screenshot)r   z*/session/$sessionId/element/$id/screenshot)r   z/session/$sessionId/element)r   z/session/$sessionId/elements)r   z"/session/$sessionId/element/active)r   z'/session/$sessionId/element/$id/element)r   z(/session/$sessionId/element/$id/elements)r   z%/session/$sessionId/element/$id/click)r   z%/session/$sessionId/element/$id/clear)r   z$/session/$sessionId/element/$id/text)r   z%/session/$sessionId/element/$id/value)r   z$/session/$sessionId/element/$id/name)r   z(/session/$sessionId/element/$id/selected)r   z'/session/$sessionId/element/$id/enabled)r   z$/session/$sessionId/element/$id/rect)r   z//session/$sessionId/element/$id/attribute/$name)r   z./session/$sessionId/element/$id/property/$name)r   z,/session/$sessionId/element/$id/computedrole)r   z-/session/$sessionId/element/$id/computedlabel)r   z&/session/$sessionId/element/$id/shadow)r   z,/session/$sessionId/shadow/$shadowId/element)r   z-/session/$sessionId/shadow/$shadowId/elements)r   ú/session/$sessionId/cookie)r   r   )r   ú /session/$sessionId/cookie/$name)r   r   )r   r   )r   z/session/$sessionId/frame)r   z /session/$sessionId/frame/parent)r   r   )r   z/session/$sessionId/window/new)r   r   )r   z1/session/$sessionId/element/$id/css/$propertyName)r   z!/session/$sessionId/execute_async)r   ú/session/$sessionId/timeouts)r   r   )r   z!/session/$sessionId/alert/dismiss)r   z /session/$sessionId/alert/accept)r   ú/session/$sessionId/alert/text)r   r   )r   ú/session/$sessionId/actions)r   r   )r   ú/session/$sessionId/window/rect)r   r   )r   z#/session/$sessionId/window/maximize)r   ú/session/$sessionId/orientation)r   r   )r   ú&/session/$sessionId/network_connection)r   r   )r   z/session/$sessionId/se/log)r   z /session/$sessionId/se/log/types)r   ú/session/$sessionId/context)r   z/session/$sessionId/contexts)r   r   )r   z%/session/$sessionId/window/fullscreen)r   z#/session/$sessionId/window/minimize)r   z/session/$sessionId/print)r   z*/session/$sessionId/webauthn/authenticator)r   z;/session/$sessionId/webauthn/authenticator/$authenticatorId)r   zF/session/$sessionId/webauthn/authenticator/$authenticatorId/credential)r   úG/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials)r   zU/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials/$credentialId)r   r   )r   z>/session/$sessionId/webauthn/authenticator/$authenticatorId/uv)r   z/session/$sessionId/se/file)r   ú/session/$sessionId/se/files)r   r   )r   r   )r   z/session/$sessionId/se/event)r   z"/session/$sessionId/fedcm/gettitle)r   z'/session/$sessionId/fedcm/getdialogtype)r   z%/session/$sessionId/fedcm/accountlist)r   z+/session/$sessionId/fedcm/clickdialogbutton)r   z&/session/$sessionId/fedcm/canceldialog)r   z'/session/$sessionId/fedcm/selectaccount)r   z)/session/$sessionId/fedcm/setdelayenabled)r   z'/session/$sessionId/fedcm/resetcooldownc                   ó$  — e Zd ZU dZdZedz  ed<   ddlZddlZddl	Z	ej                  «       Zdej                  v rej                  d«      ne	j                  «       Zeed<   ej$                  Zedk(  rdZdZd	e› d
e› d�Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed&d„«       Zd„ Z d„ Z!d„ Z"	 	 	 	 	 	 d'dedz  de#de#de#dz  de$dz  dedz  fd„Z%i Z&e$eef   ed<   d„ Z'defd „Z(d!„ Z)d(d"e$fd#„Z*d$„ Z+d)d"e$ez  fd%„Z,y)*ÚRemoteConnectionz¹A connection with the Remote WebDriver server.

    Communicates with the server using the WebDriver wire protocol:
    https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
    NÚbrowser_namer   ÚREQUESTS_CA_BUNDLEÚ_client_configÚdarwinÚmacz	selenium/z	 (python ú)c                 ó   — | j                   S ©N)r!   ©Úselfs    ú^/var/www/html/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.pyÚclient_configzRemoteConnection.client_config§   s   € à×"Ñ"Ð"ó    c                 óf   — t        j                  dt        d¬«       | j                  j                  S )zÕReturns timeout value in seconds for all http requests made to the Remote Connection.

        Returns:
            Timeout value in seconds for all http requests made to the
            Remote Connection
        zWget_timeout() in RemoteConnection is deprecated, get timeout from client_config insteadé   ©Ú
stacklevel©ÚwarningsÚwarnÚDeprecationWarningr!   Útimeout©Úclss    r)   Úget_timeoutzRemoteConnection.get_timeout«   s-   € ô 	�‰ØeÜØõ	
ð
 ×!Ñ!×)Ñ)Ð)r+   c                 ó^   — t        j                  dt        d¬«       || j                  _        y)zuOverride the default timeout.

        Args:
            timeout: timeout value for http requests in seconds
        zUset_timeout() in RemoteConnection is deprecated, set timeout in client_config insteadr-   r.   Nr0   )r6   r4   s     r)   Úset_timeoutzRemoteConnection.set_timeoutº   s)   € ô 	�‰ØcÜØõ	
ð
 &-ˆ×ÑÕ"r+   c                 óp   — t        j                  dt        d¬«       | j                  j	                  «        y)zAReset the http request timeout to socket._GLOBAL_DEFAULT_TIMEOUT.z_reset_timeout() in RemoteConnection is deprecated, use reset_timeout() in client_config insteadr-   r.   N)r1   r2   r3   r!   Úreset_timeoutr5   s    r)   r;   zRemoteConnection.reset_timeoutÈ   s-   € ô 	�‰ØmÜØõ	
ð
 	×Ñ×(Ñ(Õ*r+   c                 óf   — t        j                  dt        d¬«       | j                  j                  S )a-  Returns paths of the .pem encoded certificate to verify connection to command executor.

        Returns:
            Paths of the .pem encoded certificate to verify connection to
            command executor. Defaults to certifi.where() or
            REQUESTS_CA_BUNDLE env variable if set.
        zhget_certificate_bundle_path() in RemoteConnection is deprecated, get ca_certs from client_config insteadr-   r.   ©r1   r2   r3   r!   Úca_certsr5   s    r)   Úget_certificate_bundle_pathz,RemoteConnection.get_certificate_bundle_pathÒ   s-   € ô 	�‰ØvÜØõ	
ð
 ×!Ñ!×*Ñ*Ð*r+   c                 ó^   — t        j                  dt        d¬«       || j                  _        y)zéSet the path to the certificate bundle for verifying command executor connection.

        Can also be set to None to disable certificate validation.

        Args:
            path: path of a .pem encoded certificate chain.
        zfset_certificate_bundle_path() in RemoteConnection is deprecated, set ca_certs in client_config insteadr-   r.   Nr=   )r6   Úpaths     r)   Úset_certificate_bundle_pathz,RemoteConnection.set_certificate_bundle_pathâ   s)   € ô 	�‰ØtÜØõ	
ð
 '+ˆ×ÑÕ#r+   c                 ó�  — dd| j                   dœ}|j                  rmt        j                  dd¬«       t	        |j                  › d|j
                  › �j                  «       «      }|j                  dd	|j                  «       › �i«       |r|j                  d
di«       | j                  r|j                  | j                  «       |S )z§Get headers for remote request.

        Args:
            parsed_url: The parsed url
            keep_alive: Is this a keep-alive connection (default: False)
        zapplication/jsonzapplication/json;charset=UTF-8)ÚAcceptúContent-Typez
User-AgentzREmbedding username and password in URL could be insecure, use ClientConfig insteadr-   r.   ú:ÚAuthorizationzBasic Ú
Connectionz
keep-alive)
Ú
user_agentÚusernamer1   r2   r   ÚpasswordÚencodeÚupdateÚdecodeÚextra_headers)r6   Ú
parsed_urlÚ
keep_aliveÚheadersÚbase64strings        r)   Úget_remote_connection_headersz.RemoteConnection.get_remote_connection_headersò   s¹   € ð )Ø<ØŸ.™.ñ
ˆð ×ÒÜ�M‰MØdÐqrõô %¨
×(;Ñ(;Ð'<¸A¸j×>QÑ>QÐ=RÐ%S×%ZÑ%ZÓ%\Ó]ˆLØ�N‰N˜O¨v°l×6IÑ6IÓ6KÐ5LÐ-MÐNÔOáØ�N‰N˜L¨,Ð7Ô8à×ÒØ�N‰N˜3×,Ñ,Ô-àˆr+   c                 ób   — t        | j                  «      }|j                  r|j                  ryy y )NT)r   Ú
_proxy_urlrJ   rK   )r(   rP   s     r)   Ú_identify_http_proxy_authz*RemoteConnection._identify_http_proxy_auth  s,   € Ü˜dŸo™oÓ.ˆ
Ø×Ò :×#6Ò#6Øð $7Ðr+   c                 óº   — t        | j                  «      }|j                  › d|j                  › d|j                  › �}|j
                  › d|j                  › �}||fS )Nz://rF   )r   rV   ÚschemeÚhostnameÚportrJ   rK   )r(   rP   Úproxy_without_authÚauths       r)   Ú_separate_http_proxy_authz*RemoteConnection._separate_http_proxy_auth  sc   € Ü˜dŸo™oÓ.ˆ
Ø *× 1Ñ 1Ð2°#°j×6IÑ6IÐ5JÈ!ÈJÏOÉOÐK\Ð]ÐØ×%Ñ%Ð& a¨
×(;Ñ(;Ð'<Ð=ˆØ! 4Ð'Ð'r+   c                 óN  — d| j                   j                  i}|j                  | j                   j                  j	                  di «      «       | j                   j
                  r3d|d<   t        j                  t        j                  j                  «       n4| j                   j                  rd|d<   | j                   j                  |d<   | j                  r»| j                  j                  «       j                  d«      rdd	lm}  || j                  fi |¤ŽS | j!                  «       rI| j#                  «       \  | _        | _        t        j&                  t)        | j$                  «      ¬
«      |d<   t        j*                  | j                  fi |¤ŽS t        j,                  di |¤ŽS )Nr4   Úinit_args_for_pool_managerÚ	CERT_NONEÚ	cert_reqsÚCERT_REQUIREDr>   Úsockr   )ÚSOCKSProxyManager)Úproxy_basic_authÚproxy_headers© )r!   r4   rM   r`   ÚgetÚignore_certificatesÚurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningr>   rV   ÚlowerÚ
startswithÚurllib3.contrib.socksre   rW   r^   Ú_basic_proxy_authÚmake_headersr   ÚProxyManagerÚPoolManager)r(   Úpool_manager_init_argsre   s      r)   Ú_get_connection_managerz(RemoteConnection._get_connection_manager  s`  € Ø"+¨T×-@Ñ-@×-HÑ-HÐ!IÐØ×%Ñ%Ø×Ñ×:Ñ:×>Ñ>Ð?[Ð]_Ó`ô	
ð ×Ñ×2Ò2Ø2=Ð" ;Ñ/Ü×$Ñ$¤W×%7Ñ%7×%NÑ%NÕOØ× Ñ ×)Ò)Ø2AÐ" ;Ñ/Ø15×1DÑ1D×1MÑ1MÐ" :Ñ.à�?Š?Ø�‰×$Ñ$Ó&×1Ñ1°&Ô9ÝCá(¨¯©ÑSÐ<RÑSÐSØ×-Ñ-Ô/Ø:>×:XÑ:XÓ:ZÑ7�” Ô!7Ü:A×:NÑ:NÜ%,¨T×-CÑ-CÓ%Dô;Ð& Ñ7ô ×'Ñ'¨¯©ÑRÐ;QÑRÐRä×"Ñ"Ñ<Ð%;Ñ<Ð<r+   Úremote_server_addrrQ   Úignore_proxyrj   r`   r*   c                 ót  — |r|| _         n"|rt        ||||¬«      | _         nt        d«      ‚| j                   j                  t        _        | j                   j                  t        _        | j                   t        _         | j                   j                  xs t        j                  t        _        | j                   j                  xs t        j                  t        _	        |rt        j                  dt        d¬«       |st        j                  dt        d¬«       |rt        j                  dt        d¬«       |rt        j                  dt        d¬«       |rd | _        n| j                   j                  «       | _        | j                   j                  r| j!                  «       | _        t$        | _        y )	N)rx   rQ   rj   r`   z;Must provide either 'remote_server_addr' or 'client_config'z\setting remote_server_addr in RemoteConnection() is deprecated, set in client_config insteadr-   r.   zTsetting keep_alive in RemoteConnection() is deprecated, set in client_config insteadz]setting ignore_certificates in RemoteConnection() is deprecated, set in client_config insteadzdsetting init_args_for_pool_manager in RemoteConnection() is deprecated, set in client_config instead)r!   r
   r   r4   r   Ú_timeoutr>   Ú	_ca_certsrO   rI   r1   r2   r3   rV   Úget_proxy_urlrQ   rw   Ú_connÚremote_commandsÚ	_commands)r(   rx   rQ   ry   rj   r`   r*   s          r)   Ú__init__zRemoteConnection.__init__5  sd  € ñ Ø"/ˆDÕÙÜ".Ø#5Ø%Ø$7Ø+Eô	#ˆDÕô %Ð%bÓcÐcð %)×$7Ñ$7×$?Ñ$?ÔÔ!Ø%)×%8Ñ%8×%AÑ%AÔÔ"Ø*.×*=Ñ*=ÔÔ'Ø)-×)<Ñ)<×)JÑ)JÒ)lÔN^×NlÑNlÔÔ&Ø&*×&9Ñ&9×&DÑ&DÒ&cÔHX×HcÑHcÔÔ#áÜ�M‰MØnÜ"Øõñ Ü�M‰MØfÜ"Øõñ Ü�M‰MØoÜ"Øõñ &Ü�M‰MØvÜ"Øõñ Ø"ˆD�Oà"×1Ñ1×?Ñ?ÓAˆDŒOà×Ñ×)Ò)Ø×5Ñ5Ó7ˆDŒJÜ(ˆ�r+   Úextra_commandsc                 ó&   — ||f| j                   |<   y)zRegister a new command.N)r€   )r(   ÚnameÚmethodÚurls       r)   Úadd_commandzRemoteConnection.add_commandx  s   € à &¨˜}ˆ�‰�tÒr+   r„   c                 ó8   — | j                   j                  |«      S )z Retrieve a command if it exists.)r€   ri   )r(   r„   s     r)   Úget_commandzRemoteConnection.get_command|  s   € à�~‰~×!Ñ! $Ó'Ð'r+   c                 óz  — | j                   j                  |«      xs | j                  j                  |«      }|€
J d|› �«       ‚|d   }t        j                  |«      j                  |«      }|j                  d«      D �ch c]  }|j                  d«      sŒ|dd ’Œ }}t        |t        «      r|r
|D ]  }||= Œ t        j                  |«      }| j                  j                  › |› �}	| j                  |«      }
t        j!                  d|d   |	t#        |
«      «       | j%                  |d   |	|¬«      S c c}w )	aq  Send a command to the remote server.

        Any path substitutions required for the URL mapped to the command should be
        included in the command parameters.

        Args:
            command: A string specifying the command to execute.
            params: A dictionary of named parameters to send with the command as
                its JSON payload.
        NzUnrecognised command é   ú/ú$z%s %s %sr   )Úbody)r€   ri   r‚   ÚstringÚTemplateÚ
substituteÚsplitrp   Ú
isinstanceÚdictr	   Ú	dump_jsonr!   rx   Ú_trim_large_entriesÚLOGGERÚdebugÚstrÚ_request)r(   ÚcommandÚparamsÚcommand_infoÚpath_stringrA   ÚwordÚsubstitute_paramsÚdatar†   Útrimmeds              r)   ÚexecutezRemoteConnection.execute€  s/  € ð —~‘~×)Ñ)¨'Ó2ÒV°d×6IÑ6I×6MÑ6MÈgÓ6VˆØÐ'ÐJÐ+@ÀÀ	Ð)JÓJÐ'Ø" 1‘oˆÜ�‰˜{Ó+×6Ñ6°vÓ>ˆØ2=×2CÑ2CÀCÓ2HÖa¨$ÈDÏOÉOÐ\_ÕL`˜T ! "šXÐaÐÐaÜ�fœdÔ#Ñ(9Ø)ò !�Ø˜4‘Lð!ä�‰˜vÓ&ˆØ×$Ñ$×7Ñ7Ð8¸¸Ð?ˆØ×*Ñ*¨6Ó2ˆÜ�‰�Z ¨a¡°#´s¸7³|ÔDØ�}‰}˜\¨!™_¨c¸ˆ}Ó=Ð=ùò bs   ÂD8ÂD8Úreturnc                 óº  — t        j                  |«      }| j                  || j                  j                  «      }| j                  j                  «       }|r|j                  |«       |r|dvrd}| j                  j                  rA| j                  j                  ||||| j                  j                  ¬«      }|j                  }nQ| j                  «       }	|	5 }
|
j                  ||||| j                  j                  ¬«      }ddd«       j                  }|j                  j                  d«      }t        j                  d|j                  ||j                   «       	 d|cxk  rdk  rTn nQ| j#                  d|j                   j%                  d	d«      «      t        j                  d
«       |j'                  «        S |dk(  r*|ddœt        j                  d
«       |j'                  «        S |dk\  rF||s|j(                  n|j+                  «       dœt        j                  d
«       |j'                  «        S g }|j                   j%                  dd«      r+|j                   j%                  dd«      j-                  d«      }t/        |D �cg c]  }|j1                  d«      ‘Œ c}«      sT	 t3        j4                  |j+                  «       «      }d|vrd|d<   |t        j                  d
«       |j'                  «        S d|dœ}|t        j                  d
«       |j'                  «        S # 1 sw Y   �Œ(xY wc c}w # t6        $ rj d|cxk  rdk  rn nt8        j:                  }nt8        j<                  }||j+                  «       dœcY t        j                  d
«       |j'                  «        S w xY w# t        j                  d
«       |j'                  «        w xY w)aq  Send an HTTP request to the remote server.

        Args:
            method: A string for the HTTP method to send the request with.
            url: A string for the URL to send the request to.
            body: A string for request body. Ignored unless method is POST or PUT.

        Returns:
            A dictionary with the server's parsed JSON response.
        )r   ÚPUTN)rŽ   rR   r4   zUTF-8z1Remote response: status=%s | data=%s | headers=%si,  i0  r   ÚlocationzFinished Requesti‘  zAuthorization Required)ÚstatusÚvaluei�  rE   ú;z	image/pngéÇ   r©   r   )r   r   rT   r!   rQ   Úget_auth_headerrM   r~   Úrequestr4   r¨   rw   r¡   rN   r—   r˜   rR   rš   ri   ÚcloseÚreasonÚstripr’   Úanyrp   r	   Ú	load_jsonÚ
ValueErrorr   ÚSUCCESSÚUNKNOWN_ERROR)r(   r…   r†   rŽ   rP   rR   Úauth_headerÚresponseÚ
statuscodeÚconnÚhttpr¡   Úcontent_typeÚxr¨   s                  r)   rš   zRemoteConnection._request™  s4  € ô —^‘^ CÓ(ˆ
Ø×4Ñ4°ZÀ×ATÑAT×A_ÑA_Ó`ˆØ×)Ñ)×9Ñ9Ó;ˆáØ�N‰N˜;Ô'á�F /Ñ1ØˆDà×Ñ×)Ò)Ø—z‘z×)Ñ)¨&°#¸DÈ'Ð[_×[nÑ[n×[vÑ[vÐ)ÓwˆHØ!Ÿ™‰Jà×/Ñ/Ó1ˆDØð v˜ØŸ<™<¨°¸$ÈÐY]×YlÑYl×YtÑYt˜<Óu�÷và!Ÿ™ˆJØ�}‰}×#Ñ# GÓ,ˆÜ�‰ÐHÈ(Ï/É/Ð[_Ðai×aqÑaqÔrð	Ø�jÔ& 3Õ&Ø—}‘} U¨H×,<Ñ,<×,@Ñ,@ÀÈTÓ,RÓSô4 �L‰LÐ+Ô,Ø�N‰NÕð5 ˜SÒ Ø",Ð7OÑPô0 �L‰LÐ+Ô,Ø�N‰NÕð1 ˜SÒ Ø",Éd°x·²ÐX\×XbÑXbÓXdÑeô, �L‰LÐ+Ô,Ø�N‰NÕð- ˆLØ×Ñ×#Ñ# N°DÔ9Ø'×/Ñ/×3Ñ3°NÀDÓI×OÑOÐPSÓT�Ü¸<ÖH°a˜Ÿ™ [Õ1ÒHÔIðEÜ Ÿ?™?¨4¯:©:«<Ó8�Dð  $Ñ&Ø$(�D˜‘MØô �L‰LÐ+Ô,Ø�N‰NÕð	  ¨$Ñ/ˆDØä�L‰LÐ+Ô,Ø�N‰NÕ÷Evñ vüò Iøô "ò EØ˜ZÔ-¨#Õ-Ü!*×!2Ñ!2™ä!*×!8Ñ!8˜Ø&,°t·z±z³|ÑDÑDô �L‰LÐ+Ô,Ø�N‰NÕð!Eûô �L‰LÐ+Ô,Ø�N‰NÕúsh   Ã+L+Å!9N3 Ç 	N3 Ç/%N3 È:AN3 ÊL8Ê$N3 Ê,#L= Ë
N3 Ë?N3 Ì+L5Ì8N3 Ì=AN0ÎN3 Î/N0Î0N3 Î3'Oc                 óR   — t        | d«      r| j                  j                  «        yy)z<Clean up resources when finished with the remote_connection.r~   N)Úhasattrr~   Úclearr'   s    r)   r®   zRemoteConnection.close×  s!   € ä�4˜Ô!Ø�J‰J×ÑÕð "r+   c                 óä   — i }|j                  «       D ]Z  \  }}t        |t        «      r| j                  ||«      ||<   Œ,t        |t        «      rt        |«      |kD  r|d| dz   ||<   ŒV|||<   Œ\ |S )a   Truncate string values in a dictionary if they exceed max_length.

        Args:
            input_dict: Dictionary with potentially large values
            max_length: Maximum allowed length of string values

        Returns:
            Dictionary with truncated string values
        Nz...)Úitemsr“   r”   r–   r™   Úlen)r(   Ú
input_dictÚ
max_lengthÚoutput_dictionaryÚkeyr©   s         r)   r–   z$RemoteConnection._trim_large_entriesÜ  s‡   € ð ÐØ$×*Ñ*Ó,ò 	/‰JˆC�Ü˜%¤Ô&Ø)-×)AÑ)AÀ%ÈÓ)TÐ! #Ò&Ü˜E¤3Ô'¬C°«J¸Ò,CØ).¨{°
Ð);¸eÑ)CÐ! #Ò&à).Ð! #Ò&ð	/ð !Ð r+   )F)NTFFNNr&   )éd   )-Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r™   Ú__annotations__ÚosÚsocketÚcertifiÚgetdefaulttimeoutr{   ÚenvironÚgetenvÚwherer|   r
   ÚsysÚplatformÚsystemrO   r   rI   Úpropertyr*   Úclassmethodr7   r9   r;   r?   rB   rT   rW   r^   rw   Úboolr”   r�   r‚   r‡   r‰   r£   rš   r®   r–   rh   r+   r)   r   r   �   sÕ  … ñð  $€L�#˜‘*Ó#ãÛãà×'Ñ'Ó)€HØ3GÈ2Ï:É:Ñ3U�—	‘	Ð.Ô/Ð[b×[hÑ[hÓ[j€IØ Ó à�\‰\€FØ�ÒØˆð €MØ˜[˜M¨°6°(¸!Ð<€Jàñ#ó ð#ð ñ*ó ð*ð ñ-ó ð-ð ñ+ó ð+ð ñ+ó ð+ð ñ+ó ð+ð òó ðò8ò
(ò=ð: *.ØØ"Ø+0Ø26Ø-1ñ?)à $™Jð?)ð ð?)ð ð	?)ð
 " D™[ð?)ð %)¨4¡Kð?)ð $ dÑ*ó?)ðB &(€N�D˜˜c˜‘NÓ'ò-ð( ó (ò>ñ2<°$ó <ò|ñ
!ÀÈÁô !r+   r   )wÚloggingr�   rÔ   r1   Úbase64r   Úurllibr   Úurllib.parser   r   rk   Úseleniumr   Úselenium.common.exceptionsr   Úselenium.webdriver.remoter	   Ú'selenium.webdriver.remote.client_configr
   Ú!selenium.webdriver.remote.commandr   Ú&selenium.webdriver.remote.errorhandlerr   Ú	getLoggerrÈ   r—   ÚNEW_SESSIONÚQUITÚW3C_GET_CURRENT_WINDOW_HANDLEÚW3C_GET_WINDOW_HANDLESr   Ú
GO_FORWARDÚGO_BACKÚREFRESHÚW3C_EXECUTE_SCRIPTÚW3C_EXECUTE_SCRIPT_ASYNCÚGET_CURRENT_URLÚ	GET_TITLEÚGET_PAGE_SOURCEÚ
SCREENSHOTÚELEMENT_SCREENSHOTÚFIND_ELEMENTÚFIND_ELEMENTSÚW3C_GET_ACTIVE_ELEMENTÚFIND_CHILD_ELEMENTÚFIND_CHILD_ELEMENTSÚCLICK_ELEMENTÚCLEAR_ELEMENTÚGET_ELEMENT_TEXTÚSEND_KEYS_TO_ELEMENTÚGET_ELEMENT_TAG_NAMEÚIS_ELEMENT_SELECTEDÚIS_ELEMENT_ENABLEDÚGET_ELEMENT_RECTÚGET_ELEMENT_ATTRIBUTEÚGET_ELEMENT_PROPERTYÚGET_ELEMENT_ARIA_ROLEÚGET_ELEMENT_ARIA_LABELÚGET_SHADOW_ROOTÚFIND_ELEMENT_FROM_SHADOW_ROOTÚFIND_ELEMENTS_FROM_SHADOW_ROOTÚGET_ALL_COOKIESÚ
ADD_COOKIEÚ
GET_COOKIEÚDELETE_ALL_COOKIESÚDELETE_COOKIEÚSWITCH_TO_FRAMEÚSWITCH_TO_PARENT_FRAMEÚSWITCH_TO_WINDOWÚ
NEW_WINDOWÚCLOSEÚ!GET_ELEMENT_VALUE_OF_CSS_PROPERTYÚEXECUTE_ASYNC_SCRIPTÚSET_TIMEOUTSÚGET_TIMEOUTSÚW3C_DISMISS_ALERTÚW3C_ACCEPT_ALERTÚW3C_SET_ALERT_VALUEÚW3C_GET_ALERT_TEXTÚW3C_ACTIONSÚW3C_CLEAR_ACTIONSÚSET_WINDOW_RECTÚGET_WINDOW_RECTÚW3C_MAXIMIZE_WINDOWÚSET_SCREEN_ORIENTATIONÚGET_SCREEN_ORIENTATIONÚGET_NETWORK_CONNECTIONÚSET_NETWORK_CONNECTIONÚGET_LOGÚGET_AVAILABLE_LOG_TYPESÚCURRENT_CONTEXT_HANDLEÚCONTEXT_HANDLESÚSWITCH_TO_CONTEXTÚFULLSCREEN_WINDOWÚMINIMIZE_WINDOWÚ
PRINT_PAGEÚADD_VIRTUAL_AUTHENTICATORÚREMOVE_VIRTUAL_AUTHENTICATORÚADD_CREDENTIALÚGET_CREDENTIALSÚREMOVE_CREDENTIALÚREMOVE_ALL_CREDENTIALSÚSET_USER_VERIFIEDÚUPLOAD_FILEÚGET_DOWNLOADABLE_FILESÚDOWNLOAD_FILEÚDELETE_DOWNLOADABLE_FILESÚFIRE_SESSION_EVENTÚGET_FEDCM_TITLEÚGET_FEDCM_DIALOG_TYPEÚGET_FEDCM_ACCOUNT_LISTÚCLICK_FEDCM_DIALOG_BUTTONÚCANCEL_FEDCM_DIALOGÚSELECT_FEDCM_ACCOUNTÚSET_FEDCM_DELAYÚRESET_FEDCM_COOLDOWNr   r   rh   r+   r)   ú<module>r>     s¤  ðó$ Û Û 
Û Ý Ý ß *ã å  Ý 9Ý +Ý @Ý 5Ý <à	ˆ×	Ñ	˜8Ó	$€ðeØ×ÑÐ-ðeà‡L�LÐ3ðeð ×)Ñ)Ð+Pðeð ×"Ñ"Ð$Qð	eð
 ‡K�KÐ4ðeð ×ÑÐ?ðeð ‡O�OÐ9ðeð ‡O�OÐ<ðeð ×ÑÐ Lðeð ×$Ñ$Ð&Sðeð ×ÑÐ?ðeð ×ÑÐ;ðeð ×ÑÐBðeð ×ÑÐAðeð ×ÑÐ Uðeð  ×ÑÐAð!eð" ×ÑÐCñ#eð$ ×"Ñ"Ð$Qð%eð& ×ÑÐ Sð'eð( ×ÑÐ!Uð)eð* ×ÑÐLð+eð, ×ÑÐLð-eð. ×ÑÐMð/eð0 × Ñ Ð"Sð1eð2 × Ñ Ð"Qð3eð4 ×ÑÐ!Tð5eð6 ×ÑÐ Rð7eð8 ×ÑÐMð9eð: ×!Ñ!Ð#]ð;eð< × Ñ Ð"[ð=eð> ×!Ñ!Ð#Zð?eð@ ×"Ñ"Ð$\ðAeðB ×ÑÐNðCeðD ×)Ñ)Ð+còEeðF ×*Ñ*Ð,eðGeðH ×ÑÐBðIeðJ ×ÑÐ>ðKeðL ×ÑÐCðMeðN ×ÑÐ HðOeðP ×ÑÐIðQeðR ×ÑÐBðSeðT ×"Ñ"Ð$PðUeðV ×ÑÐDðWeðX ×ÑÐBðYeðZ ‡M�MÐ;ð[eð\ ×-Ñ-Ð/kð]eð^ × Ñ Ð"Oð_eð` ×ÑÐBðaeðb ×ÑÐAðceðd ×ÑÐLðeeðf ×ÑÐJògeðh ×ÑÐ!Kðieðj ×ÑÐ Iðkeðl ×ÑÐ@ðmeðn ×ÑÐHðoeðp ×ÑÐHðqeðr ×ÑÐGðseðt ×ÑÐ!Pðueðv ×"Ñ"Ð$Oðweðx ×"Ñ"Ð$Nðyeðz ×"Ñ"Ð$Uð{eð| ×"Ñ"Ð$Vð}eð~ ‡O�OÐ;ðeð@ ×#Ñ#Ð%PðAeðB ×"Ñ"Ð$JðCeðD ×ÑÐDðEeðF ×ÑÐFðGeðH ×ÑÐPòIeðJ ×ÑÐLðKeðL ×ÑÐ=ðMeðN ×%Ñ%Ð']ðOeðP ×(Ñ(ð +ðQeðX ×ÑÐnðYeðZ ×ÑÐoð[eð\ ×Ñð  ð]eðd ×"Ñ"ð %ðeeðl ×ÑÐiðmeðn ×ÑÐ@ðoeðp ×"Ñ"Ð$Kðqeðr ×ÑÐCðseðt ×%Ñ%Ð'Qðueðv ×ÑÐ Hðweðz ×ÑÐJð{eð| ×!Ñ!Ð#Uð}eð~ ×"Ñ"Ð$Tñeð@ ×%Ñ%Ð'^Ø×ÑÐ!SØ× Ñ Ð"UØ×ÑÐRØ× Ñ Ð"UñIe€÷Pb!ò b!r+   