Ë
    tPêjè7  ã                   ó¸  — U d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
Z
d dlZddlmZmZm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Ze	ed<   dZe	ed<   d eeh«      fd eeh«      fd eeh«      fdœZe	eeeeee   f   f      ed<   ddddœZe	eeef      ed<   dZe	ed<    G d„ d e«      Z d!ed"eeee   f   fd#„Z!d$eeef   d%ed&ed'ee   d"eeef   f
d(„Z"d%ed"e#e   fd)„Z$d*e$iZ%e	eeeege#e   f   f      ed+<   d!ed%ed"e#e   fd,„Z&ejN                  d-œd%ed&ed.ed/ejP                  f   d"dfd0„Z) ed1d2h«      Z*e	ee      ed3<   d4Z+e	ed5<   d6Z,e	ed7<   d8ed"efd9„Z-d:ed"efd;„Z.d<ed=ee   d"eeed/f   z  fd>„Z/d!eee   z  d?eeef   d"e0fd@„Z1e jd                  dAœd<ed=ee   d?eeef   dBedC   d"df
dD„Z3ejh                  e3e1dEœd<ed=ee   d?eeef   dFedGeeee   eeef   gdf   dHeeee   z  eeef   ge0f   d"dfdI„Z5d^dJ„Z6dKdejn                  e)e5ddLœd%ed&ed!ee   dMe8d$eeef   dz  dNeegedz  f   dOeeegdf   dPeeee   eeef   gdf   dQeg df   dz  d"dfdR„Z9d"e8fdS„Z:dTe
jv                  d"efdU„Z<dVZ=e	edW<   dTe
jv                  dXed=ee   dMe8d"df
dY„Z>dXedZed"e
j~                  fd[„Z@d"ee
j~                  d/f   fd\„ZAg d]¢ZBy)_é    N)ÚCallableÚMappingÚSequence)ÚFinalé   )Úcontext_secret_vaultÚget_stored_api_keyÚloginÚANTHROPIC_BASE_URLÚANTHROPIC_BASE_URL_ENVÚANTHROPIC_AUTH_TOKENÚANTHROPIC_AUTH_TOKEN_ENVÚANTHROPIC_API_KEYÚANTHROPIC_API_KEY_ENVÚOPENAI_BASE_URLÚOPENAI_BASE_URL_ENVÚOPENAI_API_KEYÚOPENAI_API_KEY_ENVÚ	anthropicÚPROFILE_ANTHROPICÚopenaiÚPROFILE_OPENAIzClaude CodeÚCodexÚOpenCode)ÚclaudeÚcodexÚopencodeÚ_KNOWN_AGENTSz1https://docs.claude.com/en/docs/claude-code/setupz'https://developers.openai.com/codex/clizhttps://opencode.ai/docsÚ_INSTALL_DOCSÚlitellmÚCODEX_PROXY_PROVIDERc                   ó   — e Zd ZdZy)ÚAgentRunErrorzGRaised for any user-actionable failure while preparing to run an agent.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/client/cli/commands/agents.pyr#   r#   %   s   „ ÚQr)   r#   ÚcommandÚreturnc                 ó�   — t         j                  j                  | «      }|t        v r	t        |   S |t	        t
        t        h«      fS )zÕReturn the (display name, env profiles) for a wrapped command.

    Known agents map to the API family they speak. Anything else gets both
    families so it works regardless of which env vars the tool reads.
    )ÚosÚpathÚbasenamer   Ú	frozensetr   r   )r+   Úbases     r*   Úagent_profiler3   )   sA   € ô —'‘'×"Ñ" 7Ó+€DØŒ}ÑÜ˜TÑ"Ð"Ø”Ô-¬~Ð>Ó?Ð?Ð?r)   Úbase_envÚbase_urlÚapi_keyÚprofilesc                 óØ   — t        | «      }|j                  d«      }t        |v r(||t        <   ||t        <   |j                  t        d«       t        |v r|dz   |t        <   ||t        <   |S )aq  Return a copy of base_env wired to route the agent through the proxy.

    Anthropic clients (Claude Code) append /v1/messages to ANTHROPIC_BASE_URL,
    so it stays the bare proxy root; OpenAI clients (Codex, OpenCode) expect the
    /v1 suffix on OPENAI_BASE_URL. ANTHROPIC_API_KEY is dropped so a stray
    Anthropic key cannot win over the bearer token we set.
    ú/Nú/v1)
ÚdictÚrstripr   r   r   Úpopr   r   r   r   )r4   r5   r6   r7   ÚenvÚroots         r*   Úbuild_agent_envr@   5   so   € ô �h“€CØ—/‘/ #Ó&€DÜ˜HÑ$Ø&*ˆÔ"Ñ#Ø(/ˆÔ$Ñ%Ø�‰Ô% tÔ,Ü˜Ñ!Ø#'¨%¡<ˆÔÑ Ø")ˆÔÑØ€Jr)   c                 óš   — | j                  d«      dz   }dt        › �}ddt        › d�d|› d�d|› d|› d�d|› d	t        › d�d|› d
�d|› d�gS )a¼  Codex `-c` overrides that point it at the proxy.

    Codex ignores OPENAI_BASE_URL (it always dials api.openai.com), so the env
    profile alone cannot route it. It does honor a custom provider, so define one
    inline; supports_websockets=false forces the HTTP/SSE Responses transport
    because the proxy does not speak the Responses WebSocket protocol. The key is
    read from OPENAI_API_KEY, which build_agent_env already exports.
    r9   r:   zmodel_providers.z-czmodel_provider="ú"z.name="LiteLLM proxy"z.base_url="z
.env_key="z.wire_api="responses"z.supports_websockets=false)r<   r!   r   )r5   r?   Úproviders      r*   Ú_codex_proxy_argsrD   N   s’   € ð —/‘/ #Ó&¨Ñ.€DØ(Ô)=Ð(>Ð?€HàØ
Ô/Ð0°Ð2ØØˆ*Ð)Ð*ØØˆ*�K ˜v QÐ'ØØˆ*�JÔ1Ð2°!Ð4ØØˆ*Ð)Ð*ØØˆ*Ð.Ð/ðð r)   r   Ú_PROXY_ARGSc                 ó~   — t         j                  t        j                  j	                  | «      «      }|r ||«      S g S )zÑExtra CLI args an agent needs to actually honor the proxy.

    Claude Code and OpenCode respect the exported env vars, so they get nothing
    here; Codex needs its provider pointed via config overrides.
    )rE   Úgetr.   r/   r0   )r+   r5   Úbuilders      r*   Úagent_launch_argsrI   n   s3   € ô !—_‘_¤R§W¡W×%5Ñ%5°gÓ%>Ó?€GÙ '‰7�8ÓÐ/¨RÐ/r)   )rG   rG   .c                ó  — | j                  d«      dz   }	  ||dd|› �id¬«      }|j                  dv rt        d|j                  › d�«      ‚y
# t        j                  $ r&}t        d| j                  d«      › d|› d	�«      ‚d
}~ww xY w)zíProbe the proxy with the key so bad creds fail here, not inside the agent.

    Raises AgentRunError when the proxy is unreachable or rejects the key. Other
    non-2xx responses are tolerated; the agent's own call is the real test.
    r9   z
/v1/modelsÚAuthorizationzBearer é
   )ÚheadersÚtimeoutz%Could not reach the LiteLLM proxy at z: zB. Is it running, and is --base-url (or LITELLM_PROXY_URL) correct?N)i‘  i“  z LiteLLM rejected your key (HTTP z=). Run `lite login` to refresh it, or pass a valid --api-key.)r<   ÚrequestsÚRequestExceptionr#   Ústatus_code)r5   r6   rG   ÚurlÚrespÚes         r*   Úverify_proxy_keyrU   x   s½   € ð —‘ Ó%¨Ñ4€Cð
Ù˜#¨¸7À7À)Ð9LÐ'MÐWYÔZˆð ×Ñ˜:Ñ%ÜØ.¨t×/?Ñ/?Ð.@ð AIð Ió
ð 	
ð &øô ×$Ñ$ò 
ÜØ3°H·O±OÀCÓ4HÐ3IÈÈAÈ3ð OOð Oó
ð 	
ûð
ús   –A ÁBÁ!!BÂBz.cmdz.batÚ_WINDOWS_SHIM_SUFFIXESz%%cd:~,%Ú_CMD_PERCENT_GUARD)úú
Ú_CMD_LINE_BREAKSÚsegmentc                 ó^   — | j                  d«      }|dt        | «      t        |«      z
  z  z   S )Nú\z\\)r<   Úlen)r[   Úbares     r*   Ú_double_trailing_backslashesr`   —   s-   € Ø—.‘. Ó&€DØ�(œc '›l¬S°«YÑ6Ñ7Ñ7Ð7r)   Útokenc                 óˆ   — dj                  d„ | j                  d«      D «       «      }d|j                  dt        «      z   dz   S )a½  Quote one token so both parsers that read it see the original text.

    Follows the algorithm the Rust standard library settled on for batch files
    after CVE-2024-24576. Two parsers see this token: cmd.exe, which ends a
    quoted string on a lone `"` and so wants an embedded one doubled, and the
    shim's own interpreter, which re-splits `%*` under C runtime rules where a
    backslash escapes the quote that follows it, so every backslash run standing
    before a quote is doubled. Quoting cannot stop cmd expanding `%VAR%`, so each
    `%` is prefixed with `%%cd:~,`: the zero-length substring of the always
    defined `cd` expands to nothing and leaves no `%` pair for cmd to match.
    z""c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)r`   )Ú.0Úparts     r*   ú	<genexpr>z!_quote_for_cmd.<locals>.<genexpr>¨   s   è ø€ Ò_ÀdÔ;¸D×AÑ_ùó   ‚rB   ú%)ÚjoinÚsplitÚreplacerW   )ra   Úescapeds     r*   Ú_quote_for_cmdrn   œ   s>   € ð —Y‘YÑ_ÈeÏkÉkÐZ]ÓN^Ô_Ó_€GØ�—‘ Ô&8Ó9Ñ9¸CÑ?Ð?r)   r/   Úargsc                 óV  — t        |dd «      }t        j                  j                  | «      d   j	                  «       t
        vr| g|¢­S t        d„ |D «       «      r,t        dt        j                  j                  | «      › d�«      ‚dj                  d„ | g|¢­D «       «      }d|› d	�S )
a4  Build what CreateProcess runs, routing batch shims through cmd.exe.

    npm installs Claude Code as `claude.cmd`, which PATHEXT lets shutil.which
    resolve but CreateProcess refuses to run (WinError 193), so a shim has to go
    through the command processor. cmd.exe does not follow the C runtime quoting
    that subprocess would apply to an argument list, and it would split on `&` or
    `|` in a forwarded argument, so the shim case is emitted as one verbatim
    command line with every token quoted. Every switch is load-bearing: `/s`
    makes cmd strip only the outer pair, leaving each token quoted and its
    metacharacters inert, `/e:on` keeps the command extensions that the percent
    guard is built out of, `/v:off` keeps `!` from expanding, and `/d` keeps a
    machine's AutoRun commands out of the launch. argv[0] carries the
    caller-facing name on POSIX; Windows needs the resolved path there.

    Raises AgentRunError for an argument holding a line break, which cmd would
    read as the end of the command line and silently drop the rest of.
    r   Nc              3   ó:   K  — | ]  }t         D ]  }||v –— Œ
 Œ y ­wrd   )rZ   )re   ra   Úbrks      r*   rg   z#_windows_command.<locals>.<genexpr>Á   s!   è ø€ Ò
F˜EÔ5EÒ
F¨cˆ3�%Œ<Ð
Fˆ<Ñ
Fùs   ‚z4Cannot pass an argument containing a line break to `zW` on Windows: cmd.exe ends the command line there, so the agent would silently lose it.ú c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrd   )rn   )re   ra   s     r*   rg   z#_windows_command.<locals>.<genexpr>Æ   s   è ø€ ÒM°eœN¨5×1ÑMùrh   zcmd.exe /d /e:on /v:off /s /c "rB   )
Útupler.   r/   ÚsplitextÚlowerrV   Úanyr#   r0   rj   )r/   ro   ÚrestÚinners       r*   Ú_windows_commandr{   ¬   s°   € ô$ ˜˜Q˜R˜“/€DÜ	‡w�w×Ñ˜Ó˜aÑ ×&Ñ&Ó(Ô0FÑFØˆ}�t‰}ÐÜ
Ñ
F TÔ
FÔFÜØBÄ2Ç7Á7×CSÑCSÐTXÓCYÐBZð [að aó
ð 	
ð —8‘8ÑMÀ¸}Àt¹}ÔMÓM€EØ,¨U¨G°1Ð5Ð5r)   r>   c                 óX   — t        j                  | t        |«      d¬«      j                  S )NF)r>   Úcheck)Ú
subprocessÚrunr;   Ú
returncode)r+   r>   s     r*   Ú_spawn_and_waitr�   Ê   s   € Ü�>‰>˜'¤t¨C£y¸Ô>×IÑIÐIr)   )Úexecvper‚   ).Nc                ó<   —  || t        |«      t        |«      «       y rd   )Úlistr;   )r/   ro   r>   r‚   s       r*   Ú_replace_processr…   Î   s   € ñ ˆD”$�t“*œd 3›iÕ(r)   )Úplatformrl   Úspawnr†   rl   r‡   c                ó–   — |j                  d«      rt         |t        | |«      |«      «      ‚ || t        |«      t	        |«      «       y)ab  Replace this process with the agent; on Windows, run it as a child instead.

    os.exec* has no process-replacement semantics on Windows: the C runtime
    spawns a detached child and terminates the parent, so the shell reclaims the
    console and the agent's TUI never gets one. Windows therefore waits on the
    child and exits with its status.
    ÚwinN)Ú
startswithÚ
SystemExitr{   r„   r;   )r/   ro   r>   r†   rl   r‡   s         r*   Ú	_hand_offrŒ   Ø   s@   € ð  ×Ñ˜5Ô!Ü™Ô/°°dÓ;¸SÓAÓBÐBÙˆD”$�t“*œd 3›iÕ(r)   c                  ó6  — t         j                  j                  «       ry	 t        j                  dt        j
                  «      } 	 t        j                  | d«       t        j                  | «       y# t        $ r Y yw xY w# t        j                  | «       w xY w)aˆ  Reattach the controlling terminal to stdin before handing off to the agent.

    Completing the browser SSO login can leave stdin detached from the terminal,
    which makes a TUI agent like Claude Code start in non-interactive mode and
    exit immediately. Reopening /dev/tty onto fd 0 gives the agent a live
    terminal; when stdin is still a tty (no login happened) this is a no-op.
    Nz/dev/ttyr   )	ÚsysÚstdinÚisattyr.   ÚopenÚO_RDONLYÚOSErrorÚdup2Úclose)Úfds    r*   Ú_restore_controlling_terminalr—   í   so   € ô ‡y�y×ÑÔØðÜ—G‘G˜J¬¯©Ó4ˆðÜ
�‰��AŒä
�‰��øô ò Ùðûô
 	�‰��ús   ¡$A2 ÁB Á2	A>Á=A>ÂBF)Úskip_verifyr4   ÚwhichÚverifyÚlauncherÚreattach_terminalr˜   r™   rš   r›   rœ   c                ó®  — |st        d«      ‚t        |d   «      \  }	}
 ||d   «      }|€Rt        j                  t        j
                  j                  |d   «      «      }|rd|› �nd}t        d|d   › d|› �«      ‚|s	 || |«       t        |�|nt        j                  | ||
«      }t        |d   | «      }|� |«         |||d   g|¢|dd ¢|«       y)	ag  Validate, wire the environment, and hand off to the agent.

    On success this never returns: POSIX replaces the current process, Windows
    waits on the agent and exits with its status. Raises AgentRunError for
    missing binaries, an unreachable proxy, or a rejected key.
    reattach_terminal, when given, runs just before handoff to restore stdin.
    zNothing to run.r   Nz Install it first: Ú zCould not find `z` on your PATH.r   )
r#   r3   r   rG   r.   r/   r0   r@   ÚenvironrI   )r5   r6   r+   r˜   r4   r™   rš   r›   rœ   Ú_r7   ÚbinaryÚdocsÚhintr>   Ú
extra_argss                   r*   Ú	run_agentr¥     sø   € ñ& ÜÐ-Ó.Ð.ä ¨¡
Ó+�K€A€xÙ˜' !™*Ó%€FØ€~Ü#×'Ñ'¬¯©×(8Ñ(8¸À¹Ó(DÓEˆÙ6:Ð+¨D¨6Ñ2ÀˆÜÐ.¨w°q©z¨l¸/È$ÈÐPÓQÐQáÙˆx˜Ô!ä ØÐ(‰¬b¯j©jØØØó	€Cô *¨'°!©*°hÓ?€JØÐ$ÙÔÙˆV�g˜a‘jÐ< :Ð<°¸¸°Ð<¸cÕBr)   c                  ó>   — t         j                  j                  «       S rd   )rŽ   r�   r�   r(   r)   r*   Ú_is_interactiver§   -  s   € Ü�9‰9×ÑÓÐr)   Úctxc                 óN  — | j                   d   }| j                   j                  d«      }|r|S t        «       st        j                  d«      ‚t        j
                  d«       | j                  t        «       t        |t        | «      ¬«      }|st        j                  d«      ‚|S )Nr5   r6   z�No LiteLLM key found. Set LITELLM_PROXY_API_KEY (or pass --api-key) for non-interactive use, or run `lite login` from a terminal.z/No LiteLLM credentials found; starting login...)Úexpected_base_urlÚvaultz9Login did not produce an API key; cannot start the agent.)
ÚobjrG   r§   ÚclickÚClickExceptionÚechoÚinvoker
   r	   r   )r¨   r5   r6   s      r*   Úresolve_api_keyr±   1  s‘   € Ø—g‘g˜jÑ)€HØ�g‰g�k‰k˜)Ó$€GÙØˆäÔÜ×"Ñ"ðHó
ð 	
ô
 
‡J�JÐ@ÔAØ‡J�JŒuÔÜ °8ÔCWÐX[ÓC\Ô]€GÙÜ×"Ñ"Ð#^Ó_Ð_Ø€Nr)   z0Skip the pre-launch key check against the proxy.Ú_SKIP_VERIFY_HELPr¡   c                óR  — | j                   d   }t        «       }t        | «      }t        |«      \  }}t	        j
                  d|› d|j                  d«      › �«       	 t        |||g|¢||rt        nd ¬«       y # t        $ r#}	t	        j                  t        |	«      «      ‚d }	~	ww xY w)Nr5   zlitellm: routing z through proxy at r9   )r˜   rœ   )r¬   r§   r±   r3   r­   r¯   r<   r¥   r—   r#   r®   Ústr)
r¨   r¡   ro   r˜   r5   Ústarted_interactiver6   Údisplay_namer    rT   s
             r*   Ú_launchr·   H  s¦   € Ø—g‘g˜jÑ)€HÜ!0Ó!2ÐÜ$ SÓ)€Gä# FÓ+�O€L�!Ü	‡J�JÐ" < .Ð0BÀ8Ç?Á?ÐSVÓCWÐBXÐYÔZð	+ÜØØØˆO�dˆOØ#Ù@SÕ<ÐY]ö	
øô ò +Ü×"Ñ"¤3 q£6Ó*Ð*ûð+ús   ÁA: Á:	B&ÂB!Â!B&r¶   c                 óz  ‡ — t        j                  ‰ ddid|› d�¬«      t        j                  dddt        ¬«      t        j                  d	d
t         j
                  ¬«      t         j                  dt         j                  dt        d	t        t           dd fˆ fd„«       «       «       «       }d|› d‰ › d‰ › d�|_        |S )NÚignore_unknown_optionsTzRun z through your LiteLLM proxy)ÚnameÚcontext_settingsÚ
short_helpz--skip-verifyF)Úis_flagÚdefaultÚhelpro   éÿÿÿÿ)ÚnargsÚtyper¨   r˜   r,   c                 ó6   •— t        | ‰t        |«      |¬«       y )N)r˜   )r·   r„   )r¨   r˜   ro   r¡   s      €r*   Ú_commandz%_make_agent_command.<locals>._command]  s   ø€ ô 	��VœT $›Z°[ÖAr)   z routed through your LiteLLM proxy.

Logs in with LiteLLM if needed, verifies your key against the proxy, exports the env vars z8 reads, then hands off. Any arguments are forwarded to `z`.)r­   r+   Úoptionr²   ÚargumentÚUNPROCESSEDÚpass_contextÚContextÚboolr   r´   r¿   )r¡   r¶   rÄ   s   `  r*   Ú_make_agent_commandrË   \  s×   ø€ Ü
‡]�]ØØ2°DÐ9Ø˜,˜Ð'BÐCôô
 ‡\�\�/¨4¸ÔEVÔWÜ
‡^�^�F "¬5×+<Ñ+<Ô=Ü
×ÑðB”e—m‘mð B´$ð B¼hÄs¹mð BÐPTô Bó ó >ó XóðBð ˆ|ˆnð  à &˜xð (Ø˜ ð	$ð „Mð €Or)   c                  óJ   — t        d„ t        j                  «       D «       «      S )z@Build one top-level command per known agent, e.g. `lite claude`.c              3   ó@   K  — | ]  \  }\  }}t        ||«      –— Œ y ­wrd   )rË   )re   r¡   rº   Ú	_profiless       r*   rg   z!agent_commands.<locals>.<genexpr>s  s"   è ø€ ÒjÑ7P°vÑ?PÀÀiÔ$ V¨T×2Ñjùs   ‚)ru   r   Úitemsr(   r)   r*   Úagent_commandsrÐ   q  s   € äÑjÔTa×TgÑTgÓTiÔjÓjÐjr)   )r#   rÐ   rI   r3   r@   r±   r¥   rU   )r,   N)Cr.   Úshutilr~   rŽ   Úcollections.abcr   r   r   Útypingr   r­   rO   Úauthr   r	   r
   r   Ú__annotations__r   r   r   r   r   r   r1   r   r;   r´   ru   r   r!   Ú	Exceptionr#   r3   r@   r„   rD   rE   rI   rG   ÚResponserU   rV   rW   rZ   r`   rn   r{   Úintr�   r‚   r…   r†   rŒ   r—   r™   rÊ   r¥   r§   rÉ   r±   r²   r·   ÚCommandrË   rÐ   Ú__all__r(   r)   r*   ú<module>rÛ      sb  ðÜ 	Û Û Û 
ß 7Ñ 7Ý ã Û ç AÑ Aà 4Ð ˜Ó 4Ø"8Ð ˜%Ó 8Ø2Ð �uÓ 2Ø.Ð �UÓ .Ø,Ð �EÓ ,à&Ð �5Ó &Ø €�Ó  ð ™iÐ):Ð(;Ó<Ð=Ø‘y .Ð!1Ó2Ð3Ø™Y¨Ð'7Ó8Ð9ñ?€ˆu�T˜#˜u S¨)°C©.Ð%8Ñ9Ð9Ñ:Ñ;ó ð BØ6Ø*ñ(€ˆu�T˜#˜s˜(‘^Ñ$ó ð (Ð �eÓ 'ôR�Iô Rð	@˜3ð 	@ 5¨¨i¸©nÐ)<Ñ#=ó 	@ðØ�c˜3�hÑðàðð ðð ˜‰nð	ð
 
ˆ#ˆsˆ(�^óð2 ð ¨¨S©	ó ð8 Ðð=€ˆU�4˜˜X s e¨T°#©YÐ&6Ñ7Ð7Ñ8Ñ9ó ð
0˜sð 0¨cð 0°d¸3±ió 0ð -5¯L©Lò	
Øð
àð
ð 
�#�x×(Ñ(Ð(Ñ	)ð	
ð
 
ó
ñ4 1:¸6À6Ð:JÓ0KÐ ˜˜i¨™nÑ-Ó KØ&Ð �EÓ &Ø&Ð �%Ó &ð8¨#ð 8°#ó 8ð
@˜#ð @ #ó @ð 6˜3ð 6 h¨s¡mð 6¸¸eÀCÈÀH¹oÑ8Mó 6ð<J˜S 8¨C¡=Ñ0ð J°w¸sÀC¸xÑ7Hð JÈSó Jð $&§:¡:ò)Ø
ð)à
�3‰-ð)ð 
��c�Ñ	ð)ð
 �iÑ ð)ð 
ó)ð —L‘LØGWØETò)Ø
ð)à
�3‰-ð)ð 
��c�Ñ	ð)ð
 ð)ð �s˜H S™M¨7°3¸°8Ñ+<Ð=¸tÐCÑDð)ð �S˜8 C™=Ñ(¨'°#°s°(Ñ*;Ð<¸cÐAÑBð)ð 
ó)ó*ð2 Ø)-Ø)/¯©Ø)9ØHQØ37ò)CØð)Càð)Cð �c‰]ð)Cð
 ð)Cð �c˜3�hÑ $Ñ&ð)Cð �S�E˜3 ™:Ð%Ñ&ð)Cð �c˜3�Z Ð%Ñ&ð)Cð ˜˜X c™]¨G°C¸°HÑ,=Ð>ÀÐDÑEð)Cð    D Ñ)¨DÑ0ð)Cð 
ó)CðX˜ó ð˜Ÿ™ð ¨3ó ð( NÐ �5Ó Mð+�—‘ð +¨ð +°8¸C±=ð +ÐRVð +Ð[_ó +ð( ð °3ð ¸5¿=¹=ó ð*k˜˜eŸm™m¨SÐ0Ñ1ó kò
	�r)   