+
    jHàjl4  ã                  óV  € R t ^ RI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
t
^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ]P&                  ! ]4      tRtR8tR9tRR]P2                  P4                   23tR]P2                  P4                   2RR	3t ! R
 R]4      tR R ltR R lt R R lt!R:R R llt"R R lt#R R lt$R R lt%R R lt&R R lt'R R lt(R  R! lt)R" R# lt*R$R%/R& R' llt+R( R) lt,R* R+ lt-R, R- lt.R$R%/R. R/ llt/R0 R1 lt0R2 R3 lt1R:R4 R5 llt2R:R6 R7 llt3R# );u�  Stable macOS TCC anchor for the uv-managed Python interpreter.

macOS TCC grants are keyed to the interpreter binary's path; a venv ``bin/python`` that symlinks
into uv's store changes identity on every interpreter upgrade. The anchor replaces it with a
signed real-file copy, gated on a real boot, with uv's alias names (``python3``,
``python3.N``) materialized as real-file copies too (never symlinks â€” the #95541 crash shape)
and the store's ``libpython*`` hardlinked into ``venv/lib/`` (existing ``LC_RPATH`` already points
at ``@executable_path/../lib``). All functions are no-ops off macOS and for non-uv interpreters,
and never raise to callers.
)ÚannotationsN)ÚPath)Úvenv_python)Úatomic_write_textz.tcc-anchor-sourceÚpython3zpython3.Úpythonc                  ó   € ] tR t^)tRtRtR# )Ú_BootGateFailedz?Staged copy refused to boot; the live venv must stay untouched.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r
   ó    Ú@/home/ubuntu/.hermes/hermes-agent/hermes_cli/macos_tcc_anchor.pyr	   r	   )   s   † ÝIr   r	   c               ó    € V ^8„  d   QhRRRR/# )é   Úsource_filer   ÚreturnÚstrr
   )Úformats   "r   Ú__annotate__r   -   s   € ÷ .ñ .˜tð .¨ñ .r   c                óR   € \         P                  P                  \        V 4      4      # )zMFully resolved so symlinked spellings of the same store binary compare equal.)ÚosÚpathÚrealpathr   ©r   s   &r   Ú_marker_valuer   -   s   € ä�7‰7×ÑœC Ó,Ó-Ð-r   c               ó   € V ^8„  d   QhRR/# )r   r   Úboolr
   )r   s   "r   r   r   2   s   € ÷ )ñ )�$ñ )r   c                 ó2   € \         P                  ! 4       R 8H  # )ÚDarwin)ÚplatformÚsystemr
   r   r   Úis_macosr&   2   s   € Ü�?Š?Ó Ñ(Ð(r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r!   r
   )r   s   "r   r   r   6   s   € ÷ Gñ G˜Sð G Tñ Gr   c                ó@  a€ V P                  R R4      o\        ;QJ d#    V3R l\         4       F  '       d   K   RM	  RM! V3R l\         4       4      '       g   R# \        ;QJ d#    V3R l\         4       F  '       g   K   R# 	  R# ! V3R l\         4       4      # )Ú\Ú/c              3  ó,   <"  € T F	  qS9   x € K  	  R # 5i©Nr
   ©Ú.0ÚmarkerÚ
normalizeds   & €r   Ú	<genexpr>Ú%_is_uv_macos_store.<locals>.<genexpr>8   s   øé € ÐHÑ2G¨˜Ö#Ó2Gùó   ƒFTc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5ir,   r
   r-   s   & €r   r1   r2   :   s   øé € ÐFÑ2E¨˜Ö#Ó2Eùr3   )ÚreplaceÚallÚ_STORE_COMMON_MARKERSÚanyÚ_STORE_ROOT_MARKERS)r   r0   s   &@r   Ú_is_uv_macos_storer:   6   sd   ø€ Ø—‘˜d CÓ(€Jß‹3ÔHÕ2GÓH�3�3Š3ÔHÕ2GÓH×HÒHÙß‹3ÔFÕ2EÓF�3Œ3ÐFŠ3ÐFˆ3ÔFÕ2EÓFÓFÐFr   c               ó    € V ^8„  d   QhRRRR/# ©r   Úproject_rootúPath | Noner   r
   )r   s   "r   r   r   =   s   € ÷ `ñ `˜Kð `°;ñ `r   c                óª   a€ V e   \        V 4      M-\        \        4      P                  4       P                  ^,          o\	        V3R lR 4       R 4      # )Nc              3  ó|   <"  € T F1  p\        \        SV,          4      4      '       g   K&  SV,          x € K3  	  R # 5ir,   )Ú_presentr   )r.   ÚnÚroots   & €r   r1   Ú_venv_dir.<locals>.<genexpr>?   s,   øé € ÐXÑ#4˜a¼ÄÈTÐTUÍXÓAV×8W”�˜—’Ó#4ùs   ƒ#<«<)Úvenvz.venv)r   Ú__file__ÚresolveÚparentsÚnext)r=   rC   s   &@r   Ú	_venv_dirrJ   =   sB   ø€ Ø!-Ò!9Œ4�Ô¼tÄH»~×?UÑ?UÓ?W×?_Ñ?_Ð`aÕ?b€DÜÔXÑ#4ÓXÐZ^Ó_Ð_r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r!   r
   )r   s   "r   r   r   B   s   € ÷ /ñ /�4ð /˜Dñ /r   c                óR   € V P                  4       ;'       g    V P                  4       # r,   )Úis_fileÚ
is_symlink)r   s   &r   rA   rA   B   s   € Ø�<‰<‹>×.Ð.˜TŸ_™_Ó.Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r   Úsrcz
str | Pathr   r>   r
   )r   s   "r   r   r   F   s   € ÷ ñ ˜:ð ¨+ñ r   c                óR  € \        V 4      pVP                  4       '       d   V# VP                  4       '       g   R#  \         Uu. uF  q!V,          NK  	  up\	        R VP                  R4       4       4      ,           p\        R V 4       R4      # u upi   \         d     R# i ; i)z3Return the interpreter binary file at/inside *src*.Nc              3  ój   "  € T F)  qP                   P                  R4      '       d   K%  Vx € K+  	  R# 5i)ú.dSYMN)rS   z.txt)ÚnameÚendswith©r.   Úcs   & r   r1   Ú$_interpreter_file.<locals>.<genexpr>N   s%   é € ð @
Ù*�!·&±&·/±/ÐBS×2T�AŠAÓ*ùs   ‚"3©
3z	python3.*c              3  óT   "  € T F  qP                  4       '       g   K  Vx € K   	  R # 5ir,   )rM   rV   s   & r   r1   rX   Q   s   é € Ð:¡
˜1¯i©i¯k—Q’Q£
ùs   ‚(ž
()r   rM   Úis_dirÚ_STORE_BIN_NAMESÚsortedÚglobrI   ÚOSError)rP   ÚprB   Ú
candidatess   &   r   Ú_interpreter_filera   F   sš   € äˆS‹	€AØ‡y�y‡{‚{ØˆØ�8‰8�:Š:ÙðÝ%5Ó6Ñ%5 ˜!—e�eÑ%5Ñ6¼ñ @
Ø—v‘v˜kÔ*ó@
ó :
õ 
ˆ
ô Ñ:¡
Ó:¸DÓAÐAùò 7øô ô Úðús#   ½B ÁBÁ;B ÂB ÂB&Â%B&c               ó    € V ^8„  d   QhRRRR/# )r   Úvenv_dirr   r   z
str | Noner
   )r   s   "r   r   r   V   s   € ÷ 7ñ 7 $ð 7¨:ñ 7r   c                óº  € \        V 4      pVP                  4       '       d    \        VP                  RR7      4      # V R,          pVP                  4       '       g   R#  VP                  RR7      P                  4       p\        R T 4       R4      pT'       d   \        T4      MRpTe   \        T4      # R#   \         d     R# i ; i  \         d     R# i ; i)	z_Return the interpreter file the venv currently resolves to (symlink target or pyvenv.cfg home).F©ÚstrictNz
pyvenv.cfgú	utf-8-sig©Úencodingc              3  óº   "  € T FQ  qP                  4       P                  R 4      '       g   K)  VP                  R4      ^,          P                  4       x € KS  	  R# 5i)ÚhomeÚ=N)ÚlowerÚ
startswithÚ	partitionÚstrip)r.   Úls   & r   r1   Ú&_interpreter_source.<locals>.<genexpr>e   s?   é € Ð\±e°¿w¹w»y×?SÑ?SÐTZ×?[Ô,�—‘˜SÓ! !Õ$×*Ñ*×,Ð,³eùs
   ‚&A­.AÚ )
r   rN   r   rG   r^   rM   Ú	read_textÚ
splitlinesrI   ra   )rc   Úvenv_pyÚcfgÚlinesrk   Úinterps   &     r   Ú_interpreter_sourcerz   V   sÍ   € ä˜(Ó#€GØ×Ñ×Òð	Ü�w—‘¨e�Ó4Ó5Ð5ð �\Õ
!€CØ�;‰;�=Š=ÙðØ—‘ {�Ó3×>Ñ>Ó@ˆô Ñ\±eÓ\Ð^`Óa€Dß(,Ô˜tÔ$°$€FØ Ò,Œ3ˆv‹;Ð6°$Ð6øô ô 	Úð	ûô ô Úðús#   £B9 Á  C Â9CÃCÃCÃCc               ó    € V ^8„  d   QhRRRR/# )r   r=   r>   r   ztuple[Path, Path, str] | strr
   )r   s   "r   r   r   j   s   € ÷ 
3ñ 
3 ð 
3Ð0Lñ 
3r   c                ó¨   € \        4       '       g   R# \        V 4      pVf   R# \        V4      pVe   \        V4      '       g   R# V\	        V4      V3# )zR``(venv_dir, venv_py, source)`` for a uv-managed macOS venv, else the skip reason.z	not macOSzno venv interpreterz(interpreter not uv-managed (stable path))r&   rJ   rz   r:   r   )r=   rc   Úsources   &  r   Ú_managed_venvr~   j   sN   € ä�:Š:ÙÜ˜Ó&€HØÒÙ$Ü  Ó*€FØ‚~Ô/°×7Ò7Ù9Ø”[ Ó*¨FÐ2Ð2r   c               ó    € V ^8„  d   QhRRRR/# )r   Úvenv_binr   r   r
   )r   s   "r   r   r   w   s   € ÷ #ñ #˜Tð # dñ #r   c                ó   € V \         ,          # r,   )Ú_MARKER_NAME)r€   s   &r   Ú_anchor_markerrƒ   w   s   € Ø”lÕ"Ð"r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r€   r   Úexpectedr   r   r!   r
   )r   s   "r   r   r   {   s!   € ÷ ñ ˜dð ¨cð °dñ r   c                ó´   € \        V 4      p VP                  4       ;'       d$    VP                  R R7      P                  4       V8H  #   \         d     R# i ; i)rg   rh   F)rƒ   rM   rt   rp   r^   )r€   r…   r/   s   && r   Ú_marker_matchesr‡   {   sU   € Ü˜HÓ%€FðØ�~‰~Ó×^Ð^ F×$4Ñ$4¸kÐ$4Ó$J×$PÑ$PÓ$RÐV^Ñ$^Ð^øÜô Úðús   �A ¤#A ÁAÁAc               ó$   € V ^8„  d   QhRRRRRR/# )r   r€   r   r   r   ÚNoner
   )r   s   "r   r   r   ƒ   s!   € ÷ ñ ˜Dð ¨tð ¸ñ r   c                óT   € \        \        V 4      \        V4      \         R2R7       R# )z�Atomic: a concurrent ensure (update + doctor --fix) must never read a torn marker, which
would compare unequal and trigger a spurious reinstall.Ú.)Ú
tmp_prefixN)r   rƒ   r   r‚   )r€   r   s   &&r   Ú_write_markerr�   ƒ   s&   € ô Ü�xÓ Ü�kÓ"Ü"�^ 1Ð%÷r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r
   )r   s   "r   r   r   �   s   € ÷ ;ñ ;˜Tð ; dñ ;r   c                óN   € V P                  R R7      P                  P                  # )Fre   )rG   Úparentr   s   &r   Ú_store_rootr‘   �   s"   € à×Ñ eÐÓ,×3Ñ3×:Ñ:Ð:r   ÚrefreshFc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rc   r   r   r’   r!   r   r‰   r
   )r   s   "r   r   r   ’   s/   € ÷ !Cñ !C 4ð !C°dð !CÈð !CÐY]ñ !Cr   c          	     óò  € \        V4      R,          pVP                  4       '       g   R# V R,          p VP                  RRR7       VP                  R4       F‹  pVP	                  4       '       g   K  WEP
                  ,          pVP                  4       '       g   VP                  4       '       d   V'       g   Kc   VP                  4         \        P                  ! WV4       K�  	  R#   \         d     KŸ  i ; i  \         dG     \        P                  ! YV4        KÈ    \         d    \        P                  RTRR7         Kï  i ; ii ; i  \         d    \        P                  RRR7        R# i ; i)	záHardlink (else copy) store ``libpython*`` into ``venv/lib/``.

Provision-if-present: a surplus hardlink on a statically-linked build is free; a missed
detection is the only way the dylib-not-found crash returns.

See #95425.
ÚlibNT©rH   Úexist_okz
libpython*z!libpython provision failed for %s©Úexc_infozlibpython provision skipped)r‘   rZ   Úmkdirr]   rM   rT   ÚexistsrN   Úunlinkr^   r   ÚlinkÚshutilÚcopy2ÚloggerÚdebug)rc   r   r’   Úsrc_libÚdst_librP   Údsts   &&$    r   Ú_provision_libpythonr¥   ’   s0  € ô ˜+Ó&¨Õ.€GØ�>‰>×ÒÙØ˜Õ€GðCØ�‰˜d¨TˆÔ2Ø—<‘< Ö-ˆCØ—;‘;—=’=ÙØŸH™HÕ$ˆCØ�z‰z�|Š|˜sŸ~™~×/Ò/ßÙðØ—J‘J”LðZÜ—’˜Ö!ó .øô ô Úðûô ô ZðZÜ—L’L ×*øÜô ZÜ—L‘LÐ!DÀcÐTX�L×YÐYðZúðZûô
 ô CÜ�‰Ð2¸Tˆ×BðCús~   µA<E Â2E Â:E Â=C*ÃC<Ã$E Ã*C9Ã5E Ã8C9Ã9E Ã<EÄD!ÄE Ä!#E	ÅEÅE ÅE	Å	EÅE Å"E6Å5E6c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r€   r   Úprefixr   r}   r   r
   )r   s   "r   r   r   ¶   s(   € ÷ ñ ˜$ð ¨ð °Tð ¸dñ r   c                ó\  € \         P                  ! V\        V 4      R7      w  r4\        P                  ! V4       \        V4      p \        P                  ! W%4       \        P                  ! WRP                  4       P                  ^I,          4       V#   \         d    \        T4       h i ; i)z§Copy *source* to a unique (mkstemp) executable staging file in *venv_bin*.

Unique names mean a concurrent ensure cannot promote another run's truncated interim copy.
)r§   Údir)ÚtempfileÚmkstempr   r   Úcloser   rž   rŸ   ÚchmodÚstatÚst_modeÚBaseExceptionÚ_discard)r€   r§   r}   ÚfdÚtmp_nameÚtmp_paths   &&&   r   Ú_stage_copyrµ   ¶   s�   € ô
 ×#Ò#¨6´s¸8³}ÔE�L€BÜ‡H‚HˆR„LÜ�H‹~€HðÜ�Š�VÔ&Ü
�Š�Ÿ;™;›=×0Ñ0°5Õ8Ô9ð €Oøô ô Ü�ÔØðús   ÁAB ÂB+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                ó´   € V e@   \         P                  ! \        4      ;_uu_ 4        V P                  RR7       R R R 4       R # R #   + '       g   i     R # ; i)NT)Ú
missing_ok)Ú
contextlibÚsuppressr^   rœ   )r´   s   &r   r±   r±   Ç   s>   € ØÒÜ× Ò ¤×)Õ)Ø�O‰O tˆOÔ,÷ *Ñ)ñ ß)×)Ð)ús   §AÁA	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r€   r   rT   r   Úanchorr   r!   r
   )r   s   "r   r   r   Í   s(   € ÷ ñ ˜$ð  cð °4ð ¸Dñ r   c                óÜ   € Rp \        V RV R2V4      p\        P                  ! W0V,          4       R#   \         d-   p\        P                  RY4       \        T4        Rp?R# Rp?ii ; i)zåMaterialize *name* as a real-file copy of *anchor* (atomic rename).

Returns False (and warns) on failure: a leftover alias *symlink* to the anchor is the exact
crash shape, so callers must know when the alias set is incomplete.
Nr‹   z.tcc-Tz(TCC anchor alias %s not materialized: %sF)rµ   r   r5   r^   r    Úwarningr±   )r€   rT   r¼   r´   Úexcs   &&&  r   Ú_copy_aliasrÀ   Í   sa   € ð !€HðÜ˜x¨1¨T¨F°%¨¸&ÓAˆÜ
�
Š
�8¨�_Ô-ÙøÜô Ü�‰ÐAÀ4ÔMÜ�ÔÝûðús   „.4 ´A+¿!A&Á&A+c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r€   r   r¼   r’   r!   r   r
   )r   s   "r   r   r   Þ   s)   € ÷ ñ  4ð °ð À4ð ÐTXñ r   c               ó�  € \        \        4      p VP                  R V P                  R4       4       4       Rp\        V4       FX  pW,          p V'       g-   VP                  4       '       g   VP                  4       '       g   \        WV4      ;'       d    TpKX  KZ  	  V#   \         d     Lxi ; i  \         d    Rp K  i ; i)zXMaterialize uv alias names as real-file copies; True only if every needed one succeeded.c              3  óŒ   "  € T F:  p\         P                  ! R VP                  4      '       g   K,  VP                  x € K<  	  R# 5i)zpython3(\.\d+)?N)ÚreÚ	fullmatchrT   )r.   r_   s   & r   r1   Ú'_materialize_aliases.<locals>.<genexpr>â   s/   é € ð 
Ù5�q¼¿ºÐFXÐZ[×Z`ÑZ`×9aŒFˆA�FŽFÓ5ùs
   ‚)A°Azpython3*TF)	ÚsetÚ_ALIAS_NAMESÚupdater]   r^   r\   rN   r›   rÀ   )r€   r¼   r’   ÚnamesÚokrT   Úaliass   &&$    r   Ú_materialize_aliasesrÍ   Þ   s¹   € ä”Ó€EðØ�‰ñ 
Ø$ŸM™M¨*Ô5ó
ô 	
ð
 
€BÜ�u–ˆØ•ˆð	ß˜%×*Ñ*×,Ò,°E·L±L·N²NÜ  °Ó8×?Ð?¸R’ñ 5Cñ ð €Iøô ô Ùðûô ô 	Ø‹Bð	ús5   ‘'B# ÁB4Á/B4ÂB4ÂB4Â#B1Â0B1Â4CÃCc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ústagedr   rc   r   r!   r
   )r   s   "r   r   r   ò   s!   € ÷ &,ñ &,˜dð &,¨dð &,°tñ &,r   c                óH  € \         P                  P                  4        UUu/ uF  w  r#VR9  g   K  W#bK  	  ppp \        P                  ! \        V 4      RR.RRRR^VRR7      pTP                  ^ 8w  d   R# TP                  ;'       g    RP!                  4       P#                  4       pT'       g   R#  \%        TR,          4      P'                  4       TP'                  4       8H  # u uppi   \         dm   pTP                  \        P                  \        P                  39   d   \        P                  RY4        R	p?R# \        P                  R
T4        R	p?R# R	p?i\        P                   d     R# i ; i  \         d    \        T4      TR,          9   u # i ; i)a®  Launch *staged* and demand encodings + the venv prefix.

Runs with ``PYTHONHOME``/``PYTHONPATH`` scrubbed: an inherited PYTHONHOME papers over the very
prefix failure this gate exists to catch. ``ENOENT``/``ENOEXEC`` (fixture binaries, foreign
arch) mean the binary can't run here at all, so the symlinked venv was equally dead: skip.
Anything else (notably ``EACCES`` after our own chmod) is a broken install going live: refuse.
z-cz(import encodings, sys; print(sys.prefix)Tzutf-8r5   F)Úcapture_outputÚtextri   ÚerrorsÚtimeoutÚenvÚcheckz)boot gate skipped: cannot execute %s (%s)Nz)boot gate: staged copy not executable: %srs   )Ú
PYTHONHOMEÚ
PYTHONPATHÚPYTHONSTARTUPÚ__PYVENV_LAUNCHER__éÿÿÿÿ)r   ÚenvironÚitemsÚ
subprocessÚrunr   r^   ÚerrnoÚENOENTÚENOEXECr    r¡   r¾   ÚTimeoutExpiredÚ
returncodeÚstdoutrp   ru   r   rG   )rÏ   rc   ÚkÚvrÕ   Úprocr¿   Úprinteds   &&      r   Ú_passes_boot_gaterê   ò   sb  € ô —J‘J×$Ñ$Ô&ôá&‰DˆAØÐXÑXô 	ˆŠÙ&ð ñ ð
Ü�~Š~Ü�‹[˜$Ð JÐKØØ °	ØØØô
ˆð  ‡�˜!ÔÙØ�{‰{× Ð ˜b×'Ñ'Ó)×4Ñ4Ó6€GßÙð,Ü�G˜B•KÓ ×(Ñ(Ó*¨h×.>Ñ.>Ó.@Ñ@Ð@ùó9øô ô Ø�9‰9œŸ™¤u§}¡}Ð5Ô5Ü�L‰LÐDÀfÔRÝÜ�‰ÐBÀCÔHÝûÜ×$Ñ$ô Úðûô ô ,Ü�8‹} ¨¥Ñ+Ò+ð,úsF   ¢C'²C'¼*C- Â60E> Ã-E;Ã8AEÅEÅE;Å6E;Å:E;Å> F!Æ F!c               ó$   € V ^8„  d   QhRRRRRR/# )r   rc   r   r   r   r‰   r
   )r   s   "r   r   r     s!   € ÷ ñ ˜dð °ð ¸$ñ r   c                ó
  € ^ RI Hp \        V 4      pVP                  pVP	                  RRR7       \        WRR7       \        VRV4      p  V! V4       \        WP4      '       g   \        RV R	24      h\        P                  ! WS4       \        WCRR7      '       d   \        WA4       R# \        P!                  R
4       R#   \         d    \        P                  RRR7        L‘i ; i  \         d    \#        T4       h i ; i)z@Replace ``bin/python`` with a signed copy, gated on a real boot.)Úsign_managed_pythonTr–   ©r’   z.python-tcc-zanchor copy signing skippedr˜   zstaged copy at z failed encodings/prefix probeznTCC anchor installed but alias materialization was incomplete; leaving anchor unmarked so the next run retriesN)Úhermes_cli.macos_signingrí   r   r�   rš   r¥   rµ   Ú	Exceptionr    r¡   rê   r	   r   r5   rÍ   r�   r¾   r±   )rc   r   rí   rv   r€   r´   s   &&    r   Ú_install_anchorrñ     sé   € å<ä˜(Ó#€GØ�~‰~€HØ‡N�N˜4¨$€NÔ/ä˜¸Õ=ä˜8 ^°[ÓA€Hðð	GÙ Ô)ô ! ×4Ò4Ü! O°H°:Ð=[Ð"\Ó]Ð]Ü
�
Š
�8Ô%Ü ¸4×@Ó@ô ˜(Ö0ä�N‰NðNöøô ô 	GÜ�L‰LÐ6ÀˆLÖFð	Gûô ô Ü�ÔØðús1   ÁC ÁAC* Â+C* Ã"C'Ã$C* Ã&C'Ã'C* Ã*Dc               ó    € V ^8„  d   QhRRRR/# r<   r
   )r   s   "r   r   r   =  s   € ÷  ñ   Kð  ¸;ñ  r   c                óJ  € \        V 4      p\        V\        4      '       d   R# Vw  r#p\        V4      pVf   R# VP	                  4       '       g^   \        VP                  \        V4      4      '       d9    \        W%RR7       \        W24      '       d   \        VP                  V4       V#   \        W%4       V#   \         d     Li ; i  \         d"   p\        P                  RT4        Rp?R# Rp?i\          d"   p\        P                  RT4        Rp?R# Rp?ii ; i)u  Pin a dylib-complete interpreter anchor for macOS TCC.

No-op (None) on non-macOS, without a venv interpreter, or when the interpreter is not
uv-managed. Idempotent. Best-effort â€” None (and logs) if the copy or boot-gate fails; callers
must never depend on success.

See #95596.
NFrî   z.macOS TCC anchor boot-gate refused install: %sz#macOS TCC anchor install failed: %s)r~   Ú
isinstancer   ra   rN   r‡   r�   r   r¥   rê   rÍ   r^   rñ   r	   r    r¾   rð   )r=   Úfoundrc   rv   r}   r   r¿   s   &      r   Úensure_tcc_anchorrö   =  sø   € ô ˜,Ó'€EÜ�%œ×ÒÙØ %Ñ€H�vÜ# FÓ+€KØÒÙØ×Ñ×Ò¤O°G·N±NÄMÐR]ÓD^×$_Ò$_ð	Ü  ÀÕFÜ  ×3Ò3Ü$ W§^¡^°WÔ=Ø�ð 4ð
Ü˜Ô.ð €Nøô ô 	Ùð	ûô ô Ü�‰ÐGÈÔMÝûÜô Ü�‰Ð<¸cÔBÝûðús<   Á65B; Â.C Â;C	ÃC	ÃD"ÃC3Ã3D"Ä D"ÄDÄD"c               ó    € V ^8„  d   QhRRRR/# )r   r=   r>   r   ztuple[str, str]r
   )r   s   "r   r   r   `  s   € ÷  ñ   ;ð  ¸/ñ  r   c                ó.  € \        V 4      p\        V\        4      '       d   RV3# Vw  r#pVP                  4       '       d   R\        V4      3# \	        V4      pVe   \        V4      MTp\        VP                  V4      '       d   RMRpV\        V4      3# )a  Report the anchor state for ``hermes doctor`` as ``(status, detail)``.

``skip`` = not applicable; ``active`` = pinned at a stable real-file anchor; ``stale`` = pinned
but the interpreter changed since the last copy; ``missing`` = uv-managed with no anchor.
ÚskipÚmissingÚactiveÚstale)r~   rô   r   rN   ra   r   r‡   r�   )r=   rõ   Ú_venvrv   r}   r   r…   Ústatuss   &       r   Útcc_anchor_staterÿ   `  sŽ   € ô ˜,Ó'€EÜ�%œ×ÒØ�uˆ}ÐØ"Ñ€E�FØ×Ñ×ÒØœ#˜g›,Ð&Ð&Ü# FÓ+€KØ-8Ò-DŒ}˜[Ô)È&€HÜ(¨¯©¸×BÒB‰XÈ€FØ”3�w“<ÐÐr   )zcpython-z-macos-)z/uv/python/z/.hermes-runtime/python/r,   )4r   Ú
__future__r   r¹   rà   Úloggingr   r$   rÄ   rž   rÞ   Úsysrª   Úpathlibr   Úpm.environmentsr   Úutilsr   Ú	getLoggerr   r    r‚   r7   r9   Úversion_infoÚminorrÈ   r[   rð   r	   r   r&   r:   rJ   rA   ra   rz   r~   rƒ   r‡   r�   r‘   r¥   rµ   r±   rÀ   rÍ   rê   rñ   rö   rÿ   r
   r   r   Ú<module>r	     s(  ðñ	õ #ã Û Û Û 	Û Û 	Û Û Û 
Û Ý å 'Ý #à	×	Ò	˜8Ó	$€à#€à/Ð àAÐ à˜X c×&6Ñ&6×&<Ñ&<Ð%=Ð>Ð?€Ø˜s×/Ñ/×5Ñ5Ð6Ð7¸ÀHÐMÐ ôJ�iô Jõ.õ
)õG÷`õ
/õõ 7õ(
3õ#õõõ;ð
!CÈu÷ !CõHõ"-õð"È%÷ õ(&,õR÷D ÷F ñ  r   