Ë
    «¼j_ ã                  ón  — U d Z ddlm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
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 ddlmZmZ ddlmZmZ dd	lmZ dd
lmZ ddl m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ ddl`maZambZbmcZcmdZd ddlemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~ ddlm€Z�m‚Zƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰ ddlŠm‹ZŒ  ee�«      �j                  dz  Z�dZ�dZ‘dZ’dZ“dZ”h d£Z•eoerepetdœZ– e(d¬«      Z—e—�j1                  e,d gd gd g¬!«        e'd"¬#«      Z™d$Zšda›d%eœd&<    e«       Z�i Zžd'eœd(<    eŸ«       Z d)eœd*<   i Z¡d+eœd,<    eŸ«       Z¢d-eœd.<   i Z£d/eœd0<    e�jH                  «       Z¥e�jL                  Z§ e�jP                  «       Z© ed1¬2«      Zªd3eœd4<   da«d5a¬d6a­ e�jP                  «       Z®i Z¯d7eœd8<   i Z°d7eœd9<    eŸ«       Z±d)eœd:<   �dd;„Z²�dd<„Z³ G d=„ d>«      Z´ eµe�jl                  e´«      s e´e�jl                  «      e_¶         eµe�jn                  e´«      s e´e�jn                  «      e_·        �dd?„Z¸�dd@„Z¹e¹e_¦         e~e¸«       �d�ddB„Zº�ddC„Z»�ddD„Z¼i Z½dEeœdF<   h dG£Z¾dHZ¿ G dI„ dJeÀ«      ZÁ G dK„ dL«      ZÂ�ddM„ZÃ�ddN„ZÄdAd6d6dOœ	 	 	 	 	 	 	 	 	 �ddP„ZÅ�ddQ„ZÆ e	�jŽ                  dR«      ZÈ�ddS„ZÉ�d�ddT„ZÊ�ddUdVœ�ddW„ZË�ddX„ZÌ e	�jŽ                  dY«      ZÍ e	�jŽ                  dZ«      ZÎ e	�jŽ                  d[«      ZÏd\ZÐ�dd]„ZÑ�dd^„ZÒ�dd_„ZÓdUdd`œ�dda„ZÔ�d �d!db„ZÕdUdcœ�d"dd„ZÖ�d#de„Z×�d$df„ZØ�d%dg„ZÙ�d&dh„ZÚ�d'di„ZÛ�d(dj„ZÜ�d)dk„ZÝ�d*dl„ZÞ�d+dm„Zß�d*dn„Zà�d,do„Zá�d-dp„Zâ�d.dq„Zã�d/dr„Zä�d0ds„Zå�d0dt„Zæ�ddu„Zç�d1dv„Zè�d2dw„Zé�ddx„Zê�d(dy„Zë	 	 	 	 	 	 	 	 	 	 	 	 �d3dz„Zìh d{£Zíh d|£Zî�d4d}„Zï�d5d~„Zð�d6d„Zñ�d7d€„Zòe��jç                   e"«       «      �d8d�„«       Zôe��jç                   e!d‚«      «      �d8dƒ„«       Zõ�dd„„Zö�d9d…„Z÷�d6d†„Zø�dd‡„Zù�d0dˆ„Zú�d0d‰„Zû�d-dŠ„Zü�d:d‹„Zý�d-dŒ„Zþ�d-d�„Zÿ�d�d;dŽ„�Z �d<d�„�Z�d=d�„�Z eç«        e—�j                  d‘«      �dd’„«       �Ze—�j                  d“«      �dd”„«       �Ze—�j                  d•«      �d>d–„«       �Ze™�j                  d—«      �d(d˜„«       �Z	e™�j                  d™«      �d?dš„«       �Ze™�j                  d›«      �d?dœ„«       �Z�d@d�„�Z�ddž„�Ze™�j                  dŸ«      �d?d „«       �Ze™�j                  dŸ«      �d?d¡„«       �Ze™�j#                  d¢«      �dAd£„«       �Ze™�j                  d¤«      �d?d¥„«       �Ze™�j                  d¤«      �d?d¦„«       �Ze™�j#                  d¤«      �d?d§„«       �Ze™�j                  d¨«      �d?d©„«       �Ze™�j                  d¨«      �d?dª„«       �Ze™�j#                  d¨«      �d?d«„«       �Ze™�j                  d¬«      �d?d­„«       �Ze™�j                  d®«      �dB�dCd¯„«       �Z�dDd°„�Z�dEd±„�Ze™�j                  d²«      �d(d³„«       �Ze™�j                  d´«      �d?dµ„«       �Ze™�j                  d¶«      �d?d·„«       �Ze™�j                  d¸«      �d?d¹„«       �Z e™�j                  dº«      �d(d»„«       �Z!e™�j                  d¼«      �d(d½„«       �Z"d¾„ �Z#�d(d¿„�Z$e™�j                  dÀ«      �d(dÁ„«       �Z%e™�j                  dÀ«      �d?dÂ„«       �Z&e™�j                  dÃ«      �d(dÄ„«       �Z'e™�j                  dÃ«      �d?dÅ„«       �Z(e™�j                  dÆ«      �d(dÇ„«       �Z)e™�j                  dÈ«      e™�j                  dÉ«      �d(dÊ„«       «       �Z*e™�j                  dÈ«      e™�j                  dÉ«      �d?dË„«       «       �Z+�dFdÌ„�Z,�dGdÍ„�Z-e™�j                  dÎ«      �d?dÏ„«       �Z.e™�j                  dÐ«      �d?dÑ„«       �Z/e™�j                  dÒ«      �dHdÓ„«       �Z0e™�j                  dÔ«      �d*dÕ„«       �Z1�d*dÖ„�Z2e™�j                  d×«      �dHdØ„«       �Z3e™�j                  dÙ«      �dHdÚ„«       �Z4e™�j#                  dÔ«      �d*dÛ„«       �Z5e™�j                  dÜ«      �d*dÝ„«       �Z6e™�j                  dÞ«      �d*dß„«       �Z7e™�j                  dà«      �dHdá„«       �Z8e™�j                  dâ«      �d*dã„«       �Z9e™�j                  dä«      �dHdå„«       �Z:e™�j                  dæ«      �dHdç„«       �Z;e™�j                  dè«      �dIdé„«       �Z<e™�j                  dê«      �dHdë„«       �Z=e™�j                  dê«      �d*dì„«       �Z>e™�j                  dí«      �dHdî„«       �Z?e™�j                  dï«      �d*dð„«       �Z@e™�j                  dñ«      �d*dò„«       �ZA�ddó„�ZBe™�j                  dô«      �d*dõ„«       �ZCe™�j                  dö«      �dHd÷„«       �ZDe™�j                  dø«      �dJdù„«       �ZEe™�j                  dú«      �d*dû„«       �ZFe™�j                  dü«      �d*dý„«       �ZG�dKdþ„�ZHe™�j                  dÿ«      �dH�d „«       �ZIe™�j                  �d«      �d*�d„«       �ZJe™�j                  �d«      �dH�d„«       �ZKe—�j™                  e™«       e—�j                  dÉ«      �dL�d„«       �ZMe—�j�                  dÉ e2e��¬«      d�¬«       �eO�dk(  r‹dd�lP�ZP�d	e�d6dU�d
�dœ�ZQe^r ee^«      nd�ZRe_r ee_«      nd�ZS�eRrE�eSrB�eR�j©                  «       r0�eS�j©                  «       r �eU�eR«      �eQ�d<    �eU�eS«      �eQ�d<    �eP�j¬                  �dMi �eQ¤Ž yy(N  uO  ÐŸÐ°Ð½ÐµÐ»ÑŒ OZPAY: API Ð´ÐµÐ²Ð°Ð¹Ñ�Ð¾Ð² + Ñ�Ñ‚Ð°Ñ‚Ð¸ÐºÐ° Ð¼Ð¸Ð½Ð¸-Ð°Ð¿Ð¿Ð°.

ÐžÑ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ� Ð¾Ñ‚ notify_server.py.
ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ¸ (check_balance / check_turnover / check_cards / full_check) Ð¸ Ð²Ñ‹Ð¿ÑƒÑ�Ðº ÐºÐ°Ñ€Ñ‚Ñ‹ (add_card) Ð¸Ð´ÑƒÑ‚ Ð² thread pool,
Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð½Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ event loop Ð½Ð° ADB.
é    )ÚannotationsN)Údeque)Úunquote)ÚPath)ÚOptionalÚUnion)ÚBotÚ
Dispatcher)ÚDefaultBotProperties)Ú	ParseMode)ÚCommandÚCommandStart)ÚMessageÚReplyKeyboardRemove)Ú	APIRouterÚFastAPIÚHTTPExceptionÚRequest)ÚCORSMiddleware)ÚFileResponseÚJSONResponseÚResponse)ÚStaticFiles)#Úadd_panel_workerÚadd_proxiesÚcard_flag_keysÚcreate_deviceÚdelete_deviceÚdelete_proxyÚdevice_slot_valueÚfind_device_by_ip_portÚfind_device_by_public_idÚget_card_flag_defsÚ
get_deviceÚget_watch_settingsÚis_panel_workerÚlist_banned_ip_rowsÚlist_banned_ipsÚlist_devicesÚlist_devices_by_ipÚlist_panel_workersÚlist_proxiesÚnext_device_slotÚparse_card_flagsÚparse_cardsÚproxy_countsÚremove_banned_ipÚremove_panel_workerÚrename_deviceÚrestore_proxyÚsave_banned_ipÚsave_card_flag_defsÚsave_watch_settingsÚtake_next_proxyÚupdate_card_flagsÚupdate_deviceÚupdate_passwordÚused_device_ports)ÚADMIN_TG_IDÚ	BOT_TOKENÚDEVICE_CHAT_MAPÚNOTIFY_BOT_TOKENÚPANEL_BOT_TOKENÚPANEL_LINK_TOKENÚSSL_CERTFILEÚSSL_KEYFILE)Úextract_user_from_init_dataÚmake_panel_tokenÚparse_panel_tokenÚvalidate_init_data_any)ÚActionCancelledÚDEFAULT_ADB_TCP_PORTÚDOCKER_PS_ENDÚDOCKER_PS_STARTÚSLOT_ADB_PORT_STEPÚadd_cardÚ
add_deviceÚcancel_loginÚcapture_screenÚcheck_balanceÚcheck_cardsÚcheck_login_stateÚcheck_turnoverÚclear_lk_sessionÚ
full_checkÚinstall_device_appsÚ	logout_lkÚpress_device_backÚ	probe_adbÚprovision_new_deviceÚrebuild_deviceÚreboot_deviceÚredroid_layoutÚscreencap_pngÚset_action_cancel_hook)ÚDEFAULT_PORTÚDEFAULT_USERÚdelete_hostÚget_hostÚ
list_hostsÚrename_hostÚrun_ssh_commandsÚupsert_host)ÚruntimeÚwebappi‰  g      @é
   é   >   ú::1Ú Úunknownú	127.0.0.1)ÚbalanceÚturnoverÚcardsÚallzOZPAY Panel)ÚtitleÚ*)Úallow_originsÚallow_methodsÚallow_headersú/api)Úprefixi   zOptional[Bot]Ú	panel_botzdict[str, asyncio.Lock]Ú_device_lockszset[str]Ú	_checkingúdict[str, str]Ú
_busy_kindzset[asyncio.Task]Ú	_bg_taskszdict[str, threading.Event]Ú_cancel_flagsiˆ  )Úmaxlenzdeque[dict]Ú
_log_linesro   Fúdict[str, deque[float]]Ú_ip_hitsÚ_screen_hitsÚ_banned_ipsc                ó    — d| v ryd| v rd| v ryy)Nz
 /api/logsTú/screenz /api/F© )Úlines    ú+/var/www/api.ozpay.ru/ozpay/panel_server.pyÚ_skip_captured_logr�   k   s"   € Ø�tÑØØ�DÑ˜X¨Ñ-ØØó    c                ó–  — | sy t         | z   }|j                  d«      }|j                  «       a |sy t        5  |D ]x  }t	        |«      rŒ|j                  «       }d }t        |v rdad}nt        |v rd}dant        rd}t        dz  a	t        j                  t        |t        t        dd «      |dœ«       Œz 	 d d d «       y # 1 sw Y   y xY w)	Nú
TÚdocker_markFÚdockeré   Ú	device_id)ÚidÚtextÚdeviceÚhl)Ú_log_partialÚsplitÚpopÚ	_log_lockr�   ÚstriprL   Ú_log_docker_psrK   Ú_log_seqr…   ÚappendÚgetattrÚ_tls)r˜   ÚchunkÚpartsr�   Ústrippedrš   s         rŽ   Ú_ingest_logr¨   s   sÐ   € áØÜ˜4Ñ€EØ�K‰K˜Ó€EØ—9‘9“;€LÙØÜ	ñ Øò 	ˆDÜ! $Ô'ØØ—z‘z“|ˆHØˆBÜ (Ñ*Ø!%�Ø"‘Ü (Ñ*Ø"�Ø!&‘ÝØ�Ü˜‰MˆHÜ×ÑÜØÜ!¤$¨°TÓ:Øñ	õ ñ	÷÷ ñ ús   ·A>B?Â?Cc                  ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_StdTeec                ó   — || _         y ©N)Ú	_original)ÚselfÚoriginals     rŽ   Ú__init__z_StdTee.__init__”   s	   € Ø!ˆ�r�   c                ó@  — |€yt        |t        «      r	 |j                  dd«      }nt        |«      }	 | j                  j                  |«       t        |«       t        |t        «      st        |«      S |S # t        $ r t	        |«      }Y ŒZw xY w# t        $ r Y ŒMw xY w)Nr   úutf-8Úreplace)Ú
isinstanceÚbytesÚdecodeÚ	ExceptionÚreprÚstrr­   Úwriter¨   ÚintÚlen)r®   Údatar˜   s      rŽ   rº   z_StdTee.write—   sš   € Øˆ<ØÜ�dœEÔ"ð"Ø—{‘{ 7¨IÓ6‘ô �t“9ˆDð	Ø�N‰N× Ñ  Ô&ô 	�DÔÜ *¨4´Ô 5Œs�4‹yÐ?¸4Ð?øô ò "Ü˜D“z’ð"ûô ò 	Ùð	ús"   •A7 ´B Á7BÂBÂ	BÂBc                óX   — 	 | j                   j                  «        y # t        $ r Y y w xY wr¬   )r­   Úflushr·   ©r®   s    rŽ   r¿   z_StdTee.flush¨   s)   € ð	Ø�N‰N× Ñ Õ"øÜò 	Ùð	ús   ‚ �	)¨)c                óV   — 	 | j                   j                  «       S # t        $ r Y yw xY w)NF)r­   Úisattyr·   rÀ   s    rŽ   rÂ   z_StdTee.isatty®   s,   € ð	Ø—>‘>×(Ñ(Ó*Ð*øÜò 	Ùð	ús   ‚ œ	(§(c                ó.   — t        | j                  |«      S r¬   )r£   r­   )r®   Únames     rŽ   Ú__getattr__z_StdTee.__getattr__´   s   € Ü�t—~‘~ tÓ,Ð,r�   N)Ú__name__Ú
__module__Ú__qualname__r°   rº   r¿   rÂ   rÅ   rŒ   r�   rŽ   rª   rª   “   s   „ ò"ò@ò"òó-r�   rª   c                 óæ   — t        t        dd «      } | sy t        j                  | «      }|�|j	                  «       sy t        t        dd«      sdt        _        t        d| › d�«       t        d«      ‚)Nr–   Úcancel_loggedFTu#   Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð¾ (ú)u!   Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð¾)r£   r¤   rƒ   ÚgetÚis_setrÊ   ÚprintrI   )r–   Úflags     rŽ   Ú_action_cancel_hookrÐ   ¾   sh   € Üœ˜k¨4Ó0€IÙØÜ×Ñ˜YÓ'€DØ€|˜4Ÿ;™;œ=ØÜ”4˜¨%Ô0Ø!ŒÔÜÐ3°I°;¸aÐ@ÔAÜ
Ð=Ó
>Ð>r�   c                ó  — t        t        dd «      }|st        | «       y t        j                  «       t        dt        | xs d«      «      z   }	 t        «        |t        j                  «       z
  }|dk  ry t        t        d|«      «       Œ=)Nr–   ç        r   gš™™™™™É?)	r£   r¤   Ú_orig_sleepÚtimeÚ	monotonicÚmaxÚfloatrÐ   Úmin)Úsecondsr–   ÚendÚ	remainings       rŽ   Ú_interruptible_sleeprÜ   Ë   sw   € Üœ˜k¨4Ó0€IÙÜ�GÔØÜ
�.‰.Ó
œS ¤e¨GªL°qÓ&9Ó:Ñ
:€CØ
ÜÔØœ$Ÿ.™.Ó*Ñ*ˆ	Ø˜Š>ØÜ”C˜˜YÓ'Ô(ð r�   ru   c                ó~   — t         j                  | «       |xs dt        | <   t        j                  «       t
        | <   y )Nru   )r   Úaddr�   Ú	threadingÚEventrƒ   )r–   Úkinds     rŽ   Ú_begin_actionrâ   Ý   s-   € Ü‡M�M�)ÔØ šM E„JˆyÑÜ(Ÿ™Ó0„M�)Òr�   c                ó†   — t         j                  | «       t        j                  | d «       t        j                  | d «       y r¬   )r   Údiscardr�   r�   rƒ   ©r–   s    rŽ   Ú_end_actionræ   ã   s.   € Ü×Ñ�iÔ Ü‡N�N�9˜dÔ#Ü×Ñ�i Õ&r�   c                óæ   — | t         _        dt         _        	  ||Ž d t         _        S # t        $ r t	        d| › d�«       ‚ t
        $ r}t	        d| › d|› �«       ‚ d }~ww xY w# d t         _        w xY w)NFú[u#   ] Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð¾u   ] Ð¾ÑˆÐ¸Ð±ÐºÐ°: )r¤   r–   rÊ   rI   rÎ   r·   )r–   ÚfnÚargsÚexcs       rŽ   Ú_call_device_actionrì   é   sx   € Ø„D„NØ„DÔð	Ù�4ˆyð Œ�øô ò Ü��)�Ð?Ð@ÔAØÜò Ü��)�Ð,¨S¨EÐ2Ô3Øûðûð Œ�ús!   ˜( ¨!A Á	AÁA Á A# Á#A0zdict[str, 'LoginSession']Ú_login_sessions>   ÚrunningÚ	verifyingÚ
cancellingÚawaiting_codeç     Àr@c                  ó   — e Zd ZdZy)ÚLoginCancelleduC   ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ð» Ð²Ñ…Ð¾Ð´ Ð¸Ð· Ð¿Ð°Ð½ÐµÐ»Ð¸.N)rÆ   rÇ   rÈ   Ú__doc__rŒ   r�   rŽ   rô   rô   þ   s   „ ÚMr�   rô   c                  ó@   — e Zd ZdZd
d„Zd„ Zd„ Zdd„Zdd„Zd„ Z	d	„ Z
y)ÚLoginSessionuƒ  Ð˜Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°Ñ� Ñ�ÐµÑ�Ñ�Ð¸Ñ� Ð²Ñ…Ð¾Ð´Ð°: add_device Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾Ð¼ Ð¿Ð¾Ñ‚Ð¾ÐºÐµ Ð¸ Ð½Ð°
    ÑˆÐ°Ð³Ðµ Ð²Ð²Ð¾Ð´Ð° ÐºÐ¾Ð´Ð° Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�, Ð¾Ð¶Ð¸Ð´Ð°Ñ� Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¸Ð· Ð¼Ð¸Ð½Ð¸-Ð°Ð¿Ð¿Ð° (ÐºÐ¾Ð´ Ð¸Ð»Ð¸ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½ÑƒÑŽ
    Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÑƒ). ÐŸÐ¾ÐºÐ° Ð¶Ð´Ñ‘Ð¼ ÐºÐ¾Ð´, Ð¿Ð¾Ñ‚Ð¾Ðº Ñ�Ð°Ð¼ Ð¾Ð¿Ñ€Ð°ÑˆÐ¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ ÐºÐ½Ð¾Ð¿ÐºÐ¸ 'ÐŸÐ¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹
    ÐºÐ¾Ð´' Ð½Ð° ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ðµ Ð¸ ÐºÐ»Ð°Ð´Ñ‘Ñ‚ ÐµÐ³Ð¾ Ð² `resend_available`, Ñ‡Ñ‚Ð¾Ð±Ñ‹ ÐºÐ½Ð¾Ð¿ÐºÐ° Ð² Ð¿Ð°Ð½ÐµÐ»Ð¸
    Ð±Ñ‹Ð»Ð° Ð°ÐºÑ‚Ð¸Ð²Ð½Ð° Ñ€Ð¾Ð²Ð½Ð¾ Ñ‚Ð¾Ð³Ð´Ð° Ð¶Ðµ, ÐºÐ¾Ð³Ð´Ð° Ð¾Ð½Ð° Ð°ÐºÑ‚Ð¸Ð²Ð½Ð° Ð² Ozon.c                óÞ   — || _         || _        || _        d| _        d | _        d | _        d | _        d | _        d| _        d| _	        d | _
        t        j                  «       | _        d | _        y )Nrî   F)r–   ÚnumberÚpasswordÚstatusÚmethodÚtargetÚerrorr™   Úresend_availableÚcancel_requestedÚ_deviceÚqueueÚQueueÚ	_action_qÚthread)r®   r–   rù   rú   s       rŽ   r°   zLoginSession.__init__	  se   € Ø"ˆŒØˆŒØ ˆŒØˆŒØ%)ˆŒØ%)ˆŒØ$(ˆŒ
Ø&*ˆŒØ %ˆÔØ %ˆÔØˆŒÜ/4¯{©{«}ˆŒØ26ˆ�r�   c                ó”   — | j                   €y 	 ddlm}  || j                   «      }|�t        |«      | _        y y # t
        $ r Y y w xY w)Nr   )Ú_get_new_code_button_enabled)r  Úmainr  Úboolrÿ   r·   )r®   r  Ústates      rŽ   Ú_update_resend_availablez%LoginSession._update_resend_available  sN   € Ø�<‰<ÐØð	Ý9Ù0°·±Ó>ˆEØÐ Ü(,¨U«�Õ%ð !øäò 	Ùð	ús   �*; »	AÁAc                óZ  — | j                   €y 	 ddlm}m}m} d| _         || j                   d¬«        || j                   «       t        j                  d«        || j                   «      xs i }|j                  d«      | _	        |j                  d«      | _
        y # t        $ r Y y w xY w)	Nr   )Údetect_code_screenÚdismiss_permission_dialogÚwait_and_tap_get_new_codeFg      $@©Útimeoutg      ð?rü   rý   )r  r  r  r  r  rÿ   rÔ   ÚsleeprÌ   rü   rý   r·   )r®   r  r  r  Úhints        rŽ   Ú_perform_resendzLoginSession._perform_resend#  sŒ   € Ø�<‰<ÐØð
	ßeÑeØ$)ˆDÔ!Ù% d§l¡l¸DÕAÙ% d§l¡lÔ3Ü�J‰J�sŒOÙ% d§l¡lÓ3Ò9°rˆDØŸ(™( 8Ó,ˆDŒKØŸ(™( 8Ó,ˆD�KøÜò 	Ùð	ús   �BB Â	B*Â)B*Nc                óè  — |xs i }|j                  d«      | _        |j                  d«      }|€
d|v sd|v r|}|xs i }|j                  d«      | _        |j                  d«      | _        | j                  r
t        «       ‚d| _        t        j                  «       t        z   }t        j                  «       |k  r•| j                  «        	 | j                  j                  d¬«      \  }}|dk(  r
t        «       ‚|d	k(  r	d
| _        |S |dk(  r+| j                  «        t        j                  «       t        z   }t        j                  «       |k  rŒ•t        d«      ‚# t        j                  $ r Y ŒÌw xY w)Nr™   r  rü   rý   rñ   g       @r  ÚcancelÚcoderï   Úresendu.   ÐšÐ¾Ð´ Ð½Ðµ Ð±Ñ‹Ð» Ð²Ð²ÐµÐ´Ñ‘Ð½ Ð²Ð¾Ð²Ñ€ÐµÐ¼Ñ�)rÌ   r  rü   rý   r   rô   rû   rÔ   ÚCODE_WAIT_TIMEOUTr  r  r  ÚEmptyr  ÚRuntimeError)r®   Úctxr  ÚdeadlineÚactionÚpayloads         rŽ   Úcode_providerzLoginSession.code_provider2  sM  € ØŠi�RˆØ—w‘w˜xÓ(ˆŒØ�w‰w�v‹ˆØˆ<˜X¨™_°¸C±ØˆDØŠz�rˆØ—h‘h˜xÓ(ˆŒØ—h‘h˜xÓ(ˆŒØ× Ò Ü Ó"Ð"Ø%ˆŒä—9‘9“;Ô!2Ñ2ˆÜ�i‰i‹k˜HÒ$Ø×)Ñ)Ô+ðØ"&§.¡.×"4Ñ"4¸SÐ"4Ó"A‘�˜ð ˜Ò!Ü$Ó&Ð&Ø˜ÒØ)�”Ø�Ø˜Ò!Ø×$Ñ$Ô&ÜŸ9™9›;Ô):Ñ:�ô �i‰i‹k˜HÓ$ô ÐKÓLÐLøô —;‘;ò Ùðús   ÃE ÅE1Å0E1c                ó>   — | j                   j                  d|f«       y )Nr  ©r  Úput)r®   r  s     rŽ   Úsubmit_codezLoginSession.submit_codeP  s   € Ø�‰×Ñ˜F D˜>Õ*r�   c                ó:   — | j                   j                  d«       y )N)r  Nr"  rÀ   s    rŽ   Úrequest_resendzLoginSession.request_resendS  s   € Ø�‰×ÑÐ+Õ,r�   c                óV   — d| _         d| _        | j                  j                  d«       y)up   ÐŸÐ¾Ð¼ÐµÑ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÑ�Ñ�Ð¸ÑŽ ÐºÐ°Ðº Ð¾Ñ‚Ð¼ÐµÐ½Ñ�ÐµÐ¼ÑƒÑŽ Ð¸ Ñ€Ð°Ð·Ð±ÑƒÐ´Ð¸Ñ‚ÑŒ Ð¿Ð¾Ñ‚Ð¾Ðº, Ð¶Ð´ÑƒÑ‰Ð¸Ð¹ ÐºÐ¾Ð´.Trð   )r  NN)r   rû   r  r#  rÀ   s    rŽ   Úrequest_cancelzLoginSession.request_cancelV  s$   € à $ˆÔØ"ˆŒØ�‰×ÑÐ+Õ,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÷     s,   „ ñeó7ò	òóMó<+ò-ó-r�   r÷   c                ó$  — 	 t        | j                  | j                  | j                  | j                  d¬«       t        t        | j                  «      «      | _        d| _        t         j#                  | j                  «       y # t        $ rY d| _        	 t        | j                  «       n1# t        $ r%}t        d| j                  › d|› �«       Y d }~nd }~ww xY wd| _        Y Œ�t        $ r~}| j                  rP	 t        | j                  «       n1# t        $ r%}t        d| j                  › d|› �«       Y d }~nd }~ww xY wd| _        nt        |«      | _        d| _        Y d }~�Œd }~ww xY w# t         j#                  | j                  «       w xY w)	NF)r   Úpress_get_new_codeÚdonerð   zcancel_login(ú
) failed: Ú	cancelledrþ   )rO   r–   rù   rú   r   Úserialize_deviceÚ_require_devicer™   rû   rô   rP   r·   rÎ   r   r¹   rþ   r   rä   )Úsessionrë   Únav_excs      rŽ   Ú
_run_loginr2  ]  sV  € ð-ÜØ×ÑØ�N‰NØ×ÑØ!×/Ñ/Ø$õ	
ô *¬/¸'×:KÑ:KÓ*LÓMˆŒØˆŒô& 	×Ñ˜'×+Ñ+Õ,øô% ò %Ø%ˆŒð	FÜ˜×*Ñ*Õ+øÜò 	FÜ�M '×"3Ñ"3Ð!4°J¸s¸eÐD×EÑEûð	Fúà$ˆŽÜò 	%Ø×#Ò#ðNÜ˜W×.Ñ.Õ/øÜò NÜ˜ g×&7Ñ&7Ð%8¸
À7À)ÐL×MÑMûðNúà(ˆG�Nä ›HˆGŒMØ$ˆGŒNÿùð	%ûô 	×Ñ˜'×+Ñ+Õ,úsŠ   ‚A"B ÂE+ÂB+Â*E+Â+	CÂ4CÃE+ÃCÃ
E+Ã#E. Ã%E+Ã-E&Ã:DÄE&Ä	D>ÄD9Ä4E&Ä9D>Ä>"E&Å E. Å&E+Å+E. Å.!Fc                ón   — t         j                  | «      }|€t        j                  «       }|t         | <   |S r¬   )r~   rÌ   ÚasyncioÚLock)r–   Úlocks     rŽ   Ú	_lock_forr7  }  s1   € Ü×Ñ˜YÓ'€DØ€|Ü�|‰|‹~ˆØ#'Œ�iÑ Ø€Kr�   ©rá   Únotify_setupÚcreatedc               óÔ   ‡ ‡‡‡‡— t        ‰ |«       ˆˆˆ ˆˆfd„}t        j                   |«       «      }t        j	                  |«       |j                  t        j                  «       y )Nc               “  óø  •K  — d} d }	 t        ‰«      4 ƒd {  –—†  t        j                  t        ‰‰g‰¢­Ž ƒ d {  –—†  d d d «      ƒd {  –—†  t        ‰«       ‰rJ|€G| sDt        ‰«      }|r6|j                  d«      r$t        j                  t        ‰‰«      ƒ d {  –—†  y y y y y y 7 Œ�7 Œn7 Œ`# 1 ƒd {  –—†7  sw Y   ŒpxY w# t        $ r d} Y Œ€t
        $ r}|}Y d }~Œ�d }~ww xY w# t        ‰«       w xY w7 ŒY­w)NFTÚneeds_setup)
r7  r4  Ú	to_threadrì   rI   r·   ræ   r$   rÌ   Ú_notify_setup_needed)	r-  rþ   rë   Úrowrê   r:  r–   ré   r9  s	       €€€€€rŽ   Úrunnerz$_spawn_device_action.<locals>.runner�  sÿ   øè ø€ Øˆ	Øˆð	#Ü  Ó+÷ Sñ SÜ×'Ñ'Ô(;¸YÈÐRÈTÒR×RÐR÷S÷ Sô ˜	Ô"Ù˜E˜M±)Ü˜YÓ'ˆCÙ�s—w‘w˜}Ô-Ü×'Ñ'Ô(<¸iÈÓQ×QÑQð .ˆsð 3<˜Mˆ<ðSøØRøðSø÷ S÷ Sñ Sûäò 	ØŠIÜò 	Ø�Eûð	ûô ˜	Õ"úð Rús¨   ƒC:‰C ˜B)™C œ B/¼B+½B/ÁC ÁB-ÁC ÁAC:ÂC8Â
C:Â)C Â+B/Â-C Â/CÂ5B8Â6CÂ=C ÃC%ÃC( ÃC%ÃC ÃC( Ã C%Ã%C( Ã(C5Ã5C:)râ   r4  Úcreate_taskr‚   rÞ   Úadd_done_callbackrä   )r–   ré   rá   r9  r:  rê   rA  Útasks   `` ```  rŽ   Ú_spawn_device_actionrE  …  sO   ü€ ô �)˜TÔ"÷Rð Rô" ×Ñ™v›xÓ(€DÜ‡M�M�$ÔØ×Ñœ9×,Ñ,Õ-r�   c                ó6  — | �| dk(  ryt        | t        t        f«      rt        | «      S t        | «      j	                  dd«      j	                  dd«      j	                  dd«      }t        j                  dd|«      }	 |rt        |«      S dS # t        $ r Y yw xY w)Nro   rÒ   õ   Â ú ú,ú.z[^\d.])r´   r»   r×   r¹   r³   ÚreÚsubÚ
ValueError©Úvaluer˜   s     rŽ   Ú
_to_numberrP  ¥  s’   € Ø€}˜ šØÜ�%œ#œu˜Ô&Ü�U‹|ÐÜˆu‹:×Ñ˜f cÓ*×2Ñ2°3¸Ó;×CÑCÀCÈÓM€DÜ�6‰6�)˜R Ó&€DðÙ"Œu�T‹{Ð+¨Ð+øÜò Ùðús   Á=B Â
B Â	BÂBz^#[0-9a-f]{6}$c                óˆ   — t        | xs d«      j                  «       j                  «       }t        j	                  |«      r|S y©Nro   )r¹   rŸ   ÚlowerÚ_LK_COLOR_REÚ	fullmatchrN  s     rŽ   Ú	_lk_colorrV  µ  s8   € ÜˆuŠ{˜Ó×!Ñ!Ó#×)Ñ)Ó+€DÜ×Ñ˜dÔ#ØˆØr�   c                ó0  — | j                  d«      xs d}| j                  d«      }| j                  d«      }t        | j                  d«      «      }t        | j                  d«      «      }t        | j                  d«      «      }|t        v rd}n|rd	}n|sd
}n|rd}n	|r|rd}nd}|€t        |«      }|xs i }t	        |j                  d«      xs d«      j                  «       xs t        }	|j                  d«      }
	 |
dvrt        |
«      nt        }t        | «      }i d|“d| j                  d«      xs dj                  «       “d| j                  d«      xs d“d|xs d“d|“d|“d|“d|“d|“d|t        v “dt        j                  |«      xs d“dt        | j                  d«      «      “dt        | j                  d«      «      “dt        | j                  d«      «      “dt        | j                  d«      | j                  d«      «      “d|	“d|“t        | j                  d«      «      t	        | j                  d«      xs d«      j                  «       t        | j                  d«      «      d œ¥S # t        t        f$ r
 t        }Y �Œ}w xY w)!Nr™   ro   ÚipÚportrù   Úblockedr=  ÚbusyÚsetupÚnewÚonlineÚofflineÚusernamerR  r—   rÄ   Úslotrû   ÚlinkedÚcheckingÚ	busy_kindrr   ÚincomeÚoutcomert   Ú
card_flagsÚssh_userÚssh_portÚfrom_publicÚ	public_idÚcolor)rj  rk  rl  )rÌ   r	  r   re   r¹   rŸ   ÚSSH_DEFAULT_USERr»   ÚSSH_DEFAULT_PORTÚ	TypeErrorrM  r    r�   rP  r/   rV  )r@  Úhostr–   rX  rY  rb  rZ  r=  rû   rh  Ússh_port_rawri  ra  s                rŽ   r.  r.  ¼  sÁ  € Ø—‘˜Ó!Ò' R€IØ	�‰�‹€BØ�7‰7�6‹?€DÜ�#—'‘'˜(Ó#Ó$€FÜ�3—7‘7˜9Ó%Ó&€GÜ�s—w‘w˜}Ó-Ó.€KØ”IÑØ‰Ù	Ø‰ÙØ‰Ù	Ø‰Ù	‘Ø‰àˆà€|Ü˜	Ó"ˆØŠ:�2€DÜ�4—8‘8˜JÓ'Ò-¨2Ó.×4Ñ4Ó6ÒJÔ:J€HØ—8‘8˜FÓ#€Lð$Ø(4¸JÑ(F”3�|Ô$ÔL\ˆô ˜SÓ!€DðØˆiðà�—‘˜“Ò& B×-Ñ-Ó/ðð 	�#—'‘'˜(Ó#Ò) rðð 	ˆbŠh�Bð	ð
 	�ðð 	�&ðð 	�&ðð 	�7ðð 	�{ðð 	�I¤Ð*ðð 	”Z—^‘^ IÓ.Ò4°"ðð 	”:˜cŸg™g iÓ0Ó1ðð 	”*˜SŸW™W XÓ.Ó/ðð 	”:˜cŸg™g iÓ0Ó1ðð 	”˜SŸW™W WÓ-¨s¯w©w°|Ó/DÓEðð  	�Hð!ð" 	�Hð#ô$ ˜CŸG™G MÓ2Ó3Ü˜Ÿ™ Ó-Ò3°Ó4×:Ñ:Ó<Ü˜3Ÿ7™7 7Ó+Ó,ò)ð øô ”zÐ"ò $Ü#‹ð$ús   ÄI< É<JÊJT©Ústrictc               óL  — t        | |¬«      }	 t        |«      }|dk  rd}t        t        «      |dz
  t        t
        «      z  z   }d|cxk  rdk  sn t        t        «      }||v r|dk  r|dz  }||v r|dk  rŒ||v r|rt        dd¬«      ‚|S # t        t        f$ r d}Y Œˆw xY w)N©Úexcluder•   éÿÿ  é™  uG   Ð�ÐµÑ‚ Ñ�Ð²Ð¾Ð±Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ‚Ð° ADB Ð½Ð° Ñ�Ñ‚Ð¾Ð¼ Ñ�ÐµÑ€Ð²ÐµÑ€Ðµ©Ústatus_codeÚdetail)r<   r»   ro  rM  rJ   rM   r   )rX  ra  rv  rs  ÚusedÚ	candidates         rŽ   Ú_suggested_adb_portr~  ô  sÃ   € Ü˜R¨Ô1€DðÜ�4‹yˆð ˆa‚xØˆÜÔ(Ó)¨T°A©X¼Ô=OÓ9PÑ,PÑP€IØ�	Ô"˜UÔ"ÜÔ,Ó-ˆ	Ø
�tÑ
 	¨EÒ 1Ø�Q‰ˆ	ð �tÑ
 	¨EÓ 1à�DÑ™VÜ¨Ð4}Ô~Ð~ØÐøô ”zÐ"ò ØŠðús   �B ÂB#Â"B#c                óz  — i }| D ]R  }t        |j                  d«      xs d«      j                  «       }|sŒ2|j                  |g «      j	                  |«       ŒT g }t        |j                  «       «      D ]C  }||   }t        ||rdnd¬«      }|j	                  |t        |«      |t        ||d¬«      dœ«       ŒE |S )	NrX  ro   é   r•   ©Úmin_slotFrr  )rX  ÚcountÚ	next_slotÚsuggested_port)
r¹   rÌ   rŸ   Ú
setdefaultr¢   ÚsortedÚkeysr-   r¼   r~  )ÚrowsÚby_ipr@  rX  ÚresultÚdevices_on_ipr„  s          rŽ   Ú_server_summariesr�    sÃ   € Ø€EØò -ˆÜ�—‘˜“Ò$ "Ó%×+Ñ+Ó-ˆÙØØ×Ñ˜˜RÓ ×'Ñ'¨Õ,ð	-ð
 €FÜ�U—Z‘Z“\Ó"ò ˆØ˜b™	ˆÜ$ R±}±!È!ÔLˆ	Ø�‰ØÜ˜Ó'Ø"Ü1°"°iÈÔNñ	
õ 	ðð €Mr�   z!^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$z%(\d{1,3}(?:\.\d{1,3}){3}):(\d{4,5})\bz4^(\d{1,3}(?:\.\d{1,3}){3}|[A-Za-z0-9.-]+):(\d{1,5})$g      N@c                óH   — t         j                  dt        | xs d«      «      S )Nz\1ro   )Ú_DEVICE_ENDPOINT_RErL  r¹   )r˜   s    rŽ   Ú_without_device_portr�     s   € Ü×"Ñ" 5¬#¨dªj°b«/Ó:Ð:r�   c                ó¢   — t        | xs d«      j                  «       }|st        dd¬«      ‚t        j	                  |«      st        dd¬«      ‚|S )Nro   é�  u$   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð¸Ð¼Ñ� Ð´ÐµÐ²Ð°Ð¹Ñ�Ð°ry  u:   Ð˜Ð¼Ñ� Ð´ÐµÐ²Ð°Ð¹Ñ�Ð°: Ð»Ð°Ñ‚Ð¸Ð½Ð¸Ñ†Ð°, Ñ†Ð¸Ñ„Ñ€Ñ‹, . _ -)r¹   rŸ   r   Ú_DEVICE_ID_RErU  )rO  r–   s     rŽ   Ú_parse_device_idr”  $  sL   € Ü�E’K˜RÓ ×&Ñ&Ó(€IÙÜ¨Ð4ZÔ[Ð[Ü×"Ñ" 9Ô-Ü¨Ð4pÔqÐqØÐr�   c                ó~   — t        | xs d«      j                  dd«      j                  «       }|st        dd¬«      ‚|S )Nro   rI  rJ  r’  õ   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ IPry  )r¹   r³   rŸ   r   )rO  rX  s     rŽ   Ú	_parse_ipr—  -  s<   € Ü	ˆUŠ[�bÓ	×	!Ñ	! # sÓ	+×	1Ñ	1Ó	3€BÙÜ¨Ð4GÔHÐHØ€Ir�   )ÚrequiredÚdefaultc               ój  — | dv rK|rt        dd|j                  «       › �¬«      ‚|€t        dd|j                  «       › �¬«      ‚t        |«      S 	 t        t        | «      j	                  «       «      }d|cxk  rdk  sn t        d|› d�¬«      ‚|S # t
        t        f$ r t        d|› d�¬«      ‚w xY w)	NrR  r’  u   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ ry  u#    Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼r•   rw  u   : 1â€“65535)r   rS  r»   r¹   rŸ   ro  rM  )rO  Úlabelr˜  r™  rY  s        rŽ   Ú_parse_tcp_portrœ  4  sÂ   € Ø�
ÑÙÜ¨C¸/È%Ï+É+Ë-ÈÐ8YÔZÐZØˆ?Ü¨C¸/È%Ï+É+Ë-ÈÐ8YÔZÐZÜ�7‹|ÐðcÜ”3�u“:×#Ñ#Ó%Ó&ˆð �Ô˜ÔÜ¨°u°g¸[Ð4IÔJÐJØ€Køô	 ”zÐ"ò cÜ¨°u°gÐ=`Ð4aÔbÐbðcús   Á"B Â B2c                óð   — | dv r|S t        | t        «      r| S t        | t        t        f«      rt        | «      S t	        | «      j                  «       j                  «       }|dv ry|dv ryt        dd¬«      ‚)	NrR  >   Ú1ÚyÚdaÚonÚyesÚtrueÚreadyõ   Ð´Ð°T>   õ   Ð½ÐµÑ‚Ú0ÚnÚnoÚoffÚfalseÚ	not_readyFr’  u,   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ, Ð³Ð¾Ñ‚Ð¾Ð² Ð»Ð¸ Ð´ÐµÐ²Ð°Ð¹Ñ�ry  )r´   r	  r»   r×   r¹   rŸ   rS  r   )rO  r™  r˜   s      rŽ   Ú_parse_ready_flagr­  D  sw   € Ø�
ÑØˆÜ�%œÔØˆÜ�%œ#œu˜Ô&Ü�E‹{ÐÜˆu‹:×ÑÓ×#Ñ#Ó%€DØÐEÑEØØÐFÑFØÜ
 CÐ0^Ô
_Ð_r�   ©Úport_fallbackc               óÐ  — t        t        | j                  d«      xs | j                  d«      xs d«      «      }|s't        t        | j                  d«      xs d«      «      }|s)|r't        t        | j                  d«      xs d«      «      }t        | j                  d«      xs | j                  d«      xs d«      j                  «       }| j                  d«      }|€|r| j                  d	«      }|€dn
t        |«      }| j                  d«      }|d
v r|r| j                  d«      }| j                  d«      }|d
v r|r| j                  d«      }|rV|xs |d   }|dk(  r|d	   }t        |xs d«      j                  «       rt        t        |xs d«      «      r|d   }|d
v r|d   }t	        |«      }t        |d¬«      }|st        dd¬«      ‚|st        dd¬«      ‚||||dœS )NÚ	proxy_urlÚproxyro   Úproxy_iprX  Úproxy_loginÚloginÚproxy_passwordrú   rR  Ú
proxy_portrY  r`  u   ÐŸÐ¾Ñ€Ñ‚ Ð¿Ñ€Ð¾ÐºÑ�Ð¸©r›  r’  u&   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð»Ð¾Ð³Ð¸Ð½ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ry  u(   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð¿Ñ€Ð¾ÐºÑ�Ð¸©rµ  rú   rX  r·  )Ú_parse_proxy_urlr¹   rÌ   rŸ   r—  rœ  r   )	Úbodyr¯  Úparsedrµ  rú   Úip_rawÚproxy_port_rawrX  r·  s	            rŽ   Ú_parse_proxy_credentialsr¿  S  sÉ  € Üœc $§(¡(¨;Ó"7Ò"R¸4¿8¹8ÀGÓ;LÒ"RÐPRÓSÓT€FÙÜ!¤# d§h¡h¨zÓ&:Ò&@¸bÓ"AÓBˆÙ‘mÜ!¤# d§h¡h¨t£nÒ&:¸Ó";Ó<ˆÜ�—‘˜Ó'ÒB¨4¯8©8°GÓ+<ÒBÀÓC×IÑIÓK€EØ�x‰xÐ(Ó)€HØÐ™MØ—8‘8˜JÓ'ˆØÐ%‰r¬3¨x«=€HØ�X‰X�jÓ!€FØ�Ñ¡Ø—‘˜$“ˆØ—X‘X˜lÓ+€NØ˜Ñ#©ØŸ™ &Ó)ˆÙØÒ+˜ 
Ñ+ˆØ�rŠ>Ø˜jÑ)ˆHÜ�6’<˜RÓ ×&Ñ&Ô(Ô,<¼SÀÂÈ2Ó=NÔ,OØ˜D‘\ˆFØ˜ZÑ'Ø# F™^ˆNÜ	�6Ó	€BÜ  Ð7NÔO€JÙÜ¨Ð4\Ô]Ð]ÙÜ¨Ð4^Ô_Ð_Ø¨¸È*ÑUÐUr�   c                óZ   — |rdnd}t        dt        j                  | «      › d|› d�«       y )Nu   Ñ�Ð¾Ð·Ð´Ð°Ð½u   Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±Ñ€Ð°Ð½u   Ð”ÐµÐ²Ð°Ð¹Ñ� <b>z</b> u…   .

Ð•Ð³Ð¾ Ð½ÑƒÐ¶Ð½Ð¾ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¸Ñ‚ÑŒ. ÐŸÐ¾Ñ�Ð»Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð² Ð¿Ð°Ð½ÐµÐ»Ð¸ Ð½Ð°Ð¶Ð¼Ð¸Ñ‚Ðµ Â«Ð“Ð¾Ñ‚Ð¾Ð² Ðº Ñ€Ð°Ð±Ð¾Ñ‚ÐµÂ».)Ú_notify_adminÚhtmlÚescape)r–   r:  r  s      rŽ   r?  r?  u  s8   € Ù&‰^Ð,B€FÜàœtŸ{™{¨9Ó5Ð6°e¸F¸8ð DQð Qõr�   c                ó:  — | xs dj                  «       }|rd|vry |}|j                  d«      \  }}}|rD|rB|j                  dd«      j                  dd«      j                  dd«      j                  «       r|}|j	                  dd«      d	   j	                  d
d«      d	   j	                  dd«      d	   }|j                  d«      }|d	k  ry |d | ||dz   d  }}|j                  d«      }	|	d	k  ry t        |d |	 «      j                  «       }
t        ||	dz   d  «      }t        j                  |j                  «       «      }|sy 	 t        |j                  d«      «      }|
r|dk(  sd|cxk  rdk  sy  y |j                  d«      ||
|dœS # t        t        f$ r Y y w xY w)Nro   ú@ú://ú+rJ  ú-ú/r•   r   ú?ú#ú:r€  rw  )rX  rY  r`  rú   )rŸ   Ú	partitionr³   Úisalnumrœ   ÚrfindÚfindr   Ú_PROXY_HOSTPORT_RErU  r»   Úgroupro  rM  )rO  r˜   ÚrestÚschemeÚsepÚ	remainderÚatÚuserinfoÚhostportÚcolonÚuserrú   ÚmatchrY  s                 rŽ   rº  rº    s²  € ØŠK�R×ÑÓ €DÙ�3˜d‘?ØØ€DØ!Ÿ^™^¨EÓ2Ñ€FˆC�Ù
‰v˜&Ÿ.™.¨¨bÓ1×9Ñ9¸#¸rÓB×JÑJÈ3ÐPRÓS×[Ñ[Ô]ØˆØ�:‰:�c˜1Ó˜aÑ ×&Ñ& s¨AÓ.¨qÑ1×7Ñ7¸¸QÓ?ÀÑB€DØ	�‰�C‹€BØ	ˆQ‚wØØ˜c˜r˜ D¨¨a©¨ Nˆh€HØ�M‰M˜#Ó€EØˆq‚yØÜ�8˜F˜UÐ#Ó$×*Ñ*Ó,€DÜ�x ¨¡	 Ð,Ó-€HÜ×(Ñ(¨¯©Ó)9Ó:€EÙØðÜ�5—;‘;˜q“>Ó"ˆñ �8˜r’>¨!¨tÔ*<°uÒ*<Øð +=Øà�k‰k˜!‹nØØØñ	ð øô	 ”zÐ"ò Ùðús   ÅF ÆFÆFc                ó^   — t        t        | xs d«      «      }|sy|d   |d   |d   |d   dœS )uh   ÐŸÑ€ÐµÐ²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ Ð² {login, password, ip, proxy_port} Ð´Ð»Ñ� Ñ�Ð±Ð¾Ñ€ÐºÐ¸.ro   Nr`  rú   rX  rY  r¹  )rº  r¹   )Úurlr¼  s     rŽ   Ú_proxy_dict_from_urlrß  ¢  sB   € äœc #¢)¨›nÓ-€FÙØà˜
Ñ#Ø˜:Ñ&Ø�T‰lØ˜V‘nñ	ð r�   c                óÄ   — t        | xs d«      }t        |«      }|s|S d}|j                  «       }|j                  d«      \  }}}|r|› d�}|› |d   › d|d   › d|d   › �S )u[   ÐŸÑ€Ñ�Ñ‡ÐµÑ‚ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð² Ñ�Ñ�Ñ‹Ð»ÐºÐµ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ð´Ð°Ñ‡Ð¸ Ð² Ð¿Ð°Ð½ÐµÐ»ÑŒ.ro   rÆ  r`  z:***@rX  rÌ  rY  )r¹   rº  rŸ   rÍ  )rÞ  r˜   r¼  rÔ  rÓ  ÚheadrÕ  rÖ  s           rŽ   Ú_mask_proxy_urlrâ  ¯  s~   € äˆsŠy�b‹>€DÜ˜dÓ#€FÙØˆØ€FØ�:‰:‹<€DØŸ>™>¨%Ó0Ñ€Dˆ#ˆyÙ
Ø�6˜�ˆØˆX�f˜ZÑ(Ð)¨¨v°d©|¨n¸A¸fÀV¹nÐ=MÐNÐNr�   c                óì   — | j                  d«      t        | j                  d«      «      t        | j                  d«      «      | j                  d«      | j                  d«      | j                  d«      dœS )Nr—   rÞ  r|  Úadded_atÚused_atÚused_by)r—   rÞ  r|  rä  rå  ræ  )rÌ   râ  r	  )r@  s    rŽ   Ú_proxy_publicrç  ½  s[   € à�g‰g�d‹mÜ˜sŸw™w u›~Ó.Ü�S—W‘W˜V“_Ó%Ø—G‘G˜JÓ'Ø—7‘7˜9Ó%Ø—7‘7˜9Ó%ñð r�   c                 óð   — t        «       } | D �cg c]  }|j                  d«      rŒt        |«      ‘Œ! }}| D �cg c]  }|j                  d«      sŒt        |«      ‘Œ! }}||t        «       ddœS c c}w c c}w )Nr|  T)Ú	availabler|  ÚcountsÚok)r,   rÌ   rç  r0   )r‰  Úrré  r|  s       rŽ   Ú_proxies_payloadrí  È  sn   € Ü‹>€DØ+/ÖE a°q·u±u¸Vµ}”˜qÕ!ÐE€IÐEØ&*Ö< ¨a¯e©e°F­mŒM˜!ÕÐ<€DÐ<àØÜ“.Øñ	ð ùò FùÚ<s   �A.¦A.¹A3ÁA3c                ó  — | j                  d«      }|€| j                  d«      }|€yt        |t        «      r|S t        |t        t        f«      rt        |«      S t        |«      j                  «       j                  «       dv S )NÚuse_poolÚ
proxy_poolF>   rž  r¡  r¢  Úpoolr£  r¥  )rÌ   r´   r	  r»   r×   r¹   rŸ   rS  )r»  Úvals     rŽ   Ú_wants_pool_proxyró  Ô  sr   € Ø
�(‰(�:Ó
€CØ
€{Ø�h‰h�|Ó$ˆØ
€{ØÜ�#”tÔØˆ
Ü�#œœU�|Ô$Ü�C‹yÐÜˆs‹8�>‰>Ó×!Ñ!Ó#Ð'QÐQÐQr�   c                óª   — 	 t        | «      }|st        dd¬«      ‚t        |j                  d«      «      }|r|S t	        |j                  d«      «       ŒS)ux   Ð‘ÐµÑ€Ñ‘Ñ‚ Ñ�Ð²Ð¾Ð±Ð¾Ð´Ð½ÑƒÑŽ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ Ð¸Ð· Ð¿ÑƒÐ»Ð°, Ð¿Ð°Ñ€Ñ�Ð¸Ñ‚ Ð¸ Ð¿Ð¾Ð¼ÐµÑ‡Ð°ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹.rx  õ2   Ð�ÐµÑ‚ Ñ�Ð²Ð¾Ð±Ð¾Ð´Ð½Ñ‹Ñ… Ð¿Ñ€Ð¾ÐºÑ�Ð¸ Ð² Ð¿ÑƒÐ»Ðµry  rÞ  r—   )r8   r   rß  rÌ   r   )r–   r@  r²  s      rŽ   Ú_take_pool_proxyrö  á  sO   € à
Ü˜iÓ(ˆÙÜ¨CÐ8lÔmÐmÜ$ S§W¡W¨U£^Ó4ˆÙØˆLä�S—W‘W˜T“]Ô#ð r�   c                óN  — | |k(  ry | t         v rt         j                  | «      t         |<   | t        v r*t        j                  | «       t        j	                  |«       | t
        v rt
        j                  | «      t
        |<   | t        v rt        j                  | «      t        |<   y y r¬   )r~   r�   r   rä   rÞ   r�   rƒ   )Úold_idÚnew_ids     rŽ   Ú_retarget_runtimerú  î  s‰   € Ø�ÒØØ”ÑÜ -× 1Ñ 1°&Ó 9Œ�fÑØ”ÑÜ×Ñ˜&Ô!Ü�‰�fÔØ”ÑÜ'Ÿ^™^¨FÓ3Œ
�6ÑØ”ÑÜ -× 1Ñ 1°&Ó 9Œ�fÒð r�   c                óB   — t        | «      }|st        dd| › d�¬«      ‚|S )Né”  õ   Ð£Ñ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ 'õ   ' Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ry  )r$   r   ©r–   r@  s     rŽ   r/  r/  ü  s,   € Ü
�YÓ
€CÙÜ¨Ð6LÈYÈKÐWlÐ4mÔnÐnØ€Jr�   c                óZ   — | xs dj                  «       } | j                  d«      r| dd  } | S )Nro   z::ffff:é   )rŸ   Ú
startswith)rX  s    rŽ   Ú_normalize_ipr    s0   € Ø
Š(�×	Ñ	Ó	€BØ	‡}�}�YÔØ��ˆVˆØ€Ir�   c                óJ  — t        | j                  r| j                  j                  nd«      }|t        v ri| j                  j                  d«      xs | j                  j                  d«      xs dj                  «       }|rt        |j                  d«      d   «      S |xs dS )Nro   z	x-real-ipzx-forwarded-forrI  r   rp   )r  Úclientrp  Ú_LOOPBACK_IPSÚheadersrÌ   rŸ   rœ   )ÚrequestÚpeerÚ	forwardeds      rŽ   Ú
_client_ipr  
  s�   € Ü°·²˜Ÿ™×,Ò,ÀBÓG€DØŒ}Ñà�O‰O×Ñ Ó,ò Ø�‰×"Ñ"Ð#4Ó5òàß
‰%‹'ð	 	ñ
 Ü  §¡°Ó!5°aÑ!8Ó9Ð9ØÒ�9Ðr�   c                óN   — | j                   j                  d«      xs d}|ddddœS )NÚoriginrw   z!GET, POST, PATCH, DELETE, OPTIONSzMAccept, Content-Type, Authorization, X-Telegram-Init-Data, X-Panel-Link-TokenÚOrigin)zAccess-Control-Allow-OriginzAccess-Control-Allow-MethodszAccess-Control-Allow-HeadersÚVary)r  rÌ   )r  r  s     rŽ   Ú_cors_headersr    s1   € Ø�_‰_× Ñ  Ó*Ò1¨c€Fà'-Ø(KØ(wØñ	ð r�   c                ó4   — t        dddit        | «      ¬«      S )Né“  r{  u   IP Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½©rz  Úcontentr  )r   r  ©r  s    rŽ   Ú_banned_responser  !  s#   € ÜØØÐ8Ð9Ü˜gÓ&ôð r�   c                óJ   — | j                  d«      xr | j                  d«      S )Nú/api/r‹   )r  Úendswith©Úpaths    rŽ   Ú_is_screen_apir  )  s   € Ø�?‰?˜7Ó#Ò@¨¯©°iÓ(@Ð@r�   c                ó†   — | dk(  ry| j                  d«      sy| dk(  ry| j                  d«      ryd| v ryt        | «      ryy)Nr{   Tr  Fú	/api/logsz/api/userbotz/check/)r  r  r  s    rŽ   Ú_is_counted_apir  -  sN   € Øˆv‚~ØØ�?‰?˜7Ô#ØØˆ{ÒØØ‡��~Ô&ØØ�DÑØÜ�dÔØØr�   c                 óˆ   — 	 t         j                  t        «       «       y # t        $ r} t	        d| › �«       Y d } ~ y d } ~ ww xY w)Nu3   Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ banned_ips: )r‰   Úupdater(   r·   rÎ   ©rë   s    rŽ   Ú_load_banned_ipsr#  =  s>   € ðKÜ×Ñœ?Ó,Õ-øÜò KÜÐCÀCÀ5ÐI×JÑJûðKús   ‚   	A©<¼Ac                óP   — | t         v ry t        d| › d|› �«       t        | d«       y )Nu   Ð°Ð²Ñ‚Ð¾Ð±Ð°Ð½ IP ú: T)r  rÎ   Ú_set_ip_banned)rX  Úreasons     rŽ   Ú_ban_ipr(  D  s-   € Ø	Œ]ÑØÜ	Ð˜r˜d " V HÐ
-Ô.Ü�2�tÕr�   c           	     ó¬  — | xs dj                  «       } | syt        5  |rBt        j                  | «       t        j                  | d «       t        j                  | d «       nt        j                  | «       d d d «       	 |rt        | «       yt        | «      S # 1 sw Y   Œ#xY w# t        $ r$}t        d|rdnd› d| › d|› �«       |cY d }~S d }~ww xY w)	Nro   FTu   Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ u   Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒu
   Ñ�Ð½Ñ�Ñ‚ÑŒu    Ð±Ð°Ð½ r%  )rŸ   Ú
_rate_lockr‰   rÞ   r‡   r�   rˆ   rä   r5   r1   r·   rÎ   )rX  Úbannedrë   s      rŽ   r&  r&  K  sÉ   € Ø
Š(�×	Ñ	Ó	€BÙØÜ	ñ $ÙÜ�O‰O˜BÔÜ�L‰L˜˜TÔ"Ü×Ñ˜R Õ&ä×Ñ Ô#÷$ðÙÜ˜2ÔØÜ Ó#Ð#÷$ð $ûô ò ÜÐ$¹VÑ%9ÈÐ$VÐV^Ð_aÐ^bÐbdÐehÐdiÐjÔkØ�ûðús0   žABÂB& Â
B& ÂB#Â&	CÂ/CÃCÃCc                óR  — t        t        | xs d«      j                  «       «      }|st        dd¬«      ‚d|v rt        dd¬«      ‚	 t	        j
                  |«      }|j                  s|t        v rt        dd¬«      ‚|j                  S # t        $ r}t        dd¬«      |‚d }~ww xY w)	Nro   r’  r–  ry  rÉ  u9   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ñ‹Ð¹ IP, Ð±ÐµÐ· Ð¼Ð°Ñ�ÐºÐ¸u   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ IPu1   localhost Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ)
r  r¹   rŸ   r   Ú	ipaddressÚ
ip_addressrM  Úis_loopbackr  Ú
compressed)Úrawr˜   r¼  rë   s       rŽ   Ú_parse_ban_ipr2  `  sª   € Üœ˜SšY B›×-Ñ-Ó/Ó0€DÙÜ¨Ð4GÔHÐHØ
ˆd�{Ü¨Ð4oÔpÐpð\Ü×%Ñ% dÓ+ˆð ×Ò˜T¤]Ñ2Ü¨Ð4gÔhÐhØ×ÑÐøô	 ò \Ü¨Ð4QÔRÐX[Ð[ûð\ús   ÁB
 Â
	B&ÂB!Â!B&c                 ó   — t        «       ddœS )NT)Úipsrë  )r'   rŒ   r�   rŽ   Ú_banned_ips_payloadr5  o  s   € Ü&Ó(°Ñ5Ð5r�   c               óâ  — | t         v ryt        j                  «       }d}t        5  | t        v r
	 ddd«       y|j                  | «      }|€t        «       }||| <   ||z
  }|r#|d   |k  r|j                  «        |r	|d   |k  rŒ|j                  |«       t        |«      |kD  r)t        j                  | «       |j                  | d«       d}ddd«       |rt        | |«       yy# 1 sw Y   ŒxY w)u\   True, ÐµÑ�Ð»Ð¸ IP ÑƒÐ¶Ðµ Ð² Ð±Ð°Ð½Ðµ Ð¸Ð»Ð¸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ‡Ñ‚Ð¾ Ð¿Ñ€ÐµÐ²Ñ‹Ñ�Ð¸Ð» Ð»Ð¸Ð¼Ð¸Ñ‚.FNTr   )r  rÔ   rÕ   r*  r‰   rÌ   r   Úpopleftr¢   r¼   rÞ   r�   r(  )	rX  Úhits_mapÚmax_requestsÚ
window_secr'  ÚnowÚjust_bannedÚhitsÚcutoffs	            rŽ   Ú_hit_and_maybe_banr?  s  sï   € ð 
Œ]ÑØÜ
�.‰.Ó
€CØ€KÜ	ñ Ø”ÑØ÷ð ð �|‰|˜BÓˆØˆ<Ü“7ˆDØˆH�R‰LØ�zÑ!ˆÙ�t˜A‘w &Ò(Ø�L‰LŒNñ �t˜A‘w &Ó(à�‰�CÔÜˆt‹9�|Ò#Ü�O‰O˜BÔØ�L‰L˜˜TÔ"ØˆK÷ñ Ü��FÔØØ÷%ð ús   ¦
C%¹AC%ÂAC%Ã%C.>	   ú
banned-ipsÚmeÚauthÚlogsÚhealthÚdevicesÚuserbotÚworkersú
card-flags>
   ©Úback©rl  ©r¤  ©r  ©Úreboot©rt   rÞ   ©rt   Úflags©Úcheckrt   ©rT  rr   ©rT  rs   c                óD   — 	 t        | «      S # t        t        f$ r Y y w xY wr¬   )r»   ro  rM  ©rO  s    rŽ   Ú	_as_tg_idrY  ¤  s(   € ðÜ�5‹zÐøÜ”zÐ"ò Ùðús   ‚
 �žc                óf   — t        | «      }|€y t        t        «      }|�||k(  ryt        |«      ryy )NÚadminÚworker)rY  r=   r&   )Úuser_idÚuidÚadmin_ids      rŽ   Ú_panel_roler`  «  s;   € Ü
�GÓ
€CØ
€{ØÜœÓ%€HØÐ  x¢ØÜ�sÔØØr�   c                 ó  — t        «       } | sdgS d}g }| D �]  }t        j                  t        |j	                  d«      xs d«      «      }t        j                  t        |j	                  d«      xs d«      j                  «       xs d«      }t        j                  t        |j	                  d«      xs d«      j                  «       xs d«      }t        j                  t        |j	                  d«      xs d«      j                  «       xs d«      }|j                  d	|› d
|› d|› d|› d�	«       �Œ g }|}	|D ];  }
|	› d|
› �}t        |«      t        kD  r|	|k7  r|j                  |	«       |› d|
› �}	Œ:|}	Œ= |j                  |	«       |S )Nu0   Ð›Ð¸Ñ‡Ð½Ñ‹Ñ… ÐºÐ°Ð±Ð¸Ð½ÐµÑ‚Ð¾Ð² Ð¿Ð¾ÐºÐ° Ð½ÐµÑ‚.u   <b>ÐŸÐ°Ñ€Ð¾Ð»Ð¸ Ð¾Ñ‚ Ð›Ðš</b>r™   u   â€”rÄ   ro   rù   rú   z<b>u   </b>
Ð›Ðš: u   
Ð�Ð¾Ð¼ÐµÑ€: <code>u   </code>
ÐŸÐ°Ñ€Ð¾Ð»ÑŒ: <code>z</code>z

)	r)   rÂ  rÃ  r¹   rÌ   rŸ   r¢   r¼   Ú_PANEL_BOT_MESSAGE_LIMIT)r‰  ÚheaderÚblocksr@  r™   rÄ   rù   rú   ÚmessagesÚcurrentÚblockr}  s               rŽ   Ú_format_lk_password_messagesrh  ·  s†  € Ü‹>€DÙØBÐCÐCà,€FØ€FØó 

ˆÜ—‘œS §¡¨Ó!2Ò!;°eÓ<Ó=ˆÜ�{‰{œC §¡¨£Ò 5°2Ó6×=Ñ=Ó?ÒHÀ5ÓIˆÜ—‘œc #§'¡'¨(Ó"3Ò"9°rÓ:×AÑAÓCÒLÀuÓMˆÜ—;‘;¤ C§G¡G¨JÓ$7Ò$=¸2Ó >×EÑEÓGÒPÈ5ÓQˆØ�‰Ø�&�ð Ø�Fð !Ø!' ð )#Ø#+ *¨Gð5ö	
ð

ð €HØ€GØò  ˆØ�i˜t E 7Ð+ˆ	Üˆy‹>Ô4Ò4¸ÀFÒ9JØ�O‰O˜GÔ$Ø˜  U GÐ,‰Gà‰Gð ð ‡O�O�GÔØ€Or�   c                ó�   — | j                   j                  dk7  s| j                  €yt        | j                  j                  «      dv S )NÚprivateF>   r[  r\  )ÚchatÚtypeÚ	from_userr`  r—   ©Úmessages    rŽ   Ú_staff_messagerp  ×  s?   € Ø‡|�|×Ñ˜IÒ%¨×):Ñ):Ð)BØÜ�w×(Ñ(×+Ñ+Ó,Ð0CÐCÐCr�   c              ƒ  ón   K  — t        | «      sy | j                  dt        «       ¬«      ƒ d {  –—†  y 7 Œ­w)NuZ   ÐšÐ¾Ð¼Ð°Ð½Ð´Ð° /pass Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ‚ Ð¿Ð°Ñ€Ð¾Ð»Ð¸ Ð²Ñ�ÐµÑ… Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… ÐºÐ°Ð±Ð¸Ð½ÐµÑ‚Ð¾Ð².©Úreply_markup)rp  Úanswerr   rn  s    rŽ   Úon_panel_startru  Ý  s5   è ø€ ä˜'Ô"ØØ
�.‰.ØdÜ(Ó*ð ó ÷ ò ús   ‚+5­3®5Úpassc           	   ƒ  óV  K  — t        | «      sy 	 t        «       }t        |«      D ]/  \  }}| j                  ||dk(  r
t        «       nd ¬«      ƒ d {  –—†  Œ1 y # t        $ rC}| j                  dt	        j
                  t        |«      «      › �«      ƒ d {  –—†7   Y d }~y d }~ww xY w7 ŒV­w)Nu3   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ�Ð¿Ð¸Ñ�Ð¾Ðº: r   rr  )	rp  rh  r·   rt  rÂ  rÃ  r¹   Ú	enumerater   )ro  r¦   rë   ÚindexÚparts        rŽ   Úon_lk_passwordsr{  ç  s§   è ø€ ä˜'Ô"ØðÜ,Ó.ˆô ! Ó'ò _‰ˆˆtØ�n‰n˜TÈÐRSÊÔ0CÔ0EÐY]ˆnÓ^×^Ñ^ñ_øô ò Ø�n‰nÐRÔSW×S^ÑS^Ô_bÐcfÓ_gÓShÐRiÐjÓk×kÑkÜûðúð 	_úsE   ‚B)�
A š6B)ÁB'ÁB)Á	B$Á!3BÂBÂBÂB)ÂB$Â$B)c               ƒ  ó°   K  — t         €y 	 t        j                  t         dg¬«      ƒ d {  –—†  y 7 Œ# t        $ r} t	        d| › �«       Y d } ~ y d } ~ ww xY w­w)Nro  )Úallowed_updateszpanel bot polling failed: )r}   Úpanel_dpÚstart_pollingr·   rÎ   r"  s    rŽ   Ú_run_panel_botr€  ô  sQ   è ø€ ÜÐØð2Ü×$Ñ$¤YÀÀÐ$ÓL×LÒLùÜò 2ÜÐ*¨3¨%Ð0×1Ñ1ûð2üs6   ‚A‹2 ª0«2 ¯A°2 ²	A»AÁ	AÁAÁAc                ó–  — | xs dj                  «       } |xs dj                  d«      D �cg c]  }|sŒ|‘Œ	 }}|r|d   dk7  ryt        |dd  «      }| dk(  rD|dv ry	t        |«      dk(  r|d   t        vry	t        |«      d
k(  xr |d   t        vxr |d   dk(  S | dk7  st        |«      d
k  s|d   t        v ry|dd  t
        v S c c}w )Nro   rÉ  r   ÚapiFr•   ÚGET)rŒ   )rE  )rA  )rH  Tr€  ÚscreenÚPOST)Úupperrœ   Útupler¼   Ú_RESERVED_APIÚ_WORKER_POST_TAILS)rü   r  Úpr¦   rÓ  s        rŽ   Ú_worker_canr‹  ý  sæ   € ØŠl˜×!Ñ!Ó#€FØš ×*Ñ*¨3Ó/Ö5�1²1ŠQÐ5€EÐ5Ù�E˜!‘H Ò%ØÜ��q�r�Ó€DØ�‚ØÐ?Ñ?ØÜˆt‹9˜Š>˜d 1™g¬]Ñ:ØÜ�4‹y˜A‰~ÒV $ q¡'´Ð">ÒVÀ4ÈÁ7ÈhÑCVÐVØ�Òœ3˜t›9 qš=¨D°©G´}Ñ,DØØ��ˆ8Ô)Ð)Ð)ùò 6s
   ¬C´Cc                 ó$   — t         t        t        gS r¬   )rA   r>   r@   rŒ   r�   rŽ   Ú_bot_tokensr�    s   € ÜœYÔ(8Ð9Ð9r�   c                 óB   — t         xs
 t        xs dj                  «       S )Nzozpay-panel)r>   r@   rŸ   rŒ   r�   rŽ   Ú_session_secretr�    s   € ÜÒ:Ô)Ò:¨]×AÑAÓCÐCr�   c                ó<   — | xs dj                  d«      xs d}|dv S )Nro   rÉ  >   ú	/api/authú/api/health©Úrstrip)r  Ú
normalizeds     rŽ   Ú_is_public_apir–    s'   € Ø’*˜"×$Ñ$ SÓ)Ò0¨S€JØÐ5Ð5Ð5r�   c                ó2   — | xs dj                  d«      dk(  S )Nro   rÉ  z/api/devices/import-publicr“  r  s    rŽ   Ú_is_import_public_apir˜    s   € ØŠJ�B×Ñ˜sÓ#Ð'CÑCÐCr�   c                óz   — | j                   j                  d«      xs dj                  «       }|r|S t        | «      S )Nzx-panel-link-tokenro   )r  rÌ   rŸ   Ú_extract_bearer)r  rc  s     rŽ   Ú_extract_link_tokenr›    s8   € Ø�o‰o×!Ñ!Ð"6Ó7Ò=¸2×DÑDÓF€FÙØˆÜ˜7Ó#Ð#r�   c                ó¾   — t        t        xs d«      j                  «       }t        | «      }|r|rt	        |«      t	        |«      k7  ryt        j                  ||«      S )Nro   F)r¹   rB   rŸ   r›  r¼   ÚhmacÚcompare_digest)r  ÚexpectedÚgots      rŽ   Ú_link_token_okr¡  &  sO   € ÜÔ#Ò) rÓ*×0Ñ0Ó2€HÜ
˜gÓ
&€CÙ™3¤# h£-´3°s³8Ò";ØÜ×Ñ˜x¨Ó-Ð-r�   c                ó$  — | j                   j                  d«      xs dj                  «       }|r|S | j                   j                  d«      xs dj                  «       }|j                  «       j	                  d«      r|dd  j                  «       S y)Nzx-telegram-init-dataro   Úauthorizationztma rm   ©r  rÌ   rŸ   rS  r  )r  rc  rB  s      rŽ   Ú_extract_init_datar¥  .  sy   € Ø�o‰o×!Ñ!Ð"8Ó9Ò?¸R×FÑFÓH€FÙØˆØ�O‰O×Ñ Ó0Ò6°B×=Ñ=Ó?€DØ‡z�zƒ|×Ñ˜vÔ&Ø�A�Bˆx�~‰~ÓÐØr�   c                óÂ   — | j                   j                  d«      xs dj                  «       }|j                  «       j	                  d«      r|dd  j                  «       S y)Nr£  ro   zbearer r  r¤  )r  rB  s     rŽ   rš  rš  8  sN   € Ø�O‰O×Ñ Ó0Ò6°B×=Ñ=Ó?€DØ‡z�zƒ|×Ñ˜yÔ)Ø�A�Bˆx�~‰~ÓÐØr�   c                óP  — t        | xs d«      j                  «       }t        |«      }|st        d«      ‚	 t	        |t        «       «      S # t        $ rQ}	 t        |«      }n# t        $ r |‚w xY w|�||d   k7  rt        d«      ‚t        d|d   › d|› �«       |cY d }~S d }~ww xY w)Nro   u<   ÐžÑ‚ÐºÑ€Ð¾Ð¹Ñ‚Ðµ Ð¼Ð¸Ð½Ð¸-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð¸Ð· Ð±Ð¾Ñ‚Ð°r—   uN   ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ� Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ TelegramuL   panel auth: Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ Ð½Ðµ Ñ�Ð¾ÑˆÐ»Ð°Ñ�ÑŒ, Ð±ÐµÑ€Ñ‘Ð¼ ID Ð¸Ð· initData r%  )r¹   rŸ   rY  rM  rH   r�  rE   rÎ   )Ú	init_dataÚfallback_idr1  ÚfallbackÚ
hmac_errorrÛ  s         rŽ   Ú_resolve_user_from_init_datar¬  ?  s½   € Ü
ˆiŠo˜2Ó
×
$Ñ
$Ó
&€CÜ˜Ó%€HÙÜÐWÓXÐXð
Ü% c¬;«=Ó9Ð9øÜò ð	Ü.¨sÓ3‰DøÜò 	ØÐð	úàÐ H°°T±
Ò$:ÜÐmÓnÐnÜÐ\Ð]aÐbfÑ]gÐ\hÐhjÐkuÐjvÐwÔxØ�ûðús/   ·A Á	B%ÁA!Á B Á!A-Á--B ÂB%Â B%c           
     ó®   — t        | d   «      }dd||dk(  t        |t        «       «      || j                  d«      xs d| j                  d«      xs ddœdœS )	Nr—   Tr[  Ú
first_namero   r`  ©r—   r®  r`  )rë  ÚallowedÚroler[  ÚtokenrÛ  )r»   rF   r�  rÌ   )rÛ  r±  r^  s      rŽ   Ú_auth_payloadr³  Q  s`   € Ü
ˆd�4‰j‹/€CàØØØ˜‘Ü! #¤Ó'8Ó9àØŸ(™( <Ó0Ò6°BØŸ™ Ó,Ò2°ñ
ñð r�   c                óÚ  — | j                   j                  }t        |«      s|j                  d«      sy t	        |«      rZ| j
                  dk(  ry t        | «      st        dddit        | «      ¬«      S ddd	œ| j                  _
        d
| j                  _        y d }t        | «      }|r	 t        |t        «       «      }d|i}n	 t#        t%        | «      «      }t)        |d   «      }|€1t'        d|d   › �«       t        ddd|d   › d�it        | «      ¬«      S || j                  _
        || j                  _        |d
k7  r/t+        | j
                  |«      st        dddit        | «      ¬«      S y # t        $ r,}t        ddt!        |«      it        | «      ¬«      cY d }~S d }~ww xY w# t        $ r:}t'        d|› �«       t        ddt!        |«      it        | «      ¬«      cY d }~S d }~ww xY w)Nr{   ÚOPTIONSé‘  r{  õ   Ð�ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°r  r   zpublic-panel)r—   r®  r[  r—   zpanel auth failed: zpanel access denied tg_id=r  õ*   Ð�ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð° Ðº Ð¿Ð°Ð½ÐµÐ»Ð¸ (ID rË   õ!   Ð�ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð°Ð²)rÞ  r  r–  r  r˜  rü   r¡  r   r  r
  Ú
panel_userÚ
panel_rolerš  rG   r�  rM  r¹   r¬  r¥  rÎ   r`  r‹  )r  r  rÛ  Úbearerr^  rë   r±  s          rŽ   Ú_auth_deniedr½  a  sö  € Ø�;‰;×Ñ€DÜ�dÔ 4§?¡?°6Ô#:ØÜ˜TÔ"Ø�>‰>˜YÒ&ØÜ˜gÔ&ÜØØ!Ð#:Ð;Ü% gÓ.ôð ð
 +,¸>Ñ#Jˆ�‰Ô Ø#*ˆ�‰Ô ØØ€DÜ˜WÓ%€FÙð	Ü# F¬OÓ,=Ó>ˆCØ˜#�;‰Dð	Ü/Ô0BÀ7Ó0KÓLˆDô �t˜D‘zÓ"€DØ€|ÜÐ*¨4°©:¨,Ð7Ô8ÜØØÐ!KÈDÐQUÉJÈ<ÐWXÐYÐZÜ! 'Ó*ô
ð 	
ð
  $€G‡M�MÔØ#€G‡M�MÔØˆw‚œ{¨7¯>©>¸4Ô@ÜØØÐBÐCÜ! 'Ó*ô
ð 	
ð
 øôA ò 	ÜØØ!¤3 s£8Ð,Ü% gÓ.ôõ ûð	ûô ò 	ÜÐ'¨ uÐ-Ô.ÜØØ!¤3 s£8Ð,Ü% gÓ.ôõ ûð	ús<   Â)E/ ÃF' Å/	F$Å8!FÆF$ÆF$Æ'	G*Æ0/G%ÇG*Ç%G*Ústartupc               ƒ  ó.  K  — t        j                  «       ƒ d {  –—†  t        xs dj                  «       } | st	        d«       y t        | t        t        j                  ¬«      ¬«      a	t        j                  t        «       «       t	        d«       y 7 Œx­w)Nro   u)   panel bot skipped: Ð½ÐµÑ‚ PANEL_BOT_TOKEN)Ú
parse_mode)r²  r™  zpanel bot polling started)Úuserbot_runtimeÚbootrA   rŸ   rÎ   r	   r   r   ÚHTMLr}   r4  rB  r€  )r²  s    rŽ   Ú_userbot_startuprÄ  �  sq   è ø€ ô ×
Ñ
Ó
 × Ð ÜÒ" ×)Ñ)Ó+€EÙÜÐ9Ô:ØÜ˜%Ô)=ÌÏÉÔ)XÔY€IÜ×ÑœÓ(Ô)Ü	Ð
%Õ&ð !ús   ‚BšB›A9BÚshutdownc               ƒ  ó¦   K  — t        j                  «       ƒ d {  –—†  t        �'t        j                  j	                  «       ƒ d {  –—†  y y 7 Œ27 Œ­wr¬   )rÁ  rÅ  r}   r0  ÚcloserŒ   r�   rŽ   Ú_userbot_shutdownrÈ  ª  sD   è ø€ ä
×
"Ñ
"Ó
$×$Ð$ÜÐÜ×Ñ×%Ñ%Ó'×'Ñ'ð ð %øà'ús!   ‚AšA›+AÁAÁAÁAÚhttpc              ƒ  óŠ  K  — t        | «      }| j                  j                  }| j                  dk(  rt	        di t        | «      ¥ddi¥¬«      S t        | «      }|�|S t        |«      r] || «      ƒ d {  –—† }|j                  j                  t        | «      «       t        | j                  › d|› d|j                  › �«       |S t        | j                  dd «      d	v }|s§|t        v rt        | «      S t!        |«      r?t#        |t$        t&        t(        d
t&        › dt+        t(        «      › d�¬«      rt        | «      S t-        |«      rlt#        |t.        t0        t2        d
t0        › dt+        t2        «      › d�¬«      r8t        | «      S |t        v r%t        | j                  dd «      dk7  rt        | «      S  || «      ƒ d {  –—† }|j                  j                  t        | «      «       | j                  j                  }|dk7  r8|j5                  d«      s't        | j                  › d|› d|j                  › �«       |S 7 �ŒÊ7 Œ€­w)Nrµ  éÌ   zAccess-Control-Max-AgeÚ86400)rz  r  rH  ú -> r»  >   r[  r\  u   Ð±Ð¾Ð»ÑŒÑˆÐµ u&    Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð¾Ð² Ñ�ÐºÑ€Ð¸Ð½Ð¾Ð² Ð·Ð° u    Ñ�)r8  r9  r:  r'  u    Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð¾Ð² Ð·Ð° r[  r  r‹   )r  rÞ  r  rü   r   r  r½  r–  r  r!  rÎ   rz  r£   r
  r‰   r  r  r?  rˆ   ÚSCREEN_FLOOD_MAX_REQUESTSÚSCREEN_FLOOD_WINDOW_SECr»   r  r‡   ÚAPI_FLOOD_MAX_REQUESTSÚAPI_FLOOD_WINDOW_SECr  )r  Ú	call_nextrX  r  ÚdeniedÚresponseÚautheds          rŽ   Úlog_requestsrÖ  ±  s5  è ø€ ä	�GÓ	€BØ�;‰;×Ñ€DØ‡~�~˜Ò"ÜØðÜ Ó(ðà(¨'ñô
ð 	
ô ˜'Ó"€FØÐØˆÜ�dÔÙ" 7Ó+×+ˆØ×Ñ×Ñ¤¨gÓ 6Ô7Ü�—‘Ð   $  t¨H×,@Ñ,@Ð+AÐBÔCØˆÜ�W—]‘] L°$Ó7Ð;NÐN€FÙØ”ÑÜ# GÓ,Ð,Ü˜$ÔÔ$6ØÜ!Ü2Ü.Ø"Ô#<Ð"=Ð=cÔdgÔhó  eAð  dBð  BEð  Fõ%
ô $ GÓ,Ð,Ü˜4Ô Ô%7ØÜÜ/Ü+Ø"Ô#9Ð":Ð:QÔRUÔVjÓRkÐQlÐloÐpõ&
ô $ GÓ,Ð,Ø	Œ{Ñ	œw w§}¡}°lÀDÓIÈWÒTÜ Ó(Ð(Ù˜wÓ'×'€HØ×Ñ×ÑœM¨'Ó2Ô3Ø�;‰;×Ñ€DØˆ{Ò 4§=¡=°Ô#;Ü�—‘Ð   $  t¨H×,@Ñ,@Ð+AÐBÔCØ€Oð? ,ùð4 (ús&   ‚A2IÁ4H>Á5EIÇ IÇA>IÉIz/healthc               ƒ  ó   K  — ddiS ­w)Nrû   rë  rŒ   rŒ   r�   rŽ   rD  rD  ã  s   è ø€ à�dÐÐùs   ‚z/authc              ƒ  óÊ  K  — 	 | j                  «       ƒ d {  –—† }t        |t        «      si }t	        |j                  d«      xs" |j                  d«      xs t        | «      xs d«      j                  «       }|j                  d«      dvr|j                  d«      n|j                  d«      }	 t        ||«      }t        |d   «      }|€&t        d
|d   › �«       ddd dd|d   id|d   › d�dœS |j                  d«      r2|j                  d«      s!t	        |j                  d«      xs d«      |d<   |j                  d«      r2|j                  d«      s!t	        |j                  d«      xs d«      |d<   t        d|d   › d|› �«       t        ||«      S 7 �Œ�# t        $ r i }Y �Œ�w xY w# t        $ r*}t        d|› �«       t        dt	        |«      ¬	«      |‚d }~ww xY w­w)Nr¨  ÚinitDataro   r]  rR  r—   zpanel /auth failed: r¶  ry  zpanel /auth deny tg_id=Fr¸  rË   )rë  r°  r±  r[  rÛ  r{  r®  r`  zpanel /auth allow tg_id=z role=)Újsonr·   r´   Údictr¹   rÌ   r¥  rŸ   r¬  rM  rÎ   r   r`  r³  )r  r»  r¨  r©  rÛ  rë   r±  s          rŽ   Úapi_authrÜ  è  sß  è ø€ ðØ—\‘\“^×#ˆô �dœDÔ!ØˆÜ�D—H‘H˜[Ó)Òf¨T¯X©X°jÓ-AÒfÔEWÐX_ÓE`ÒfÐdfÓg×mÑmÓo€IØ)-¯©°)Ó)<ÀJÑ)N�$—(‘(˜9Ô%ÐTX×T\ÑT\Ð]aÓTb€KðGÜ+¨I°{ÓCˆô
 �t˜D‘zÓ"€DØ€|ÜÐ'¨¨T©
 |Ð4Ô5àØØØØ˜4 ™:Ð&ØBÀ4ÈÁ:À,ÈaÐPñ
ð 	
ð ‡x�x�Ô d§h¡h¨|Ô&<Ü  §¡¨,Ó!7Ò!=¸2Ó>ˆˆ\ÑØ‡x�x�
Ô D§H¡H¨ZÔ$8Ü˜tŸx™x¨
Ó3Ò9°rÓ:ˆˆZÑÜ	Ð$ T¨$¡Z L°°t°fÐ
=Ô>Ü˜˜tÓ$Ð$ð= $úÜò Ø‹ðûô ò GÜÐ$ S EÐ*Ô+Ü¨´C¸³HÔ=À3ÐFûðGüs]   ‚G#„F —F˜F œBG#Â0F- Â<CG#ÆF ÆF*Æ&G#Æ)F*Æ*G#Æ-	G Æ6%GÇG Ç G#z/mec              ƒ  óò   K  — t        | j                  dd «      xs i }t        | j                  dd«      }|j                  d«      |j                  d«      xs d|j                  d«      xs ddœ||d	k(  d
œS ­w)Nrº  r»  r\  r—   r®  ro   r`  r¯  r[  )rÛ  r±  r[  )r£   r
  rÌ   )r  rÛ  r±  s      rŽ   Úapi_merÞ    sy   è ø€ ä�7—=‘= ,°Ó5Ò;¸€DÜ�7—=‘= ,°Ó9€Dð —(‘(˜4“.ØŸ(™( <Ó0Ò6°BØŸ™ Ó,Ò2°ñ
ð
 Ø˜‘ñð ùs   ‚A5A7c                óR   — t        | j                  dd «      dk7  rt        dd¬«      ‚y )Nr»  r[  r  r¹  ry  )r£   r
  r   r  s    rŽ   Ú_require_adminrà    s*   € Üˆw�}‰}˜l¨DÓ1°WÒ<Ü¨Ð4WÔXÐXð =r�   c                ó   — t        t        «      }t        xs
 t        xs dj	                  «       }|�|st        d«       y t        j                  || dddœd¬«      j                  d«      }t        j                  j                  d	|› d
�|ddid¬«      }	 t        j                  j                  |d¬«      5 }|j                  «        d d d «       y # 1 sw Y   y xY w# t        $ r}t        d|› �«       Y d }~y d }~ww xY w)Nro   uE   admin notify skipped: Ð½ÐµÑ‚ ADMIN_TG_ID Ð¸Ð»Ð¸ Ñ‚Ð¾ÐºÐµÐ½Ð° Ð±Ð¾Ñ‚Ð°rÃ  T)Úchat_idr˜   rÀ  Údisable_web_page_previewF©Úensure_asciir²   zhttps://api.telegram.org/botz/sendMessagezContent-Typezapplication/jsonr…  )r½   r  rü   é   r  zadmin notify failed: )rY  r=   r>   r@   rŸ   rÎ   rÚ  ÚdumpsÚencodeÚurllibr  r   ÚurlopenÚreadr·   )r˜   r_  r²  r  ÚreqÚresprë   s          rŽ   rÁ  rÁ     sÿ   € ÜœÓ%€HÜÒ0Ô*Ò0¨b×7Ñ7Ó9€EØÐ™uÜÐUÔVØÜ�j‰jàØØ Ø(,ñ		
ð ô÷ �fˆWƒoð ô �.‰.×
 Ñ
 Ø
& u g¨\Ð:ØØÐ!3Ð4Øð	 !ó €Cð-Ü�^‰^×#Ñ# C°Ð#Ó4ð 	¸Ø�I‰IŒK÷	÷ 	ñ 	ûäò -ÜÐ% c UÐ+×,Ñ,ûð-ús6   Â!C Â6CÃC ÃCÃC ÃC Ã	C=Ã%C8Ã8C=z/workersc              ƒ  ó8   K  — t        | «       dt        «       iS ­w)NrG  )rà  r+   r  s    rŽ   Úapi_list_workersrï  <  s   è ø€ ä�7ÔØÔ)Ó+Ð,Ð,ùs   ‚c              ƒ  óÀ  K  — t        | «       | j                  «       ƒ d {  –—† }t        t        |t        «      r|j                  d«      nd «      }|€,t        t        |t        «      r|j                  d«      nd «      }|�|dk  rt        dd¬«      ‚t        t        «      }|�||k(  rt        dd¬«      ‚t        |«      st        dd¬«      ‚t        «       d	d
œS 7 Œº­w)NÚtg_idr—   r   r’  u   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Telegram IDry  u,   Ð�Ð´Ð¼Ð¸Ð½ Ð¸ Ñ‚Ð°Ðº Ð¸Ð¼ÐµÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿u$   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Telegram IDT©rG  rë  )
rà  rÚ  rY  r´   rÛ  rÌ   r   r=   r   r+   )r  r»  rñ  r_  s       rŽ   Úapi_add_workerró  B  sÃ   è ø€ ä�7ÔØ—‘“×€DÜ¬:°d¼DÔ+A�d—h‘h˜wÔ'ÀtÓL€EØ€}Ü¬J°t¼TÔ,B˜$Ÿ(™( 4œ.ÈÓMˆØ€}˜ š
Ü¨Ð4PÔQÐQÜœÓ%€HØÐ ¨Ò 1Ü¨Ð4bÔcÐcÜ˜EÔ"Ü¨Ð4ZÔ[Ð[Ü)Ó+°4Ñ8Ð8ð  ús   ‚C¡C¢B;Cz/workers/{tg_id}c              ƒ  ój   K  — t        |«       t        | «      st        dd¬«      ‚t        «       ddœS ­w)Nrü  u"   Ð Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ðº Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ry  Trò  )rà  r2   r   r+   )rñ  r  s     rŽ   Úapi_delete_workerrõ  S  s2   è ø€ ä�7ÔÜ˜uÔ%Ü¨Ð4XÔYÐYÜ)Ó+°4Ñ8Ð8ùs   ‚13z/banned-ipsc              ƒ  ó4   K  — t        | «       t        «       S ­wr¬   )rà  r5  r  s    rŽ   Úapi_list_banned_ipsr÷  [  s   è ø€ ä�7ÔÜÓ Ð ùó   ‚c              ƒ  óü   K  — t        | «       	 | j                  «       ƒ d {  –—† }t        t	        |t
        «      r|j                  d«      nd «      }t        |d«       t        «       S 7 ŒF# t        $ r i }Y ŒQw xY w­w)NrX  T)	rà  rÚ  r·   r2  r´   rÛ  rÌ   r&  r5  )r  r»  rX  s      rŽ   Úapi_add_banned_iprú  a  sk   è ø€ ä�7ÔðØ—\‘\“^×#ˆô 
¬°D¼$Ô)?�t—x‘x ”~ÀTÓ	J€BÜ�2�tÔÜÓ Ð ð $ùÜò ØŠðüs8   ‚A<�A+ ¢A)£A+ §AA<Á)A+ Á+A9Á6A<Á8A9Á9A<c              ƒ  ó`  K  — t        | «       t        | j                  j                  d«      xs d«      j	                  «       }t        |«      }g }|t        |«      |fD ]  }|sŒ||vsŒ|j                  |«       Œ d}|D ]  }t        |d«      sŒd}Œ |st        dd¬«      ‚t        «       S ­w)NrX  ro   FTrü  u   IP Ð½Ðµ Ð² Ð±Ð°Ð½Ð»Ð¸Ñ�Ñ‚Ðµry  )rà  r¹   Úquery_paramsrÌ   rŸ   r2  r  r¢   r&  r   r5  )r  r1  r¼  Ú
candidatesÚitemÚremovedrX  s          rŽ   Úapi_delete_banned_ipr   m  sº   è ø€ ä�7ÔÜ
ˆg×"Ñ"×&Ñ& tÓ,Ò2°Ó
3×
9Ñ
9Ó
;€CÜ˜3Ó€FØ€JØ”m CÓ(¨&Ð1ò $ˆÚ�D 
Ò*Ø×Ñ˜dÕ#ð$ð €GØò ˆÜ˜"˜eÕ$Ø‰Gðñ Ü¨Ð4QÔRÐRÜÓ Ð ùs   ‚A"B.Á%B.Á*&B.ÂB.z/proxiesc              ƒ  ó4   K  — t        | «       t        «       S ­wr¬   )rà  rí  r  s    rŽ   Úapi_list_proxiesr    s   è ø€ ä�7ÔÜÓÐùrø  c              ƒ  ó4  K  — t        | «       	 | j                  «       ƒ d {  –—† }t        |t        «      si }|j                  d«      }|€|j                  d«      }|€|j                  d«      }t        |t        «      r|j                  «       }n$t        |t        t        f«      rt        |«      }ng }g }g }|D ]P  }t        |xs d«      j                  «       }|sŒ#t        |«      r|j                  |«       Œ@|j                  |«       ŒR |s|st        dd¬«      ‚|st        dd¬«      ‚t        |«      }t        «       }	|	j!                  |j                  d	d
«      |j                  dd
«      t#        |«      dœ«       |	S 7 �Œa# t        $ r i }Y �Œmw xY w­w)NÚurlsÚlistr˜   ro   r’  uA   Ð”Ð¾Ð±Ð°Ð²ÑŒÑ‚Ðµ Ñ…Ð¾Ñ‚Ñ� Ð±Ñ‹ Ð¾Ð´Ð½Ñƒ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ry  u8   Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸: http://login:password@ip:portÚaddedr   Úskipped)r  r  Úinvalid)rà  rÚ  r·   r´   rÛ  rÌ   r¹   Ú
splitlinesr  r‡  rŸ   rº  r¢   r   r   rí  r!  r¼   )
r  r»  r1  rý  Úvalidr  rþ  rÞ  r‹  r  s
             rŽ   Úapi_add_proxiesr  …  sy  è ø€ ä�7ÔðØ—\‘\“^×#ˆô �dœDÔ!ØˆØ
�(‰(�6Ó
€CØ
€{Ø�h‰h�vÓˆØ
€{Ø�h‰h�vÓˆÜ�#”sÔØ—^‘^Ó%‰
Ü	�Cœ$¤˜Ô	'Ü˜#“Y‰
àˆ
Ø€EØ€GØò  ˆÜ�$’*˜"‹o×#Ñ#Ó%ˆÙØÜ˜CÔ Ø�L‰L˜Õà�N‰N˜3Õð ñ ™Ü¨Ð4wÔxÐxÙÜ¨Ð4nÔoÐoÜ˜Ó€FÜÓ €GØ‡N�NØ—‘˜G QÓ'Ø—:‘:˜i¨Ó+Ü�w“<ñô ð
 €NðK $úÜò Ø‹ðüs8   ‚F�F ¢F£F §EFÆF ÆFÆFÆFÆFc              ƒ  óš   K  — t        | «       | j                  j                  d«      }t        |«      st	        dd¬«      ‚t        «       S ­w©Nr—   rü  u    ÐŸÑ€Ð¾ÐºÑ�Ð¸ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°ry  )rà  rü  rÌ   r   r   rí  )r  r1  s     rŽ   Úapi_delete_proxyr  ±  sC   è ø€ ä�7ÔØ
×
Ñ
×
"Ñ
" 4Ó
(€CÜ˜ÔÜ¨Ð4VÔWÐWÜÓÐùs   ‚A	Az/proxies/restorec              ƒ  ó<  K  — t        | «       	 | j                  «       ƒ d {  –—† }t        |t        «      r|j                  d«      nd }|€| j                  j                  d«      }t        |«      st        dd¬«      ‚t        «       S 7 Œf# t        $ r i }Y Œqw xY w­wr  )
rà  rÚ  r·   r´   rÛ  rÌ   rü  r4   r   rí  )r  r»  Úproxy_ids      rŽ   Úapi_restore_proxyr  º  sŽ   è ø€ ä�7ÔðØ—\‘\“^×#ˆô ",¨D´$Ô!7ˆt�x‰x˜Œ~¸T€HØÐØ×'Ñ'×+Ñ+¨DÓ1ˆÜ˜Ô"Ü¨Ð4VÔWÐWÜÓÐð $ùÜò ØŠðüs8   ‚B�B ¢B	£B §A"BÂ	B ÂBÂBÂBÂBz/logsc              ƒ  ó^  K  — |xs dj                  «       }t        5  t        D �cg c]  }|d   | kD  sŒ|‘Œ }}|r|d   d   n| }|}|r$|D �cg c]  }|j                  d«      |k(  sŒ|‘Œ }}d d d «       D �cg c]  }t	        |«      ‘Œ c}dœS c c}w c c}w # 1 sw Y   Œ/xY wc c}w ­w)Nro   r—   éÿÿÿÿr™   )ÚlinesÚnext)rŸ   rž   r…   rÌ   Ú_client_log_line)Úafterr™   r–   rþ  ÚscannedÚnxtÚitemss          rŽ   Úapi_logsr  É  s¾   è ø€ à’˜2×$Ñ$Ó&€IÜ	ñ RÜ$.ÖE˜D°$°t±*¸uÓ2D’4ÐEˆÐEÙ#*ˆg�b‰k˜$Ò°ˆØˆÙØ&-ÖQ˜d°·±¸(Ó1CÀyÓ1P’TÐQˆEÐQ÷Rð :?Ö?°Ô& tÕ,Ò?ÈÑMÐMùò Fùò R÷Rð Rüò @ùsO   ‚B-�	B¦B´B¸BÁBÁ(BÁ,BÁ.B-Á:B(ÂB-Â
BÂB%Â!B-c                ó~   — | j                  d«      }| j                  d«      xs d}|dvrt        |«      }|s|S ||dœS )Nrš   r˜   ro   >   r”   r“   )r˜   rš   )rÌ   r�  )rþ  rš   r˜   s      rŽ   r  r  Õ  sH   € Ø	�‰�$‹€BØ�8‰8�FÓÒ!˜r€DØ	Ð*Ñ*Ü# DÓ)ˆÙØˆØ Ñ#Ð#r�   c                ó‚   — t        | t        «      rt        dt        | «      ¬«      S t        dt        | «      xs d¬«      S )Nr’  ry  u   ÐžÑˆÐ¸Ð±ÐºÐ° userbot)r´   rM  r   r¹   r"  s    rŽ   Ú_userbot_http_errorr  ß  s4   € Ü�#”zÔ"Ü¨´S¸³XÔ>Ð>Ü S´°S³Ò1SÐ=SÔTÐTr�   z/userbotc               ƒ  ó2   K  — t        j                  «       S ­wr¬   )rÁ  ÚsnapshotrŒ   r�   rŽ   Úapi_userbot_statusr!  å  s   è ø€ ä×#Ñ#Ó%Ð%ùs   ‚z/userbot/loginc              ƒ  óü   K  — | j                  «       ƒ d {  –—† }	 t        j                  t        |j	                  d«      xs d«      «      ƒ d {  –—† S 7 Œ>7 Œ# t
        t        f$ r}t        |«      |‚d }~ww xY w­w)NÚphonero   )rÚ  rÁ  Úrequest_coder¹   rÌ   rM  r  r  ©r  r»  rë   s      rŽ   Úapi_userbot_loginr&  ê  sj   è ø€ à—‘“×€Dð0Ü$×1Ñ1´#°d·h±h¸wÓ6GÒ6MÈ2Ó2NÓO×OÐOð  øàOùÜœÐ%ò 0Ü! #Ó&¨CÐ/ûð0üóD   ‚A<–A—A<œ4A ÁAÁA ÁA<ÁA ÁA9Á(A4Á4A9Á9A<z/userbot/codec              ƒ  óü   K  — | j                  «       ƒ d {  –—† }	 t        j                  t        |j	                  d«      xs d«      «      ƒ d {  –—† S 7 Œ>7 Œ# t
        t        f$ r}t        |«      |‚d }~ww xY w­w)Nr  ro   )rÚ  rÁ  r$  r¹   rÌ   rM  r  r  r%  s      rŽ   Úapi_userbot_coder)  ó  sj   è ø€ à—‘“×€Dð0Ü$×0Ñ0´°T·X±X¸fÓ5EÒ5KÈÓ1LÓM×MÐMð  øàMùÜœÐ%ò 0Ü! #Ó&¨CÐ/ûð0ür'  z/userbot/passwordc              ƒ  óü   K  — | j                  «       ƒ d {  –—† }	 t        j                  t        |j	                  d«      xs d«      «      ƒ d {  –—† S 7 Œ>7 Œ# t
        t        f$ r}t        |«      |‚d }~ww xY w­w)Nrú   ro   )rÚ  rÁ  Úsubmit_passwordr¹   rÌ   rM  r  r  r%  s      rŽ   Úapi_userbot_passwordr,  ü  sk   è ø€ à—‘“×€Dð0Ü$×4Ñ4´S¸¿¹À*Ó9MÒ9SÐQSÓ5TÓU×UÐUð  øàUùÜœÐ%ò 0Ü! #Ó&¨CÐ/ûð0ür'  z/userbot/cancelc               ƒ  óF   K  — t        j                  «       ƒ d {  –—† S 7 Œ­wr¬   )rÁ  rP   rŒ   r�   rŽ   Úapi_userbot_cancelr.    s   è ø€ ä ×-Ñ-Ó/×/Ð/Ð/ús   ‚!š›!z/userbot/logoutc               ƒ  ó‚   K  — 	 t        j                  «       ƒ d {  –—† S 7 Œ# t        $ r} t        | «      | ‚d } ~ ww xY w­wr¬   )rÁ  Úlogoutr  r  r"  s    rŽ   Úapi_userbot_logoutr1  
  s<   è ø€ ð0Ü$×+Ñ+Ó-×-Ð-Ð-ùÜò 0Ü! #Ó&¨CÐ/ûð0üs(   ‚?„" › œ" Ÿ? " ¢	<«7·<¼?c                 ó€   — t        j                  «       D ]  } | €Œ	 t        | «      c S  y # t        t        f$ r Y Œ'w xY wr¬   )r?   Úvaluesr»   ro  rM  rX  s    rŽ   Ú_default_alert_chat_idr4    sM   € Ü ×'Ñ'Ó)ò ˆØÑðÜ˜5“zÒ!ðð øô œzÐ*ò Ùðús   œ
+«=¼=c                 óV   — t        «       } | j                  d«      €t        «       | d<   | S )NÚalert_chat_id)r%   rÌ   r4  )r½   s    rŽ   Ú_watch_payloadr7    s+   € ÜÓ€DØ‡x�x�Ó Ð(Ü 6Ó 8ˆˆ_ÑØ€Kr�   z/userbot/watchc               ƒ  ó   K  — t        «       S ­wr¬   )r7  rŒ   r�   rŽ   Úapi_userbot_watchr9  #  s   è ø€ äÓÐùs   ‚c              ƒ  ó¢   K  — | j                  «       ƒ d {  –—† }t        |t        «      st        dd¬«      ‚t	        |«       t        «       S 7 Œ6­w)Nr’  u+   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ry  )rÚ  r´   rÛ  r   r7   r7  )r  r»  s     rŽ   Úapi_userbot_watch_saver;  (  sB   è ø€ à—‘“×€DÜ�dœDÔ!Ü¨Ð4aÔbÐbÜ˜ÔÜÓÐð	  ús   ‚A–A—7Az/card-flagsc               ƒ  ó"   K  — dt        «       iS ­w)NrR  )r#   rŒ   r�   rŽ   Úapi_card_flagsr=  1  s   è ø€ àÔ'Ó)Ð*Ð*ùs   ‚c              ƒ  óD  K  — t        | «       | j                  «       ƒ d {  –—† }t        |t        «      r|j	                  d«      nd }t        |t
        «      st        dd¬«      ‚	 t        |«      }d|iS 7 ŒT# t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w­w)NrR  r’  u2   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð¿Ð¸Ñ�Ð¾Ðº Ñ„Ð»Ð°Ð³Ð¾Ð²ry  )
rà  rÚ  r´   rÛ  rÌ   r  r   r6   rM  r¹   )r  r»  r  Úsavedrë   s        rŽ   Úapi_card_flags_saver@  6  s•   è ø€ ä�7ÔØ—‘“×€DÜ!+¨D´$Ô!7ˆD�H‰H�WÔ¸T€EÜ�eœTÔ"Ü¨Ð4hÔiÐiðGÜ# EÓ*ˆð �UÐÐð  ùô ò GÜ¨´C¸³HÔ=À3ÐFûðGüs4   ‚B ¡A6¢AB Á'A8 Á2B Á8	BÂBÂBÂB z/userbot/dialogsc               ƒ  óŠ   K  — 	 t        j                  «       ƒ d {  –—† } d| iS 7 Œ# t        $ r}t        |«      |‚d }~ww xY w­w)NÚdialogs)rÁ  Úlist_dialogsr  r  )rB  rë   s     rŽ   Úapi_userbot_dialogsrD  D  sJ   è ø€ ð0Ü'×4Ñ4Ó6×6ˆð �wÐÐð 7ùÜò 0Ü! #Ó&¨CÐ/ûð0üs.   ‚A„& ›$œ&  A¤& ¦	A ¯;»A Á Az/devicesrÉ  c               ƒ  óV  K  — 	 t        «       } t        «       D �ci c]  }|j                  d«      |“Œ }}| D �cg c]0  }t        ||j                  |j                  d«      «      xs i «      ‘Œ2 c}t        | «      dœS c c}w # t        $ r}t	        dd|› �¬«      |‚d }~ww xY wc c}w ­w)Nr™   éô  u   ÐžÑˆÐ¸Ð±ÐºÐ° Ð‘Ð”: ry  )rE  Úservers)r)   rf   rÌ   r·   r   r.  r�  )r‰  rþ  Úhostsrë   r@  s        rŽ   Úapi_list_devicesrI  M  s»   è ø€ ðZÜ‹~ˆÜ6@³lÖC¨d�—‘˜(Ó# TÑ)ÐCˆÐCð ^bÖbÐVYÔ(¨¨e¯i©i¸¿¹ÀÓ8IÓ.JÒ.PÈbÕQÒbô  pAð  BFó  pGñ  Hð  Hùò DøÜò ZÜ¨Ð6IÈ#ÈÐ4OÔPÐVYÐYûðZüâbùsB   ‚B)„B šA=³B µB)¹5B$Á.B)Á=B Â	B!ÂBÂB!Â!B)c              ƒ  ó   K  — | j                  «       ƒ d {  –—† }t        |j                  d«      xs$ |j                  d«      xs |j                  d«      «      }t        |j                  d«      xs |j                  d«      xs d«      j	                  «       }d }d }|�rwt        | «       t        |«      }|st        dd|› d	�¬
«      ‚t        |«      xs i }t        |j                  d«      «      }d}t        |j                  d«      xs d«      j	                  «       xsG t        |j                  d«      xs |j                  d«      xs d«      j	                  «       xs t        }t        |j                  d«      dvr|j                  d«      n |j                  d|j                  d«      «      ddt        ¬«      }	|j                  d«      }
|
€|j                  d«      }
|
dv r|j                  d«      xs d}
|
st        dd¬
«      ‚t        |
«      }
nût        |j                  d«      «      }t        |j                  d«      d¬«      }|j                  d«      }
|
€|j                  d«      }
|
�t        |
«      dk(  rt        dd¬
«      ‚t        |
«      }
t        |j                  d«      xs |j                  d«      xs d«      j	                  «       xs t        }t        |j                  d|j                  d«      «      ddt        ¬«      }	t        t        |«      «      }t!        ||s|rdnd¬ «      }|j                  d«      }|dv rt#        ||«      }nt        |d!¬"«      }d}d }|sOt        | «       t%        |«      }|r*t'        «       j                  d#d$«      d$k  rt        d%d&¬
«      ‚t)        |d¬'«      }t+        ||«      }|r#t        d%d(|› d)|j                  d«      › d*�¬
«      ‚|r$	 t-        j.                  t0        ||«      ƒ d {  –—†  	 t7        ||||¬+«       	 t=        |||
||	¬0«       |r(tA        tC        |«      «      tE        tG        «       «      d2œS |r	 tI        |«      }tM        |d|d3œ«       tO        |tP        ||d4   |d   |d   |d5   d6dd¬7«
       tA        tC        |«      «      dd|d8œS 7 �Œ¥7 Œ­# t2        $ r}t        dt5        |«      ¬
«      |‚d }~ww xY w# t8        j:                  $ r t        d%d,|› d-�¬
«      ‚t2        $ r}t        d.d/|› �¬
«      |‚d }~ww xY w# t2        $ r!}t?        |«       t        d.d1|› �¬
«      |‚d }~ww xY w# t        $ r t?        |«       tK        |«       ‚ w xY w­w)9Nr—   r™   rÄ   Úhost_idÚhost_devicero   rü  rý  rþ  ry  rX  Fr`  Úserver_loginrh  rY  rR  Úserver_portri  õ   ÐŸÐ¾Ñ€Ñ‚ Ñ�ÐµÑ€Ð²ÐµÑ€Ð°©r›  r˜  r™  rú   Ússh_passwordr’  u)   Ð£ Ñ�ÐµÑ€Ð²ÐµÑ€Ð° Ð½ÐµÑ‚ Ð¿Ð°Ñ€Ð¾Ð»Ñ� SSHr¤  T)r™  u*   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ñ�ÐµÑ€Ð²ÐµÑ€Ð°r€  r•   r�  õ   ÐŸÐ¾Ñ€Ñ‚ Ð´ÐµÐ²Ð°Ð¹Ñ�Ð°r¸  ré  r   rx  rõ  r®  úIP õ%    ÑƒÐ¶Ðµ Ð·Ð°Ð½Ñ�Ñ‚ Ð´ÐµÐ²Ð°Ð¹Ñ�Ð¾Ð¼ 'ú')rX  rY  ra  õ   Ð”ÐµÐ²Ð°Ð¹Ñ� 'õ   ' ÑƒÐ¶Ðµ ÐµÑ�Ñ‚ÑŒrF  õ1   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´ÐµÐ²Ð°Ð¹Ñ�: ©r`  rY  õ,   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ SSH: )r™   rG  )r=  ra  rµ  r·  Ú	provisionr8  )r™   rë  Ústartedra  ))rÚ  r”  rÌ   r¹   rŸ   rà  r$   r   re   r—  rm  rœ  rn  r­  r	  r*   r-   r~  ró  r0   r¿  r!   r4  r>  r[   r·   r�  r   Úsqlite3ÚIntegrityErrorri   r   r.  r/  r�  r)   rö  rd   r:   rE  r\   )r  r»  r–   rK  Úhost_rowÚhost_sshrX  r¤  rM  rN  rú   Úhas_siblingsra  Úport_rawrY  rï  r²  Ú	duplicaterë   s                      rŽ   Úapi_create_devicerd  X  s_  è ø€ ð —‘“×€DÜ  §¡¨$£Ò!Y°4·8±8¸HÓ3EÒ!YÈÏÉÐRXÓIYÓZ€IÜ�$—(‘(˜9Ó%ÒF¨¯©°-Ó)@ÒFÀBÓG×MÑMÓO€GØ€HØ€HÚÜ�wÔÜ˜gÓ&ˆÙÜ¨CÐ:PÐQXÐPYÐYnÐ8oÔpÐpÜ˜GÓ$Ò*¨ˆÜ�x—|‘| DÓ)Ó*ˆØˆä�—‘˜ZÓ(Ò.¨BÓ/×5Ñ5Ó7ò  Ü�4—8‘8˜NÓ+ÒI¨t¯x©x¸
Ó/CÒIÀrÓJ×PÑPÓRò äð 	ô
 &Ø$,§L¡L°Ó$8À
Ñ$JˆH�L‰L˜Ô ÐPT×PXÑPXÐYfÐhl×hpÑhpÐq{Óh|ÓP}Ø+ØÜ$ô	
ˆð —8‘8˜JÓ'ˆØÐØ—x‘x Ó/ˆHØ�zÑ!Ø—|‘| JÓ/Ò5°2ˆHÙÜ¨CÐ8cÔdÐdÜ�x“=‰ä�t—x‘x “~Ó&ˆÜ! $§(¡(¨7Ó"3¸TÔBˆØ—8‘8˜JÓ'ˆØÐØ—x‘x Ó/ˆHØÐœs 8›}°Ò2Ü¨CÐ8dÔeÐeÜ�x“=ˆÜ˜DŸH™H ^Ó4ÒR¸¿¹ÀÓ8LÒRÐPRÓS×ZÑZÓ\ÒpÔ`pˆÜ%Ø�H‰H�] D§H¡H¨ZÓ$8Ó9Ø+ØÜ$ô	
ˆô Ô*¨2Ó.Ó/€LÜ˜B©x¹<©ÈaÔP€DØ�x‰x˜Ó€HØ�:ÑÜ" 2 tÓ,‰ä˜xÐ/HÔIˆà€HØ€EÙÜ�wÔÜ$ TÓ*ˆÙÜ‹~×!Ñ! +¨qÓ1°QÒ6Ü#°Ð<pÔqÐqä,¨TÀÔGˆEä& r¨4Ó0€IÙÜØØ˜˜ÐAÀ)Ç-Á-ÐPXÓBYÐAZÐZ[Ð\ô
ð 	
ñ
 ð	\Ü×#Ñ#¤I¨r°4Ó8×8Ð8ðxÜ�i B¨T¸Õ=ðsÜ�I˜r 8°lÈÕUñ
 Ü*¬?¸9Ó+EÓFÔSdÔeqÓesÓStÑuÐuáð	Ü$ YÓ/ˆEô �)¨Q¸Ñ=Ô>ÜØÜØØˆg‰ØˆjÑØˆd‰ØˆlÑØØØõô #¤?°9Ó#=Ó>ØØØñ	ð ðm  ùðZ 9ùÜò 	\Ü¨CÔ8LÈSÓ8QÔRÐX[Ð[ûð	\ûô
 ×!Ñ!ò cÜ¨°nÀYÀKÐO`Ð4aÔbÐbÜò xÜ¨Ð6gÐhkÐglÐ4mÔnÐtwÐwûðxûô
 ò sÜ�iÔ Ü¨Ð6bÐcfÐbgÐ4hÔiÐorÐrûðsûô ò 	Ü˜)Ô$Ü˜	Ô"Øð	üs›   ‚U>–R;—OU>Ï2S  ÐR>ÐS  ÐS( Ð&T- Ð6,U>Ñ#U Ñ.AU>Ò>S  Ó 	S%Ó	S Ó S%Ó%U>Ó(,T*ÔT%Ô%T*Ô*U>Ô-	UÔ6UÕUÕU>Õ!U;Õ;U>c                ór  — t        |«      }|rt        |j                  d«      xs | «      S t        ||«      }|rt        |j                  d«      xs | «      S t	        | «      s| S d| › �}|d d }t	        |«      s|S d}|dk  r%d|› d| › �}	|	d d }t	        |«      s|S |dz  }|dk  rŒ%t        d	d
| › d�¬«      ‚)Nr™   zpub-é@   r€  iè  ÚpubrÈ  r•   rx  u6   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð´Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð¸Ð¼Ñ� Ð´Ð»Ñ� 'rU  ry  )r"   r¹   rÌ   r!   r$   r   )
ÚwantedrX  rY  rk  Ú	by_publicrc  Úbaser}  r¨  Úsuffixs
             rŽ   Ú_pick_imported_device_idrl  Ù  sæ   € Ü(¨Ó3€IÙÜ�9—=‘= Ó*Ò4¨fÓ5Ð5Ü& r¨4Ó0€IÙÜ�9—=‘= Ó*Ò4¨fÓ5Ð5Ü�fÔØˆØ�&�ˆ?€DØ�S�b�	€IÜ�iÔ ØÐØ	€AØ
ˆdŠ(Ø�q�c˜˜6˜(Ð#ˆØ˜3˜B�Kˆ	Ü˜)Ô$ØÐØ	ˆQ‰ˆð ˆd‹(ô  CÐ2hÐioÐhpÐpqÐ0rÔ
sÐsr�   c               óþ  — | j                  d«      }|€| j                  d«      }| j                  d«      }t        |t        t        f«      rt	        j
                  |d¬«      }| j                  d«      }t        |t        t        f«      rt	        j
                  |d¬«      }| j                  d«      }|||t        | j                  d«      xs d	«      |€d	n
t        |«      t        | j                  d
«      xs d	«      j                  «       t        | j                  d«      «      t        | j                  d«      «      t        | j                  d«      «      |€d	n
t        |«      |€d n
t        |«      |dv rdnddd|dœS )NÚlk_passwordrú   rt   Frä  rg  rZ  rù   ro   rÄ   rr   re  rf  )Tr•   rž  r£  ÚTruer•   r   )rX  rY  ra  rù   rú   rÄ   rr   re  rf  rt   rg  rZ  r=  rj  rk  )	rÌ   r´   r  rÛ  rÚ  rç  r¹   rŸ   rP  )	r»  rX  rY  ra  rk  rn  rt   rR  rZ  s	            rŽ   Ú_import_snapshot_fieldsrp  ð  sD  € Ø—(‘(˜=Ó)€KØÐØ—h‘h˜zÓ*ˆØ�H‰H�WÓ€EÜ�%œ$¤˜Ô&Ü—
‘
˜5¨uÔ5ˆØ�H‰H�\Ó"€EÜ�%œ$¤˜Ô&Ü—
‘
˜5¨uÔ5ˆØ�h‰h�yÓ!€GàØØÜ�d—h‘h˜xÓ(Ò.¨BÓ/Ø%Ð-‘B´3°{Ó3CÜ�D—H‘H˜VÓ$Ò*¨Ó+×1Ñ1Ó3Ü˜dŸh™h yÓ1Ó2Ü˜TŸX™X hÓ/Ó0Ü˜dŸh™h yÓ1Ó2Ø�}‘¬#¨e«*Ø#˜m‘d´°U³ØÐ#AÑA‘1ÀqØØØñð r�   z/devices/import-publicc              ƒ  óð  K  — t        | «      st        dd¬«      ‚	 | j                  «       ƒ d {  –—† }t	        |t
        «      si }t        |j                  d«      xs7 |j                  d«      xs$ |j                  d«      xs |j                  d«      «      }t        |j                  d«      xs |j                  d«      xs |«      }t        |j                  d«      «      }t        |j                  d	«      d
¬«      }	 t        |j                  d«      xs d«      }|dk  rd}t        ||||«      }t        |«      }t        |«      D ]l  }	t!        |	j                  d«      xs d«      }
|
|k(  rŒ't#        |	«      |k7  rŒ6	 t        |	j                  d	«      «      }||k7  sŒWt        dd|› d|› d|
› d�¬«      ‚ t%        |||||¬«      }|d u }|r,	 t'        ||||d   |d   |d   |d   |d   |d   |d   |¬«       t-        ||«      s2|rt/        |«       t        dd ¬«      ‚t        |«      st        dd ¬«      ‚|j                  d!«      }|€|j                  d"«      }|€dn
t!        |«      }t!        |j                  d#«      xs |j                  d$«      xs d«      j1                  «       xs t2        }t        |j                  d%|j                  d&«      «      d'd(t4        ¬)«      }t7        |«      }|s|r	 t9        |||r|nd ||¬*«       t;        d,|› d-|› d.|› d/|› d0|› �
«       d1|||t=        t?        |«      «      d2œS 7 �Œ# t        $ r i }Y �Œw xY w# t        t        f$ r d}Y �ŒGw xY w# t        t        f$ r d }Y �Œãw xY w# t(        j*                  $ r t        dd|› d�¬«      ‚t        $ r}t        dd|› �¬«      |‚d }~ww xY w# t        $ r#}|rt/        |«       t        dd+|› �¬«      |‚d }~ww xY w­w)3Nr¶  r·  ry  rk  r—   r™   rÄ   rX  rY  rR  r¸  ra  r•   ro   rx  u	   Ð¡Ð»Ð¾Ñ‚ u    Ð½Ð° rT  rU  )rX  rY  ra  rk  rù   rú   rr   re  rf  rt   )
rX  rY  rù   rú   rÄ   rr   re  rf  rt   ra  rV  rW  rF  rX  u/   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ�Ð»Ð¾Ñ‚rQ  Úserver_passwordrM  rh  rN  ri  rO  FrP  rY  rZ  zimport-public: rÍ  z	 created=z ip=z slot=T)rë  r:  r—   rk  r™   ) r¡  r   rÚ  r·   r´   rÛ  r”  rÌ   r—  rœ  r»   ro  rM  rl  r$   r*   r¹   r    rp  r   r]  r^  r:   r   rŸ   rm  rn  re   ri   rÎ   r.  r/  )r  r»  rk  Ú	wanted_idrX  rY  ra  r–   Úexistingr@  Úother_idÚ
other_portr   r:  rë   rQ  rM  rN  rp  s                      rŽ   Úapi_import_public_devicerw    sA  è ø€ ä˜'Ô"Ü¨Ð4KÔLÐLðØ—\‘\“^×#ˆô �dœDÔ!Øˆä  §¡¨+Ó!6Ò!r¸$¿(¹(À4».Ò!rÈDÏHÉHÐU]ÓL^Ò!rÐbf×bjÑbjÐkqÓbrÓs€IÜ  §¡¨$£Ò!R°4·8±8¸HÓ3EÒ!RÈÓS€IÜ	�4—8‘8˜D“>Ó	"€BÜ˜4Ÿ8™8 FÓ+Ð3LÔM€DðÜ�4—8‘8˜FÓ#Ò( qÓ)ˆð ˆa‚xØˆä(¨°B¸¸iÓH€IÜ˜)Ó$€HÜ! "Ó%ò ˆÜ�s—w‘w˜xÓ(Ò.¨BÓ/ˆØ�yÒ ØÜ˜SÓ! TÒ)Øð	Ü˜SŸW™W V›_Ó-ˆJð ˜ÓÜØØ" 4 &¨¨r¨dÐ2WÐX`ÐWaÐabÐcôð ðô  ' t°¸ÀDÐT]Ô^€HØ˜$Ð€GÙð	|ÜØØØØ Ñ)Ø! *Ñ-Ø˜fÑ%Ø  Ñ+Ø Ñ)Ø  Ñ+Ø˜wÑ'Øõô" ˜ HÔ-ÙÜ˜)Ô$Ü¨CÐ8iÔjÐjÜ˜)Ô$Ü¨CÐ8iÔjÐjà—8‘8˜NÓ+€LØÐØ—x‘xÐ 1Ó2ˆØ%Ð-‘2´3°|Ó3D€LÜ˜Ÿ™ Ó0ÒN°D·H±H¸ZÓ4HÒNÈBÓO×VÑVÓXÒlÔ\l€LÜ!Ø�‰� §¡¨Ó 4Ó5Ø'ØÜ ô	€Kô �IÓ€DÙ‘tð	wÜØØÙ ,‘°$Ø%Ø õô 
ˆO˜I˜; d¨9¨+°Y¸w¸iÀtÈBÈ4ÈvÐVZÐU[Ð
\Ô]àØØØÜ"¤?°9Ó#=Ó>ñð ðu $úÜò Ø‹ðûô ”zÐ"ò Ø‹ðûô œ:Ð&ò 	Ø‹Jð	ûô2 ×%Ñ%ò 	gÜ¨C¸.ÈÈÐSdÐ8eÔfÐfÜò 	|Ü¨CÐ:kÐloÐkpÐ8qÔrÐx{Ð{ûð	|ûô< ò 	wÙÜ˜iÔ(Ü¨CÐ:fÐgjÐfkÐ8lÔmÐsvÐvûð	wüsÐ   ‚O6œM  ¯L=°M  ´CO6ÄM ÄA!O6ÆM*ÆO6Æ!.O6Ç+N Ç;C9O6Ë5O Ì	4O6Ì=M  Í MÍO6ÍMÍO6ÍM'Í#O6Í&M'Í'O6Í*M?Í;O6Í>M?Í?O6Î,OÎ.N?Î?OÏO6Ï	O3ÏO.Ï.O3Ï3O6z/devices/rebuildc              ƒ  óæ  K  — t        | «       | j                  «       ƒ d {  –—† }t        |j                  d«      xs$ |j                  d«      xs |j                  d«      «      }t	        |«       |t
        v rt        dd¬«      ‚t        |«      rt        |«      }nt        |d¬«      }|d	   }|d
   }|d   }|d   }t        |t        |||||ddd¬«
       t        t	        |«      «      dddœS 7 ŒÍ­w)Nr—   r™   rÄ   rx  õ*   Ð”ÐµÐ²Ð°Ð¹Ñ� ÑƒÐ¶Ðµ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ñ�ÐµÑ‚Ñ�Ñ�ry  Tr®  rµ  rú   rX  r·  ÚrebuildFr8  ©r™   rë  r\  )rà  rÚ  r”  rÌ   r/  r   r   ró  rö  r¿  rE  r]   r.  )r  r»  r–   r²  rµ  rú   rX  r·  s           rŽ   Úapi_rebuild_devicer|  v  s÷   è ø€ ä�7ÔØ—‘“×€DÜ  §¡¨$£Ò!Y°4·8±8¸HÓ3EÒ!YÈÏÉÐRXÓIYÓZ€IÜ�IÔØ”IÑÜ¨Ð4`ÔaÐaä˜ÔÜ  Ó+‰ä(¨¸TÔBˆØ�'‰N€EØ�ZÑ €HØ	ˆt‰€BØ�|Ñ$€JäØÜØØØØ
ØØØØõô #¤?°9Ó#=Ó>ØØñð ð7  ús   ‚C1¡C/¢CC1z!/devices/{device_id}/install-appsc              ƒ  ó¶   K  — t        |«       t        | «       | t        v rt        dd¬«      ‚t	        | t
        | d¬«       t        t        | «      «      dddœS ­w)Nrx  ry  ry  Úinstall)rá   Tr{  )rà  r/  r   r   rE  rX   r.  ©r–   r  s     rŽ   Úapi_install_device_appsr€  ›  sX   è ø€ ä�7ÔÜ�IÔØ”IÑÜ¨Ð4`ÔaÐaÜ˜Ô$7¸ÈÕSä"¤?°9Ó#=Ó>ØØñð ùó   ‚AAz/{device_id}c              ƒ  ó6   K  — dt        t        | «      «      iS ­w)Nr™   )r.  r/  rå   s    rŽ   Úapi_get_devicerƒ  ©  s   è ø€ àÔ&¤°yÓ'AÓBÐCÐCùó   ‚c                ó¢  — t        | «      }t        | «      xs i }t        |j                  d«      xs d«      j	                  «       }t        |j                  d«      xs d«      j	                  «       }|j                  d«      }	 |dvrt        t        |«      «      nd}t        |j                  d«      xs d«      j	                  «       xs t        }|j                  d«      }	 |dvrt        |«      nt        }	|r	|r|› d|› �n|}
t        |«      }t        |«      }i d| “d|xs | “d	|“d
|“d|“d|“d|
“dt        |«      “d|d   “d|d   “d|“d|“d|“dt        |	«      “dt        |	«      “dd“dd“ddddœ¥}| ||dœS # t        t        f$ r! t        |xs d«      j	                  «       }Y �Œw xY w# t        t        f$ r	 t        }	Y ŒÓw xY w)NrX  ro   rÄ   rY  rR  r`  rÌ  r™   Ú	device_ipÚdevice_portÚdevice_endpointra  Úredroid_dirÚdirÚredroid_containerÚ	containerrh  Ú	ssh_loginrM  ri  rN  r´  Ú
proxy_user)r¶  r³  r·  )r—   rÄ   Úvars)r/  re   r¹   rÌ   rŸ   r»   ro  rM  rm  rn  r    r_   )r–   r@  rp  rX  rÄ   rb  Ú	port_textrh  rq  ri  Úendpointra  ÚlayoutÚvars_maps                 rŽ   Ú_command_vars_payloadr”  ®  sP  € Ü
˜)Ó
$€CÜ�IÓÒ$ "€DÜ	ˆS�W‰W�T‹]Ò ˜bÓ	!×	'Ñ	'Ó	)€BÜˆs�w‰w�v‹Ò$ "Ó%×+Ñ+Ó-€DØ�w‰w�v‹€Hð0Ø*2¸*Ñ*D”Cœ˜H›Ô&È"ˆ	ô �4—8‘8˜JÓ'Ò-¨2Ó.×4Ñ4Ó6ÒJÔ:J€HØ—8‘8˜FÓ#€Lð$Ø(4¸JÑ(F”3�|Ô$ÔL\ˆñ ')©Y�"��Q�y�kÑ"¸B€HÜ˜SÓ!€DÜ˜DÓ!€FðØ�)ðà�Ò!˜	ðð 	�Rðð 	�yð	ð
 	ˆbðð 	�	ðð 	˜8ðð 	”�D“	ðð 	�v˜e‘}ðð 	˜V KÑ0ðð 	�Hðð 	�Xðð 	˜ðð 	”C˜“Mðð 	”s˜8“}ðð  	�rð!ð" 	�bð#ð$ ØØò)€Hð,  T°8Ñ<Ð<øôC ”zÐ"ò 0Ü˜š BÓ'×-Ñ-Ó/‹	ð0ûô ”zÐ"ò $Ü#Šð$ús$   ÂF Ã%F6 Æ,F3Æ2F3Æ6GÇGz/{device_id}/command-varsc              ƒ  ó6   K  — t        |«       t        | «      S ­wr¬   )rà  r”  r  s     rŽ   Úapi_device_command_varsr–  Ú  s   è ø€ ä�7ÔÜ  Ó+Ð+ùr„  z/{device_id}/updatec           
   ƒ  ó�  K  — t        | «      }| t        v rt        dd¬«      ‚|j                  «       ƒ d {  –—† }t	        |j                  d«      xs |j                  d«      xs | «      }t        d|v r|j                  d«      n|j                  d«      «      }d|v r|j                  d«      nd }|dv rt        |j                  d«      d	¬
«      }nt        |d	¬
«      }|j                  d«      }|€|j                  d«      }|€dn
t        |«      }t        | «      }	t        |j                  d«      xs |j                  d«      xs d«      j                  «       }
|
s8t        |	xs i j                  d«      xs d«      j                  «       xs t        }
t        |j                  d|j                  d«      «      ddt        |	xs i j                  d«      xs t        «      ¬«      }|| k7  rt        |«      rt        dd|› d�¬«      ‚t        ||«      }|r8|j                  d«      | |hvr#t        dd|› d|j                  d«      › d�¬«      ‚t        |j                  d«      xs d«      }	 t        |j                  d«      «      }||k7  xs ||k7  }|r$	 t%        j&                  t(        ||«      ƒ d {  –—†  | }|| k7  rCt/        | |«      st        dd¬«      ‚	 t1        | |«       t3        | |«       |}t        |«      xs |	}	||dœ}||k7  r t5        ||t7        ||¬ «      rd!nd"¬#«      |d$<   t9        ||«       t        |«      st        dd%¬«      ‚|	s|r	 t;        |||r|nd |
|¬&«       dt=        t        |«      «      iS 7 �ŒL# t         t"        f$ r d }Y �Œw xY w7 Œæ# t*        $ r}t        dt-        |«      ¬«      |‚d }~ww xY w# t"        $ r(}t/        || «       t        dt        |«      ¬«      |‚d }~wt*        $ r"}t/        || «       t        dd|› �¬«      |‚d }~ww xY w# t*        $ r}t        dd'|› �¬«      |‚d }~ww xY w­w)(Nrx  õ6   Ð”Ð¾Ð¶Ð´Ð¸Ñ‚ÐµÑ�ÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ� Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ry  r—   r™   rX  rY  rR  rR  r¸  rú   rQ  ro   rM  rh  r`  rN  ri  rO  FrP  rV  rW  rS  rT  rU  r’  rF  u;   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ Ð´ÐµÐ²Ð°Ð¹Ñ�u4   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ SSH: )rX  rY  ru  r€  r•   )rv  r‚  ra  u3   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð´ÐµÐ²Ð°Ð¹Ñ�rY  rZ  )r/  r   r   rÚ  r”  rÌ   r—  rœ  r¹   re   rŸ   rm  r»   rn  r$   r!   ro  rM  r4  r>  r[   r·   r�  r3   rg   rú  r-   r*   r:   ri   r.  )r–   r  r@  r»  rù  rX  rb  rY  rú   rp  rM  rN  rc  Úold_ipÚold_portÚendpoint_changedrë   Ú
current_idÚfieldss                      rŽ   Úapi_update_devicerž  à  sC  è ø€ ä
˜)Ó
$€CØ”IÑÜ¨Ð4lÔmÐmà—‘“×€DÜ˜dŸh™h t›nÒO°·±¸Ó0BÒOÀiÓP€FÜ	 T¨T¡\�4—8‘8˜D”>°s·w±w¸t³}Ó	E€BØ#)¨T¡>ˆt�x‰x˜Ô°t€HØ�:ÑÜ˜sŸw™w v›Ð6OÔP‰ä˜xÐ/HÔIˆà�x‰x˜
Ó#€HØÐØ—8‘8˜NÓ+ˆØÐ%‰r¬3¨x«=€Hä�IÓ€DÜ˜Ÿ™ Ó0ÒN°D·H±H¸ZÓ4HÒNÈBÓO×VÑVÓX€LÙÜ˜DšJ B×+Ñ+¨JÓ7Ò=¸2Ó>×DÑDÓFÒZÔJZˆÜ!Ø�‰� §¡¨Ó 4Ó5Ø'ØÜ�T’Z˜R×$Ñ$ VÓ,Ò@Ô0@ÓAô	€Kð �Òœz¨&Ô1Ü¨°nÀVÀHÐL]Ð4^Ô_Ð_ä& r¨4Ó0€IÙ�Y—]‘] 8Ó,°YÀÐ4GÑGÜØØ˜˜ÐAÀ)Ç-Á-ÐPXÓBYÐAZÐZ[Ð\ô
ð 	
ô
 �—‘˜“Ò$ "Ó%€FðÜ�s—w‘w˜v“Ó'ˆð  ‘|Ò7 x°4Ñ'7ÐÙð	\Ü×#Ñ#¤I¨r°4Ó8×8Ð8ð €JØ�ÒÜ˜Y¨Ô/Ü¨CÐ8uÔvÐvð	Ü˜	 6Ô*ô 	˜) VÔ,Øˆ
Ü˜
Ó#Ò+ tˆà Ñ%€FØ�‚|Ü)¨"°jÔPbÐceÐoyÕPzÉ1ð  ABô  Cˆˆv‰Ü�*˜fÔ%Ü�jÔ!Ü¨Ð4iÔjÐjá‰xð		wÜØØÙ$‘¨$Ø%Ø õð Ô&¤°zÓ'BÓCÐDÐDðe  úôL ”zÐ"ò Ø‹ðúð
 9ùÜò 	\Ü¨CÔ8LÈSÓ8QÔRÐX[Ð[ûð	\ûô ò 	KÜ˜& )Ô,Ü¨C¼¸C»ÔAÀsÐJûÜò 	Ü˜& )Ô,Ü¨CÐ:nÐorÐnsÐ8tÔuÐ{~Ð~ûð	ûô. ò 	wÜ¨CÐ:fÐgjÐfkÐ8lÔmÐsvÐvûð	wüs¿   ‚4Q¶N·H7QÉ/N Ê	QÊN Ê6NÊ7N Ê; QËO Ë(A/QÍP$ Í,QÎNÎQÎNÎQÎN Î	OÎ(N?Î?OÏQÏ	P!Ï#O3Ï3P!Ï?PÐP!Ð!QÐ$	QÐ-P>Ð>QÑQc              ƒ  óê   K  — t        | «       | t        v rt        dd¬«      ‚t        | «      st        dd¬«      ‚	 t	        | «       d| d	œS # t
        $ r}t        d| › d|› �«       Y d }~Œ$d }~ww xY w­w)
Nrx  r˜  ry  rF  u/   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ð´ÐµÐ²Ð°Ð¹Ñ�zdelete_host(r,  T©rë  r—   )r/  r   r   r   rd   r·   rÎ   ©r–   rë   s     rŽ   Úapi_delete_devicer¢  ;  s}   è ø€ ä�IÔØ”IÑÜ¨Ð4lÔmÐmÜ˜Ô#Ü¨Ð4eÔfÐfð9Ü�IÔð ˜iÑ(Ð(øô ò 9Ü�˜Y˜K z°#°Ð7×8Ñ8ûð9üs.   ‚9A3¼A ÁA3Á	A0ÁA+Á&A3Á+A0Á0A3z/{device_id}/readyc              ƒ  óê   K  — t        | «      }| t        v rt        dd¬«      ‚|j                  d«      st        dd¬«      ‚t	        | ddi«      st        dd	¬«      ‚t        t        | «      «      d
dœS ­w)Nrx  r˜  ry  r=  r’  u.   Ð”ÐµÐ²Ð°Ð¹Ñ� ÑƒÐ¶Ðµ Ð³Ð¾Ñ‚Ð¾Ð² Ðº Ñ€Ð°Ð±Ð¾Ñ‚Ðµr   rF  u3   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ð°Ñ‚ÑƒÑ�T©r™   rë  )r/  r   r   rÌ   r:   r.  rÿ  s     rŽ   Úapi_device_readyr¥  I  sr   è ø€ ä
˜)Ó
$€CØ”IÑÜ¨Ð4lÔmÐmØ�7‰7�=Ô!Ü¨Ð4dÔeÐeÜ˜ ]°AÐ$6Ô7Ü¨Ð4iÔjÐjÜ&¤°yÓ'AÓBÈ$ÑOÐOùs   ‚A1A3z/{device_id}/logoutc              ƒ  ób  K  — t        | «      }| t        v rt        dd¬«      ‚|j                  d«      st        dd¬«      ‚t	        | «       t        | «      }d}	 |4 ƒd {  –—†  t        j                  t        | t        | «      ƒ d {  –—†  d d d «      ƒd {  –—†  t        | «       d
t        t        | «      «      i}|rd|d<   |S 7 Œf7 Œ@7 Œ2# 1 ƒd {  –—†7  sw Y   ŒBxY w# t        $ r d}Y ŒRt        $ r ‚ t        $ r}t        d	t        |«      ¬«      |‚d }~ww xY w# t        | «       w xY w­w)Nrx  ry  ry  rù   r’  õ   Ð›Ðš Ð½Ðµ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½FTrF  r™   r-  )r/  r   r   rÌ   râ   r7  r4  r>  rì   rY   rI   r·   r¹   ræ   r.  )r–   r@  r6  r-  rë   r  s         rŽ   Úapi_logout_devicer¨  U  s.  è ø€ ä
˜)Ó
$€CØ”IÑÜ¨Ð4`ÔaÐaØ�7‰7�8ÔÜ¨Ð4PÔQÐQä�)ÔÜ�YÓ€DØ€Ið
Ø÷ 	Zñ 	ZÜ×#Ñ#Ô$7¸ÄIÈyÓY×YÐY÷	Z÷ 	Zô 	�IÔàÔ)¬/¸)Ó*DÓEÐF€GÙØ#ˆ�ÑØ€Nð	ZøØYøð	Zø÷ 	Z÷ 	Zñ 	Zûäò ØŠ	Üò ØÜò GÜ¨´C¸³HÔ=À3ÐFûðGûô 	�IÕüsœ   ‚AD/ÁC" Á CÁ!C" Á$$CÂC	Â	CÂC" ÂCÂC" Â*D/ÃC" Ã	CÃC" ÃCÃCÃCÃC" Ã"DÃ-D Ã/DÄ DÄDÄD ÄD,Ä,D/z/{device_id}/force-logoutc              ƒ  ó¶   K  — t        |«       t        | «      }|j                  d«      st        dd¬«      ‚t	        | «       t        t        | «      «      ddœS ­w)Nrù   r’  r§  ry  Tr¤  )rà  r/  rÌ   r   rV   r.  )r–   r  r@  s      rŽ   Úapi_force_logout_devicerª  r  sO   è ø€ ä�7ÔÜ
˜)Ó
$€CØ�7‰7�8ÔÜ¨Ð4PÔQÐQÜ�YÔÜ&¤°yÓ'AÓBÈ$ÑOÐOùr�  z/{device_id}/cards/addc              ƒ  óØ  K  — t        | «       | t        v rt        dd¬«      ‚t        | «       t	        | «      }d }d}	 |4 ƒd {  –—†  t        j                  t        | t        | «      ƒ d {  –—† }d d d «      ƒd {  –—†  t        | «       |rt        t        | «      «      ddœS |r|j                  d«      s$t        d|xs i j                  d	«      xs d
¬«      ‚t        t        | «      «      |j                  d	«      dœS 7 Œ½7 Œ—7 Œ‰# 1 ƒd {  –—†7  sw Y   Œ™xY w# t        $ r d}Y Œ©t        $ r ‚ t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w# t        | «       w xY w­w)Nrx  ry  ry  FTrF  )r™   r-  Úsuccessro  u1   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ°Ñ€Ñ‚Ñƒ)r™   ro  )r/  r   r   râ   r7  r4  r>  rì   rN   rI   r·   r¹   ræ   r.  rÌ   )r–   r6  r‹  r-  rë   s        rŽ   Úapi_add_cardr­  |  se  è ø€ ä�IÔØ”IÑÜ¨Ð4`ÔaÐaä�)ÔÜ�YÓ€DØ€FØ€Ið
Ø÷ 	bñ 	bÜ"×,Ñ,Ô-@À)ÌXÐW`Óa×aˆF÷	b÷ 	bô 	�IÔáÜ*¬?¸9Ó+EÓFÐUYÑZÐZá˜Ÿ™ IÔ.Ü¨°V²\¸r×4FÑ4FÀyÓ4Qò  5Ið  VIô  Jð  	Jä&¤°yÓ'AÓBÈvÏzÉzÐZcÓOdÑeÐeð#	bøØaøð	bø÷ 	b÷ 	bñ 	bûäò ØŠ	Üò ØÜò GÜ¨´C¸³HÔ=À3ÐFûðGûô 	�IÕüs›   ‚;E*¾D ÁDÁD Á$DÁ,DÁ-DÁ1D Á<DÁ=D ÂBE*ÄD ÄDÄD ÄDÄDÄDÄD ÄEÄ(E Ä*EÄ;EÅEÅE ÅE'Å'E*z/{device_id}/colorc              ƒ  óê  K  — t        | «      }t        |j                  d«      xs d«      j                  «       st	        dd¬«      ‚	 |j                  «       ƒ d {  –—† }t        |t        «      si }|j                  d«      }|dv rd}nt        |«      }|st	        dd¬«      ‚t        | d|i«       t        | «      st	        d	d
¬«      ‚dt        t        | «      «      iS 7 Œ„# t        $ r i }Y Œ�w xY w­w)Nrù   ro   r’  uN   Ð¦Ð²ÐµÑ‚ Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñƒ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð›Ðšry  rl  )Nro   r™  u1   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ñ†Ð²ÐµÑ‚ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ #rrggbbrF  u/   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ†Ð²ÐµÑ‚r™   )r/  r¹   rÌ   rŸ   r   rÚ  r·   r´   rÛ  rV  r:   r$   r.  )r–   r  r@  r»  r1  rl  s         rŽ   Úapi_set_device_colorr¯  ›  só   è ø€ ä
˜)Ó
$€CÜˆs�w‰w�xÓ Ò& BÓ'×-Ñ-Ô/Ü¨ð  5Eô  Fð  	FðØ—\‘\“^×#ˆô �dœDÔ!ØˆØ
�(‰(�7Ó
€CØ
Ð#Ñ#Ø‰ä˜#“ˆÙÜ¨CÐ8kÔlÐlÜ�)˜g uÐ-Ô.Ü�iÔ Ü¨Ð4eÔfÐfØÔ&¤°yÓ'AÓBÐCÐCð $ùÜò ØŠðüs=   ‚AC3ÁC" ÁC ÁC" Á B C3Ã C" Ã"C0Ã-C3Ã/C0Ã0C3z/{device_id}/cards/flagsc           	   ƒ  ó  ‡K  — t        | «       |j                  «       ƒ d {  –—† }t        j                  ddt	        |j                  d«      xs d«      «      }|st        dd¬«      ‚t        | «      }t        |r|j                  d«      nd «      }t        «       }|j                  |«      xs |D �ci c]  }|d“Œ c}Š|D ]$  }||v sŒt        |j                  |«      «      ‰|<   Œ& t        ˆfd	„|D «       «      r-|D �ci c]  }|t        ‰j                  |«      «      “Œ c}||<   n|j                  |d «       t        | t        j                  |d¬
«      «      st        dd¬«      ‚dt        t        | «      «      iS 7 �Œ^c c}w c c}w ­w)Nú\Dro   rù   r’  u$   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€ ÐºÐ°Ñ€Ñ‚Ñ‹ry  rg  Fc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr¬   )rÌ   )Ú.0Úkeyrf  s     €rŽ   ú	<genexpr>z(api_update_card_flags.<locals>.<genexpr>Â  s   øè ø€ Ò
, ˆ7�;‰;�s×Ñ
,ùs   ƒrä  rF  u<   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ„Ð»Ð°Ð³Ð¸ ÐºÐ°Ñ€Ñ‚Ñ‹r™   )r/  rÚ  rK  rL  r¹   rÌ   r   r$   r.   r   r	  Úanyr�   r9   rç  r.  )	r–   r  r»  rù   r@  rR  rˆ  r´  rf  s	           @rŽ   Úapi_update_card_flagsr·  ³  sY  øè ø€ ä�IÔØ—‘“×€DÜ�V‰V�E˜2œs 4§8¡8¨HÓ#5Ò#;¸Ó<Ó=€FÙÜ¨Ð4ZÔ[Ð[ä
�YÓ
€CÜ±c˜SŸW™W \Ô2¸tÓD€EÜÓ€DØ�i‰i˜ÓÒ?¸$Ö#?°3 C¨¡JÒ#?€GØò /ˆØ�$Š;Ü §¡¨£Ó.ˆG�CŠLð/ô Ó
, tÔ
,Ô,Ø@DÖE¸˜œd 7§;¡;¨sÓ#3Ó4Ñ4ÒEˆˆfŠà�	‰	�&˜$Ôä˜Y¬¯
©
°5ÀuÔ(MÔNÜ¨Ð4rÔsÐsØÔ&¤°yÓ'AÓBÐCÐCð'  ûò $@ùò
 Fùs5   ƒF¢F £BFÂ3
FÂ=FÃ
7FÄ"FÄ#AFÆ
Fz/{device_id}/check/{kind}c              ƒ  óV  K  — |t         vrt        dd¬«      ‚t        | «       | t        v rt        dd¬«      ‚t	        | «       t        | «      }d}	 |4 ƒd {  –—†  t        j                  t        | t         |   | «      ƒ d {  –—†  d d d «      ƒd {  –—†  t        | «       d	t        t        | «      «      i}|rd|d
<   |S 7 Œi7 Œ@7 Œ2# 1 ƒd {  –—†7  sw Y   ŒBxY w# t        $ r d}Y ŒRt        $ r ‚ t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w# t        | «       w xY w­w)Nr’  u.   Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ry  rx  ry  FTrF  r™   r-  )ÚCHECKERSr   r/  r   râ   r7  r4  r>  rì   rI   r·   r¹   ræ   r.  )r–   rá   r6  r-  rë   r  s         rŽ   Úapi_check_devicerº  Ì  s-  è ø€ à”8ÑÜ¨Ð4dÔeÐeä�IÔØ”IÑÜ¨Ð4`ÔaÐaä�)ÔÜ�YÓ€DØ€Ið
Ø÷ 	_ñ 	_Ü×#Ñ#Ô$7¸ÄHÈTÁNÐT]Ó^×^Ð^÷	_÷ 	_ô 	�IÔàÔ)¬/¸)Ó*DÓEÐF€GÙØ#ˆ�ÑØ€Nð	_øØ^øð	_ø÷ 	_÷ 	_ñ 	_ûäò ØŠ	Üò ØÜò GÜ¨´C¸³HÔ=À3ÐFûðGûô 	�IÕüsœ   ‚AD)ÁC ÁCÁC Á'CÂCÂCÂC ÂCÂC Â*D)ÃC ÃCÃC ÃCÃCÃCÃC ÃDÃ'D Ã)DÃ:DÄDÄD ÄD&Ä&D)z/{device_id}/loginc           	   ƒ  ó  K  — t        | «      }|j                  d«      rt        dd¬«      ‚|j                  «       ƒ d {  –—† }t	        j
                  ddt        |j                  d«      xs d«      «      }t	        j
                  ddt        |j                  d«      xs d«      «      }|st        d	d
¬«      ‚|st        d	d¬«      ‚t        j                  | «      }|r|j                  t        v rt        dd¬«      ‚| t        v rt        dd¬«      ‚t        | ||«      }|t        | <   t        j                  | «       t        j                  t        |fd¬«      |_        |j                   j#                  «        d|j                  iS 7 �ŒI­w)Nr=  rx  õ<   Ð¡Ð½Ð°Ñ‡Ð°Ð»Ð° Ð½Ð°Ð¶Ð¼Ð¸Ñ‚Ðµ Â«Ð“Ð¾Ñ‚Ð¾Ð² Ðº Ñ€Ð°Ð±Ð¾Ñ‚ÐµÂ»ry  r±  ro   rù   rú   r’  õ*   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€ Ñ‚ÐµÐ»ÐµÑ„Ð¾Ð½Ð°õ1   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ (ÐºÐ¾Ð´-Ð¿Ð°Ñ€Ð¾Ð»ÑŒ)u&   Ð’Ñ…Ð¾Ð´ ÑƒÐ¶Ðµ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ�u*   Ð”ÐµÐ²Ð°Ð¹Ñ� Ð·Ð°Ð½Ñ�Ñ‚ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¾Ð¹T)rý   rê   Údaemonrû   )r/  rÌ   r   rÚ  rK  rL  r¹   rí   rû   Ú_ACTIVE_LOGIN_STATESr   r÷   rÞ   rß   ÚThreadr2  r  Ústart)r–   r  r@  r»  rù   rú   rt  r0  s           rŽ   Úapi_login_startrÃ  ê  sH  è ø€ ä
˜)Ó
$€CØ
‡w�wˆ}ÔÜ¨Ð4rÔsÐsà—‘“×€DÜ�V‰V�E˜2œs 4§8¡8¨HÓ#5Ò#;¸Ó<Ó=€FÜ�v‰v�e˜R¤ T§X¡X¨jÓ%9Ò%?¸RÓ!@ÓA€HÙÜ¨Ð4`ÔaÐaÙÜ¨Ð4gÔhÐhä×"Ñ" 9Ó-€HÙ�H—O‘OÔ';Ñ;Ü¨Ð4\Ô]Ð]Ø”IÑÜ¨Ð4`ÔaÐaä˜9 f¨hÓ7€GØ!(„O�IÑÜ‡M�M�)ÔÜ×%Ñ%¬Z¸w¸jÐQUÔV€G„NØ‡N�N×ÑÔØ�g—n‘nÐ%Ð%ð'  ûs   ‚=F¿FÁ E	Fc              ƒ  ó2  K  — t         j                  | «      }|sddiS |j                  |j                  |j                  |j
                  dœ}|j                  dk(  r|j                  |d<   |j                  dk(  r|j                  r|j                  |d<   |S ­w)Nrû   Úidle)rû   rü   rý   rÿ   rþ   r+  r™   )rí   rÌ   rû   rü   rý   rÿ   rþ   r™   )r–   r0  r  s      rŽ   Úapi_login_statusrÆ  	  sŠ   è ø€ ä×!Ñ! )Ó,€GÙØ˜&Ð!Ð!à—.‘.Ø—.‘.Ø—.‘.Ø#×4Ñ4ñ	€Gð ‡~�~˜Ò Ø"Ÿ=™=ˆ�ÑØ‡~�~˜Ò G§N¢NØ#ŸN™Nˆ�ÑØ€Nùs   ‚BBz/{device_id}/login/codec           	   ƒ  ój  K  — t         j                  | «      }|r|j                  dk7  rt        dd¬«      ‚|j	                  «       ƒ d {  –—† }t        j                  ddt        |j                  d«      xs d«      «      }t        |«      dk7  rt        d	d
¬«      ‚|j                  |«       ddiS 7 Œg­w)Nrñ   rx  õ+   Ð¡ÐµÐ¹Ñ‡Ð°Ñ� ÐºÐ¾Ð´ Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ�ry  r±  ro   r  é   r’  u4   ÐšÐ¾Ð´ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ñ‚ÑŒ Ð¸Ð· 6 Ñ†Ð¸Ñ„Ñ€rû   rï   )
rí   rÌ   rû   r   rÚ  rK  rL  r¹   r¼   r$  )r–   r  r0  r»  r  s        rŽ   Úapi_login_coderÊ  	  sœ   è ø€ ä×!Ñ! )Ó,€GÙ�g—n‘n¨Ò7Ü¨Ð4aÔbÐbà—‘“×€DÜ�6‰6�%˜œS §¡¨&Ó!1Ò!7°RÓ8Ó9€DÜ
ˆ4ƒy�A‚~Ü¨Ð4jÔkÐkà×Ñ˜ÔØ�kÐ"Ð"ð  ús   ‚AB3Á	B1Á
A(B3z/{device_id}/login/resendc              ƒ  óÊ   K  — t         j                  | «      }|r|j                  dk7  rt        dd¬«      ‚|j                  st        dd¬«      ‚|j                  «        ddiS ­w)Nrñ   rx  rÈ  ry  u'   ÐšÐ½Ð¾Ð¿ÐºÐ° ÐµÑ‰Ñ‘ Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°rû   )rí   rÌ   rû   r   rÿ   r&  ©r–   r0  s     rŽ   Úapi_login_resendrÍ  '	  s`   è ø€ ä×!Ñ! )Ó,€GÙ�g—n‘n¨Ò7Ü¨Ð4aÔbÐbØ×#Ò#Ü¨Ð4]Ô^Ð^Ø×ÑÔØ�oÐ&Ð&ùs   ‚A!A#z/{device_id}/login/cancelc              ƒ  ó    K  — t         j                  | «      }|r|j                  t        vrddiS |j	                  «        d|j                  iS ­w)Nrû   rÅ  )rí   rÌ   rû   rÀ  r(  rÌ  s     rŽ   Úapi_login_cancelrÏ  2	  sK   è ø€ ä×!Ñ! )Ó,€GÙ�g—n‘nÔ,@Ñ@Ø˜&Ð!Ð!Ø×ÑÔØ�g—n‘nÐ%Ð%ùs   ‚AAc                ó‚   — t        j                  ddt        | xs d«      «      }t        |«      dk(  r|d   dv r|dd  }|S )Nr±  ro   é   r   )Ú7Ú8r•   )rK  rL  r¹   r¼   )r1  rù   s     rŽ   Ú_normalize_lk_numberrÔ  ;	  sC   € Ü�V‰V�E˜2œs 3¢9¨"›~Ó.€FÜ
ˆ6ƒ{�bÒ˜V A™Y¨*Ñ4Ø˜˜�ˆØ€Mr�   z/{device_id}/login/refreshc              ƒ  óè   K  — t        | «       | t        v rt        dd¬«      ‚	 t        j                  t
        | «      ƒ d {  –—† }|S 7 Œ# t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w­w)Nrx  õ   Ð”ÐµÐ²Ð°Ð¹Ñ� Ð·Ð°Ð½Ñ�Ñ‚ry  rF  )r/  r   r   r4  r>  rT   r·   r¹   )r–   r
  rë   s      rŽ   Úapi_login_refreshr×  B	  sq   è ø€ ä�IÔØ”IÑÜ¨Ð4MÔNÐNðGÜ×'Ñ'Ô(9¸9ÓE×Eˆð €Lð FùÜò GÜ¨´C¸³HÔ=À3ÐFûðGüs:   ‚!A2¤A
 ÁAÁA
 ÁA2ÁA
 Á
	A/ÁA*Á*A/Á/A2z/{device_id}/login/claimc           	   ƒ  ó`  K  — t        | «      }|j                  d«      rt        dd¬«      ‚|j                  d«      rt        dd¬«      ‚| t        v rt        dd¬«      ‚|j	                  «       ƒ d{  –—† }t        |j                  d«      «      }t        j                  d	d
t        |j                  d«      xs d
«      «      }t        |«      dk7  rt        dd¬«      ‚t        |«      dk  rt        dd¬«      ‚t        | ||dœ«      st        dd¬«      ‚dt        t        | «      «      iS 7 Œ¹­w)uz   Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð½Ð¾Ð¼ÐµÑ€ Ð¸ ÐºÐ¾Ð´-Ð¿Ð°Ñ€Ð¾Ð»ÑŒ, ÐµÑ�Ð»Ð¸ Ð²Ñ…Ð¾Ð´ Ð² Ð›Ðš Ð½Ð° ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ðµ ÑƒÐ¶Ðµ ÐµÑ�Ñ‚ÑŒ.r=  rx  r¼  ry  rù   u   Ð›Ðš ÑƒÐ¶Ðµ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½rÖ  Nr±  ro   rú   rl   r’  r½  rm   r¾  )rù   rú   rF  u+   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð›Ðšr™   )r/  rÌ   r   r   rÚ  rÔ  rK  rL  r¹   r¼   r:   r.  )r–   r  r@  r»  rù   rú   s         rŽ   Úapi_login_claimrÙ  N	  s  è ø€ ô ˜)Ó
$€CØ
‡w�wˆ}ÔÜ¨Ð4rÔsÐsØ
‡w�wˆxÔÜ¨Ð4RÔSÐSØ”IÑÜ¨Ð4MÔNÐNà—‘“×€DÜ! $§(¡(¨8Ó"4Ó5€FÜ�v‰v�e˜R¤ T§X¡X¨jÓ%9Ò%?¸RÓ!@ÓA€HÜ
ˆ6ƒ{�bÒÜ¨Ð4`ÔaÐaÜ
ˆ8ƒ}�qÒÜ¨Ð4gÔhÐhä˜¨vÀ8Ñ$LÔMÜ¨Ð4aÔbÐbØÔ&¤°yÓ'AÓBÐCÐCð  ús   ‚A0D.Á2D,Á3B:D.z/{device_id}/screenc              ƒ  ó–  K  — t        | «       t        j                  | «      }	 |�K|j                  �?|j                  t
        v r-t        j                  t        |j                  «      ƒ d{  –—† }n"t        j                  t        | «      ƒ d{  –—† }t        |dddi¬«      S 7 Œ77 Œ# t        $ r}t        dd|› �¬«      |‚d}~ww xY w­w)	u  Ð¡Ð½Ñ�Ñ‚ÑŒ PNG-Ñ�ÐºÑ€Ð¸Ð½ÑˆÐ¾Ñ‚ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ Ñ�ÐºÑ€Ð°Ð½Ð° ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð°.

    Ð’Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ…Ð¾Ð´Ð° Ð¿ÐµÑ€ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ Ð¶Ð¸Ð²Ð¾Ðµ ADB-Ñ�Ð¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð¸Ð· Ñ�ÐµÑ�Ñ�Ð¸Ð¸
    (ÐµÑ�Ð»Ð¸ Ð¾Ð½Ð¾ ÑƒÐ¶Ðµ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð½Ð° ÑˆÐ°Ð³Ðµ Ð²Ð²Ð¾Ð´Ð° ÐºÐ¾Ð´Ð°), Ð¸Ð½Ð°Ñ‡Ðµ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð°ÐµÐ¼Ñ�Ñ� Ð·Ð°Ð½Ð¾Ð²Ð¾.
    Ð­Ð½Ð´Ð¿Ð¾Ð¸Ð½Ñ‚ Ð½Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð½Ð° `_checking`, Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñ�ÐºÑ€Ð°Ð½ Ð¼Ð¾Ð¶Ð½Ð¾ Ð±Ñ‹Ð»Ð¾ Ñ�Ð¼Ð¾Ñ‚Ñ€ÐµÑ‚ÑŒ
    Ð¿Ñ€Ñ�Ð¼Ð¾ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ…Ð¾Ð´Ð° Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¾Ðº.
    Néö  u+   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð½Ñ�Ñ‚ÑŒ Ñ�ÐºÑ€Ð°Ð½: ry  z	image/pngúCache-Controlúno-store, max-age=0)r  Ú
media_typer  )r/  rí   rÌ   r  rû   rÀ  r4  r>  r`   rQ   r·   r   r   )r–   r0  Úpngrë   s       rŽ   Úapi_device_screenrà  f	  sÂ   è ø€ ô �IÔÜ×!Ñ! )Ó,€GðrØÐ 7§?¡?Ð#>À7Ç>Á>ÔUiÑCiÜ×)Ñ)¬-¸¿¹ÓI×I‰Cä×)Ñ)¬.¸)ÓD×DˆCô ØØØ Ð"7Ð8ôð ð JøàDùÜò rÜ¨Ð6aÐbeÐafÐ4gÔhÐnqÐqûðrüsM   ‚!C	¤AB' Á+B#Á,"B' ÂB%ÂB' ÂC	Â#B' Â%B' Â'	CÂ0CÃCÃC	z/{device_id}/backc              ƒ  óì   K  — t        | «       | t        v rt        dd¬«      ‚	 t        j                  t
        | «      ƒ d {  –—†  ddiS 7 Œ# t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w­w)Nrx  u5   Ð�ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ñ�ry  rÛ  rë  T)r/  r   r   r4  r>  rZ   r·   r¹   r¡  s     rŽ   Úapi_device_backrâ  	  sv   è ø€ ä�IÔØ”IÑÜ¨Ð4kÔlÐlðGÜ×ÑÔ 1°9Ó=×=Ð=ð �$ˆ<Ðð 	>ùÜò GÜ¨´C¸³HÔ=À3ÐFûðGüs:   ‚!A4¤A ÁA
ÁA ÁA4Á
A Á	A1ÁA,Á,A1Á1A4z/{device_id}/cancelc              ƒ  ó°  K  — t        | «       t        j                  | «      }|�'|j                  t        v r|j                  «        dddœS | t        vrt        dd¬«      ‚t        j                  | «      }|�|j                  «        	 t        j                  t        | «      ƒ d {  –—†  dddœS 7 Œ	# t        $ r}t        d|› �«       Y d }~Œ#d }~ww xY w­w)	NTrµ  )rë  rá   rx  u*   Ð�ÐµÑ‚ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ñ�ry  zcancel: press_back failed: r  )r/  rí   rÌ   rû   rÀ  r(  r   r   rƒ   Úsetr4  r>  rZ   r·   rÎ   )r–   r0  rÏ   rë   s       rŽ   Úapi_cancel_actionrå  ‹	  sÌ   è ø€ ä�IÔÜ×!Ñ! )Ó,€GØÐ˜wŸ~™~Ô1EÑEØ×ÑÔ Ø GÑ,Ð,Øœ	Ñ!Ü¨Ð4`ÔaÐaÜ×Ñ˜YÓ'€DØÐØ�‰Œ
ð3Ü×ÑÔ 1°9Ó=×=Ð=ð  Ñ)Ð)ð 	>ùÜò 3ÜÐ+¨C¨5Ð1×2Ñ2ûð3üsB   ‚BCÂ	B2 Â&B0Â'B2 Â+CÂ0B2 Â2	CÂ;CÃ	CÃCÃCc                óB  — | j                  d«      }|€| j                  d«      }t        |t        «      r|j                  «       }nt        |t        «      r|}ng }|D �cg c]5  }t        |«      j                  «       sŒt        |«      j                  «       ‘Œ7 c}S c c}w )NÚcommandsÚcommand)rÌ   r´   r¹   r	  r  rŸ   )r»  r1  r  rþ  s       rŽ   Ú_parse_ssh_commandsré  ž	  sy   € Ø
�(‰(�:Ó
€CØ
€{Ø�h‰h�yÓ!ˆÜ�#”sÔØ—‘Ó ‰Ü	�CœÔ	Ø‰àˆØ*/ÖE $´3°t³9·?±?Õ3DŒC�‹I�O‰OÕÒEÐEùÒEs   ÁBÁ>Bz/{device_id}/sshc           
   ƒ  óÂ  K  — t        | «       |j                  «       ƒ d {  –—† }t        |«      }|st        dd¬«      ‚t	        dt
        t        dt        |«      «      z  «      }	 t        j                  t        | ||d«      ƒ d {  –—† }d|i}t        |«      dk(  rM|d	   j                  d
«      xs d|d
<   |d	   j                  d«      xs d|d<   |d	   j                  d«      |d<   |S 7 ŒË7 Œg# t        $ r}t        dt        |«      ¬«      |‚d }~wt        $ r}t        dt        |«      ¬«      |‚d }~wt        $ r}t        dt        |«      ¬«      |‚d }~ww xY w­w)Nr’  u   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒry  rò   r•   FrÛ  Úresultsr   Ústdoutro   ÚstderrÚ	exit_code)r/  rÚ  ré  r   rØ   ÚSSH_COMMAND_TIMEOUTrÖ   r¼   r4  r>  rh   rM  r¹   r  r·   rÌ   )r–   r  r»  rç  r  rë  rë   r  s           rŽ   Úapi_ssh_commandrð  «	  sU  è ø€ ä�IÔØ—‘“×€DÜ" 4Ó(€HÙÜ¨Ð4SÔTÐTä�%Ô,¬s°1´c¸(³mÓ/DÑDÓE€GðGÜ×)Ñ)ÜØØØØó
÷ 
ˆð ˜'Ð"€GÜ
ˆ7ƒ|�qÒØ# A™JŸN™N¨8Ó4Ò:¸ˆ�ÑØ# A™JŸN™N¨8Ó4Ò:¸ˆ�ÑØ& q™zŸ~™~¨kÓ:ˆ�ÑØ€Nð5  øð
ùô ò GÜ¨´C¸³HÔ=À3ÐFûÜò GÜ¨´C¸³HÔ=À3ÐFûÜò GÜ¨´C¸³HÔ=À3ÐFûðGüs_   ‚E¡C-¢AEÁ' C1 ÂC/ÂC1 ÂA"EÃ/C1 Ã1	EÃ:DÄEÄD4Ä4EÅ EÅEÅEz/{device_id}/rebootc              ƒ  ó(  K  — t        | «       | t        v rt        dd¬«      ‚t        | «       t	        | «      }d}	 |4 ƒd {  –—†  t        j                  t        | t        | «      ƒ d {  –—†  d d d «      ƒd {  –—†  t        | «       t        t        | «      «      ddœ}|rd|d<   |S 7 Œg7 ŒA7 Œ3# 1 ƒd {  –—†7  sw Y   ŒCxY w# t        $ r d}Y ŒSt        $ r ‚ t        $ r}t        dt        |«      ¬«      |‚d }~ww xY w# t        | «       w xY w­w)	Nrx  ry  ry  FTrF  r¤  r-  )r/  r   r   râ   r7  r4  r>  rì   r^   rI   r·   r¹   ræ   r.  )r–   r6  r-  rë   r  s        rŽ   Úapi_reboot_devicerò  Ë	  s  è ø€ ä�IÔØ”IÑÜ¨Ð4`ÔaÐaä�)ÔÜ�YÓ€DØ€Ið
Ø÷ 	^ñ 	^Ü×#Ñ#Ô$7¸ÄMÐS\Ó]×]Ð]÷	^÷ 	^ô 	�IÔä)¬/¸)Ó*DÓEÈTÑR€GÙØ#ˆ�ÑØ€Nð	^øØ]øð	^ø÷ 	^÷ 	^ñ 	^ûäò ØŠ	Üò ØÜò GÜ¨´C¸³HÔ=À3ÐFûðGûô 	�IÕüsš   ‚9D¼C ÁB*ÁC Á$B0Á*B,Á+B0Á/C Á:B.Á;C Á?+DÂ*C Â,B0Â.C Â0CÂ6B9Â7CÂ>C ÃC?ÃD ÃC?Ã#C:Ã:C?Ã?D ÄDÄDz/{device_id}/passwordc           	   ƒ  ó,  K  — t        | «       |j                  «       ƒ d {  –—† }t        j                  ddt	        |j                  d«      xs d«      «      }t        |«      dk  rt        dd¬«      ‚t        | |«      st        dd	¬«      ‚d
| dœS 7 Œp­w)Nr±  ro   rú   rm   r’  u0   ÐšÐ¾Ð´-Ð¿Ð°Ñ€Ð¾Ð»ÑŒ: Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ 4 Ñ†Ð¸Ñ„Ñ€Ñ‹ry  rF  u3   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð¿Ð°Ñ€Ð¾Ð»ÑŒTr   )	r/  rÚ  rK  rL  r¹   rÌ   r¼   r   r;   )r–   r  r»  rú   s       rŽ   Úapi_update_passwordrô  æ	  sƒ   è ø€ ä�IÔØ—‘“×€DÜ�v‰v�e˜R¤ T§X¡X¨jÓ%9Ò%?¸RÓ!@ÓA€HÜ
ˆ8ƒ}�qÒÜ¨Ð4fÔgÐgÜ˜9 hÔ/Ü¨Ð4iÔjÐjØ˜iÑ(Ð(ð  ús   ‚B¡B¢A1Bc               ƒ  ó6   K  — t        t        dz  ddi¬«      S ­w)Nz
index.htmlrÜ  rÝ  )r  )r   Ú
WEBAPP_DIRrŒ   r�   rŽ   ry  ry  õ	  s$   è ø€ äÜ�\Ñ!Ø Ð"7Ð8ôð ùr„  )Ú	directory)rÄ   Ú__main__z0.0.0.0rq   )rp  rY  ÚreloadÚproxy_headersÚforwarded_allow_ipsÚssl_certfileÚssl_keyfile)r�   r¹   Úreturnr	  )r˜   r¹   rþ  ÚNone)rþ  rÿ  )ru   )r–   r¹   rá   r¹   rþ  rÿ  )r–   r¹   rþ  rÿ  )r–   r¹   )r0  r÷   )r–   r¹   rþ  zasyncio.Lock)
r–   r¹   rá   r¹   r9  r	  r:  r	  rþ  rÿ  )rþ  r×   )rþ  r¹   r¬   )r@  rÛ  rp  úOptional[dict]rþ  rÛ  )ro   )
rX  r¹   ra  r»   rv  r¹   rs  r	  rþ  r»   )r‰  ú
list[dict]rþ  r  )r›  r¹   r˜  r	  r™  úOptional[int]rþ  r»   )T)r™  r	  rþ  r	  )r»  rÛ  r¯  r	  rþ  rÛ  )r–   r¹   r:  r	  rþ  rÿ  )rO  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þ  rÿ  )rX  r¹   rþ  r¹   )r  r   rþ  r¹   )r  r   rþ  r€   )r  r   rþ  r   )r  r¹   rþ  r	  )rX  r¹   r'  r¹   rþ  rÿ  )rX  r¹   r+  r	  rþ  r	  )rX  r¹   r8  r†   r9  r»   r:  r×   r'  r¹   rþ  r	  )rþ  r  )rþ  zOptional[str])rþ  ú	list[str])ro  r   rþ  r	  )ro  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þ  zOptional[JSONResponse])r  r   )r  r   rþ  rÛ  )r  r   rþ  rÿ  )rñ  r»   r  r   rþ  rÛ  )r   ro   )r  r»   r™   r¹   rþ  rÛ  )rþ  rÛ  rþ  zUnion[dict, str])rë   ÚBaseExceptionrþ  r   )
rh  r¹   rX  r¹   rY  r»   rk  r¹   rþ  r¹   )r»  rÛ  rX  r¹   rY  r»   ra  r»   rk  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   )zpanel_server:app(W  rõ   Ú
__future__r   r4  r�  rÂ  r-  rÚ  r  rK  r]  Úsysrß   rÔ   Úurllib.requestré  Úcollectionsr   Úurllib.parser   Úpathlibr   Útypingr   r   Úaiogramr	   r
   Úaiogram.client.defaultr   Úaiogram.enumsr   Úaiogram.filtersr   r   Úaiogram.typesr   r   Úfastapir   r   r   r   Úfastapi.middleware.corsr   Úfastapi.responsesr   r   r   Úfastapi.staticfilesr   Údb_apir   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;   r<   Úconfigr=   r>   r?   r@   rA   rB   rC   rD   Útelegram_authrE   rF   rG   rH   r  rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   Ússh_cmdrb   rn  rc   rm  rd   re   rf   rg   rh   ri   Úuserbot_servicerj   rÁ  Ú__file__Úparentrö  ÚPORTrÑ  rÐ  rÏ  rÎ  r  r¹  ÚappÚadd_middlewarer‚  rb  r}   Ú__annotations__r~  r~   rä  r   r�   r‚   rƒ   Úlocalr¤   r  rÓ   r5  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÷   r2  r7  rE  rP  ÚcompilerT  rV  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#  r(  r&  r2  r5  r?  rˆ  r‰  rY  r`  rh  rp  ro  ru  r{  r€  r‹  r�  r�  r–  r˜  r›  r¡  r¥  rš  r¬  r³  r½  Úon_eventrÄ  rÈ  Ú
middlewarerÖ  rÌ   rD  ÚpostrÜ  rÞ  rà  rÁ  rï  ró  Údeleterõ  r÷  rú  r   r  r  r  r  r  r  r  r!  r&  r)  r,  r.  r1  r4  r7  r9  r;  r=  r@  rD  rI  rd  rl  rp  rw  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ô  Úinclude_routerry  ÚmountrÆ   ÚuvicornÚkwargsÚcertr´  Úexistsr¹   ÚrunrŒ   r�   rŽ   ú<module>r-     s+  ðòõ #ã Û Û Û Û Û Û 	Û Û 
Û Û Û Ý Ý  Ý ß "ç #Ý 7Ý #ß 1ß 6ß >Ó >Ý 2ß BÑ BÝ +÷ v	÷  v	÷  v	÷  v	÷  v	÷  v	÷  v	÷  v	÷  v	ñ  v	÷ K÷  Kó  K÷ó ÷ f÷  f÷  f÷  f÷  f÷  fõ  f÷	÷ 	ó 	õ 7á�(‹^×"Ò" XÑ-€
Ø€ØÐ ØÐ ØÐ ØÐ Ú3€ð ØØØñ	€ñ �MÔ"€Ø × Ò ØØ�%Ø�%Ø�%ð	 ô ñ �vÔ€àÐ Ø€	ˆ=Ó Ù‹<€à)+€Ð&Ó +Ù“e€	ˆ8Ó Ø€
ˆNÓ Ù"›u€	ÐÓ $Ø,.€Ð)Ó .Ø€y‡‚Ó€Ø�jŠj€àˆI�NŠNÓ€	Ù tÔ,€
ˆKÓ ,Ø€Ø€Ø€àˆY�^Š^Ó€
Ø$&€Ð
!Ó &Ø(*€Ð%Ó *Ù›€ˆXÓ ôô÷@"-ñ "-ñJ �#—*’*˜gÔ&Ù˜ŸšÓ$€C„JÙ�#—*’*˜gÔ&Ù˜ŸšÓ$€C„Jô
?ô)ð "€„
Ù Ð*Ô +ö1ô'ôð  .0€Ð*Ó /ÚNÐ ØÐ ôN�Yô N÷X-ñ X-ôv-ô@ð ØØñ.Øð.ð ð	.ð
 ð.ð ð.ð 
ô.ô@
ð ˆr�zŠzÐ+Ó,€ôö5ñpÐQUö ô$ð( �—
’
Ð?Ó@€Ø �b—j’jÐ!IÓJÐ Ø�R—Z’ZÐ WÓXÐ ØÐ ô;ôôð <@ÐZ^ö ö `ð CGö VôDô ôF
ôOôô	ô
Rô
$ô:ôôô
ôôôAôô Kôôô*ô6ðØðð &ðð ð	ð
 ðð ðð 
ôòD n€òÐ ôô	ôô@Dð 
×Ò‘,“.Ó!óó "ðð 
×Ò‘'˜&“/Ó"ó	_ó #ð	_ô2ô*ô":ôDô6ô
Dô$ô.ôô÷õ$õ 6ñr Ô ð ‡‚ˆiÓó	'ó ñ	'ð ‡‚ˆjÓó(ó ñ(ð ‡‚�Óó.ó ñ.ðb ‡‚ˆÓóó ñð ‡‚ˆ'Óó %ó ñ %ðF ‡‚ˆƒóó ñõYõ
-ð8 ‡‚ˆÓó-ó ñ-ð
 ‡‚ˆ*Óó9ó ñ9ð  ‡‚ÐÓó9ó  ñ9ð ‡‚ˆÓó!ó ñ!ð
 ‡‚ˆ-Óó!ó ñ!ð ‡‚ˆMÓó!ó ñ!ð" ‡‚ˆÓóó ñð
 ‡‚ˆ*Óó(ó ñ(ðV ‡‚ˆJÓóó ñð ‡‚Ð
Óóó ñð ‡‚ˆÓõNó ñNõ$õUð ‡‚ˆÓó&ó ñ&ð ‡‚Ð
Óó0ó ñ0ð ‡‚ˆ/Óó0ó ñ0ð ‡‚Ð
Óó0ó ñ0ð ‡‚Ð
Óó0ó ñ0ð ‡‚Ð
Óó0ó ñ0óõð ‡‚Ð	Óóó ñð ‡‚Ð
Óóó ñð ‡‚ˆÓó+ó ñ+ð ‡‚ˆ-Óó
ó ñ
ð ‡‚Ð	Óó ó ñ ð ‡‚ˆÓØ‡‚ˆƒóHó ó ñHð ‡‚ˆ*ÓØ‡‚ˆ#ƒó|ó ó ñ|õ~tõ.ð< ‡‚Ð
"Ó#ódó $ñdðN ‡‚Ð
Óó!ó ñ!ðH ‡‚Ð
-Ó.ó
ó /ñ
ð ‡‚ˆÓóDó ñDõ)=ðX ‡‚Ð	$Ó%ó,ó &ñ,ð
 ‡‚Ð
Ó óWEó !ñWEðt ‡‚ˆNÓó
)ó ñ
)ð ‡‚Ð
ÓóPó  ñPð ‡‚Ð
Ó óó !ñð8 ‡‚Ð
%Ó&óPó 'ñPð ‡‚Ð
"Ó#ófó $ñfð< ‡‚Ð
ÓóDó  ñDð. ‡‚Ð
$Ó%óDó &ñDð0 ‡‚Ð
%Ó&óó 'ñð: ‡‚Ð
Óó&ó  ñ&ð6 ‡‚Ð	Óóó ñð" ‡‚Ð
#Ó$ó#ó %ñ#ð ‡‚Ð
%Ó&ó'ó 'ñ'ð ‡‚Ð
%Ó&ó&ó 'ñ&õð ‡‚Ð
&Ó'óó (ñð ‡‚Ð
$Ó%óDó &ñDð. ‡‚Ð	Óóó  ñð0 ‡‚Ð
Óóó ñð ‡‚Ð
Ó ó*ó !ñ*õ$
Fð ‡‚Ð
Óôó ñð> ‡‚Ñ
Ó ôó !ñð4 ‡‚Ñ
!Ó"ô)ó #ñ)ð × Ò �3Ô ð ‡‚ˆƒôó ñð ‡	‚	ˆ#‰{ ZÕ0°x�	Ô @ñ ‰zÒÝñ ØØØÙ*ò�Fñ ".‰4�Ô°4�DÙ*‰$ˆ{Ô
°�CÚ’™Ÿšœ©#¯*ª*¬,Ú!$¡T£‰‰~ÑÚ #¡C£‰‰}Ñà�G‡K‚KÒ-¡fÓ-ð# r�   