§
    P¦·f  ã                   ó:  — d dl Z d dlZd dlZd dlmZ d dlmZmZ ddlmZm	Z	 ddl
mZ ee j        iZer/d dlZ eed¦  «        rdeej        <   deej        <   n
deej        <    ee                     ¦   «         ¦  «        ZdZ e¦   «         Zd	Z G d
„ d¦  «        ZdS )é    N)ÚSEEK_END)ÚOptionalÚUnioné   )ÚConnectionErrorÚTimeoutError)ÚSSL_AVAILABLEÚSSLWantReadErrorzConnection closed by server.s   
c            	       óØ   — e Zd Zdej        dedefd„Zdefd„Zdedfd	e	e         d
e
eef         de	e         defd„Zd
edefd„Zd	edefd„Zdefd„Zdefd„Zdeddfd„Zdd„Zdd„ZdS )ÚSocketBufferÚsocketÚsocket_read_sizeÚsocket_timeoutc                 ó`   — || _         || _        || _        t          j        ¦   «         | _        d S ©N)Ú_sockr   r   ÚioÚBytesIOÚ_buffer)Úselfr   r   r   s       úG/var/www/html/env/lib/python3.11/site-packages/redis/_parsers/socket.pyÚ__init__zSocketBuffer.__init__   s,   € ð ˆŒ
Ø 0ˆÔØ,ˆÔÝ”z‘|”|ˆŒˆˆó    Úreturnc                 ó²   — | j                              ¦   «         }| j                              dt          ¦  «        }| j                              |¦  «         ||z
  S )z3
        Remaining unread length of buffer
        r   )r   ÚtellÚseekr   )r   ÚposÚends      r   Úunread_byteszSocketBuffer.unread_bytes&   sN   € ð Œl×ÒÑ!Ô!ˆØŒl×Ò ¥8Ñ,Ô,ˆØŒ×Ò˜#ÑÔÐØS‰yÐr   NTÚlengthÚtimeoutÚraise_on_timeoutc                 ó„  — | j         }| j        }d}|t          u}| j        }|                     ¦   «         }	|                     dt          ¦  «         |r|                     |¦  «         	 	 | j                              |¦  «        }
t          |
t          ¦  «        r't          |
¦  «        dk    rt          t          ¦  «        ‚|                     |
¦  «         t          |
¦  «        }||z  }|||k    rŒ‰	 |                     |	¦  «         |r|                     | j        ¦  «         dS dS # t           j        $ rH |rt%          d¦  «        ‚Y |                     |	¦  «         |r|                     | j        ¦  «         dS dS t&          $ r‚}t(                               |j        d¦  «        }|sD|j        |k    r9Y d }~|                     |	¦  «         |r|                     | j        ¦  «         dS dS t          d|j        › ¦  «        ‚d }~ww xY w# |                     |	¦  «         |r|                     | j        ¦  «         w w xY w)Nr   TzTimeout reading from socketFéÿÿÿÿz!Error while reading from socket: )r   r   ÚSENTINELr   r   r   r   Ú
settimeoutÚrecvÚ
isinstanceÚbytesÚlenr   ÚSERVER_CLOSED_CONNECTION_ERRORÚwriter   r   r"   r   ÚNONBLOCKING_EXCEPTIONSÚ#NONBLOCKING_EXCEPTION_ERROR_NUMBERSÚgetÚ	__class__ÚerrnoÚargs)r   r!   r"   r#   Úsockr   ÚmarkerÚcustom_timeoutÚbufÚcurrent_posÚdataÚdata_lengthÚexÚalloweds                 r   Ú_read_from_socketzSocketBuffer._read_from_socket/   s’  € ð ŒzˆØÔ0ÐØˆØ ­Ð0ˆàŒlˆØ—h’h‘j”jˆØŠ•HÑÔÐØð 	%ØOŠO˜GÑ$Ô$Ð$ð	5ðØ”z—’Ð'7Ñ8Ô8å˜d¥EÑ*Ô*ð J­s°4©y¬y¸Aª~¨~Ý)Õ*HÑIÔIÐIØ—	’	˜$‘”Ý! $™iœiØ˜+Ñ%àÐ%¨&°6ª/¨/ØØð HŠH[Ñ!Ô!Ð!Øð 5Ø—’ Ô 3Ñ4Ô4Ð4Ð4Ð4ð5ð 5øõ Œ~ð 	ð 	ð 	Øð BÝ"Ð#@ÑAÔAÐAØð HŠH[Ñ!Ô!Ð!Øð 5Ø—’ Ô 3Ñ4Ô4Ð4Ð4Ð4ð5ð 5õ &ð 	Qð 	Qð 	Qõ
 :×=Ò=¸b¼lÈBÑOÔOˆGØ#ð ¨¬°GÒ(;Ð(;Øuuuð HŠH[Ñ!Ô!Ð!Øð 5Ø—’ Ô 3Ñ4Ô4Ð4Ð4Ð4ð5ð 5õ "Ð"OÀbÄgÐ"OÐ"OÑPÔPÐPøøøøð	Qøøøøð HŠH[Ñ!Ô!Ð!Øð 5Ø—’ Ô 3Ñ4Ô4Ð4Ð4ð5øøøs=   Á(B	D' Ä' HÅH Å=	HÆ-HÆ3H Ç,HÈHÈH È4H?c                 ór   — t          |                      ¦   «         ¦  «        p|                      |d¬¦  «        S )NF)r"   r#   )Úboolr    r=   )r   r"   s     r   Úcan_readzSocketBuffer.can_read^   s@   € ÝD×%Ò%Ñ'Ô'Ñ(Ô(ð 
¨D×,BÒ,BØ¨eð -Cñ -
ô -
ð 	
r   c                 óà   — |dz   }| j                              |¦  «        }|t          |¦  «        z
  }|r2|                      |¦  «         || j                              |¦  «        z  }|d d…         S )Nr   éþÿÿÿ)r   Úreadr+   r=   )r   r!   r9   Úmissings       r   rC   zSocketBuffer.readc   st   € Ø˜!‘ˆàŒ|× Ò  Ñ(Ô(ˆØ3˜t™9œ9Ñ$ˆØð 	/à×"Ò" 7Ñ+Ô+Ð+ØD”L×%Ò% gÑ.Ô.Ñ.ˆDØCRCŒyÐr   c                 ó
  — | j         }|                     ¦   «         }|                     t          ¦  «        sE|                      ¦   «          ||                     ¦   «         z  }|                     t          ¦  «        ¯E|d d…         S )NrB   )r   ÚreadlineÚendswithÚSYM_CRLFr=   )r   r7   r9   s      r   rF   zSocketBuffer.readlinen   st   € ØŒlˆØ|Š|‰~Œ~ˆØ—-’-¥Ñ)Ô)ð 	#à×"Ò"Ñ$Ô$Ð$ØC—L’L‘N”NÑ"ˆDð —-’-¥Ñ)Ô)ð 	#ð
 CRCŒyÐr   c                 ó4   — | j                              ¦   «         S )z+
        Get current read position
        )r   r   ©r   s    r   Úget_poszSocketBuffer.get_posx   s   € ð Œ|× Ò Ñ"Ô"Ð"r   r   c                 ó:   — | j                              |¦  «         dS )zO
        Rewind the buffer to a specific position, to re-start reading
        N)r   r   )r   r   s     r   ÚrewindzSocketBuffer.rewind~   s    € ð 	Œ×Ò˜#ÑÔÐÐÐr   c                 ó  — |                       ¦   «         }|dk    rdS |dk    r)| j                             ¦   «         }|| d…         |d|…<   | j                             |¦  «         | j                             d¦  «         dS )zH
        After a successful read, purge the read part of buffer
        r   N)r    r   Ú	getbufferÚtruncater   )r   ÚunreadÚviews      r   ÚpurgezSocketBuffer.purge„   sŠ   € ð ×"Ò"Ñ$Ô$ˆð
 AŠ:ˆ:ØˆFàAŠ:ˆ:à”<×)Ò)Ñ+Ô+ˆDØ  &   œNˆD&‰MØŒ×Ò˜fÑ%Ô%Ð%ØŒ×Ò˜!ÑÔÐÐÐr   c                 óx   — 	 | j                              ¦   «          n# t          $ r Y nw xY wd | _         d | _        d S r   )r   ÚcloseÚ	Exceptionr   rJ   s    r   rU   zSocketBuffer.close—   sT   € ð	ØŒL×ÒÑ Ô Ð Ð øÝð 	ð 	ð 	ð ˆDð	øøøð ˆŒØˆŒ
ˆ
ˆ
s   ‚ œ
)¨))r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚintÚfloatr   r    r&   r   r   Úobjectr?   r=   r@   r*   rC   rF   rK   rM   rS   rU   © r   r   r   r      s}  € € € € € ð$Ø”mð$Ø7:ð$ØLQð$ð $ð $ð $ð˜cð ð ð ð ð !%Ø(0Ø+/ð	-5ð -5à˜”ð-5ð u˜f}Ô%ð-5ð # 4œ.ð	-5ð
 
ð-5ð -5ð -5ð -5ð^
 ð 
¨$ð 
ð 
ð 
ð 
ð
	˜3ð 	 5ð 	ð 	ð 	ð 	ð˜%ð ð ð ð ð#˜ð #ð #ð #ð #ð˜#ð  $ð ð ð ð ðð ð ð ð&ð ð ð ð ð r   r   )r2   r   r   r   Útypingr   r   Ú
exceptionsr   r   Úutilsr	   ÚBlockingIOErrorÚEWOULDBLOCKr/   ÚsslÚhasattrr
   ÚSSLWantWriteErrorÚSSLErrorÚtupleÚkeysr.   r,   r\   r&   rH   r   r]   r   r   ú<module>ri      sC  ðØ €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø !Ð !Ð !Ð !Ð !Ð !à'6¸Ô8IÐ&JÐ #àð >Ø€J€J€Jà€wˆsÐ&Ñ'Ô'ð >ØDEÐ+¨CÔ,@ÑAØEFÐ+¨CÔ,AÑBÐBà<=Ð+¨C¬LÑ9à˜ÐB×GÒGÑIÔIÑJÔJÐ à!?Ð Øˆ6‰8Œ8€à€ðEð Eð Eð Eð Eñ Eô Eð Eð Eð Er   