Ë
    çObj},  ã                  óœ   — U d dl mZ d dlmZ d dlmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ erd dlmZ  ed	d
h«      Zded<    G d„ d«      Zy)é    )Úannotations)Ú	Generator)ÚTYPE_CHECKINGÚAnyÚFinalé   )ÚREJECTEDÚ	UNHANDLED)ÚEventObserver)ÚTelegramEventObserver)ÚTelegramObjectÚupdateÚerrorzFinal[frozenset[str]]ÚINTERNAL_UPDATE_TYPESc                  óØ   — e Zd ZdZddœdd„Zdd„Zdd„Zddd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd	„Z	e
dd
„«       Ze
dd„«       Ze
dd„«       Zej                  dd„«       Zdd„Zdd„Zdd„Zdd„Zy)ÚRouteraZ  
    Router can route update, and it nested update types like messages, callback query,
    polls and all other event types.

    Event handlers can be registered in observer by two ways:

    - By observer method - :obj:`router.<event_type>.register(handler, <filters, ...>)`
    - By decorator - :obj:`@router.<event_type>(<filters, ...>)`
    N)Únamec               ó  — |xs t        t        | «      «      | _        d| _        g | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _	        t        | d¬«      | _
        t        | d¬«      | _        t        | d	¬«      | _        t        | d
¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      x| _         | _!        tE        «       | _#        tE        «       | _$        i d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                   “d| j"                  “d| j$                  “d| j&                  “d| j(                  “d| j*                  “d| j,                  “| j.                  | j0                  | j2                  | j4                  | j6                  | j8                  | j:                  | j<                  | j>                  | j@                  dœ
¥| _%        y)zP
        :param name: Optional router name, can be useful for debugging
        NÚmessage)ÚrouterÚ
event_nameÚedited_messageÚchannel_postÚedited_channel_postÚinline_queryÚchosen_inline_resultÚcallback_queryÚshipping_queryÚpre_checkout_queryÚpollÚpoll_answerÚmy_chat_memberÚchat_memberÚchat_join_requestÚmessage_reactionÚmessage_reaction_countÚ
chat_boostÚremoved_chat_boostÚdeleted_business_messagesÚbusiness_connectionÚedited_business_messageÚbusiness_messageÚpurchased_paid_mediaÚmanaged_botÚguest_messageÚsubscriptionr   )
r(   r)   r*   r+   r,   r-   r.   r/   r0   r   )&ÚhexÚidr   Ú_parent_routerÚsub_routersr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Úerrorsr   r   ÚstartupÚshutdownÚ	observers)Úselfr   s     úL/var/www/html/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.pyÚ__init__zRouter.__init__   s¢  € ð
 Ò)œC¤ 4£›MˆŒ	à-1ˆÔØ)+ˆÔô -°DÀYÔOˆŒÜ3¸4ÐL\Ô]ˆÔÜ1¸È.ÔYˆÔÜ#8ØØ,ô$
ˆÔ ô 2¸È.ÔYˆÔÜ$9ØØ-ô%
ˆÔ!ô 4¸4ÐL\Ô]ˆÔÜ3¸4ÐL\Ô]ˆÔÜ"7ØØ+ô#
ˆÔô *°À&ÔIˆŒ	Ü0¸ÈÔWˆÔÜ3¸4ÐL\Ô]ˆÔÜ0¸ÈÔWˆÔÜ!6¸dÐObÔ!cˆÔÜ 5¸TÐN`Ô aˆÔÜ&;ØØ/ô'
ˆÔ#ô 0°tÈÔUˆŒÜ"7ØØ+ô#
ˆÔô *?ØØ2ô*
ˆÔ&ô $9ØØ,ô$
ˆÔ ô (=ØØ0ô(
ˆÔ$ô !6¸TÐN`Ô aˆÔÜ$9ØØ-ô%
ˆÔ!ô 1¸ÈÔWˆÔÜ2¸$È?Ô[ˆÔÜ1¸È.ÔYˆÔä#8ÀÐQXÔ#YÐYˆŒ�d”jä$“ˆŒÜ%›ˆŒð<
Ø�t—|‘|ð<
à˜d×1Ñ1ð<
ð ˜D×-Ñ-ð<
ð " 4×#;Ñ#;ð	<
ð
 ˜D×-Ñ-ð<
ð # D×$=Ñ$=ð<
ð ˜d×1Ñ1ð<
ð ˜d×1Ñ1ð<
ð ! $×"9Ñ"9ð<
ð �D—I‘Ið<
ð ˜4×+Ñ+ð<
ð ˜d×1Ñ1ð<
ð ˜4×+Ñ+ð<
ð   ×!7Ñ!7ð<
ð  × 5Ñ 5ð<
ð  % d×&AÑ&Að!<
ð" ˜$Ÿ/™/ð#<
ð$ #'×"9Ñ"9Ø)-×)GÑ)GØ#'×#;Ñ#;Ø'+×'CÑ'CØ $× 5Ñ 5Ø$(×$=Ñ$=Ø×+Ñ+Ø!×/Ñ/Ø ×-Ñ-Ø—[‘[ò7<
ˆ�ó    c                óJ   — t        | «      j                  › d| j                  ›�S )Nú )ÚtypeÚ__name__r   ©r9   s    r:   Ú__str__zRouter.__str__   s"   € Ü�t“*×%Ñ%Ð& a¨¯	©	 }Ð5Ð5r<   c                ó   — d| › d�S )Nú<ú>© rA   s    r:   Ú__repr__zRouter.__repr__‚   s   € Ø�4�&˜ˆ{Ðr<   c                ó  — t        «       }|€
t        «       }h |£t        £}| j                  D ]G  }|j                  j	                  «       D ](  \  }}|j
                  sŒ||vsŒ|j                  |«       Œ* ŒI t        |«      S )zá
        Resolve registered event names

        Is useful for getting updates only for registered event types.

        :param skip_events: skip specified event names
        :return: sorted list of registered names
        )Úsetr   Ú
chain_tailr8   ÚitemsÚhandlersÚaddÚsorted)r9   Úskip_eventsÚhandlers_in_user   Úupdate_nameÚobservers         r:   Úresolve_used_update_typesz Router.resolve_used_update_types…   s‰   € ô %(£EˆØÐÜ›%ˆKØ<˜Ð<Ô&;Ð<ˆà—o‘oò 	5ˆFØ)/×)9Ñ)9×)?Ñ)?Ó)Aò 5Ñ%�˜XØ×$Ó$¨¸KÒ)GØ#×'Ñ'¨Õ4ñ5ð	5ô
 �oÓ&Ð&r<   c              ‹  óà   ‡ ‡‡K  — |j                  ‰ ¬«       ‰ j                  j                  ‰«      Šdˆˆ ˆfd„}‰r‰j                  |||¬«      ƒ d {  –—† S  ||fi |¤Žƒ d {  –—† S 7 Œ7 Œ­w)N)Úevent_routerc              ›  óL   •K  —  ‰j                   d‰‰| dœ|¤Žƒ d {  –—† S 7 Œ­w)N)rR   Úupdate_typeÚeventrF   )Ú_propagate_event)Útelegram_eventÚdatarR   r9   rW   s     €€€r:   Ú_wrappedz(Router.propagate_event.<locals>._wrappedž   s>   øè ø€ Ø.˜×.Ñ.ð Ø!Ø'Ø$ñð ñ	÷ ð ð ús   ƒ$�"ž$)rX   r[   )rZ   r   r[   r   Úreturnr   )r   r8   ÚgetÚwrap_outer_middleware)r9   rW   rX   Úkwargsr\   rR   s   ``   @r:   Úpropagate_eventzRouter.propagate_eventš   sl   úè ø€ Ø�‰ 4ˆÔ(Ø—>‘>×%Ñ% kÓ2ˆ÷	ñ Ø!×7Ñ7¸ÈÐTZÐ7Ó[×[Ð[Ù˜eÑ. vÑ.×.Ð.ð \øØ.ús$   …AA.ÁA*ÁA.Á%A,Á&A.Á,A.c              ‹  óp  K  — t         }|rj |j                  |fi |¤Žƒ d {  –—† \  }}|st         S |j                  |«        |j                  |fi |¤Žƒ d {  –—† }|t        u rt         S |t         ur|S | j
                  D ]*  } |j                  d||dœ|¤Žƒ d {  –—† }|t         usŒ) |S  |S 7 ŒŽ7 ŒY7 Œ­w)N)rW   rX   rF   )r
   Úcheck_root_filtersr   Útriggerr	   r4   ra   )	r9   rR   rW   rX   r`   ÚresponseÚresultr[   r   s	            r:   rY   zRouter._propagate_eventª   sÚ   è ø€ ô ˆÙð "= ×!<Ñ!<¸UÑ!MÀfÑ!M×M‰LˆF�DÙÜ Ð Ø�M‰M˜$Ôà-˜X×-Ñ-¨eÑ>°vÑ>×>ˆHØœ8Ñ#ä Ð ØœyÑ(Ø�à×&Ñ&ò 	ˆFØ3˜V×3Ñ3ÐcÀÐSXÑcÐ\bÑc×cˆHØœyÒ(Øàˆð	ð
 ˆð# Nøð
 ?øð dús:   ‚B6¡B0¢6B6ÁB2ÁAB6ÂB4ÂB6Â*B6Â2B6Â4B6c              #  ó<   K  — | }|r|–— |j                   }|rŒy y ­w©N)Úparent_router©r9   r   s     r:   Ú
chain_headzRouter.chain_headÉ   s#   è ø€ à $ˆÙØŠLØ×)Ñ)ˆFô ùs   ‚šc              #  ób   K  — | –— | j                   D ]  }|j                  E d {  –—†  Œ y 7 Œ­wrh   )r4   rJ   rj   s     r:   rJ   zRouter.chain_tailÐ   s2   è ø€ àŠ
Ø×&Ñ&ò 	)ˆFØ×(Ñ(×(Ñ(ñ	)Ø(ús   ‚#/¥-¦/c                ó   — | j                   S rh   )r3   rA   s    r:   ri   zRouter.parent_routerÖ   s   € à×"Ñ"Ð"r<   c                óh  — t        |t        «      s#dt        |«      j                  ›�}t	        |«      ‚| j
                  rd| j
                  ›�}t        |«      ‚| |k(  rd}t        |«      ‚|}|�!|| k(  rd}t        |«      ‚|j                  }|�Œ!|| _        |j                  j                  | «       y)a  
        Internal property setter of parent router fot this router.
        Do not use this method in own code.
        All routers should be included via `include_router` method.

        Self- and circular- referencing are not allowed here

        :param router:
        ú(router should be instance of Router not zRouter is already attached to z'Self-referencing routers is not allowedNz-Circular referencing of Router is not allowed)
Ú
isinstancer   r?   r@   Ú
ValueErrorr3   ÚRuntimeErrorri   r4   Úappend)r9   r   ÚmsgÚparents       r:   ri   zRouter.parent_routerÚ   sÀ   € ô ˜&¤&Ô)Ø<¼TÀ&»\×=RÑ=RÐ<UÐVˆCÜ˜S“/Ð!Ø×ÒØ2°4×3FÑ3FÐ2IÐJˆCÜ˜sÓ#Ð#Ø�6Š>Ø;ˆCÜ˜sÓ#Ð#à &ˆØÐ Ø˜Š~ØE�Ü" 3Ó'Ð'à×)Ñ)ˆFð Ñ ð %ˆÔØ×Ñ×!Ñ! $Õ'r<   c                óR   — |sd}t        |«      ‚|D ]  }| j                  |«       Œ y)zT
        Attach multiple routers.

        :param routers:
        :return:
        z$At least one router must be providedN)rq   Úinclude_router)r9   Úroutersrt   r   s       r:   Úinclude_routerszRouter.include_routersú   s3   € ñ Ø8ˆCÜ˜S“/Ð!Øò 	(ˆFØ×Ñ Õ'ñ	(r<   c                óz   — t        |t        «      s#dt        |«      j                  ›�}t	        |«      ‚| |_        |S )zQ
        Attach another router.

        :param router:
        :return:
        ro   )rp   r   r?   r@   rq   ri   )r9   r   rt   s      r:   rw   zRouter.include_router  s<   € ô ˜&¤&Ô)Ø<¼TÀ&»\×=RÑ=RÐ<UÐVˆCÜ˜S“/Ð!Ø#ˆÔØˆr<   c              �  óÖ   K  — |j                  | ¬«        | j                  j                  |i |¤Žƒ d{  –—†  | j                  D ]  } |j                  |i |¤Žƒ d{  –—†  Œ y7 Œ07 Œ	­w)zr
        Recursively call startup callbacks

        :param args:
        :param kwargs:
        :return:
        ©r   N)r   r6   rd   r4   Úemit_startup©r9   Úargsr`   r   s       r:   r}   zRouter.emit_startup  sn   è ø€ ð 	�‰˜TˆÔ"Ø"ˆd�l‰l×"Ñ" DÐ3¨FÑ3×3Ð3Ø×&Ñ&ò 	7ˆFØ%�&×%Ñ% tÐ6¨vÑ6×6Ñ6ñ	7ð 	4øà6úó!   ‚2A)´A%µ(A)ÁA'ÁA)Á'A)c              �  óÖ   K  — |j                  | ¬«        | j                  j                  |i |¤Žƒ d{  –—†  | j                  D ]  } |j                  |i |¤Žƒ d{  –—†  Œ y7 Œ07 Œ	­w)zˆ
        Recursively call shutdown callbacks to graceful shutdown

        :param args:
        :param kwargs:
        :return:
        r|   N)r   r7   rd   r4   Úemit_shutdownr~   s       r:   r‚   zRouter.emit_shutdown!  sn   è ø€ ð 	�‰˜TˆÔ"Ø#ˆd�m‰m×#Ñ# TÐ4¨VÑ4×4Ð4Ø×&Ñ&ò 	8ˆFØ&�&×&Ñ&¨Ð7°Ñ7×7Ñ7ñ	8ð 	5øà7úr€   )r   z
str | Noner]   ÚNone)r]   Ústrrh   )rO   zset[str] | Noner]   z	list[str])rW   r„   rX   r   r`   r   r]   r   )
rR   zTelegramEventObserver | NonerW   r„   rX   r   r`   r   r]   r   )r]   zGenerator[Router, None, None])r]   zRouter | None)r   r   r]   rƒ   )rx   r   r]   rƒ   )r   r   r]   r   )r   r   r`   r   r]   rƒ   )r@   Ú
__module__Ú__qualname__Ú__doc__r;   rB   rG   rS   ra   rY   Úpropertyrk   rJ   ri   Úsetterry   rw   r}   r‚   rF   r<   r:   r   r      sÆ   „ ñð .2õ b
óH6óô'ó*/ð à.ðð ðð ð	ð
 ðð 
óð> ò*ó ð*ð ò)ó ð)ð
 ò#ó ð#ð ×Ñò(ó ð(ó>(óó7ô8r<   r   N)Ú
__future__r   Úcollections.abcr   Útypingr   r   r   Úevent.basesr	   r
   Úevent.eventr   Úevent.telegramr   Úaiogram.typesr   Ú	frozensetr   Ú__annotations__r   rF   r<   r:   ú<module>r“      sB   ðÞ "å %ß ,Ñ ,ç ,Ý &Ý 1áÝ,á/8¸(ÀGÐ9LÓ/MÐ Ð,Ó M÷\8ò \8r<   