
    i4J                        S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJrJrJrJrJr  S SKrS SKJrJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJrJ r J!r!  S S
K"J#r#  S SK$J%r%J&r&J'r'J(r(  SSK)J*r*  \RV                  " \,5      r- " S S\5      r. " S S\/5      r0 " S S\05      r1 " S S\05      r2 " S S\05      r3 " S S5      r4 " S S5      r5g)    N)Enumauto)sha1)BytesIO)AnyDictListOptionalSet)rawutils)
Connection)mtproto)	AuthKeyDuplicatedBadMsgNotificationFloodPremiumWait	FloodWaitInternalServerErrorRPCErrorSecurityCheckMismatchServiceUnavailableUnauthorized)layer)FutureSaltsIntMsgContainerTLObject   )
MsgFactoryc                   L    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       rSr	g)SessionState3    N)
__name__
__module____qualname____firstlineno__r   STARTINGSTARTEDSTOPPINGSTOPPED__static_attributes__r#       E/app/mltbenv/lib/python3.13/site-packages/pyrogram/session/session.pyr!   r!   3   s    vHfGvHfGr-   r!   c                       \ rS rSrSrg)TransportError:   r#   Nr$   r%   r&   r'   r,   r#   r-   r.   r0   r0   :       r-   r0   c                       \ rS rSrSrg)AuthKeyNotFound>   r#   Nr2   r#   r-   r.   r5   r5   >   r3   r-   r5   c                       \ rS rSrSrg)TransportFloodB   r#   Nr2   r#   r-   r.   r8   r8   B   r3   r-   r8   c                       \ rS rSrSrg)	InvalidDCF   r#   Nr2   r#   r-   r.   r;   r;   F   r3   r-   r;   c                       \ rS rSrSrS rSrg)ResultJ   )valueeventc                 F    S U l         [        R                  " 5       U l        g )N)r@   asyncioEventrA   selfs    r.   __init__Result.__init__M   s    
$+MMO
r-   )rA   r@   N)r$   r%   r&   r'   	__slots__rG   r,   r#   r-   r.   r>   r>   J   s    "I4r-   r>   c                      \ rS rSrSrSrSrSrSrSr	Sr
SrSrSr  S*S	S
S\S\S\S\S\S\S\4S jjr\S\4S j5       rS\SS4S jrS rS rS rS rS rS rS\4S\S \S!\4S" jjr\\\\
4S#\S$\S!\S%\S&\4
S' jjr S\4S( jr!S)r"g)+SessionR         
      r   i     clientzpyrogram.Clientdc_idserver_addressportauth_key	test_modeis_mediais_cdnc	                    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        S U l        [        R                  U l        [        R                  " 5       U l        [        U5      R!                  5       SS  U l        [$        R&                  " S5      U l        [+        U R                   5      U l        SU l        SU l        [3        5       U l        0 U l        / U l        / U l        S U l        [        R>                  " 5       U l         S U l!        [        R>                  " 5       U l"        [        R                  " 5       U l#        g )Ni   r   )$rR   rS   rT   rU   rV   rW   rX   rY   
connectionr!   r+   _staterC   Lock_state_lockr   digestauth_key_idosurandom
session_idr   msg_factorysaltignore_countsetpending_acksresultsstored_msg_idsrecent_msg_ids	ping_taskrD   ping_task_event	recv_task
is_startedrestart_lock)	rF   rR   rS   rT   rU   rV   rW   rX   rY   s	            r.   rG   Session.__init__^   s     
,	 " 04"**"<<>>002237**Q-%dkk2	&)e*,)+)+15&}}15!--/#LLNr-   returnc                     U R                   $ )zGet current session state)r]   rE   s    r.   stateSession.state   s     {{r-   	new_stateNc                   #    U R                    ISh  vN   U R                  nXl        [        R                  SUR                  UR                  5        SSS5      ISh  vN   g NR N! , ISh  vN  (       d  f       g= f7f)zSet session stateNzSession state changed: %s -> %s)r_   r]   logdebugname)rF   rw   	old_states      r.   
_set_stateSession._set_state   sL     ###I#KII7X	 $#####sD   BA&B>A*B A(!B(B*B0A31B=Bc                   #    U R                   [        R                  [        R                  4;   a  [        R                  S5        g U R                  [        R                  5      I S h  vN   U R                  R                  U R                  U R                  U R                  U R                  U R                  R                  U R                  U R                  R                  U R                   U R                  R"                  S9	U l         U R$                  R'                  5       I S h  vN   U R                  R"                  R)                  U R+                  5       5      U l        U R/                  [0        R2                  R5                  SS9U R6                  S9I S h  vN   U R                  R8                  n[;        U[<        5      (       a  [>        R@                  " U5      nU RB                  (       Gd-  U R/                  [0        R2                  RE                  [F        [0        R2                  RI                  U R                  RJ                  RM                  5       I S h  vN U R                  RN                  U R                  RP                  U R                  RR                  U R                  RT                  U R                  RV                  U R                  RX                  [0        R2                  RZ                  R]                  5       US9	S9U R6                  S9I S h  vN   U R                  R"                  R)                  U R_                  5       5      U l0        [        Rc                  S[d        Rf                  [F        5        [        Rc                  S	U R                  RP                  U R                  RN                  5        [        Rc                  S
U R                  RR                  U R                  RX                  5        U R                  [        R                  5      I S h  vN   U Rz                  R}                  5         [        Rc                  S5        [        U R                  R                  5      (       a0   U R                  R                  U R                  U 5      I S h  vN   g g  GNE GN GN GNW GN! [h        [j        4 a   nU Rm                  5       I S h  vN    UeS nAf[n        [p        4 ah  n[        Rc                  SURr                  Rt                  U5        U R                  R"                  R)                  U Rw                  5       5         S nAg S nAf[x         a   nU Rm                  5       I S h  vN    UeS nAff = f GNi N! [x         a  n[        R                  U5         S nAg S nAff = f7f)NzSession already started)	rS   rT   rU   rW   proxymediaprotocol_factorycrypto_executor_workersloopr   )ping_idtimeout)	api_idapp_versiondevice_modelsystem_versionsystem_lang_code	lang_pack	lang_codequeryparams)r   r   z,Session initialized: Pyrogram v%s (Layer %s)zDevice: %s - %szSystem: %s (%s)#Restarting session due to - %s - %szSession started)Br]   r!   r)   r(   ry   rz   r}   rR   connection_factoryrS   rT   rU   rW   r   rX   r   CRYPTO_EXECUTOR_WORKERSr   r\   connectcreate_taskrecv_workerro   sendr   	functionsPingSTART_TIMEOUTinit_connection_params
isinstancedictr   obj_to_jsonvaluerY   InvokeWithLayerr   InitConnectionstorager   r   r   r   r   r   r   help	GetConfigping_workerrm   infopyrogram__version__r   r   stopOSErrorr   	__class__r$   restart	Exceptionrp   rh   callableconnect_handler	exception)rF   r   es      r.   startSession.start   s    ;;<//1F1FGGII/0ool33444++88**..nn++##--![[99$($@$@!! 9 

/	//))+++![[--99$:J:J:LMDN))CMM..q.94CUCU)VVV%)[[%G%G"0$77).)?)?@V)W&;;;iiMM11#!mm::)-)<)<)C)C)E#E(,(?(?)-)A)A+/;;+E+E-1[[-I-I&*kk&;&;&*kk&;&;"%--"4"4">">"@#9 ; 
 2  !..     $ "[[--99$:J:J:LMDNHH>@T@TV[ HH&(@(@$++BYBYZHH&(B(BDKKDYDYZ ool22333"#DKK//00!kk11$++tDDD 1I 	5 , W $F	2 "<0 	))+G" 	HH:AKK<P<PRSTKK((8 	))+G	 	4 E !a  !s  A'V?)R.*B"V?R= *R1+A4R= R4 C R=  R7!B>R= R: C#R= "V?%V&AV?>)V 'V(V ,V?1R= 4R= 7R= :R= =VS( S#!S((V;AUV?V+V>V?VVV?V 
V<V72V?7V<<V?c                 2  #    U R                   [        R                  [        R                  4;   a  [        R                  S5        g U R                  [        R                  5      I S h  vN   SU l        U R                  R                  5         U R                  R                  5         U R                  R                  5         U R                  b  U R                  I S h  vN   U R                  R                  5         U R                  R                  5       I S h  vN   U R                   (       a  U R                   I S h  vN   S U l        U R                  [        R                  5      I S h  vN   [        R#                  S5        [%        U R&                  R(                  5      (       a0   U R&                  R)                  U R&                  U 5      I S h  vN   g g  GNt GN N N Nx N! [*         a  n[        R-                  U5         S nAg S nAff = f7f)NzSession already stoppedr   zSession stopped)r]   r!   r+   r*   ry   rz   r}   rg   rp   clearrk   rn   rh   rm   r\   closero   r   r   rR   disconnect_handlerr   r   rF   r   s     r.   r   Session.stop   s    ;;<//1F1FGGII/0ool33444!!#  ">>%..  ""$oo##%%%>>..  !DNool22333"#DKK2233!kk44T[[$GGG 43 	5 ! 	& ! 	4 H !a  !s   A'H)G*A5HG  ;HG#$H G%-H.G'/=H-)G+ G)G+ H H#H%H'H)G+ +
H5H
HHHc                 D  #    U R                    IS h  vN   U R                  (       a  U R                  S S U l        U R                  5       I S h  vN   U R	                  5       I S h  vN   S S S 5      IS h  vN   g  Nj N/ N N! , IS h  vN  (       d  f       g = f7f)NrQ   )rq   rk   rl   r   r   rE   s    r.   r   Session.restart  sn     $$$""%)%8%8"%=t"))+**, %$$  %$$$sh   B A>B 9BB B(B)B-B 8B9B  BBB BBBB c                   #     U R                   R                  R                  U R                  R                  R
                  [        R                  [        U5      U R                  U R                  U R                  5      I S h  vN n[)        UR*                  [,        5      (       a  UR*                  R.                  OU/n[        R                  SU5        U GHy  nUR0                  S:X  a%  U R                   R3                  UR4                  5        UR0                  S-  S:w  aA  UR4                  U R6                  ;   a  Mh  U R6                  R9                  UR4                  5         [;        U R<                  5      [>        R@                  :  a   U R<                  S [>        R@                  S-  2	 UR4                  U RB                  ;   a0  U RB                  RE                  UR4                  5        [G        S5      eU R<                  (       a  UR4                  U R<                  S   :  a  [G        S5      eUR4                  U R<                  ;   a  [G        S5      eUR4                  U RH                  RK                  5       I S h  vN -
  S-  nUS	:  a  [G        S
5      eUS:  a  [G        S5      eSU l&        [N        RP                  " U R<                  UR4                  5        [)        UR*                  [T        RV                  RX                  [T        RV                  RZ                  45      (       a2  U R6                  R9                  UR*                  R\                  5        GM  [)        UR*                  [T        RV                  R^                  5      (       a  GM  S n[)        UR*                  [T        RV                  R`                  [T        RV                  Rb                  45      (       a  UR*                  Rd                  nO[)        UR*                  [f        [T        RV                  Rh                  45      (       a  UR*                  Rj                  nO[)        UR*                  [T        RV                  Rl                  5      (       a  UR*                  R4                  nOUU R                   bH  U R                   R                  R%                  U R                   Ro                  UR*                  5      5        XpRp                  ;   d  GM  [s        UR*                  SUR*                  5      U Rp                  U   l:        U Rp                  U   Rv                  Ry                  5         GM|     [;        U R6                  5      U Rz                  :  a  [        R                  S[;        U R6                  5      5         U R}                  [T        RV                  R                  [        U R6                  5      S9S5      I S h  vN   U R6                  R                  5         g g  GN! [         a}  n[        R                  U5        [        R                  SUR                   R"                  U5        U R                   R                  R%                  U R'                  5       5         S nAg S nAff = f GN! [F         a  n[        R                  SU5        U =RL                  S-  sl&        U RL                  U RR                  :  a^  [        R                  SUR                   R"                  U5        U R                   R                  R%                  U R'                  5       5         S nA  g S nAff = f GNl! [         a     g f = f7f)Nr   zReceived: %sr   rM   z6The msg_id is belong to most recent closed connection.z.The msg_id is lower than all the stored valuesz/The msg_id is equal to any of the stored valuesl        rQ   zhThe msg_id belongs to over 30 seconds in the future. Most likely the client time has to be synchronized.izgThe msg_id belongs to over 300 seconds in the past. Most likely the client time has to be synchronized.zDiscarding packet: %sr   resultzSending %s acks)msg_idsF)CrR   r   run_in_executorr\   protocolcrypto_executorr   unpackr   rd   rV   ra   
ValueErrorry   rz   r   r   r$   r   r   r   bodyr   messagesseq_no_set_server_timemsg_idri   addlenrk   rK   STORED_MSG_IDS_MAX_SIZErl   remover   re   allocate_message_identityrg   bisectinsortMAX_CONSECUTIVE_IGNOREDr   typesMsgDetailedInfoMsgNewDetailedInfoanswer_msg_idNewSessionCreatedr   BadServerSalt
bad_msg_idr   	RpcResult
req_msg_idPonghandle_updatesrj   getattrr@   rA   rh   ACKS_THRESHOLDr   MsgsAcklistr   r   )rF   packetdatar   r   msg	time_diffr   s           r.   handle_packetSession.handle_packet  sW    	))99((88   D  $))\22 II 	 			.$'CzzQ,,SZZ8zzA~"::!2!22%%))#**5/?t**+g.M.MM++,QW-L-LPQ-Q,QR::!4!44&&--cjj9.Q  &&zzD$7$7$::3L  zzT%8%883M  "%T5E5E5_5_5a/a!bfm mI 2~3R 
 !4'3R 
 )*D% d113::>#((SYY%>%>		@\@\$]^^!!%%chh&<&<=#((CII$?$?@@F#((SYY%A%A399CZCZ$[\\,,CHH{CII4G4G&HII,,CHHciinn55;;*KK$$001K1KCHH1UV%-4SXXx-RV$*V$**..0a d t  !T%8%88II'T->->)?@*ii		 1 1$t?P?P:Q 1 RTYZZZ !!'') 9Q  	IIaLHH:AKK<P<PRSTKK((8		Z 0b ) 	0!4!!Q&!$$(D(DDHHBAKKDXDXZ[\KK$$00@	P [ s   ]&B X XX 	C]&'DZ>Z?2Z1I]&8B+]&$A] '](] ,]&X 
ZA3Z]&Z]&Z
]"B#]]&]]&] 
]# ]&"]##]&c                   #    [         R                  S5          [        R                  " U R                  R                  5       U R                  5      I S h  vN    [         R                  S5        g  N! [        R                   a     Of = f U R                  [        R                  R                  U R                  R                  5       I S h  vN  U R                  S-   S9SS9I S h  vN    O! [         aj  n[         R                  SUR                   R"                  U5        U R$                  R&                  R)                  U R+                  5       5         S nAGM  S nAf[,         a     Of = fGM_  7f)NzPingTask startedrO   )r   disconnect_delayF)wait_responser   zPingTask stopped)ry   r   rC   wait_forrn   waitPING_INTERVALTimeoutErrorr   r   r   PingDelayDisconnectre   r   WAIT_TIMEOUTr   r   r$   rR   r   r   r   r   r   s     r.   r   Session.ping_worker  s8    #$&&t';';'@'@'BDDVDVWWW " 	#$+ X'' 
iiMM55&*&6&6&P&P&R R R)-):):R)? 6  #(       >@T@TVWX  ,,T\\^< ) s   E8<A4 A2A4 E82A4 4BE8
BE8AC3 CC3 ,C/-C3 2E83
E2=AE"E8"E2/E81E22E8c                 b  #    [         R                  S5         U R                  R                  5       I S h  vN nUb  [	        U5      S:X  a  U(       am  [
        R                  " [        U5      5      * nSnUS:X  a  [        S5      e US:X  a  [        S5      eUS:X  a  [        S	5      e [         R                  S
X#5        U R                  R                  5       (       a\  U(       a
  SW SW S3nOSn[         R                  SU5        U R                   R"                  R%                  U R'                  5       5        O7U R                   R"                  R%                  U R)                  U5      5        GM[  [         R                  S5        g  GNT! [         a  n[        U5      n S nANS nAff = f7f)NzNetworkTask started   zunknown errori  z}Auth key not found in the system. Try again or delete your session file and log in again with your phone number or bot token.i  z0Transport flood. Please slow down your requests.i  z5Invalid data center. Please check your configuration.z$Server sent transport error: %s (%s)zServer sent transport error - z - (z).zServer sent a null packet.zRestarting session due to - %szNetworkTask stopped)ry   r   r\   recvr   r   readr   r5   r8   r;   r0   strwarningrp   is_setrR   r   r   r   r   )rF   r   
error_code	error_msgr   errors         r.   r   Session.recv_worker  s|    &'??//11F~V!1"%((76?";!;J /I!S(-T 

+%,"0 R#  (3."+ W#  / KK F
^ ??))++"@DQZP[[] ^ <HH=uEKK$$00@KK((););F)CDQ T 	&'S 2, * +$'F	+s;   4F/F
AF/"F *C!F/
F,F'"F/'F,,F/Tr   r   r   c           	      x  #    U R                   R                  U5      I S h  vN nUR                  nU(       a  [        5       U R                  U'   [
        R                  SU5        U R                  R                  R                  U R                  R                  R                  [        R                  UU R                  U R                   U R"                  U R$                  5      I S h  vN n U R                  R'                  U5      I S h  vN   U(       Ga   [,        R.                  " U R                  U   R0                  R3                  5       U5      I S h  vN   U R                  R+                  U5      R6                  nUc  [5        S5      e[9        U[:        R<                  R>                  5      (       ao  [9        U[:        R@                  RB                  [:        R@                  RD                  45      (       a  URF                  n[H        RJ                  " U[M        U5      5        [9        U[:        R<                  RN                  5      (       a8  [
        RQ                  S[N        RR                  [O        URT                  5      5        [9        U[:        R<                  RV                  5      (       a+  URX                  U l        U R'                  XU5      I S h  vN $ U$ g  GN GN GN! [(         a#  nU R                  R+                  US 5        UeS nAff = f GN! [,        R4                   a     GNf = f N^7f)NzSent: %szRequest timed outz%s: %s)-re   creater   r>   rj   ry   rz   rR   r   r   r\   r   r   r   packrf   rd   rV   ra   r   r   poprC   r   rA   r   r   r@   r   r   r   RpcErrorr   InvokeWithoutUpdatesInvokeWithTakeoutr   r   raise_ittyper   r   r$   r   r   new_server_salt)	rF   r   r   r   messager   payloadr   r   s	            r.   r   Session.send  sd     ((//55#)8DLL 		*g&((88OO$$44LLIIOOMM
 
	//&&w///
 &&t||F';'A'A'F'F'H'RRR \\%%f-33F~"#677&#))"4"4553====s}}?^?^_   ::D!!&$t*5&#))">">??099;MfN_N_;` &#))"9"9::"22	!YYtGDDDM9 1 6
 0 	LLVT*G	 S'' . Es   L:K!CL:(K$)L:.K* K'K* L:?L LL E;L:L8L:$L:'K* *
L4LLL:L L51L:4L55L:r   retriessleep_thresholdretry_delayc           
      0  #     [         R                  " U R                  R                  5       U R                  5      I S h  vN   [        U[        R                  R                  [        R                  R                  45      (       a  UR                  nOUnSR                  UR                  R                  S5      SS  5      n[        SUS-   5       H  n U R!                  XS9I S h  vN s  $    [        SU SU S	35      e N! [         R
                   a     Nf = f N6! ["        [$        4 aq  n	U	R&                  n
Xs=:  a  S:  a   e   [(        R+                  SU R,                  R.                  U
U5        [         R0                  " U
5      I S h  vN     S n	A	M  S n	A	f[2        [4        [6        4 a]  n	[(        R+                  SX[9        U	5      =(       d    [;        U	5      5        [         R0                  " U5      I S h  vN     S n	A	GM;  S n	A	ff = f7f)
N.r   r   r   z@[%s] Waiting for %s seconds before continuing (required by "%s")z[%s] Retrying "%s" due to: %szFailed to invoke "z" after z retries)rC   r   rp   r   r   r   r   r   r   r   r   r   joinQUALNAMEsplitranger   r   r   r@   ry   r   rR   r{   sleepr   r   r   r   repr)rF   r   r  r   r  r	  inner_query
query_nameattemptr   amounts              r.   invokeSession.invoke  s    	""4??#7#7#94;L;LMMM CMM668W8WX
 
  ++KKXXk2288=abAB
Q!,G1!YYuY>>> -0 /
|8G9HUVVK N## 		 ?/0 ,0q0 1 VKK$$	 mmF+++02DE 13W#a&J[TXYZT[ mmK00001s   H<D  DD BHD")D *D"-HD DHDH D""H2A FFFHH6AHHHHHHc                     SU R                    SU R                   SU R                   SU R                   SU R                  R
                   S3$ )NzSession(dc_id=z, test_mode=z, is_media=z	, is_cdn=z, state=))rS   rW   rX   rY   r]   r{   rE   s    r.   __str__Session.__str__?  su    

|<7G{SWS`S`Raajkokvkvjww  AE  AL  AL  AQ  AQ  @R  RS  T  	Tr-   )r]   r_   rV   ra   rR   r\   rS   rg   rY   rX   rp   re   ri   rm   rn   rU   rl   ro   rq   rj   rf   rT   rd   rk   rW   )FF)#r$   r%   r&   r'   r   r   SLEEP_THRESHOLDMAX_RETRIESr   r   RETRY_DELAYr   r   r   intr   bytesboolrG   propertyr!   ru   r}   r   r   r   r   r   r   r   floatr   r  r  r,   r#   r-   r.   rK   rK   R   se   MLOKNMK&  /+!/+ /+ 	/+
 /+ /+ /+ /+ /+b |  Y, Y4 YM!^"!Hr*h%8-(` 59<77-17CH7x #%!0(.W.W .W 	.W
 .W .W`T Tr-   rK   )6rC   r   loggingrb   enumr   r   hashlibr   ior   typingr   r   r	   r
   r   r   r   r   pyrogram.connectionr   pyrogram.cryptor   pyrogram.errorsr   r   r   r   r   r   r   r   r   pyrogram.raw.allr   pyrogram.raw.corer   r   r   r   	internalsr   	getLoggerr$   ry   r!   r   r0   r5   r8   r;   r>   rK   r#   r-   r.   <module>r0     s   &    	    1 1   * #
 
 
 # F F !!4 	Y 		n 		^ 		 	4 4nT nTr-   