§
    ¦¨îiJî  ã                   óØ  — d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ  ej        e¦  «        Zd d
ededefd„Zd!d
ededefd„Z G d„ de¦  «        Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Z de fd„Z!d"d„Z"de ddfd„Z#dS )#zÜ
Gateway configuration management.

Handles loading and validating configuration for:
- Connected platforms (Telegram, Discord, WhatsApp)
- Home channels for each platform
- Session reset policies
- Delivery preferences
é    N)ÚPath)Ú	dataclassÚfield)ÚDictÚListÚOptionalÚAny)ÚEnum©Úget_hermes_home)Úis_truthy_valueTÚvalueÚdefaultÚreturnc                 ó¾   — | €|S t          | t          ¦  «        r4|                      ¦   «                              ¦   «         }|dv rdS |dv rdS |S t	          | |¬¦  «        S )zDCoerce bool-ish config values, preserving a caller-provided default.N)ÚtrueÚ1ÚyesÚonT)ÚfalseÚ0ÚnoÚoffF)r   )Ú
isinstanceÚstrÚstripÚlowerr   )r   r   Úlowereds      ú0/home/div/.hermes/hermes-agent/gateway/config.pyÚ_coerce_boolr       sq   € à€}ØˆÝ�%�ÑÔð Ø—+’+‘-”-×%Ò%Ñ'Ô'ˆØÐ0Ð0Ð0Ø�4ØÐ1Ð1Ð1Ø�5ØˆÝ˜5¨'Ð2Ñ2Ô2Ð2ó    Úpairc                 óˆ   — t          | t          ¦  «        r,|                      ¦   «                              ¦   «         }|dv r|S |S )z8Normalize unauthorized DM behavior to a supported value.>   r"   Úignore)r   r   r   r   )r   r   Ú
normalizeds      r   Ú#_normalize_unauthorized_dm_behaviorr&   '   sD   € å�%�ÑÔð Ø—[’[‘]”]×(Ò(Ñ*Ô*ˆ
ØÐ+Ð+Ð+ØÐØ€Nr!   c                   ób   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdS )ÚPlatformzSupported messaging platforms.ÚlocalÚtelegramÚdiscordÚwhatsappÚslackÚsignalÚ
mattermostÚmatrixÚhomeassistantÚemailÚsmsÚdingtalkÚ
api_serverÚwebhookÚfeishuÚwecomÚwecom_callbackÚweixinÚbluebubblesÚqqbotN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚLOCALÚTELEGRAMÚDISCORDÚWHATSAPPÚSLACKÚSIGNALÚ
MATTERMOSTÚMATRIXÚHOMEASSISTANTÚEMAILÚSMSÚDINGTALKÚ
API_SERVERÚWEBHOOKÚFEISHUÚWECOMÚWECOM_CALLBACKÚWEIXINÚBLUEBUBBLESÚQQBOT© r!   r   r(   r(   0   sx   € € € € € Ø(Ð(Ø€EØ€HØ€GØ€HØ€EØ€FØ€JØ€FØ#€MØ€EØ
€CØ€HØ€JØ€GØ€FØ€EØ%€NØ€FØ€KØ€E€E€Er!   r(   c                   ó~   — e Zd ZU dZeed<   eed<   eed<   deeef         fd„Z	e
deeef         dd fd„¦   «         Zd	S )
ÚHomeChannelz«
    Default destination for a platform.
    
    When a cron job specifies deliver="telegram" without a specific chat ID,
    messages are sent to this home channel.
    ÚplatformÚchat_idÚnamer   c                 ó6   — | j         j        | j        | j        dœS )N©rX   rY   rZ   )rX   r   rY   rZ   ©Úselfs    r   Úto_dictzHomeChannel.to_dictT   s#   € àœÔ+Ø”|Ø”Ið
ð 
ð 	
r!   Údatac                 ó’   —  | t          |d         ¦  «        t          |d         ¦  «        |                     dd¦  «        ¬¦  «        S )NrX   rY   rZ   ÚHomer\   )r(   r   Úget©Úclsr`   s     r   Ú	from_dictzHomeChannel.from_dict[   sK   € àˆsÝ˜d :Ô.Ñ/Ô/Ý˜˜YœÑ(Ô(Ø—’˜& &Ñ)Ô)ð
ñ 
ô 
ð 	
r!   N)r=   r>   r?   r@   r(   Ú__annotations__r   r   r	   r_   Úclassmethodrf   rU   r!   r   rW   rW   H   s™   € € € € € € ðð ð ÐÐÑØ€L€L�LØ
€I€I�Ið
˜˜c 3˜hœð 
ð 
ð 
ð 
ð ð
˜T # s (œ^ð 
°ð 
ð 
ð 
ñ „[ð
ð 
ð 
r!   rW   c                   ó¦   — e Zd ZU dZdZeed<   dZeed<   dZ	eed<   dZ
eed	<   d
Zeed<   deeef         fd„Zedeeef         dd fd„¦   «         ZdS )ÚSessionResetPolicya6  
    Controls when sessions reset (lose context).
    
    Modes:
    - "daily": Reset at a specific hour each day
    - "idle": Reset after N minutes of inactivity
    - "both": Whichever triggers first (daily boundary OR idle timeout)
    - "none": Never auto-reset (context managed only by compression)
    ÚbothÚmodeé   Úat_houré   Úidle_minutesTÚnotify©r5   r6   Únotify_exclude_platformsr   c                 ó^   — | j         | j        | j        | j        t	          | j        ¦  «        dœS )N©rl   rn   rp   rq   rs   )rl   rn   rp   rq   Úlistrs   r]   s    r   r_   zSessionResetPolicy.to_dictu   s4   € à”IØ”|Ø Ô-Ø”kÝ(,¨TÔ-JÑ(KÔ(Kð
ð 
ð 	
r!   r`   c           	      óJ  — |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        } | |�|nd|�|nd|�|ndt          |d	¦  «        |�t          |¦  «        nd
¬¦  «        S )Nrl   rn   rp   rq   rs   rk   rm   ro   Trr   ru   )rc   r    Útuple)re   r`   rl   rn   rp   rq   Úexcludes          r   rf   zSessionResetPolicy.from_dict~   s·   € ð �xŠx˜ÑÔˆØ—(’(˜9Ñ%Ô%ˆØ—x’x Ñ/Ô/ˆØ—’˜(Ñ#Ô#ˆØ—(’(Ð5Ñ6Ô6ˆØˆsØÐ)��¨vØ&Ð2�G�G¸Ø)5Ð)A˜˜ÀtÝ ¨Ñ-Ô-Ø7>Ð7J¥U¨7¡^¤^ ^ÐPið
ñ 
ô 
ð 	
r!   N)r=   r>   r?   r@   rl   r   rg   rn   Úintrp   rq   Úboolrs   rx   r   r	   r_   rh   rf   rU   r!   r   rj   rj   d   sÍ   € € € € € € ðð ð €Dˆ#ÐÐÑØ€GˆSÐÐÑØ€L�#ÐÐÑØ€FˆDÐÐÑØ&?Ð˜eÐ?Ð?Ñ?ð
˜˜c 3˜hœð 
ð 
ð 
ð 
ð ð
˜T # s (œ^ð 
Ð0Dð 
ð 
ð 
ñ „[ð
ð 
ð 
r!   rj   c                   óü   — e Zd ZU dZdZeed<   dZee	         ed<   dZ
ee	         ed<   dZee         ed<   dZe	ed	<    ee¬
¦  «        Zee	ef         ed<   dee	ef         fd„Zedee	ef         dd fd„¦   «         ZdS )ÚPlatformConfigz.Configuration for a single messaging platform.FÚenabledNÚtokenÚapi_keyÚhome_channelÚfirstÚreply_to_mode©Údefault_factoryÚextrar   c                 óº   — | j         | j        | j        dœ}| j        r
| j        |d<   | j        r
| j        |d<   | j        r| j                             ¦   «         |d<   |S )N)r~   r†   rƒ   r   r€   r�   )r~   r†   rƒ   r   r€   r�   r_   )r^   Úresults     r   r_   zPlatformConfig.to_dict    su   € à”|Ø”ZØ!Ô/ð
ð 
ˆð
 Œ:ð 	)Ø"œjˆF�7‰OØŒ<ð 	-Ø $¤ˆF�9ÑØÔð 	AØ%)Ô%6×%>Ò%>Ñ%@Ô%@ˆF�>Ñ"Øˆr!   r`   c                 óN  — d }d|v r t                                |d         ¦  «        } | t          |                     d¦  «        d¦  «        |                     d¦  «        |                     d¦  «        ||                     dd¦  «        |                     di ¦  «        ¬	¦  «        S )
Nr�   r~   Fr   r€   rƒ   r‚   r†   )r~   r   r€   r�   rƒ   r†   )rW   rf   r    rc   )re   r`   r�   s      r   rf   zPlatformConfig.from_dict®   sŸ   € àˆØ˜TÐ!Ð!Ý&×0Ò0°°nÔ1EÑFÔFˆLàˆsÝ  §¢¨)Ñ!4Ô!4°eÑ<Ô<Ø—(’(˜7Ñ#Ô#Ø—H’H˜YÑ'Ô'Ø%ØŸ(š( ?°GÑ<Ô<Ø—(’(˜7 BÑ'Ô'ð
ñ 
ô 
ð 	
r!   )r=   r>   r?   r@   r~   r{   rg   r   r   r   r€   r�   rW   rƒ   r   Údictr†   r   r	   r_   rh   rf   rU   r!   r   r}   r}   �   sü   € € € € € € à8Ð8Ø€GˆTÐÐÑØ€Eˆ8�CŒ=ÐÐÑØ!€GˆX�cŒ]Ð!Ð!Ñ!Ø*.€L�(˜;Ô'Ð.Ð.Ñ.ð !€M�3Ð Ð Ñ ð "˜E°$Ð7Ñ7Ô7€Eˆ4��S�Œ>Ð7Ð7Ñ7ð˜˜c 3˜hœð ð ð ð ð ð
˜T # s (œ^ð 
Ð0@ð 
ð 
ð 
ñ „[ð
ð 
ð 
r!   r}   c                   ó¦   — e Zd ZU dZdZeed<   dZeed<   dZ	e
ed<   dZeed	<   d
Zeed<   deeef         fd„Zedeeef         dd fd„¦   «         ZdS )ÚStreamingConfigzCConfiguration for real-time token streaming to messaging platforms.Fr~   ÚeditÚ	transportç      ð?Úedit_intervalé(   Úbuffer_thresholdõ    â–‰Úcursorr   c                 óD   — | j         | j        | j        | j        | j        dœS )N©r~   rŽ   r�   r’   r”   r–   r]   s    r   r_   zStreamingConfig.to_dictÇ   s,   € à”|ØœØ!Ô/Ø $Ô 5Ø”kð
ð 
ð 	
r!   r`   c                 ó6  — |s
 | ¦   «         S  | |                      dd¦  «        |                      dd¦  «        t          |                      dd¦  «        ¦  «        t          |                      dd¦  «        ¦  «        |                      d	d
¦  «        ¬¦  «        S )Nr~   FrŽ   r�   r�   r�   r’   r‘   r”   r“   r–   )rc   Úfloatrz   rd   s     r   rf   zStreamingConfig.from_dictÐ   s”   € àð 	Ø�3‘5”5ˆLØˆsØ—H’H˜Y¨Ñ.Ô.Ø—h’h˜{¨FÑ3Ô3Ý §¢¨¸#Ñ >Ô >Ñ?Ô?Ý  §¢Ð*<¸bÑ!AÔ!AÑBÔBØ—8’8˜H fÑ-Ô-ð
ñ 
ô 
ð 	
r!   N)r=   r>   r?   r@   r~   r{   rg   rŽ   r   r�   r˜   r’   rz   r”   r   r	   r_   rh   rf   rU   r!   r   rŒ   rŒ   ¾   sÇ   € € € € € € àMÐMØ€GˆTÐÐÑØ€IˆsÐÐÑØ€M�5ÐÐÑØÐ�cÐÐÑØ€FˆCÐÐÑð
˜˜c 3˜hœð 
ð 
ð 
ð 
ð ð	
˜T # s (œ^ð 	
Ð0Að 	
ð 	
ð 	
ñ „[ð	
ð 	
ð 	
r!   rŒ   c                   ó˜  — e Zd ZU dZ ee¬¦  «        Zeee	f         e
d<    ee¬¦  «        Zee
d<    ee¬¦  «        Zeeef         e
d<    ee¬¦  «        Zeeef         e
d<    ed„ ¬¦  «        Zee         e
d<    ee¬¦  «        Zeeef         e
d	<    ed
„ ¬¦  «        Zee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<    ee¬¦  «        Zee
d<   dZee
d<   dee         fd„Z dede!e"         fd„Z#	 	 d"de!e         de!e         defd„Z$deeef         fd„Z%e&deeef         dd fd „¦   «         Z'd#de!e         defd!„Z(dS )$ÚGatewayConfigzy
    Main gateway configuration.
    
    Manages all platform connections, session policies, and delivery settings.
    r„   Ú	platformsÚdefault_reset_policyÚreset_by_typeÚreset_by_platformc                  ó
   — ddgS )Nú/newú/resetrU   rU   r!   r   ú<lambda>zGatewayConfig.<lambda>í   s   € ¸vÀxÐ>P€ r!   Úreset_triggersÚquick_commandsc                  ó$   — t          ¦   «         dz  S )NÚsessionsr   rU   r!   r   r¢   zGatewayConfig.<lambda>ó   s   € µÑ7HÔ7HÈ:Ñ7U€ r!   Úsessions_dirTÚalways_log_localÚstt_enabledÚgroup_sessions_per_userFÚthread_sessions_per_userr"   Úunauthorized_dm_behaviorÚ	streamingéZ   Úsession_store_max_age_daysr   c                 óî  — g }| j                              ¦   «         D �]×\  }}|j        sŒ|t          j        k    rQ|j                             d¦  «        r6|j        s|j                             d¦  «        r|                     |¦  «         Œo|j        s|j	        r|                     |¦  «         Œ“|t          j
        k    r|                     |¦  «         Œ¹|t          j        k    r0|j                             d¦  «        r|                     |¦  «         Œù|t          j        k    r1|j                             d¦  «        r|                     |¦  «         �Œ:|t          j        k    r+t          j        d¦  «        r|                     |¦  «         �Œu|t          j        k    r|                     |¦  «         �Œœ|t          j        k    r|                     |¦  «         �ŒÃ|t          j        k    r1|j                             d¦  «        r|                     |¦  «         �Œ|t          j        k    r1|j                             d¦  «        r|                     |¦  «         �ŒE|t          j        k    rK|j                             d¦  «        s|j                             d	¦  «        r|                     |¦  «         �Œ |t          j        k    rK|j                             d
¦  «        r1|j                             d¦  «        r|                     |¦  «         �Œû|t          j        k    rK|j                             d¦  «        r1|j                             d¦  «        r|                     |¦  «         �ŒV|t          j        k    rq|j                             d¦  «        st          j        d¦  «        rC|j                             d¦  «        st          j        d¦  «        r|                     |¦  «         �ŒÙ|S )z9Return list of platforms that are enabled and configured.Ú
account_idr   Úhttp_urlÚaddressÚTWILIO_ACCOUNT_SIDÚapp_idÚbot_idÚcorp_idÚappsÚ
server_urlÚpasswordÚclient_secretÚ	client_idÚDINGTALK_CLIENT_IDÚDINGTALK_CLIENT_SECRET)r›   Úitemsr~   r(   rR   r†   rc   r   Úappendr€   rD   rF   rJ   rK   ÚosÚgetenvrM   rN   rO   rP   rQ   rS   rT   rL   )r^   Ú	connectedrX   Úconfigs       r   Úget_connected_platformsz%GatewayConfig.get_connected_platforms  sÁ  € àˆ	Ø $¤× 4Ò 4Ñ 6Ô 6ð 4	+ñ 4	+ÑˆH�fØ”>ð Øà�8œ?Ò*Ð*Ø”<×#Ò# LÑ1Ô1ð /°v´|ð /ÀvÄ|×GWÒGWÐX_ÑG`ÔG`ð /Ø×$Ò$ XÑ.Ô.Ð.ØàŒ|ð ++˜vœ~ð ++Ø× Ò  Ñ*Ô*Ð*Ð*à�XÔ.Ò.Ð.Ø× Ò  Ñ*Ô*Ð*Ð*à�Xœ_Ò,Ð,°´×1AÒ1AÀ*Ñ1MÔ1MÐ,Ø× Ò  Ñ*Ô*Ð*Ð*à�Xœ^Ò+Ð+°´×0@Ò0@ÀÑ0KÔ0KÐ+Ø× Ò  Ñ*Ô*Ð*Ñ*à�Xœ\Ò)Ð)­b¬iÐ8LÑ.MÔ.MÐ)Ø× Ò  Ñ*Ô*Ð*Ñ*à�XÔ0Ò0Ð0Ø× Ò  Ñ*Ô*Ð*Ñ*à�XÔ-Ò-Ð-Ø× Ò  Ñ*Ô*Ð*Ñ*à�Xœ_Ò,Ð,°´×1AÒ1AÀ(Ñ1KÔ1KÐ,Ø× Ò  Ñ*Ô*Ð*Ñ*à�Xœ^Ò+Ð+°´×0@Ò0@ÀÑ0JÔ0JÐ+Ø× Ò  Ñ*Ô*Ð*Ñ*à�XÔ4Ò4Ð4Ø”× Ò  Ñ+Ô+ð 5Ø/5¬|×/?Ò/?ÀÑ/GÔ/Gð 5ð × Ò  Ñ*Ô*Ð*Ñ*à�XÔ1Ò1Ð1°f´l×6FÒ6FÀ|Ñ6TÔ6TÐ1ÐY_ÔYe×YiÒYiÐjtÑYuÔYuÐ1Ø× Ò  Ñ*Ô*Ð*Ñ*à�Xœ^Ò+Ð+°´×0@Ò0@ÀÑ0JÔ0JÐ+ÈvÌ|×O_ÒO_Ð`oÑOpÔOpÐ+Ø× Ò  Ñ*Ô*Ð*Ñ*à�XÔ.Ò.Ð.Ø”× Ò  Ñ-Ô-ð /Ý13´Ð;OÑ1PÔ1Pð /ð ”× Ò  Ñ1Ô1ð /õ 68´YÐ?WÑ5XÔ5Xð /ð
 × Ò  Ñ*Ô*Ð*ùàÐr!   rX   c                 óL   — | j                              |¦  «        }|r|j        S dS )z$Get the home channel for a platform.N)r›   rc   r�   )r^   rX   rÄ   s      r   Úget_home_channelzGatewayConfig.get_home_channelG  s-   € à”×#Ò# HÑ-Ô-ˆØð 	'ØÔ&Ð&Øˆtr!   NÚsession_typec                 óp   — |r|| j         v r| j         |         S |r|| j        v r| j        |         S | j        S )zˆ
        Get the appropriate reset policy for a session.
        
        Priority: platform override > type override > default
        )rž   r�   rœ   )r^   rX   rÈ   s      r   Úget_reset_policyzGatewayConfig.get_reset_policyN  sU   € ð ð 	4˜ DÔ$:Ð:Ð:ØÔ)¨(Ô3Ð3ð ð 	4˜L¨DÔ,>Ð>Ð>ØÔ% lÔ3Ð3àÔ(Ð(r!   c                 óº  — d„ | j                              ¦   «         D ¦   «         | j                             ¦   «         d„ | j                             ¦   «         D ¦   «         d„ | j                             ¦   «         D ¦   «         | j        | j        t          | j	        ¦  «        | j
        | j        | j        | j        | j        | j                             ¦   «         | j        dœS )Nc                 óH   — i | ]\  }}|j         |                     ¦   «         “Œ S rU   ©r   r_   )Ú.0ÚpÚcs      r   ú
<dictcomp>z)GatewayConfig.to_dict.<locals>.<dictcomp>d  s5   € ð ð ð Ù)-¨¨A�”˜Ÿš™œðð ð r!   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS rU   )r_   ©rÎ   ÚkÚvs      r   rÑ   z)GatewayConfig.to_dict.<locals>.<dictcomp>h  s3   € ð ð ð Ù#' 1 a��1—9’9‘;”;ðð ð r!   c                 óH   — i | ]\  }}|j         |                     ¦   «         “Œ S rU   rÍ   )rÎ   rÏ   rÕ   s      r   rÑ   z)GatewayConfig.to_dict.<locals>.<dictcomp>k  s5   € ð "ð "ð "Ù)-¨¨A�”˜Ÿš™œð"ð "ð "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¯   r]   s    r   r_   zGatewayConfig.to_dictb  sö   € ðð Ø15´×1EÒ1EÑ1GÔ1Gðñ ô ð %)Ô$=×$EÒ$EÑ$GÔ$Gðð Ø+/Ô+=×+CÒ+CÑ+EÔ+Eðñ ô ð"ð "Ø15Ô1G×1MÒ1MÑ1OÔ1Oð"ñ "ô "ð #Ô1Ø"Ô1Ý Ô 1Ñ2Ô2Ø $Ô 5ØÔ+Ø'+Ô'CØ(,Ô(EØ(,Ô(EØœ×/Ò/Ñ1Ô1Ø*.Ô*Ið)
ð 
ð 	
r!   r`   c                 ó¨  — i }|                      di ¦  «                             ¦   «         D ]B\  }}	 t          |¦  «        }t                               |¦  «        ||<   Œ3# t
          $ r Y Œ?w xY wi }|                      di ¦  «                             ¦   «         D ]"\  }}t                               |¦  «        ||<   Œ#i }	|                      di ¦  «                             ¦   «         D ]B\  }}	 t          |¦  «        }t                               |¦  «        |	|<   Œ3# t
          $ r Y Œ?w xY wt          ¦   «         }
d|v r t                               |d         ¦  «        }
t          ¦   «         dz  }d|v rt          |d         ¦  «        }|                      di ¦  «        }t          |t          ¦  «        si }|                      d¦  «        }|€St          |                      d	¦  «        t          ¦  «        r)|                      d	i ¦  «                              d
¦  «        nd }|                      d¦  «        }|                      d¦  «        }t          |                      d¦  «        d¦  «        }	 t          |                      dd¦  «        ¦  «        }|dk     rd}n# t          t
          f$ r d}Y nw xY w | ||
||	|                      dddg¦  «        ||t          |                      d¦  «        d¦  «        t          |d¦  «        t          |d¦  «        t          |d¦  «        |t                               |                      di ¦  «        ¦  «        |¬¦  «        S )Nr›   r�   rž   rœ   r¦   r§   r¤   r©   Ústtr~   rª   r«   r¬   r"   r¯   r®   r   r£   r    r¡   r¨   TFr­   r×   )rc   r¿   r(   r}   rf   Ú
ValueErrorrj   r   r   r   rŠ   r&   rz   Ú	TypeErrorr    rŒ   )re   r`   r›   Úplatform_nameÚplatform_datarX   r�   Ú	type_nameÚpolicy_datarž   Údefault_policyr§   r¤   r©   rª   r«   r¬   r¯   s                     r   rf   zGatewayConfig.from_dictz  s�  € àˆ	Ø,0¯HªH°[À"Ñ,EÔ,E×,KÒ,KÑ,MÔ,Mð 	ð 	Ñ(ˆM˜=ðÝ# MÑ2Ô2�Ý&4×&>Ò&>¸}Ñ&MÔ&M�	˜(Ñ#Ð#øÝð ð ð Ø�ðøøøð ˆØ&*§h¢h¨ÀÑ&CÔ&C×&IÒ&IÑ&KÔ&Kð 	Qð 	QÑ"ˆI�{Ý'9×'CÒ'CÀKÑ'PÔ'PˆM˜)Ñ$Ð$àÐØ*.¯(ª(Ð3FÈÑ*KÔ*K×*QÒ*QÑ*SÔ*Sð 	ð 	Ñ&ˆM˜;ðÝ# MÑ2Ô2�Ý.@×.JÒ.JÈ;Ñ.WÔ.WÐ! (Ñ+Ð+øÝð ð ð Ø�ðøøøõ ,Ñ-Ô-ˆØ! TÐ)Ð)Ý/×9Ò9¸$Ð?UÔ:VÑWÔWˆNå&Ñ(Ô(¨:Ñ5ˆØ˜TÐ!Ð!Ý  ^Ô 4Ñ5Ô5ˆLàŸšÐ"2°BÑ7Ô7ˆÝ˜.­$Ñ/Ô/ð 	 ØˆNà—h’h˜}Ñ-Ô-ˆØÐÝ@JÈ4Ï8Ê8ÐTYÉ?Ì?Õ\`Ñ@aÔ@aÐk˜$Ÿ(š( 5¨"Ñ-Ô-×1Ò1°)Ñ<Ô<Ð<ÐgkˆKà"&§(¢(Ð+DÑ"EÔ"EÐØ#'§8¢8Ð,FÑ#GÔ#GÐ Ý#FØ�HŠHÐ/Ñ0Ô0Øñ$
ô $
Ð ð
	,Ý),¨T¯XªXÐ6RÐTVÑ-WÔ-WÑ)XÔ)XÐ&Ø)¨AÒ-Ð-Ø-.Ð*øøÝ�:Ð&ð 	,ð 	,ð 	,Ø)+Ð&Ð&Ð&ð	,øøøð ˆsØØ!/Ø'Ø/ØŸ8š8Ð$4°v¸xÐ6HÑIÔIØ)Ø%Ý)¨$¯(ª(Ð3EÑ*FÔ*FÈÑMÔMÝ$ [°$Ñ7Ô7Ý$0Ð1HÈ$Ñ$OÔ$OÝ%1Ð2JÈEÑ%RÔ%RØ%=Ý%×/Ò/°·²¸ÀbÑ0IÔ0IÑJÔJØ'Að
ñ 
ô 
ð 	
s5   ±,AÁ
A+Á*A+Ã+,DÄ
D%Ä$D%É)+J ÊJ+Ê*J+c                 ó¸   — |rR| j                              |¦  «        }|r6d|j        v r-t          |j                             d¦  «        | j        ¦  «        S | j        S )z=Return the effective unauthorized-DM behavior for a platform.r¬   )r›   rc   r†   r&   r¬   )r^   rX   Úplatform_cfgs      r   Úget_unauthorized_dm_behaviorz*GatewayConfig.get_unauthorized_dm_behavior¿  sm   € àð 	Øœ>×-Ò-¨hÑ7Ô7ˆLØð Ð :¸lÔ>PÐ PÐ PÝ:Ø Ô&×*Ò*Ð+EÑFÔFØÔ1ñô ð ð Ô,Ð,r!   )NN©N))r=   r>   r?   r@   r   rŠ   r›   r   r(   r}   rg   rj   rœ   r�   r   rž   r£   r   r¤   r	   r§   r   r¨   r{   r©   rª   r«   r¬   rŒ   r­   r¯   rz   rÅ   r   rW   rÇ   rÊ   r_   rh   rf   rã   rU   r!   r   rš   rš   Ý   sÖ  € € € € € € ðð ð 16°ÀdÐ0KÑ0KÔ0K€Iˆt�H˜nÐ,Ô-ÐKÐKÑKð 05¨uÐEWÐ/XÑ/XÔ/XÐÐ,ÐXÐXÑXØ38°5ÈÐ3NÑ3NÔ3N€M�4˜Ð/Ð/Ô0ÐNÐNÑNØ<A¸EÐRVÐ<WÑ<WÔ<WÐ�t˜HÐ&8Ð8Ô9ÐWÐWÑWð !& Ð6PÐ6PÐ QÑ QÔ Q€N�D˜”IÐQÐQÑQð &+ U¸4Ð%@Ñ%@Ô%@€N�D˜˜c˜”NÐ@Ð@Ñ@ð ˜Ð/UÐ/UÐVÑVÔV€L�$ÐVÐVÑVð "Ð�dÐ!Ð!Ñ!ð €K�ÐÐÑð %)Ð˜TÐ(Ð(Ñ(Ø%*Ð˜dÐ*Ð*Ñ*ð %+Ð˜cÐ*Ð*Ñ*ð "' °Ð!GÑ!GÔ!G€IˆÐGÐGÑGð ')Ð Ð(Ð(Ñ(ð9¨¨h¬ð 9ð 9ð 9ð 9ðv¨ð °h¸{Ô6Kð ð ð ð ð (,Ø&*ð)ð )à˜8Ô$ð)ð ˜s”mð)ð 
ð	)ð )ð )ð )ð(
˜˜c 3˜hœð 
ð 
ð 
ð 
ð0 ðB
˜T # s (œ^ð B
°ð B
ð B
ð B
ñ „[ðB
ðH	-ð 	-°X¸hÔ5Gð 	-ÐSVð 	-ð 	-ð 	-ð 	-ð 	-ð 	-r!   rš   c                  óÚ(  — t          ¦   «         } i }| dz  }|                     ¦   «         r�	 t          |dd¬¦  «        5 }t          j        |¦  «        pi }ddd¦  «         n# 1 swxY w Y   t
                               d|¦  «         n3# t          $ r&}t
                               d||¦  «         Y d}~nd}~ww xY w	 ddl	}| d	z  }|                     ¦   «         �r#t          |d¬¦  «        5 }| 
                    |¦  «        pi }ddd¦  «         n# 1 swxY w Y   |                     d
¦  «        }|rt          |t          ¦  «        r||d<   |                     d¦  «        }	|	�Ht          |	t          ¦  «        r|	|d<   n-t
                               dt          |	¦  «        j        ¦  «         |                     d¦  «        }
t          |
t          ¦  «        r|
|d<   d|v r|d         |d<   d|v r|d         |d<   |                     d¦  «        }t          |t          ¦  «        r||d<   d|v r|d         |d<   d|v r|d         |d<   d|v r&t!          |                     d¦  «        d¦  «        |d<   |                     d¦  «        }|                     di ¦  «        }t          |t          ¦  «        si }||d<   t          |t          ¦  «        r¢|                     ¦   «         D ]ˆ\  }}t          |t          ¦  «        sŒ|                     |i ¦  «        }t          |t          ¦  «        si }i |                     di ¦  «        ¥|                     di ¦  «        ¥}i |¥|¥}|r||d<   |||<   Œ‰||d<   t&          D �]ù}|t&          j        k    rŒ|                     |j        ¦  «        }t          |t          ¦  «        sŒDi }d|v r:t!          |                     d¦  «        |                     dd¦  «        ¦  «        |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   d |v r|d          |d <   |t&          j        k    rd!|v r|d!         |d!<   d"|v rD|d"         }t          |t          ¦  «        r"d#„ |                     ¦   «         D ¦   «         |d"<   n||d"<   |s�Œv|                     |j        i ¦  «        }t          |t          ¦  «        si }|||j        <   |                     di ¦  «        }t          |t          ¦  «        si }||d<   |                     |¦  «         �Œû|                     d$i ¦  «        }t          |t          ¦  «        �r«d|v rHt1          j        d%¦  «        s4t5          |d         ¦  «                             ¦   «         t0          j        d%<   d&|v rHt1          j        d'¦  «        s4t5          |d&         ¦  «                             ¦   «         t0          j        d'<   d(|v rHt1          j        d)¦  «        s4t5          |d(         ¦  «                             ¦   «         t0          j        d)<   |                     d¦  «        }|�dt1          j        d*¦  «        sPt          |t:          ¦  «        rd+                     d,„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d*<   d-|v rHt1          j        d.¦  «        s4t5          |d-         ¦  «                             ¦   «         t0          j        d.<   |                     d/i ¦  «        }t          |t          ¦  «        �rNd|v rHt1          j        d0¦  «        s4t5          |d         ¦  «                             ¦   «         t0          j        d0<   |                     d¦  «        }|�dt1          j        d1¦  «        sPt          |t:          ¦  «        rd+                     d2„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d1<   d3|v rHt1          j        d4¦  «        s4t5          |d3         ¦  «                             ¦   «         t0          j        d4<   d-|v rHt1          j        d5¦  «        s4t5          |d-         ¦  «                             ¦   «         t0          j        d5<   |                     d6¦  «        }|�dt1          j        d7¦  «        sPt          |t:          ¦  «        rd+                     d8„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d7<   |                     d9¦  «        }|�dt1          j        d:¦  «        sPt          |t:          ¦  «        rd+                     d;„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d:<   |                     d<¦  «        }|�dt1          j        d=¦  «        sPt          |t:          ¦  «        rd+                     d>„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d=<   |                     d?¦  «        }t          |t          ¦  «        rTd@D ]Q\  } }!| |v rHt1          j        |!¦  «        s4t5          ||          ¦  «                             ¦   «         t0          j        |!<   ŒR|                     dAi ¦  «        }"t          |"t          ¦  «        �rd|"v rHt1          j        dB¦  «        s4t5          |"d         ¦  «                             ¦   «         t0          j        dB<   d|"v r;t1          j        dC¦  «        s't          j        |"d         ¦  «        t0          j        dC<   |"                     dD¦  «        }|�dt1          j        dE¦  «        sPt          |t:          ¦  «        rd+                     dF„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        dE<   |"                     dG¦  «        }#|#�dt1          j        dH¦  «        sPt          |#t:          ¦  «        rd+                     dI„ |#D ¦   «         ¦  «        }#t5          |#¦  «        t0          j        dH<   d-|"v rHt1          j        dJ¦  «        s4t5          |"d-         ¦  «                             ¦   «         t0          j        dJ<   dK|"v rHt1          j        dL¦  «        s4t5          |"dK         ¦  «                              ¦   «         t0          j        dL<   dM|"v rlt1          j        dN¦  «        sX|"dM         }$t          |$t:          ¦  «        rd+                     dO„ |$D ¦   «         ¦  «        }$t5          |$¦  «        t0          j        dN<   dP|"v r�|                     t&          j!        j        i ¦  «        }t          |t          ¦  «        si }||t&          j!        j        <   |                     di ¦  «        }t          |t          ¦  «        si }||d<   |"dP         |dP<   |                     dQi ¦  «        }%t          |%t          ¦  «        �r”d|%v rHt1          j        dR¦  «        s4t5          |%d         ¦  «                             ¦   «         t0          j        dR<   d|%v r;t1          j        dS¦  «        s't          j        |%d         ¦  «        t0          j        dS<   |%                     dD¦  «        }|�dt1          j        dT¦  «        sPt          |t:          ¦  «        rd+                     dU„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        dT<   d|%v rHt1          j        dV¦  «        s4t5          |%d         ¦  «                             ¦   «         t0          j        dV<   |%                     d¦  «        }&|&�dt1          j        dW¦  «        sPt          |&t:          ¦  «        rd+                     dX„ |&D ¦   «         ¦  «        }&t5          |&¦  «        t0          j        dW<   d|%v rHt1          j        dY¦  «        s4t5          |%d         ¦  «                             ¦   «         t0          j        dY<   |%                     d ¦  «        }'|'�dt1          j        dZ¦  «        sPt          |'t:          ¦  «        rd+                     d[„ |'D ¦   «         ¦  «        }'t5          |'¦  «        t0          j        dZ<   |                     d\i ¦  «        }(t          |(t          ¦  «        �r�d|(v rHt1          j        d]¦  «        s4t5          |(d         ¦  «                             ¦   «         t0          j        d]<   d|(v r;t1          j        d^¦  «        s't          j        |(d         ¦  «        t0          j        d^<   |(                     dD¦  «        }|�dt1          j        d_¦  «        sPt          |t:          ¦  «        rd+                     d`„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        d_<   |(                     da¦  «        })|)�dt1          j        db¦  «        sPt          |)t:          ¦  «        rd+                     dc„ |)D ¦   «         ¦  «        })t5          |)¦  «        t0          j        db<   |                     ddi ¦  «        }*t          |*t          ¦  «        �r_d|*v rHt1          j        de¦  «        s4t5          |*d         ¦  «                             ¦   «         t0          j        de<   |*                     df¦  «        }|�dt1          j        dg¦  «        sPt          |t:          ¦  «        rd+                     dh„ |D ¦   «         ¦  «        }t5          |¦  «        t0          j        dg<   d3|*v rHt1          j        di¦  «        s4t5          |*d3         ¦  «                             ¦   «         t0          j        di<   dj|*v rHt1          j        dk¦  «        s4t5          |*dj         ¦  «                             ¦   «         t0          j        dk<   n6# t          $ r)}t
                               dl| d	z  |¦  «         Y d}~nd}~ww xY wtD           #                    |¦  «        }+tI          |+¦  «         tK          |+¦  «         |+S )mu  
    Load gateway configuration from multiple sources.

    Priority (highest to lowest):
    1. Environment variables
    2. ~/.hermes/config.yaml (primary user-facing config)
    3. ~/.hermes/gateway.json (legacy â€” provides defaults under config.yaml)
    4. Built-in defaults
    zgateway.jsonÚrzutf-8)ÚencodingNu<   Loaded legacy %s â€” consider moving settings to config.yamlzFailed to load %s: %sr   zconfig.yamlÚsession_resetrœ   r¤   zIIgnoring invalid quick_commands in config.yaml (expected mapping, got %s)rÙ   rª   r«   r­   r£   r¨   r¬   r"   r›   r†   Úreply_prefixÚreply_in_threadÚrequire_mentionÚfree_response_channelsÚmention_patternsÚ	dm_policyÚ
allow_fromÚgroup_policyÚgroup_allow_fromÚchannel_skill_bindingsÚchannel_promptsc                 ó4   — i | ]\  }}t          |¦  «        |“ŒS rU   ©r   rÓ   s      r   rÑ   z'load_gateway_config.<locals>.<dictcomp>R  s$   € Ð5dÐ5dÐ5dÁDÀAÀqµc¸!±f´f¸aÐ5dÐ5dÐ5dr!   r-   ÚSLACK_REQUIRE_MENTIONÚstrict_mentionÚSLACK_STRICT_MENTIONÚ
allow_botsÚSLACK_ALLOW_BOTSÚSLACK_FREE_RESPONSE_CHANNELSú,c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   ©rÎ   rÕ   s     r   ú	<genexpr>z&load_gateway_config.<locals>.<genexpr>m  ó(   è è € Ð&;Ð&;°!¥s¨1¡v¤vÐ&;Ð&;Ð&;Ð&;Ð&;Ð&;r!   Ú	reactionsÚSLACK_REACTIONSr+   ÚDISCORD_REQUIRE_MENTIONÚDISCORD_FREE_RESPONSE_CHANNELSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>z  r   r!   Úauto_threadÚDISCORD_AUTO_THREADÚDISCORD_REACTIONSÚignored_channelsÚDISCORD_IGNORED_CHANNELSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>„  ó(   è è € Ð%9Ð%9°¥c¨!¡f¤fÐ%9Ð%9Ð%9Ð%9Ð%9Ð%9r!   Úallowed_channelsÚDISCORD_ALLOWED_CHANNELSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>Š  r  r!   Úno_thread_channelsÚDISCORD_NO_THREAD_CHANNELSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>�  r   r!   Úallow_mentions))ÚeveryoneÚDISCORD_ALLOW_MENTION_EVERYONE)ÚrolesÚDISCORD_ALLOW_MENTION_ROLES)ÚusersÚDISCORD_ALLOW_MENTION_USERS)Úreplied_userÚ"DISCORD_ALLOW_MENTION_REPLIED_USERr*   ÚTELEGRAM_REQUIRE_MENTIONÚTELEGRAM_MENTION_PATTERNSÚfree_response_chatsÚTELEGRAM_FREE_RESPONSE_CHATSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>«  r   r!   Úignored_threadsÚTELEGRAM_IGNORED_THREADSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>°  s(   è è € Ð2SÐ2S¸aµ3°q±6´6Ð2SÐ2SÐ2SÐ2SÐ2SÐ2Sr!   ÚTELEGRAM_REACTIONSÚ	proxy_urlÚTELEGRAM_PROXYÚgroup_allowed_chatsÚTELEGRAM_GROUP_ALLOWED_USERSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>¹  r   r!   Údisable_link_previewsr,   ÚWHATSAPP_REQUIRE_MENTIONÚWHATSAPP_MENTION_PATTERNSÚWHATSAPP_FREE_RESPONSE_CHATSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>Ï  r   r!   ÚWHATSAPP_DM_POLICYÚWHATSAPP_ALLOWED_USERSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>Ö  r  r!   ÚWHATSAPP_GROUP_POLICYÚWHATSAPP_GROUP_ALLOWED_USERSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>Ý  r   r!   r4   ÚDINGTALK_REQUIRE_MENTIONÚDINGTALK_MENTION_PATTERNSÚDINGTALK_FREE_RESPONSE_CHATSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>ê  r   r!   Úallowed_usersÚDINGTALK_ALLOWED_USERSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>ï  s(   è è € Ð*CÐ*C°a­3¨q©6¬6Ð*CÐ*CÐ*CÐ*CÐ*CÐ*Cr!   r0   ÚMATRIX_REQUIRE_MENTIONÚfree_response_roomsÚMATRIX_FREE_RESPONSE_ROOMSc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rä   rõ   rþ   s     r   rÿ   z&load_gateway_config.<locals>.<genexpr>ú  r   r!   ÚMATRIX_AUTO_THREADÚdm_mention_threadsÚMATRIX_DM_MENTION_THREADSus   Failed to process config.yaml â€” falling back to .env / gateway.json values. Check %s for syntax errors. Error: %s)&r   ÚexistsÚopenÚjsonÚloadÚloggerÚinfoÚ	ExceptionÚwarningÚyamlÚ	safe_loadrc   r   rŠ   Útyper=   r&   Ú
setdefaultr¿   r(   rA   r   rC   ÚupdaterÁ   rÂ   r   r   Úenvironrv   ÚjoinÚdumpsr   rB   rš   rf   Ú_apply_env_overridesÚ_validate_gateway_config),Ú_homeÚgw_dataÚgateway_json_pathÚfÚerK  Úconfig_yaml_pathÚyaml_cfgÚsrÚqcÚstt_cfgÚstreaming_cfgÚyaml_platformsÚplatforms_dataÚ	plat_nameÚ
plat_blockÚexistingÚmerged_extraÚmergedÚplatrâ   Úbridgedró   Ú	plat_datar†   Ú	slack_cfgÚfrcÚdiscord_cfgÚicÚacÚntcÚallow_mentions_cfgÚyaml_keyÚenv_keyÚtelegram_cfgr!  ÚgacÚwhatsapp_cfgÚafÚgafÚdingtalk_cfgÚallowedÚ
matrix_cfgrÄ   s,                                               r   Úload_gateway_configr{  Ë  s¯  € õ ÑÔ€EØ€Gð  Ñ.ÐØ×ÒÑ!Ô!ð 	Jð	JÝÐ'¨°wÐ?Ñ?Ô?ð -À1Ýœ) A™,œ,Ð,¨"�ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -å�KŠKØNØ!ñô ð ð øõ ð 	Jð 	Jð 	JÝ�NŠNÐ2Ð4EÀqÑIÔIÐIÐIÐIÐIÐIÐIøøøøð	Jøøøð`
ØˆˆˆØ  =Ñ0ÐØ×"Ò"Ñ$Ô$ñ U	lÝÐ&°Ð9Ñ9Ô9ð 3¸QØŸ>š>¨!Ñ,Ô,Ð2°�ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð
 —’˜oÑ.Ô.ˆBØð 5•j ¥TÑ*Ô*ð 5Ø24�Ð.Ñ/à—’Ð.Ñ/Ô/ˆBØˆ~Ý˜b¥$Ñ'Ô'ð Ø02�GÐ,Ñ-Ð-å—N’Nð5å˜R™œÔ)ñô ð ð —l’l 5Ñ)Ô)ˆGÝ˜'¥4Ñ(Ô(ð )Ø!(�˜‘à(¨HÐ4Ð4Ø5=Ð>WÔ5X�Ð1Ñ2à)¨XÐ5Ð5Ø6>Ð?YÔ6Z�Ð2Ñ3à$ŸLšL¨Ñ5Ô5ˆMÝ˜-­Ñ.Ô.ð 5Ø'4�˜Ñ$à 8Ð+Ð+Ø,4Ð5EÔ,F�Ð(Ñ)à! XÐ-Ð-Ø.6Ð7IÔ.J�Ð*Ñ+à)¨XÐ5Ð5Ý6YØ—L’LÐ!;Ñ<Ô<Øñ7ô 7�Ð2Ñ3ð &Ÿ\š\¨+Ñ6Ô6ˆNØ$×/Ò/°¸RÑ@Ô@ˆNÝ˜n­dÑ3Ô3ð 6Ø!#�Ø'5�˜Ñ$Ý˜.­$Ñ/Ô/ð 6Ø-;×-AÒ-AÑ-CÔ-Cð 7ð 7Ñ)�I˜zÝ% jµ$Ñ7Ô7ð !Ø Ø-×1Ò1°)¸RÑ@Ô@�HÝ% hµÑ5Ô5ð &Ø#%˜à#_ h§l¢l°7¸BÑ&?Ô&?Ð#_À:Ç>Â>ÐRYÐ[]ÑC^ÔC^Ð#_�LØ7 Ð7¨JÐ7�FØ#ð 7Ø*6˜˜w™Ø06�N 9Ñ-Ð-Ø'5�˜Ñ$Ý ð 1&ñ 1&�Ø�8œ>Ò)Ð)ØØ'Ÿ|š|¨D¬JÑ7Ô7�Ý! ,µÑ5Ô5ð Øà�Ø-°Ð=Ð=Ý:]Ø$×(Ò(Ð)CÑDÔDØŸšÐ$>ÀÑGÔGñ;ô ;�GÐ6Ñ7ð " \Ð1Ð1Ø.:¸>Ô.J�G˜NÑ+Ø$¨Ð4Ð4Ø1=Ð>OÔ1P�GÐ-Ñ.Ø$¨Ð4Ð4Ø1=Ð>OÔ1P�GÐ-Ñ.Ø+¨|Ð;Ð;Ø8DÐE]Ô8^�GÐ4Ñ5Ø%¨Ð5Ð5Ø2>Ð?QÔ2R�GÐ.Ñ/Ø ,Ð.Ð.Ø+7¸Ô+D�G˜KÑ(Ø <Ð/Ð/Ø,8¸Ô,F�G˜LÑ)Ø! \Ð1Ð1Ø.:¸>Ô.J�G˜NÑ+Ø%¨Ð5Ð5Ø2>Ð?QÔ2R�GÐ.Ñ/Ø�8Ô+Ò+Ð+Ð0HÈLÐ0XÐ0XØ8DÐE]Ô8^�GÐ4Ñ5Ø$¨Ð4Ð4Ø&2Ð3DÔ&E�OÝ! /µ4Ñ8Ô8ð EØ5dÐ5dÈO×LaÒLaÑLcÔLcÐ5dÑ5dÔ5d˜Ð 1Ñ2Ð2à5D˜Ð 1Ñ2Øð ÙØ*×5Ò5°d´jÀ"ÑEÔE�	Ý! )­TÑ2Ô2ð ;Ø "�IØ1:�N 4¤:Ñ.Ø!×,Ò,¨W°bÑ9Ô9�Ý! %­Ñ.Ô.ð /Ø�EØ).�I˜gÑ&Ø—’˜WÑ%Ô%Ð%Ñ%ð !Ÿš W¨bÑ1Ô1ˆIÝ˜)¥TÑ*Ô*ñ XØ$¨	Ð1Ð1½"¼)ÐD[Ñ:\Ô:\Ð1Ý:=¸iÐHYÔ>ZÑ:[Ô:[×:aÒ:aÑ:cÔ:c•B”JÐ6Ñ7Ø# yÐ0Ð0½¼ÐCYÑ9ZÔ9ZÐ0Ý9<¸YÐGWÔ=XÑ9YÔ9Y×9_Ò9_Ñ9aÔ9a•B”JÐ5Ñ6Ø 9Ð,Ð,µR´YÐ?QÑ5RÔ5RÐ,Ý58¸À<Ô9PÑ5QÔ5Q×5WÒ5WÑ5YÔ5Y•B”JÐ1Ñ2Ø—m’mÐ$<Ñ=Ô=�Ø�?­2¬9Ð5SÑ+TÔ+T�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>Ø )Ð+Ð+µB´IÐ>OÑ4PÔ4PÐ+Ý47¸	À+Ô8NÑ4OÔ4O×4UÒ4UÑ4WÔ4W•B”JÐ0Ñ1ð #Ÿ,š, y°"Ñ5Ô5ˆKÝ˜+¥tÑ,Ô,ñ +\Ø$¨Ð3Ð3½B¼IÐF_Ñ<`Ô<`Ð3Ý<?ÀÐL]Ô@^Ñ<_Ô<_×<eÒ<eÑ<gÔ<g•B”JÐ8Ñ9Ø!—o’oÐ&>Ñ?Ô?�Ø�?­2¬9Ð5UÑ+VÔ+V�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝCFÀsÁ8Ä8•B”JÐ?Ñ@Ø  KÐ/Ð/½¼	ÐBWÑ8XÔ8XÐ/Ý8;¸KÈÔ<VÑ8WÔ8W×8]Ò8]Ñ8_Ô8_•B”JÐ4Ñ5Ø +Ð-Ð-µb´iÐ@SÑ6TÔ6TÐ-Ý69¸+ÀkÔ:RÑ6SÔ6S×6YÒ6YÑ6[Ô6[•B”JÐ2Ñ3à —_’_Ð%7Ñ8Ô8�Ø�>­"¬)Ð4NÑ*OÔ*O�>Ý! "¥dÑ+Ô+ð :Ø ŸXšXÐ%9Ð%9°bÐ%9Ñ%9Ô%9Ñ9Ô9˜Ý=@À¹W¼W•B”JÐ9Ñ:à —_’_Ð%7Ñ8Ô8�Ø�>­"¬)Ð4NÑ*OÔ*O�>Ý! "¥dÑ+Ô+ð :Ø ŸXšXÐ%9Ð%9°bÐ%9Ñ%9Ô%9Ñ9Ô9˜Ý=@À¹W¼W•B”JÐ9Ñ:à!—o’oÐ&:Ñ;Ô;�Ø�?­2¬9Ð5QÑ+RÔ+R�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜Ý?BÀ3¹x¼x•B”JÐ;Ñ<ð
 &1§_¢_Ð5EÑ%FÔ%FÐ"ÝÐ0µ$Ñ7Ô7ð \ð.ð \ð \Ñ)˜ 'ð $Ð'9Ð9Ð9Å"Ä)ÈGÑBTÔBTÐ9Ý25Ð6HÈÔ6RÑ2SÔ2S×2YÒ2YÑ2[Ô2[�BœJ wÑ/øð $Ÿ<š<¨
°BÑ7Ô7ˆLÝ˜,­Ñ-Ô-ñ ![Ø$¨Ð4Ð4½R¼YÐGaÑ=bÔ=bÐ4Ý=@ÀÐN_ÔA`Ñ=aÔ=a×=gÒ=gÑ=iÔ=i•B”JÐ9Ñ:Ø%¨Ð5Ð5½b¼iÐHcÑ>dÔ>dÐ5Ý>B¼jÈÐVhÔIiÑ>jÔ>j•B”JÐ:Ñ;Ø"×&Ò&Ð'<Ñ=Ô=�Ø�?­2¬9Ð5SÑ+TÔ+T�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>Ø".×"2Ò"2Ð3DÑ"EÔ"E�Ø"Ð.µr´yÐA[Ñ7\Ô7\Ð.Ý! /µ4Ñ8Ô8ð TØ*-¯(ª(Ð2SÐ2SÀ?Ð2SÑ2SÔ2SÑ*SÔ*S˜Ý=@ÀÑ=QÔ=Q•B”JÐ9Ñ:Ø ,Ð.Ð.µr´yÐAUÑ7VÔ7VÐ.Ý7:¸<ÈÔ;TÑ7UÔ7U×7[Ò7[Ñ7]Ô7]•B”JÐ3Ñ4Ø ,Ð.Ð.µr´yÐAQÑ7RÔ7RÐ.Ý36°|ÀKÔ7PÑ3QÔ3Q×3WÒ3WÑ3YÔ3Y•B”JÐ/Ñ0Ø(¨LÐ8Ð8ÅÄÐKiÑAjÔAjÐ8Ø&Ð'<Ô=�CÝ! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>Ø*¨lÐ:Ð:Ø .× 9Ò 9½(Ô:KÔ:QÐSUÑ VÔ V�IÝ% iµÑ6Ô6ð LØ$&˜	ØBK˜¥xÔ'8Ô'>Ñ?Ø%×0Ò0°¸"Ñ=Ô=�EÝ% e­TÑ2Ô2ð 3Ø "˜Ø-2˜	 'Ñ*Ø5AÐBYÔ5Z�EÐ1Ñ2à#Ÿ<š<¨
°BÑ7Ô7ˆLÝ˜,­Ñ-Ô-ñ JØ$¨Ð4Ð4½R¼YÐGaÑ=bÔ=bÐ4Ý=@ÀÐN_ÔA`Ñ=aÔ=a×=gÒ=gÑ=iÔ=i•B”JÐ9Ñ:Ø%¨Ð5Ð5½b¼iÐHcÑ>dÔ>dÐ5Ý>B¼jÈÐVhÔIiÑ>jÔ>j•B”JÐ:Ñ;Ø"×&Ò&Ð'<Ñ=Ô=�Ø�?­2¬9Ð5SÑ+TÔ+T�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>Ø ,Ð.Ð.µr´yÐAUÑ7VÔ7VÐ.Ý7:¸<ÈÔ;TÑ7UÔ7U×7[Ò7[Ñ7]Ô7]•B”JÐ3Ñ4Ø!×%Ò% lÑ3Ô3�Ø�>­"¬)Ð4LÑ*MÔ*M�>Ý! "¥dÑ+Ô+ð :Ø ŸXšXÐ%9Ð%9°bÐ%9Ñ%9Ô%9Ñ9Ô9˜Ý;>¸r¹7¼7•B”JÐ7Ñ8Ø! \Ð1Ð1½"¼)ÐD[Ñ:\Ô:\Ð1Ý:=¸lÈ>Ô>ZÑ:[Ô:[×:aÒ:aÑ:cÔ:c•B”JÐ6Ñ7Ø"×&Ò&Ð'9Ñ:Ô:�Ø�?­2¬9Ð5SÑ+TÔ+T�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>ð $Ÿ<š<¨
°BÑ7Ô7ˆLÝ˜,­Ñ-Ô-ñ HØ$¨Ð4Ð4½R¼YÐGaÑ=bÔ=bÐ4Ý=@ÀÐN_ÔA`Ñ=aÔ=a×=gÒ=gÑ=iÔ=i•B”JÐ9Ñ:Ø%¨Ð5Ð5½b¼iÐHcÑ>dÔ>dÐ5Ý>B¼jÈÐVhÔIiÑ>jÔ>j•B”JÐ:Ñ;Ø"×&Ò&Ð'<Ñ=Ô=�Ø�?­2¬9Ð5SÑ+TÔ+T�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜ÝADÀSÁÄ•B”JÐ=Ñ>Ø&×*Ò*¨?Ñ;Ô;�ØÐ&­r¬yÐ9QÑ/RÔ/RÐ&Ý! '­4Ñ0Ô0ð DØ"%§(¢(Ð*CÐ*C¸7Ð*CÑ*CÔ*CÑ"CÔ"C˜Ý;>¸w¹<¼<•B”JÐ7Ñ8ð "Ÿš h°Ñ3Ô3ˆJÝ˜*¥dÑ+Ô+ñ lØ$¨
Ð2Ð2½2¼9ÐE]Ñ;^Ô;^Ð2Ý;>¸zÐJ[Ô?\Ñ;]Ô;]×;cÒ;cÑ;eÔ;e•B”JÐ7Ñ8Ø —n’nÐ%:Ñ;Ô;�Ø�?­2¬9Ð5QÑ+RÔ+R�?Ý! #¥tÑ,Ô,ð <Ø!ŸhšhÐ&;Ð&;°sÐ&;Ñ&;Ô&;Ñ;Ô;˜Ý?BÀ3¹x¼x•B”JÐ;Ñ<Ø  JÐ.Ð.µr´yÐAUÑ7VÔ7VÐ.Ý7:¸:ÀmÔ;TÑ7UÔ7U×7[Ò7[Ñ7]Ô7]•B”JÐ3Ñ4Ø'¨:Ð5Ð5½b¼iÐHcÑ>dÔ>dÐ5Ý>AÀ*ÐMaÔBbÑ>cÔ>c×>iÒ>iÑ>kÔ>k•B”JÐ:Ñ;øøåð 
ð 
ð 
Ý�Šð4à�MÑ!Øñ		
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøõ ×$Ò$ WÑ-Ô-€Fõ ˜Ñ Ô Ð õ ˜VÑ$Ô$Ð$à€Ms‚   «B ½A ÁB Á A$Á$B Á'A$Á(B Â
B7ÂB2Â2B7Â;/AO= Ã*DÄAO= ÄDÄAO= ÄDÄAK&AO= ÁO=
AP0ÁPAP+ÁP+AP0rÄ   c                 ó(  — | j         }d|j        cxk    rdk    s)n t                               d|j        ¦  «         d|_        |j        �|j        dk    r't                               d|j        ¦  «         d|_        t
          j        dt
          j        d	t
          j        d
t
          j	        dt
          j
        dt
          j        di}| j                             ¦   «         D ]e\  }}|j        sŒ|                     |¦  «        }|rA|j        �:|j                             ¦   «         s!t                               d|j        |¦  «         Œf	 ddlm} n# t*          $ r d}Y nw xY w|�¯| j                             ¦   «         D ]—\  }}|j        sŒ|                     |¦  «        }|sŒ%|j        }|rg|                     ¦   «         rS ||d¬¦  «        sFt                               d|j        ||                     ¦   «         dd…         dz   ¦  «         d|_        Œ–dS dS )z¿Validate and sanitize a loaded GatewayConfig in place.

    Called by ``load_gateway_config()`` after all config sources are merged.
    Extracted as a separate function for testability.
    r   é   z3Invalid at_hour=%s (must be 0-23). Using default 4.rm   Nz?Invalid idle_minutes=%s (must be positive). Using default 1440.ro   ÚTELEGRAM_BOT_TOKENÚDISCORD_BOT_TOKENÚSLACK_BOT_TOKENÚMATTERMOST_TOKENÚMATRIX_ACCESS_TOKENÚWEIXIN_TOKENzG%s is enabled but %s is empty. The adapter will likely fail to connect.)Úhas_usable_secret)Ú
min_lengthz�%s is enabled but %s is set to a placeholder value ('%s'). Set a real bot token before starting the gateway. The adapter will NOT be started.é   z...F)rœ   rn   rG  rJ  rp   r(   rB   rC   rE   rG   rH   rR   r›   r¿   r~   rc   r   r   r   Úhermes_cli.authr„  ÚImportErrorÚerror)rÄ   ÚpolicyÚ_token_env_namesrX   ÚpconfigÚenv_namer„  r   s           r   rT  rT    s~  € ð Ô(€Fà�”Ð%Ð%Ò%Ð% 2Ò%Ð%Ð%Ð%Ý�ŠØAÀ6Ä>ñ	
ô 	
ð 	
ð ˆŒàÔÐ" fÔ&9¸QÒ&>Ð&>Ý�ŠØMØÔñ	
ô 	
ð 	
ð #ˆÔõ
 	ÔÐ/ÝÔÐ-ÝŒÐ)ÝÔÐ/ÝŒÐ.ÝŒ˜ðÐð $Ô-×3Ò3Ñ5Ô5ð 	ð 	Ñˆ�'ØŒð 	ØØ#×'Ò'¨Ñ1Ô1ˆØð 	˜œÐ1¸'¼-×:MÒ:MÑ:OÔ:OÐ1Ý�NŠNð;à” ñô ð øð!Ø5Ð5Ð5Ð5Ð5Ð5Ð5øÝð !ð !ð !Ø ÐÐÐð!øøøð Ð$Ø!'Ô!1×!7Ò!7Ñ!9Ô!9ð 	(ð 	(ÑˆH�gØ”?ð ØØ'×+Ò+¨HÑ5Ô5ˆHØð ØØ”MˆEØð (˜Ÿš™œð (Ð/@Ð/@ÀÐSTÐ/UÑ/UÔ/Uð (Ý—’ð7ð ”N H¨e¯kªk©m¬m¸B¸Q¸BÔ.?À%Ñ.Gñ	ô ð ð #(�”øð %Ð$ð	(ð 	(s   ÅE ÅEÅEc                 ó®6  — t          j        d¦  «        }|rkt          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        || j        t          j                 _        t          j        dd¦  «                             ¦   «         }|dv rOt          j        | j        vr t          ¦   «         | j        t          j        <   || j        t          j                 _	        t          j        dd¦  «        }|rot          j        | j        vr t          ¦   «         | j        t          j        <   d„ | 
                    d¦  «        D ¦   «         | j        t          j                 j        d	<   t          j        d
¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        dd¦  «        ¬¦  «        | j        t          j                 _        t          j        d¦  «        }|rkt          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        || j        t          j                 _        t          j        d¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        dd¦  «        ¬¦  «        | j        t          j                 _        t          j        dd¦  «                             ¦   «         }|dv rOt          j        | j        vr t          ¦   «         | j        t          j        <   || j        t          j                 _	        t          j        dd¦  «                             ¦   «         dv }|rOt          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        t          j        d¦  «        }	|	rkt          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        |	| j        t          j                 _        t          j        d¦  «        }
|
r\t          j        | j        v rIt          t          j        |
t          j        dd¦  «        ¬¦  «        | j        t          j                 _        t          j        d¦  «        }t          j        d¦  «        }|r«|r©t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        | j        t          j                 j                             ||t          j        dd¦  «                             ¦   «         dv dœ¦  «         t          j        d¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        dd¦  «        ¬¦  «        | j        t          j                 _        t          j        d¦  «        }|r»t          j        dd¦  «        }|st&                               d ¦  «         t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        || j        t          j                 _        || j        t          j                 j        d!<   t          j        d"¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        d#d¦  «        ¬¦  «        | j        t          j                 _        t          j        d$¦  «        }t          j        d%d¦  «        }|st          j        d&¦  «        �r’|st&                               d'¦  «         t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        |r|| j        t          j                 _        || j        t          j                 j        d(<   t          j        d)d¦  «        }|r|| j        t          j                 j        d*<   t          j        d&d¦  «        }|r|| j        t          j                 j        d+<   t          j        d,d¦  «                             ¦   «         dv }|| j        t          j                 j        d-<   t          j        d.d¦  «        }|r|| j        t          j                 j        d/<   t          j        d0¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        d1d¦  «        ¬¦  «        | j        t          j                 _        t          j        d2¦  «        }|r t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        || j        t          j                 _        t          j        d3¦  «        }|r|| j        t          j                 j        d!<   t          j        d4¦  «        }t          j        d5¦  «        }t          j        d6¦  «        }t          j        d7¦  «        }t1          ||||g¦  «        r‚t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        | j        t          j                 j                             |||d8œ¦  «         t          j        d9¦  «        }|r\t          j        | j        v rIt          t          j        |t          j        d:d¦  «        ¬¦  «        | j        t          j                 _        t          j        d;¦  «        }|r~t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        t          j        d<d¦  «        | j        t          j                 _        t          j        d=¦  «        } | r\t          j        | j        v rIt          t          j        | t          j        d>d¦  «        ¬¦  «        | j        t          j                 _        t          j        d?d¦  «                             ¦   «         dv }!t          j        d@d¦  «        }"t          j        dAd¦  «        }#t          j        dB¦  «        }$t          j        dC¦  «        }%|!s|"�rIt          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        |"r|"| j        t          j                 j        dD<   |#r@dE„ |# 
                    d¦  «        D ¦   «         }&|&r|&| j        t          j                 j        dF<   |$r>	 t;          |$¦  «        | j        t          j                 j        dG<   n# t<          $ r Y nw xY w|%r|%| j        t          j                 j        dH<   t          j        dId¦  «        }'|'r|'| j        t          j                 j        dJ<   t          j        dKd¦  «                             ¦   «         dv }(t          j        dL¦  «        })t          j        dMd¦  «        }*|(r°t          j        | j        vr t          ¦   «         | j        t          j        <   d| j        t          j                 _        |)r>	 t;          |)¦  «        | j        t          j                 j        dG<   n# t<          $ r Y nw xY w|*r|*| j        t          j                 j        dN<   t          j        dO¦  «        }+t          j        dP¦  «        },|+râ|,ràt          j         | j        vr t          ¦   «         | j        t          j         <   d| j        t          j                  _        | j        t          j                  j                             |+|,dQœ¦  «         t          j        dR¦  «        }-|-rIt          t          j         |-t          j        dSd¦  «        ¬¦  «        | j        t          j                  _        t          j        dT¦  «        }.t          j        dU¦  «        }/|.�rw|/�rtt          j!        | j        vr t          ¦   «         | j        t          j!        <   d| j        t          j!                 _        | j        t          j!                 j                             |.|/t          j        dVdW¦  «        t          j        dXdY¦  «        dZœ¦  «         t          j        d[d¦  «        }0|0r|0| j        t          j!                 j        d\<   t          j        d]d¦  «        }1|1r|1| j        t          j!                 j        d^<   t          j        d_¦  «        }2|2rIt          t          j!        |2t          j        d`d¦  «        ¬¦  «        | j        t          j!                 _        t          j        da¦  «        }3t          j        db¦  «        }4|3�r|4�rt          j"        | j        vr t          ¦   «         | j        t          j"        <   d| j        t          j"                 _        | j        t          j"                 j                             |3|4dcœ¦  «         t          j        ddd¦  «        }5|5r|5| j        t          j"                 j        de<   t          j        df¦  «        }6|6rIt          t          j"        |6t          j        dgd¦  «        ¬¦  «        | j        t          j"                 _        t          j        dh¦  «        }7t          j        di¦  «        }8|7rô|8ròt          j#        | j        vr t          ¦   «         | j        t          j#        <   d| j        t          j#                 _        | j        t          j#                 j                             |7|8t          j        djd¦  «        t          j        dkd¦  «        t          j        dld¦  «        t          j        dmdn¦  «        t;          t          j        dodp¦  «        ¦  «        dqœ¦  «         t          j        dr¦  «        }9t          j        ds¦  «        }:|9s|:�rŽt          j$        | j        vr t          ¦   «         | j        t          j$        <   d| j        t          j$                 _        |9r|9| j        t          j$                 _        | j        t          j$                 j        };|:r|:|;dt<   t          j        dud¦  «         %                    ¦   «         }<|<r|< &                    dv¦  «        |;dw<   t          j        dxd¦  «         %                    ¦   «         }=|=r|= &                    dv¦  «        |;dy<   t          j        dzd¦  «         %                    ¦   «                              ¦   «         }>|>r|>|;d{<   t          j        d|d¦  «         %                    ¦   «                              ¦   «         }?|?r|?|;d}<   t          j        d~d¦  «         %                    ¦   «         }@|@r|@|;d<   t          j        d€d¦  «         %                    ¦   «         }A|Ar|A|;d�<   t          j        d‚d¦  «         %                    ¦   «         }B|Br|B|;dƒ<   t          j        d„d¦  «         %                    ¦   «         }C|CrIt          t          j$        |Ct          j        d…d¦  «        ¬¦  «        | j        t          j$                 _        t          j        d†¦  «        }Dt          j        d‡¦  «        }E|D�r|E�rt          j'        | j        vr t          ¦   «         | j        t          j'        <   d| j        t          j'                 _        | j        t          j'                 j                             |D &                    dv¦  «        |Et          j        dˆd‰¦  «        t;          t          j        dŠdp¦  «        ¦  «        t          j        d‹dŒ¦  «        t          j        d�d¦  «                             ¦   «         dv dŽœ¦  «         t          j        d�¦  «        }F|Fr\t          j'        | j        v rIt          t          j'        |Ft          j        d�d¦  «        ¬¦  «        | j        t          j'                 _        t          j        d‘¦  «        }Gt          j        d’¦  «        }H|Gs|H�r¸t          j(        | j        vr t          ¦   «         | j        t          j(        <   d| j        t          j(                 _        | j        t          j(                 j        };|Gr|G|;d“<   |Hr|H|;d”<   t          j        d•d¦  «         %                    ¦   «         }I|Ir|I|;d<   t          j        d–d¦  «         %                    ¦   «         }J|Jr|J|;d�<   t          j        d—d¦  «         %                    ¦   «         }Kd˜}L|KsYt          j        d™d¦  «         %                    ¦   «         }M|Mr0|M}Kdš}LtS          j*        tV          ¦  «                             d›¦  «         |Kr]t          t          j(        |Kt          j        d˜¦  «        pt          j        |Ld¦  «        ¬¦  «        | j        t          j(                 _        t          j        dœ¦  «        }N|Nr+	 t;          |N¦  «        | j,        _-        n# t<          $ r Y nw xY wt          j        d�¦  «        }O|Or-	 t;          |O¦  «        | j,        _.        džS # t<          $ r Y džS w xY wdžS )Ÿz/Apply environment variable overrides to config.r~  TÚTELEGRAM_REPLY_TO_MODEÚ )r   r‚   ÚallÚTELEGRAM_FALLBACK_IPSc                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rU   ©r   )rÎ   Úips     r   ú
<listcomp>z(_apply_env_overrides.<locals>.<listcomp>o  sD   € ð E
ð E
ð E
ØÀRÇXÂXÁZÄZðE
Ø�HŠH‰JŒJðE
ð E
ð E
r!   rü   Úfallback_ipsÚTELEGRAM_HOME_CHANNELÚTELEGRAM_HOME_CHANNEL_NAMErb   r\   r  ÚDISCORD_HOME_CHANNELÚDISCORD_HOME_CHANNEL_NAMEÚDISCORD_REPLY_TO_MODEÚWHATSAPP_ENABLED)r   r   r   r€  ÚSLACK_HOME_CHANNELÚSLACK_HOME_CHANNEL_NAMEÚSIGNAL_HTTP_URLÚSIGNAL_ACCOUNTÚSIGNAL_IGNORE_STORIESr   )r²   ÚaccountÚignore_storiesÚSIGNAL_HOME_CHANNELÚSIGNAL_HOME_CHANNEL_NAMEr�  ÚMATTERMOST_URLz2MATTERMOST_TOKEN set but MATTERMOST_URL is missingÚurlÚMATTERMOST_HOME_CHANNELÚMATTERMOST_HOME_CHANNEL_NAMEr‚  ÚMATRIX_HOMESERVERÚMATRIX_PASSWORDzHMATRIX_ACCESS_TOKEN/MATRIX_PASSWORD set but MATRIX_HOMESERVER is missingÚ
homeserverÚMATRIX_USER_IDÚuser_idrº   ÚMATRIX_ENCRYPTIONÚ
encryptionÚMATRIX_DEVICE_IDÚ	device_idÚMATRIX_HOME_ROOMÚMATRIX_HOME_ROOM_NAMEÚ
HASS_TOKENÚHASS_URLÚEMAIL_ADDRESSÚEMAIL_PASSWORDÚEMAIL_IMAP_HOSTÚEMAIL_SMTP_HOST)r³   Ú	imap_hostÚ	smtp_hostÚEMAIL_HOME_ADDRESSÚEMAIL_HOME_ADDRESS_NAMEr´   ÚTWILIO_AUTH_TOKENÚSMS_HOME_CHANNELÚSMS_HOME_CHANNEL_NAMEÚAPI_SERVER_ENABLEDÚAPI_SERVER_KEYÚAPI_SERVER_CORS_ORIGINSÚAPI_SERVER_PORTÚAPI_SERVER_HOSTÚkeyc                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rU   r”  )rÎ   Úorigins     r   r–  z(_apply_env_overrides.<locals>.<listcomp>+  s2   € ÐiÐiÐi¨&ÐZ`×ZfÒZfÑZhÔZhÐi�v—|’|‘~”~ÐiÐiÐir!   Úcors_originsÚportÚhostÚAPI_SERVER_MODEL_NAMEÚ
model_nameÚWEBHOOK_ENABLEDÚWEBHOOK_PORTÚWEBHOOK_SECRETÚsecretr½   r¾   )r¼   r»   ÚDINGTALK_HOME_CHANNELÚDINGTALK_HOME_CHANNEL_NAMEÚFEISHU_APP_IDÚFEISHU_APP_SECRETÚFEISHU_DOMAINr7   ÚFEISHU_CONNECTION_MODEÚ	websocket)rµ   Ú
app_secretÚdomainÚconnection_modeÚFEISHU_ENCRYPT_KEYÚencrypt_keyÚFEISHU_VERIFICATION_TOKENÚverification_tokenÚFEISHU_HOME_CHANNELÚFEISHU_HOME_CHANNEL_NAMEÚWECOM_BOT_IDÚWECOM_SECRET)r¶   rÓ  ÚWECOM_WEBSOCKET_URLÚwebsocket_urlÚWECOM_HOME_CHANNELÚWECOM_HOME_CHANNEL_NAMEÚWECOM_CALLBACK_CORP_IDÚWECOM_CALLBACK_CORP_SECRETÚWECOM_CALLBACK_AGENT_IDÚWECOM_CALLBACK_TOKENÚWECOM_CALLBACK_ENCODING_AES_KEYÚWECOM_CALLBACK_HOSTz0.0.0.0ÚWECOM_CALLBACK_PORTÚ8645)r·   Úcorp_secretÚagent_idr   Úencoding_aes_keyrÍ  rÌ  rƒ  ÚWEIXIN_ACCOUNT_IDr±   ÚWEIXIN_BASE_URLú/Úbase_urlÚWEIXIN_CDN_BASE_URLÚcdn_base_urlÚWEIXIN_DM_POLICYrî   ÚWEIXIN_GROUP_POLICYrð   ÚWEIXIN_ALLOWED_USERSrï   ÚWEIXIN_GROUP_ALLOWED_USERSrñ   ÚWEIXIN_SPLIT_MULTILINE_MESSAGESÚsplit_multiline_messagesÚWEIXIN_HOME_CHANNELÚWEIXIN_HOME_CHANNEL_NAMEÚBLUEBUBBLES_SERVER_URLÚBLUEBUBBLES_PASSWORDÚBLUEBUBBLES_WEBHOOK_HOSTz	127.0.0.1ÚBLUEBUBBLES_WEBHOOK_PORTÚBLUEBUBBLES_WEBHOOK_PATHz/bluebubbles-webhookÚBLUEBUBBLES_SEND_READ_RECEIPTS)r¹   rº   Úwebhook_hostÚwebhook_portÚwebhook_pathÚsend_read_receiptsÚBLUEBUBBLES_HOME_CHANNELÚBLUEBUBBLES_HOME_CHANNEL_NAMEÚ	QQ_APP_IDÚQQ_CLIENT_SECRETrµ   r»   ÚQQ_ALLOWED_USERSÚQQ_GROUP_ALLOWED_USERSÚQQBOT_HOME_CHANNELÚQQBOT_HOME_CHANNEL_NAMEÚQQ_HOME_CHANNELÚQQ_HOME_CHANNEL_NAMEzoQQ_HOME_CHANNEL is deprecated; rename to QQBOT_HOME_CHANNEL in your .env for consistency with the platform key.ÚSESSION_IDLE_MINUTESÚSESSION_RESET_HOURN)/rÁ   rÂ   r(   rB   r›   r}   r~   r   r   rƒ   Úsplitr†   rW   r�   rC   rD   rE   rF   rO  rG  rJ  rG   rH   rI   r‘  rJ   rK   r€   rM   rz   rÚ   rN   rL   rO   rP   rQ   rR   r   ÚrstriprS   rT   ÚloggingÚ	getLoggerr=   rœ   rp   rn   )PrÄ   Útelegram_tokenÚtelegram_reply_modeÚtelegram_fallback_ipsÚtelegram_homeÚdiscord_tokenÚdiscord_homeÚdiscord_reply_modeÚwhatsapp_enabledÚslack_tokenÚ
slack_homeÚ
signal_urlÚsignal_accountÚsignal_homeÚmattermost_tokenÚmattermost_urlÚmattermost_homeÚmatrix_tokenÚmatrix_homeserverÚmatrix_userÚmatrix_passwordÚmatrix_e2eeÚmatrix_device_idÚmatrix_homeÚ
hass_tokenÚhass_urlÚ
email_addrÚ	email_pwdÚ
email_imapÚ
email_smtpÚ
email_homeÚ
twilio_sidÚsms_homeÚapi_server_enabledÚapi_server_keyÚapi_server_cors_originsÚapi_server_portÚapi_server_hostÚoriginsÚapi_server_model_nameÚwebhook_enabledr
  Úwebhook_secretÚdingtalk_client_idÚdingtalk_client_secretÚdingtalk_homeÚfeishu_app_idÚfeishu_app_secretÚfeishu_encrypt_keyÚfeishu_verification_tokenÚfeishu_homeÚwecom_bot_idÚwecom_secretÚwecom_ws_urlÚ
wecom_homeÚwecom_callback_corp_idÚwecom_callback_corp_secretÚweixin_tokenÚweixin_account_idr†   Úweixin_base_urlÚweixin_cdn_base_urlÚweixin_dm_policyÚweixin_group_policyÚweixin_allowed_usersÚweixin_group_allowed_usersÚweixin_split_multilineÚweixin_homeÚbluebubbles_server_urlÚbluebubbles_passwordÚbluebubbles_homeÚ	qq_app_idÚqq_client_secretÚqq_allowed_usersÚqq_group_allowedÚqq_homeÚqq_home_name_envÚlegacy_homerp   Ú
reset_hoursP                                                                                   r   rS  rS  Y  sÊ  € õ ”YÐ3Ñ4Ô4€NØð CÝÔ FÔ$4Ð4Ð4Ý2@Ñ2BÔ2BˆFÔ�XÔ.Ñ/Ø6:ˆÔ�Ô*Ô+Ô3Ø4BˆÔ�Ô*Ô+Ô1õ œ)Ð$<¸bÑAÔA×GÒGÑIÔIÐØÐ5Ð5Ð5ÝÔ FÔ$4Ð4Ð4Ý2@Ñ2BÔ2BˆFÔ�XÔ.Ñ/Ø<OˆÔ�Ô*Ô+Ô9åœIÐ&=¸rÑBÔBÐØð 
ÝÔ FÔ$4Ð4Ð4Ý2@Ñ2BÔ2BˆFÔ�XÔ.Ñ/ðE
ð E
Ø!6×!<Ò!<¸SÑ!AÔ!AðE
ñ E
ô E
ˆÔ�Ô*Ô+Ô1°.ÑAõ ”IÐ5Ñ6Ô6€MØð 
�Ô*¨fÔ.>Ð>Ð>Ý;FÝÔ&Ø!Ý”Ð7¸Ñ@Ô@ð<
ñ <
ô <
ˆÔ�Ô*Ô+Ô8õ ”IÐ1Ñ2Ô2€MØð AÝÔ 6Ô#3Ð3Ð3Ý1?Ñ1AÔ1AˆFÔ�XÔ-Ñ.Ø59ˆÔ�Ô)Ô*Ô2Ø3@ˆÔ�Ô)Ô*Ô0å”9Ð3Ñ4Ô4€LØð 
�Ô(¨FÔ,<Ð<Ð<Ý:EÝÔ%Ø Ý”Ð6¸Ñ?Ô?ð;
ñ ;
ô ;
ˆÔ�Ô)Ô*Ô7õ œÐ#:¸BÑ?Ô?×EÒEÑGÔGÐØÐ4Ð4Ð4ÝÔ 6Ô#3Ð3Ð3Ý1?Ñ1AÔ1AˆFÔ�XÔ-Ñ.Ø;MˆÔ�Ô)Ô*Ô8õ ”yÐ!3°RÑ8Ô8×>Ò>Ñ@Ô@ÐDXÐXÐØð ;ÝÔ FÔ$4Ð4Ð4Ý2@Ñ2BÔ2BˆFÔ�XÔ.Ñ/Ø6:ˆÔ�Ô*Ô+Ô3õ ”)Ð-Ñ.Ô.€KØð =ÝŒ> Ô!1Ð1Ð1Ý/=Ñ/?Ô/?ˆFÔ�Xœ^Ñ,Ø37ˆÔ�œÔ(Ô0Ø1<ˆÔ�œÔ(Ô.Ý”Ð/Ñ0Ô0€JØð 
•h”n¨Ô(8Ð8Ð8Ý8CÝ”^ØÝ”Ð4°bÑ9Ô9ð9
ñ 9
ô 9
ˆÔ�œÔ(Ô5õ ”Ð,Ñ-Ô-€JÝ”YÐ/Ñ0Ô0€NØð �nð ÝŒ? &Ô"2Ð2Ð2Ý0>Ñ0@Ô0@ˆFÔ�Xœ_Ñ-Ø48ˆÔ�œÔ)Ô1ØÔ�œÔ)Ô/×6Ò6Ø"Ø%Ý œiÐ(?ÀÑHÔH×NÒNÑPÔPÐThÐhð8
ð 8
ñ 	ô 	ð 	õ
 ”)Ð1Ñ2Ô2€KØð 
•x”¨&Ô*:Ð:Ð:Ý9DÝ”_ØÝ”Ð5°vÑ>Ô>ð:
ñ :
ô :
ˆÔ�œÔ)Ô6õ ”yÐ!3Ñ4Ô4ÐØð LÝœÐ#3°RÑ8Ô8ˆØð 	QÝ�NŠNÐOÑPÔPÐPÝÔ fÔ&6Ð6Ð6Ý4BÑ4DÔ4DˆFÔ�XÔ0Ñ1Ø8<ˆÔ�Ô,Ô-Ô5Ø6FˆÔ�Ô,Ô-Ô3Ø=KˆÔ�Ô,Ô-Ô3°EÑ:Ý”iÐ 9Ñ:Ô:€OØð 
�8Ô.°&Ô2BÐBÐBÝ=HÝÔ(Ø#Ý”Ð9¸6ÑBÔBð>
ñ >
ô >
ˆÔ�Ô,Ô-Ô:õ ”9Ð2Ñ3Ô3€LÝœ	Ð"5°rÑ:Ô:ÐØð T•r”yÐ!2Ñ3Ô3ñ TØ ð 	gÝ�NŠNÐeÑfÔfÐfÝŒ? &Ô"2Ð2Ð2Ý0>Ñ0@Ô0@ˆFÔ�Xœ_Ñ-Ø48ˆÔ�œÔ)Ô1Øð 	CØ6BˆFÔ�Xœ_Ô-Ô3Ø@QˆÔ�œÔ)Ô/°Ñ=Ý”iÐ 0°"Ñ5Ô5ˆØð 	MØALˆFÔ�Xœ_Ô-Ô3°IÑ>Ýœ)Ð$5°rÑ:Ô:ˆØð 	RØBQˆFÔ�Xœ_Ô-Ô3°JÑ?Ý”iÐ 3°RÑ8Ô8×>Ò>Ñ@Ô@ÐDXÐXˆØ@KˆÔ�œÔ)Ô/°Ñ=Ýœ9Ð%7¸Ñ<Ô<ÐØð 	TØCSˆFÔ�Xœ_Ô-Ô3°KÑ@Ý”)Ð.Ñ/Ô/€KØð 
•x”¨&Ô*:Ð:Ð:Ý9DÝ”_ØÝ”Ð2°FÑ;Ô;ð:
ñ :
ô :
ˆÔ�œÔ)Ô6õ ”˜<Ñ(Ô(€JØð MÝÔ!¨Ô)9Ð9Ð9Ý7EÑ7GÔ7GˆFÔ�XÔ3Ñ4Ø;?ˆÔ�Ô/Ô0Ô8Ø9CˆÔ�Ô/Ô0Ô6Ý”9˜ZÑ(Ô(ˆØð 	MØDLˆFÔ�XÔ3Ô4Ô:¸5ÑAõ ”˜?Ñ+Ô+€JÝ”	Ð*Ñ+Ô+€IÝ”Ð,Ñ-Ô-€JÝ”Ð,Ñ-Ô-€JÝ
ˆJ˜	 :¨zÐ:Ñ;Ô;ð ÝŒ> Ô!1Ð1Ð1Ý/=Ñ/?Ô/?ˆFÔ�Xœ^Ñ,Ø37ˆÔ�œÔ(Ô0ØÔ�œÔ(Ô.×5Ò5Ø!Ø#Ø#ð7
ð 7
ñ 	ô 	ð 	õ
 ”Ð/Ñ0Ô0€JØð 
•h”n¨Ô(8Ð8Ð8Ý8CÝ”^ØÝ”Ð4°fÑ=Ô=ð9
ñ 9
ô 9
ˆÔ�œÔ(Ô5õ ”Ð/Ñ0Ô0€JØð TÝŒ<˜vÔ/Ð/Ð/Ý-;Ñ-=Ô-=ˆFÔ�Xœ\Ñ*Ø15ˆÔ�œÔ&Ô.Ý13´Ð;NÐPRÑ1SÔ1SˆÔ�œÔ&Ô.ÝŒyÐ+Ñ,Ô,€HØð 
•H”L FÔ$4Ð4Ð4Ý6AÝ”\ØÝ”Ð2°FÑ;Ô;ð7
ñ 7
ô 7
ˆÔ�œÔ&Ô3õ œÐ#7¸Ñ<Ô<×BÒBÑDÔDÐH\Ð\ÐÝ”YÐ/°Ñ4Ô4€NÝ œiÐ(AÀ2ÑFÔFÐÝ”iÐ 1Ñ2Ô2€OÝ”iÐ 1Ñ2Ô2€OØð ^˜^ñ ^ÝÔ fÔ&6Ð6Ð6Ý4BÑ4DÔ4DˆFÔ�XÔ0Ñ1Ø8<ˆÔ�Ô,Ô-Ô5Øð 	PØAOˆFÔ�XÔ0Ô1Ô7¸Ñ>Ø"ð 	VØiÐiÐ4K×4QÒ4QÐRUÑ4VÔ4VÐiÑiÔiˆGØð VØNU�Ô ¥Ô!4Ô5Ô;¸NÑKØð 	ðÝFIÈ/ÑFZÔFZ�Ô ¥Ô!4Ô5Ô;¸FÑCÐCøÝð ð ð Ø�ðøøøàð 	RØBQˆFÔ�XÔ0Ô1Ô7¸Ñ?Ý "¤	Ð*AÀ2Ñ FÔ FÐØ ð 	^ØH]ˆFÔ�XÔ0Ô1Ô7¸ÑEõ ”iÐ 1°2Ñ6Ô6×<Ò<Ñ>Ô>ÐBVÐV€OÝ”9˜^Ñ,Ô,€LÝ”YÐ/°Ñ4Ô4€NØð 
PÝÔ 6Ô#3Ð3Ð3Ý1?Ñ1AÔ1AˆFÔ�XÔ-Ñ.Ø59ˆÔ�Ô)Ô*Ô2Øð 	ðÝCFÀ|ÑCTÔCT�Ô ¥Ô!1Ô2Ô8¸Ñ@Ð@øÝð ð ð Ø�ðøøøàð 	PØAOˆFÔ�XÔ-Ô.Ô4°XÑ>õ œÐ#7Ñ8Ô8ÐÝœYÐ'?Ñ@Ô@ÐØð Ð4ð ÝÔ FÔ$4Ð4Ð4Ý2@Ñ2BÔ2BˆFÔ�XÔ.Ñ/Ø6:ˆÔ�Ô*Ô+Ô3ØÔ�Ô*Ô+Ô1×8Ò8Ø+Ø3ð:
ð :
ñ 	ô 	ð 	õ œ	Ð"9Ñ:Ô:ˆØð 	Ý?JÝ!Ô*Ø%Ý”YÐ;¸VÑDÔDð@ñ @ô @ˆFÔ�XÔ.Ô/Ô<õ ”I˜oÑ.Ô.€MÝœ	Ð"5Ñ6Ô6ÐØñ Ð*ñ ÝŒ? &Ô"2Ð2Ð2Ý0>Ñ0@Ô0@ˆFÔ�Xœ_Ñ-Ø48ˆÔ�œÔ)Ô1ØÔ�œÔ)Ô/×6Ò6Ø#Ø+Ý”i °Ñ:Ô:Ý!œyÐ)AÀ;ÑOÔOð	8
ð 8
ñ 	ô 	ð 	õ  œYÐ';¸RÑ@Ô@ÐØð 	XØEWˆFÔ�Xœ_Ô-Ô3°MÑBÝ$&¤IÐ.IÈ2Ñ$NÔ$NÐ!Ø$ð 	fØLeˆFÔ�Xœ_Ô-Ô3Ð4HÑIÝ”iÐ 5Ñ6Ô6ˆØð 	Ý=HÝ!œØ#Ý”YÐ9¸6ÑBÔBð>ñ >ô >ˆFÔ�Xœ_Ô-Ô:õ ”9˜^Ñ,Ô,€LÝ”9˜^Ñ,Ô,€LØñ ˜ñ ÝŒ> Ô!1Ð1Ð1Ý/=Ñ/?Ô/?ˆFÔ�Xœ^Ñ,Ø37ˆÔ�œÔ(Ô0ØÔ�œÔ(Ô.×5Ò5Ø"Ø"ð7
ð 7
ñ 	ô 	ð 	õ ”yÐ!6¸Ñ;Ô;ˆØð 	SØFRˆFÔ�Xœ^Ô,Ô2°?ÑCÝ”YÐ3Ñ4Ô4ˆ
Øð 	Ý<GÝ!œØ"Ý”YÐ8¸&ÑAÔAð=ñ =ô =ˆFÔ�Xœ^Ô,Ô9õ  œYÐ'?Ñ@Ô@ÐÝ!#¤Ð+GÑ!HÔ!HÐØð Ð"<ð ÝÔ"¨&Ô*:Ð:Ð:Ý8FÑ8HÔ8HˆFÔ�XÔ4Ñ5Ø<@ˆÔ�Ô0Ô1Ô9ØÔ�Ô0Ô1Ô7×>Ò>Ø-Ø5Ýœ	Ð";¸RÑ@Ô@Ý”YÐ5°rÑ:Ô:Ý "¤	Ð*KÈRÑ PÔ PÝ”IÐ3°YÑ?Ô?Ý�œ	Ð"7¸Ñ@Ô@ÑAÔAð@
ð @
ñ 	ô 	ð 	õ ”9˜^Ñ,Ô,€LÝœ	Ð"5Ñ6Ô6ÐØð $Ð(ñ $ÝŒ? &Ô"2Ð2Ð2Ý0>Ñ0@Ô0@ˆFÔ�Xœ_Ñ-Ø48ˆÔ�œÔ)Ô1Øð 	CØ6BˆFÔ�Xœ_Ô-Ô3ØÔ ¥¤Ô1Ô7ˆØð 	4Ø"3ˆE�,ÑÝœ)Ð$5°rÑ:Ô:×@Ò@ÑBÔBˆØð 	<Ø /× 6Ò 6°sÑ ;Ô ;ˆE�*ÑÝ œiÐ(=¸rÑBÔB×HÒHÑJÔJÐØð 	DØ$7×$>Ò$>¸sÑ$CÔ$CˆE�.Ñ!Ýœ9Ð%7¸Ñ<Ô<×BÒBÑDÔD×JÒJÑLÔLÐØð 	2Ø!1ˆE�+ÑÝ œiÐ(=¸rÑBÔB×HÒHÑJÔJ×PÒPÑRÔRÐØð 	8Ø$7ˆE�.Ñ!Ý!œyÐ)?ÀÑDÔD×JÒJÑLÔLÐØð 	7Ø"6ˆE�,ÑÝ%'¤YÐ/KÈRÑ%PÔ%P×%VÒ%VÑ%XÔ%XÐ"Ø%ð 	CØ(BˆEÐ$Ñ%Ý!#¤Ð+LÈbÑ!QÔ!Q×!WÒ!WÑ!YÔ!YÐØ!ð 	GØ0FˆEÐ,Ñ-Ý”iÐ 5°rÑ:Ô:×@Ò@ÑBÔBˆØð 	Ý=HÝ!œØ#Ý”YÐ9¸6ÑBÔBð>ñ >ô >ˆFÔ�Xœ_Ô-Ô:õ  œYÐ'?Ñ@Ô@ÐÝœ9Ð%;Ñ<Ô<ÐØñ Ð"6ñ ÝÔ vÔ'7Ð7Ð7Ý5CÑ5EÔ5EˆFÔ�XÔ1Ñ2Ø9=ˆÔ�Ô-Ô.Ô6ØÔ�Ô-Ô.Ô4×;Ò;Ø0×7Ò7¸Ñ<Ô<Ø,ÝœIÐ&@À+ÑNÔNÝ¥¤	Ð*DÀfÑ MÔ MÑNÔNÝœIÐ&@ÐBXÑYÔYÝ"$¤)Ð,LÈfÑ"UÔ"U×"[Ò"[Ñ"]Ô"]ÐauÐ"uð=
ð =
ñ 	ô 	ð 	õ ”yÐ!;Ñ<Ô<ÐØð 
�HÔ0°FÔ4DÐDÐDÝ>IÝÔ)Ø$Ý”Ð:¸FÑCÔCð?
ñ ?
ô ?
ˆÔ�Ô-Ô.Ô;õ ”	˜+Ñ&Ô&€IÝ”yÐ!3Ñ4Ô4ÐØð  Ð$ñ  ÝŒ> Ô!1Ð1Ð1Ý/=Ñ/?Ô/?ˆFÔ�Xœ^Ñ,Ø37ˆÔ�œÔ(Ô0ØÔ ¥¤Ô0Ô6ˆØð 	(Ø'ˆE�(‰OØð 	6Ø%5ˆE�/Ñ"Ýœ9Ð%7¸Ñ<Ô<×BÒBÑDÔDÐØð 	3Ø"2ˆE�,ÑÝœ9Ð%=¸rÑBÔB×HÒHÑJÔJÐØð 	9Ø(8ˆEÐ$Ñ%Ý”)Ð0°"Ñ5Ô5×;Ò;Ñ=Ô=ˆØ4ÐØð 		åœ)Ð$5°rÑ:Ô:×@Ò@ÑBÔBˆKØð Ø%�Ø#9Ð ÝÔ!¥(Ñ+Ô+×3Ò3ðJñô ð ð ð 	Ý<GÝ!œØÝ”YÐ8Ñ9Ô9Ð`½R¼YÐGWÐY_Ñ=`Ô=`ð=ñ =ô =ˆFÔ�Xœ^Ô,Ô9õ ”9Ð3Ñ4Ô4€LØð ð	Ý7:¸<Ñ7HÔ7HˆFÔ'Ô4Ð4øÝð 	ð 	ð 	ØˆDð	øøøõ ”Ð/Ñ0Ô0€JØð ð	Ý25°j±/´/ˆFÔ'Ô/Ð/Ð/øÝð 	ð 	ð 	ØˆDˆDð	øøøðð sT   ÷$,x ø
xøxü,} ý
}ý}Ák(Al Ál
AlÁlAlÁl)Am Ám
AmÁmAm)T)r"   )rÄ   rš   r   N)$r@   r  rÁ   rE  Úpathlibr   Údataclassesr   r   Útypingr   r   r   r	   Úenumr
   Úhermes_cli.configr   Úutilsr   r  r=   rG  r{   r    r   r&   r(   rW   rj   r}   rŒ   rš   r{  rT  rS  rU   r!   r   ú<module>ro     sÅ  ððð ð €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ø !Ð !Ð !Ð !Ð !Ð !à	ˆÔ	˜8Ñ	$Ô	$€ð3ð 3˜ð 3 dð 3°dð 3ð 3ð 3ð 3ðð ¨sð ¸Sð Ècð ð ð ð ðð ð ð ð ˆtñ ô ð ð0 ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð6 ð'
ð '
ð '
ð '
ð '
ñ '
ô '
ñ „ð'
ðT ð+
ð +
ð +
ð +
ð +
ñ +
ô +
ñ „ð+
ð\ ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð< ðj-ð j-ð j-ð j-ð j-ñ j-ô j-ñ „ðj-ðZF˜]ð Fð Fð Fð FðR
B(ð B(ð B(ð B(ðJw ð w°4ð wð wð wð wð wð wr!   