+
    5mj& c                  	   ^ RI Ht ^ RIt^ RIHu Ht ^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIt]P,                  P/                  ^ ]! ]! ]4      P5                  4       P6                  ^,          4      4       ^ RIt^ RIt^ RIHtH t  ^ RI!H"t"H#t# ]PH                  ! RR	7      R
 R l4       t%R R lt&RR R llt'RR 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! lt0R" R# lt1R$ R% lt2R& R' lt3R( R) lt4R* R+ lt5]Pl                  Po                  R. ROR/R..3R0.R1. 3R-R2.R3. 3R-R4.R5. 3R-R6.R7. 3R-R8.R9. 3R..RR..3.4      R: R; l4       t8]Pl                  Po                  R. RO4      R< R= l4       t9]Pl                  Po                  R>R/R7.4      R? R@ l4       t:]Pl                  Po                  R>. RO4      RA RB l4       t;RC RD lt<RE RF lt=RG RH lt>RI RJ lt?RK RL lt@RM RN ltA]Pl                  Po                  R. RORPRR..3RQ.RPR. 3RRRP.RRP. 3RSRT.RURP. 3R-R6.RRR-R6.3RVRP.RPRP. 3. RORPRU. 3.4      RW RX l4       tB]Pl                  Po                  R,RO.RY..4      RZ R[ l4       tCR\ R] ltDR^ R_ ltER`tFRatGRb Rc ltHRd Re ltIRf Rg ltJRh Ri ltKRj Rk ltLRl Rm ltMRn Ro ltNRp Rq ltORr Rs ltPRt Ru ltQRv Rw ltRRx Ry ltSRz R{ ltTR| R} ltUR~ R ltVR R ltWRRRRRRR>R1RR/R R lltXR R ltYRR R lltZRR R llt[RR R llt\R R lt]R R lt^R R lt_]Pl                  Po                  R. RO4      R R l4       t`]Pl                  Po                  R. ROR/3RR..R13. ROR33RR..R/3.4      R R l4       ta]Pl                  Po                  RR8]P                  3R4]P                  3R9]P                  3R.4      R R l4       tc]Pl                  Po                  RR.R3RR-.R3. ROR3. ROR3. ROR3. ROR3. ROR3. RO]P                  ! ]P                  4      3.4      R R l4       teR R ltfR R ltgR R lthR R ltiR R ltjR R ltkR R ltlR R ltmR R ltnR R ltoR R ltpR R ltqR R ltrR R ltsR R lttR R ltuR R ltvR R ltwR R ltxR R ltyR R ltzR R lt{R R lt|R# )    )annotationsNPath)Mapping)cast)CredentialAuthorityResolvedCredentialsAuthorityDataPlaneGatewayStatusT)autousec                    V ^8  d   QhRRRR/#    monkeypatchpytest.MonkeyPatchreturnNone )formats   "\/home/user/overdeck-private-tests/workstation-ai-broad/modules/systray/tests/test_claudex.py__annotate__r      s     8 8/ 8D 8    c                F    V P                  \        P                  R 4       R# )1N)setenvclaudexPROXY_SCOPE_MARKERr   s   &r   proxy_scoper      s    w1137r   c                    V ^8  d   QhRRRR/# )r   expintr   strr   )r   s   "r   r   r      s     ) )S )S )r   c                    \         P                  ! \        P                  ! R V /4      P	                  4       4      P                  4       P                  R4      pRV R2# )r!   =zheader.z
.signature)base64urlsafe_b64encodejsondumpsencodedecoderstrip)r!   payloads   & r   jwtr.      sL    &&tzz5#,'?'F'F'HIPPRYYZ]^GWIZ((r   c               $    V ^8  d   QhRRRRRR/# r   r!   r"   refreshr#   r   dict[str, object]r   )r   s   "r   r   r   "   s"      S 3 >O r   c                8    R RRRRRRR\        V 4      RVR	R
RR//# )OPENAI_API_KEYN	auth_modechatgptlast_refreshz2026-07-22T00:00:00Ztokensaccess_tokenrefresh_token
account_id	account-1id_tokenkeep-id-tokenr.   r!   r1   s   &&r   native_authrA   "   s<    $Y.CHW+	
	
 
r   c               $    V ^8  d   QhRRRRRR/# r0   r   )r   s   "r   r   r   0   s"      C # <M r   c                6    R \        V 4      RVRV R,          RR/# )accessr1   expiresi  	accountIdr<   r?   r@   s   &&r   
proxy_authrG   0   s(    #c(73:[	 r   c               $    V ^8  d   QhRRRRRR/# )r   pathr   r-   r2   r   r   r   )r   s   "r   r   r   9   s"     ; ;T ;$5 ;$ ;r   c                    V P                   P                  R R R7       V P                  \        P                  ! V4      RR7       R# Tparentsexist_okutf-8encodingNparentmkdir
write_textr(   r)   rI   r-   s   &&r   
write_jsonrW   9   2    KKdT2OODJJw''O:r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   >   s        # 	 r   c                  a . oR  V3R llpV P                  \        P                  4       V P                  \        P                  RR 4       V P                  \        P
                  R. RO4       V P                  \        P                  RR 4       V P                  \        P                  RV4       \        P                  ! \        RR	7      ;_uu_ 4        \        P                  ! 4        R
R
R
4       . ROpSV8H  q3'       g   \        P                  ! RV3RSV34      RR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                   ! S4      MRR\        P                   ! V4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR
;r2R
#   + '       g   i     L; i)c               $    V ^8  d   QhRRRRRR/# )r   rI   r#   argv	list[str]r   r   r   )r   s   "r   r   Otest_enter_proxy_slice_reexecs_claudex_in_unlimited_slice.<locals>.__annotate__C   s!     # # #I #$ #r   c                  < R q V8H  q3'       g   \         P                  ! RV3R	W34      RR\        P                  ! 4       9   g   \         P                  ! V 4      '       d   \         P
                  ! V 4      MRR\         P
                  ! V4      /,          pRRV/,          p\        \         P                  ! V4      4      hR;r2SP                  V4       \        R4      h)
/bin/systemd-runpy0rI   py3assert %(py5)spy5Nexec==z%(py0)s == %(py3)s)

@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationextendRuntimeError)rI   r\   @py_assert2@py_assert1@py_format4@py_format6commands   &&    r   
fake_execvMtest_enter_proxy_slice_reexecs_claudex_in_unlimited_slice.<locals>.fake_execvC   sz    ))))))))t))))))t))))t))))))))))))t6""r   whichc                    R # )r`   r   names   &r   <lambda>Ktest_enter_proxy_slice_reexecs_claudex_in_unlimited_slice.<locals>.<lambda>I   s    >Pr   r\   getpidc                     R # )iA  r   r   r   r   r~   r   K   s    cr   execvre   matchNra   rw   rb   rc   rd   )/bin/claudex-msol)r`   z--userz--scopez--quietz	--collectz
--same-dirz--slice=claudex-proxy.slicez--unit=claudex-proxy-321.scopez--setenv=CLAUDEX_PROXY_SCOPE=1r   r   r   rf   rh   )delenvr   r   setattrshutilsysospytestraisesrr   enter_proxy_sliceri   rj   rk   rl   rm   rn   ro   rp   )r   rx   rs   rt   ru   rv   rw   s   &     @r   9test_enter_proxy_slice_reexecs_claudex_in_unlimited_slicer   >   sV    G# #
 w1121PQV-JK

Hk:

GZ8	|6	2	2!!# 
3 7     7      7   7            
3	2s   F<<G	c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   a   s     * *#*	*r   c                  aa . o ! V3R  lR4      oV P                  \        P                  RV3R l4       V P                  \        P                  RR 4       \        P                  ! ^{4       ^\
        P                  3.pSV8H  q"'       g   \        P                  ! RV3RSV34      RR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;r!R# )c                  *   < ] tR t^ftR V 3R lltRtR# )Htest_parent_death_signal_terminates_proxy_with_claudex.<locals>.FakeLibcc               $    V ^8  d   QhRRRRRR/# )r   optionr"   death_signalzsignal.Signalsr   r   )r   s   "r   r   Utest_parent_death_signal_terminates_proxy_with_claudex.<locals>.FakeLibc.__annotate__g   s!     	 	 	> 	c 	r   c                	,   < SP                  W34       ^ # r   append)selfr   r   callss   &&&r   prctlNtest_parent_death_signal_terminates_proxy_with_claudex.<locals>.FakeLibc.prctlg   s    LL&/0r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   s   r   FakeLibcr   f   s    	 	r   r   CDLLc                    < S! 4       # Nr   )argskwargsr   s   *,r   r~   Htest_parent_death_signal_terminates_proxy_with_claudex.<locals>.<lambda>k   s    
r   getppidc                     ^{# ){   r   r   r   r   r~   r   l   s    sr   ra   r   rb   rc   rd   Nrf   rh   )r   r   ctypesr   _set_parent_death_signalsignalSIGTERMri   rj   rk   rl   rm   rn   ro   rp   )r   rs   rt   ru   rv   r   r   s   &    @@r   6test_parent_death_signal_terminates_proxy_with_claudexr   a   s     /1E 
 0RS

I{;$$S)())5))))))5)))))))5))))5))))))))))))r   c               $    V ^8  d   QhRRRRRR/# r   tmp_pathr   r   r   r   r   r   )r   s   "r   r   r   s   s)     T TT!3T	Tr   c                2  a  S R ,          pVR,          R,          R,          R,          p\        V\        ^4      4       VR,          P                  RRR7       VP                  \        P
                  R	V 3R
 l4       \        P                  ! 4       pVP                  pRqeV8H  qw'       g   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rvVP                   qUV8H  qw'       g   \        P                  ! RV3RWS34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          p
RRV
/,          p\        \        P                  ! V4      4      hR;rWVP"                  pRqV,          pRqV,          pRpVV,          pVV8H  qw'       EgB   \        P                  ! RV3RVV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;p;ppR# ) %.local/state/overdeck/systray/runtimeaccountsrafa
CODEX_HOME	auth.jsondefault_slugzrafa
rO   rP   homec                    < S # r   r   r   s   r   r~   Ltest_resolve_selected_account_uses_current_systray_default.<locals>.<lambda>z       hr   ra   selectedpy2rd   assert %(py7)spy7Npy4	auth_pathassert %(py6)spy6CLAUDEX_HOMEbasepy9py12assert %(py15)spy15rf   z,%(py2)s
{%(py2)s = %(py0)s.slug
} == %(py5)sz8%(py2)s
{%(py2)s = %(py0)s.native_auth_path
} == %(py4)sz]%(py2)s
{%(py2)s = %(py0)s.proxy_config_dir
} == (((%(py4)s / %(py6)s) / %(py9)s) / %(py12)s))rW   rA   rU   r   r   r   resolve_selected_accountslugri   rj   rk   rl   rm   rn   ro   rp   native_auth_pathproxy_config_dir)r   r   r   r   r   rt   @py_assert4@py_assert3rv   @py_format8@py_format5@py_format7@py_assert5@py_assert7@py_assert8@py_assert10@py_assert11@py_assert13@py_format14@py_format16s   f&                  r   :test_resolve_selected_account_uses_current_systray_defaultr   s   sL    ==Dz!F*\9KGIy+c*+	N&&x'&Bf.>?//1H=="F"F"""""=""""""8""""8"""="""F""""""""$$1	11111$111111811118111$111111	1111	11111111$$SzSz(9SFSF(BS^S(B^(SS$(SSSSSS$(SSSSSSS8SSSS8SSS$SSSSSSSSSSSSSzSSSFSSS^SSSSSSSSSr   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r      s      $ r   c                    \         P                  ! \        ^4      4      p R\        ^4      RRRRRR/qV8H  q"'       g   \        P
                  ! RV3RW34      RR	\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR	R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;r!R# )   rD   r1   native-refreshrE   i@ rF   r<   ra   	convertedrb   rc   rd   Nrf   rh   )r   native_to_proxy_authrA   r.   ri   rj   rk   rl   rm   rn   ro   rp   )r   rs   rt   ru   rv   s        r   (test_native_auth_converts_to_proxy_shaper      s    ,,[-=>I 	#c(#7[	     
 9  
  
 9  
 9  
       
  r   c                    V ^8  d   QhRRRR/# r   r   r   r   r   r   )r   s   "r   r   r      s     7 77	7r   c                p	   V R ,          R,          pV R,          R,          R,          p\        V\        ^d4      4       \        V\        ^4      4       \        P                  ! W4       \
        P                  ! VP                  RR7      4      pVR,          R,          p^p\        V4      qdV8H  qw'       g   \        P                  ! R"V3R#WF34      R\        P                  ! V4      R	R
\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MR
R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;p;rVVR,          R,          pRqV
8H  qw'       gy   \        P                  ! R"V3R$WJ34      R\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;rzVR,          R,          pRqV
8H  qw'       gy   \        P                  ! R"V3R$WJ34      R\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;rzVR,          pRqV
8H  qw'       gy   \        P                  ! R"V3R$WJ34      R\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;rzVP"                  q! 4       qP$                  pRqV,          pRpVV8H  pV'       Eg
   \        P                  ! R"V3R%VV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR R!V/,          p\        \        P                   ! V4      4      hR;p;p
;p;p;p;ppR# )&r   r   r   codexrO   rP   r8   r9   py1rb   r.   rd   r   assert %(py9)sr   Nr:   proxy-refreshr   r   r   r=   r>   r5   r6       ra   native_pathr   py8r   assert %(py14)spy14rf   )z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}z%(py1)s == %(py4)szm(%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_mode
} & %(py8)s) == %(py12)s)rW   rA   rG   r   reconcile_credentialsr(   loads	read_textr.   ri   rj   rn   rk   rl   rm   ro   rp   statst_mode)r   r   
proxy_pathnative@py_assert0r   @py_assert6rs   r   @py_format10r   r   r   rt   r   r   @py_assert9r   r   @py_format13@py_format15s   &                    r   Jtest_reconcile_exports_newer_proxy_tokens_without_clobbering_native_fieldsr     s    \)K7KN*W4{BJ{K,-z:c?+!!+:ZZ--w-?@F(N+737s3x7x77777+777+777777s7777s7773777x77777777(O,???????,???,???????????(J':?:?:::::':::':::?::::::::++)+)+++++++++++)++++++++66%%66-66-66666-666666;6666;666666666%666666666666666r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     6 6 6$ 6r   c                   V R ,          R,          pV R,          R,          R,          p\        V\        R4      4       \        V\        ^4      4       \        P                  ! W4       \
        P                  q2P                  pRqT! VR7      qc! V4      pR\        R4      RR	R
RRR/qV8H  q'       Egu   \        P                  ! R"V	3R#Wx34      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p
RRV
/,          p\        \        P                   ! V4      4      hR;p;p;p;p;p;rVP"                  q3! 4       qP$                  pRqV,          pRpVV8H  qw'       Eg
   \        P                  ! R"V3R$VV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R \        P                  ! V4      /,          pR!RV/,          p
\        \        P                   ! V
4      4      hR;p;p;p;p;p;ppR# )%r   r   r   r   i,  rO   rP   rD   r1   r   rE   i rF   r<   ra   r(   r   rb   r  rd   r   r   py11r   assert %(py16)spy16Nr   r   r   r   r   r   r   rf   z%(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.read_text
}(encoding=%(py7)s)
})
} == %(py14)sr   )rW   rA   rG   r   r   r(   r   r  r.   ri   rj   rk   rl   rm   rn   ro   rp   r  r  )r   r   r  rt   r   r  r   r   r   @py_assert12r  @py_format17r   r   r   r	  r   r
  s   &                 r   *test_reconcile_imports_newer_native_tokensr     s   \)K7KN*W4{BJ{K,-z:c?+!!+::: ** G *G< :<= #c(#7[	B  B   
 =  
  
 4  
 4  
 :  
  
 j  
 j  
 *  
 G  
 <  
 =  
  B     
    ??5?5$$5u5u,55,55555,555555:5555:555?555555$555u555555555555r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     ? ?4 ?TX ?r   c                f   V R ,          R,          pV R,          R,          R,          p\        V\        ^4      4       \        V\        ^4      4       \        P                  ! \
        P                  4      ;_uu_ 4        \
        P                  ! W4       RRR4       R#   + '       g   i     R# ; i)r   r   r   r   N)rW   rA   rG   r   r   r   CredentialConflictErrorr   )r   r   r  s   &  r   <test_reconcile_rejects_equal_expiry_divergent_refresh_tokensr     st    \)K7KN*W4{BJ{K,-z:c?+	w66	7	7%%k> 
8	7	7	7s   >BB0	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r      s)     c( c(c(!3c(	c(r   c                1  a a!a" V R ,          R,          pV R,          p\        V\        ^4      4       \        P                  ! RW#4      o". o! ! V!3R lR4      o R V V!3R llpR V!3R	 llpVP	                  \        R
RlV"3R ll4       VP                  R\        V 4      4       VP                  RRR7       VP	                  \        P                  RR 4       VP	                  \        RR 4       VP	                  \        RR 4       VP	                  \        P                  RV4       VP	                  \        P                  RV4       VP                  RR4       VP                  RR4       VP                  RR4       VP                  RR 4       VP                  R!R"4       VP                  R#R$4       VP                  R%R&4       VP                  R'R$4       \        P                  ! R(R).4      p^qvV8H  q'       g   \        P                  ! RmV3RnWg34      R*R+\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR+R,\        P                   ! V4      /,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rS!^ ,          w  r. RoOq{V8H  q'       g   \        P                  ! RmV3RnW34      R*R/\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR/R,\        P                   ! V4      /,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rVR0,          p\        V4      qV8H  qw'       Eg   \        P                  ! RmV3RpW34      R1\        P                   ! V4      R,R2\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                   ! \        4      MR2R3R4\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR4R5\        P                   ! V4      /,          pR6R7V/,          p\#        \        P$                  ! V4      4      hR;p;r~VR8,          pR9pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR;,          pR<pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppR=qV9  qw'       g   \        P                  ! RrV3RsW34      R1\        P                   ! V4      R,R>\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR>/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rVR?,          pR@pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppS!^,          w  ppRARBRC\        VRD,          4      .pVV8H  q'       g   \        P                  ! RmV3RnVV34      R*RE\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRER,\        P                   ! V4      /,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;r\&        P(                  pRDpVV,          pVP*                  pRFpV! VRG7      pV! V4      pRH. RtO/pVV8H  pV'       Eg   \        P                  ! RmV3RuVV34      R*RL\        P                  ! 4       9   g!   \        P                  ! \&        4      '       d   \        P                   ! \&        4      MRLRM\        P                   ! V4      R,R4\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR4R.\        P                   ! V4      R7\        P                   ! V4      RN\        P                   ! V4      RO\        P                   ! V4      RP\        P                   ! V4      RQ\        P                   ! V4      /	,          pRRRSV/,          p\#        \        P$                  ! V4      4      hR;p;p;p;p;p;p;p;ppVRT,          pRUpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRV,          pRIpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRW,          pRKpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR,          pRIpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRX,          pRYpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRZ,          pR[pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR,          pRJpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR\,          pR]pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR,          pRKpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVR^,          pR_pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppRqV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rR!qV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rR#qV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rR'qV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rR%qV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rVRa,          pR$pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRb,          pRcpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRd,          pRpVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppVRe,          qP,                  p\        V4      pVV8H  qw'       Eg4   \        P                  ! RmV3RvVV34      R1\        P                   ! V4      R,R2\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                   ! \        4      MR2R3Rf\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRfR5\        P                   ! V4      R7\        P                   ! V4      /,          pRgRNV/,          p\#        \        P$                  ! V4      4      hR;p;p;ppVRh,          pRipVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppRjqV9  qw'       g   \        P                  ! RrV3RsVV34      R1\        P                   ! V4      R,R`\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR`/,          p	R-R.V	/,          p
\#        \        P$                  ! V
4      4      hR;rS!^,          ^ ,          pRk.pVV8H  qw'       gz   \        P                  ! RmV3RqVV34      R1\        P                   ! V4      R3\        P                   ! V4      /,          pR:R5V/,          p\#        \        P$                  ! V4      4      hR;p;ppR# )wr   r   r   r   c                  V   < ] tR t^tRtR R ltR V 3R lltRR R lltR R	 ltR
t	R# )Ntest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxyNc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   [test_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxy.__annotate__        	 	$ 	r   c                	    R # r   r   r   s   &r   pollStest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxy.poll       r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r          	. 	.t 	.r   c                	0   < SP                  R ./ 34       R# 	terminateNr   r   r   s   &r   r*  Xtest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxy.terminate       LL;-,-r   c                    V ^8  d   QhRRRR/# r   timeoutzfloat | Noner   r"   r   )r   s   "r   r   r          	 	 	 	r   c                	    ^ # r   r   r   r0  s   &&r   waitStest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxy.wait       r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s     	C 	C$ 	Cr   c                	    \        R 4      h)zproxy should terminate cleanlyro   r"  s   &r   killStest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.FakeProxy.kill   s     !ABBr   r   r   
r   r   r   r   
returncoder#  r*  r4  r:  r   r   s   r   	FakeProxyr     s(    
		. 	.		C 	Cr   r>  c               $    V ^8  d   QhRRRRRR/# r   r   r]   r   objectr   r>  r   )r   s   "r   r   Qtest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.__annotate__   !       f  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       S! 4       # envr   r   dictr#   r   r   r>  r   s   &,r   
fake_popenOtest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.fake_popen   /    dDc3h?@A{r   c               $    V ^8  d   QhRRRRRR/# r   r   r]   r   rA  r    subprocess.CompletedProcess[str]r   )r   s   "r   r   rB     "     4 4y 4F 47W 4r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       \        P
                  ! V ^4      # rE  r   r   rH  r#   
subprocessCompletedProcessr   r   r   s   &,r   fake_runMtest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.fake_run   :    dDc3h?@A**433r   r   Nc                   < S# r   r   r   r   s   &r   r~   Mtest_run_launches_proxy_and_claude_with_requested_sol_model.<locals>.<lambda>       xr   HOMECLAUDE_CONFIG_DIRFraisingrz   c                    R V  2# z/bin/r   r|   s   &r   r~   r[     
    dVnr   find_available_portc                     R # i[  r   r   r   r   r~   r[         r   wait_for_proxyc                    R # r   r   processports   &&r   r~   r[         r   PopenrunANTHROPIC_DEFAULT_OPUS_MODEL
stale-opusANTHROPIC_DEFAULT_SONNET_MODELzstale-sonnetANTHROPIC_DEFAULT_HAIKU_MODELzstale-haiku4ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIESstaleANTHROPIC_DEFAULT_FABLE_MODELzstale-fable*CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERYr   CLAUDE_CODE_SUBAGENT_MODELzstale-subagent(CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC--modelr   ra   resultrb   rc   rd   
proxy_argsCCP_CONFIG_DIRr   r#   r   	proxy_dirr   assert %(py8)sr   CCP_BIND_ADDRESS	127.0.0.1r   PORT23456CCP_CODEX_MODEL	proxy_envCCP_CODEX_SERVICE_TIERfast/bin/claude--dangerously-skip-permissions
--settingsclaude-settings.jsonclaude_argsrO   rP   availableModelsgpt-5.6-solgpt-5.6-terragpt-5.6-lunar(   r   py10r   r   py17zassert %(py19)spy19ANTHROPIC_BASE_URLhttp://127.0.0.1:23456ANTHROPIC_MODELANTHROPIC_SMALL_FAST_MODEL!ANTHROPIC_DEFAULT_OPUS_MODEL_NAMEGPT-5.6 Sol(ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTIONz%GPT-5.6 Sol through claude-code-proxy#ANTHROPIC_DEFAULT_SONNET_MODEL_NAMEGPT-5.6 Terra"ANTHROPIC_DEFAULT_HAIKU_MODEL_NAMEGPT-5.6 Luna
claude_env CLAUDE_CODE_ALWAYS_ENABLE_EFFORT$CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY3SYSTRAY_CODEX_ACCOUNT_SLUGSYSTRAY_CODEX_ACCOUNT_HOMEr   assert %(py10)sENABLE_TOOL_SEARCHfalseCLAUDE_CODE_AUTO_COMPACT_WINDOWr*  r   rf   rh   /bin/claude-code-proxyservez--no-monitorz0%(py1)s == %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}r   not inz%(py1)s not in %(py3)sr  r  r  )z%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py12)s
{%(py12)s = %(py8)s
{%(py8)s = (%(py3)s / %(py5)s).read_text
}(encoding=%(py10)s)
})
} == %(py17)s)zL%(py1)s == %(py8)s
{%(py8)s = %(py3)s(%(py6)s
{%(py6)s = %(py4)s.parent
})
})rW   rA   r   SelectedAccountr   r   r#   r   r   rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   r(   r   r  rS   )#r   r   r   r~  rJ  rV  r{  rs   rt   ru   rv   r|  r  r  r   r   @py_format9r   r   r  r  r   r  r   r	  r   r   @py_assert16@py_assert15@py_format18@py_format20@py_format11r>  r   r   s#   &&                              @@@r   ;test_run_launches_proxy_and_claude_with_requested_sol_modelr     s    \)K7K>)I{K,-&&v{FH46EC C 4 4 !;=WXvs8}-*E:1LM!6F!13MN**GZ@**E8<5|D7H6FMwW6FCSI35EFA3G[[)U+,FQ;666Q!!HJLLLLLLLL:LLLLLL:LLLL:LLLLLLLLLLLL%&8#i.8.88888&888&888888#8888#8888888i8888i888.88888888'(7K7(K77777(K777(777K77777777V'''''''''''''''''''''-I--------------I----I---------.8&8.&88888.&888.888&88888888#AhK(I../	 ;    
 ;   
  
 ;  
 ;  
       
   :: +	+	+	+66@G6H:H  	 

 
    
    4   4   :     	  	  +  6  @G  H      
         *+G/GG+/GGGGGG+/GGGG+GGG/GGGGGGGGG'(9M9(M99999(M999(999M9999999923E~E3~EEEEE3~EEE3EEE~EEEEEEEE45FF5FFFFF5FFF5FFFFFFFFFFF9:KmK:mKKKKK:mKKK:KKKmKKKKKKKK=>2>2	3  >2  >  2        67J?J7?JJJJJ7?JJJ7JJJ?JJJJJJJJ;<OO<OOOOO<OOO<OOOOOOOOOOO56H.H6.HHHHH6.HHH6HHH.HHHHHHHH:;M~M;~MMMMM;~MMM;MMM~MMMMMMMMASSSSSSASSSASSSSSSSSSSSSSSSSSS*<*<<<<<**<<<*<<<<<<*<<<<*<<<<<<<<7IzIIIII7zIII7IIIIIIzIIIIzIIIIIIII5GZGGGGG5ZGGG5GGGGGGZGGGGZGGGGGGGG'9z99999'z999'999999z9999z9999999989@S@9S@@@@@9S@@@9@@@S@@@@@@@@<=DD=DDDDD=DDD=DDDDDDDDDDD23=v=3v=====3v===3===v========23N;M;MNs;M7NN37NNNNNN37NNNN3NNNNNNsNNNNsNNNNNNN;NNNN;NNN;MNNN7NNNNNNNNN*+6w6+w66666+w666+666w66666666,>J>>>>>,J>>>,>>>>>>J>>>>J>>>>>>>>8A;';-';-''''';-''';'''-''''''''r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   !  s$     =( =(=(!3=(	=(r   c                *  a aaa S R ,          R,          pS R,          p\        V\        ^4      4       \        P                  ! RW#4      o. o ! V3R lR4      oR VV3R llpR V3R	 llpVP	                  \        P
                  R
V 3R l4       VP	                  \        RR>V3R ll4       VP	                  \        RR 4       VP                  R\        S 4      4       VP                  RRR7       VP	                  \        P                  RR 4       VP	                  \        RR 4       VP	                  \        RR 4       VP	                  \        P                  RV4       VP	                  \        P                  RV4       \        P                  ! R.4      p^	qvV8H  q'       g   \        P                  ! R?V3R@Wg34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR \        P"                  ! V4      /,          p	R!R"V	/,          p
\%        \        P&                  ! V
4      4      hR;rVR#,          p\(        P*                  qP,                  pR$q! VR%7      q! V4      pR&. RAO/pVV8H  pV'       Egv   \        P                  ! R?V3RBVV34      RR(\        P                  ! 4       9   g!   \        P                   ! \(        4      '       d   \        P"                  ! \(        4      MR(R)\        P"                  ! V4      R R*\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR*R"\        P"                  ! V4      R+\        P"                  ! V4      R,\        P"                  ! V4      R-\        P"                  ! V4      R.\        P"                  ! V4      /,          pR/R0V/,          p\%        \        P&                  ! V4      4      hR;p;p;p;p;p;ppS^,          w  ppR1R2R3\        V4      .pVV8H  q'       g   \        P                  ! R?V3R@VV34      RR4\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR4R \        P"                  ! V4      /,          p	R!R"V	/,          p
\%        \        P&                  ! V
4      4      hR;rVR5,          pR6pVV8H  qw'       gz   \        P                  ! R?V3RCVV34      R7\        P"                  ! V4      R8\        P"                  ! V4      /,          pR9R:V/,          p\%        \        P&                  ! V4      4      hR;p;ppVR;,          pR'pVV8H  qw'       gz   \        P                  ! R?V3RCVV34      R7\        P"                  ! V4      R8\        P"                  ! V4      /,          pR9R:V/,          p\%        \        P&                  ! V4      4      hR;p;ppRpVV9  qw'       g   \        P                  ! RDV3REVV34      R7\        P"                  ! V4      R R<\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR</,          p	R!R"V	/,          p
\%        \        P&                  ! V
4      4      hR;ppS^,          ^ ,          pR=.pVV8H  qw'       gz   \        P                  ! R?V3RCVV34      R7\        P"                  ! V4      R8\        P"                  ! V4      /,          pR9R:V/,          p\%        \        P&                  ! V4      4      hR;p;ppR# )Fr   r   r   zync2c                  J   < ] tR tRtRtR R ltR V 3R lltR
R R lltR	tR# )\test_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.FakeProxyi*  Nc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   itest_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.FakeProxy.__annotate__-  r   r   c                	    R # r   r   r"  s   &r   r#  atest_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.FakeProxy.poll-  r%  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  0  r'  r   c                	0   < SP                  R ./ 34       R# r)  r   r+  s   &r   r*  ftest_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.FakeProxy.terminate0  r-  r   c                    V ^8  d   QhRRRR/# r/  r   )r   s   "r   r   r  3  r1  r   c                	    ^ # r   r   r3  s   &&r   r4  atest_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.FakeProxy.wait3  r6  r   r   r   	r   r   r   r   r=  r#  r*  r4  r   r   s   r   r>  r  *  !    
		. 	.	 	r   r>  c               $    V ^8  d   QhRRRRRR/# r@  r   )r   s   "r   r   _test_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.__annotate__6  rC  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       S! 4       # rE  rG  rI  s   &,r   rJ  ]test_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.fake_popen6  rL  r   c               $    V ^8  d   QhRRRRRR/# rN  r   )r   s   "r   r   r  :  rP  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       \        P
                  ! V ^	4      # rE  rR  rU  s   &,r   rV  [test_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.fake_run:  rX  r   r   c                    < S # r   r   r   s   r   r~   [test_run_with_pinned_account_falls_back_to_codex_only_when_claude_missing.<locals>.<lambda>>  r   r   r   Nc                   < S# r   r   rZ  s   &r   r~   r  ?  r\  r   claude_account_existsc                    R # Fr   r   s   &r   r~   r  @      ur   r]  r^  Fr_  rz   c                    R V  2# rb  r   r|   s   &r   r~   r  C  rc  r   rd  c                     R # rf  r   r   r   r   r~   r  D  rg  r   rh  c                    R # r   r   rj  s   &&r   r~   r  E  rm  r   rn  ro  --account=zync2ra   r{  rb   rc   rd   r  rO   rP   r  r  r(   r   settings_pathr   r   r  r   r  r  r  r  r  r  r  r  r   r   r   r   r  r  r*  r   rf   rh   r  r  r   r  r  )rW   rA   r   r  r   r   r   r#   r   r   rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   r(   r   r  )r   r   r   r~  rJ  rV  r{  rs   rt   ru   rv   r  r   r  r   r   r   r  r  r  r  r  r  r   r   r   r>  r   r   s   f&                        @@@r   Itest_run_with_pinned_account_falls_back_to_codex_only_when_claude_missingr  !  s    \)K7K>)I{K,-&&wGH46E
 
 4 4 f.>?!;=WX!8:LMvs8}-*E:1LM!6F!13MN**GZ@**E8<[[+,-FQ;666Q 66M:: -- w -w? :?@  
E @ E    @ E     4   4   :     m   m   -   w   ?   @    E          $AhK(M	 ;    
 ;   
  
 ;  
 ;  
       
   *+G/GG+/GGGGGG+/GGGG+GGG/GGGGGGGGG'(9M9(M99999(M999(999M999999990j00000j000000000j0000j000000008A;';-';-''''';-''';'''-''''''''r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   a  s)     V( V(V(!3V(	V(r   c                X  aa a!a" V R ,          R,          pV R,          pV R,          p\        V\        ^4      4       \        P                  ! RW#4      o"\        P                  ! RVR\        V4      /4      o . o! ! V!3R lR4      oR VV!3R	 llpR
 V!3R llpVP                  \        RRYV"3R ll4       VP                  \        RRYV 3R ll4       VP                  R\        V 4      4       VP                  RRR7       VP                  \        P                  RR 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        P                  RV4       VP                  \        P                  RV4       VP                  RR4       VP                  RR4       VP                  R R!4       VP                  R"R#4       \        P                  ! . 4      p^qV8H  q'       g   \        P                  ! RZV	3R[Wx34      R$R%\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR%R&\        P"                  ! V4      /,          p
R'R(V
/,          p\%        \        P&                  ! V4      4      hR;rVR),          p\(        P*                  qP,                  pR*q! VR+7      q! V4      pR,. R\O/pVV8H  pV'       Egv   \        P                  ! RZV3R]VV34      R$R0\        P                  ! 4       9   g!   \        P                   ! \(        4      '       d   \        P"                  ! \(        4      MR0R1\        P"                  ! V	4      R&R2\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR2R(\        P"                  ! V4      R3\        P"                  ! V4      R4\        P"                  ! V4      R5\        P"                  ! V4      R6\        P"                  ! V4      /,          pR7R8V/,          p\%        \        P&                  ! V4      4      hR;p	;p;p;p;p;ppS!^,          w  ppR9R:R;\        V4      .pVV8H  q'       g   \        P                  ! RZV	3R[VV34      R$R<\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR<R&\        P"                  ! V4      /,          p
R'R(V
/,          p\%        \        P&                  ! V4      4      hR;rVR,          p\        V4      pVV8H  q'       Eg   \        P                  ! RZV3R^VV34      R=\        P"                  ! V4      R&R>\        P                  ! 4       9   g!   \        P                   ! \
        4      '       d   \        P"                  ! \
        4      MR>R?R@\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR@RA\        P"                  ! V4      /,          pRBRCV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRD,          pR-pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRF,          pR/pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRG,          pVP.                  pRHq! V4      q'       g   RIR=\        P"                  ! V4      R&\        P"                  ! V4      R(\        P"                  ! V4      R3\        P"                  ! V4      /,          p\%        \        P&                  ! V4      4      hR;p;p;rVRG,          pRJpVV8g  q'       gz   \        P                  ! R`V3RaVV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppRpVV9  q'       g   \        P                  ! RbV3RcVV34      R=\        P"                  ! V4      R&RK\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRK/,          p
R'R(V
/,          p\%        \        P&                  ! V4      4      hR;ppRpVV9  q'       g   \        P                  ! RbV3RcVV34      R=\        P"                  ! V4      R&RK\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRK/,          p
R'R(V
/,          p\%        \        P&                  ! V4      4      hR;ppR pVV9  q'       g   \        P                  ! RbV3RcVV34      R=\        P"                  ! V4      R&RK\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRK/,          p
R'R(V
/,          p\%        \        P&                  ! V4      4      hR;ppVR",          pR#pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;pp\(        P*                  ! VRL,          RM,          P-                  R*R+7      4      pVRN,          pVRG,          pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRO,          pRPR.RQRR/RPR/RQRS/RPR-RQRT/.pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRU,          pRVpVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppVRW,          pRpVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppS!^,          ^ ,          pRX.pVV8H  q'       gz   \        P                  ! RZV3R_VV34      R=\        P"                  ! V4      R?\        P"                  ! V4      /,          pRERAV/,          p\%        \        P&                  ! V4      4      hR;p;ppR# )dr   r   r   CLAUDE_HOMEr   r^  c                  J   < ] tR tRtRtR R ltR V 3R lltR
R R lltR	tR# )Utest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.FakeProxyil  Nc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   btest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.FakeProxy.__annotate__o  r   r   c                	    R # r   r   r"  s   &r   r#  Ztest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.FakeProxy.pollo  r%  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  r  r'  r   c                	0   < SP                  R ./ 34       R# r)  r   r+  s   &r   r*  _test_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.FakeProxy.terminater  r-  r   c                    V ^8  d   QhRRRR/# r/  r   )r   s   "r   r   r  u  r1  r   c                	    ^ # r   r   r3  s   &&r   r4  Ztest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.FakeProxy.waitu  r6  r   r   r   r  r   s   r   r>  r  l  r  r   r>  c               $    V ^8  d   QhRRRRRR/# r@  r   )r   s   "r   r   Xtest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.__annotate__x  rC  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       S! 4       # rE  rG  rI  s   &,r   rJ  Vtest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.fake_popenx  rL  r   c               $    V ^8  d   QhRRRRRR/# rN  r   )r   s   "r   r   r  |  rP  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       \        P
                  ! V ^4      # rE  rR  rU  s   &,r   rV  Ttest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.fake_run|  rX  r   r   Nc                   < S# r   r   rZ  s   &r   r~   Ttest_run_without_model_launches_hybrid_codex_and_anthropic_session.<locals>.<lambda>  r\  r   resolve_claude_accountc                   < S# r   r   r   accounts   &r   r~   r        Wr   r]  Fr_  rz   c                    R V  2# rb  r   r|   s   &r   r~   r    rc  r   rd  c                     R # rf  r   r   r   r   r~   r    rg  r   rh  c                    R # r   r   rj  s   &&r   r~   r    rm  r   rn  ro  ANTHROPIC_AUTH_TOKENzstale-tokenANTHROPIC_API_KEYz	stale-keyrp  rq  rw  r   ra   r{  rb   rc   rd   zclaudex-hybrid-settings.jsonrO   rP   r  r  r  r  r(   r   r  r   r   r  r   r  r  r  r  r  r  r   r#   r   claude_homer   r  r   r  r   r  r  zhttp://127.0.0.1:zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r  r  cachezgateway-models.jsonbaseUrlmodelsiddisplay_namer  r  r  r  r  r  r*  r   rf   rh   )fableopussonnetr  r  r  r  r  r   !=)z%(py1)s != %(py4)sr  r  )rW   rA   r   r  ClaudeAccountr#   r   r   r   r   rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   r(   r   r  
startswith)#r   r   r   r~  r  rJ  rV  r{  rs   rt   ru   rv   r  r   r  r   r   r   r  r  r  r  r  r  r   r   r  r   r   r   catalogr>  r  r   r   s#   &&                             @@@@r   Btest_run_without_model_launches_hybrid_codex_and_anthropic_sessionr  a  ss
    \)K7K>)I]*K{K,-&&v{FH##FK:MsS^O_9`aG46E
 
 4 4 !;=WX!9;TUvs8}-*E:1LM!6F!13MN**GZ@**E8<-}=*K85|DCSI[[_FQ;666Q >>M:: 	-- 	w 	-w? 	:?@ 	 
	E 	@ 	E 	 	 	 	@ 	E 	 	 	 	 	4 	 	 	4 	 	 	: 	 	 	 	 	m 	 	 	m 	 	 	- 	 	 	w 	 	 	? 	 	 	@ 	 	 	 	E 	 	 	 	 	 	 	 	 	 $AhK(M	 ;    
 ;   
  
 ;  
 ;  
       
   )*>c+.>>*.>>>>>>*.>>>>*>>>>>>c>>>>c>>>>>>>+>>>>+>>>.>>>>>>>>>'(9M9(M99999(M999(999M9999999923E~E3~EEEEE3~EEE3EEE~EEEEEEEE*+K+66K7JK67JKKKKKK+KKK6KKK7JKKKKKKKKKKK*+G/GG+/GGGGGG+/GGGG+GGG/GGGGGGGGG!3!33333!333!3333333333333333330j00000j000000000j0000j00000000););;;;;);;;);;;;;;;;;;;;;;;;;;BCJsJCsJJJJJCsJJJCJJJsJJJJJJJJjj	w	!6	6AA7ASG 9A,@!AA!AAAAAA!AAAAAAA!AAAAAAAAA8 	@	~~~>	}nm<!  !    	 !   	   	 !      	  
 *+6w6+w66666+w666+666w6666666623=v=3v=====3v===3===v========8A;';-';-''''';-''';'''-''''''''r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     #I #I#I!3#I	#Ir   c                  aa V R ,          pV R,          pVP                  4        \        P                  ! RVR\        V4      R\        V4      /4      o. oR V3R llpVP	                  \        RR V3R	 ll4       VP	                  \        R
R 4       VP	                  \        P
                  RV4       \        P                  ! RR.\        P                  ! RR4      4      p^ qeV8H  qw'       g   \        P                  ! R!V3R"WV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;rv\!        S4      p^qV
8H  q'       Eg   \        P                  ! R!V3R#Wj34      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rS^ ,          w  rVR,          p. R$OpVV8H  qf'       gz   \        P                  ! R!V3R%VV34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;ppVR,          p\        V4      p
VV
8H  qf'       Eg   \        P                  ! R!V3R&VV
34      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rjVR,          p\        V4      p
VV
8H  qf'       Eg   \        P                  ! R!V3R&VV
34      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rjR# )'r  credentialsr   r^  CLAUDE_SECURESTORAGE_CONFIG_DIRc               $    V ^8  d   QhRRRRRR/# rN  r   )r   s   "r   r   Utest_run_native_launches_once_with_resolved_account_environment.<locals>.__annotate__  rP  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       \        P
                  ! V ^ 4      # rE  rR  rU  s   &,r   rV  Qtest_run_native_launches_once_with_resolved_account_environment.<locals>.fake_run  rX  r   r  Nc                   < S# r   r   r  s   &r   r~   Qtest_run_native_launches_once_with_resolved_account_environment.<locals>.<lambda>  r  r   _require_binaryc                    R # )r  r   r|   s   &r   r~   r    s    r   ro  claude-opus-5z	--versionra   r{  rb   rc   rd   lenr   r   r   r  r   :r      Nr   r   r#   account_homesecure_storager   rf   rh   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)s)r  rz  r  r   r  )rT   r   r  r#   r   rS  
run_nativeAccountOverridesri   rj   rk   rl   rm   rn   ro   rp   r  )r   r   r  r   rV  r{  rs   rt   ru   rv   r   r   r   r  r   rF  r  r   r   r  r   s   &&                 @@r   ?test_run_native_launches_once_with_resolved_account_environmentr#    sw    m+L-N##\!2-s>/B	
G 57E4 4 !9;TU!24NO**E8<	  v.F Q;666Qu:?:33uu:aID9CCC9CCCCCC9CCCC9CCCCCCCCCCCC"#8s<'88#'888888#'8888#888888s8888s8888888<8888<888'88888888801HS5HH15HHHHHH15HHHH1HHHHHHSHHHHSHHHHHHHHHHHHHH5HHHHHHHHHr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s      d r   c                 `   \         P                  p R R.q! V4      pR R.q2V8H  qD'       g   \        P                  ! RV3RW#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR
;p ;p;p;rCR
# )r  chatra   r   r   r   r   r   assert %(py11)sr  Nrf   )zY%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.default_claude_args
}(%(py4)s)
} == %(py9)s)
r   default_claude_argsri   rj   rk   rl   rm   rn   ro   rp   )rt   r   r   r   r   r  @py_format12s          r   Dtest_default_claude_args_do_not_duplicate_dangerous_permissions_flagr*    s   && (H&'Q &'QR (W  W    R     7   7   &   'Q   R    W        r   r\   rz  r&  r  z--model=terrar  lunar  r  zclaude-fable-5r  r  r	  zclaude-sonnet-5c               (    V ^8  d   QhRRRRRRRR/# )r   r\   r]   expected_model
str | None	forwardedr   r   r   )r   s   "r   r   r     s2     D D
D%/D<ED	Dr   c                   \         P                  q3! V 4      qAV3qTV8H  qf'       Eg3   \        P                  ! RV3RWE34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR
;p;p;reR
# )rg   ra   r   r   rb   r\   rd   r   r  r  Nrf   zQ%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.parse_model
}(%(py3)s)
} == %(py8)s
r   parse_modelri   rj   rk   rl   rm   rn   ro   rp   )	r\   r-  r/  rt   r   r   r  r  r  s	   &&&      r   ,test_parse_model_accepts_claudex_model_namesr4    s     Ct$C(CC(CCCCCC$CCCCCC7CCCC7CCCCCCCCCtCCCCtCCC$CCC(CCCCCCCCCr   c               $    V ^8  d   QhRRRRRR/# )r   aliasr#   
full_modelr   r   r   )r   s   "r   r   r     s)     D DDD	Dr   c                "   R V R.R.3RV  2R.R.3RV R.R.3RV  2R.R.3.pV EFe  w  r4\         P                  qU! V4      qaV3qvV8H  q'       Eg3   \        P                  ! RV3RWg34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR	\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR	R
\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;p;rEKh  	  R# )r   r&  z-m=rz  --model=ra   r   r   rb   r\   rd   r   r  r  Nrf   r1  r2  )r6  r7  casesr\   r/  rt   r   r   r  r  r  s   &&         r   Ctest_parse_model_resolves_codex_aliases_in_all_supported_flag_formsr;    s    v	)w-	 6(+
UF	#fX.UG
f	%x0	E !""C"4(C,CC,CCCCCC(CCCCCCwCCCCwCCC"CCCCCC4CCCC4CCC(CCC,CCCCCCCCC !r   modelc                    V ^8  d   QhRRRR/# r   r<  r#   r   r   r   )r   s   "r   r   r     s     P P3 P4 Pr   c                   \         P                  pR V R.q!! V4      q0R.3qCV8H  qU'       g   \        P                  ! RV3RW434      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR
;p;p;p;rT\         P                  pRV R.q!! V4      q0R.3qCV8H  qU'       g   \        P                  ! RV3RW434      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR
;p;p;p;rTR
# )r   r&  ra   r   r   r   r   r   r'  r  Nrz  rf   zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.parse_model
}(%(py4)s)
} == %(py9)sr2  r<  rt   r   r   r   r   r  r)  s   &       r   7test_parse_model_captures_full_names_of_routable_modelsrB    s_   JeV4J45J&9JJ9JJJJJJ5JJJJJJ7JJJJ7JJJJJJ4JJJ5JJJ9JJJJJJJJJO	5&9O9:Ovh>OO>OOOOOO:OOOOOO7OOOO7OOOOOO9OOO:OOO>OOOOOOOOOOr   c                    V ^8  d   QhRRRR/# r>  r   )r   s   "r   r   r     s      S T r   c                4   \         P                  pRV R.q!! V4      pRRV R.3qCV8H  qU'       g   \        P                  ! RV3RW434      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;p;p;rT\         P                  pRV  2R.q!! V4      pRRV  2R.3qCV8H  qU'       g   \        P                  ! RV3RW434      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;p;p;rT\         P                  pRV R.q!! V4      pRRV R.3qCV8H  qU'       g   \        P                  ! RV3RW434      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;p;p;rTR# )zA model claudex cannot route itself stays a claude CLI argument.

Capturing it would send a `claude-*` id to run_proxy, i.e. a Claude model
dispatched through the GPT proxy.
rz  r&  Nra   r   r   r   r   r   r'  r  r9  r   rf   r@  r2  rA  s   &       r   9test_parse_model_forwards_unroutable_full_names_to_clauderE    sr     	5&9 9: 	E6"?  ?    :     7   7      9   :    ?          (5' 2F; ;< E7	V$A  A    <     7   7      ;   <    A          eV4 45 	E6":  :    5     7   7      4   5    :        r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   ,  s     ) )QU )r   c                    \         P                  ! \        P                  4      ;_uu_ 4       p \        P                  ! . RO4       RRR4       RpX P
                  p\        V4      q1V9   qD'       Eg3   \        P                  ! RV3RW34      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;p;r#. \        P                   O\        P"                  O EF  pV P
                  p\        V4      qV	9   q'       Egk   \        P                  ! RV
3RWy34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p
;rEK  	  R#   + '       g   i     EL.; i)r   bananaNr   rb   r#   r   errorr   r   r  r  ra   r6  r   rd   r   r   r   )r   rH  r&  in)zK%(py1)s in %(py8)s
{%(py8)s = %(py3)s(%(py6)s
{%(py6)s = %(py4)s.value
})
})zK%(py0)s in %(py7)s
{%(py7)s = %(py2)s(%(py5)s
{%(py5)s = %(py3)s.value
})
})r   r   r   ClaudexErrorr3  valuer#   ri   rj   rn   rk   rl   rm   ro   rp   model_catalogMODEL_ALIASESNATIVE_MODEL_ALIASES)rI  r  r   r   rs   r  r  r6  r   r  rt   r   r  s                r   Gtest_parse_model_rejects_unknown_bare_alias_and_names_all_valid_aliasesrQ  ,  s   	w++	,	,45 
- '5;;'s;''''''''8'''8''''''s''''s'''''''5''''5''';''''''''''''N=..N1M1MN!KK(K((((((((u((((((u((((u((((((((((((((((((E((((E(((K(((((((((((( O	 
-	,	,s   M++M<	c               $    V ^8  d   QhRRRRRR/# r   r   r   capsyspytest.CaptureFixture[str]r   r   r   )r   s   "r   r   r   5  s&     + +#+&+ 
+r   c           	        V P                  \        R R 4       V P                  \        RR 4       V P                  \        RR 4       \        P                  ! . RO4      pVP                  4       p^ qBV8g  qU'       g   \        P
                  ! RV3RW$34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;rTVP                  pR	qV8H  q'       g   \        P
                  ! RV	3RWX34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;p;rVP                  pRqV8H  q'       g   \        P
                  ! RV	3RVV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;p;rRqP                  qV9  qD'       g   \        P
                  ! RV3RW34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;p;rHR# )	run_proxyc                 .    \         P                  ! R 4      # )zproxy dispatch must not runr   failr   r   s   *,r   r~   Ltest_claudex_main_surfaces_unknown_alias_without_traceback.<locals>.<lambda><  s    ,I Jr   r!  c                 .    \         P                  ! R 4      # )znative dispatch must not runrY  r[  s   *,r   r~   r\  A      ,J Kr   
run_hybridc                 .    \         P                  ! R 4      # )zhybrid dispatch must not runrY  r[  s   *,r   r~   r\  F  r^  r   ra   	exit_coderb    rc   rd   Ncapturedr   r   r   z]claudex: unknown model alias 'banana' (valid aliases: sol, terra, luna, fable, opus, sonnet)
	Tracebackr   )r   r   rH  r&  r
  )z%(py0)s != %(py3)srf   )z+%(py2)s
{%(py2)s = %(py0)s.out
} == %(py5)s)z+%(py2)s
{%(py2)s = %(py0)s.err
} == %(py5)sr  )z/%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.err
})r   r   main
readouterrri   rj   rk   rl   rm   rn   ro   rp   outerr)r   rT  ra  rc  rs   rt   ru   rv   r   r   r   r  s   &&          r   :test_claudex_main_surfaces_unknown_alias_without_tracebackri  5  sw    J
 K
 K @AI  "H>999<<22<88<2<< 	C	C   <	C    8   8   <   	C       *ll*l*****;***;******h****h***l********r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   U  s     @ @D @r   c                    \         P                  p \        P                  qVJ q"'       Eg%   \        P                  ! R
V3RW34      RR\
        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p ;r!R	# )isra   r   r   r   rN  r   r  r   Nrl  )zX%(py2)s
{%(py2)s = %(py0)s.MODEL_ALIASES
} is %(py6)s
{%(py6)s = %(py4)s.MODEL_ALIASES
})r   rO  rN  ri   rj   rk   rl   rm   rn   ro   rp   )rt   r   r   r   r  s        r   *test_claudex_uses_shared_model_alias_tablern  U  s      ?M$?$??$?????? ??????7????7??? ??????M????M???$?????????r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   Y  s$     : ::!3:	:r   c                  a V R ,          R,          pV R,          oVP                  RR7       SP                  4        VR,          pVP                  RRR7       VP                  R	4       VR
,          pVP                  V4       SR
,          pVP                  RRR7       VP                  R	4       VP	                  R\        V 4      4       VP                  RRR7       VP	                  R\        S4      4       VP                  \        P                  RV3R l4       \        P                  pR
qv! V4      p\        V4      qV	8H  q'       Eg   \        P                  ! RV
3R W34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                   ! \        4      MRR\        P                   ! V4      R\        P                   ! V4      R\        P                   ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                   ! \
        4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V	4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR;p;p;p;rR# )!.claudebinrealTrM   z_tmpjail-shim.sh
#!/bin/sh
rO   rP     clauder]  r^  Fr_  PATHrz   c                (   < \        SV ,          4      # r   r#   r}   real_dirs   &r   r~   Gtest_require_binary_launches_through_the_tmpjail_shim.<locals>.<lambda>m      c(T/>Rr   ra   r   r   r   r   r   r#   r   shimr  assert %(py13)spy13Nrf   zu%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s._require_binary
}(%(py4)s)
} == %(py11)s
{%(py11)s = %(py8)s(%(py9)s)
})rT   rU   chmod
symlink_tor   r#   r   r   r   r   r  ri   rj   rk   rl   rm   rn   ro   rp   )r   r   shim_dir	shim_bodyr  rs  rt   r   r   r   r   r)  r   r|  s   &&           @r   5test_require_binary_launches_through_the_tmpjail_shimr  Y  s    )#e+H& HNN4N NN--I9OOEhDOOIhDOOMGO4JJuvs8}-*E: vs8}-1RS""989"8,9D	9	99999,999999799997999"9998999,99999999999999999D9999D999	999999999r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   r  s$     : ::!3:	:r   c                  a
 V R ,          o
S
P                  4        S
R,          pVP                  RRR7       VP                  R4       VP                  R\	        V 4      4       VP                  RRR	7       VP                  R
\	        S
4      4       VP                  \        P                  RV
3R l4       \        P                  pRqC! V4      p\	        V4      qeV8H  qw'       Eg   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR \        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR R\        P                  ! V4      /,          pRRV/,          p	\!        \        P"                  ! V	4      4      hR;p;p;p;rvR# )rs  rw  ru  rO   rP   rv  r]  r^  Fr_  rx  rz   c                (   < \        SV ,          4      # r   rz  r{  s   &r   r~   Rtest_require_binary_falls_back_to_path_when_no_shim_is_installed.<locals>.<lambda>}  r~  r   ra   r   r   r   r   r   r#   r   r  r  r  Nrf   r  )rT   rU   r  r   r#   r   r   r   r   r  ri   rj   rk   rl   rm   rn   ro   rp   )r   r   rs  rt   r   r   r   r   r)  r   r|  s   &&        @r   @test_require_binary_falls_back_to_path_when_no_shim_is_installedr  r  s}    & HNNhDOOMGO4JJuvs8}-*E:vs8}-1RS""989"8,9D	9	99999,999999799997999"9998999,99999999999999999D9999D999	999999999r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     L LL!3L	Lr   c                
  a aa S R ,          R,          oS R,          oSP                  RR7       SP                  4         ! VV 3R lR4      pVP                  \        RV4       VP                  \        P                  RR	 4       VP                  \        R
V3R l4       \        P                  ! 4       pVP
                  pR qTV8H  qf'       g   \        P                  ! RV3RWE34      RR \        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;reVP                  qDS8H  qf'       Eg    \        P                  ! RV3R VS34      RR \        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MR/,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;rFVP                  R,          p\!        S4      qV8H  q'       Eg   \        P                  ! RV3R!W34      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;rVP                  R,          p\!        S4      qV8H  q'       Eg   \        P                  ! RV3R!W34      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;rR# )"r  r  liveTrt  c                  <   < ] tR tRtR R ltRR V V3R llltRtR# )	Vtest_resolve_claude_account_points_storage_at_the_credential_owner.<locals>.FakeRouteri  c                    V ^8  d   QhRRRR/# )r   adapterrA  r   r   r   )r   s   "r   r   ctest_resolve_claude_account_points_storage_at_the_credential_owner.<locals>.FakeRouter.__annotate__  s     	# 	#F 	#t 	#r   c                	    Wn         R # r   r  )r   r  s   &&r   __init___test_resolve_claude_account_points_storage_at_the_credential_owner.<locals>.FakeRouter.__init__  s    "Lr   c               $    V ^8  d   QhRRRRRR/# )r   r   rA  notify_fallbackboolr   r   )r   s   "r   r   r    s"     	5 	5 	5$ 	5SY 	5r   c                	   < SR S3# )r  r   )r   r   r  r  r   s   &&&r   _resolve_accountgtest_resolve_claude_account_points_storage_at_the_credential_owner.<locals>.FakeRouter._resolve_account  s    Y44r   r  Nr  r   r   r   r   r  r  r   )r  r   s   r   
FakeRouterr    s    	#	5 	5r   r  CommandRoutersync_before_execc                    R # r   r   )r   r   s   &&r   r~   Ttest_resolve_claude_account_points_storage_at_the_credential_owner.<locals>.<lambda>  s    VZr   resolve_credentialsc                F   < \        SR ,          \        P                  4      # )z.credentials.json)r   r   VENDOR_MANAGED)r   	live_homes   &r   r~   r    s    (++-@-O-O
r   ra   r   rd   r   r   Nr   r  r   r   r^  r   rb   r#   r  r   r  r  rf   r   z,%(py2)s
{%(py2)s = %(py0)s.home
} == %(py4)sr  )rT   r   r   ClaudeAdapterr  r   ri   rj   rk   rl   rm   rn   ro   rp   r   rF  r#   )r   r   r  r  rt   r   r   rv   r   r   r   r  r   rs   r  r  r  s   f&             @@r   Btest_resolve_claude_account_points_storage_at_the_credential_ownerr    s    i'-7L6!It$OO5 5 *=--/ACZ[	
 ,,.G<<$9$9$$$$$<$$$$$$7$$$$7$$$<$$$9$$$$$$$$<<'<'''''<<''''''7''''7'''<''''''<''''<'''''''';;*+@s</@@/@@@@@@+@@@+@@@@@@s@@@@s@@@@@@@<@@@@<@@@/@@@@@@@@@;;89KS^K^KKKKK9KKK9KKKKKKSKKKKSKKKKKKKKKKKKKK^KKKKKKKKr   --codex-accountzyncz--codex-profile=zync--claude-accountz--claude-profile=zyncz--codex-account=multideal	multidealz	--profilec          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   r\   r]   r   r.  rw  r/  r   r   r   )r   s   "r   r   r     s4     " "
"&"0:"GP"	"r   c                   \         P                  ! V 4      w  rE\         P                  qf! W4      qtV8H  q'       Eg   \        P                  ! RV3RWG34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\
        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR	\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR	R
\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;rgWS8H  q'       g   \        P                  ! RV3RWS34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hRpR# )rg   ra   r   r   r   r   rd   r   r   rw  r   r  r  N	remainingr/  zassert %(py4)srf   )z_%(py0)s == %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s.AccountOverrides
}(%(py5)s, %(py6)s)
})z%(py0)s == %(py2)s)r   parse_account_overridesr"  ri   rj   rk   rl   rm   rn   ro   rp   )r\   r   rw  r/  r   r  r   r   rt   r  r  @py_format3r   s   &&&&         r   2test_parse_account_overrides_selects_each_providerr    ss    "99$?H//>/>>>>>>>>8>>>>>>8>>>>8>>>>>>>w>>>>w>>>/>>>>>>>>>>>>>>>>>v>>>>v>>>>>>>>>>>>!!!!!9!!!!!!9!!!!9!!!!!!!	!!!!	!!!!!!!!r   z--claude-account=c                    V ^8  d   QhRRRR/# )r   r\   r]   r   r   r   )r   s   "r   r   r     s     . . .t .r   c                    \         P                  ! \        P                  4      ;_uu_ 4        \        P                  ! V 4       R R R 4       R #   + '       g   i     R # ; ir   )r   r   r   rL  r  )r\   s   &r   6test_parse_account_overrides_rejects_a_missing_accountr    s4    	w++	,	,''- 
-	,	,	,s   AA	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     3 33!33	3r   c                	  a  VP                  \        P                  R V 3R l4       S R,          R,          pR F,  p\        W#,          R,          R,          \	        ^4      4       K.  	  S R,          R,          P                  RR	R
7       \        P                  ! R4      pVP                  pRqeV8H  qw'       g   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rvVP                   pRqV
,          pRqV,          pRqV,          qV8H  qw'       EgA   \        P                  ! RV3RW_34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p
;p;p;p;rVP"                  pRqV
,          pRqV,          qV8H  qw'       Eg+   \        P                  ! RV3R W]34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p
;p;r\$        P&                  ! \        P(                  4      ;_uu_ 4        \        P                  ! R4       RRR4       R#   + '       g   i     R# ; i)!r   c                    < S # r   r   r   s   r   r~   Rtest_resolve_selected_account_honors_the_requested_codex_account.<locals>.<lambda>  r   r   r   r   r  r  r   r   r   rO   rP   ra   r   r   rd   r   r   Nr   accounts_dirr   r   r   r   r   r   assert %(py12)sabsentr  r  rf   r   z]%(py2)s
{%(py2)s = %(py0)s.native_auth_path
} == (((%(py4)s / %(py6)s) / %(py9)s) / %(py12)s))zP%(py2)s
{%(py2)s = %(py0)s.proxy_config_dir
} == ((%(py4)s / %(py6)s) / %(py9)s))r   r   r   rW   rA   rU   r   r   ri   rj   rk   rl   rm   rn   ro   rp   r   r   r   r   rL  )r   r   r  r   r   rt   r   r   rv   r   r   r   r   r   r   r   r   r   r  r
  s   f&                  r   @test_resolve_selected_account_honors_the_requested_codex_accountr    s    f.>?EE
RL%<&5C[QTEUV &77.HTTU`krTs//7H=="F"F"""""=""""""8""""8"""="""F""""""""$$ZvZv(=ZZ(LZ{Z{(ZZ(ZZZZZZ$ZZZZZZ8ZZZZ8ZZZ$ZZZZZZZZZZZZZvZZZZZZ{ZZZZZZZZZ$$NvNv(=NN(NN(NNNNNN$NNNNNN8NNNN8NNN$NNNNNNNNNNNNNvNNNNNNNNNNNN	w++	,	,((2 
-	,	,	,s   R77S	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     b bb!3b	br   c                
  a  VP                  \        P                  R V 3R l4       S R,          R,          p\        VR,          R,          R,          \	        ^4      4       \        S R,          R,          RRRR	R
/.R. /4       \        P
                  ! R
4      pVP                  pRqTV8H  qf'       g   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;reVP                  pRqV	,          p
RqV,          pRqV,          qV8H  qf'       EgA   \        P                  ! RV3RWN34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p	;p
;p;p;rR# )r   c                    < S # r   r   r   s   r   r~   Htest_resolve_selected_account_accepts_a_registry_alias.<locals>.<lambda>  r   r   r   r   znew-accountr   r   zaccounts.jsonr   r6  r  deleted_legacy_slugsra   r   r   rd   r   r   Nr   r  r   r   r   r   r   rf   r   r  )r   r   r   rW   rA   r   r   ri   rj   rk   rl   rm   rn   ro   rp   r   )r   r   r  r   rt   r   r   rv   r   r   r   r   r   r   r   r   r   s   f&               r   6test_resolve_selected_account_accepts_a_registry_aliasr    s    f.>?EE
RL|m+l:[H+VYJZ[::_L	v}gw?@BXZ\]
 //8H==)M)M)))))=))))))8))))8)))=)))M))))))))$$a}a}(Da|a|(SaVaaVa(aa(aaaaaa$aaaaaa8aaaa8aaa$aaaaaaaaaaaaa}aaa|aaaVaaaaaaaaaar   g  @qAz2026-08-10T12:40:53Zc               $    V ^8  d   QhRRRRRR/# r   trayr   r   r#   r   r   r   )r   s   "r   r   r     s&     X Xd X# X$ Xr   c                h    \        V R ,          V,          R,          R,          \        ^4      4       R# )r   r   r   N)rW   rA   r  r   s   &&r   write_codex_accountr    s&    tj 4',6DkRUFVWr   c               $    V ^8  d   QhRRRRRR/# r   r  r   account_capszdict[str, object] | Noner   r   r   )r   s   "r   r   r     s"     3 3d 32J 3t 3r   c                X    R RR/ RRR. RRR^d/pVe   WR
&   \        V R,          V4       R	# )version
routing/v2projectsdefaultr  fallback_chainfallback_triggerbroken_or_quota_exhaustedquota_exhausted_threshold_pctNr  zrouting_rules.jsonrW   r  r  ruless   && r   write_routing_rulesr    sH    <B;"7' E  ,nt**E2r   c               $    V ^8  d   QhRRRRRR/# )r   r  r   	snapshotsr2   r   r   r   )r   s   "r   r   r     s"     6 6T 6.? 6D 6r   c                ,    \        V R ,          V4       R# )zhealth_cache.jsonNr  )r  r  s   &&r   write_health_cacher    s    t))95r   c               (    V ^8  d   QhRRRRRRRR/# 	r   r   r   r   r   rT  rU  r   r   r   )r   s   "r   r   r     s0     $ $$#$ '$ 
	$r   c                
  a  VP                  \        P                  R V 3R l4       S R,          pR" F  p\        W44       K  	  VR,          P	                  RRR7       \        VRR^
//4       \        VRR	R
R^
R^
/RR	R
R^
R^[R\        //4       \        P                  ! \        P                  4      ;_uu_ 4       p\        P                  ! R4       RRR4       XP                  qfP                  p^KqV8H  q'       g   \        P                  ! R#V	3R$Wx34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      R\        P&                  ! V4      /,          p
RRV
/,          p\)        \        P*                  ! V4      4      hR;p;p;rVP                  qfP,                  qw\.        8H  q'       Eg"   \        P                  ! R#V	3R%V\.        34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      RR\         P"                  ! 4       9   g!   \        P$                  ! \.        4      '       d   \        P&                  ! \.        4      MR/,          pRRV/,          p\)        \        P*                  ! V4      4      hR;p;ry\        P0                  ! . R&O4      p^KqV8H  qf'       g   \        P                  ! R#V3R'W34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      /,          pRRV/,          p\)        \        P*                  ! V4      4      hR;roVP2                  qf! 4       qwP4                  p	RpV	V8H  pV'       g   \        P                  ! R#V3R(V	V34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      R\        P&                  ! V	4      R\        P&                  ! V4      /,          pR R!V/,          p\)        \        P*                  ! V4      4      hR;p;p;p	;ppR#   + '       g   i     ELh; i))r   c                    < S # r   r   r   s   r   r~   Xtest_resolve_selected_account_refuses_a_capped_requested_codex_account.<locals>.<lambda>   r   r   r   r  r  r   rO   rP   7dstatusokprimary_used_pctsecondary_used_pctsecondary_reset_atNra   raisedr   r   r   r   r   r   CAP_RESUME_ATr  r   ra  rb   rc   rd   zg{"ok":false,"detail":"rate-limited","reason":"all-accounts-capped","resume_at":"2026-08-10T12:40:53Z"}
rT  r'  r  r  rf   zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.exit_code
} == %(py7)szL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.resume_at
} == %(py6)s)r   r  r  rh   zb%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.readouterr
}()
}.out
} == %(py9)s)r   r   r   r  rU   r  r  CAP_RESUME_AT_EPOCHr   r   ClaudexCappedErrorr   rM  ra  ri   rj   rk   rl   rm   rn   ro   rp   	resume_atr  re  rf  rg  )r   r   rT  r  r   r  rt   r   r  r   r   r  r   r  ra  rs   ru   rv   r   r   r)  s   f&&                  r   Ftest_resolve_selected_account_refuses_a_capped_requested_codex_accountr    s   
 f.>?==D%D' &	N&&{W&Evbz23(D*<bBVXZ[$"B$b$&9		
 
w11	2	2f((0 
3 <<'!!'R'R'''''!''''''6''''6'''<'''!'''R''''''''<<2!!2]22222!]222222622226222<222!222222]2222]22222222CDI?999  "" 	0"	0   "	0    6   6         "   	0        
3	2	2s   <T22U	c               (    V ^8  d   QhRRRRRRRR/# r  r   )r   s   "r   r   r   "  s0      # ' 
	r   c                	  a  VP                  \        P                  R V 3R l4       S R,          p\        VR4       VR,          P	                  RRR7       \        VRR^//4       \        VRRR	R
^ZR^
//4       \        P                  ! \        P                  4      ;_uu_ 4       p\        P                  ! 4        RRR4       XP                  qUP                  p^KqvV8H  q'       g   \        P                  ! RV3RWg34      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      /,          p	RRV	/,          p
\'        \        P(                  ! V
4      4      hR;p;p;rVP                  qUP*                  pRqvVJ q'       g   \        P                  ! R V3R!Wg34      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      /,          p	RRV	/,          p
\'        \        P(                  ! V
4      4      hR;p;p;r\        P,                  ! R.4      p^KqV8H  qU'       g   \        P                  ! RV3R"W34      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      /,          pRRV/,          p\'        \        P(                  ! V4      4      hR;r\VP.                  qU! 4       qfP0                  pRqV8H  pV'       g   \        P                  ! RV3R#VV34      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      /,          p
RRV
/,          p\'        \        P(                  ! V4      4      hR;p;p;p;ppR#   + '       g   i     EL; i)$r   c                    < S # r   r   r   s   r   r~   Vtest_resolve_selected_account_refuses_a_capped_default_codex_account.<locals>.<lambda>'  r   r   r   r  r   rO   rP   5hr  r  r  r  Nra   r  r   r   r   r   r   r   ra  rb   rc   rd   zD{"ok":false,"detail":"rate-limited","reason":"all-accounts-capped"}
rT  r   r'  r  rf   r  rm  )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.resume_at
} is %(py7)srh   r  )r   r   r   r  rU   r  r  r   r   r  r   rM  ra  ri   rj   rk   rl   rm   rn   ro   rp   r  re  rf  rg  )r   r   rT  r  r  rt   r   r  r   r   r  ra  rs   ru   rv   r   r   r)  s   f&&               r   Dtest_resolve_selected_account_refuses_a_capped_default_codex_accountr  "  s=   
 f.>?==Dk*	N&&{W&E{T2J78	x'92?SUWXY
 
w11	2	2f((* 
3 <<'!!'R'R'''''!''''''6''''6'''<'''!'''R''''''''<<)!!)T)T)))))!))))))6))))6)))<)))!)))T))))))))i[)I?999  "" OO   "O    6   6         "   O        
3	2	2s   &SS#	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   ?  s)     ] ]]!3]	]r   c                	  a  VP                  \        P                  R V 3R l4       S R,          p\        VR4       VR,          P	                  RRR7       \        VRR^
//4       \        VRRR	R
^
R^P//4       \        P                  ! 4       \        P                  ! R4      3 EF  pVP                  pRqTV8H  qf'       g   \        P                  ! R V3R!WE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;reVP"                  pRp	W),          p
RpW,          pRpW,          pRpW,          pVV8H  qf'       EgX   \        P                  ! R V3R"VV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;p;p	;p
;p;p;p;p;ppVP$                  pRqV	,          p
RqV,          pRqV,          qV8H  qf'       EgA   \        P                  ! R V3R#WN34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;p;p	;p
;p;p;rEK  	  R# )$r   c                    < S # r   r   r   s   r   r~   Ntest_resolve_selected_account_keeps_an_account_below_its_cap.<locals>.<lambda>B  r   r   r   r  r   rO   rP   r  r  r  r  r  ra   r   r   rd   r   r   Nr   r   r   r   r  r   r   r   r   zassert %(py18)spy18r   r   rf   r   )zj%(py2)s
{%(py2)s = %(py0)s.native_auth_path
} == ((((%(py4)s / %(py6)s) / %(py9)s) / %(py12)s) / %(py15)s)r   )r   r   r   r  rU   r  r  r   r   ri   rj   rk   rl   rm   rn   ro   rp   r   r   )r   r   r  r   rt   r   r   rv   r   r   r   r   r   r   r   @py_assert14r  r  @py_format19r   r   s   f&                   r   <test_resolve_selected_account_keeps_an_account_below_its_capr  ?  s    f.>?==Dk*	N&&{W&E{T2J78	x'92?SUWXY 	((*((5 }}+++++++}++++++x++++x+++}+++++++++++%%	
 	
 	
#.	
 .	
1=	
.=	
@K	
=K	
%KL	
 	
 	
%K	
 	
 
6	
 	
 	
	
 	
 
		
	
 	
 
		
%	
 	
 
6	
 	
 	
	
 	
 
		
	
 	
 
		
 	
 	
 
		
#.	
 	
 
		
1=	
 	
 
		
@K	
 	
 	
 	
 	
 	
 	
 	
 	
 ((\:\:,=\\,K\n\n,\\,\\\\\\(\\\\\\x\\\\x\\\(\\\\\\D\\\\D\\\:\\\\\\n\\\\\\\\\r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   X  s)     ] ]]!3]	]r   c                *  a  VP                  \        P                  R V 3R l4       S R,          p\        VR4       VR,          P	                  RRR7       \        VR4       \        VRRR	R
^dR^d//4       \        P                  ! 4       \        P                  ! R4      3 EFm  pVP                  pRqTV8H  qf'       g   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;reVP"                  pRqV	,          p
RqV,          pRqV,          qV8H  qf'       EgA   \        P                  ! RV3RWN34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;p;p	;p
;p;p;rEKp  	  R# )r   c                    < S # r   r   r   s   r   r~   Wtest_resolve_selected_account_ignores_usage_when_no_cap_is_configured.<locals>.<lambda>[  r   r   r   r  r   rO   rP   Nr  r  r  r  ra   r   r   rd   r   r   r   r   r   r  r   r   r   r   r   rf   r   r   )r   r   r   r  rU   r  r  r   r   ri   rj   rk   rl   rm   rn   ro   rp   r   )r   r   r  r   rt   r   r   rv   r   r   r   r   r   r   r   r   r   s   f&               r   Etest_resolve_selected_account_ignores_usage_when_no_cap_is_configuredr	  X  s    f.>?==Dk*	N&&{W&Ed#	x'93@TVYZ[ 	((*((5 }}+++++++}++++++x++++x+++}+++++++++++((\:\:,=\\,K\n\n,\\,\\\\\\(\\\\\\x\\\\x\\\(\\\\\\D\\\\D\\\:\\\\\\n\\\\\\\\\r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   m  s&     Y Yt Y3 Y4 Yr   c                V    V R ,          V,          R,          P                  RRR7       R# )claude-accountsr  TrL   N)rT   r  s   &&r   write_claude_accountr  m  s&    	$}4;;DSW;Xr   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   q  s#     : :T :9Q :VZ :r   c                X    R RR/ RRR. RRR^d/pVe   WR
&   \        V R,          V4       R	# )r  r  r  r  r  r  r  r  r  Nr  zclaude_routing_rules.jsonr  r  s   && r   write_claude_routing_rulesr  q  sH    <B;"7' E  ,nt1159r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$      !3	r   c                  a  VP                  \        P                  R V 3R l4       S R,          pR F  p\        W#4       K  	  VR,          P	                  RRR7       \        VRR^
//4       \        VR	,          RR
RR^
R^
/RR
RR^
R^\R\        //4       \        P                  ! \        P                  4      ;_uu_ 4       p\        P                  ! R4       RRR4       XP                  qUP                  p^KqvV8H  q'       g   \        P                  ! RV3R Wg34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      R\        P&                  ! V4      /,          p	RRV	/,          p
\)        \        P*                  ! V
4      4      hR;p;p;rVP                  qUP,                  qf\.        8H  q'       Eg"   \        P                  ! RV3R!V\.        34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      RR\         P"                  ! 4       9   g!   \        P$                  ! \.        4      '       d   \        P&                  ! \.        4      MR/,          pRRV/,          p\)        \        P*                  ! V4      4      hR;p;rhVP                  qUP0                  qf! 4       pRqV8H  q'       g   \        P                  ! RV3R"VV34      RR\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRR\        P&                  ! V4      R\        P&                  ! V4      R\        P&                  ! V4      R\        P&                  ! V4      /,          p
RRV
/,          p\)        \        P*                  ! V4      4      hR;p;p;p;rR#   + '       g   i     EL; i)#r   c                    < S # r   r   r   s   r   r~   Mtest_resolve_claude_account_refuses_a_capped_claude_account.<locals>.<lambda>  r   r   r   r  r  claude_default_slugrO   rP   r  zclaude_health_cache.jsonr  r  r  r  r  Nra   r  r   r   r   r   r   r   r  r  r   zf{"ok":false,"detail":"rate-limited","reason":"all-accounts-capped","resume_at":"2026-08-10T12:40:53Z"}r'  r  r  rf   r  r  )zf%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.refusal_json
}()
} == %(py9)s)r   r   r   r  rU   r  rW   r  r   r   r  r  rM  ra  ri   rj   rk   rl   rm   rn   ro   rp   r  r  refusal_json)r   r   r  r   r  rt   r   r  r   r   r  r   r  r   r   r)  s   f&              r   ;test_resolve_claude_account_refuses_a_capped_claude_accountr    s    f.>?==D%T( &	!!--kG-LtftRj%9:))(D*<bBVXZ[$"B$b$&9		
 
w11	2	2f&&v. 
3 <<'!!'R'R'''''!''''''6''''6'''<'''!'''R''''''''<<2!!2]22222!]222222622226222<222!222222]2222]22222222<< $$ $& 	.	.   &	.    6   6   <   $   &   	.        
3	2	2s   QQ/	c          
     ,    V ^8  d   QhRRRRRRRRRR/# )r   projects_dirr   projectr#   
session_idcwdr   r   )r   s   "r   r   r     s0      4 # 3 T VZ r   c           	        W,          V R 2,          pVP                   P                  RRR7       VP                  \        P                  ! RR/4      R,           \        P                  ! R\        V4      /4      ,           R,           RR7       V# )	z.jsonlTrL   typesummary
r  rO   rP   )rS   rT   rU   r(   r)   r#   )r  r  r  r  
transcripts   &&&& r   write_transcriptr"    s    'ZL*??JD48

FI&'$.UCH<M1NNQUU   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s     D D Dr   c                    R p \         P                  pRV .q!! V4      q3V 8H  qD'       Eg3   \        P                  ! RV3RW034      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR/,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;r4\         P                  pRV  2.q!! V4      q3V 8H  qD'       Eg3   \        P                  ! RV3RW034      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR/,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;r4\         P                  pRV .q!! V4      q3V 8H  qD'       Eg3   \        P                  ! RV3RW034      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR/,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;r4\         P                  pR.q!! V4      pRqsVJ qD'       g   \        P                  ! RV3RW734      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;p;p;rG\         P                  pRR.q!! V4      pRqsVJ qD'       g   \        P                  ! RV3RW734      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;p;p;rGR# )$41481840-0bdc-4377-9cec-d0a8f6778f85--resumera   r   r   r   r   r   r  r  r  Nz	--resume=z-rr   r'  r  z--printhellorf   )zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.resumed_session_id
}(%(py4)s)
} == %(py8)srm  )zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.resumed_session_id
}(%(py4)s)
} is %(py9)s)
r   resumed_session_idri   rj   rk   rl   rm   rn   ro   rp   )
r  rt   r   r   r   r  r  r   r  r)  s
             r   7test_resumed_session_id_reads_separate_and_inline_formsr)    st   7J%%Mz:&>M%&>?M:MMMMM?MMMMMM7MMMM7MMM%MMM&>MMM?MMMMMM:MMMM:MMMMMMMM%%O:,'?&@O%&@AOZOOOOOAOOOOOO7OOOO7OOO%OOO&@OOOAOOOOOOZOOOOZOOOOOOOO%%GtZ&8G%&89GZGGGGG9GGGGGG7GGGG7GGG%GGG&8GGG9GGGGGGZGGGGZGGGGGGGG%%;zl;%l3;t;t;;;;;3;;;;;;7;;;;7;;;%;;;l;;;3;;;t;;;;;;;;%%Cy'&:C%&:;CtCtCCCCC;CCCCCC7CCCC7CCC%CCC&:CCC;CCCtCCCCCCCCCr   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s&     ) ))#) 
)r   c                ^  a R pV R,          R,          oV R,          R,          pV R,          R,          pVP                  RR7       VP                  RR7       \        SRW#4       VP                  \        R	V3R
 l4       VP	                  V4       \        P
                  ! RV.4       \        P                  qU! 4       qcP                  qw! 4       qV8H  q'       EgI   \        P                  ! RV	3RWh34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p
RRV
/,          p\        \        P                   ! V4      4      hR;p;p;p	;rxR# )r%  rq  r  	workspacepluginbackendTrt  z-workspace-pluginsession_projects_dirsc                 
   < S .# r   r   r  s   r   r~   Ntest_relocate_to_resumed_session_moves_to_recorded_directory.<locals>.<lambda>      <.r   r&  ra   r   r   r   r   ownerr   r  r  r   Nrf   zx%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cwd
}()
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.resolve
}()
}rT   r"  r   r   chdirrelocate_to_resumed_sessionr   r  resolveri   rj   rk   rl   rm   rn   ro   rp   )r   r   r  r4  	elsewherert   r   r   r	  r   r  r
  r  s   &&          @r   <test_relocate_to_resumed_session_moves_to_recorded_directoryr;    sR    8Ji'*4L{"X-E;&2I	KKKOODO!\#6
J!8:PQi ''Z(@A88(8:((((((((:((((((4((((4(((8(((:(((((((((((((((((((((((((r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s&     - --#- 
-r   c                   a
 V R ,          R,          o
S
P                  RR7       V R,          R,          pVP                  RR7       VP                  \        RV
3R l4       VP                  V4       \        P                  ! RR	.4       \
        P                  q3! 4       qBP                  qU! 4       qdV8H  qw'       EgI   \        P                  ! RV3RWF34      R
R\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;p;p;rVR# )rq  r  Trt  r,  r.  r/  c                 
   < S .# r   r   r1  s   r   r~   Ttest_relocate_to_resumed_session_keeps_cwd_when_session_is_unknown.<locals>.<lambda>  r3  r   r&  r%  ra   r   r   r   r   r:  r   r  r  r   Nrf   r5  )rT   r   r   r7  r8  r   r  r9  ri   rj   rk   rl   rm   rn   ro   rp   )r   r   r:  rt   r   r   r	  r   r  r
  r  s   &&        @r   Btest_relocate_to_resumed_session_keeps_cwd_when_session_is_unknownr@    s<    i'*4Lt$;&2IOODO!!8:PQi ''5[(\]88,8:,**,*,,,,,,,,:,,,,,,4,,,,4,,,8,,,:,,,,,,,,,,,,,*,,,,,,,,,,,,,r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s&     - --#- 
-r   c                (  a R pV R,          R,          oV R,          R,          pVP                  RR7       \        SRW R,          4       VP                  \        R	V3R
 l4       VP	                  V4       \        P
                  ! RV.4       \        P                  qD! 4       qSP                  qf! 4       quV8H  q'       EgI   \        P                  ! RV3RWW34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                   ! V
4      4      hR;p;p;p;rgR# )r%  rq  r  r,  r.  Trt  z-gonedeletedr/  c                 
   < S .# r   r   r1  s   r   r~   \test_relocate_to_resumed_session_keeps_cwd_when_recorded_directory_is_gone.<locals>.<lambda>  r3  r   r&  ra   r   r   r   r   r:  r   r  r  r   Nrf   r5  r6  )r   r   r  r:  rt   r   r   r	  r   r  r
  r  s   &&         @r   Jtest_relocate_to_resumed_session_keeps_cwd_when_recorded_directory_is_gonerF    s@    8Ji'*4L;&2IOODO!\7J98LM!8:PQi ''Z(@A88,8:,**,*,,,,,,,,:,,,,,,4,,,,4,,,8,,,:,,,,,,,,,,,,,*,,,,,,,,,,,,,r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   )r   s   "r   r   r     s     > >D >T >r   c                    V R ,          # )r   r   r   s   &r   _runtime_trayrI    s    ===r   r  royseat_idzseat-1hostdebian1fingerprintabcc               0    V ^8  d   QhRRRRRRRRRRRR/# )	r   r  r#   rK  rL  r<  rN  r   zdict[str, str]r   )r   s   "r   r   r     sF        	
   r   c                    R V RVRVRVRVRR/# )r  seatIdrL  r<  credentialFingerprintboundAtz2026-08-06T00:00:00Zr   )r  rK  rL  r<  rN  s   $$$$$r   _seat_bindingrU    s-     	7') r   c               $    V ^8  d   QhRRRRRR/# )r   rI   r   r-   zMapping[str, object]r   r   r   )r   s   "r   r   r     s"     ; ; ;(< ; ;r   c                    V P                   P                  R R R7       V P                  \        P                  ! V4      RR7       R# rK   rR   rV   s   &&r   _write_bindingrX    rX   r   c               $    V ^8  d   QhRRRRRR/# r   r   r   r   r#   r   r   )r   s   "r   r   r     !      T   r   c                j    \        V 4      R ,          V,          R,          pVP                  RR7       V# )r  r  Trt  )rI  rT   r   r   r  s   && r   _ensure_claude_accountr^    s3     *->>EULt$r   c               $    V ^8  d   QhRRRRRR/# rZ  r   )r   s   "r   r   r     r[  r   c                b    \        W4      p\        V 4      R ,          P                  VRR7       V# )r  rO   rP   )r^  rI  rU   r]  s   && r   _ensure_claude_defaultra    s1    )(9L844@@PW@Xr   c               $    V ^8  d   QhRRRRRR/# )r   r   r#   r   zPath | Noner   zclaudex.ClaudeAccountr   )r   s   "r   r   r     s"      s + I^ r   c                z    T;'       g    \        R V  R24      p\        P                  ! V VR\        V4      /4      # )z/tmp/z/CLAUDE_HOMEr^  )r   r   r  r#   )r   r   r  s   && r   _fake_claude_accountrd    sC    ;;4%v\ :;L  	c,/0 r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s     U UD Ur   c                    \         P                  ! . RO4      w  r\         P                  pRpRqB! W44      qPV8H  qf'       EgI   \        P                  ! RV3RW34      RR\
        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRRR\
        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rE. ROqV	8H  qf'       g   \        P                  ! RV3RW34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V	4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;riR# )r  rJ  Nra   r   r   r   r   r   r   r  r  r   r  rb   rc   rd   )r  rJ  rz  terra--	--accountr/  r&  rf   )za%(py0)s == %(py10)s
{%(py10)s = %(py4)s
{%(py4)s = %(py2)s.AccountOverrides
}(%(py6)s, %(py8)s)
})rz  rg  rh  ri  r/  r&  rh   )r   parse_seat_account_overridesr"  ri   rj   rk   rl   rm   rn   ro   rp   )r   r  r   r   r   r	  rt   r  r
  rs   ru   rv   s               r   :test_parse_seat_account_overrides_forwards_after_separatorrk    s<   !>>_H //<<e</<<<<<<<<8<<<<<<8<<<<8<<<<<<<w<<<<w<<</<<<<<<e<<<<<<<<<<<<TTTTTTTT9TTTTTT9TTTT9TTTTTTTTTTTTr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s      4F 4 r   c                T  a . oR  V3R llpV P                  \        RRR l4       V P                  \        P                  R\        R 4      4       V P                  \        RR 4       V P                  \        P                  R	V4       \        P
                  ! . RO4      p^q2V8H  qD'       g   \        P                  ! RV3RW#34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;rC. RO.pSV8H  qD'       g   \        P                  ! RV3RSV34      R
R\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;rCR# )c               $    V ^8  d   QhRRRRRR/# r   rw   r]   r   rA  r   rO  r   )r   s   "r   r   8test_run_seat_delegates_exact_argv.<locals>.__annotate__#  s"     8 8) 8v 8:Z 8r   c                T   < SP                  V 4       \        P                  ! V ^4      # )   r   rS  rT  rw   r   r   s   &,r   rV  4test_run_seat_delegates_exact_argv.<locals>.fake_run#  s"    W**7B77r   r  Nc                    \        4       # r   rd  r  s   &r   r~   4test_run_seat_delegates_exact_argv.<locals>.<lambda>'      MaMcr   r  c                    \        R 4      # /repor   clss   &r   r~   rx  (      T']r   resolve_seat_remote_binaryc                     R # /bin/seat-remoter   r   r   r   r~   rx  )      GYr   ro  ra   r{  rb   rc   rd   r   r   )--seatrz  rg  rh  r&  -phirf   rh   )r  launchz--hostautori  rJ  	--projectr|  rz  r  rh  r&  r  r  r   r   r   classmethodrS  ro  ri   rj   rk   rl   rm   rn   ro   rp   )r   rV  r{  rs   rt   ru   rv   r   s   &      @r   "test_run_seat_delegates_exact_argvr     s   E8 8 !9;cde[9R-ST!=?YZ**E8<[[QRFR<666R  5     5      5   5           r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   A  s      W WEW W\` Wr   c                  a . oR  V3R llpV P                  \        RRR l4       V P                  \        P                  R\        R 4      4       V P                  \        RR 4       V P                  \        P                  R	V4       \        P
                  ! . RO4       S^ ,          P                  R
4      pS^ ,          V^,           R p. ROqCV8H  qU'       gy   \        P                  ! RV3RW434      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rTR# )c               $    V ^8  d   QhRRRRRR/# ro  r   )r   s   "r   r   Itest_run_seat_forwards_account_flag_after_separator.<locals>.__annotate__D  "     7 7) 7v 7:Z 7r   c                T   < SP                  V 4       \        P                  ! V ^ 4      # r   rs  rt  s   &,r   rV  Etest_run_seat_forwards_account_flag_after_separator.<locals>.fake_runD  "    W**7A66r   r  Nc                    \        4       # r   rw  r  s   &r   r~   Etest_run_seat_forwards_account_flag_after_separator.<locals>.<lambda>H  ry  r   r  c                    \        R 4      # r{  r   r}  s   &r   r~   r  I  r  r   r  c                     R # r  r   r   r   r   r~   r  J  r  r   ro  rh  r   r   r   r   r   )	r  rz  rg  rh  ri  r/  r&  r  r  )ri  r/  r&  r  r  rf   r   r   r   r   r  rS  ro  indexri   rj   rn   ro   rp   )	r   rV  	separatorr  r   rs   r   r   r   s	   &       @r   3test_run_seat_forwards_account_flag_after_separatorr  A  s    E7 7 !9;cde[9R-ST!=?YZ**E8<KKZ at$I8IMO$V(VV(VVVVVV$VVV$VVV(VVVVVVVVVr   c               $    V ^8  d   QhRRRRRR/# )r   tokenr#   expectedr   r   r   )r   s   "r   r   r   _  s$     ? ???	?r   c                *   \         P                  q"! V 4      q3V8H  qD'       Egk   \        P                  ! RV3RW134      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;r4R# )rg   ra   r   r   rb   r  rd   r   r  r   r   Nrf   )z^%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.resolve_seat_model_token
}(%(py3)s)
} == %(py7)s)
r   resolve_seat_model_tokenri   rj   rk   rl   rm   rn   ro   rp   )r  r  rt   r   r  r   r  s   &&     r   ;test_resolve_seat_model_token_accepts_aliases_and_exact_idsr  U  s     ++>+E2>h>>>>>2>>>>>>7>>>>7>>>+>>>>>>E>>>>E>>>2>>>>>>h>>>>h>>>>>>>>r   z-m=terraz--model=solc               $    V ^8  d   QhRRRRRR/# )r   r\   r]   r-  r#   r   r   r   )r   s   "r   r   r   n  s$      
%(	r   c                   \         P                  q"! V 4      p\         P                  pR .qT! W4      qcV8H  qw'       Eg   \        P                  ! RV3RW634      RR\
        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      RR\
        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R	R
\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      R\        P                  ! V4      /	,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;p;p;p;rVR# )r&  ra   r   r   rb   r\   rd   r   r   r  r-  r   r   r  r  Nrf   )z%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.parse_seat_wrapper_model
}(%(py3)s)
} == %(py14)s
{%(py14)s = %(py9)s
{%(py9)s = %(py7)s.SeatWrapperModel
}(%(py10)s, %(py12)s)
})r   parse_seat_wrapper_modelSeatWrapperModelri   rj   rk   rl   rm   rn   ro   rp   )
r\   r-  rt   r   r   r   r   r  r  r  s
   &&        r   @test_parse_seat_wrapper_model_accepts_short_and_long_model_flagsr  e  s    ++ +D1 W5M5M 5M6  6    1     7   7   +     D   D   1     W   W   5M             6        r   c               $    V ^8  d   QhRRRRRR/# )r   r  r#   messager   r   r   )r   s   "r   r   r     s#     0 0C 0RU 0Z^ 0r   c                    \         P                  ! \        P                  \        P
                  ! V4      R 7      ;_uu_ 4        \        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)r   N)r   r   r   rL  reescaper  r  r  s   &&r   8test_resolve_seat_model_token_rejects_native_and_unknownr  v  sB     
w++299W3E	F	F((/ 
G	F	F	Fs   A$$A5	r  z seat-remote: --model is requiredzduplicate wrapper --modelzfallback-modelzforwarded security arg deniedc               (    V ^8  d   QhRRRRRRRR/# )	r   r\   r]   patternr#   r   r   r   r   r   )r   s   "r   r   r     s,      
!0B	r   c                @   VP                  \        R RR l4       VP                  \        P                  RR 4       \        P                  ! \        P
                  VR7      ;_uu_ 4        \        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)r  Nc                    \        4       # r   rw  r  s   &r   r~   Gtest_run_seat_rejects_invalid_model_before_subprocess.<locals>.<lambda>  ry  r   ro  c                 .    \         P                  ! R 4      # zno subprocessrY  r[  s   *,r   r~   r        6;;WfKgr   r   r   )r   r   rS  r   r   rL  ro  )r\   r  r   s   &&&r   5test_run_seat_rejects_invalid_model_before_subprocessr    sc      !9;cd**E3gh	w++7	;	;D 
<	;	;	;s   +BB	c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s      D D@R DW[ Dr   c                  a . oR  V3R llpV P                  \        RRR l4       V P                  \        P                  R\        R 4      4       V P                  \        RR 4       V P                  \        P                  R	V4       \        P
                  ! . RO4       S^ ,          S^ ,          P                  R4      ^,           ,          pR
q2V8H  qD'       gy   \        P                  ! RV3RW#34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rCR# )c               $    V ^8  d   QhRRRRRR/# ro  r   )r   s   "r   r   Dtest_run_seat_honors_claude_account_precedence.<locals>.__annotate__  r  r   c                T   < SP                  V 4       \        P                  ! V ^ 4      # r   rs  rt  s   &,r   rV  @test_run_seat_honors_claude_account_precedence.<locals>.fake_run  r  r   r  Nc                    \        R 4      # )r  rw  r  s   &r   r~   @test_run_seat_honors_claude_account_precedence.<locals>.<lambda>  s
    .{;r   r  c                    \        R 4      # r{  r   r}  s   &r   r~   r    r  r   r  c                     R # r  r   r   r   r   r~   r    r  r   ro  r  ri  r   r   r   r   r   )r  r  r  rz  r   rf   r   r  )r   rV  r  r   rs   r   r   r   s   &      @r   .test_run_seat_honors_claude_account_precedencer    s    E7 7  ;
 e[9R-ST!=?YZ**E8<KKMN8E!HNN;/!34CCCCCCC4CCC4CCCCCCCCCCCr   c               $    V ^8  d   QhRRRRRR/# r   r   r   r   r   r   r   r   )r   s   "r   r   r     s)     B B9K BW[ B`d Br   c                  a	 VR ,          pVP                  4        V P                  V4       . o	R V	3R llpV P                  \        RRR l4       V P                  \        RR 4       V P                  \        P                  RV4       \        P
                  ! . RO4       S	^ ,          S	^ ,          P                  R	4      ^,           ,          p\        V4      qTV8H  qf'       Eg   \        P                  ! RV3RWE34      R
\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;reR# )r  c               $    V ^8  d   QhRRRRRR/# ro  r   )r   s   "r   r   =test_run_seat_uses_resume_relocated_cwd.<locals>.__annotate__  r  r   c                T   < SP                  V 4       \        P                  ! V ^ 4      # r   rs  rt  s   &,r   rV  9test_run_seat_uses_resume_relocated_cwd.<locals>.fake_run  r  r   r  Nc                    \        R 4      # rJ  rw  r  s   &r   r~   9test_run_seat_uses_resume_relocated_cwd.<locals>.<lambda>  s
    .u5r   r  c                     R # r  r   r   r   r   r~   r    r  r   ro  r  r   rb   r#   r   workr   r  r   r   )r  rz  r+  resumezsession-abcrf   r  )rT   r7  r   r   rS  ro  r  r#   ri   rj   rn   rk   rl   rm   ro   rp   )
r   r   r  rV  r  r   rs   r   r  r   s
   &&       @r   'test_run_seat_uses_resume_relocated_cwdr    s;   eDJJLdE7 7  5
 !=?YZ**E8<KKFG8E!HNN;/!34AD	A	AAAAA4AAA4AAAAAAAAAAAAAAAAADAAAADAAA	AAAAAAAAr   c               $    V ^8  d   QhRRRRRR/# rS  r   )r   s   "r   r   r     s$     4 4#4-G4	4r   c                b   V P                  \        R RR l4       V P                  \        RR 4       \        P                  ! . RO4      p^q2V8H  qD'       g   \        P                  ! RV3RW#34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR;rCR
qqP                  q! 4       qP                  qV
9   q3'       g   \        P                  ! RV3RWz34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rR# )r  Nc                    \        4       # r   rw  r  s   &r   r~   8test_run_seat_missing_binary_exits_127.<locals>.<lambda>  ry  r   r  c                 Z    R  R 4       P                  \        P                  ! R4      4      # )c              3  $   "   T F  qx  K  	  R # 5ir   r   ).0_s   & r   	<genexpr>Ktest_run_seat_missing_binary_exits_127.<locals>.<lambda>.<locals>.<genexpr>  s     BqBs   z/claudex: required binary not found: seat-remoter   )throwr   MissingBinaryErrorr   r   r   r~   r    s"    B%%&&'XY
r   ra   ra  rb   rc   rd   seat-remoter   rT  r   r   r'  r  r   )r   r  rz  r   rf   rh   rJ  )zb%(py1)s in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.readouterr
}()
}.err
})r   r   re  ri   rj   rk   rl   rm   rn   ro   rp   rf  rh  )r   rT  ra  rs   rt   ru   rv   r  r   r  r   r  r)  s   &&           r   &test_run_seat_missing_binary_exits_127r    sA    !9;cd$	
 DEI9993--3-/3333333333=333=333333F3333F333-333/3333333333333r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s     
; 
;<N 
;SW 
;r   c                Z   V P                  \        R RR l4       V P                  \        P                  R\        R 4      4       V P                  \        RR 4       V P                  \        P                  RR 4       \        P
                  p. ROq!! V4      p^*qCV8H  qU'       g   \        P                  ! RV3RW434      R	R
\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MR
R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rTR# )r  Nc                    \        4       # r   rw  r  s   &r   r~   <test_run_seat_propagates_child_exit_status.<locals>.<lambda>  ry  r   r  c                    \        R 4      # r{  r   r}  s   &r   r~   r    r  r   r  c                     R # r  r   r   r   r   r~   r    r  r   ro  c                0    \         P                  ! V ^*4      # )*   rS  rT  rw   r   s   &,r   r~   r    s    *"="=gr"Jr   ra   r   r   r   r   r   r'  r  r   r  rz  r   rf   zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.run
}(%(py4)s)
} == %(py9)sr  )r   rt   r   r   r   r   r  r)  s   &       r   *test_run_seat_propagates_child_exit_statusr    s   !9;cde[9R-ST!=?YZJ ;;:3:;34:::::::4::::::7::::7:::;:::3:::4::::::::::::r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     
( 
(
(!3
(	
(r   c                  a  VP                  \        P                  R V 3R l4       \        S R4       \        P                  ! RS 4      p\        V\        4       4       VP                  \        P                  RR 4       \        P                  ! \        P                  RR7      ;_uu_ 4        \        P                  ! RR.4       R	R	R	4       R	#   + '       g   i     R	# ; i)
r   c                    < S # r   r   r   s   r   r~   Dtest_bound_account_blocks_non_seat_local_execution.<locals>.<lambda>  r   r   rJ  ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   r    r  r   use claudex --seatr   rz  r   N)r   r   r   ra  seat_binding_pathrX  rU  rS  r   r   rL  ro  r   r   binding_paths   f& r   2test_bound_account_blocks_non_seat_local_executionr    s     f.>?8U+,,UH=L<1**E3gh	w++3G	H	HY&' 
I	H	H	Hs   .CC"	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     0 00!30	0r   c                  a a VP                  \        P                  R V 3R l4       S R,          R,          pS R,          p\        V\	        ^4      4       \        P
                  ! RW#4      oVP                  \        RRV3R ll4       VP                  \        P                  R	R
 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        P                  RR 4       VP                  \        P                  RR 4       \        P                  pRR.qT! V4      p^ qvV8H  q'       g   \        P                  ! RV3RWg34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                   ! V
4      4      hR;p;p;p;rR# ) r   c                    < S # r   r   r   s   r   r~   Ftest_unbound_account_allows_non_seat_local_execution.<locals>.<lambda>  r   r   r   r   r   rJ  r   Nc                   < S# r   r   rZ  s   &r   r~   r    r\  r   rz   c                    R V  2# rb  r   r|   s   &r   r~   r    rc  r   rd  c                     R # )i90  r   r   r   r   r~   r    rg  r   rh  c                    R # r   r   rj  s   &&r   r~   r    rm  r   ro  c                0    \         P                  ! V ^ 4      # r   r  r  s   &,r   r~   r        *"="=gq"Ir   rn  c                 <    \        R RRR RR RRR l/4      ! 4       # )	Proxyr#  c                    R # r   r   r"  s   &r   r~   Xtest_unbound_account_allows_non_seat_local_execution.<locals>.<lambda>.<locals>.<lambda>      Tr   r*  c                    R # r   r   r"  s   &r   r~   r        $r   r4  c                    ^ # r   r   r3  s   &&r   r~   r        1r   r   r   r  r[  s   *,r   r~   r    +    ).4!
 !r   rz  r   ra   r   r   r   r   r   r'  r  r   rf   r  )r   r   r   rW   rA   r  r   rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   )r   r   r   r~  rt   r   r   r   r   r  r)  r   s   f&         @r   4test_unbound_account_allows_non_seat_local_executionr    s    f.>?\)K7K>)I{K,-&&ukEH!;=WX1LM!6F!13MNI
 	 ;;/	5)/;)*/a/a/////*//////7////7///;///)///*///a/////////r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     : ::!3:	:r   c                  a  VP                  \        P                  R V 3R l4       \        \        P                  ! RS 4      \        4       4       VP                  \        RRR l4       VP                  \        P                  R\        R 4      4       VP                  \        RR	 4       VP                  \        P                  R
R 4       \        P                  p. ROq2! V4      p^ qTV8H  qf'       g   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;p;p;reR# )r   c                    < S # r   r   r   s   r   r~   :test_bound_account_allows_seat_execution.<locals>.<lambda>  r   r   rJ  r  Nc                    \        4       # r   rw  r  s   &r   r~   r    ry  r   r  c                    \        R 4      # r{  r   r}  s   &r   r~   r    r  r   r  c                     R # r  r   r   r   r   r~   r    r  r   ro  c                0    \         P                  ! V ^ 4      # r   r  r  s   &,r   r~   r     r   r   ra   r   r   r   r   r   r'  r  r   r  rf   r  )r   r   r   rX  r  rU  r  rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   )	r   r   rt   r   r   r   r   r  r)  s	   f&       r   (test_bound_account_allows_seat_executionr    s7    f.>?7,,UH=}O!9;cde[9R-ST!=?YZI ;;939;3499999994999999799997999;99939994999999999999r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   &  s)     B B#B/3B	Br   c                  aa	 SR ,          o	S	P                  RRR7       S	P                  R4       SR,          R,          R,          pVP                  P                  RR	7       VP                  RRR7       VP                  R4       V P	                  \
        P                  R
V	3R l4       V P	                  \
        P                  RV3R l4       \
        P                  q3! 4       p\        S	4      qTV8H  qf'       Eg   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! S	4      '       d   \        P                  ! S	4      MRR\        P                  ! V4      /,          pRRV/,          p\!        \        P"                  ! V4      4      hR;p;p;reV P	                  \
        P                  R
R 4       \
        P                  q3! 4       p\        V4      qTV8H  qf'       Eg   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p\!        \        P"                  ! V4      4      hR;p;p;reR# )zpath-seat-remoteru  rO   rP   rv  rq  rr  r  Trt  rz   c                   < \        S4      # r   rz  )r}   path_binarys   &r   r~   Mtest_resolve_seat_remote_binary_prefers_path_then_canonical.<locals>.<lambda>1  s
    c+>Nr   r   c                    < S # r   r   r   s   r   r~   r  2  r   r   ra   r   r   r   r   r#   r   r  r   r'  r  Nc                    R # r   r   r|   s   &r   r~   r  5  s    dr   	canonicalrf   )zw%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.resolve_seat_remote_binary
}()
} == %(py9)s
{%(py9)s = %(py6)s(%(py7)s)
})rU   r  rS   rT   r   r   r   r   r  r#   ri   rj   rk   rl   rm   rn   ro   rp   )
r   r   r  rt   r   r   r   r  r)  r  s
   &f       @r   ;test_resolve_seat_remote_binary_prefers_path_then_canonicalr  &  so    //K=7;e9$u,}<I4(9OOE1NOf.>?--C-/C3{3CC3CCCCCC/CCCCCC7CCCC7CCC-CCC/CCCCCC3CCCC3CCCCCCC{CCCC{CCC3CCCCCCCCC1BC--A-/A3y>A>AAAAA/AAAAAA7AAAA7AAA-AAA/AAAAAA3AAAA3AAAAAAAyAAAAyAAA>AAAAAAAAr   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   9  s#     ( (t (J\ (ae (r   c                  a  VP                  \        P                  R V 3R l4       \        S R4       \        P                  ! RS 4      p\        VRR/4       VP                  \        P                  RR 4       \        P                  ! \        P                  RR7      ;_uu_ 4        \        P                  ! RR	.4       R
R
R
4       R
#   + '       g   i     R
# ; i)r   c                    < S # r   r   r   s   r   r~   :test_malformed_seat_binding_fails_closed.<locals>.<lambda>:  r   r   rJ  r  ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   r"  >  r  r   invalid seat binding recordr   rz  r   N)r   r   r   ra  r  rX  rS  r   r   rL  ro  r  s   f& r   (test_malformed_seat_binding_fails_closedr%  9  s    f.>?8U+,,UH=L<)U!34**E3gh	w++3P	Q	QY&' 
R	Q	Q	Qs   (CC	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   D  s#     ( (T (HZ (_c (r   c                8  a  VP                  \        P                  R V 3R l4       \        S R4       S R,          p\	        V\        4       4       \        P                  ! RS 4      pVP                  P                  RRR7       VP                  V4       VP                  \        P                  RR 4       \        P                  ! \        P                  RR	7      ;_uu_ 4        \        P                  ! R
R.4       RRR4       R#   + '       g   i     R# ; i)r   c                    < S # r   r   r   s   r   r~   8test_symlink_seat_binding_fails_closed.<locals>.<lambda>E  r   r   rJ  ztarget.jsonTrL   ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   r)  L  r  r   r$  r   rz  r   N)r   r   r   ra  rX  rU  r  rS   rT   r  rS  r   r   rL  ro  )r   r   targetr  s   f&  r   &test_symlink_seat_binding_fails_closedr,  D  s    f.>?8U+%F6=?+,,UH=LdT:F#**E3gh	w++3P	Q	QY&' 
R	Q	Q	Qs   %DD	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   R  s#     	( 	(t 	(J\ 	(ae 	(r   c                :  a  VP                  \        P                  R V 3R l4       \        S R4       \        P                  ! RS 4      pVP
                  P                  RRR7       VP                  R\        P                  ^,           ,          RR7       VP                  \        P                  RR	 4       \        P                  ! \        P                  R
R7      ;_uu_ 4        \        P                  ! RR.4       RRR4       R#   + '       g   i     R# ; i)r   c                    < S # r   r   r   s   r   r~   :test_oversized_seat_binding_fails_closed.<locals>.<lambda>S  r   r   rJ  TrL   xrO   rP   ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   r0  X  r  r   r$  r   rz  r   N)r   r   r   ra  r  rS   rT   rU   SEAT_BINDING_MAX_BYTESrS  r   r   rL  ro  r  s   f& r   (test_oversized_seat_binding_fails_closedr4  R  s    f.>?8U+,,UH=LdT:C7#A#AA#EFQXY**E3gh	w++3P	Q	QY&' 
R	Q	Q	Qs   &D		D	c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   ^  s     . .FX .]a .r   c                   V P                  \        R RR l4       V P                  \        P                  R\        R 4      4       V P                  \        RR 4       V P                  \        RR 4       V P                  \        R	R
 4       V P                  \        RR 4       V P                  \        P                  RR 4       \        P
                  ! . RO4       R# )r  Nc                    \        4       # r   rw  r  s   &r   r~   Ftest_run_seat_does_not_invoke_native_or_hybrid_paths.<locals>.<lambda>_  ry  r   r  c                    \        R 4      # r{  r   r}  s   &r   r~   r8  `  r  r   r  c                     R # r  r   r   r   r   r~   r8  a  r  r   r!  c                 .    \         P                  ! R 4      # )r  rY  r[  s   *,r   r~   r8  b      v{{S[G\r   r_  c                 .    \         P                  ! R 4      # )hybridrY  r[  s   *,r   r~   r8  c  r<  r   rW  c                 .    \         P                  ! R 4      # )proxyrY  r[  s   *,r   r~   r8  d  s    fkkRYFZr   ro  c                0    \         P                  ! V ^ 4      # r   r  r  s   &,r   r~   r8  h  r   r   r   r  )r   r   r   r  rS  ro  r   s   &r   4test_run_seat_does_not_invoke_native_or_hybrid_pathsrB  ^  s    !9;cde[9R-ST!=?YZ/\]/\].Z[I KK,-r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   n  s     " "$ "4 "r   c                   \         P                  ! R V 4      p\        V\        4       4       VP	                  ^ 4        \         P
                  pR q2! W04      pRqTV8H  qf'       EgI   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;p;p;reVP	                  R4       R#   TP	                  R4       i ; i)rJ  invalidra   r   r   r   rd   r   r   r  r  r   Nr   rf   za%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.load_seat_binding
}(%(py4)s, %(py5)s)
} == %(py10)s)r   r  rX  rU  r  load_seat_bindingri   rj   rk   rl   rm   rn   ro   rp   	r   r  rt   r   r  r	  r   r  r
  s	   &        r   3test_load_seat_binding_unreadable_file_fails_closedrI  n  s   ,,UH=L<1u"((FF(9FYFYFFFFF9FFFFFFwFFFFwFFF(FFFFFFFFFFFFFFFF9FFFYFFFFFFFF5!5!s   A;G	 :A=G	 8A>G	 	Gc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   y  s     C CD CT Cr   c                H   \         P                  ! R V 4      pVP                  RR7       \         P                  pR q2! W04      pRqTV8H  qf'       EgI   \        P
                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      RR	\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR	R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;reR# )rJ  Trt  rE  ra   r   r   r   rd   r   r   r  r  r   Nrf   rF  )r   r  rT   rG  ri   rj   rk   rl   rm   rn   ro   rp   rH  s	   &        r   -test_load_seat_binding_directory_fails_closedrL  y  s    ,,UH=Lt$$$BUB$U5BBBBBBB5BBBBBB7BBBB7BBB$BBBUBBBBBBHBBBBHBBB5BBBBBBBBBBBBr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s      G G#G	Gr   c                   V P                  \        R RR7       \        P                  pRpRp\	        V4      qA! W$4      pRqeV8H  qw'       Eg}   \
        P                  ! RV3RWV34      RR\        P                  ! 4       9   g!   \
        P                  ! \        4      '       d   \
        P                  ! \        4      MRR\
        P                  ! V4      R	\
        P                  ! V4      R
R\        P                  ! 4       9   g!   \
        P                  ! \        4      '       d   \
        P                  ! \        4      MRR\
        P                  ! V4      R\
        P                  ! V4      R\
        P                  ! V4      R\
        P                  ! V4      /,          pRRV/,          p	\        \
        P                  ! V	4      4      hR;p;p;p;p;p;rvR# )
O_NOFOLLOWFr_  rJ  z/tmprE  ra   r   r   r   rd   r   r   r   r  r   r  r  Nrf   )z%(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.load_seat_binding
}(%(py4)s, %(py9)s
{%(py9)s = %(py5)s(%(py7)s)
})
} == %(py14)s)delattrr   r   rG  r   ri   rj   rk   rl   rm   rn   ro   rp   )
r   rt   r   r  r   r   r   r  r  r  s
   &         r   6test_load_seat_binding_missing_o_nofollow_fails_closedrQ    s     L%8$$FUFFDLF$U9FYFYFFFFF9FFFFFF7FFFF7FFF$FFFUFFFFFFDFFFFDFFFFFFLFFF9FFFYFFFFFFFFFr   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     (  ( ( !3( 	( r   c                  a aa S R ,          R,          pS R,          p\        V\        ^4      4       \        P                  ! RW#4      o. oVP	                  \        P
                  RV 3R l4       VP	                  \        RR$V3R ll4       VP	                  \        R	R
 4       VP	                  \        P                  RR 4       VP	                  \        RR 4       VP	                  \        RR 4       VP	                  \        P                  RR 4       VP	                  \        P                  RR 4       VP	                  \        RR$V3R ll4       \        P                  pR.qT! V4      p^ qvV8H  q'       g   \        P                  ! R%V3R&Wg34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                   ! V
4      4      hR;p;p;p;rR.pSV8H  qD'       g   \        P                  ! R%V3R'SV34      RR \        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MR R!\        P                  ! V4      /,          pR"R#V/,          p\        \        P                   ! V4      4      hR;rKR# )(r   r   r   r  r   c                    < S # r   r   r   s   r   r~   Atest_non_seat_gate_skips_without_claude_account.<locals>.<lambda>  r   r   r   Nc                   < S# r   r   rZ  s   &r   r~   rU    r\  r   r  c                    R # r  r   r  s   &r   r~   rU    r  r   rz   c                    R V  2# rb  r   r|   s   &r   r~   rU    rc  r   rd  c                     R # rf  r   r   r   r   r~   rU    rg  r   rh  c                    R # r   r   rj  s   &&r   r~   rU    rm  r   rn  c                 <    \        R RRR RR RRR l/4      ! 4       # )	r  r#  c                    R # r   r   r"  s   &r   r~   Stest_non_seat_gate_skips_without_claude_account.<locals>.<lambda>.<locals>.<lambda>  r  r   r*  c                    R # r   r   r"  s   &r   r~   r]    r  r   r4  c                    ^ # r   r   r3  s   &&r   r~   r]    r	  r   r   r   r
  r[  s   *,r   r~   rU    r  r   ro  c                0    \         P                  ! V ^ 4      # r   r  r  s   &,r   r~   rU    r   r   enforce_local_seat_binding_gatec                &   < SP                  V 4      # r   r   )r   r   
gate_callss   &&r   r~   rU    s    
 1 1$ 7r   r  ra   r   r   r   r   r   r'  r  rc  rb   rc   rd   r   rf   r  rh   )rW   rA   r   r  r   r   r   rS  ro  ri   rj   rk   rl   rm   rn   ro   rp   )r   r   r   r~  rt   r   r   r   r   r  r)  rs   ru   rv   rc  r   s   f&            @@r   /test_non_seat_gate_skips_without_claude_accountrd    s    \)K7K>)I{K,-&&wGH#%Jf.>?!;=WX!8:LM1LM!6F!13MN	 I
 )7 ;;0)*0;*+0q0q00000+000000700007000;000*000+000q00000000::::r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     D DD!3D	Dr   c                   a  VP                  \        P                  R V 3R l4       \        S R4       \	        \        P
                  ! RS 4      \        4       4       VP                  \        RR
V 3R ll4       VP                  \        P                  RR 4       \        P                  ! \        P                  RR	7      ;_uu_ 4        \        P                  ! . RO4       RRR4       R#   + '       g   i     R# ; i)r   c                    < S # r   r   r   s   r   r~   Btest_native_bound_account_blocks_local_execution.<locals>.<lambda>  r   r   rJ  r  Nc                T   < \        R SR,          R,          R ,          R,          4      # )rJ  z.systray-air  r  rw  )r   r   s   &r   r~   rh    s$    .uh6NQb6bej6jmz6z{r   ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   rh    r  r   r  r   r   )rz  r  r  rJ  r   r   r   ra  rX  r  rU  rS  r   r   rL  ro  r   r   s   f&r   0test_native_bound_account_blocks_local_executionrm    s     f.>?8U+7,,UH=}O {
 **E3gh	w++3G	H	HBC 
I	H	H	Hs   	C,,C=	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s$     	1 	1	1!3	1		1r   c                  a  VP                  \        P                  R V 3R l4       \        S R4       \	        \        P
                  ! RS 4      \        4       4       VP                  \        P                  RR 4       \        P                  ! \        P                  RR7      ;_uu_ 4        \        P                  ! RR.4       RRR4       R#   + '       g   i     R# ; i)	r   c                    < S # r   r   r   s   r   r~   Btest_hybrid_bound_account_blocks_local_execution.<locals>.<lambda>  r   r   rJ  ro  c                 .    \         P                  ! R 4      # r  rY  r[  s   *,r   r~   rq    r  r   r  r   r  Nrk  rl  s   f&r   0test_hybrid_bound_account_blocks_local_executionrs    s     f.>?8U+7,,UH=}O**E3gh	w++3G	H	H'/0 
I	H	H	Hs   ,CC 	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     N NN!3N	Nr   c                6  a  S R ,          p\         P                  ! VS R,          R7      pVP                  RR4      pVR,          pVP                  qf! 4       qw'       * q'       g   RRR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
\        P                  ! V4      /,          p	\        \        P                  ! V	4      4      hR;p;rxS R,          p
VP                  R\         P                  ! \         P                  P                  RRRV
P                  4       R7      4       VP                   P#                  RRR7       VP%                  \         P&                  RV 3R l4       \         P(                  ! 4       pVP*                  pRqV8H  qw'       g   \        P,                  ! R"V3R#Wl34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p;r|VP.                  qfV8H  qw'       g   \        P,                  ! R"V3R$We34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
R\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;rgVP.                  qfP                  qw! 4       q'       * pV'       g   RRR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;p;ppVP0                  pRqVJqw'       g   \        P,                  ! R%V3R&Wl34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p;r|VP0                  qfP2                  p\         P                  pVP                  pVV8H  q'       EgJ   \        P,                  ! R"V3R'VV34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
\        P                  ! V4      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pR R!V/,          p\        \        P                  ! V4      4      hR;p;p;p;ppR# )(r   z.codex)base_dirlegacy_codex_homemigratedMigratedr   Eassert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}ra   r   r   r   Nmigrated.grantworkstationroutefixture1234567890r   modeauthority_nameroute_idproviderproxy_grant_refz	migrated
rO   rP   r   c                    < S # r   r   r   s   r   r~   Rtest_migrated_selected_account_resolves_without_native_auth_file.<locals>.<lambda>  r   r   r   rd   r   r   r   r   zkassert not %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.native_auth_path
}.exists
}()
}r   r   r  r  r   rf   r   r   )is not)z=%(py2)s
{%(py2)s = %(py0)s.authority_binding
} is not %(py5)s)z%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.authority_binding
}.mode
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.AuthorityMode
}.SUBROUTER
})r   AccountRegistryadd_direxistsrk   rl   ri   rm   rn   ro   rp   set_authority_bindingAuthorityBindingAuthorityMode	SUBROUTERr9  default_pathrU   r   r   r   r   rj   r   authority_bindingr  )r   r   r   registryr  r   rt   r   r   rv   grantr   r   r   r   r   r   r	  r  r
  s   f&                  r   @test_migrated_selected_account_resolves_without_native_auth_filer    s    ==D&&S[H[\H##J
;L,K!!#!###########{####{###!##########''E""  &&00(-!MMO	
	 $$\G$Df.>?//1H==&J&J&&&&&=&&&&&&8&&&&8&&&=&&&J&&&&&&&&$$333333$333333833338333$333333333333333333((1//1/11111111111x1111x111(111/11111111111%%1T1T11111%111111811118111%111T11111111%%M**Mg.C.CM.C.M.MM*.MMMMMM*.MMMMMMM8MMMM8MMM%MMM*MMMMMMgMMMMgMMM.CMMM.MMMMMMMMMMr   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s)     X$ X$X$!3X$	X$r   c                *!  aa  V R ,          pVP                   q3! 4       qD'       * qU'       g   RRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MRR\        P
                  ! V4      R\        P
                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;rE\        P                  ! \        P                  P                  RR	R
V R,          P                  4       R7      p\        P                  ! RVV R,          V R,          RV4      p. o  ! V 3R lR4      oR VV 3R llp	VP                  \        RR 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        P                  RV	4       \        P                   ! V4      ;_uu_ 4       p
RqV8H  q3'       g   \        P"                  ! RLV3RMW34      RR \        P                  ! 4       9   g   \        P                  ! V
4      '       d   \        P
                  ! V
4      MR R!\        P
                  ! V4      /,          pR"R#V/,          p\        \        P                  ! V4      4      hR;r;S ^ ,          w  r. RNOqV8H  q3'       g   \        P"                  ! RLV3RMW34      RR$\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR$R!\        P
                  ! V4      /,          pR"R#V/,          p\        \        P                  ! V4      4      hR;r;VR%,          pR&qOV8H  q'       gz   \        P"                  ! RLV3ROVV34      R'\        P
                  ! V4      R\        P
                  ! V4      /,          pR(R)V/,          p\        \        P                  ! V4      4      hR;p;rVR*,          pR+qOV8H  q'       gy   \        P"                  ! RLV3ROW34      R'\        P
                  ! V4      R\        P
                  ! V4      /,          pR(R)V/,          p\        \        P                  ! V4      4      hR;p;rVR,,          pR-qOV8H  q'       gy   \        P"                  ! RLV3ROW34      R'\        P
                  ! V4      R\        P
                  ! V4      /,          pR(R)V/,          p\        \        P                  ! V4      4      hR;p;r\%        VR.,          4      pVP&                  pVV8g  q3'       Eg    \        P"                  ! RPV3RQVV34      RR/\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/RR0\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR0R\        P
                  ! V4      /,          pR(R)V/,          p\        \        P                  ! V4      4      hR;r4VP(                  q3! 4       qDP*                  pR1pVV,          pR2pVV8H  pV'       Eg
   \        P"                  ! RLV3RRVV34      RR/\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/R\        P
                  ! V4      R\        P
                  ! V4      R)\        P
                  ! V4      R3\        P
                  ! V4      R4\        P
                  ! V4      /,          pR5R6V/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;ppVR7,          p\,        P.                  ! VP1                  R8R97      4      pR:R;R<RR=R>/pVV8H  q3'       g   \        P"                  ! RLV3RMVV34      RR?\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR?R!\        P
                  ! V4      /,          pR"R#V/,          p\        \        P                  ! V4      4      hR;r;VP(                  q3! 4       qDP*                  pR1pVV,          pR@pVV8H  pV'       Eg
   \        P"                  ! RLV3RRVV34      RRA\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MRAR\        P
                  ! V4      R\        P
                  ! V4      R)\        P
                  ! V4      R3\        P
                  ! V4      R4\        P
                  ! V4      /,          pR5R6V/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;ppRBqV9  q'       g   \        P"                  ! RSV3RTVV34      R'\        P
                  ! V4      R!R?\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR?/,          pR"R#V/,          p\        \        P                  ! V4      4      hR;rRCp\,        P2                  pV! V4      pVV9  q'       Eg4   \        P"                  ! RSV3RUVV34      R'\        P
                  ! V4      R!RD\        P                  ! 4       9   g!   \        P                  ! \,        4      '       d   \        P
                  ! \,        4      MRDR#\        P
                  ! V4      R)R?\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR?R3\        P
                  ! V4      /,          pRERFV/,          p\        \        P                  ! V4      4      hR;p;p;pp\5        V4      p\,        P2                  pV! V4      pVV9  pV'       Eg   \        P"                  ! RSV3RVVV34      RRG\        P                  ! 4       9   g!   \        P                  ! \4        4      '       d   \        P
                  ! \4        4      MRGR'R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MRR!\        P
                  ! V4      R#RD\        P                  ! 4       9   g!   \        P                  ! \,        4      '       d   \        P
                  ! \,        4      MRDRH\        P
                  ! V4      R3RI\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MRIRF\        P
                  ! V4      /,          pRJR4V/,          p\        \        P                  ! V4      4      hR;p;p;ppRRR4       S RW,          ^ ,          pRK.qOV8H  q'       gy   \        P"                  ! RLV3ROW34      R'\        P
                  ! V4      R\        P
                  ! V4      /,          pR(R)V/,          p\        \        P                  ! V4      4      hR;p;rXP                   q3! 4       qD'       * qU'       g   RRR/\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/R\        P
                  ! V4      R\        P
                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;rEVP                   q3! 4       qD'       * qU'       g   RRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MRR\        P
                  ! V4      R\        P
                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;rER#   + '       g   i     EL:; i)Xz&accounts/migrated/CODEX_HOME/auth.jsonrb  rz  ra   r   r   r   Nr|  r}  r   r{  r~  rx  zaccounts/migrated/CLAUDEX_HOMEruntimec                  V   < ] tR tRtRtR R ltR V 3R lltRR R lltR	 R
 ltRt	R# )ctest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxyi  Nc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   ptest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxy.__annotate__  r   r   c                	    R # r   r   r"  s   &r   r#  htest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxy.poll  r%  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r    r'  r   c                	0   < SP                  R ./ 34       R# r)  r   r+  s   &r   r*  mtest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxy.terminate  r-  r   c                    V ^8  d   QhRRRR/# r/  r   )r   s   "r   r   r    r1  r   c                	    ^ # r   r   r3  s   &&r   r4  htest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxy.wait  r6  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r    s     	M 	M$ 	Mr   c                	    \        R 4      h)z(authority proxy should terminate cleanlyr9  r"  s   &r   r:  htest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.FakeProxy.kill  s     !KLLr   r   r   r<  r   s   r   r>  r    s(    
		. 	.		M 	Mr   r>  c               $    V ^8  d   QhRRRRRR/# r@  r   )r   s   "r   r   ftest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.__annotate__  rC  r   c                   < SP                  V \        \        \        \        3,          VR ,          4      34       S! 4       # rE  rG  rI  s   &,r   rJ  dtest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.fake_popen  rL  r   resolve_authority_data_planec                 8    \        R RR\        RRRR4      R7      # )Ahttp://100.126.128.50:31416/r/routefixture1234567890/v1/responsesfixture-subrouter-grant   NOreadyGateway: ready      ?responses_url	proxy_keygrant_expires_at_mssanitized_statusr	   _args_kwargss   *,r   r~   btest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliation.<locals>.<lambda>  s&    "4]/ 1*)30A	#
r   r   c                 .    \         P                  ! R 4      # )z.migrated Claudex reconciled native credentialsrY  r  s   *,r   r~   r  '  s    &++.^"_r   r  c                    R # r  r   _names   &r   r~   r  )      BZr   rd  c                     R # )_  r   r   r   r   r~   r  *  rg  r   rh  c                    R # r   r   )_process_ports   &&r   r~   r  +  s    4r   rn  r  rl  rb   rc   rd   r|  CCP_CODEX_BASE_URLr  r   r   r   r  r  r  r  r}  
config_dirr   r   i  r   r   r   r   zcodex/auth.jsonrO   rP   rD   r  r1   rE   r  r-   r   proxy_auth_pathrF   r   r(   r  r  r#   r   r  r  r*  rf   rh   r  r   r
  )z8%(py0)s != %(py4)s
{%(py4)s = %(py2)s.proxy_config_dir
}r   r  r  )zO%(py1)s not in %(py8)s
{%(py8)s = %(py5)s
{%(py5)s = %(py3)s.dumps
}(%(py6)s)
})zo%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} not in %(py10)s
{%(py10)s = %(py7)s
{%(py7)s = %(py5)s.dumps
}(%(py8)s)
})r  rk   rl   ri   rm   rn   ro   rp   r   r  r  r  r9  r  r   rS  codex_proxyrj   r   r   r  r  r(   r   r  r)   r#   )!r   r   r   rt   r   r   rv   bindingr   rJ  rl  rs   ru   r|  r  r  r   r   r  r   r	  r   r   r
  r  r  r-   r   r  r  r  r>  r   s!   &&                             @@r   Ptest_authority_codex_proxy_uses_ephemeral_gateway_profile_without_reconciliationr    s	    EEK!!#!###########{####{###!##########&&"",,$)!$44==?G &&339H 57EM M  &	
 _
 !24Z[!6F!13OP**GZ@			X	&	&$u}tttu %a
PPPPPPPPzPPPPPPzPPPPzPPPPPPPPPPPP-. 	
O	
O
 	
 	
 	
.O	
 	
 			
. 	
 	
 			
O	
 	
 	
 	
 	
 	
 	
 +,;;;;;;;,;;;,;;;;;;;;;;;12<f<f<<<<<2<<<2<<<f<<<<<<<<)$456
%666z666666z6666666z6666z6666666X6666X6666666666669 9((959(509E90E999990E999999z9999z999999 999(9995999E999999999$'88**_666HI/r(
 	
w 
 
 	
 	
 		
w 
 	
 	
 
6		
 	
 		
w 	
 	
 
			
w 	
 	
 
			
 
 	
 	
 	
 	
 	
 		
 	

 ##>#%>-->>-5>>5>>>>>5>>>>>>>>>>>>>#>>>%>>>->>>>>>>>>>>>>>>)'))))){'))){))))))'))))')))))))):tzz:z''::'::::::'::::::::::t::::t:::z::::::'::::':::':::::::::;<tzz<z)'<<'<<<<<<'<<<<<<<s<<<<s<<<<<<<;<<<<;<<<<<<<<<t<<<<t<<<z<<<<<<)<<<<)<<<'<<<<<<<<<- 
'. 9Q<(K=(=(((((<(((<(((=((((((((  " """""""""""z""""z""" """"""""""!!#!###########{####{###!###########3 
'	&	&s   AAB2CAB?JABAAB&C+ABEAB,C+ABD9ABCAB1A'ABC-ABAABA'ABA'AB)A'ABBAB	c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   J  s$     += +=+=!3+=	+=r   c                   \         P                  ! R V R,          V R,          V R,          R\         P                  ! \         P                  P                  RRRV R,          P                  4       R	7      4      pVP                  \         R
R 4       VP                  \         RR 4       VP                  \         RR 4       VP                  \         P                  RR 4       \        P                  ! \         P                  RR7      ;_uu_ 4        \         P                  ! V4      ;_uu_ 4        \        P                  ! R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rx  missing/CODEX_HOME/auth.jsonmissing/CLAUDEX_HOMEr  Nr|  r}  r   r  r~  r  c                 8    \        R RR\        RRRR4      R7      # )r  r  r  zmigration-requiredGateway: migration requiredr  r  r	   r  s   *,r   r~   _test_authority_codex_proxy_requires_ready_gateway_and_never_falls_back_native.<locals>.<lambda>^  s&    "4]/ 1*$&CSJ[	#
r   r   c                 .    \         P                  ! R 4      # )z1non-ready gateway fell back to native credentialsrY  r  s   *,r   r~   r  j  s    &++.a"br   r  c                    R # r  r   r  s   &r   r~   r  l  r  r   rn  c                 .    \         P                  ! R 4      # )znon-ready gateway started proxyrY  r  s   *,r   r~   r  p  s    &++.O"Pr   r  r   z!non-ready gateway yielded a proxy)r   r  r  r  r  r9  r   rS  r   r   rL  r  rZ  )r   r   r   s   && r   Mtest_authority_codex_proxy_requires_ready_gateway_and_never_falls_back_nativer  J  s,    &&11))9  &&00(-%/88:	
H &	
 b
 !24Z[P 
w++3P	Q	Q  **KK;< + 
R	Q** 
R	Q	Qs$   E*.E	E*E'"E**E;	c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   x  s     ; ;t ;PT ;r   c                   \         P                  ! R V R,          V R,          V R,          R\         P                  ! \         P                  P                  RRRV R,          P                  4       R	7      4      p\         P                  ! V4      pVR
,          pR qCV8H  qU'       gy   \        P                  ! RV3RW434      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rTRq3V9  qU'       g   \        P                  ! RV3RW234      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p	\        \        P                  ! V	4      4      hR;r5R# )rx  r  r  r  Nr|  r}  r   r  r~  r  r   r   r   r   r  rb   environmentrc   rd   rf   r   r  r  )r   r  r  r  r  r9  _shared_claude_envri   rj   rn   ro   rp   rk   rl   rm   )
r   r   r  r  r   rs   r   r   ru   rv   s
   &         r   8test_migrated_shared_environment_omits_native_codex_homer  x  s/   &&11))9  &&00(-%/88:	
H ,,X6K34B
B
BBBBB4BBB4BBB
BBBBBBBB':{:::::':::'::::::{::::{::::::::r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s.     I@ I@I@!3I@	I@r   c                :  a aaaaa ^ RI Ho S R,          oSP                  RR7       S R,          oSP                  RR7       \        P                  ! \        P
                  P                  RRRS R	,          P                  4       R
7      pS! VR7      o ! VV 3R lR4      o ! VVV 3R lR4      pVP                  \        RV4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        RR 4       VP                  \        RVV3R l4       \        P                  ! R4      pVP                  pRqeV8H  qw'       g   \        P                  ! R9V3R:WV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      R\        P                   ! V4      /,          pRRV/,          p	\#        \        P$                  ! V	4      4      hR ;p;rvVP&                  qUV8H  qw'       g   \        P                  ! R9V3R;WR34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      R!R"\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MR"/,          p
R#R$V
/,          p\#        \        P$                  ! V4      4      hR ;rWVP(                  qUS8H  qw'       Eg    \        P                  ! R9V3R<VS34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      R!R%\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                   ! S4      MR%/,          p
R#R$V
/,          p\#        \        P$                  ! V4      4      hR ;rWVP*                  pSP,                  pR&qV,          qV8H  qw'       Eg+   \        P                  ! R9V3R=W^34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      R!R'\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                   ! S4      MR'R$\        P                   ! V4      R(\        P                   ! V4      /,          pR)R*V/,          p\#        \        P$                  ! V4      4      hR ;p;p;p;rVP.                  R+,          pVP0                  pR,pV! V4      pV'       g   R-R.\        P                   ! V4      R/\        P                   ! V4      R\        P                   ! V4      R\        P                   ! V4      /,          p	\#        \        P$                  ! V	4      4      hR ;p;p;ppVP.                  R0,          pR1pVV8H  pV'       gz   \        P                  ! R9V3R>VV34      R.\        P                   ! V4      R!\        P                   ! V4      /,          p
R#R$V
/,          p\#        \        P$                  ! V4      4      hR ;p;ppVP.                  R2,          pSP,                  pR&qV,          p\3        V4      pVV8H  pV'       EgJ   \        P                  ! R9V3R?VV34      R.\        P                   ! V4      R/R3\        P                  ! 4       9   g!   \        P                  ! \2        4      '       d   \        P                   ! \2        4      MR3R!R'\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                   ! S4      MR'R$\        P                   ! V4      R(\        P                   ! V4      R*\        P                   ! V4      /,          pR4R5V/,          p\#        \        P$                  ! V4      4      hR ;p;p;p;p;ppVP.                  R6,          pRpVV8H  pV'       gz   \        P                  ! R9V3R>VV34      R.\        P                   ! V4      R!\        P                   ! V4      /,          p
R#R$V
/,          p\#        \        P$                  ! V4      4      hR ;p;ppR7pVP.                  pVV9  pV'       g   \        P                  ! R@V3RAVV34      R.\        P                   ! V4      R/R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      /,          pRRV/,          p	\#        \        P$                  ! V	4      4      hR ;p;ppR8pVP.                  pVV9  pV'       g   \        P                  ! R@V3RAVV34      R.\        P                   ! V4      R/R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      /,          pRRV/,          p	\#        \        P$                  ! V	4      4      hR ;p;ppR # )Br   )SimpleNamespacez,runtime/claude-accounts/migrated/CLAUDE_HOMETrt  z$runtime/gateway-homes/claude/fixturezsubrouter-primaryr}  rw  z	grant.keyr~  )r  c                  N   < ] tR tRtR V 3R lltV3R ltR R ltR R ltR	tR
# )htest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapteri  c                    V ^8  d   QhRRRR/# )r   _baser   r   r#   r   )r   s   "r   r   utest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapter.__annotate__  s     	" 	" 	"S 	"r   c                	  < R q2V8H  qD'       g   \         P                  ! RV3RW#34      RR\        P                  ! 4       9   g   \         P                  ! V4      '       d   \         P
                  ! V4      MRR\         P
                  ! V4      /,          pRRV/,          p\        \         P                  ! V4      4      hR;rCS# )	rx  ra   r   rb   rc   rd   Nrf   rh   )ri   rj   rk   rl   rm   rn   ro   rp   )r   r  r   rs   rt   ru   rv   account_records   &&&    r   r  ptest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapter.account  sg    %%:%%%%%4%%%%%%4%%%%4%%%:%%%%%%%%!!r   c                	   < SR ,          # )r  r   )r   r   s   &r   lock_policy_dirxtest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapter.lock_policy_dir  s    i''r   c                   V ^8  d   QhRR/# )r   r  r   r   )r   s   "r   r   r    s     	M 	M$ 	Mr   c                	2    \         P                  ! R 4       R# )z1migrated Claude synchronized native account stateNrY  )r   r  s   &&r   r  ytest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapter.sync_before_exec  s    KKKLr   c                   V ^8  d   QhRR/# )r   _homer   r   )r   s   "r   r   r    s     	D 	D4 	Dr   c                	2    \         P                  ! R 4       R# )z(migrated Claude built native environmentNrY  )r   r  s   &&r   	build_envrtest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeAdapter.build_env  s    KKBCr   r   N)	r   r   r   r   r  r  r  r  r   )r  r   s   r   FakeAdapterr    s$    	" 	"	(	M	D 	Dr   r  c                  >   < ] tR tRtR V 3R lltR VV3R lltRtR# )gtest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeRouteri  c                    V ^8  d   QhRRRR/# )r   _adapterrA  r   r   r   )r   s   "r   r   ttest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeRouter.__annotate__  s     	) 	)V 	) 	)r   c                	    < S! 4       V n         R # r   r  )r   r  r  s   &&r   r  ptest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeRouter.__init__  s    &=DLr   c                    V ^8  d   QhRRRR/# )r   r  rA  r  r   )r   s   "r   r   r    s     	A 	A6 	Af 	Ar   c                	   < SR ,          RS3# )r  rx  r   )r   r  r  native_homer   s   &*,r   r  xtest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.FakeRouter._resolve_account  s    i'[@@r   r  Nr  )r  r  r   s   r   r  r    s    	) 	)	A 	Ar   r  r  authorize_account_usec                     \        4       # r   )rA  r  s   *,r   r~   etest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentials.<locals>.<lambda>  s    TZT\r   revalidate_account_usec                     R # r   r   r  s   *,r   r~   r     s    UYr   r  c                 .    \         P                  ! R 4      # )z)migrated Claude opened native credentialsrY  r  s   *,r   r~   r     s    &++.Y"Zr   build_authority_launchc            
     d   < S! R \        S4      R\        S4      RRRR/S\        RRR4      R	7      # )
r]  r^  r  z/http://127.0.0.1:31415/r/routefixture1234567890r  fixture-gateway-grantr  r  r  )r  gateway_homer  )r#   r   )r  r  r  r  s   *,r   r~   r     sA    /L)#S%6$&W&(?	 &*74DcJ	#
r   rx  ra   r  r   rd   r   r   Nr   r  r   r   r  r   r  r   r'  r  r  z/r/routefixture1234567890zJassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.endswith
}(%(py5)s)
}r   rb   r  r  r^  r#   r  r  SYSTRAY_CLAUDE_ACCOUNT_SLUGSYSTRAY_CLAUDE_ACCOUNT_HOMEr  rf   r   )z9%(py2)s
{%(py2)s = %(py0)s.authority_binding
} == %(py4)sr  )z]%(py2)s
{%(py2)s = %(py0)s.settings_home
} == (%(py6)s
{%(py6)s = %(py4)s.parent
} / %(py8)s)r   )zZ%(py1)s == %(py11)s
{%(py11)s = %(py3)s((%(py6)s
{%(py6)s = %(py4)s.parent
} / %(py8)s))
}r  )z/%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.env
})typesr  rT   r   r  r  r  r9  r   r  r   ri   rj   rk   rl   rm   rn   ro   rp   r  r   settings_homerS   rF  endswithr#   )r   r   r  r  r  rt   r   r   rv   r   r   r   r   r   r	  r  r)  r  rs   r  r   r   r  r  r  r  r  s   f&                    @@@@@r   Stest_resolve_claude_account_uses_systray_gateway_binding_without_native_credentialsr    sZ    &KKKd#DDLt$&&"",,*)!K/88:G %w?ND DA A *=!8:\]!9;YZZ
  		
 ,,Z8G<<%:%:%%%%%<%%%%%%7%%%%7%%%<%%%:%%%%%%%%$$//////$//////7////7///$//////////////////<<'<'''''<<''''''7''''7'''<''''''<''''<''''''''  GK$6$6GG$GG$GGGGGG GGGGGG7GGGG7GGG GGGGGGKGGGGKGGG$6GGGGGGGGGGG;;+,R,55R6QR56QRRRRRR,RRR5RRR6QRRRRRRRRRRR;;-.I2II.2IIIIII.2IIII.III2IIIIIIIII;;*+W;3E3EWW3VWs3V/WW+/WWWWWW+/WWWW+WWWWWWsWWWWsWWWWWWW;WWWW;WWW3EWWWWWW/WWWWWWWWWW;;45CC5CCCCC5CCC5CCCCCCCCCCC(;;(;;;;;(;;;(;;;;;;;;;;;;;;;;;;;;;,?GKK?,K?????,K???,??????G????G???K????????r   )r   )r   )r\   r-  r/  )rz  r   r&  )r6  r7  )r   r  rg  r  r+  r  )zclaude-opus-4-1-20250805zgpt-5.5zcodex-auto-review)r\   r   rw  r/  )r  r  r&  )z--account=zyncr  r  r  )rJ  N)r  r  )r  r  r  )r  r  )gpt-custom.model_1r  )r\   r-  )r   r   r&  )rz  r+  r&  r  )zunknown-modelz-seat-remote: unknown seat model unknown-model)r\   r  )r  rz  rg  rz  r   )r  rz  rg  z--fallback-modelr  )r  rz  rg  rh  rz  r  )r  rz  rg  rh  r   r  )r  rz  rg  rh  z-m=gpt-5.6-sol)r  rz  r	  )}
__future__r   builtinsrk   _pytest.assertion.rewrite	assertionrewriteri   r&   r(   r   r  r   rS  r   pathlibr   collections.abcr   typingr   r   rI   insertr#   __file__r9  rM   r   rN  claude_credentialsr   r   authority_clientr
   r   fixturer   r.   rA   rG   rW   r   r   r   r   r  r  r  r  r  r  r#  r*  markparametrizer4  r;  rB  rE  rQ  ri  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r"  r)  r;  r@  rF  rI  rU  rX  r^  ra  rd  rk  r  r  r  r  SEAT_UNSUPPORTED_BOUNDARYr  r  r  r  r  r  r  r  r  r  r  r%  r,  r4  rB  rI  rL  rQ  rd  rm  rs  r  r  r  r  r  r   r   r   <module>r"     s   "     	 	   
  #   3tH~--/77:; <   G > 8 8)
;
 F*$T 7$6"?c(L=(@V(r#IL +	#]VH=
	OR0
V	nb1
W	/4
V	or2
X	 126
4&"DD DD =/"BCP DP
 I()+@@:2: LB ,	,fdVHE
 	!644
f	%tVR8
!#>	?fVXY
V	dD9f*=>
v	3	<fkSUV"" #4"58K7L!MN. O.
3$b" # &X36$N:]2]*Y:BD)&- -">  	
 ! $;
UBW( 	?	? 	.
f	/	$n5
	 -0	 	7445	'334	G==>J	00
 
78
I	 BC	9;VW	JL\]	GIhi	BDcd	?A`a	("))G4U4U*VW	D*B.4$
;
(0D:"B&((	(. "CG( VD"	1N>X$v+=\;,I@r   