+
    lHàj<  ã                  ó`  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHtHtHt ^ RIHtHt ]P$                  ! R4      tR R ltR	 R
 lt]! RR04      tR R ltRtRtRt]! ]]]04      t]tRt^tRt R]  R2t!Rt"]	 ! R R4      4       t#]	 ! R R4      4       t$ ! R R4      t%R# )uT  Dialog capture + response half of the CDP supervisor.

Two capture paths feed one ``PendingDialog`` queue: native ``Page.javascriptDialogOpening``
events (answered with ``Page.handleJavaScriptDialog``), and the injected *dialog bridge* â€”
a page script rewriting alert/confirm/prompt into a sync XHR to a magic host we intercept
via the CDP ``Fetch`` domain and answer with ``Fetch.fulfillRequest``. The bridge works on
Browserbase (whose CDP proxy auto-dismisses native dialogs) because the native dialog never fires.
``DialogSupervisionMixin`` relies on state ``CDPSupervisor.__init__`` sets.
)ÚannotationsN)Ú	dataclass)ÚAnyÚCallableÚDictÚOptional)Úparse_qsÚurlparseztools.browser_supervisorc               ó    € V ^8„  d   QhRRRR/# )é   ÚvalueÚstrÚreturn© )Úformats   "ÚE/home/ubuntu/.hermes/hermes-agent/tools/browser_supervisor_dialogs.pyÚ__annotate__r      s   € ÷ 4ñ 4 3ð 4¨3ñ 4ó    c                ó"   € ^ RI Hp V! V RR7      # )zARedact page-originated text before exposing supervisor snapshots.)Úredact_sensitive_textT)Úforce)Úagent.redactr   )r   r   s   & r   Ú_redact_supervisor_textr      s   € å2á  ¨dÔ3Ð3r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚeventsÚlistÚkeepÚintr   r   )r   s   "r   r   r   !   s&   € ÷ @ñ @�tð @ 3ð @¨4ñ @r   c                ó>   € \        V 4      V^,          8”  d   W) R # T # )zTCap a ring buffer at ``keep`` entries once it overflows to 2x (slack reduces churn).N)Úlen)r   r   s   &&r   Ú
_trim_ringr    !   s"   € ä  ›[¨4°!­8Ô3ˆ6�%�&ˆ>Ð?¸Ð?r   ÚmessageÚdefault_promptc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úobjr   ÚkeysÚtupler   údict[str, Any]r   )r   s   "r   r   r   )   s&   € ÷ uñ u�cð u ð u¨>ñ ur   c           
     ó€   € V Uu/ uF-  q"V\         9   d   \        \        W4      4      M
\        W4      bK/  	  up# u upi )zDSnapshot dict of ``keys`` with page-originated text fields redacted.)Ú_REDACTED_FIELDSr   Úgetattr)r$   r%   Úks   && r   Ú_dialog_dictr,   )   s;   € áosÓtÑosÐjk¸1Ô@PÔ;PÔ&¤w¨s£Ô7ÔV]Ð^aÓVeÒeÑosÑtÐtùÒts   …3;Úmust_respondÚauto_dismissÚauto_acceptg     Àr@zhermes-dialog-bridge.invalidzhttp://z/*a¡  
(() => {
  if (window.__hermesDialogBridgeInstalled) return;
  window.__hermesDialogBridgeInstalled = true;
  const ENDPOINT = "http://hermes-dialog-bridge.invalid/";
  function ask(kind, message, defaultPrompt) {
    try {
      const xhr = new XMLHttpRequest();
      const params = new URLSearchParams({
        kind: String(kind || ""),
        message: String(message == null ? "" : message),
        default_prompt: String(defaultPrompt == null ? "" : defaultPrompt),
      });
      xhr.open("GET", ENDPOINT + "?" + params.toString(), false);  // sync
      xhr.send(null);
      if (xhr.status !== 200) return null;
      let parsed;
      try { parsed = JSON.parse(xhr.responseText || ""); } catch (e) { return null; }
      if (kind === "alert") return undefined;
      if (kind === "confirm") return Boolean(parsed && parsed.accept);
      if (kind === "prompt") {
        if (!parsed || !parsed.accept) return null;
        return parsed.prompt_text == null ? "" : String(parsed.prompt_text);
      }
      return null;
    } catch (e) {
      return null;
    }
  }
  window.alert   = function(message) { ask("alert",   message, ""); };
  window.confirm = function(message) {
    const r = ask("confirm", message, "");
    return r === null ? false : Boolean(r);
  };
  window.prompt  = function(message, def) {
    const r = ask("prompt", message, def == null ? "" : def);
    return r === null ? null : String(r);
  };
})();
c                  ó€   € ] tR t^nt$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR]R&   R
tR]R&   R R ltRt	R
# )ÚPendingDialogz3A JS dialog currently open on some frame's session.r   ÚidÚtyper!   r"   ÚfloatÚ	opened_atÚcdp_session_idNúOptional[str]Úframe_idÚbridge_request_idc               ó   € V ^8„  d   QhRR/# ©r   r   r'   r   )r   s   "r   r   ÚPendingDialog.__annotate__|   s   € ÷ hñ h˜ñ hr   c                	ó   € \        V R4      # )r2   )r2   r3   r!   r"   r5   r8   ©r,   ©Úselfs   &r   Úto_dictÚPendingDialog.to_dict|   s   € Ü˜DÐ"fÓgÐgr   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r8   r9   rA   Ú__static_attributes__r   r   r   r1   r1   n   sG   ‡ á=àƒGØ
ƒIØƒLØÓØÓØÓØ"€HˆmÓ"à'+Ð�}Ó+÷hñ hr   r1   c                  ór   € ] tR t^€t$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR]R&   R R ltRtR
# )ÚDialogRecordzOA dialog that was opened and then handled (kept briefly in ``recent_dialogs``).r   r2   r3   r!   r4   r5   Ú	closed_atÚ	closed_byNr7   r8   c               ó   € V ^8„  d   QhRR/# r;   r   )r   s   "r   r   ÚDialogRecord.__annotate__Œ   s   € ÷ pñ p˜ñ pr   c                	ó   € \        V R4      # )r2   ©r2   r3   r!   r5   rL   rM   r8   r>   r?   s   &r   rA   ÚDialogRecord.to_dictŒ   s   € Ü˜DÐ"nÓoÐor   r   )	rC   rD   rE   rF   rG   rH   r8   rA   rI   r   r   r   rK   rK   €   s;   ‡ áYàƒGØ
ƒIØƒLØÓØÓØƒNØ"€HˆmÓ"÷pñ pr   rK   c                  óÎ   € ] tR t^�t$ RtR R ltR R ltR R ltR R	 ltR
R/R R llt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR]R]R]/tR]R &   R!tR# )"ÚDialogSupervisionMixinzJDialog event handling for ``CDPSupervisor`` (all methods run on its loop).c               ó0   € V ^8„  d   QhRRRRRRRRR	RR
R/# )r   Úmethodr   Úparamsr'   Ú
session_idr7   Útimeoutr4   Úwhatr   ÚNoner   )r   s   "r   r   Ú#DialogSupervisionMixin.__annotate__“   sB   € ÷ @ñ @ sð @°Nð @ÐS`ð @Ø"'ð@Ø/2ð@Ø7;ñ@r   c             ƒ  óª   "  €  V P                  WW4R7      G Rj  x€L
  R#  L  \         d#   p\        P                  RYT4        Rp?R# Rp?ii ; i5i)zABest-effort CDP call: failures are logged at debug and swallowed.©rX   rY   Nz%s failed (%s): %s)Ú_cdpÚ	ExceptionÚloggerÚdebug)r@   rV   rW   rX   rY   rZ   Úes   &&&$$$ r   Ú
_cdp_quietÚ!DialogSupervisionMixin._cdp_quiet“   sF   é € ð	@Ø—)‘)˜F°z�)ÓS×SÔSøÜô 	@Ü�L‰LÐ-¨v¸Q×?Ò?ûð	@üs6   ‚A„# š!›# ŸA¡# £A®AÁAÁAÁAc               ó    € V ^8„  d   QhRRRR/# )r   rX   r   r   r[   r   )r   s   "r   r   r\   ›   s   € ÷ eñ e°sð e¸tñ er   c           	   ƒ  óö   "  € T;'       g    RR,          pRR\         RR/RRV 23R	R
R\        RR/.RR/RRV 23RR\         RR/RRV 233pV F"  w  rErgV P                  WEWVR7      G Rj  x€L
  K$  	  R#  L
5i)a2  Install the dialog-bridge init script + Fetch interceptor on a session. Idempotent at
the CDP level (Chromium de-dupes identical add-script calls; Fetch.enable replaces prior
patterns); the final Runtime.evaluate injects into the already-loaded document so
existing pages pick up the override on reconnect.Ú :Né   Nz%Page.addScriptToEvaluateOnNewDocumentÚsourceÚrunImmediatelyTç      @zdialog bridge sid=zFetch.enableÚpatternsÚ
urlPatternÚrequestStageÚRequestÚhandleAuthRequestsFzRuntime.evaluateÚ
expressionÚreturnByValueç      @zdialog bridge inject sid=©rX   rY   rZ   N)Ú_DIALOG_BRIDGE_SCRIPTÚDIALOG_BRIDGE_URL_PATTERNrd   )r@   rX   ÚsidÚstepsrV   rW   rY   rZ   s   &&      r   Ú_install_dialog_bridgeÚ-DialogSupervisionMixin._install_dialog_bridge›   sÇ   é € ð
 ×Ð˜R Õ%ˆà4°xÔAVÐXhÐjnÐ6oØÐ& s eÐ,ð.à˜j¨LÔ:SÐUcÐenÐ+oÐ*pØ2°Eð;Ø<?ÐCUÐVYÐUZÐA[ð]à ,Ô0EÀÐX\Ð!]ØÐ-¨c¨UÐ3ð5ð
ˆó .3Ñ)ˆF˜GØ—/‘/ &¸ZÐ_c�/Ód×dÒdó .3Ùdùs   ‚A*A9Á,A7Á-A9c               ó$   € V ^8„  d   QhRRRRRR/# ©r   rW   r'   rX   r7   r   r[   r   )r   s   "r   r   r\   ®   s"   € ÷ 
ñ 
¨~ð 
È=ð 
Ð]añ 
r   c           	   ƒ  	ó"  "  € T P                  \        VP                  R 4      ;'       g    R4      \        VP                  R4      ;'       g    R4      \        VP                  R4      ;'       g    R4      W!P                  R4      R7       R# 5i)r3   rh   r!   ÚdefaultPromptÚframeId)r3   r!   r"   rX   r8   N)Ú_admit_dialogr   Úget)r@   rW   rX   s   &&&r   Ú_on_dialog_openingÚ)DialogSupervisionMixin._on_dialog_opening®   sq   é € Ø×ÑÜ�V—Z‘Z Ó'×-Ð-¨2Ó.¼¸F¿J¹JÀyÓ<Q×<WÐ<WÐUWÓ8XÜ˜vŸz™z¨/Ó:×@Ð@¸bÓAÈj×cmÑcmÐnwÓcxð 	ö 	
ùs   ‚ABÁ"BÁ1Bc               ó$   € V ^8„  d   QhRRRRRR/# r}   r   )r   s   "r   r   r\   ´   s"   € ÷ 
ñ 
¨^ð 
Èð 
Ð[_ñ 
r   c           
   ƒ  óp  "  € \        VP                  R/ 4      P                  R4      ;'       g    R4      pVP                  R4      pV'       g   R# \        V9  d#   V P                  RRV/VRRR	7      G Rj  x€L
  R# \	        \        V4      P                  4      P                  4        UUu/ uF  w  rVWV^ ,          bK  	  pppT P                  VP                  R
4      ;'       g    RVP                  RR4      VP                  RR4      W!P                  R4      \        V4      R7       R#  Lµu uppi 5i)uÓ   Bridge XHR captured mid-flight â€” materialize as a pending dialog. The page's JS
thread is blocked on the XHR until we Fetch.fulfillRequest (agent or watchdog);
requests for other hosts are forwarded unchanged.ÚrequestÚurlrh   Ú	requestIdNzFetch.continueRequestrt   Úpassthroughru   ÚkindÚalertr!   r"   r€   )r3   r!   r"   rX   r8   r9   )	r   r‚   ÚDIALOG_BRIDGE_HOSTrd   r   r	   ÚqueryÚitemsr�   )r@   rW   rX   rˆ   Ú
request_idr+   ÚvÚqs   &&&     r   Ú_on_fetch_pausedÚ'DialogSupervisionMixin._on_fetch_paused´   s  é € ô �&—*‘*˜Y¨Ó+×/Ñ/°Ó6×<Ð<¸"Ó=ˆØ—Z‘Z Ó,ˆ
ßÙÜ SÔ(Ø—/‘/Ð"9¸KÈÐ;TØ-7ÀÈ=ð "ó Z÷ Zð ZáÜ!)¬(°3«-×*=Ñ*=Ó!>×!DÑ!DÔ!FÔGÑ!F™˜ˆQ�!•ŠWÑ!FˆÑGØ×ÑØ—‘�v“×)Ð) '°1·5±5¸ÀBÓ3GÐXY×X]ÑX]Ð^nÐprÓXsØ!¯J©J°yÓ,AÔUXÐYcÓUdð 	ö 	
ñ	Zùó Hùs1   ‚AD6Á(D6Á8D.Á95D6Â.D0Ã%D6Ã(AD6Ä0D6r9   Nc               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )r   r3   r   r!   r"   rX   r7   r8   r9   r   r[   r   )r   s   "r   r   r\   Æ   sA   € ÷ 
ñ 
 Sð 
°3ð 
Èð 
ÐYfð 
Ø -ð
ØBOð
Ø[_ñ
r   c               óP  a a€ S ;P                   ^,          un         \        RS P                    2YT\        P                  ! 4       T;'       g    S P                  ;'       g    RWVR7      o\        R	\
        RV3/P                  S P                  4      pVeh   S P                  ;_uu_ 4        S P                  SR4       RRR4       \        P                  ! S P                  SV^ ,          V^,          R7      4       R# S P                  ;_uu_ 4        SS P                  SP                  &   RRR4       \        P                  ! 4       P!                  S P"                  VV 3R l4      S P$                  SP                  &   R#   + '       g   i     LË; i  + '       g   i     Lp; i)
zÞCreate the dialog and apply the policy: auto-respond, or queue + arm the watchdog.
Auto policies archive FIRST (tagged ``auto_policy``) so the ``closed`` event that
follows our own response isn't re-archived as ``remote``.zd-rh   )r2   r3   r!   r"   r5   r6   r8   r9   TNÚauto_policy©ÚacceptÚprompt_textc                 ób   <€ \         P                  ! SP                  S P                  4      4      # ©N)ÚasyncioÚcreate_taskÚ_dialog_timeout_expiredr2   )Údialogr@   s   €€r   Ú<lambda>Ú6DialogSupervisionMixin._admit_dialog.<locals>.<lambda>Ý   s   ø€ ”G×'Ò'¨×(DÑ(DÀVÇYÁYÓ(OÔPr   )Frh   )Ú_dialog_seqr1   ÚtimeÚ_page_session_idÚDIALOG_POLICY_AUTO_DISMISSÚDIALOG_POLICY_AUTO_ACCEPTr‚   Údialog_policyÚ_state_lockÚ_archive_dialog_lockedr�   rž   Ú_respond_quietÚ_pending_dialogsr2   Úget_running_loopÚ
call_laterÚdialog_timeout_sÚ_dialog_watchdogs)	r@   r3   r!   r"   rX   r8   r9   Úautor    s	   f$$$$$$ @r   r�   Ú$DialogSupervisionMixin._admit_dialogÆ   sI  ù€ ð
 	×Ò˜AÕÕÜØ�D×$Ñ$Ð%Ð&¨TÐSaÜ—i’i“k°*×2[Ð2[À×@UÑ@U×2[Ð2[ÐY[Øô
ˆô
 +¨KÔ9RÐUYÐ[iÐTjÐk×oÑoØ×Ñó
ˆð ÒØ×!×!Ó!Ø×+Ñ+¨F°MÔB÷ "ä×Ò × 3Ñ 3°FÀ4ÈÅ7ÐX\Ð]^ÕX_Ð 3Ó `ÔaÙØ××ÓØ/5ˆD×!Ñ! &§)¡)Ñ,÷ ä,3×,DÒ,DÓ,F×,QÑ,QØ×!Ñ!ÝPó-
ˆ×Ñ˜vŸy™yÓ)÷ "×!ú÷ ×ús   Â,FÄFÆF	ÆF%	c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   r    r1   r™   Úboolrš   r7   r   r[   r   )r   s   "r   r   r\   â   s0   € ÷ cñ c ]ð c¸tð cÐR_ð cÐdhñ cr   c             ƒ  ób  "  € VP                   ;'       g    RpVP                  '       dÆ   \        P                  ! R\	        V4      RVP
                  RVP                  R8X  d   T;'       g    RMR/4      P                  4       pV P                  RRVP                  R	^ÈR
RRRR/RRRR/.R\        P                  ! V4      P                  4       /VRRVP
                   2R7      G Rj  x€L
  R# RV/pVe   VP                  R8X  d   W6R&   V P                  RWdRR7      G Rj  x€L
  R#  LA L5i)u¯   Bridge-fulfill for XHR-captured dialogs (swallows failures so the page
unblocks), else native CDP â€” ``promptText`` only for prompt dialogs when
given; raises on CDP failure.Nr™   Ú	dialog_idrš   Úpromptrh   zFetch.fulfillRequestr‰   ÚresponseCodeÚresponseHeadersÚnamezContent-Typer   zapplication/jsonzAccess-Control-Allow-OriginÚ*Úbodyrl   zbridge fulfill ru   Ú
promptTextzPage.handleJavaScriptDialogr^   )r6   r9   ÚjsonÚdumpsrµ   r2   r3   Úencoderd   Úbase64Ú	b64encodeÚdecoder_   )r@   r    r™   rš   rX   r½   rW   s   &&$$   r   Ú_respondÚDialogSupervisionMixin._respondâ   sC  é € ð ×*Ñ*×2Ð2¨dˆ
Ø×#×#Ð#Ü—:’:˜x¬¨f«°{ÀFÇIÁIØ,ÀVÇ[Á[ÐT\ÔE\¨{×/@Ð/@¸bøÐbdðfó gßgmÑgmÓgoð à—/‘/Ø&Ø˜f×6Ñ6¸ÈØ" f¨n¸gÐGYÐ%ZØ&,Ð.KÈWÐVYÐ%Zð%\àœ×)Ò)¨$Ó/×6Ñ6Ó8ð:ð &¨s¸?È6Ï9É9È+Ð9Vð "ó ÷ ð ñ Ø"*¨FÐ!3ˆØÒ" v§{¡{°hÔ'>Ø#.�<Ñ Ø�i‰iÐ5°vÐ^aˆiÓb×bÒbññ 	cùs0   ‚(D/«AD/Á-A<D/Ã)D+Ã*:D/Ä$D-Ä%D/Ä-D/c               ó(   € V ^8„  d   QhRRRRRRRR/# r´   r   )r   s   "r   r   r\   ø   s0   € ÷ Jñ J¨=ð JÀTð JÐXeð JÐjnñ Jr   c             ƒ  ó¾   "  €  V P                  WVR7      G Rj  x€L
  R#  L  \         d-   p\        P                  RTP                  T4        Rp?R# Rp?ii ; i5i)zWAuto-policy / watchdog response (already archived by the caller); failures logged only.r˜   Nzauto response failed for %s: %s)rÅ   r`   ra   rb   r2   )r@   r    r™   rš   rc   s   &&$$ r   r«   Ú%DialogSupervisionMixin._respond_quietø   sJ   é € ð	JØ—-‘- À;�-ÓO×OÔOøÜô 	JÜ�L‰LÐ:¸F¿I¹IÀq×IÒIûð	Jüs6   ‚A„# š!›# ŸA¡# £A®!AÁAÁAÁAc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r    r1   r™   rµ   rš   r   r   r[   r   )r   s   "r   r   r\   ÿ   s*   € ÷ 4ñ 4¨}ð 4Èð 4Ð\_ð 4Ðdhñ 4r   c             ƒ  óÄ   "  €  V P                  WVR7      G Rj  x€L
  V P                  VP                  R4       R#  L"  T P                  TP                  R4       i ; i5i)u›   Agent response path. The dialog is retired regardless of outcome â€” a CDP
error usually means it already closed (browser auto-dismissed after navigation).r˜   NÚagent)rÅ   Ú_retire_dialogr2   )r@   r    r™   rš   s   &&$$r   Ú_handle_dialog_cdpÚ)DialogSupervisionMixin._handle_dialog_cdpÿ   sO   é € ð	4Ø—-‘- À;�-ÓO×OÐOà×Ñ §	¡	¨7Ö3ñ Pøà×Ñ §	¡	¨7Õ3üs%   ‚A „? š=›? ŸA ½? ¿AÁA c               ó    € V ^8„  d   QhRRRR/# )r   r·   r   r   r[   r   )r   s   "r   r   r\     s   € ÷ 	Jñ 	J°sð 	J¸tñ 	Jr   c              ƒ  	ó|  "  € V P                   ;_uu_ 4        V P                  P                  V4      pR R R 4       Xf   R # \        P	                  RV P
                  WP                  V P                  4       V P                  VR4       V P                  VRR R7      G R j  x€L
  R #   + '       g   i     L|; i L5i)NzBCDP supervisor %s: dialog %s (%s) auto-dismissed after %ss timeoutÚwatchdogFr˜   )
r©   r¬   r‚   ra   ÚwarningÚtask_idr3   r¯   rÍ   r«   )r@   r·   r    s   && r   rŸ   Ú.DialogSupervisionMixin._dialog_timeout_expired  s•   é € Ø××ÓØ×*Ñ*×.Ñ.¨yÓ9ˆF÷ àŠ>ÙÜ�‰Ð[Ø—|‘| Y·±¸T×=RÑ=Rô	Tð 	×Ñ˜I zÔ2Ø×!Ñ! &°ÀDÐ!ÓI×IÒI÷ ×úñ 	Jùs(   ‚B<—B'³A-B<Â B:Â!B<Â'B7	Â2	B<c               ó$   € V ^8„  d   QhRRRRRR/# )r   r·   r   rM   r   r[   r   )r   s   "r   r   r\     s!   € ÷ ñ ¨ð ¸ð Àñ r   c                ó,  € V P                   ;_uu_ 4        V P                  P                  VR4      pVe   V P                  W24       RRR4       V P                  P                  VR4      pVe   VP                  4        R# R#   + '       g   i     LD; i)zRRemove a pending dialog (archiving it with ``closed_by``) and cancel its watchdog.N)r©   r¬   Úpoprª   r°   Úcancel)r@   r·   rM   r    Úhandles   &&&  r   rÍ   Ú%DialogSupervisionMixin._retire_dialog  sv   € à××ÓØ×*Ñ*×.Ñ.¨y¸$Ó?ˆFØÒ!Ø×+Ñ+¨FÔ>÷ ð ×'Ñ'×+Ñ+¨I°tÓ<ˆØÒØ�M‰MŽOñ ÷ ×ús   •2BÂB	c               ó$   € V ^8„  d   QhRRRRRR/# )r   r    r1   rM   r   r   r[   r   )r   s   "r   r   r\     s&   € ÷ _ñ _¨]ð _Àsð _Ètñ _r   c           
     óø   € \        VP                  VP                  VP                  VP                  \
        P
                  ! 4       W!P                  R7      p\        . V P                  OVN\        4      V n        R# )zNMove a pending dialog to the recent_dialogs ring buffer. Must hold state_lock.rQ   N)
rK   r2   r3   r!   r5   r¤   r8   r    Ú_recent_dialogsÚRECENT_DIALOGS_MAX)r@   r    rM   Úrecords   &&& r   rª   Ú-DialogSupervisionMixin._archive_dialog_locked  sZ   € ä §¡°·±ÀfÇnÁnÐ`f×`pÑ`pÜ(,¯	ª	«¸y×SbÑSbôdˆä)Ð*I¨D×,@Ñ,@Ð*IÀ&Ð*IÔK]Ó^ˆÖr   c               ó$   € V ^8„  d   QhRRRRRR/# r}   r   )r   s   "r   r   r\   $  s"   € ÷ 5ñ 5¨nð 5È-ð 5Ð\`ñ 5r   c              ƒ  	ó  a"  € V P                   ;_uu_ 4        \        V3R  lV P                  P                  4        4       R4      pRRR4       X'       d   V P	                  VR4       R# R#   + '       g   i     L.; i5i)c              3  ó‚   <"  € T F4  pVP                   S8X  g   K  VP                  e   K&  VP                  x € K6  	  R # 5irœ   )r6   r9   r2   )Ú.0ÚdrX   s   & €r   Ú	<genexpr>Ú;DialogSupervisionMixin._on_dialog_closed.<locals>.<genexpr>)  s;   øé € ð aÑ,J qØ!"×!1Ñ!1°ZÑ!?ô #ØDE×DWÑDWô #˜aŸdždÓ,Jùs   ƒ?›?«?NÚremote)r©   Únextr¬   ÚvaluesrÍ   )r@   rW   rX   Ú	candidates   &&f r   Ú_on_dialog_closedÚ(DialogSupervisionMixin._on_dialog_closed$  sf   øé € ð ××ÓÜô a¨D×,AÑ,A×,HÑ,HÔ,Jó aØbfóhˆI÷ ÷ Ø×Ñ 	¨8Ö4ñ ÷ ×üs"   ƒB ˜/A-ÁB ÁB Á-A=	Á8B zPage.javascriptDialogOpeningzPage.javascriptDialogClosedzFetch.requestPausedzdict[str, Callable[..., Any]]ÚEVENT_HANDLERS)rÞ   )rC   rD   rE   rF   rG   rd   rz   rƒ   r“   r�   rÅ   r«   rÎ   rŸ   rÍ   rª   rí   rï   rH   rI   r   r   r   rT   rT   �   sr   ‡ ÙTõ@õeõ&
õ
ð$
ØRV÷
õ8cõ,Jõ4õ	Jõõ_õ5ð 	'Ð(:Ø%Ð'8ØÐ/ð5€NÐ1÷ r   rT   )&rG   Ú
__future__r   r�   rÂ   r¿   Úloggingr¤   Údataclassesr   Útypingr   r   r   r   Úurllib.parser   r	   Ú	getLoggerra   r   r    Ú	frozensetr)   r,   ÚDIALOG_POLICY_MUST_RESPONDr¦   r§   Ú_VALID_POLICIESÚDEFAULT_DIALOG_POLICYÚDEFAULT_DIALOG_TIMEOUT_Srß   r�   rw   rv   r1   rK   rT   r   r   r   Ú<module>rû      s  ðñõ #ã Û Û Û Û Ý !ß 0Ó 0ß +ð 
×	Ò	Ð5Ó	6€õ4õ@ñ
 ˜iÐ)9Ð:Ó;Ð õuð
 ,Ð Ø+Ð Ø)Ð ÙØÐ!;Ð=VÐWó€ð 3Ð Ø Ð ð Ð ð 4Ð Ø%Ð&8Ð%9¸Ð<Ð ð'Ð ðT ÷hð hó ðhð" ÷pð pó ðp÷có cr   