o
    Eº®jñ  ã                   @   s˜  U d dl Z d dlZd dlZd dlZ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mZmZ zd dlmZ W n+ eyl   zd dlmZ W n eyi   G dd„ deƒZG d	d
„ d
eƒZY nw Y nw d dlZd dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dlZ=e >e?¡Z@dZAdeBdeBfdd„ZCdaDdaEdaFdaGe jHeId< daJeKƒ ZLeKeId< d‚dd„ZMdd„ ZNdƒdeBdeOdeOfdd„ZPdeQdeBfdd„ZRdeBdeOfd d!„ZSd"e
fd#d$„ZTd"e
fd%d&„ZUd„d'd(„ZVd)d*„ ZWd+d,„ ZXd-d.„ ZYd…d0e
d1eBd2eZdeOfd3d4„Z[d5eBdeOfd6d7„Z\d0e
d1eBd5eBdeBfd8d9„Z]d†d0e
deBd:e^d;e_fd<d=„Z`deBdeQfd>d?„ZadeBdeOfd@dA„ZbdeBdeOfdBdC„ZcdeBdeOfdDdE„ZddeBdeOfdFdG„ZedeBfdHdI„ZfdJdK„ ZgdLdM„ ZhdNdO„ ZidPdQ„ ZjdRdS„ ZkdTdU„ ZldVdW„ ZmdXdY„ ZndZd[„ ZodeQfd\d]„ZpdeOfd^d_„ZqdeBfd`da„Zrd0e
fdbdc„Zsd‡deBfdedf„ZtdgeQdheZdeQfdidj„Zudkdl„ Zvd0e
d1eBdmeBdeOfdndo„Zwd0e
d1eBdeBfdpdq„Zxd0e
d1eBdeBdeBfdrds„Zyd0e
d1eBdeBdeBfdtdu„ZzdeBfdvdw„Z{dxdy„ Z|d2eZdze_fd{d|„Z}dze_fd}d~„Z~dze_deBdeQfd€d�„ZdS )ˆé    N)Údatetime©ÚClient)Ú	FloodWaitÚUserAlreadyParticipantÚUserNotParticipantÚPeerIdInvalid)ÚUserDeactivatedBan)ÚUserDeactivatedc                   @   ó   e Zd ZdS )r
   N©Ú__name__Ú
__module__Ú__qualname__© r   r   úgather_engine.pyr
      ó    r
   c                   @   r   )r	   Nr   r   r   r   r   r	      r   r	   )(Ú	BOT_DELAYÚ
BATCH_RESTÚclientsÚ	flood_mapÚ
stop_eventÚaccount_join_countÚ_background_tasksÚget_settingÚset_settingÚ	get_speedÚget_concurrentÚget_work_minutesÚget_rest_minutesÚget_concurrent_all_botsÚget_accountsÚget_active_countÚban_accountÚget_botsÚget_channelsÚadd_channelÚdel_channelÚget_account_lockÚcleanup_clientÚadd_force_sub_channelÚget_all_force_sub_keysÚdel_force_sub_channelsÚ
rand_delayÚ
safe_sleepÚch_linkÚnorm_targetÚnorm_ch_keyÚis_ban_errorÚget_ban_reasonÚcreate_tracked_taskÚis_channel_bannedÚban_channelÚget_client_open_lockÚdead_sessionsÚ_join_notify_bufferÚget_join_notify_locké   Úbot_unÚreturnc                 C   sP   | s| S |   ¡  d¡}dD ]}| |¡r|t|ƒd … } nq| d¡d   ¡ S )Nú@)úhttps://t.me/zhttp://t.me/út.me/ú?r   )ÚstripÚlstripÚ
startswithÚlenÚsplit)r<   ÚunÚprefixr   r   r   Ú_extract_bot_username;   s   
þrI   Ú_notify_queueÚ_banned_notifiedc                 C   s   | a |a|ad S ©N)Ú_bot_instanceÚ_notify_funcÚ_notify_edit_func)Úbot_objÚnotify_funcÚnotify_edit_funcr   r   r   Úset_botQ   s   rS   c                  Ã   s2   �t r	t  ¡ s	d S t ¡ add„ } t | ƒ ¡a d S )Nc                  “   sú  �t tdd ƒ‰ ˆ st tdd ƒ} | r| gng ‰ dd„ ˆ D ƒ‰‡ ‡fdd„}	 �z/t ¡ I d H \}}|dk�rˆ �rt�rd	}d
}tˆ ƒd }|�s||k �r|d7 }|ƒ }t ¡  ¡ }ˆ| | }	|	d
kr{t	 
dt|	ƒd › d�¡ t |	d ¡I d H  ztj||ddd�I d H  d}t	 d|› �¡ W nq tyÚ }
 z;t	 d|
j› d|› d�¡ t ¡  ¡ |
j ˆ|< trÐztd|
j› d|› d�ƒI d H  W n	 tyÏ   Y nw W Y d }
~
n/d }
~
w t�y }
 zt	 d|› d|› d|
› �¡ t ¡  ¡ d ˆ|< W Y d }
~
nd }
~
ww |�s||k sM|�st	 d|› d�¡ n3|dk�r5t�r5z	t|ƒI d H  W n! t�y4   Y nw t�rLz	t|ƒI d H  W n
 t�yK   Y nw t d¡I d H  W n& tj�ya   Y d S  t�y{ }
 zt	 d|
› �¡ W Y d }
~
nd }
~
ww q%) NÚNOTIFY_CHANNEL_IDSÚNOTIFY_CHANNEL_IDc                 S   s   i | ]}|d “qS )ç        r   )Ú.0Úch_idr   r   r   Ú
<dictcomp>f   s    z8start_notify_worker.<locals>._worker.<locals>.<dictcomp>c                     s>   t  ¡  ¡ } ˆ D ]}ˆ| | kr|  S qtˆ ‡fdd„d�S )uN   Ø£Ø¹Ø¯ Ø£ÙˆÙ„ Ù‚Ù†Ø§Ø© Ø¬Ø§Ù‡Ø²Ø©ØŒ Ø£Ùˆ Ø§Ù„Ø£Ù‚Ø±Ø¨ Ù„Ø§Ù†ØªÙ‡Ø§Ø¡ FloodWaitc                    s   ˆ |  S rL   r   ©Úx)Úflood_untilr   r   Ú<lambda>n   s    zUstart_notify_worker.<locals>._worker.<locals>.get_available_channel.<locals>.<lambda>©Úkey)ÚasyncioÚget_event_loopÚtimeÚmin)ÚnowrX   ©Úch_idsr\   r   r   Úget_available_channelh   s   ÿzCstart_notify_worker.<locals>._worker.<locals>.get_available_channelTÚchannelFr   é   é   u;   [NOTIFY] ÙƒÙ„ Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ù�ÙŠ FloodWaitØŒ Ø§Ù†ØªØ¸Ø§Ø± ÚsÚHTML©Ú
parse_modeÚdisable_web_page_previewu%   [NOTIFY] âœ“ Ø£Ù�Ø±Ø³Ù„ Ù„Ù„Ù‚Ù†Ø§Ø© z[NOTIFY] FloodWait u   s Ø¹Ù„Ù‰ Ø§Ù„Ù‚Ù†Ø§Ø© u    â†� ØªØ¨Ø¯ÙŠÙ„u   âš ï¸� FloodWait u   s Ø¹Ù„Ù‰ Ø§Ù„Ù‚Ù†Ø§Ø© <code>z</code>z[NOTIFY CHANNEL] u    Ù…Ø­Ø§ÙˆÙ„Ø© ú: é   uK   [NOTIFY] Ù�Ø´Ù„ Ø¥Ø±Ø³Ø§Ù„ Ø§Ù„Ø±Ø³Ø§Ù„Ø© Ù„Ø¬Ù…ÙŠØ¹ Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø¨Ø¹Ø¯ õ    Ù…Ø­Ø§ÙˆÙ„Ø©ç333333Ó?z[NOTIFY WORKER] )ÚgetattrÚconfigrJ   ÚgetrM   rE   r`   ra   rb   ÚlogÚinfoÚintÚsleepÚsend_messageÚdebugr   ÚwarningÚvaluerN   Ú	ExceptionÚCancelledErrorÚerror)Úsinglerg   ÚdestÚtextÚsentÚattemptsÚmax_attemptsrX   rd   ÚwaitÚer   re   r   Ú_worker^   sº   €
ÿÿý
ÿÿÿ
ÿÿÿ€ÿÿÿÿ€úØ2ÿÿ€ÿÿ€ÿ«z$start_notify_worker.<locals>._worker)Ú_notify_worker_taskÚdoner`   ÚQueuerJ   Úcreate_task)rŠ   r   r   r   Ústart_notify_workerX   s   €jr�   Fr„   Úurgentrh   c              
   Ã   s  �|rSt tddƒ}t tddƒ}|rt|ƒdkp|}|r)tr)t d| f¡I dH  dS trQz
t| ƒI dH  W dS  tyP } zt d|› �¡ W Y d}~dS d}~ww dS |r}tr{zt| ƒI dH W S  tyz } zt d|› �¡ W Y d}~dS d}~ww dS tr‹t d| f¡I dH  dS dS )	u  
    channel=True  â†’ Ø§Ù„Ù‚Ù†Ø§Ø© Ø¹Ø¨Ø± Queue (Ø§Ø´ØªØ±Ø§ÙƒØŒ Ø§ÙƒØªÙ…Ø§Ù„ØŒ Ù…ØºØ§Ø¯Ø±Ø©)
    urgent=True   â†’ Ø§Ù„Ù…Ø·ÙˆØ±ÙˆÙ† Ù�ÙˆØ±Ø§Ù‹ (Ø­Ø¸Ø±ØŒ Ø¨Ø¯Ø¡/Ø¥ÙŠÙ‚Ø§Ù�ØŒ Ù…Ù„Ø®ØµØŒ Ø£Ø®Ø·Ø§Ø¡)
    Ø§Ù�ØªØ±Ø§Ø¶ÙŠ       â†’ Ø§Ù„Ù…Ø·ÙˆØ±ÙˆÙ† Ø¹Ø¨Ø± Queue
    rT   NrU   r   rh   z[NOTIFY FALLBACK] z[NOTIFY URGENT] Údevs)	rt   ru   rE   rJ   ÚputrN   r   rw   r}   )r„   r�   rh   rf   rX   Úhas_channelr‰   r   r   r   ÚnotifyË   s6   €€ÿý€ÿýÿr”   Úmsg_idsc              
   Ã   sX   �t r*zt | |ƒI dH  W dS  ty) } zt d|› �¡ W Y d}~dS d}~ww dS )uJ   ØªØ¹Ø¯ÙŠÙ„ Ø±Ø³Ø§Ù„Ø© Ù…ÙˆØ¬ÙˆØ¯Ø© Ø¨Ø¯Ù„ Ø¥Ø±Ø³Ø§Ù„ Ø±Ø³Ø§Ù„Ø© Ø¬Ø¯ÙŠØ¯Ø©Nz[NOTIFY EDIT] )rO   r   rw   r}   )r•   r„   r‰   r   r   r   Únotify_editæ   s   €€ÿýr–   c                 Ã   sä  �t t ¡ ƒD ]J\}}z| | ¡I dH  t d| › d�¡ W  dS  tyQ } z%t|ƒ ¡ }d|v s6d|v rGt 	d| › d�¡ W Y d}~ dS W Y d}~qd}~ww t
dd	�I dH }|s^dS |d
 d }|tv rjdS zëd
dlm} |d|› �tjtjddd�}t|ƒ4 I dH šÀ zª| ¡ I dH  z2| | ¡I dH  t d| › d�¡ W W z	| ¡ I dH  W n	 ty¶   Y nw W d  ƒI dH  W dS  t�y2 } zct|ƒ ¡ }d|v sÚd|v �rt 	d| › d�¡ W Y d}~W z	| ¡ I dH  W n	 tyû   Y nw W d  ƒI dH  W dS W Y d}~W z	| ¡ I dH  W n
 t�y!   Y nw W d  ƒI dH  W dS d}~ww z	| ¡ I dH  W w  t�yF   Y w w 1 I dH �sNw   Y  W dS  t�yq } zt d|› �¡ W Y d}~dS d}~ww )u¨   
    Ø§Ù„ØªØ­Ù‚Ù‚ Ù…Ù† ÙˆØ¬ÙˆØ¯ Ø§Ù„Ø¨ÙˆØª Ù‚Ø¨Ù„ Ø¨Ø¯Ø¡ Ø§Ù„Ø¹Ù…Ù„ÙŠØ©.
    ÙŠØ³ØªØ®Ø¯Ù… Ø£ÙˆÙ„ client Ù…ØªØ§Ø­ØŒ Ø£Ùˆ ÙŠÙ�ØªØ­ client Ù…Ø¤Ù‚ØªØ§Ù‹ Ø¥Ø°Ø§ Ù„Ø²Ù….
    Nz[VERIFY BOT] u    Ù…ÙˆØ¬ÙˆØ¯ âœ“TÚUSERNAME_NOT_OCCUPIEDÚUSERNAME_INVALIDu    ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯!F©Úactive_onlyr   Úphoner   ú	sessions/é<   ©Úapi_idÚapi_hashÚ
no_updatesÚsleep_thresholdu"   [VERIFY BOT] Ù�Ø´Ù„ Ø§Ù„ØªØ­Ù‚Ù‚: )Úlistr   ÚitemsÚget_chatrw   rx   r   ÚstrÚupperr�   r!   r8   Úpyrogramr   ru   ÚAPI_IDÚAPI_HASHr7   ÚstartÚstopr}   )r<   r›   Úclientr‰   ÚerrÚaccountsÚ
PyroClientÚcr   r   r   Úverify_bot_existsñ   s’   €€ûû	ÿðÿðÿð€ÿð€þr²   r±   c                 C   s   d S rL   r   ©r±   r   r   r   Ú_patch_client_updates0  s   r´   c              
   ƒ   sv   �zddl m‰  G dd„ dƒ‰| j‰‡ ‡‡fdd„}|| _W d S  ty: } zt d|› �¡ W Y d }~d S d }~ww )Nr   )ÚGetChannelDifferencec                   @   s(   e Zd ZdZdZdZg Zg Zg Zg Z	dS )z._suppress_channel_sync.<locals>._FakeDiffEmptyrj   é,  TN)
r   r   r   ÚptsÚtimeoutÚfinalÚusersÚchatsÚnew_messagesÚother_updatesr   r   r   r   Ú_FakeDiffEmpty8  s    r¾   c                 Ÿ   s.   �t | ˆ ƒr	ˆƒ S ˆ| g|¢R i |¤ŽI d H S rL   )Ú
isinstance)ÚqueryÚargsÚkwargs©rµ   r¾   Úoriginal_invoker   r   Ú_patched_invokeC  s   €
z/_suppress_channel_sync.<locals>._patched_invokez[PATCH] failed: )Úpyrogram.raw.functions.updatesrµ   Úinvoker   rw   r}   )r±   rÅ   r‰   r   rÃ   r   Ú_suppress_channel_sync4  s   €	€ÿrÈ   c                 ƒ   s¦  �ˆ t v r	t ˆ  S d }zatˆ ƒ4 I d H šK ˆ t v r(t ˆ  W  d   ƒI d H  W S tdˆ › �tjtjddd�}tj| ¡ t	d�I d H  tj| 
¡ t	d�I d H  |t ˆ < |W  d   ƒI d H  W S 1 I d H sew   Y  W d S  t�yR } zÙ|d ur©ztj| ¡ dd�I d H  W n! ty¨   ztj| ¡ dd�I d H  W n	 ty¥   Y nw Y nw dtdtf‡ fd	d
„}t|tjƒrÎd}t dˆ › d|› d�¡ t ˆ ¡ ‚ t|ƒ ¡ }t|ƒrøt|ƒ}||ƒI d H }|rôtdˆ › d|› �dd�I d H  t|ƒ‚d|v �rt dˆ › d�¡ t ˆ ¡ |dƒI d H  ‚ d|v �s,d|v �s,d|v �s,d|v �s,d|v �rBt dˆ › d�¡ t ˆ ¡ |dƒI d H  ‚ t dˆ › d|› �¡ ‚ d }~ww )Nrœ   Téx   rž   ©r¸   é
   Úreasonr=   c              
   “   s\   �zt jtˆ | ƒdd�I d H W S  ty- } zt dˆ › d|› �¡ W Y d }~dS d }~ww )NrË   rÊ   ú	[CLIENT] u0   : Ù�Ø´Ù„ Ø­Ù�Ø¸ Ø§Ù„Ø­Ø¸Ø± Ù�ÙŠ Ø§Ù„Ù‚Ø§Ø¹Ø¯Ø©: F)r`   Úwait_forr#   r   rw   r�   )rÌ   Úban_err©r›   r   r   Ú	_safe_banp  s   €€þzget_client.<locals>._safe_banuv   Ø§Ù†ØªÙ‡Øª Ù…Ù‡Ù„Ø© Ø§Ù„Ø§ØªØµØ§Ù„ (Ù‚Ø¯ ØªÙƒÙˆÙ† Ù…Ø¤Ù‚ØªØ©/Ø§Ø²Ø¯Ø­Ø§Ù… Ø´Ø¨ÙƒÙŠ â€” Ù„Ù… ØªÙ�Ø­Ø¸Ø± Ù†Ù‡Ø§Ø¦ÙŠØ§Ù‹)rÍ   rp   u,    â€” ØªØ®Ø·Ù� Ù„Ù‡Ø°Ø§ Ø§Ù„ØªØ´ØºÙŠÙ„ Ù�Ù‚Ø·õ2   ðŸš« Ø­Ø³Ø§Ø¨ Ù…Ø­Ø¸ÙˆØ±
ðŸ‘¤ Ø§Ù„Ø­Ø³Ø§Ø¨: <code>õ   </code>
ðŸ“‹ Ø§Ù„Ø³Ø¨Ø¨: ©r�   zeof when reading a lineu@   : session Ù…Ù†ØªÙ‡ÙŠØ© â€” ØªØ®Ø·ÙŠ Ø¨Ù‡Ø¯ÙˆØ¡ ÙˆØ­Ø¸Ø± Ø¯Ø§Ø¦Ù…u   session ØªØ§Ù„Ù�Ø© (EOF)Ú	malformedú
disk imageÚauth_keyÚunregisteredÚrevokedu:   : Ø¬Ù„Ø³Ø© ØªØ§Ù„Ù�Ø©/Ù…ÙŠØªØ© â€” ØªÙ�Ø­Ø¸Ø± Ø¯Ø§Ø¦Ù…Ø§Ù‹u   session ØªØ§Ù„Ù�Ø©/Ù…ÙŠØªØ©)r   r7   r   ru   r©   rª   r`   rÎ   r«   ÚCLIENT_CONNECT_TIMEOUTÚget_mer   r¬   Ú
disconnectr¦   Úboolr¿   ÚTimeoutErrorrw   r}   r8   ÚaddÚlowerr2   r3   r”   r	   r�   )r›   Úupdatesr±   r‰   rÑ   rÌ   r®   Úis_newr   rÐ   r   Ú
get_clientM  sŠ   €þû4óÿ€ý	
ÿþü



€Ærã   c                  ƒ   s~   �	 t  d¡I d H  dd„ tdd�I d H D ƒ‰ ‡ fdd„tt ¡ ƒD ƒ} | D ]	}t|ƒI d H  q&t ¡  t	 
dttƒ› �¡ q)	NTéX  c                 S   s   h | ]}|d  ’qS rÐ   r   ©rW   Úaccr   r   r   Ú	<setcomp>¦  s    ÿz#periodic_cleanup.<locals>.<setcomp>r™   c                    s   g | ]}|ˆ vr|‘qS r   r   ©rW   Úp©Úactive_phonesr   r   Ú
<listcomp>©  ó    z$periodic_cleanup.<locals>.<listcomp>u   [CLEANUP] clients Ù†Ø´Ø·: )r`   rz   r!   r£   r   Úkeysr)   ÚgcÚcollectrw   rx   rE   )Údeadr›   r   rê   r   Úperiodic_cleanup£  s   €ÿ÷rò   c                  Ã   sj  �i } 	 t  d¡I d H  t dttƒ› d�¡ tt ¡ ƒD ]‹\}}t|ƒ}zt j	| 
¡ dd�I d H  W n
 t jy=   Y qw zezt j	| ¡ dd�I d H  |  |d ¡ W nJ ty� } z>|  |d¡d	 | |< t d
|› d| | › d|› �¡ | | dkr“t d
|› d�¡ |  |d ¡ t||d�I d H  W Y d }~nd }~ww W | ¡  q| ¡  w t dt| ƒ› d�¡ q)NTr¶   u   [HEALTH] Ù�Ø­Øµ z clientrs   rÊ   é   r   rj   z	[HEALTH] u    Ù�Ø´Ù„ u    Ø¯ÙˆØ± Ù…ØªØªØ§Ù„ÙŠ: é   u    Ù…ÙŠØª â€” ØªÙ†Ø¸ÙŠÙ�)r­   u   [HEALTH] Ù…Ø¬Ù…ÙˆØ¹ u    ØªØ­Øª Ø§Ù„Ù…Ø±Ø§Ù‚Ø¨Ø©)r`   rz   rw   rx   rE   r   r£   r¤   r(   rÎ   ÚacquirerÞ   rÛ   Úpopr   rv   r}   r)   Úrelease)Ú_failr›   r­   Úalockr‰   r   r   r   Úhealth_check°  s>   €ÿÿ€õ€ãrú   c               	   Ã   s°   �	 t  d¡I d H  tƒ 4 I d H š  ts	 W d   ƒI d H  qt ¡ } t ¡  W d   ƒI d H  n1 I d H s7w   Y  d dd„ | D ƒ¡}tdt| ƒ› d|› �dd�I d H  q)	NTr�   Ú
c                 s   ó   � | ]}d |› �V  qdS ©z- Nr   ©rW   Úur   r   r   Ú	<genexpr>ß  ó   € z%_flush_join_notify.<locals>.<genexpr>uA   ðŸ“¢ <b>ØªÙ‚Ø±ÙŠØ± Ø§Ø´ØªØ±Ø§ÙƒØ§Øª Ø¬Ø¯ÙŠØ¯Ø©</b>
âš¡ï¸� Ù‚Ø§Ù… uZ    Ø­Ø³Ø§Ø¨ Ø¨Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø¨Ù†Ø¬Ø§Ø­
ðŸ”— <b>Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ù…Ø´ØªØ±Ùƒ Ø¨Ù‡Ø§:</b>
©rh   )	r`   rz   r:   r9   ÚcopyÚclearÚjoinr”   rE   )Úurls_snapshotÚlinksr   r   r   Ú_flush_join_notify×  s(   €þ
(üÿþüør  ÚLEAVEr­   r›   Úchc           	      Ã   sh  �g }|  d¡r| |d ¡ |  d¡r| |d ¡ t|ƒ}|r*||vr*| |¡ |D ]…}z|  |¡I d H  t d|› d|› d|› �¡ W  dS  ttfyU   Y  dS  tyy } zt 	d|› d|› d|j
› d	|› d
�	¡ W Y d }~q,d }~w ty± } z-t|ƒ ¡ }d|v sŽd|v r–W Y d }~ dS t d|› d|› d|› d|› �¡ W Y d }~q,d }~ww dS )NÚidÚusernameú[ú] z left TFz FloodWait u	   s Ø¹Ù„Ù‰ u    â€” ØªØ®Ø·ÙŠÚCHANNEL_INVALIDÚCHANNEL_PRIVATEz error leaving rp   )rv   Úappendr/   Ú
leave_chatrw   rx   r   r   r   r}   r~   r   r¦   r§   r�   )	r­   r›   r
  ÚctxÚtargetsÚlinkÚtr‰   r®   r   r   r   Úleave_chè  s:   €


&€"€ûr  Útargetc                 C   s"   |   ¡  d¡ d¡d }| d¡S )u>   Ø§Ù„ØªØ­Ù‚Ù‚ Ø¥Ø°Ø§ ÙƒØ§Ù† Ø§Ù„Ù‡Ø¯Ù� Ø¨ÙˆØª ÙˆÙ„ÙŠØ³ Ù‚Ù†Ø§Ø©ú/éÿÿÿÿÚbot)rà   rB   rF   Úendswith)r  r  r   r   r   Ú_is_bot_target  s   
r  c                 ƒ   s¬  �t  ¡ rdS t|ƒrt d|› d|› d�¡ dS d}d}||k�rT�z>t|ƒ}t|ƒr:t d|› d	|› �¡ W d
S z|  |d¡I d H }|rJW W dS W n	 tyT   Y nw z
|  	|¡I d H  W n' ty† } zdt
|ƒv r€t d|› d	|› �¡ W Y d }~W dS |‚d }~ww t d|› d	|› �¡ t |d¡d t|< t| dkrÁt dd¡}t d|› dt|ƒ› d�¡ t|ƒI d H  dt|< | d¡rÈ|nd|› �}	z%|  |¡I d H }
t|
dd ƒ}|rãd|› �}	t|
j|
j||	dœƒI d H  W n t�y   td |d |	dœƒI d H  Y nw tƒ 4 I d H šC t |	¡ ttƒdk�rGt ¡ }t ¡  d dd„ |D ƒ¡}td|› �dd �I d H  W d   ƒI d H  W dS W d   ƒI d H  W dS 1 I d H �sZw   Y  W dS  t�yS } zåt|t ƒ�rwW Y d }~dS t!|ƒ�r¡t"|ƒ}t#||ƒI d H }|�rštd!|› d"|› �dd#�I d H  W Y d }~d$S t|t$ƒ�rÐ||k �rÀt|j%d% ƒI d H  |d7 }W Y d }~qt &d|› d&�¡ W Y d }~dS t
|ƒ '¡ ‰ t(‡ fd'd„d(D ƒƒ�rõt &d|› d	|› d)�¡ W Y d }~dS t(‡ fd*d„d+D ƒƒ�rt &d|› d	|› d,�¡ W Y d }~dS t(‡ fd-d„d.D ƒƒ�r:||k �r:tt d/d¡ƒI d H  |d7 }W Y d }~qt )d0|› d	|› d1|› �¡ W Y d }~dS d }~ww dS )2NÚfailedz[JOIN SKIP] õ    â†’ u    Ù…Ø­Ø¸ÙˆØ±Ø© - ØªØ®Ø·ÙŠÚskipri   r   z[SKIP_BOT] ú -> Úskip_botÚmeÚokÚINVITE_REQUEST_SENTz[WAIT_APPROVAL] ú[JOIN] rj   ró   é´   r¶   u$    | ÙˆØµÙ„ Ù„Ù„Ø­Ø¯ - Ø§Ø³ØªØ±Ø§Ø­Ø© õ    Ø«Ø§Ù†ÙŠØ©Úhttpr?   r  )r  Útitler  ÚurlrË   rû   c                 s   rü   rý   r   rþ   r   r   r   r   Q  r  zjoin_ch.<locals>.<genexpr>u¡   ðŸ“¢ <b>ØªÙ‚Ø±ÙŠØ± Ø§Ø´ØªØ±Ø§ÙƒØ§Øª Ø¬Ø¯ÙŠØ¯Ø©</b>
âš¡ï¸� Ù‚Ø§Ù… 10 Ø­Ø³Ø§Ø¨Ø§Øª Ø¨Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø¨Ù†Ø¬Ø§Ø­
ðŸ”— <b>Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ù…Ø´ØªØ±Ùƒ Ø¨Ù‡Ø§:</b>
Tr  rÒ   rÓ   rÔ   Úbannedç333333ó?u%    ØªØ¬Ø§ÙˆØ² Ø­Ø¯ FloodWait - ØªØ®Ø·ÙŠc                 3   ó   � | ]}|ˆ v V  qd S rL   r   ©rW   Úk©Úerr_strr   r   r   r  ó   € )r—   r˜   ÚINVITE_HASH_INVALIDzUSERNAME NOT FOUNDÚUSERNAME_NOT_FOUNDu    | ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯ - ØªØ®Ø·ÙŠc                 3   r.  rL   r   r/  r1  r   r   r   y  r3  )ÚCHANNEL_BANNEDÚUSER_BANNED_IN_CHANNELÚCHAT_WRITE_FORBIDDENÚCHAT_JOIN_FORBIDDENÚYOU_BLOCKED_USERÚUSER_BLOCKEDu*    | Ù…Ø­Ø¸ÙˆØ± Ù…Ù† Ø§Ù„Ù‚Ù†Ø§Ø© - ØªØ®Ø·ÙŠc                 3   r.  rL   r   r/  r1  r   r   r   €  r3  )Ú
CONNECTIONzCONNECTION LOSTzCONNECTION RESETzBROKEN PIPEé   ú[JOIN_ERROR] rp   )*r   Úis_setr5   rw   rx   r0   r  Úget_chat_memberr   Ú	join_chatr¦   r   rv   ÚrandomÚuniformry   r.   rD   r¥   rt   r&   r  r*  r:   r9   r  rE   r  r  r  r”   r¿   r   r2   r3   r#   r   r~   r}   r§   Úanyr�   )r­   r›   r  ÚMAX_RETRIESÚretryÚtarget_normÚmemberr‰   Ú	rest_timer+  rx   Úunamer  r  rÌ   râ   r   r1  r   Újoin_ch
  sò   €
ÿÿ€üÿþ
üüÿ
þüúõþó
ÿþü

€Ò/rK  rˆ   Úafter_idc           
      Ã   s.  �t  ¡ rd S |dkrt|ƒI d H  |rdnd}t|ƒD ]x}z<g }| j|dd�2 z3 d H W }| |¡ q(6 |r;|d nd }|rV|rV|j|krV||d k rVt d¡I d H  W q|W   S  t	yv }	 zt|	j
d ƒI d H  W Y d }	~	qd }	~	w ty” }	 zt d|› d|	› �¡ W Y d }	~	 d S d }	~	ww d S )	Nr   r=  rj   ©Úlimitrô   r-  z[MSG] rp   )r   r?  r.   ÚrangeÚget_chat_historyr  r  r`   rz   r   r~   r   rw   r�   )
r­   r<   rˆ   rL  r‡   ÚattemptÚmsgsÚmÚmsgr‰   r   r   r   Úget_msgŒ  s8   €ÿ
€€þrU  c                 C   sj   | sg S g }g d¢}|D ]!}t  || ¡D ]}| d¡}|dkr'| ¡  d¡r'q| |¡ qqtt |¡ƒS )N)z-https?://t\.me/(?:\+|joinchat/)[A-Za-z0-9_-]+z!https?://t\.me/([A-Za-z0-9_]{4,})ú@([A-Za-z0-9_]{4,})r   rV  r  )	ÚreÚfinditerÚgrouprà   r  r  r£   ÚdictÚfromkeys)r„   ÚchsÚpatternsré   rS  Úfoundr   r   r   Úget_chs_from_text©  s   
ür_  c                    ó   g d¢}t ‡ fdd„|D ƒƒS )N)
u   Ø¹Ù„ÙŠÙƒ Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒu
   Ø§Ø´ØªØ±Ùƒu   Ø§Ø´ØªØ±Ø§Ùƒ Ø§Ø¬Ø¨Ø§Ø±ÙŠu   Ø§Ø´ØªØ±Ø§Ùƒ Ø¥Ø¬Ø¨Ø§Ø±ÙŠu"   Ù„ØªØªÙ…ÙƒÙ† Ù…Ù† Ø§Ø³ØªØ®Ø¯Ø§Ù…Ù‡u   Ø£Ø±Ø³Ù„ /startu   Ø§Ø±Ø³Ù„ /startu
   Ø¹Ø°Ø±Ø§Ù‹u   Ø¹Ø°Ø±Ø§u   Ø§Ø´ØªØ±Ùƒ Ø«Ù…c                 3   r.  rL   r   r/  ©r„   r   r   r   Á  r3  zis_sub_msg.<locals>.<genexpr>©rD  ©r„   rî   r   ra  r   Ú
is_sub_msg»  s   rd  c                    r`  )N)u   Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øªu   Ù„Ø§ ØªÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øªu   Ø§Ù†ØªÙ‡Øª Ø§Ù„Ù‚Ù†ÙˆØ§Øªu   Ù„Ø§ ÙŠÙˆØ¬Ø¯u   Ù„ÙŠØ³ Ù„Ø¯ÙŠÙƒu
   Ø§ÙƒÙ…Ù„Øªu
   Ø£ÙƒÙ…Ù„Øªc                 3   r.  rL   r   r/  ra  r   r   r   É  r3  z%is_no_channels_msg.<locals>.<genexpr>rb  rc  r   ra  r   Úis_no_channels_msgÄ  s   re  c                    ó   t ‡ fdd„dD ƒƒS )Nc                 3   r.  rL   r   r/  ra  r   r   r   Í  r3  z(is_not_subscribed_msg.<locals>.<genexpr>)u   Ù„Ù… ØªØ´ØªØ±Ùƒu   ØªØ´ØªØ±u   Ù„Ù… ÙŠØªÙ… Ø§Ù„ØªØ­Ù‚Ù‚rb  ra  r   ra  r   Úis_not_subscribed_msgÌ  ó   rg  c                    rf  )Nc                 3   r.  rL   r   r/  ra  r   r   r   Ñ  r3  z!is_name_change.<locals>.<genexpr>)u   ØªØºÙŠÙŠØ± Ø§Ø³Ù…u   ØºÙŠÙ‘Ø± Ø§Ø³Ù…u   ØºÙŠØ± Ø§Ø³Ù…õ   Ø§Ù„Ø§Ø³Ù… Ø§Ù„ØªØ§Ù„ÙŠõ   Ø§Ø³Ù… Ø­Ø³Ø§Ø¨Ùƒrb  ra  r   ra  r   Úis_name_changeÐ  rh  rk  c                    sþ   | sd S g d¢}dd„ |   ¡ D ƒ}t|ƒD ]g\}‰t‡fdd„|D ƒƒr|dˆv s,dˆv rVtjdˆd	d
�}t|ƒd	krV|d	  ¡  d¡ ¡ ‰ ˆ rVt‡ fdd„dD ƒƒsVˆ   S |d	 t|ƒk r|||d	   ¡  d¡ ¡ ‰ ˆ r|t‡ fdd„dD ƒƒs|ˆ   S qd S )N)ri  rj  u#   ØªØºÙŠÙŠØ± Ø§Ø³Ù… Ø­Ø³Ø§Ø¨Ùƒ Ø¥Ù„Ù‰c                 S   s   g | ]
}|  ¡ r|  ¡ ‘qS r   )rB   )rW   Úlr   r   r   rì   Ú  s    z get_req_name.<locals>.<listcomp>c                 3   r.  rL   r   r/  )Úliner   r   r   Ü  r3  zget_req_name.<locals>.<genexpr>ú:u   ï¼šu   [:ï¼š]rj   )Úmaxsplitu   â€¢-c                 3   r.  rL   r   ©rW   r[   r³   r   r   r   á  r3  )u   Ù‚Ù… Ø¨ØªØºÙŠÙŠØ±õ   Ø§Ø³ØªÙƒÙ…Ø§Ù„u
   Ù„ØªØ¬Ù…Ø¹u   Ø§Ø¶ØºØ·c                 3   r.  rL   r   rp  r³   r   r   r   ç  r3  )Ú
splitlinesÚ	enumeraterD  rW  rF   rE   rB   )r„   ÚkeywordsÚlinesÚiÚpartsr   )r±   rm  r   Úget_req_nameÖ  s$   €rx  c                 C   s>   d}g }| r| j p| jpd}| jrt| jdƒr| jj}||fS )NÚ Úinline_keyboard)r„   ÚcaptionÚreply_markupÚhasattrrz  )rT  r„   Úbtnsr   r   r   Ú	parse_msgî  s   r  c                 C   ó<   | pg D ]}|D ]}dt |ddƒpdv r|    S qqd S )NÚ10xr„   ry  ©rt   ©r~  ÚrowÚbr   r   r   Úbtn_10xø  ó   ÿÿr†  c                 C   sP   | pg D ]!}|D ]}t |ddƒpd}d|v sd|v sd|v r$|    S qqd S )Nr„   ry  u   Ù‚Ø³Ù… ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ù†Ù‚Ø§Ø·u   ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ù†Ù‚Ø§Ø·u   ØªØ¬Ù…ÙŠØ¹ Ù†Ù‚Ø§Ø·r‚  ©r~  r„  r…  r  r   r   r   Ú
btn_points   s   þûr‰  c                    sV   g d¢}| pg D ] }|D ]}t |ddƒpd‰ t‡ fdd„|D ƒƒr'|    S qqd S )N)õ
   ØªÙŠØ±Ø¨Ùˆu   ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ø³Ø±ÙŠØ¹u   Ø§Ù„ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ø³Ø±ÙŠØ¹u   Ø³Ø±ÙŠØ¹ ØªØ¬Ù…ÙŠØ¹r„   ry  c                 3   r.  rL   r   )rW   r„   ©Úbtn_textr   r   r     r3  zbtn_turbo.<locals>.<genexpr>)rt   rD  )r~  Útarget_textsr„  r…  r   r‹  r   Ú	btn_turbo  s   ÿþrŽ  c                 C   r€  )Nu   ØªØ¬Ù…ÙŠØ¹ Ø¨Ø³Ø±Ø¹Ø©r„   ry  r‚  rƒ  r   r   r   Úbtn_fast  r‡  r�  c                 C   óH   | pg D ]}|D ]}t |ddƒpd}d|v sd|v r |    S qqd S )Nr„   ry  u   Ø§Ø³ØªÙƒÙ…Ø§Ù„ Ø§Ù„ØªØ¬Ù…ÙŠØ¹rq  r‚  rˆ  r   r   r   Úbtn_complete   ó   ÿþr‘  c                 C   r€  )Nu   ØªØ­Ù‚Ù‚r„   ry  r‚  rƒ  r   r   r   Ú
btn_verify)  r‡  r“  c                 C   r�  )Nr„   ry  u   Ø§Ù„ØªØ§Ù„ÙŠu   ØªØ§Ù„ÙŠr‚  rˆ  r   r   r   Úbtn_next1  r’  r”  c                 C   sT   | pg D ]#}|D ]}t |ddƒpd}d|v s d|v s d| ¡ v r&|    S qqd S )Nr„   ry  u   Ø§Ø¹Ø¯ Ø§Ù„Ù…Ø­Ø§ÙˆÙ„u   Ø£Ø¹Ø¯ Ø§Ù„Ù…Ø­Ø§ÙˆÙ„rF  )rt   rà   rˆ  r   r   r   Ú	btn_retry:  s   ÿþr•  c                    s|   g }g d¢}| p	g D ]1}|D ],}t |dd ƒ}t |ddƒpd ¡ ‰ |r:d|v s*d|v r:t‡ fdd„|D ƒƒs:| |¡ qq
|S )	N)
u
   ØªØ¬Ù…ÙŠØ¹rŠ  r�  u   Ø±Ø¬ÙˆØ¹u
   Ø­Ø³Ø§Ø¨ÙŠu   ÙƒÙˆØ¯u   Ù†Ø¬ÙˆÙ…u
   Ø¨Ù†Ø¬ÙˆÙ…u$   Ø§Ø´ØªØ±Ø§Ùƒ Ø§Ø¬Ø¨Ø§Ø±ÙŠ Ø¨Ù†Ø¬ÙˆÙ…u"   Ø´ØªØ±Ø§Ùƒ Ø§Ø¬Ø¨Ø§Ø±ÙŠ Ø¨Ù†Ø¬ÙˆÙ…r+  r„   ry  r@   ztelegram.me/c                 3   r.  rL   r   )rW   Úterm©r  r   r   r   O  r3  zget_ch_btns.<locals>.<genexpr>)rt   rB   rD  r  )r~  ÚresultÚexclude_termsr„  r…  r+  r   r—  r   Úget_ch_btnsC  s   
€ûrš  c                 C   s.   t | ƒsdS t| ƒpt| ƒpt| ƒpt| ƒ S )NF)rš  r†  r‰  rŽ  r�  )r~  r   r   r   Úis_sub_by_btnsT  s   "r›  c                 C   s`   z%g }| pg D ]}|D ]}|  t|ddƒpt|ddƒpd¡ qqd |¡W S  ty/   Y dS w )Nr„   ry  r+  ú|)r  rt   r  r   )r~  rî   r„  r…  r   r   r   Ú	btns_hashZ  s   $ÿÿr�  c                 Ã   sˆ  �t | ddƒ}t |dd ƒ}|r|jnd}|j}t|tƒr'|d d… jdd�}nt|ƒd d… }t d|› d|› d	|› �¡ t	 
¡ rCd S td
ƒD ]ú}zFddlm} |  |jj¡I d H }	|j}
t|
tƒrf|
 ¡ }
tj|  ||	|j|
dd�¡dd�I d H }t d|› d|› d|d › d�¡ |W   S  tjyº   t d|› d|› d|d › d�¡ |dkr¶t d¡I d H  Y qGY  dS  tyç } z"t d|› d|› d|j› d�¡ t|jd ƒI d H  W Y d }~ d S d }~w t�yA } zNt|ƒ ¡ }d|v �rt d|› d|› d�¡ W Y d }~ dS d|v �r't d|› d|› d�¡ W Y d }~ dS t d|› d|› d|› �¡ W Y d }~ d S d }~ww d S )Nr›   ÚunknownÚchaté    Úignore)Úerrorsz[CLICK] ú @u    â–¶ Ø²Ø±: rô   r   )ÚGetBotCallbackAnswerF)ÚpeerÚmsg_idÚdataÚgamerq   rÊ   u    âœ“ Ù†Ø¬Ø§Ø­ (Ù…Ø­Ø§ÙˆÙ„Ø© rj   ú)u    â�± Timeout (Ù…Ø­Ø§ÙˆÙ„Ø© r=  ÚTIMEOUTu    âš ï¸� FloodWait rk   r-  ÚDATA_INVALIDu    â–  DATA_INVALIDu    â–  TIMEOUTu    âœ— Ø®Ø·Ø£: )rt   r  Úcallback_datar¿   ÚbytesÚdecoder¦   rw   rx   r   r?  rO  Úpyrogram.raw.functions.messagesr¤  Úresolve_peerrŸ  r  Úencoder`   rÎ   rÇ   rÞ   r}   rz   r   r~   r.   r   r§   r�   )r­   rT  Úbtnr›   r<   Úcb_dataÚ
cb_previewrQ  r¤  r¥  ÚcbÚrespr‰   r2  r   r   r   Ú	click_btnh  sd   €


ÿü"
" €

€÷çr·  é   c                 Ã   s   �t  d|› d|› d�¡ t ¡ rdS t|ƒd |… }|s(t  d|› d�¡ dS tƒ I d H }d}d}t|ƒ}t  d|› d|› d|› �¡ t|ƒD ]ˆ\}	}
t ¡ rR n|
j	rÁzFt
|
j	ƒ}t  d|› d	|	d
 › d|› d|› �¡ t| ||ƒI d H }|dkr€|d
7 }n|dv r‰|d
7 }n|dkršt  d|› d�¡ W  dS W n% tyÀ } zt  d|› d|
j	› d|› �¡ |d
7 }W Y d }~nd }~ww |	|d
 k rÐtt|ƒƒI d H  qH||kràt  d|› d�¡ dS ||krït  d|› d�¡ dS t  d|› d|› d|› d�¡ dS )Nz[JOIN_BATCH] u    â–¶ Ø§Ù†Ø¶Ù…Ø§Ù… Ø¯Ù�Ø¹Ø© (u    Ù‚Ù†Ø§Ø© ÙƒØ­Ø¯ Ø£Ù‚ØµÙ‰)r$  u(    â–  Ù„Ø§ ØªÙˆØ¬Ø¯ Ø£Ø²Ø±Ø§Ø± Ù‚Ù†ÙˆØ§Øªr   u    Ø¥Ø¬Ù…Ø§Ù„ÙŠ: u    Ù‡Ø¯Ù�ØŒ spd=z [rj   r  u   ] â†’ r"  )r   r  r,  u+    â–  Ù…Ø­Ø¸ÙˆØ± Ø£Ø«Ù†Ø§Ø¡ Ø§Ù„Ø§Ù†Ø¶Ù…Ø§Ù…r>  r!  rp   r&  uH    | ÙƒÙ„ Ø§Ù„Ø£Ù‡Ø¯Ø§Ù� Ø¨ÙˆØªØ§Øª - Ø§Ø¹ØªØ¨Ø§Ø± Ø§Ù„Ø­Ø³Ø§Ø¨ Ø§ÙƒØªÙ…Ù„Úall_botsuO    | ÙƒÙ„ Ø§Ù„Ø£Ù‡Ø¯Ø§Ù� ØºÙŠØ± Ù…ØªØ§Ø­Ø© - Ø§Ø¹ØªØ¨Ø§Ø± Ø§Ù„Ø­Ø³Ø§Ø¨ Ø§ÙƒØªÙ…Ù„Úall_skipu    âœ“ Ø§ÙƒØªÙ…Ù„ (bots=z
, skipped=r©  )rw   rx   r   r?  rš  r|   r   rE   rs  r+  r0   rK  r}   r   r�   r.   r-   )r­   r›   r~  Úmax_channelsÚch_btnsÚspdÚ	bot_countÚ
skip_countÚtotalrv  r…  r  r˜  r‰   r   r   r   Újoin_from_btns˜  sZ   €
&

€€þ€rÁ  r  Úsub_seenc                 C   sH   g }| D ]}t |ƒ}| |d¡d ||< || dkr!| t|ƒ¡ q|S )Nr   rj   )r1   rv   r  r0   )r  rÂ  Úloopedr  r_   r   r   r   Ú_detect_loopÈ  s   €rÄ  c              	   Ã   sš   �|D ]G}t  ¡ r d S z|  |¡I d H  tt|ƒƒI d H  W n	 ty(   Y nw tttƒƒI d H  t| ||ƒI d H  tt|ƒƒI d H  d|t|ƒ< qd S )Nrj   )	r   r?  r  r.   r-   r   r   rK  r1   )r­   r›   rÃ  rÂ  r½  r  r   r   r   Ú_handle_loopÒ  s   €ÿõrÅ  r+  c                 Ã   sÖ   �zHt |ƒ}t|ƒsW dS z| j|dd�I d H }|rW W dS W n	 ty(   Y nw |  |d¡I d H  t d|› d|› d�¡ ttt	ƒƒI d H  W dS  tyj } zt 
d|› d|› d	|› �¡ W Y d }~dS d }~ww )
NFrj   rM  ú/startz[BOT START] r  u    ØªÙ… Ø¥Ø±Ø³Ø§Ù„ /startTrp   )r0   r  rP  r   r{   rw   rx   r.   r-   r   r}   )r­   r›   r+  r  Úhistoryr‰   r   r   r   Ú_start_bot_if_neededà  s,   €ÿÿ€þrÈ  c                 Ã   s  �t  ¡ r
|g dfS |s|g dfS t|ƒ\}}t|ƒs ||dfS t|ƒ}|s+||dfS d}tdƒD ]b}t  ¡ r>||df  S z| j|dd�I d H  d}W  nF tyi }	 zt|	j	d ƒI d H  W Y d }	~	q1d }	~	w t
y“ }	 zt d|d › d	|› d
|	› �¡ tttƒƒI d H  W Y d }	~	q1d }	~	ww |s›||dfS tttƒƒI d H  t|ƒ}
|
sÃt| ||jd�I d H }|rÃ|}t|ƒ\}}t|ƒ}
|
rèt| ||
ƒI d H }|dv rçt| ||jd�I d H }|rç|}t|ƒ\}}ntttƒƒI d H  t| ||jd�I d H }|�r|}t|ƒ\}}||dfS )NFri   ry  )Ú
first_nameÚ	last_nameTr-  z[NAME] rj   ú rp   ©rL  )r«  rª  )r   r?  r  rk  rx  rO  Úupdate_profiler   r.   r~   r   rw   r�   r-   r   r‘  rU  r  r·  )r­   r›   r<   rT  r„   r~  Úreq_nameÚupdatedrQ  r‰   ÚcompÚrefr˜  r   r   r   Úhandle_nameö  sf   €



 € €þ
€
rÒ  c              
   Ã   sD  �t  d|› d|› d�¡ |tv r*t ¡ t| k r't  d|› d|› d�¡ dS t|= d}d}d}d}||}	}
d	}tƒ I d H }t  d|› d|› d
|› �¡ ||k �r t ¡ rXdS |d7 }t  d|› d|› d|› d|› �¡ t	|	ƒ\}}t
|ƒr…t  d|› d|› d�¡ dS t|
ƒ}t|
ƒ}||kr¢|d	kr¢|s¢t  d|› d�¡ dS |}|rÒt  d|› dt|ƒ› d�¡ t| ||
ƒI d H }|dv rÃdS |dkrÉdS tttƒƒI d H  t|
ƒ}|�r[t  d|› d�¡ t| |	|ƒI d H  tttƒd ƒI d H  t| ||	jd�I d H }|�r[|}	t	|	ƒ\}}
t
|ƒ�rt  d|› d�¡ dS t|ƒ�rX|d7 }t  d|› d|› d|› d�¡ ||k�rDt  d|› d�¡ dS t|
ƒ}|�rWt  d|› d�¡ t| |	|ƒI d H  tttƒƒI d H  t| ||	jd�I d H }|�rW|}	t	|	ƒ\}}
t|
ƒ}|�rWt  d|› dt|ƒ› d�¡ |D ]A}|j�rÓt ¡ �sÓt|jƒ}z$|  |¡I d H  tdƒI d H  t| ||ƒI d H  tt|ƒƒI d H  W �q“ t�yÒ   Y �q“w �q“tttƒƒI d H  t|
ƒ}|�rWt  d|› d�¡ t| |	|ƒI d H  tttƒd ƒI d H  t| |ƒI d H }|�rt	|ƒ\}}|�rW|}	t	|	ƒ\}}
t
|ƒ�r.t  d|› d �¡ dS t|ƒ�rWt|
ƒ}|D ]}|j�rSt|jƒI d H  t  d|› d!|j› �¡ �q9dS qMd}qMt|
ƒ}|�r‹t| |	|ƒI d H  tttƒƒI d H  t| ||	jd�I d H }|�r‹|}	t	|	ƒ\}}
qMt|
ƒ�sœt|
ƒ�sœt|
ƒ�sœdS ||k sRdS )"Nz[ROUND] r£  u#    â–¶ Ø¨Ø¯Ø¡ Ø¬ÙˆÙ„Ø© Ø§Ù„ØªØ¬Ù…ÙŠØ¹u    â–  Skip - Ù�ÙŠ flood_mapr$  rË   ri   r   ry  z spd=Ústoppedrj   z inner=r  u&    âœ“ Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øª â†’ donerŒ   ú	[GATHER] u1    | Ù„Ø§ ØªØºÙŠÙŠØ± Ù�ÙŠ Ø§Ù„Ø£Ø²Ø±Ø§Ø± - Ø®Ø±ÙˆØ¬u    | Ø§Ø´ØªØ±Ø§Ùƒ Ù�ÙŠ õ	    Ù‚Ù†Ø§Ø©)r¹  rº  r,  u    | Ø¶ØºØ· ØªØ­Ù‚Ù‚rÌ  u/    | ØªØ­Ù‚Ù‚ Ù†Ø§Ø¬Ø­ - Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øªu    | Ù„Ù… ØªØ´ØªØ±Ùƒ (r©  u1    | ØªØ¬Ø§ÙˆØ² Ø­Ø¯ Ù�Ø´Ù„ Ø§Ù„ØªØ­Ù‚Ù‚ - Ø®Ø±ÙˆØ¬u!    | Ø¶ØºØ· Ø£Ø¹Ø¯ Ø§Ù„Ù…Ø­Ø§ÙˆÙ„Ø©u*    | Ù…ØºØ§Ø¯Ø±Ø© ÙˆØ¥Ø¹Ø§Ø¯Ø© Ø§Ù†Ø¶Ù…Ø§Ù… u5    | Ø¶ØºØ· ØªØ­Ù‚Ù‚ Ø¨Ø¹Ø¯ Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„Ø§Ù†Ø¶Ù…Ø§Ù…u7    | ØªØ­Ù‚Ù‚ Ù†Ø§Ø¬Ø­ Ø¨Ø¹Ø¯ Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„Ø§Ù†Ø¶Ù…Ø§Ù…u%    | Ù‚Ù†Ø§Ø© Ù…Ø¹Ø·Ù„Ø© Ù…Ø­Ø¸ÙˆØ±Ø©: )rw   rx   r   rb   r}   r   r|   r   r?  r  re  rš  r�  rE   rÁ  r.   r-   r   r“  r·  rU  r  rg  r•  r+  r0   r  rK  r   r6   r”  )r­   r›   r<   rT  r~  Ú	MAX_INNERÚMAX_VERIFY_FAILÚinnerÚverify_failÚcurrent_msgÚcurrent_btnsÚ	last_hashr½  r„   Ú_r¼  Úcurrent_hashÚjoin_resultÚvbÚnew_msgÚrbÚ	retry_msgÚ	retry_chsr…  r  Úvb2Únew_msg2Ú_t2Útext2Ú	stuck_chsÚnbr   r   r   Údo_gather_round)  s  €

"

ÿ

ÿÿÿÿ
ÿ€
ÿ

ÿ
ÿÿ€
ÿþ �ø 
rë  c                 ƒ   s¢  �t  dˆ› dˆ › d�¡ t ¡ rt  dˆ› dˆ › d�¡ dS zddlm} ˆ |ƒ ¡I d H  W nW ty‡ } zKt|ƒrnt	|ƒ}t
ˆ|ƒI d H }|rYtdˆ› d	|› �d
d�I d H  t  dˆ› dˆ › d|› �¡ W Y d }~dS t  dˆ› dˆ › d|› �¡ W Y d }~dS d }~ww ‡ ‡‡fdd„}dtf‡ ‡‡fdd„}|ƒ I d H }	|	d u r³t  dˆ› dˆ › d�¡ dS |	\}
}}||
||ƒI d H }t  dˆ› dˆ › d|› �¡ |S )Nz[RUN_ACCOUNT] r£  u    â–¶ Ø¨Ø¯Ø¡ Ø§Ù„Ù…Ø¹Ø§Ù„Ø¬Ø©u    â–  stop_eventrÓ  r   )ÚGetStaterÒ   rÓ   TrÔ   u    â–  Ù…Ø­Ø¸ÙˆØ±: r,  u    â–  Ø®Ø·Ø£ GetState: r�   c                  “   sH  �d} i ‰d}d‰ | |k �r–t  ¡ rd S | d7 } �z¼t dˆ› d| › �¡ ˆ ˆd¡I d H  tttƒt 	dd¡ ƒI d H  t
ˆˆƒI d H }|sRtttƒƒI d H  W q	t|ƒ\}}t|ƒ�rlt dˆ› d	�¡ t|ƒ}t|ƒD ]‰ˆjr~ˆj|vr~| ˆj¡ qn|d d
… }t dˆ› d|› �¡ t|ˆƒ}|rõ‡ ‡fdd„|D ƒ}|rµt dˆ› d|› d�¡ ||dfW S t|ƒ}|rÚt dˆ› d�¡ tˆ||ƒI d H  tttƒd ƒI d H  W q	tˆˆ|ˆtƒ I d H d�I d H  tttƒƒI d H  W q	tƒ I d H }	t|ƒD ]a\}
‰t  ¡ �r W d S ttˆƒƒ�rtˆˆˆƒI d H  n1tˆˆtˆƒƒI d H }|dk�r1 W d S tƒ I d H }t‡fdd„|D ƒd ƒ}ttˆƒˆ|ƒI d H  |
t |ƒd k �r`tt|	ƒƒI d H  qÿtttƒƒI d H  W q	t!|ƒ�rqt dˆ› d�¡ t|ƒd d
… }dd„ |D ƒ}t|ˆƒ}|�rñ‡ ‡fdd„|D ƒ}|�r°t dˆ› d|› d�¡ ||dfW S t|ƒ}|�rÖt dˆ› d�¡ tˆ||ƒI d H  tttƒd ƒI d H  W q	tˆˆ|ˆtƒ I d H d�I d H  tttƒƒI d H  W q	tƒ I d H }	t|ƒD ]j\}
‰t  ¡ �r W d S ˆj�rdttˆjƒƒ�rtˆˆˆjƒI d H  n3tˆˆtˆjƒƒI d H }|dk�r4 W d S tƒ I d H }t‡fdd„|D ƒd ƒ}ttˆƒˆj|ƒI d H  |
t |ƒd k �rdtt|	ƒƒI d H  �qûtttƒƒI d H  W q	t"ˆˆˆ|ƒI d H \}}}t#|ƒ�r’t dˆ› d�¡ ||dfW S t$|ƒ�r¦t dˆ› d�¡ ||dfW S t|ƒ\}}t%|ƒ�rÀt dˆ› d�¡ ||dfW S t dˆ› d �¡ tttƒd! ƒI d H  W n¼ t&�y‘ } z¯t'|ƒ�rt(|ƒ}t)ˆ|ƒI d H }|�rt*d"ˆ› d#|› �d$d%�I d H  W Y d }~d S t+|t,ƒ�r>|j-}|d& }t. .¡ | t/ˆ< t*d'ˆ› d(|› d)|› d*�d$d%�I d H  t|ƒI d H  t/ 0ˆd ¡ nIt1|ƒ 2¡ }d+|v �rut dˆ› d,�¡ d-}t)ˆ|ƒI d H }|�rnt*d.ˆ› d#|› �d$d%�I d H  W Y d }~d S t 3d/ˆ› d0|› �¡ tdƒI d H  W Y d }~nd }~ww | |k st dˆ› d1|› d2�¡ d S )3Nr   ró   ri   rj   rÔ  u&    | Ø¥Ø±Ø³Ø§Ù„ /start Ù„Ù„Ù…Ø­Ø§ÙˆÙ„Ø© rÆ  r=  u'    | Ø§Ø´ØªØ±Ø§Ùƒ Ø¥Ø¬Ø¨Ø§Ø±ÙŠ Ù…Ø·Ù„ÙˆØ¨r¸  z[SUB LIST] u$    | Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ù…ÙƒØªØ´Ù�Ø©: c                    ó$   g | ]}ˆ  t|ƒd ¡ˆ kr|‘qS ©r   ©rv   r1   ©rW   r  ©ÚMAX_SAME_CHrÂ  r   r   rì     ó
    ÿz6run_account_once.<locals>.do_start.<locals>.<listcomp>u    | Ù‚Ù†Ø§Ø© Ø¹Ø§Ù„Ù‚Ø© u    - ØªØ®Ø·ÙŠ ÙˆØ§ÙƒØªÙ…Ø§Ù„rŒ   uo    | Ø§Ø´ØªØ±Ø§Ùƒ Ø¥Ø¬Ø¨Ø§Ø±ÙŠ Ù…ÙƒØ±Ø± (Ù‚Ù†ÙˆØ§Øª Ø·Ù„Ø¨ Ø§Ù†Ø¶Ù…Ø§Ù…) - Ø¶ØºØ· ØªØ­Ù‚Ù‚ Ø«Ù… Ø¥Ø¹Ø§Ø¯Ø© /start)r½  r,  c                 3   s0   � | ]}t | d d¡ƒt ˆ ƒkr|d V  qdS ©r+  ry  r  N)r1   rv   ©rW   r±   r—  r   r   r   '  s   € ÿÿz5run_account_once.<locals>.do_start.<locals>.<genexpr>u.    | Ø§Ø´ØªØ±Ø§Ùƒ Ø¥Ø¬Ø¨Ø§Ø±ÙŠ Ø¹Ø¨Ø± Ø£Ø²Ø±Ø§Ø±c                 S   s   g | ]}|j r|j ‘qS r   )r+  ©rW   r…  r   r   r   rì   2  rí   c                    rí  rî  rï  rð  rñ  r   r   rì   5  ró  c                 3   s2   � | ]}t | d d¡ƒt ˆ jƒkr|d V  qdS rô  )r1   rv   r+  rõ  )r…  r   r   r   Z  s   € ÿÿu    | Ù†ÙˆØ¹ Ø§Ù„Ø¨ÙˆØª: fastÚfastu    | Ù†ÙˆØ¹ Ø§Ù„Ø¨ÙˆØª: pointsÚpointsu/    | Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øª Ù…Ù† Ø§Ù„Ø¨Ø¯Ø§ÙŠØ©u,    | Ø­Ø§Ù„Ø© ØºÙŠØ± Ù…Ø¹Ø±ÙˆÙ�Ø© - Ø¥Ø¹Ø§Ø¯Ø©rô   rÒ   rÓ   TrÔ   r�   uA   âš ï¸� Ø­Ø³Ø§Ø¨ ØªØ¹Ø±Ø¶ Ù„Ù€ FloodWait
ðŸ‘¤ Ø§Ù„Ø­Ø³Ø§Ø¨: <code>u   </code>
â�° ÙˆÙ‚Øª Ø§Ù„Ø­Ø¸Ø±: u/    Ø«Ø§Ù†ÙŠØ©
âŒ›ï¸� Ø³ÙŠØ¨Ø¯Ø£ Ø¹Ù…Ù„Ù‡ Ø¨Ø¹Ø¯: r(  r—   uy    | USERNAME_NOT_OCCUPIED - Ø§Ù„Ø­Ø³Ø§Ø¨ Ù…Ø­Ø¸ÙˆØ±/Ù…Ø¬Ù…Ø¯/Ù…Ø­Ø°ÙˆÙ� (Ø§Ù„Ø¨ÙˆØª ØªÙ… Ø§Ù„ØªØ­Ù‚Ù‚ Ù…Ù†Ù‡ Ù…Ø³Ø¨Ù‚Ø§Ù‹)u   Ù…Ø­Ø¸ÙˆØ±/Ù…Ø¬Ù…Ø¯/Ù…Ø­Ø°ÙˆÙ�uF   ðŸš« Ø­Ø³Ø§Ø¨ Ù…Ø­Ø¸ÙˆØ±/Ù…Ø¬Ù…Ø¯/Ù…Ø­Ø°ÙˆÙ�
ðŸ‘¤ Ø§Ù„Ø­Ø³Ø§Ø¨: <code>z[GATHER] do_start rp   u    | Ù�Ø´Ù„ Ø¨Ø¹Ø¯ rr   )4r   r?  rw   rx   r{   r.   r-   r   rB  rC  rU  r  rd  r_  rš  r+  r  rÄ  r}   r“  r·  rÅ  r   rs  r  r0   rÈ  rK  r%   Únextr*   rI   rE   r›  rÒ  r�  r‰  re  r   r2   r3   r#   r”   r¿   r   r~   rb   r   rö   r¦   r§   r�   )rQ  ÚMAX_ATTEMPTSrT  r„   r~  r\  rÃ  Ú
over_limitÚ_vbr½  rv  ÚrÚ_chsÚ_ch_idr¼  ÚurlsrÝ  r‰   rÌ   râ   Úwait_secÚ
resume_secr2  ©r<   r­   r›   )rò  r…  rÂ  r  r   Údo_startå  s~  €

€
ÿÿÿ
ÿ
þ

ÿ€

ÿÿÿ
ÿ
þ

ÿ€



ÿþüÿþýû

ÿÿþü€Ó �÷ 8z"run_account_once.<locals>.do_startr=   c                 “   s  �d}|dkr—t |ƒ}|sdS t dˆ› d�¡ tˆ| |ƒI d H }t ¡ r'dS tttƒ|dkr1dnd	 ƒI d H  t	ˆˆ | j
d
�I d H }|sTtdƒI d H  t	ˆˆ ƒI d H }|sXdS tˆˆˆ |ƒI d H \}}}t|ƒ\}}t ¡ rqdS t|ƒr‰t dˆ› d�¡ tˆˆˆ ||ƒI d H S t|ƒ\}	}t|	ƒr•dS dS |dk�rŠd	}
t|ƒ}|s¦dS t dˆ› d�¡ tˆ| |ƒI d H  t ¡ r¾dS tttƒƒI d H  t	ˆˆ | j
d
�I d H } | sÖdS tˆˆˆ | ƒI d H \} }}t| ƒ\}}t|ƒpðt|ƒ}|sþt dˆ› d�¡ dS t dˆ› d�¡ tˆ| |ƒI d H  t ¡ �rdS tttƒƒI d H  t	ˆˆ | j
d
�I d H } | �s0dS t| ƒ\}}t| ƒ\}	}t|	ƒ�rLt dˆ› d�¡ dS t|ƒ�rŒtˆˆˆ | |ƒI d H }|dv �rc|S tttƒƒI d H  t	ˆˆ ƒI d H } | �sydS tˆˆˆ | ƒI d H \} }}t| ƒ\}}|
|k �rˆt ¡ �r˜dS |
d7 }
t|ƒ}|�s¥dS t dˆ› d|
› d�¡ tˆ| |ƒI d H  t ¡ �rÁdS tttƒƒI d H  t	ˆˆ | j
d
�I d H } | �sÚ�qŒtˆˆˆ | ƒI d H \} }}t| ƒ\}}t|ƒ�põt|ƒ}|�sûdS t dˆ› d|
› d�¡ tˆ| |ƒI d H  t ¡ �rdS tttƒƒI d H  t	ˆˆ | j
d
�I d H } | �s0�qŒt| ƒ\}}t|ƒ�rvtˆˆˆ | |ƒI d H }|dv �rM|S tttƒƒI d H  t	ˆˆ ƒI d H } | �sc�qŒtˆˆˆ | ƒI d H \} }}t| ƒ\}}t| ƒ\}	}t|	ƒ�rƒdS |
|k �s‘dS dS )NrË   r÷  r$  rÔ  u    | Ø¶ØºØ· ØªØ¬Ù…ÙŠØ¹ Ø¨Ø³Ø±Ø¹Ø©rÓ  rª  ri   r   rÌ  u"    | Ù‚Ù†ÙˆØ§Øª Ø¸Ù‡Ø±Øª Ø¨Ø¹Ø¯ fastrŒ   rø  u!    | Ø¶ØºØ· ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ù†Ù‚Ø§Ø·u     | Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ø²Ø± ØªÙŠØ±Ø¨Ùˆu    | Ø¶ØºØ· ØªÙŠØ±Ø¨Ùˆu4    | Ù„Ø§ ÙŠÙˆØ¬Ø¯ Ù‚Ù†ÙˆØ§Øª Ø¨Ø¹Ø¯ ØªÙŠØ±Ø¨Ùˆ - done)rŒ   rÓ  rj   u    | Ø¯ÙˆØ±Ø© u!    - Ø¶ØºØ· ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ù†Ù‚Ø§Ø·u    - Ø¶ØºØ· ØªÙŠØ±Ø¨Ùˆ)r�  rw   rx   r·  r   r?  r.   r-   r   rU  r  rÒ  r  rš  rë  re  r‰  r†  rŽ  r}   )rT  r~  Úbot_typeÚ
MAX_CYCLESÚfbr˜  rá  Únew_btnsrÝ  r„   ÚcycleÚpbÚxbÚround_resultr  r   r   Údo_cycle¥  sê   €"











ÿ


Ò0z"run_account_once.<locals>.do_cycleu&    â–  do_start Ø£Ø¹Ø§Ø¯ None â†’ failedr  u"    â–  Ø§Ù†ØªÙ‡Ù‰ Ø¨Ø§Ù„Ù†ØªÙŠØ¬Ø©: )rw   rx   r   r?  rÆ   rì  rÇ   r   r2   r3   r#   r”   r}   r�   r¦   )r­   r›   r<   rì  r‰   rÌ   râ   r  r  r˜  rT  r~  r  Úcycle_resultr   r  r   Úrun_account_onceÌ  sN   €ÿþü€ò A 
r  c                 ƒ   s”  �t ƒ I d H  tˆ	ƒI d H s-tdˆ	› d�dd�I d H  tddƒI d H  tddƒI d H  d S tdd	�I d H }tƒ I d H }|sXtd
dd�I d H  tddƒI d H  tddƒI d H  d S tdˆ	› dt|ƒ› d|› �dd�I d H  t dˆ	› dt|ƒ› d|› �¡ t	 
tƒ ¡}t	 
tƒ ¡}t	 ¡ ‰|D ]
}ˆ |¡I d H  qŽd\}}t|ƒ}td|› d�dd�I d H }	|D ]g}t ¡ r¸ n`|d }
zt|
ƒI d H  |d7 }t dˆ	› d|
› d|› d|› d�	¡ W n! tyü } z|d7 }t d|
› d|› �¡ W Y d }~nd }~ww t|	�pg d|› d|› d�ƒI d H  t	 d¡I d H  q°td|› d |› d!�dd�I d H  i ‰
d"‰ d#‰g ‰d$‰d%‰d&‰d'g‰d(tfd)d*„‰dtd(tf‡ ‡‡
fd+d,„‰d-tf‡‡‡‡‡‡‡‡	‡
‡f
d.d/„‰‡fd0d1„t|ƒD ƒ}zvt	j|d2diŽI d H  W ||fD ]}| ¡  z|I d H  W �q{ t	jtf�y—   Y �q{w tt  ¡ ƒD ]}z
t!|ƒI d H  W �qž t�yµ   Y �qžw ztd3ˆ	› �dd�I d H  W n
 t�yÎ   Y nw tddƒI d H  tddƒI d H  d S ||fD ]}| ¡  z|I d H  W �qå t	jtf�y   Y �qåw tt  ¡ ƒD ]}z
t!|ƒI d H  W �q t�y   Y �qw ztd3ˆ	› �dd�I d H  W n
 t�y8   Y nw tddƒI d H  tddƒI d H  w )4Nu   âš ï¸� Ø§Ù„Ø¨ÙˆØª @uY    ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯ Ø£Ùˆ username Ø®Ø§Ø·Ø¦!
ÙŠØ±Ø¬Ù‰ Ù…Ø±Ø§Ø¬Ø¹Ø© Ø§Ù„Ø¨ÙˆØª Ø§Ù„Ù…Ø¶Ø§Ù�.TrÔ   Ú	is_activeÚ0Ú
active_botry  r™   u+   âš ï¸� Ù„Ø§ ØªÙˆØ¬Ø¯ Ø­Ø³Ø§Ø¨Ø§Øª Ù†Ø´Ø·Ø©!u:   ðŸš€ Ø¨Ø¯Ø£Øª Ø¹Ù…Ù„ÙŠØ© Ø§Ù„ØªØ¬Ù…ÙŠØ¹
ðŸ¤– Ø§Ù„Ø¨ÙˆØª: @õ   
ðŸ‘¥ Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª: u   
âš¡ Ø§Ù„ØªØ²Ø§Ù…Ù†: z[RUN_GATHER] @u    â–¶ Ø¨Ø¯Ø¡ | Ø­Ø³Ø§Ø¨Ø§Øª=z concurrent=©r   r   õ,   â�³ Ø¹Ø²ÙŠØ²ÙŠ Ø§Ù„Ù…Ø·ÙˆØ± Ø¬Ø§Ø±Ù� Ù�ØªØ­ õ9    Ø¬Ù„Ø³Ø©...
âœ… ØªÙ… Ù�ØªØ­ Ø­ØªÙ‰ Ø§Ù„Ø§Ù†: 0 Ø¬Ù„Ø³Ø©.r›   rj   z
[WARMUP] @u    âœ“ ú (r  r©  õ   [WARMUP] âœ— rp   õ.    Ø¬Ù„Ø³Ø©...
âœ… ØªÙ… Ù�ØªØ­ Ø­ØªÙ‰ Ø§Ù„Ø§Ù†: õ
    Ø¬Ù„Ø³Ø©.õ7   âœ… Ø§ÙƒØªÙ…Ù„ Ù�ØªØ­ Ø§Ù„Ø¬Ù„Ø³Ø§Øª
âœ“ Ù…Ù�ØªÙˆØ­Ø©: õ    | âœ— Ù�Ø§Ø´Ù„Ø©: õ'   
ðŸš€ Ø¨Ø¯Ø¡ Ø§Ù„ØªØ¬Ù…ÙŠØ¹ Ø§Ù„Ø¢Ù†...r=  r¶   é   rq   r�   rV   r=   c                    s"   t | ƒ ¡ ‰ t‡ fdd„dD ƒƒS )Nc                 3   r.  rL   r   r/  ©rk   r   r   r   {  r3  z8run_gather.<locals>._is_network_error.<locals>.<genexpr>)	ztoo many open fileszerrno 24Ú
connectionzcannot connectÚnetworkz	timed outr¸   ÚdnsÚssl)r¦   rà   rD  )r‰   r   r  r   Ú_is_network_errory  s   z%run_gather.<locals>._is_network_errorc                    s.   ˆ  | d¡}|dkrˆ S tˆ d|d   ˆƒS )Nr   rô   rj   )rv   rc   )r›   Ún)ÚBACKOFF_BASEÚBACKOFF_CAPÚ
fail_countr   r   Ú_account_backoff�  s   z$run_gather.<locals>._account_backoffÚ	worker_idc                 “   s  �t  ¡ �s�z§t ¡ }|ˆd k r#t tdˆd | ƒ¡I d H  W qzˆ ¡ }W n tjy<   t d¡I d H  Y W qw |d }|tv rbt ¡ t| k r_ˆ 	|¡I d H  t d¡I d H  W qt|= t t
 dd¡¡I d H  z	t|ƒI d H }W n” t�y } z‡t d| › d|› d|› �¡ t|ƒs–|tv r£ˆ |d ¡ W Y d }~W qˆ |d¡d	 ˆ|< ˆ|ƒ}ˆ|ƒrðt ¡ }ˆ	 |¡ ˆ	r×|ˆ	d  ˆkr×ˆ	 d¡ ˆ	r×|ˆ	d  ˆksÈtˆ	ƒˆ krð|ˆ ˆd< ˆ	 ¡  t d
ˆ› d�¡ ˆ 	|¡I d H  t |¡I d H  W Y d }~W qd }~ww t|ƒ4 I d H š t||ˆƒI d H }W d   ƒI d H  n1 I d H �s/w   Y  ˆ |d ¡ t d| › d|› d|› �¡ |dk�rOW q|dk�r_ˆ 	|¡I d H  W d S |dk�r‰td|› dˆ› d�dd�I d H  t|ƒI d H  |f‡fdd„	}	t|	ƒ ƒ n$|dk�r¥t d|› d�¡ |f‡fdd„	}
t|
ƒ ƒ nˆ 	|¡I d H  W nR tj�y¸   ‚  t�y  } z<t d| › dt|ƒj › d|› �¡ zdt!ƒ v �râ|�rât|ƒI d H  W n
 t�yí   Y nw t d¡I d H  W Y d }~qd }~ww t  ¡ rd S d S )Nr   r=  r›   ç      à?g       @z[WORKER-r  u    Ù�Ø´Ù„ Ø§Ù„Ø§ØªØµØ§Ù„: rj   u9   [NET] Ø±Ù�ØµØ¯ Ø§Ù†Ù‚Ø·Ø§Ø¹ Ø´Ø¨ÙƒÙŠ Ø¹Ø§Ù… â€” Ù‡Ø¯Ù†Ø© rk   r  r,  rÓ  rŒ   õM   âœ… Ø§ÙƒØªÙ…Ù„Øª Ø¬Ù…ÙŠØ¹ Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø¨Ù†Ø¬Ø§Ø­
ðŸ“± Ø§Ù„Ø­Ø³Ø§Ø¨: <code>õ   </code>
ðŸ¤– Ø§Ù„Ø¨ÙˆØª: @õ,   
â�³ ÙˆÙ‚Øª Ø§Ù„Ø§Ø³ØªØ±Ø§Ø­Ø©: 5 Ø¯Ù‚Ø§Ø¦Ù‚Tr  c                 “   ó0   �t dƒI d H  t ¡ sˆ  | ¡I d H  d S d S ©Nr¶   ©r.   r   r?  r’   ©Úa©Úaccount_queuer   r   Úrequeue_after_restÔ  ó
   €ÿz6run_gather.<locals>.worker.<locals>.requeue_after_restr$  rÔ  õ(    | Ù†ØªÙŠØ¬Ø© ok - Ø±Ø§Ø­Ø© 5 Ø¯Ù‚Ø§Ø¦Ù‚c                 “   r/  r0  r1  r2  r4  r   r   Ú
requeue_okÛ  r7  z.run_gather.<locals>.worker.<locals>.requeue_oku&   ] Ø§Ø³ØªØ«Ù†Ø§Ø¡ ØºÙŠØ± Ù…ØªÙˆÙ‚Ù‘Ø¹: rp   rô   )"r   r?  rb   r`   rz   rc   Ú
get_nowaitÚ
QueueEmptyr   r’   rB  rC  rã   r   rw   r�   r2   r8   rö   rv   r  rE   r  r}   r(   r  rx   r”   r)   r4   r€   Útyper   Údir)r*  rd   ræ   r›   r±   r‰   ÚdelayÚtnowr˜  r6  r9  )
ÚNET_FAIL_THRESHOLDÚNET_FAIL_WINDOWÚSYSTEM_PAUSEr)  r$  Ú_net_pause_untilr5  r<   r(  Únet_fail_windowr   r   Úworker‡  s¾   €
þ

ÿ
ÿ€è*ÿ


ÿþû
€ÿÿ€ÿ€õ£zrun_gather.<locals>.workerc                    ó   g | ]}ˆ |ƒ‘qS r   r   ©rW   rv  )rE  r   r   rì   ñ  ó    zrun_gather.<locals>.<listcomp>Úreturn_exceptionsu/   ðŸ›‘ ØªÙˆÙ‚Ù� Ø§Ù„ØªØ¬Ù…ÙŠØ¹
ðŸ¤– Ø§Ù„Ø¨ÙˆØª: @)"r�   r²   r”   r   r!   r   rE   rw   rx   r`   rŽ   rò   rú   r�   r’   r   r?  rã   r   r}   r–   rz   rÝ   r¦   Úfloatry   rO  ÚgatherÚcancelr€   r£   r   rî   r)   )r<   r¯   Ú
concurrentÚ_bg_cleanupÚ
_bg_healthræ   Úopenedr  rÀ  r•   r›   r‰   ÚworkersÚ_tÚ_phoner   )r&  r'  r@  rA  rB  r)  r$  rC  r5  r<   r(  rD  rE  r   Ú
run_gather0  sî   €
ýÿþýû ("€þ$ÿÿü$jÿÿþÿíÿÿþÿrT  c            #      ƒ   sâ  �t ƒ I d H  �zW�zòtƒ I d H } tdd�I d H }| r|sJtddd�I d H  tddƒI d H  tddƒI d H  W W tddƒI d H  tddƒI d H  d S g }| D ]}| d	¡p[d
|d › �}t|ƒI d H sm| d|d › �¡ qN|r¤tdd |¡› d�dd�I d H  tddƒI d H  tddƒI d H  W W tddƒI d H  tddƒI d H  d S t	| ƒ‰t	|ƒ}t
ƒ I d H ‰|ˆ }|ˆ }g }d}	tˆƒD ]}
||
|k rËdnd }| ||	|	| … ¡ |	|7 }	qÂd dd„ | D ƒ¡}td|› d|› ddd„ |D ƒ› �dd�I d H  g }|D ]}t ¡ }|D ]}| |¡I d H  �q| |¡ �qd\}}t	|ƒ}td|› d�dd�I d H }|D ]g}t ¡ �r> n_|d }zt|ƒI d H  |d7 }t d|› d|› d|› d�¡ W n" t�y€ } z|d7 }t d |› d!|› �¡ W Y d }~nd }~ww t|�p†g d"|› d#|› d$�ƒI d H  t d¡I d H  �q5td%|› d&|› d'�dd�I d H  t ¡ ‰d‰d}d(}d)}t ¡ �sòtƒ I d H }|d* ‰d+‰ ˆ d* }ˆ ¡  t d,ˆd › d-|› d.�¡ ‡ ‡‡‡‡fd/d0„}g }t| ƒD ]!\}
}t ¡ �rû nˆ|
 ˆ }|| }| t |||ƒ¡¡ �qð‡‡‡fd1d2„}t |ƒ ¡} ztjtj|d3diŽˆ| d4�I d H  W n/ tj�yc   t d5ˆd › d6�¡ ˆ  ¡  |D ]}!|! !¡  �qNtj|d3diŽI d H  Y nw |  !¡  z| I d H  W n tj"�yz   Y nw t#t$ %¡ ƒD ]}dt$|< �q�t ¡ �r�nc|d7 }||k�rÄd}|d* }"td7ˆd › d8|"› d9|› d:�dd�I d H  t d;|› d<�¡ t&|ƒI d H  ntd7ˆd › d=ˆd> › d?�dd�I d H  t d@ˆd> › dA�¡ t ¡ �rén	ˆd7 ‰t ¡ �r¾tdBdd�I d H  W n* tj"�y   t dC¡ Y n. t�y& } zt 'dD|› �¡ W Y d }~n+d }~ww W tddƒI d H  tddƒI d H  d S W tddƒI d H  tddƒI d H  d S W tddƒI d H  tddƒI d H  d S tddƒI d H  tddƒI d H  w )ENTr™   u=   âš ï¸� Ù„Ø§ ØªÙˆØ¬Ø¯ Ø¨ÙˆØªØ§Øª Ø£Ùˆ Ø­Ø³Ø§Ø¨Ø§Øª ÙƒØ§Ù�ÙŠØ©!rÔ   r  r  r  ry  r+  r?   r  r>   u:   âš ï¸� Ø§Ù„Ø¨ÙˆØªØ§Øª Ø§Ù„ØªØ§Ù„ÙŠØ© ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯Ø©:
z, u5   
ÙŠØ±Ø¬Ù‰ Ù…Ø±Ø§Ø¬Ø¹Ø© Ø§Ù„Ø¨ÙˆØªØ§Øª Ø§Ù„Ù…Ø¶Ø§Ù�Ø©.r   rj   c                 S   s   g | ]	}d |d › �‘qS )r>   r  r   rö  r   r   r   rì   ;  s    z'run_gather_all_bots.<locals>.<listcomp>uO   ðŸš€ Ø¨Ø¯Ø£ Ø§Ù„ØªØ¬Ù…ÙŠØ¹ Ø¹Ù„Ù‰ Ø¬Ù…ÙŠØ¹ Ø§Ù„Ø¨ÙˆØªØ§Øª
ðŸ¤– Ø§Ù„Ø¨ÙˆØªØ§Øª: r  u   
ðŸ“¦ Ø§Ù„ØªÙˆØ²ÙŠØ¹: c                 S   s   g | ]}t |ƒ‘qS r   )rE   rö  r   r   r   rì   @  rH  r  u*   â�³ Ø¹Ø²ÙŠØ²ÙŠ Ø§Ù„Ù…Ø·ÙˆØ± Ø¬Ø§Ø± Ù�ØªØ­ r  r›   u   [WARMUP] âœ“ r  r  r©  r  rp   r  r  r  r  r  r  r;   rä   r�   r¶   u   [ALL BOTS] Ø¬ÙˆÙ„Ø© u    | ÙˆÙ‚Øª Ø§Ù„Ø¹Ù…Ù„: u    Ø¯Ù‚ÙŠÙ‚Ø©c              	   “   s    �|   d¡pd| d › �‰| d ‰ t dˆ › dˆd › dˆ ¡ › d�¡ d	tf‡‡ ‡‡‡fd
d„‰tdˆˆ ƒ}‡fdd„t|ƒD ƒ}tj|ddiŽI d H  d S )Nr+  r?   r  z[ALL BOTS] @u    | Ø¬ÙˆÙ„Ø© rj   ú | u    Ø­Ø³Ø§Ø¨ Ù�ÙŠ Ø§Ù„Ù‚Ø§Ø¦Ù…Ø©Úwidc                 “   s4  �t  d| › dˆ› d�¡ t ¡ �s”ˆ ¡ �s–zˆ ¡ }W n tjy/   t d¡I d H  Y qw |d }t  d| › dˆ› d|› d�¡ |t	v rct
 
¡ t	| k r`ˆ |¡I d H  t d¡I d H  qt	|= z	t|ƒI d H }W n4 ty  } z(t  d| › d|› d	|› �¡ t|ƒsŽˆ |¡I d H  t d¡I d H  W Y d }~qd }~ww z.t|ƒ4 I d H š tjt||ˆƒˆ d
�I d H }W d   ƒI d H  n1 I d H sÉw   Y  W nN tjyò   t  d| › d|› dˆ d › d�¡ ˆ |¡I d H  Y q t�y } zt  d| › dˆ› d|› d	|› �¡ ˆ |¡I d H  W Y d }~qd }~ww t  d| › dˆ› d|› d|› �¡ |dk�r5q|dk�rDˆ |¡I d H  d S |dk�rftd|› dˆ› d�dd�I d H  |ˆfdd„}t|ƒ ƒ n#|dk�r�t  d|› d�¡ |ˆfdd„}t|ƒ ƒ nˆ |¡I d H  t ¡ �s˜ˆ ¡ rd S d S d S d S )Nz[ALL BOTS W-r>   u   ] â–¶ Ø¹Ø§Ù…Ù„ Ù†Ø´Ø·ri   r›   r  u'    â–¶ Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ù…Ù† Ø§Ù„Ù‚Ø§Ø¦Ù…Ø©r=  rp   rÊ   z | timeout r�   u    Ø¯Ù‚ÙŠÙ‚Ø© - ØªØ®Ø·ÙŠr  r,  rÓ  rŒ   r,  r-  r.  Tr  c                 Ó   ó0   �t dƒI d H  t ¡ s| | ¡I d H  d S d S r0  r1  ©r3  Úqr   r   r   Úrequeue¼  r7  zPrun_gather_all_bots.<locals>.run_single_bot.<locals>.bot_worker.<locals>.requeuer$  rÔ  r8  c                 Ó   rW  r0  r1  rX  r   r   r   r9  Ç  r7  zSrun_gather_all_bots.<locals>.run_single_bot.<locals>.bot_worker.<locals>.requeue_ok)rw   rx   r   r?  r:  r`   r;  rz   r|   r   rb   r’   rã   r   r�   r2   r(   rÎ   r  rÞ   r}   r”   r4   )rV  ræ   r›   r±   r‰   r˜  rZ  r9  )ÚACCOUNT_TIMEOUTÚbot_displayÚ	bot_queueÚ
bot_targetÚstop_round_eventr   r   Ú
bot_worker€  s”   €þ€û
þ(ÿ€ÿÿ"€ý"


ÿþû

ÿ"µz?run_gather_all_bots.<locals>.run_single_bot.<locals>.bot_workerc                    rF  r   r   rG  )r`  r   r   rì   Ð  rH  z?run_gather_all_bots.<locals>.run_single_bot.<locals>.<listcomp>rI  T)	rv   rw   rx   Úqsizery   ÚmaxrO  r`   rK  )Úbot_itemr]  Úbot_workers_countÚbw)r[  rM  Ún_botsÚ	round_numr_  )r\  r]  r^  r`  r   Úrun_single_bots  s    €
þÿþÿOz+run_gather_all_bots.<locals>.run_single_botc                   “   s>   �t ˆƒI d H  t ¡ st dˆ d › d�¡ ˆ ¡  d S d S )Nu*   [ALL BOTS] Ø§Ù†ØªÙ‡Ù‰ ÙˆÙ‚Øª Ø§Ù„Ø¬ÙˆÙ„Ø© rj   u+    - Ø¥Ø´Ø§Ø±Ø© Ù„Ù„Ù€ Workers Ø¨Ø§Ù„ØªÙˆÙ‚Ù�)r.   r   r?  rw   rx   Úsetr   )rg  r_  Ú	work_secsr   r   Úround_timerÝ  s   €ÿûz(run_gather_all_bots.<locals>.round_timerrI  rÊ   u0   [ALL BOTS] Ø§Ù†ØªÙ‡Øª grace period Ø§Ù„Ø¬ÙˆÙ„Ø© u&    - Ø¥Ù„ØºØ§Ø¡ Workers Ø§Ù„Ù…ØªØ¨Ù‚ÙŠØ©u   âœ… Ø§Ù†ØªÙ‡Øª Ø§Ù„Ø¬ÙˆÙ„Ø© u   
ðŸ˜´ Ø§Ø³ØªØ±Ø§Ø­Ø© Ø¹Ø§Ù…Ø©: u    Ø¯Ù‚ÙŠÙ‚Ø© Ø¨Ø¹Ø¯ u	    Ø¬ÙˆÙ„Ø©u#   [ALL BOTS] Ø§Ø³ØªØ±Ø§Ø­Ø© Ø¹Ø§Ù…Ø© r(  u4   
ðŸ¤– Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª ØªØ¹Ù…Ù„ Ø¹Ù„Ù‰ Ø§Ù„Ø¬ÙˆÙ„Ø© rô   u    Ø§Ù„Ø¢Ù† Ù…Ø¨Ø§Ø´Ø±Ø©Ù‹u   [ALL BOTS] Ø¨Ø¯Ø¡ Ø§Ù„Ø¬ÙˆÙ„Ø© u    Ù…Ø¨Ø§Ø´Ø±Ø©Ù‹u;   ðŸ›‘ ØªÙˆÙ‚Ù� Ø§Ù„ØªØ¬Ù…ÙŠØ¹ Ø¹Ù„Ù‰ Ø¬Ù…ÙŠØ¹ Ø§Ù„Ø¨ÙˆØªØ§Øªz[ALL BOTS] cancelled.z[ALL BOTS] )(r�   r$   r!   r”   r   rv   r²   r  r  rE   r    rO  r`   r�   r’   r   r?  rã   rw   rx   r   r}   r–   rz   ÚEventr   r  rs  rŽ   rÎ   rK  rÞ   ri  rL  r€   r£   r   rî   r.   r�   )#Ú	bots_listr¯   Úinvalid_botsrc  r^  Ú
n_accountsÚbaseÚ	remainderÚbatchesÚidxrv  ÚsizeÚbots_strÚbatch_queuesÚbatchrY  ræ   rP  r  rÀ  r•   r›   r‰   Úrounds_since_restÚ
REST_EVERYÚREST_DURATIONÚwork_minutesÚGRACE_PERIODrh  Ú	bot_tasksÚ	batch_idxrk  Ú
timer_taskr  Ú	rest_minsr   )r[  rM  rf  rg  r_  rj  r   Úrun_gather_all_bots  s~  €   � �ô
þ€ÿü y �ˆ
ÿþýû
""€þ$ÿÿü
ÿÿ`
ÿ	þÿø
ÿ

ÿÿýÿýÿ
 �
Ë 7€ÿüûýÿr�  Úuidc           
      Ã   sn  �t dd�I d H }t| ƒ}|  d¡p|pd}|D ]V}z5t|d ƒI d H }t||d | ƒI d H }|rNtd|d › d|p;|› �dd�I d H  t tt	ƒ¡I d H  W q t
yn } zt d	|d › d
|› �¡ W Y d }~qd }~ww t|  d¡|d�I d H  |r†d|› d|› d�n|}	ztj|d|	› d�ddd�I d H  W d S  t
y¶ } zt d|› �¡ W Y d }~d S d }~ww )NTr™   r*  u   Ø§Ù„Ù‚Ù†Ø§Ø©r›   u4   ðŸ“¤ Ù…ØºØ§Ø¯Ø±Ø© Ù‚Ù†Ø§Ø©
ðŸ‘¤ Ø§Ù„Ø­Ø³Ø§Ø¨: <code>u   </code>
ðŸ”— Ø§Ù„Ù‚Ù†Ø§Ø©: r  z[LEAVE] rp   r  ©rX   r+  z	<a href="z">z</a>u#   âœ… ØªÙ… Ù…ØºØ§Ø¯Ø±Ø© Ø§Ù„Ù‚Ù†Ø§Ø© u+    Ù…Ù† Ø¬Ù…ÙŠØ¹ Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª Ø¨Ù†Ø¬Ø§Ø­.rl   rm   z[LEAVE] notify: )r!   r/   rv   rã   r  r”   r`   rz   r-   ÚLEAVE_SPEEDr   rw   r�   r'   rM   r{   )
r
  r‚  r¯   r  r*  ræ   r±   Úhas_leftr‰   Úch_htmlr   r   r   Údo_leave_ch*  sH   €ÿþü€&€ÿ
ü€ÿr‡  c              
   ƒ   s˜  �d‰ t ƒ I d H  �zº�zst d¡ tdd�I d H }dd„ |D ƒ}d}d‰t |¡‰d	g‰‡‡‡fd
d„‰|rYtj‡fdd„|D ƒddiŽI d H  t dˆd	 › dt|ƒ› d�¡ tƒ I d H \‰‰t	‡‡fdd„t
ƒ I d H D ƒdd„ d�}tdd�I d H }d}d}d‰d}tdt|ƒ› �dd�I d H  g }d	}	‡fdd„‰dG‡ ‡fdd„	}
t|ƒD �]}tjs² �n| d ¡t|ƒ}}d!d„ |D ƒ}t d"|› d#t|ƒ› d$�¡ |
||dd%�I d H }t d&|› d't|ƒ› d�¡ |D ]	}| ||f¡ që|�rt d&|› d(t|ƒ› d)�¡ t||d*�I d H  |	d+7 }	t d,¡I d H  t|ƒ|	 }|�sÈ||k�rÈ|�rÈtj�rÈd}t d-|› d.t|ƒ› d/�¡ td0|› d1t|ƒ› d2�dd�I d H  g }d	d3lm} |tƒ}|D ]\}}|t|ƒ  ||f¡ �q`| ¡ D ]E\}}tj�s n<|d	 d+ }d4d„ |D ƒ}t d5t|ƒ› d(t|ƒ› d�¡ t |¡I d H  |
||ƒI d H }|D ]
}| ||f¡ �q®�qu|}t d6t|ƒ› d7�¡ q©|�r6tj�r6t d8t|ƒ› d9�¡ d	d3lm} |tƒ}|D ]\}}|t|ƒ  ||f¡ �qçg }| ¡ D ]5\}}tj�s n,|d	 d+ }d:d„ |D ƒ}t |¡I d H  |
||ƒI d H }|D ]
}| ||f¡ �q'�qþ|}|�ryd; d<d„ |d d=… D ƒ¡}t|ƒd=k�rPd>n	d?t|ƒd= › d@�}tdAt|ƒ› d;|› |› �dd�I d H  t dBt|ƒ› dC�¡ nt dD¡ W n* tj�y�   t dE¡ Y n$ t�y© } zt dF|› �¡ W Y d }~nd }~ww W dt_d t_d S W dt_d t_d S W dt_d t_d S dt_d t_w )HNéd   u9   [LEAVE ALL] ØªØ³Ø®ÙŠÙ† Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª (Ù…ØªØ¯Ø±Ù‘Ø¬)...Tr™   c                 S   ó,   g | ]}|d  t vr|d  tvr|d  ‘qS rÐ   ©r   r8   rå   r   r   r   rì   Q  ó
    ÿz do_leave_all.<locals>.<listcomp>r¸  rs   r   c              	   “   ó”   �ˆ4 I d H š6 zt jt| dd�dd�I d H  ˆd  d7  < W n	 ty)   Y nw t  ˆ ¡I d H  W d   ƒI d H  d S 1 I d H sCw   Y  d S ©NF©rá   rq   rÊ   r   rj   ©r`   rÎ   rã   r   rz   rÐ   ©ÚWARM_GAPÚ	_warm_semÚwarm_openedr   r   Ú	_warm_one]  ó   €ÿÿ.ùzdo_leave_all.<locals>._warm_onec                 3   ó   � | ]}ˆ |ƒV  qd S rL   r   rè   )r”  r   r   r   i  r3  zdo_leave_all.<locals>.<genexpr>rI  u   [LEAVE ALL] ØªÙ… Ù�ØªØ­ r  õ	    Ø­Ø³Ø§Ø¨c                    sD   g | ]}t | d ¡pdƒˆvr | d¡du st|d ƒˆ vr|‘qS rô  )r1   rv   ry   )rW   r
  )Ú_force_sub_idsÚ_force_sub_keysr   r   rì   t  s
    þc                 S   s   |   d¡pdS )NÚ	joined_atry  )rv   rZ   r   r   r   r]   w  s    zdo_leave_all.<locals>.<lambda>r^   r=  éÈ   r;   FuS   ðŸ”„ Ø¨Ø¯Ø¡ Ù…ØºØ§Ø¯Ø±Ø© Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ù…Ø³Ø¬Ù‘Ù„Ø©...
Ø¹Ø¯Ø¯ Ø§Ù„Ù‚Ù†ÙˆØ§Øª: rÔ   c              
   “   s:  �z!t jt| dd�dd�I dH }t jt|| |dd�ˆ d�I dH  W dS  tyœ } znt|ƒ ¡ }d	|v s8d
|v r_t d|¡}|rFt	|d ƒnd}t
 
¡ | d t| < t d| › d|› d�¡ n2d|v swd|v swd|v swd|v swd|v swd|v r†t | ¡ t d| › d�¡ nt d| › d|› �¡ W Y d}~dS d}~ww )uº   ÙŠØ­Ø§ÙˆÙ„ Ø¥Ø®Ø±Ø§Ø¬ Ø­Ø³Ø§Ø¨ ÙˆØ§Ø­Ø¯ Ù…Ù† Ù‚Ù†Ø§Ø© ÙˆØ§Ø­Ø¯Ø©.
            ÙŠØ¹ÙŠØ¯ True Ø¥Ù† ØºØ§Ø¯Ø± (Ø£Ùˆ Ù„Ù… ÙŠÙƒÙ† Ù…Ø´ØªØ±ÙƒØ§Ù‹)ØŒ False Ø¥Ù† Ù�Ø´Ù„ Ù�Ø´Ù„Ø§Ù‹ Ø­Ù‚ÙŠÙ‚ÙŠØ§Ù‹.FrŽ  ró   rÊ   NzBATCH LEAVE©r  TÚ
flood_waitÚ420z\d+r   i  r�   z[BATCH LEAVE] z: FloodWait rk   rÕ   rÖ   r×   rØ   rÙ   zeof when readingu1   : Ø¬Ù„Ø³Ø© ØªØ§Ù„Ù�Ø©/Ù…ÙŠØªØ© â€” ØªÙ�ØªØ®Ø·Ù‘Ù‰z[BATCH ERROR] rp   )r`   rÎ   rã   r  r   r¦   rà   rW  Úfindallry   rb   r   rw   r}   r8   rß   r�   )ré   Úch_objr±   r‰   r®   Úsecr  )ÚLEAVE_TIMEOUTr   r   Ú
_leave_one�  s4   €ÿþ
€òz do_leave_all.<locals>._leave_onec                 “   s,  �g }t ˆ ƒ}tdt|ƒˆƒD ]„}tjs |S |||ˆ … }g }|D ]!}|tv r*q#|tv r?t ¡ t| k r<| |¡ q#t|= | |¡ q#|sHqt	j
‡‡ fdd„|D ƒddiŽI dH }	d}
t||	ƒD ]\}}|du ro|
d7 }
qb| |¡ qb|r‹|
dkr‹td|› d	|
› d
�dd�I dH  t	 d¡I dH  q|S )u8  Ù…Ø±ÙˆØ± ÙˆØ§Ø­Ø¯ Ù„Ø¥Ø®Ø±Ø§Ø¬ Ù‚Ø§Ø¦Ù…Ø© Ø­Ø³Ø§Ø¨Ø§Øª Ù…Ù† Ù‚Ù†Ø§Ø©ØŒ Ø¹Ù„Ù‰ Ø¯Ù�Ø¹Ø§Øª Ù…ØªÙˆØ§Ø²ÙŠØ©.
            ÙŠØ¹ÙŠØ¯ Ù‚Ø§Ø¦Ù…Ø© Ø§Ù„Ø£Ø±Ù‚Ø§Ù… Ø§Ù„ØªÙŠ Ù�Ø´Ù„Øª Ù�Ø´Ù„Ø§Ù‹ Ø­Ù‚ÙŠÙ‚ÙŠØ§Ù‹.
            report=True ÙŠØ±Ø³Ù„ ØªÙ‚Ø±ÙŠØ± ØªÙŠÙ„ÙŠØ¬Ø±Ø§Ù… Ø¨Ø¹Ø¯ ÙƒÙ„ Ø¯Ù�Ø¹Ø© (Ù„Ù„Ù…Ø±ÙˆØ± Ø§Ù„Ø£ÙˆÙ„ Ù�Ù‚Ø·).r   c                 3   s   � | ]}ˆ |ˆƒV  qd S rL   r   rè   )r£  r   r   r   r   Ã  r  z<do_leave_all.<locals>._leave_channel_pass.<locals>.<genexpr>rI  TNrj   uG   ðŸ“¤ <b>ØªÙ‚Ø±ÙŠØ± Ù…ØºØ§Ø¯Ø±Ø© Ø¯Ù�Ø¹Ø©</b>
ðŸ”— <b>Ø§Ù„Ù‚Ù†Ø§Ø©:</b> u2   
âœ… <b>Ø¹Ø¯Ø¯ Ø­Ø³Ø§Ø¨Ø§Øª Ø§Ù„Ù…ØºØ§Ø¯Ø±Ø©:</b> r—  r  gš™™™™™¹?)r/   rO  rE   Ú_sharedÚleave_all_onr8   r   rb   r  r`   rK  Úzipr”   rz   )r   ÚphonesÚreportr  Úlink_rv  rw  Úrunnabler›   Úresultsr$  Úres)Ú
BATCH_SIZEr£  )r   r   Ú_leave_channel_pass©  sR   €$Ý
ÿþ
ÿþüz)do_leave_all.<locals>._leave_channel_passr  c                 S   s   g | ]}|d  ‘qS rÐ   r   )rW   r3  r   r   r   rì   Û  rH  u5   [LEAVE ALL] â”�â”� Ø¨Ø¯Ø¡ Ù…ØºØ§Ø¯Ø±Ø© Ø§Ù„Ù‚Ù†Ø§Ø©: r  u    Ø­Ø³Ø§Ø¨) â”�â”�)r¨  u   [LEAVE ALL] Ù‚Ù†Ø§Ø© u-   : Ø§Ù„Ù…Ø±ÙˆØ± Ø§Ù„Ø£ÙˆÙ„ Ø§Ù†ØªÙ‡Ù‰, Ù�Ø´Ù„ rp   u*    Ø­Ø³Ø§Ø¨ Ø£Ù�Ø¶ÙŠÙ� Ù„Ø¬Ø¯ÙˆÙ„ Ø§Ù„Ù�Ø´Ù„rƒ  rj   gš™™™™™É?u   [REVIEW] ØªØ¨Ù‚Ù‘Ù‰ u"    Ù‚Ù†Ø§Ø© â€” Ø¨Ø¯Ø¡ Ù…Ø±Ø§Ø¬Ø¹Ø© u    Ø­Ø³Ø§Ø¨ Ù�Ø§Ø´Ù„u5   ðŸ”„ <b>Ù…Ø±Ø§Ø¬Ø¹Ø© Ø§Ù„Ù�Ø§Ø´Ù„ÙŠÙ†</b>
ØªØ¨Ù‚Ù‘Ù‰ u:    Ù‚Ù†Ø§Ø© â€” Ø¬Ø§Ø±ÙŠ Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„Ù…Ø­Ø§ÙˆÙ„Ø© Ø¹Ù„Ù‰ u    Ø­Ø³Ø§Ø¨ Ù�Ø§Ø´Ù„...)Údefaultdictc                 S   ó   g | ]\}}|‘qS r   r   ©rW   ré   rÝ  r   r   r   rì   	  rH  u$   [REVIEW] Ø¥Ø¹Ø§Ø¯Ø© Ø¹Ù„Ù‰ Ù‚Ù†Ø§Ø© u0   [REVIEW] Ø§Ù†ØªÙ‡Øª Ø§Ù„Ù…Ø±Ø§Ø¬Ø¹Ø© â€” Ø¨Ù‚ÙŠ u	    Ù�Ø§Ø´Ù„z[FINAL REVIEW] u;    Ø¥Ø¯Ø®Ø§Ù„ Ù�Ø§Ø´Ù„ Ù…ØªØ¨Ù‚Ù� â€” Ù…Ø­Ø§ÙˆÙ„Ø© Ø£Ø®ÙŠØ±Ø©c                 S   r°  r   r   r±  r   r   r   rì   	  rH  rû   c                 s   s(   � | ]\}}d |› dt |ƒ› �V  qdS )u     â€¢ <code>u   </code> Ù…Ù† N)r/   )rW   ré   Úchxr   r   r   r   %	  s
   € ÿ
ÿé2   ry  u   
... Ùˆu    ØºÙŠØ±Ù‡Ø§uV   âš ï¸� <b>Ø­Ø³Ø§Ø¨Ø§Øª Ù„Ù… ØªØºØ§Ø¯Ø± Ø±ØºÙ… ÙƒÙ„ Ø§Ù„Ù…Ø­Ø§ÙˆÙ„Ø§Øª</b>
Ø§Ù„Ø¹Ø¯Ø¯: u   [LEAVE ALL] Ø§Ù†ØªÙ‡Ù‰ â€” u    Ù„Ù… ØªØºØ§Ø¯Ø±uZ   [LEAVE ALL] Ø§Ù†ØªÙ‡Ù‰ Ø¨Ù†Ø¬Ø§Ø­ â€” ÙƒÙ„ Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª ØºØ§Ø¯Ø±Øª ÙƒÙ„ Ø§Ù„Ù‚Ù†ÙˆØ§Øªu'   [LEAVE ALL] Ø£Ù�Ù„ØºÙŠØª Ø§Ù„Ø¹Ù…Ù„ÙŠØ©u&   [LEAVE ALL] Ø®Ø·Ø£ ØºÙŠØ± Ù…ØªÙˆÙ‚Ø¹: ©F)r�   rw   rx   r!   r`   Ú	SemaphorerK  rE   r+   Úsortedr%   r”   r£   r¤  r¥  rv   r/   r  r}   r'   rz   Úcollectionsr¯  r  r¤   r  r€   r   Ú	exceptionÚleave_all_task)r‚  r¯   Úto_warmÚ	WARM_CONCÚchannelsÚ	RETRY_GAPÚ	REVIEW_ATÚ_review_doneÚpending_failÚchannels_doner®  r
  rX   r  Ú
all_phonesr  ré   Ú	remainingÚstillr¯  Úby_chr²  Ú_gidr¤   Úphones_xÚfxru  Úextrar‰   r   )	r­  r¢  r‘  r˜  r™  r£  r”  r’  r“  r   Údo_leave_allJ  s0  €
ÿ

ÿþ üÿý	.
ÿ
ÿÿÿ
ÿÿþü
ÿÿ€ÿ

þ&ÿÿÿý
€€ÿ€
û
ý
ÿrÊ  r   c                 ƒ   s0  �t ddƒI d H }|dkrtddd�I d H  d S tjr&tddd�I d H  d S tdd�I d H }t|ƒ}t|ƒ}d	d
„ |D ƒ}|rŒtdt|ƒ› d�dd�I d H  d}d‰ t |¡‰dg‰	‡ ‡‡	fdd„‰tj‡fdd„|D ƒddiŽI d H  t	 
dˆ	d › dt|ƒ› d�¡ t d¡I d H  ddlm}	 |	|ƒI d H }
i }|
D ]$}|d ‰| d¡}ˆ d¡ d¡d }|| d¡rºd n|ˆdœ|ˆ< q�|D ]‰ˆ|vrãˆ d¡ d¡d }d | d¡rÜd n|ˆdœ|ˆ< qÄtdd„ |D ƒƒ}|dkród nd!|› d"�}td#|› d$|› d%|› d|› �dd�I d H  d‰d‰t	 
d&|› d'|› d(|› d)�¡ d*}t |¡‰‡‡‡fd+d,„‰|D ]0‰|ˆ ‰t	 
d-ˆ› d.ˆd/ › �¡ tj‡‡‡fd0d„|D ƒddiŽI d H  t d1¡I d H  �q2t|ƒI d H  t	 
d2|› d3�¡ td4|› d5|› d6|› d7ˆ› d8ˆ› �
dd�I d H  t	 
d9ˆ› d:ˆ› �¡ d S );Nr  r  Ú1uR   âš ï¸� Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø¨Ø¯Ø¡ Ø§Ù„Ù…ØºØ§Ø¯Ø±Ø© â€” Ø§Ù„ØªØ¬Ù…ÙŠØ¹ ÙŠØ¹Ù…Ù„ Ø§Ù„Ø¢Ù†.TrÔ   ud   âš ï¸� Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø¨Ø¯Ø¡ Ø§Ù„Ù…ØºØ§Ø¯Ø±Ø© â€” Ù…ØºØ§Ø¯Ø±Ø© ÙƒÙ„ Ø§Ù„Ù‚Ù†ÙˆØ§Øª ØªØ¹Ù…Ù„ Ø§Ù„Ø¢Ù†.r™   c                 S   r‰  rÐ   rŠ  rå   r   r   r   rì   I	  r‹  z&do_leave_force_sub.<locals>.<listcomp>uV   â�³ Ø¬Ø§Ø±ÙŠ Ù�ØªØ­ Ø§Ù„Ø¬Ù„Ø³Ø§Øª Ù‚Ø¨Ù„ Ø§Ù„Ù…ØºØ§Ø¯Ø±Ø©...
ðŸ“Š ÙŠØ­ØªØ§Ø¬ Ù�ØªØ­: u	    Ø¬Ù„Ø³Ø©r¸  rs   r   c              	   “   rŒ  r�  r�  rÐ   r�  r   r   Ú_warm_one_fsX	  r•  z(do_leave_force_sub.<locals>._warm_one_fsc                 3   r–  rL   r   rè   )rÌ  r   r   r   c	  r3  z%do_leave_force_sub.<locals>.<genexpr>rI  u   [LEAVE FORCE SUB] ØªÙ… Ù�ØªØ­ r  ri   )Úget_force_sub_channelsr+  Ú
channel_idr  ú+)r  r  r+  c                 s   s    � | ]}|d  t v rdV  qdS )r›   rj   N)r   rå   r   r   r   r   }	  ó   € rj   u   Ù…ØºØ§Ø¯Ø±Ø© Ù‚Ù†Ø§Ø©u   Ù…ØºØ§Ø¯Ø±Ø© rÕ  uT   ðŸš€ <b>Ø¨Ø¯Ø¡ Ù…ØºØ§Ø¯Ø±Ø© Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø§Ù„Ø¥Ø¬Ø¨Ø§Ø±ÙŠ</b>
ðŸ¤– Ø§Ù„Ø¨ÙˆØª: @u   
ðŸ“‹ Ø§Ù„Ø¹Ù…Ù„ÙŠØ©: u)   
ðŸ‘¥ Ø§Ù„Ø­Ø³Ø§Ø¨Ø§Øª Ø§Ù„Ù…Ù�ØªÙˆØ­Ø©: z[LEAVE FORCE SUB] @rp   u    Ù‚Ù†Ø§Ø© Ã— r—  rË   c                 “   sB  �ˆ4 I d H š� z;t | ƒ4 I d H š" t| ƒI d H }tjt|| |dd�dd�I d H  W d   ƒI d H  n1 I d H s9w   Y  ˆd7 ‰W n: ty} } z.t|ƒ ¡ ‰ t‡ fdd„dD ƒƒraˆd7 ‰nˆd7 ‰t	 
d	| › d
|› d|› �¡ W Y d }~nd }~ww W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sšw   Y  d S )NzFORCE SUB LEAVErœ  r;   rÊ   rj   c                 3   r.  rL   r   r/  ©r®   r   r   r   š	  r3  z<do_leave_force_sub.<locals>._leave_one_fs.<locals>.<genexpr>)z	not foundÚinvalidzuser not participantÚchannel_privateÚpeer_id_invalidÚusernotparticipantÚchat_not_foundz[LEAVE FORCE SUB] rU  rp   )r(   rã   r`   rÎ   r  r   r¦   rà   rD  rw   r}   )r›   r   r+  r±   r‰   )Ú
_leave_semrŒ   r  rÑ  r   Ú_leave_one_fsŽ	  s.   €þ(þ
€øÿù€. z)do_leave_force_sub.<locals>._leave_one_fsu   [LEAVE FORCE SUB] Ù…ØºØ§Ø¯Ø±Ø© z | id=r  c                 3   s    � | ]}ˆ |d  ˆˆƒV  qdS )r›   Nr   rå   )rØ  r   r+  r   r   r   ¦	  rÐ  r+  u*   [LEAVE FORCE SUB] ØªÙ… Ø­Ø°Ù� Ù‚Ù†ÙˆØ§Øª @u    Ù…Ù† Ø§Ù„Ù‚Ø§Ø¹Ø¯Ø©uY   âœ… <b>Ø§ÙƒØªÙ…Ù„Øª Ù…ØºØ§Ø¯Ø±Ø© Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø§Ù„Ø¥Ø¬Ø¨Ø§Ø±ÙŠ</b>
ðŸ¤– Ø§Ù„Ø¨ÙˆØª: @u   
ðŸ“‹ Ø§Ù„Ù‚Ù†ÙˆØ§Øª: r  u   
âœ… Ù†Ø¬Ø­: u    | âœ— Ù�Ø´Ù„: u)   [LEAVE FORCE SUB] Ø§Ù†ØªÙ‡Ù‰ â€” Ù†Ø¬Ø­: u	    Ù�Ø´Ù„: )r   r”   r¤  r¥  r!   rE   r`   rµ  rK  rw   rx   rz   ÚsharedrÍ  rv   ÚrstriprF   rD   Úsumr,   )r‚  r<   r   r  r¯   Ú
total_urlsÚ	total_accrº  r»  rÍ  Úfs_rowsÚch_mapr„  rX   rG   Úopened_countÚactionÚ
LEAVE_CONCr   )
r‘  rØ  r×  rÌ  r’  r   rŒ   r  r+  r“  r   Údo_leave_force_sub:	  s¾   €ÿÿý

ÿþ 
ý€ÿþýýû	
ÿþÿþýüüúrã  rL   )FFr´  )r	  )r   N)r¸  )€r`   rï   ÚloggingÚosrB  rW  Úsqlite3rb   r   r¨   r   Úpyrogram.errorsr   r   r   r   r	   r   r
   ru   rÙ  r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r¤  Ú	getLoggerr   rw   rÚ   r¦   rI   rM   rN   rO   rJ   r�   Ú__annotations__r‹   ri  rK   rS   r�   rÝ   r”   r£   r–   r²   r´   rÈ   rã   rò   rú   r  rZ  r  r  rK  rJ  ry   rU  r_  rd  re  rg  rk  rx  r  r†  r‰  rŽ  r�  r‘  r“  r”  r•  rš  r›  r�  r·  rÁ  rÄ  rÅ  rÈ  rÒ  rë  r  rT  r�  r‡  rÊ  rã  r   r   r   r   Ú<module>   sÀ   
ý€ý	¨

s?
V' 	

			00
3ÿÿÿ
þ $  f `    q