+
    „WÝj©K  ã                  ó¤  a € 0 t $ R t^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
t
^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHtHtHt RHtRItRJt0 RKmR
 ]! ^^
4       4       mR ]! ^^
4       4       mt ! R R]4      t ! R R]4      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! lt&R" R# lt'R$ R% lt(R& R' lt)^]^,           3R( R) llt*R* R+ lt+R, R- lt,R.RR/RR0R	/R1 R2 llt-R3 R4 lt.R5RR.R/R6 R7 llt/]	! R8R97       ! R: R;4      4       t0 ! R< R=]4      t1]! R>R?R@7      t2RA]3RB&   ]RC 4       t4 ! RD RE4      t5RF RG lt6R# )LzKR2 channel wire protocol. Names are data; no local channel registry exists.)Úannotations)Úcontextmanager)Ú
ContextVar)Ú	dataclassN)Ú	HTTPErrorÚURLError)Úurlsplit)ÚHTTPRedirectHandlerÚRequestÚbuild_openerÚpreviewc              #  ó,   "  € T F
  pR V 2x € K  	  R# 5i)ÚcomN© ©Ú.0Úis   & ÚOC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\release_channels.pyÚ	<genexpr>r      s   é € Ð*K¹l¸¨S°°­9»lùó   ‚c              #  ó,   "  € T F
  pR V 2x € K  	  R# 5i)ÚlptNr   r   s   & r   r   r      s   é € Ð/¡,˜Q��Q�C�y£,ùr   c                  ó   € ] tR t^tRtRtR# )ÚChannelErrorzGInvalid, unavailable, or untrusted channel metadata (never a fallback).r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    r   r   r      s   † ÝQr    r   c                  ó   € ] tR t^tRtR# )ÚChannelNotFoundr   N)r   r   r   r   r   r   r    r   r"   r"      s   † Ûr    r"   c               ó(   € V ^8„  d   QhRRRRRRRR/# )é   ÚpatternÚstrÚvalueÚobjectÚlabelÚreturnr   )Úformats   "r   Ú__annotate__r,      s(   € ÷ ñ �Cð  ð ¨sð °sñ r    c                óœ   € \        V\        4      '       d(   \        P                  ! W\        P                  4      f   \        RV 24      hV# )NúInvalid )Ú
isinstancer&   ÚreÚ	fullmatchÚASCIIr   )r%   r'   r)   s   &&&r   Ú_matchr3      s:   € Ü�eœS×!Ò!¤R§\¢\°'Ä"Ç(Á(Ó%KÒ%SÜ˜X e WÐ-Ó.Ð.Ø€Lr    c               ó    € V ^8„  d   QhRRRR/# ©r$   r'   r(   r*   r&   r   )r+   s   "r   r,   r,   $   s   € ÷ ñ ˜ð  Cñ r    c                ól   € \        R V R4      p\        V4      ^ 8”  g   V\        9   d   \        R4      hV# )z[a-z0-9]+(?:-[a-z0-9]+)*zchannel namezInvalid channel name)r3   ÚlenÚ	_RESERVEDr   )r'   Únames   & r   Úvalidate_namer:   $   s4   € ÜÐ-¨u°nÓE€DÜ
ˆ4ƒy�2„~˜¤Ô*ÜÐ1Ó2Ð2Ø€Kr    c               ó    € V ^8„  d   QhRRRR/# r5   r   )r+   s   "r   r,   r,   +   s   € ÷ `ñ `˜vð `¨#ñ `r    c                ó   € \        R V R4      # )z4[A-Za-z0-9][A-Za-z0-9_-]*/[A-Za-z0-9][A-Za-z0-9_.-]*Ú
repository©r3   ©r'   s   &r   Úvalidate_repositoryr@   +   s   € ÜÐIÈ5ÐR^Ó_Ð_r    c               ó    € V ^8„  d   QhRRRR/# r5   r   )r+   s   "r   r,   r,   /   ó   € ÷ 4ñ 4˜&ð 4 Sñ 4r    c                ó   € \        R V R4      # )z[a-f0-9]{64}ÚSHA256r>   r?   s   &r   Úrequire_sha256rE   /   ó   € Ü�/ 5¨(Ó3Ð3r    c               ó    € V ^8„  d   QhRRRR/# r5   r   )r+   s   "r   r,   r,   3   rB   r    c                ó   € \        R V R4      # )z[a-f0-9]{40}Úcommitr>   r?   s   &r   Úrequire_commitrJ   3   rF   r    c               ó    € V ^8„  d   QhRRRR/# )r$   Úbuild_idr(   r*   r&   r   )r+   s   "r   r,   r,   7   s   € ÷ \ñ \˜6ð \ cñ \r    c                ó8   € R \        RV R4      ,           R,           # )zreleases/channel-builds/z[a-f0-9]{32}zbuild IDÚ/r>   )rL   s   &r   Úbuild_prefixrO   7   s   € Ø%¬¨ÀÈ*Ó(UÕUÐX[Õ[Ð[r    c               ó    € V ^8„  d   QhRRRR/# )r$   r9   r(   r*   r&   r   )r+   s   "r   r,   r,   ;   s   € ÷ ;ñ ;�fð ; ñ ;r    c                ó    € R \        V 4       R2# )zreleases/channels/z.json)r:   )r9   s   &r   Úchannel_keyrR   ;   s   € Ø¤¨dÓ 3Ð4°EÐ:Ð:r    c               ó    € V ^8„  d   QhRRRR/# )r$   r'   r(   r*   Úbytesr   )r+   s   "r   r,   r,   ?   s   € ÷ zñ z˜&ð z Uñ zr    c                ób   € \         P                  ! V R RR RR7      R,           P                  4       # )TF)Ú	sort_keysÚ
separatorsÚensure_asciiÚ	allow_nanÚ
)Ú,Ú:)ÚjsonÚdumpsÚencoder?   s   &r   Úcanonical_jsonr`   ?   s*   € Ü�JŠJ�u¨¸ÐRVÐbgÔhÐkoÕo×wÑwÓyÐyr    c               ó    € V ^8„  d   QhRRRR/# )r$   ÚbodyrT   r*   Údictr   )r+   s   "r   r,   r,   C   s   € ÷ ñ �eð  ñ r    c                óÈ   € R  p \         P                  ! WR7      p\        T\        4      '       g   \	        R4      hT#   \        \        3 d   p\	        R4      ThRp?ii ; i)c                óJ   € / pV  F  w  r#W!9   d   \        R 4      hW1V&   K  	  V# )zDuplicate JSON key©r   )ÚitemsÚresultÚkeyr'   s   &   r   ÚpairsÚdecode_json.<locals>.pairsD   s2   € ØˆÛ‰JˆCØŒ}Ü"Ð#7Ó8Ð8Ø�3‹Kñ  ð ˆr    )Úobject_pairs_hookzInvalid channel JSONNz"Channel metadata must be an object)r]   ÚloadsÚ
ValueErrorÚUnicodeErrorr   r/   rc   )rb   rj   r'   Úexcs   &   r   Údecode_jsonrq   C   s_   € òð<Ü—
’
˜4Ô9ˆô �eœT×"Ò"ÜÐ?Ó@Ð@Ø€Løô	 œÐ%ô <ÜÐ1Ó2¸Ð;ûð<ús   …? ¿A!ÁAÁA!c               ó    € V ^8„  d   QhRRRR/# )r$   r'   r&   r*   r   )r+   s   "r   r,   r,   T   s   € ÷ 	ñ 	�sð 	˜sñ 	r    c                ó2  a € \        S 4      pVP                  '       Ed^   VP                  EfO   VP                  Ef@   VP                  '       Eg-   VP
                  '       Eg   \        ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       gÚ   \        ;QJ d    R S  4       F  '       g   K   RM	  RM! R S  4       4      '       g    \        ;QJ d5    R VP                  P                  R4       4       F  '       g   K   RM*	  RM&! R VP                  P                  R4       4       4      '       g4   VP                  R8X  g.   VP                  R	8X  d   VP                  R9   g   \        R
4      hS P                  R4      # )Nc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5i©Nr   )r   Úcr'   s   & €r   r   Úpublic_base.<locals>.<genexpr>W   s   øé € Ð5QÉ&ÀQ¸5¶jË&ùs   ƒz%\;TFc              3  ó>   "  € T F  p\        V4      ^ 8*  x € K  	  R# 5i©é    N©Úord©r   rv   s   & r   r   rw   X   s   é € Ð/© A”3�q“6˜R–<«ùó   ‚c              3  ó*   "  € T F	  qR9   x € K  	  R# 5i)Ú.N)r€   ú..r   ©r   Úps   & r   r   rw   Y   s   é € ÐDÑ-C¨˜Ö#Ó-Cùó   ‚rN   ÚhttpsÚhttpz!Invalid channel archive authority)z	127.0.0.1Ú	localhostz::1)r   ÚhostnameÚusernameÚpasswordÚqueryÚfragmentÚanyÚpathÚsplitÚschemer   Úrstrip)r'   Úparseds   f r   Úpublic_baser“   T   s÷   ø€ Ü�e‹_€FØ�O�O‰O˜vŸ™Ó:¸f¿o¹oÓ>YØ�|�|‰|˜vŸŸ™·#³#Ô5QÉ&Ó5Q·#·#²#Ô5QÉ&Ó5Q×2QÒ2Qß‹sÑ/©Ó/�s�sŠsÑ/©Ó/×/Ò/ß‹sÑD¨V¯[©[×->Ñ->¸sÔ-CÓD�s�sŠsÑD¨V¯[©[×->Ñ->¸sÔ-CÓD×DÒDØ—M‘M WÔ,°·±À&Ô1HØŸ™Ð+LÔLÜÐ>Ó?Ð?Ø�<‰<˜ÓÐr    c               ó    € V ^8„  d   QhRRRR/# r5   r   )r+   s   "r   r,   r,   `   s   € ÷ ñ ˜ð  3ñ r    c                óÚ  € \        R V R4      pVP                  R4      '       dY   \        ;QJ d+    R VP                  R4       4       F  '       g   K   RM 	  RM! R VP                  R4       4       4      '       d   \	        R4      h\        ;QJ d+    R VP                  R4       4       F  '       g   K   RM 	  RM! R VP                  R4       4       4      '       d   \	        R4      hV# )	z[A-Za-z0-9_./+-]+zartifact keyz	releases/c              3  ó*   "  € T F	  qR9   x € K  	  R# 5i)Ú N)r—   r€   r�   r   r‚   s   & r   r   Úartifact_key.<locals>.<genexpr>b   s   é € Ð-[ÉNÀq°?Ö.BËNùr„   rN   TFzInvalid artifact keyc              3  ó¬   "  € T FJ  qP                  R 4      ^ ,          P                  4       \        9   ;'       g    VP                  R 4      x € KL  	  R# 5i)r€   N)r�   Úlowerr8   Úendswithr‚   s   & r   r   r˜   d   s;   é € Ð
[ÉNÀq�7‰7�3‹<˜�?× Ñ Ó"¤iÑ/×BÐB°1·:±:¸c³?ÔBËNùs
   ‚7AºA)r3   Ú
startswithr�   r�   r   )r'   ri   s   & r   Úartifact_keyr�   `   s¢   € Ü
Ð% u¨nÓ
=€CØ�>‰>˜+×&Ò&¯#«#Ñ-[ÈCÏIÉIÐVYÌNÓ-[¯#¯#ª#Ñ-[ÈCÏIÉIÐVYÌNÓ-[×*[Ò*[ÜÐ1Ó2Ð2ß
ƒsÑ
[ÈCÏIÉIÐVYÌNÓ
[‡s‡s‚sÑ
[ÈCÏIÉIÐVYÌNÓ
[×[Ò[ÜÐ1Ó2Ð2Ø€Jr    c               ó    € V ^8„  d   QhRRRR/# )r$   ÚsequenceÚintr*   ztuple[str, str]r   )r+   s   "r   r,   r,   i   s   € ÷ Lñ L˜sð L ñ Lr    c                ó^   € \        V R ^\        4       RV  2RV R,           RV R,           R23# )rŸ   z0.0.z0.i   r€   z.0)Ú_integerÚMAX_SEQUENCE)rŸ   s   &r   Úpackage_versionsr¤   i   s=   € ÜˆX�z 1¤lÔ3Ø�(�Ð  8¨uÕ#4Ð"5°Q°xÀ%Õ7GÐ6HÈÐKÐKÐKr    c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r$   r'   r(   r)   r&   Úminimumr    Úmaximumr*   r   )r+   s   "r   r,   r,   n   s0   € ÷ ñ �Fð  3ð °ð À3ð Ð^añ r    c                óh   € \        V 4      \        Jg   Y u;8:  d   V8:  g   M \        R V 24      hV # )r.   )Útyper    r   )r'   r)   r¦   r§   s   &&&&r   r¢   r¢   n   s/   € ÜˆEƒ{œ#Ó WÖ%@¸Ö%@Ü˜X e WÐ-Ó.Ð.Ø€Lr    c               ó    € V ^8„  d   QhRRRR/# ©r$   r'   r(   r*   rc   r   )r+   s   "r   r,   r,   t   s   € ÷ ñ �6ð ˜dñ r    c                ó¨   € \        V \        4      '       d1   \        V P                  R 4      4      \        Jg   V R ,          ^8w  d   \        R4      hV # )ÚschemazUnsupported channel schema)r/   rc   r©   Úgetr    r   r?   s   &r   Ú_schemar¯   t   sB   € Ü�eœT×"Ò"¤d¨5¯9©9°XÓ+>Ó&?ÄsÓ&JÈeÐT\ÍoÐabÔNbÜÐ7Ó8Ð8Ø€Lr    c               ó    € V ^8„  d   QhRRRR/# r«   r   )r+   s   "r   r,   r,   z   s   € ÷ ñ ˜Vð ¨ñ r    c                óâ  € \        V \        4      '       g   \        R 4      h\        RV P	                  R4      R4       \        RV P	                  R4      R4       R F  p\        RV P	                  V4      V4       K!  	  \        RV P	                  R	4      R
4       \        RV P	                  R4      R4       \        RV P	                  R4      R4       \        RV P	                  R4      R4       V # )zInvalid channel identityz[a-f0-9]{16}Útokenzidentity tokenz [A-Za-z0-9][A-Za-z0-9 ._-]{0,79}ÚdisplayNamezidentity display namez[A-Za-z][A-Za-z0-9]{0,63}z[a-z][a-z0-9.-]{2,127}ÚappIdzapp IDz[A-Za-z][A-Za-z0-9.-]{2,49}ÚmsixAppIdWithOrgzMSIX identityz[a-z][a-z0-9-]{0,63}ÚcliNamezCLI namez[A-Za-z][A-Za-z0-9 ._-]{0,79}ÚwindowsExecutableNamezWindows executable)ÚappNamePascalÚartifactNamePascal)r/   rc   r   r3   r®   )r'   Úfields   & r   Úvalidate_identityr»   z   sÈ   € Ü�eœT×"Ò"ÜÐ5Ó6Ð6Ü
ˆ?˜EŸI™I gÓ.Ð0@ÔAÜ
Ð.°·	±	¸-Ó0HÐJaÔbÛ8ˆÜÐ+¨U¯Y©Y°uÓ-=¸uÖEñ 9ä
Ð$ e§i¡i°Ó&8¸(ÔCÜ
Ð)¨5¯9©9Ð5GÓ+HÈ/ÔZÜ
Ð" E§I¡I¨iÓ$8¸*ÔEÜ
Ð+¨U¯Y©YÐ7NÓ-OÐQeÔfØ€Lr    r=   Úbase_urlÚpolicyc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r$   r'   r(   r=   ú
str | Noner¼   r½   r&   r*   rc   r   )r+   s   "r   r,   r,   ˆ   s2   € ÷ 4ñ 4˜Fð 4°:ð 4Ø)ð4Ø:=ð4ØNRñ4r    c               óþ  € \        V 4      p\        VP                  R 4      4       \        VP                  R4      4       \	        VP                  R4      4      pVe/   VP                  4       VP                  4       8w  d   \        R4      h\        VP                  R4      4       RV9   d   \        VR,          4       \        RVP                  R4      R	4       \        VP                  R
4      4      pVR8X  d5   VP                  R4      VP                  R4      3V8w  d   \        R4      hEML\        RVP                  R4      R4       VP                  R4      VR,          R,          8w  d   \        R4      hVP                  R4      pVed   ^ RI
Hp \        V\        4      '       d	   V! V4      MRp	V	f   WtR,          8w  d   \        R4      hM V	^ ,          VR,          8w  d   \        R4      hVR8X  d   RMRp
\        W¤P                  R4      R4      p\        ;QJ d+    R VP                  R4       4       F  '       g   K   RM 	  RM! R VP                  R4       4       4      '       d   \        R 4      h\!        VP                  R!4      4       VP                  R"4      p\        V\"        4      '       g   \        R#4      hVP%                  4        F@  w  rÞ\        R$VR%4       Vf   K  \        V\        4      '       d
   R&V9   g   K7  \        R'4      h	  VP                  R(4      p\        V\        4      '       d   \'        V4      V8w  d   \        R)4      hVe   V\'        V4      8w  d   \        R*4      hV# )+ÚbuildIdÚchannelr=   Nú%Channel repository authority mismatchrI   ÚcontrollerCommitú1(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)ÚsourceVersionzsource versionrŸ   r   ÚversionÚwindowsVersionz/Channel package version does not match sequencez:v[0-9]+\.[0-9]+\.[0-9]+(?:\+canary\.20[0-9]{6}T[0-9]{6}Z)?Ú
releaseTagzrelease tag:é   NNz Release package version mismatchÚ
archiveRef)Úparse_attempt_refzInvalid archive refz-Archive ref does not name the release versionúcanary-releasez[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+z[0-9]+\.[0-9]+\.[0-9]+\.0zWindows versionc              3  ó>   "  € T F  p\        V4      R 8„  x € K  	  R# 5i)iÿÿ  N)r    )r   Úparts   & r   r   Ú#validate_request.<locals>.<genexpr>­   s   é € Ð=©_ TŒs�4‹y˜5Ö «_ùr~   r€   TFzInvalid Windows versionÚidentityÚ	bundleEnvzInvalid bundle environmentz[A-Za-z_][A-Za-z0-9_]*zbundle environment nameÚ z Invalid bundle environment valueÚ
publicBasez!Invalid request archive authorityz"Request archive authority mismatch)r¯   rO   r®   r:   r@   Úcasefoldr   rJ   r3   r¤   Úscripts.releases.versioningrÌ   r/   r&   r�   r�   r»   rc   rg   r“   )r'   r=   r¼   r½   ÚrequestÚactual_repoÚversionsÚarchive_refrÌ   r’   r%   ÚquadÚvaluesri   ÚitemÚbases   &$$$            r   Úvalidate_requestrß   ˆ   så  € ä�e‹n€GÜ�—‘˜YÓ'Ô(Ü�'—+‘+˜iÓ(Ô)Ü% g§k¡k°,Ó&?Ó@€KØÒ +×"6Ñ"6Ó"8¸J×<OÑ<OÓ<QÔ"QÜÐBÓCÐCÜ�7—;‘;˜xÓ(Ô)Ø˜WÔ$Ü�wÐ1Õ2Ô3Ü
Ð?ÀÇÁÈ_ÓA]Ð_oÔpÜ §¡¨JÓ 7Ó8€HØ�ÔØ�K‰K˜	Ó" G§K¡KÐ0@Ó$AÐBÀhÔNÜÐPÓQÐQñ Oô 	ØIØ�K‰K˜Ó%Øô	
ð
 �;‰;�yÓ! W¨\Õ%:¸2Õ%>Ô>ÜÐAÓBÐBØ—k‘k ,Ó/ˆØÒ"ÝEÜ7AÀ+Ìs×7SÒ7SÑ& {Ô3ÐY]ˆFØŠ~Ø¨,Õ"7Ô7Ü&Ð'<Ó=Ð=ð 8à˜•˜g iÕ0Ô0Ü"Ð#RÓSÐSð 8>ÐAQÔ7QÑ3ÐWsˆÜ�gŸ{™{Ð+;Ó<Ð>OÓPˆß‹3Ñ=¨T¯Z©Z¸¬_Ó=�3�3Š3Ñ=¨T¯Z©Z¸¬_Ó=×=Ò=ÜÐ8Ó9Ð9Ü�g—k‘k *Ó-Ô.Ø�[‰[˜Ó%€FÜ�fœd×#Ò#ÜÐ7Ó8Ð8Ø—\‘\–^‰	ˆÜÐ(¨#Ð/HÔIØÔ¤Z°´c×%:Ò%:¸dÀd¾lÜÐAÓBÐBñ $ð �;‰;�|Ó$€DÜ�dœC× Ò ¤K°Ó$5¸Ô$=ÜÐ>Ó?Ð?ØÒ ¬°HÓ(=Ô =ÜÐ?Ó@Ð@Ø€Nr    c               ó    € V ^8„  d   QhRRRR/# )r$   r'   r(   r*   údict | Noner   )r+   s   "r   r,   r,   ¿   s   € ÷ 
ñ 
�ð 
˜Kñ 
r    c                óN  € V f   R # \        V \        4      '       g   \        R4      h\        V P	                  R4      4      p\        V P	                  R4      R\        R7       V P	                  R4      VR,           8w  d   \        R4      h\        V P	                  R	4      4       V # )
NzInvalid channel headrÁ   rŸ   zhead sequence©r§   ÚmanifestKeyz
build.jsonzInvalid channel manifest keyÚsha256)r/   rc   r   rO   r®   r¢   r£   rE   )r'   Úprefixs   & r   Ú_headrç   ¿   sƒ   € Ø‚}ÙÜ�eœT×"Ò"ÜÐ1Ó2Ð2Ü˜%Ÿ)™) IÓ.Ó/€FÜˆU�Y‰Y�zÓ" O¼\ÕJØ‡y�y�Ó 6¨LÕ#8Ô8ÜÐ9Ó:Ð:Ü�5—9‘9˜XÓ&Ô'Ø€Lr    r9   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r$   r'   r(   r9   r¿   r=   r*   rc   r   )r+   s   "r   r,   r,   Ì   s)   € ÷ &ñ &˜6ð &¨Jð &È:ð &Ðaeñ &r    c               ó¢  € \        V 4      p0 R(mVP                  4       8:  g   \        R4      h\        VP	                  R 4      4       Ve   VR ,          V8w  d   \        R	4      h\        VP	                  R4      4      pVe/   VP                  4       VP                  4       8w  d   \        R
4      hVP	                  R4      \        9  g   VP	                  R4      R)9  d   \        R4      h\        VP	                  R4      RR*R7       \        VP	                  R4      R4       \        VP	                  R4      4      pVe!   VR,          VR,          8¼  d   \        R4      hVR,          R8X  d­   VP	                  R4      pVP	                  R4      f1   Vf-   \        V\        4      '       d   VP	                  R4      R8w  d   \        R4      h\        RVP	                  R4      R4      pRV9   g   RV9   g   VP                  R+4      '       d   \        R4      hM\        VP	                  R4      4       VR,          R8X  Ed   \        VP	                  R4      4       \        RVP	                  R4      R4       \        VP	                  R 4      4      f   \        R!4      h\        VP	                  R"4      4      \         Jg   VR",          ^8w  d   \        R#4      hVP	                  R$4      p\        V\        4      '       d   VP	                  R4      R,9  d   \        R%4      h\        VP	                  R&4      4      V8w  d   \        R'4      hV# )-r9   r=   r½   ÚstateÚrevisionÚnextSequencerÑ   ÚheadzMissing channel record fieldsz&Channel name does not match object keyrÃ   ÚretiredzInvalid channel policy or statezchannel revisionrã   znext sequencerŸ   z*Channel head exceeds allocation high-waterúsource-branchÚdeliveryÚkindz+Source branch cannot carry native artifactsz[A-Za-z0-9][A-Za-z0-9_./-]*Úbranchzsource branchr�   z//zInvalid source branchÚdestinationrÅ   ÚminimumVersionzretirement minimum versionÚdestinationHeadz-Retirement requires a pinned destination headÚreceiverProtocolz(Unsupported retirement receiver protocolÚreceiverz Invalid retirement receiver kindÚlastHeadzRetirement last head mismatch>   rí   r9   rê   r½   rÑ   rë   r=   rì   )Úactiverî   ì   ÿÿÿÿ )rN   r€   z.lock)zin-placeÚdiscontinued)r¯   Úkeysr   r:   r®   r@   rÕ   Ú	_POLICIESr¢   rç   r/   rc   r3   r›   r»   r©   r    )	r'   r9   r=   ÚrecordrØ   rí   rð   rò   r÷   s	   &$$      r   Úvalidate_recordrÿ   Ì   sË  € Ü�U‹^€FÚdÐhn×hsÑhsÓhuÔuÜÐ:Ó;Ð;Ü�&—*‘*˜VÓ$Ô%ØÒ˜F 6�N¨dÔ2ÜÐCÓDÐDÜ% f§j¡j°Ó&>Ó?€KØÒ +×"6Ñ"6Ó"8¸J×<OÑ<OÓ<QÔ"QÜÐBÓCÐCØ‡z�z�(Ó¤9Ô,°·
±
¸7Ó0CÐK`Ô0`ÜÐ<Ó=Ð=ÜˆV�Z‰Z˜
Ó#Ð%7ÀÕKÜˆV�Z‰Z˜Ó'¨Ô9Ü�—‘˜FÓ#Ó$€DØÒ˜D Õ,°°~Õ0FÔFÜÐGÓHÐHØˆhÕ˜?Ô*Ø—:‘:˜jÓ)ˆØ�:‰:�jÓ!Ò-°Ò1AÌÐT\Ô^b×IcÒIcÐgo×gsÑgsÐtzÓg{ð  @Oô  hOÜÐLÓMÐMÜÐ6¸¿¹ÀXÓ8NÐP_Ó`ˆØ�6Œ>˜T Vœ^¨v¯©Ð?R×/SÒ/SÜÐ6Ó7Ð7ð 0Tô 	˜&Ÿ*™* ZÓ0Ô1Øˆg…˜)Õ#Ü�f—j‘j Ó/Ô0ÜÐCÀVÇZÁZÐP`ÓEaÐcô  	AÜ�—‘Ð-Ó.Ó/Ò7ÜÐNÓOÐOÜ�—
‘
Ð-Ó.Ó/´sÓ:¸fÐEWÕ>XÐ\]Ô>]ÜÐIÓJÐJØ—:‘:˜jÓ)ˆÜ˜(¤D×)Ò)¨X¯\©\¸&Ó-AÐIeÔ-eÜÐAÓBÐBÜ�—‘˜JÓ'Ó(¨DÔ0ÜÐ>Ó?Ð?Ø€Mr    T)Úfrozenc                  ó6   € ] tR t^õt$ R]R&   R]R&   R]R&   RtR# )ÚChannelResolutionrc   Ú	requestedÚterminalrá   Úmanifestr   N)r   r   r   r   Ú__annotations__r   r   r    r   r  r  õ   s   ‡ àƒOØƒNØ×r    r  c                  ó   € ] tR t^ýtR tRtR# )Ú_NoRedirectc                	ó   € \        R 4      h)ú+Channel archive redirects are not permittedrf   )ÚselfÚreqÚfpÚcodeÚmsgÚheadersÚnewurls   &&&&&&&r   Úredirect_requestÚ_NoRedirect.redirect_requestþ   s   € ÜÐHÓIÐIr    r   N)r   r   r   r   r  r   r   r    r   r  r  ý   s   † öJr    r  Úrelease_channel_read_retriesF)ÚdefaultzContextVar[bool]Ú_RETRY_READSc               #  ó    "  € \         P                  R4      p  Rx € \         P                  V 4       R#   \         P                  T 4       i ; i5i)a©  Let channel reads inside the block wait out a CDN blip with PM's bounded retries.

Only an explicit ``hermes update`` opts in. Passive checks (``hermes --version``, the
banner, the Desktop/dashboard update check) make one attempt: offline also reads as
transient (DNS EAI_AGAIN, ENETUNREACH), so retrying there adds backoff to a synchronous
status line, stretches a hung CDN from 30 s to ~2 min and logs a WARNING per retry.
TN)r  ÚsetÚreset)r²   s    r   Úretrying_readsr    s;   é € ô ×Ñ˜TÓ"€Eð"Ûä×Ñ˜5Ö!øŒ×Ñ˜5Õ!üs   ‚A™4 �A´AÁAc                  óN   € ] tR tRtRR R lltRR R lltR R ltR	 R
 ltRtR# )ÚChannelReaderi  Nc               ó    € V ^8„  d   QhRRRR/# )r$   r¼   r&   r=   r¿   r   )r+   s   "r   r,   ÚChannelReader.__annotate__  s   € ÷ Añ A ð A°*ñ Ar    c                	óª   € \        V4      V n        Ve   \        V4      MR V n        T;'       g    \	        \        4       4      P                  V n        R # ru   )r“   r¼   r@   r=   r   r  ÚopenÚopener)r  r¼   r=   r!  s   &&&&r   Ú__init__ÚChannelReader.__init__  s?   € Ü# HÓ-ˆŒØ=GÒ=SÔ-¨jÔ9ÐY]ˆŒØ×@Ð@¤¬[«]Ó ;× @Ñ @ˆŽr    c               ó$   € V ^8„  d   QhRRRRRR/# )r$   ri   r&   rå   r¿   r*   rT   r   )r+   s   "r   r,   r    s!   € ÷ ñ ˜cð ¨:ð Àñ r    c                	óº  a a	€ S P                   R ,           \        V4      ,           o	Ve   \        V4       ^ RIHpHp R V V	3R llp \        P                  4       '       d	   V! V4      MV! 4       p\        T4      \        8”  d   \        R4      hTe5   \         P"                  ! T4      P%                  4       T8w  d   \        R4      hT#   \         df   pTP                  R8X  d   \        RT 24      ThT! T4      p\        RTP                   2T'       d   RT 2,           4      ThR	,           4      ThRp?i\        \        3 d   p\        R
4      ThRp?ii ; i)rN   N)Ú
edge_blockÚretry_networkc               ó   € V ^8„  d   QhRR/# )r$   r*   rT   r   )r+   s   "r   r,   Ú.ChannelReader.read_bytes.<locals>.__annotate__$  s   € ÷ 	7ñ 	7�eñ 	7r    c                 ó
  <€ SP                  \        SR R/R7      ^R7      ;_uu_ 4       p V P                  4       S8w  d   \        R4      hV P	                  \
        ^,           4      uuRRR4       #   + '       g   i     R# ; i)zCache-Controlzno-cache)r  )Útimeoutr
  N)r!  r
   Úgeturlr   ÚreadÚMAX_METADATA)Úresponser  Úurls    €€r   r-  Ú&ChannelReader.read_bytes.<locals>.read$  sb   ø€ Ø—‘œW S°?ÀJÐ2OÔPÐZ\�×]Ô]ÐaiØ—?‘?Ó$¨Ô+Ü&Ð'TÓUÐUØ—}‘}¤\°AÕ%5Ó6÷ ^×]×]Ó]ús   ª<A1Á1B	i”  zChannel object not found: zChannel read unavailable: HTTP z; r—   zChannel read unavailablez#Channel metadata exceeds size limitz Channel metadata SHA256 mismatch)r¼   r�   rE   Ú
pm.networkr&  r'  r  r®   r   r  r"   r   ÚOSErrorr   r7   r.  Úhashlibrå   Ú	hexdigest)
r  ri   rå   r&  r'  r-  rb   rp   Úblockr0  s
   f&&      @r   Ú
read_bytesÚChannelReader.read_bytes  s8  ù€ Ø�m‰m˜cÕ!¤L°Ó$5Õ5ˆØÒÜ˜6Ô"÷ 	9÷	7ñ 	7ð	DÜ*6×*:Ñ*:×*<Ò*<‘= Ô&Á$Ã&ˆDô ˆt‹9”|Ô#ÜÐDÓEÐEØÒ¤'§.¢.°Ó"6×"@Ñ"@Ó"BÀfÔ"LÜÐAÓBÐBØˆøô ô 	xØ�x‰x˜3ŒÜ%Ð(BÀ3À%Ð&HÓIÈsÐRÙ˜s“OˆEÜÐ!@ÀÇÁÀ
ÐK×_dÐQSÐTYÐSZÈ|ÕmÓnÐtwÐwÐjlÕmÓnÐtwÐwûÜœÐ"ô 	DÜÐ9Ó:ÀÐCûð	Dús1   ÁC
 Á"C
 Ã
EÃA D5Ä5EÅEÅ	EÅEc               ó    € V ^8„  d   QhRRRR/# )r$   r9   r&   r*   rc   r   )r+   s   "r   r,   r  9  s   € ÷ wñ w ð w¨ñ wr    c           	     	ór   € \        \        V P                  \        V4      4      4      WP                  R 7      # ))r9   r=   )rÿ   rq   r7  rR   r=   )r  r9   s   &&r   Úread_recordÚChannelReader.read_record9  s)   € Üœ{¨4¯?©?¼;ÀtÓ;LÓ+MÓNÐUY×fuÑfuÔvÐvr    c               ó    € V ^8„  d   QhRRRR/# )r$   r9   r&   r*   r  r   )r+   s   "r   r,   r  <  s   € ÷ >ñ >˜Cð >Ð$5ñ >r    c           	     	ó&  € V P                  V4      ;r#VR ,          R8X  d•   VR,          V8X  d   \        R4      hV P                  VR,          4      pVR,          P                  4       VR,          P                  4       8w  d   \        R4      hVR ,          R8w  g   VR,          R8w  d   \        R	4      hVR
,          pVR ,          R8X  d@   VR,          pVe(   VR
,          e   VR,          VR
,          R,          8”  d   \        R4      hVf   RMC\        \	        V P                  VR,          VR,          4      4      / VCR
V/CV P                  4      pVR ,          R8X  d¥   Vf   Q hVP                  R4      VR,          8w  d   \        R4      h\        \        \        VR,          R,          P                  R4      4      4      p\        \        \        VR,          P                  R4      4      4      pWg8  d   \        R4      h\        W#V4      # )rê   rî   ró   zChannel retirement cycler=   z(Retirement repository authority mismatchrù   r½   ústable-releasez@Retirement requires a directly active stable-release destinationrí   rõ   NrŸ   z#Invalid retirement destination headrä   rå   rö   z1Stable build has no supported retirement receiverr×   rÆ   r€   rô   z4Destination does not meet retirement minimum version)r;  r   rÕ   Úvalidate_manifestrq   r7  r¼   r®   ÚtupleÚmapr    r�   r  )r  r9   r  rþ   rí   r  ÚactualÚfloors   &&      r   ÚresolveÚChannelReader.resolve<  sâ  € Ø!×-Ñ-¨dÓ3Ð3ˆ	à�'�?˜iÔ'Ø�mÕ$¨Ô,Ü"Ð#=Ó>Ð>Ø×%Ñ% f¨]Õ&;Ó<ˆFØ�lÕ#×,Ñ,Ó.°)¸LÕ2I×2RÑ2RÓ2TÔTÜ"Ð#MÓNÐNØ�g� (Ô*¨f°XÕ.>ÐBRÔ.RÜ"Ð#eÓfÐfØ�f�~ˆØ�WÕ Ô*àÐ.Õ/ˆDØŠ|˜v f�~Ò5¸¸jÕ9IÈFÐSYÍNÐ[eÕLfÔ9fÜ"Ð#HÓIÐIØš<‘4Ô->Ü˜Ÿ™¨¨]Õ(;¸TÀ(½^ÓLÓMÐOgÐRXÐOgÐZ`ÐbfÑOgÐim×ivÑivó.xˆà�WÕ Ô*ØÒ'Ð'Ð'Ø�|‰|Ð.Ó/°9Ð=OÕ3PÔPÜ"Ð#VÓWÐWÜœ3œs H¨YÕ$7¸Õ$H×$NÑ$NÈsÓ$SÓTÓUˆFÜœ#œc 9Ð-=Õ#>×#DÑ#DÀSÓ#IÓJÓKˆEØŒ~Ü"Ð#YÓZÐZÜ  °HÓ=Ð=r    )r¼   r!  r=   )NNru   )	r   r   r   r   r"  r7  r;  rE  r   r   r    r   r  r    s   † ÷A÷
õ<w÷>ñ >r    r  c               ó(   € V ^8„  d   QhRRRRRRRR/# )r$   r'   r(   rþ   rc   r¼   r&   r*   r   )r+   s   "r   r,   r,   Z  s(   € ÷ 7ñ 7˜Vð 7¨Tð 7¸Sð 7ÀTñ 7r    c                ól	  aaaaa€ \        V 4      pR V9   d   \        VR ,          RR1R7       \        VP                  R4      VR,          W!R,          R7      oSR,          VR,          8w  d   \	        R4      hSR	,          VR
,          8w  d   \	        R4      hVP                  R4      oSeN   \
        ;QJ d     VV3R lR2 4       F  '       g   K   RM	  RM! VV3R lR2 4       4      '       d   \	        R4      hVP                  R4      p\        V\        4      '       d	   V'       g   \	        R4      h\        SR,          4      .pVR,          R39   d6   TP                  RSP                  R4      ;'       g
    SR,           R24       \        4       pV EF  o\        S\        4      '       g   \	        R4      h\        ;QJ d    . V3R lR4 4       F  NK  	  5M! V3R lR4 4       4      pV^ ,          R59  g   V^,          R69  g   V^,          R8w  d   \	        R4      hWv9   d   \	        R4      hVP                  V4       SP                  R4      p\        V\        4      '       g   \	        R4      h\        VP                  R 4      4      o\
        ;QJ d    V3R! lV 4       F  '       g   K   RM	  RM! V3R! lV 4       4      '       g   \	        R"4      h\        VP                  R#4      4       \        VP                  R$4      R%R1R7       V^ ,          R8X  d   R7MR8w  ršpSP                  R4      SR,          V	,          8w  g   SP                  R&4      SV
,          8w  d   \	        R'4      hSP                  V4      p\        V\         4      '       dC   V'       d;   \
        ;QJ d    R( V 4       F  '       g   K   RM	  RM! R( V 4       4      '       d   \	        R)4      hV^ ,          R8X  d   \#        R*VR+4       SP                  R,4      p\        V\        4      '       d   VP                  R	4      R-8w  d   \	        R.4      h\        VP                  R 4      4      o\
        ;QJ d    V3R/ lV 4       F  '       g   K   RM	  RM! V3R/ lV 4       4      '       d   EK  \	        R04      h	  V# )9rö   zreceiver protocolrã   r×   r=   r½   )r=   r¼   r½   rÑ   z"Manifest channel identity mismatchrÂ   r9   zManifest channel mismatchrí   c              3  óJ   <"  € T F  pSV,          SV,          8g  x € K  	  R # 5iru   r   )r   rº   rí   r×   s   & €€r   r   Ú$validate_manifest.<locals>.<genexpr>e  s    øé € ÐcÑKbÀ% ¨¥°$°uµ+Ö =ÓKbùs   ƒ #rÁ   TFz$Manifest does not match channel headÚpackageszBuild manifest has no packageszreleases/tag/rË   rÉ   rN   zInvalid native packagec              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5iru   )r®   )r   rº   Úpackages   & €r   r   rJ  s  s   øé € ÐWÑ7V¨e�w—{‘{ 5×)Ð)Ó7Vùó   ƒ!ÚdarwinÚbundledz"Unsupported channel package targetzDuplicate package targetÚartifactzInvalid package artifactri   c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5iru   ©rœ   )r   ræ   ri   s   & €r   r   rJ  }  s   øé € ÐA¹¨f�3—>‘> &×)Ð)»ùrN  z)Artifact outside admitted build namespacerå   Úsizezartifact sizerÇ   z+Native package identity or version mismatchc              3  ó>   "  € T F  p\        V4      ^ 8  x € K  	  R# 5iry   r{   r}   s   & r   r   rJ  ‡  s   é € Ð=[ÑSZÈa¼cÀ!»fÀr¾kÓSZùr~   zMissing native signing identityz[A-Z0-9]{10}zApple team IDÚfeedÚstablez6Channel native metadata requires a neutral stable feedc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5iru   rS  )r   ræ   Úfeed_keys   & €r   r   rJ  �  s   øé € ÐF¹X°6�8×&Ñ& v×.Ð.»XùrN  z0Native metadata outside admitted build namespacerú   )rÁ   rŸ   >   rÍ   r?  )ÚplatformÚarchÚvariant)rO  Úwin32)Úarm64Úx64)r´   rÇ   ÚteamId)rµ   rÈ   Ú	publisher)r¯   r¢   rß   r®   r   r�   r/   ÚlistrO   Úappendr  rc   rA  Úaddr�   rE   r&   r3   )r'   rþ   r¼   r  rK  ÚprefixesÚseenÚtargetrQ  Úidentity_fieldÚversion_fieldÚsigning_fieldÚsigningrV  rY  rí   ri   rM  r×   s   &&&           @@@@@r   r@  r@  Z  s§  ü€ Ü�u‹~€HØ˜XÔ%Ü�Ð,Õ-Ð/BÈIÕVÜ˜xŸ|™|¨IÓ6À6È,ÕCWØ(0ÀÕ9IôK€GàˆzÕ˜f ZÕ0Ô0ÜÐ?Ó@Ð@ØˆyÕ˜V F�^Ô+ÜÐ6Ó7Ð7Ø�:‰:�fÓ€DØÒŸC›CÕcÑKbÓcŸCŸCšCÕcÑKbÓc×cÒcÜÐAÓBÐBØ�|‰|˜JÓ'€HÜ�h¤×%Ò%¯XÜÐ;Ó<Ð<Ü˜W YÕ/Ó0Ð1€HØˆhÕÐ?Ô?ð 	�‰˜-¨¯©°LÓ(A×(ZÐ(ZÀWÈ\ÕEZÐ'[Ð[\Ð]Ô^Ü‹5€DÜˆÜ˜'¤4×(Ò(ÜÐ7Ó8Ð8ß”ÔWÑ7VÓW—‘ÔWÑ7VÓWÓWˆØ�!�9Ð/Ô/°6¸!µ9ÐDTÔ3TÐX^Ð_`ÕXaÐenÔXnÜÐCÓDÐDØŒ>ÜÐ9Ó:Ð:Ø�‰�ÔØ—;‘;˜zÓ*ˆÜ˜(¤D×)Ò)ÜÐ9Ó:Ð:Ü˜8Ÿ<™<¨Ó.Ó/ˆß‹sÔA¹ÓA�s�sŠsÔA¹ÓA×AÒAÜÐJÓKÐKÜ�x—|‘| HÓ-Ô.Ü�—‘˜fÓ% À	ÕJà.4°Q­i¸8Ô.CÑ*ØDñ 	5ˆ }ð �;‰;�zÓ" g¨jÕ&9¸.Õ&IÔIÈWÏ[É[ÐYbÓMcÐgnÐo|Õg}ÔM}ÜÐLÓMÐMØ—+‘+˜mÓ,ˆÜ˜'¤3×'Ò'¯w¿#»#Ñ=[ÑSZÓ=[¿#¿#º#Ñ=[ÑSZÓ=[×:[Ò:[ÜÐ@ÓAÐAØ�!�9˜Ô Ü�? G¨_Ô=Ø�{‰{˜6Ó"ˆÜ˜$¤×%Ò%¨¯©°)Ó)<ÀÔ)HÜÐWÓXÐXÜ §¡¨£Ó0ˆß‹sÔF¹XÓF�s�sŠsÔF¹XÓF×FÕFÜÐQÓRÐRñA ðB €Or    l   ÿÿ i  @ )r   r?  rÍ   rï   >   ÚauxÚconÚnulÚprn)7Ú__conditional_annotations__r   Ú
__future__r   Ú
contextlibr   Úcontextvarsr   Údataclassesr   r4  r]   r0   Úurllib.errorr   r   Úurllib.parser   Úurllib.requestr	   r
   r   r£   r.  rý   Úranger8   rn   r   r"   r3   r:   r@   rE   rJ   rO   rR   r`   rq   r“   r�   r¤   r¢   r¯   r»   rß   rç   rÿ   r  r  r  r  r  r  r@  )rp  s   @r   Ú<module>ry     s|  øðÜ QÝ "å %Ý "Ý !Û Û Û 	ß ,Ý !ß EÑ Eà€Ø€àL€	ò1Ñ*K¹eÀAÀr¼lÓ*Kð 1Ù/¡%¨¨2¤,Ó/ð1€	ôR�:ô Rô	�lô 	õõõ`õ4õ4õ\õ;õzõõ"	õõLð
 89ÈÐXYÕIY÷ õõð4Àð 4Ø,0ð4Ø@I÷4õn
ð&¸ð &ÐX\÷ &ñR �$Ô÷ð ó ðôJÐ%ô Jñ
 ",Ð,JÐTYÔ!Z€ÐÓ Zð ñ"ó ð"÷B>ñ B>÷J7r    