+
    šh©j(  ã                   ó¨   € ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RItRRutt ^ RIt^ RI
Ht ^ RIHt  ! R R]4      tR#   ] d   t	]	t Rt	A	L'Rt	A	ii ; i)é    N)Úselect)ÚProxyCommandFailure)ÚClosingContextManagerc                   ób   a € ] tR t^'t o RtR tR tR tR t]	R 4       t
]	R 4       tR tR	tV tR
# )ÚProxyCommandaŽ  
Wraps a subprocess running ProxyCommand-driven programs.

This class implements a the socket-like interface needed by the
`.Transport` and `.Packetizer` classes. Using this class instead of a
regular socket makes it possible to talk with a Popen'd command that will
proxy traffic between the client and a server hosted in another machine.

Instances of this class may be used as context managers.
c                ó  € \         f   \        h\        P                  ! V4      V n        \         P
                  ! V P                  \         P                  \         P                  \         P                  ^ R7      V n        RV n        R# )zÙ
Create a new CommandProxy instance. The instance created by this
class can be passed as an argument to the `.Transport` class.

:param str command_line:
    the command that should be executed and used as the proxy.
N)ÚstdinÚstdoutÚstderrÚbufsize)	Ú
subprocessÚsubprocess_import_errorÚshlexÚsplitÚcmdÚPopenÚPIPEÚprocessÚtimeout)ÚselfÚcommand_lines   &&ÚI/var/www/html/bestweb/venv/lib/python3.14/site-packages/paramiko/proxy.pyÚ__init__ÚProxyCommand.__init__3   sZ   € ô ÒÜ)Ð)Ü—;’;˜|Ó,ˆŒÜ!×'Ò'Ø�H‰HÜ—/‘/Ü—?‘?Ü—?‘?Øô
ˆŒð ˆŽó    c                óè   €  V P                   P                  P                  V4       \        T4      #   \         d5   p\	        RP                  T P                  4      TP                  4      hRp?ii ; i)zš
Write the content received from the SSH client to the standard
input of the forked command.

:param str content: string to be sent to the forked command
Ú N)	r   r	   ÚwriteÚIOErrorr   Újoinr   ÚstrerrorÚlen)r   ÚcontentÚes   && r   ÚsendÚProxyCommand.sendG   s`   € ð	FØ�L‰L×Ñ×$Ñ$ WÔ-ô �7‹|Ðøô ô 	Fô
 & c§h¡h¨t¯x©xÓ&8¸!¿*¹*ÓEÐEûð	Fús   ‚%2 ²A1½/A,Á,A1c                ó4  €  Rp\         P                   ! 4       p\        V4      V8  Ed   RpV P                  eU   \         P                   ! 4       V,
          pWPP                  8¼  d   \        P                  ! 4       hV P                  V,
          p\	        V P
                  P                  .. . V4      w  rgpV'       g   K¥  V^ ,          V P
                  P                  8X  g   KÉ  V\        P                  ! V P
                  P                  P                  4       V\        V4      ,
          4      ,          pEK  V#   \        P                   d    X'       d   Tu # h \         d5   p	\        RP                  T P                  4      T	P                  4      hRp	?	ii ; i)z®
Read from the standard output of the forked program.

:param int size: how many chars should be read

:return: the string of bytes read, which may be shorter than requested
r   Nr   )Útimer"   r   Úsocketr   r   r
   ÚosÚreadÚfilenor   r   r    r   r!   )
r   ÚsizeÚbufferÚstartÚselect_timeoutÚelapsedÚrÚwÚxr$   s
   &&        r   ÚrecvÚProxyCommand.recvX   s'  € ð	FØˆFÜ—I’I“KˆEÜ�f“+ Õ$Ø!%�Ø—<‘<Ò+Ü"Ÿiši›k¨EÕ1�GØ§,¡,Ô.Ü$ŸnšnÓ.Ð.Ø%)§\¡\°GÕ%;�Nä  $§,¡,×"5Ñ"5Ð!6¸¸BÀÓO‘��aß‘1˜˜1� §¡×!4Ñ!4Ö4ØœbŸgšgØŸ™×+Ñ+×2Ñ2Ó4°d¼SÀ»[Õ6Hóõ “Fð ˆMøÜ�~‰~ô 	ßà’ØÜô 	FÜ% c§h¡h¨t¯x©xÓ&8¸!¿*¹*ÓEÐEûð	Fús7   ‚B7D7 Â>D7 Ã"AD7 Ä7FÅFÅ	FÅ"FÅ#/FÆFc                óx   € \         P                  ! V P                  P                  \        P
                  4       R # ©N)r*   Úkillr   ÚpidÚsignalÚSIGTERM©r   s   &r   ÚcloseÚProxyCommand.closey   s   € Ü
�Š�—‘× Ñ ¤&§.¡.Ö1r   c                ó2   € V P                   P                  R J# r8   )r   Ú
returncoder=   s   &r   ÚclosedÚProxyCommand.closed|   s   € à�|‰|×&Ñ&¨dÐ2Ð2r   c                ó   € V P                   # r8   )rB   r=   s   &r   Ú_closedÚProxyCommand._closed€   s   € ð �{‰{Ðr   c                ó   € Wn         R # r8   )r   )r   r   s   &&r   Ú
settimeoutÚProxyCommand.settimeout…   s   € ØŽr   )r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r%   r5   r>   ÚpropertyrB   rE   rH   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   '   sR   ø‡ € ñ	òò(ò"FòB2ð ñ3ó ð3ð ñó ð÷ð r   r   )r*   r   r;   r   r)   r(   r   r   ÚImportErrorr$   Úparamiko.ssh_exceptionr   Úparamiko.utilr   r   © r   r   Ú<module>rW      s_   ðó( 
Û Û Ý Û Û ð '+¨DÐ #€
Ð#ð Ûõ 7Ý /ô_Ð(ö _øð ô  ØÕûð ús   ¡> ¾AÁAÁA