ó
    6°hî” ã                  ó.  • S SK Jr  S SKrS SKrS SKrSSKJr  SSKJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r   SSK!J"r#  SSK$J%r%J&r&  SS	K'J(r(  \ RR                  r) " S
 S5      r* " S S\*5      r+ " S S5      r, " S S\,5      r- " S S\*5      r. " S S\.5      r/ " S S\,5      r0 " S S\05      r1 " S S\.5      r2 " S S\05      r3 " S S\/5      r4S  r5S! r6S" r7 " S# S$\.5      r8 " S% S&\05      r9 " S' S(\.5      r: " S) S*5      r;g)+é    )ÚannotationsNé   )Ú_)ÚhexÚnullrevÚshort)ÚdagopÚencodingÚerrorÚfilesetÚmatchÚ
mergestateÚmetadataÚobsoleteÚpatchÚpathutilÚphasesÚrepoviewÚscmutilÚsparseÚsubrepoÚsubrepoutilÚtestingÚutil)Ústatus)ÚdateutilÚ
stringutil)Ú	timestampc                  óÂ  • \ rS rSrSrS rS r\R                  " \5      r	S r
S rS rS rS	 rS
 rS rS r  S5S jr\S 5       rS rS rS rS rS rS rS rS rS rS6S jrS rS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S% r*S& r+\S' 5       r,S( r-S) r.S7S* jr/S+ r0S, r1       S8S- jr2         S9S. jr3S/ r4S0 r5      S: S5S1 jjr6S;S2 jr7S3 r8S4r9g)<Úbasectxé6   a5  A basectx object represents the common logic for its children:
changectx: read-only context that is already present in the repo,
workingctx: a context that represents the working directory and can
            be committed,
memctx: a context that represents changes in-memory and can also
        be committed.c                ó   • Xl         g ©N©Ú_repo©ÚselfÚrepos     Ú3/usr/lib/python3/dist-packages/mercurial/context.pyÚ__init__Úbasectx.__init__>   s   € Ø�
ó    c                ó4   • [        U R                  5       5      $ r#   )r   Únode©r'   s    r)   Ú	__bytes__Úbasectx.__bytes__A   s   € Ü�T—Y‘Y“[Ó!Ð!r,   c                óP   • S[        U 5      R                  < S[        U 5      < S3$ ©NÚ<Ú Ú>©ÚtypeÚ__name__Ústrr/   s    r)   Ú__repr__Úbasectx.__repr__F   ó   � Ü  ›J×/Ô/´°T¶Ð;Ð;r,   c                ó’   •  [        U 5      [        U5      :H  =(       a    U R                  UR                  :H  $ ! [         a     gf = f©NF)r8   Ú_revÚAttributeError©r'   Úothers     r)   Ú__eq__Úbasectx.__eq__I   s>   € ð	Ü˜“:¤ e£Ñ,×H°·±¸e¿j¹jÑ1HÐHøÜó 	Ùð	ús   ‚69 ¹
AÁAc                ó   • X:X  + $ r#   © rB   s     r)   Ú__ne__Úbasectx.__ne__O   ó   € ØÒ"Ð"r,   c                ó   • XR                   ;   $ r#   ©Ú	_manifest©r'   Úkeys     r)   Ú__contains__Úbasectx.__contains__R   s   € Ø—n‘nÑ$Ð$r,   c                ó$   • U R                  U5      $ r#   )ÚfilectxrN   s     r)   Ú__getitem__Úbasectx.__getitem__U   s   € Ø�|‰|˜CÓ Ð r,   c                ó,   • [        U R                  5      $ r#   )ÚiterrM   r/   s    r)   Ú__iter__Úbasectx.__iter__X   s   € Ü�D—N‘NÓ#Ð#r,   c                ó"   • U R                  5       $ )z Builds a manifest that includes the given status results, if this is
a working copy context. For non-working copy contexts, it just returns
the normal manifest.)Úmanifest)r'   r   s     r)   Ú_buildstatusmanifestÚbasectx._buildstatusmanifest[   s   € ð �}‰}‹Ðr,   c                ó   • U$ )zVThis internal method provides a way for child objects to override the
match operator.
rG   )r'   rC   r   s      r)   Ú_matchstatusÚbasectx._matchstatusa   s	   € ð ˆr,   c           	     ó²  • SnU R                  5       b3  U R                  5       UR                  5       :  a  U R                  U5      nUR                  U5      nUc  U R                  U5      n/ / p©/ n/ nUR                  UR                  UR                  pþn[        U5      nUR                  XsUS9nUR                  5        Hë  u  nnUU;   a  M  Uc  UR                  U5        M$  Uu  u  nnu  nnUc  U
R                  U5        ME  Uc  UR                  U5        M[  UU:w  a  U	R                  U5        Mt  UU R                  R                  R                  ;  a  U	R                  U5        M«  U U   R                  UU   5      (       a  U	R                  U5        MÚ  UR                  U5        Mí     U(       az  U Vs/ s H#  nUU;  d  M  U(       a  U" U5      (       d  M!  UPM%     nnU Vs/ s H#  nUU;  d  M  U(       a  U" U5      (       d  M!  UPM%     nnU Vs/ s H  nUU;  d  M  UPM     nn[        R                  " XšX½XïU5      $ s  snf s  snf s  snf )z.build a status with respect to another contextN)r   Úclean)Úrevr\   ÚdeletedÚunknownÚignoredÚsetÚdiffÚitemsÚappendr%   ÚnodeconstantsÚwdirfilenodeidsÚcmpr   r   )r'   rC   Úsr   ÚlistignoredÚ	listcleanÚlistunknownÚmf2Úmf1ÚmodifiedÚaddedÚremovedrb   rd   re   rf   Ú
deletedsetÚdÚfnÚvalueÚnode1Úflag1Únode2Úflag2s                           r)   Ú_buildstatusÚbasectx._buildstatusg   s)  € ð ˆØ�8‰8‹:Ñ! d§h¡h£j°5·9±9³;Ó&>Ø×+Ñ+¨AÓ.ˆCØ×(Ñ(¨Ó+ˆØ‰;Ø×+Ñ+¨AÓ.ˆCà˜b�%ØˆØˆØ$%§I¡I¨q¯y©y¸!¿)¹)˜'ˆÜ˜“\ˆ
Ø�H‰H�S¨YˆHÐ7ˆØŸ™ž‰IˆB�Ø�ZÓÙØ‰}Ø—‘˜RÔ ÙØ-2Ñ*‰NˆU�E™N˜U EØ‰}Ø—‘˜RÖ Ø‘Ø—‘˜rÖ"Ø˜%“Ø—‘ Ö#Ø˜dŸj™j×6Ñ6×FÑFÓFð
 —‘ Ö#Ø�b‘—‘˜e B™i×(Ñ(Ø—‘ Ö#à—‘˜RÖ ñ- #ö0 ñ "óâ!�BØ˜S‘=ó æ*/±5¸·9÷ Ù!ð ð ñ "óâ!�BØ˜S‘=ó æ*/±5¸·9÷ Ù!ð ð ñ %,ÓD¢G˜b¨r¸Ñ/C—r¡GˆGÐDä�~Š~Ø˜W¨wÀó
ð 	
ùòùò
ùò Es0   Æ;
I
Ç	I
ÇI
Ç+
IÇ9IÈIÈ
IÈ)Ic                óV   • [         R                  " X R                  R                  5      $ r#   )r   Ústater%   Úuir/   s    r)   ÚsubstateÚbasectx.substate©   s   € ä× Ò  §z¡z§}¡}Ó5Ð5r,   c                ó&   • U R                   U   S   $ ©Nr   )r„   ©r'   Úsubpaths     r)   ÚsubrevÚbasectx.subrev­   s   € Ø�}‰}˜WÑ% aÑ(Ð(r,   c                ó   • U R                   $ r#   )r@   r/   s    r)   rc   Úbasectx.rev°   s   € Ø�y‰yÐr,   c                ó   • U R                   $ r#   )Ú_noder/   s    r)   r.   Úbasectx.node³   ó   € Ø�z‰zÐr,   c                ó4   • [        U R                  5       5      $ r#   )r   r.   r/   s    r)   r   Úbasectx.hex¶   ó   € Ü�4—9‘9“;ÓÐr,   c                ó   • U R                   $ r#   rL   r/   s    r)   r[   Úbasectx.manifest¹   ó   € Ø�~‰~Ðr,   c                ó   • U R                   $ r#   )Ú_manifestctxr/   s    r)   ÚmanifestctxÚbasectx.manifestctx¼   s   € Ø× Ñ Ð r,   c                ó   • U R                   $ r#   r$   r/   s    r)   r(   Úbasectx.repo¿   r‘   r,   c                óD   • [         R                  U R                  5          $ r#   )r   Ú
phasenamesÚphaser/   s    r)   ÚphasestrÚbasectx.phasestrÂ   s   € Ü× Ñ  §¡£Ñ.Ð.r,   c                óD   • U R                  5       [        R                  :„  $ r#   )r    r   Úpublicr/   s    r)   ÚmutableÚbasectx.mutableÅ   s   € Ø�z‰z‹|œfŸm™mÑ+Ð+r,   Nc                ó,   • [         R                  " XX#S9$ )N)Úbadfn)r   r   )r'   ÚcwdÚexprr¨   s       r)   ÚmatchfilesetÚbasectx.matchfilesetÈ   s   € Ü�}Š}˜T¨Ñ:Ð:r,   c                óf   • U R                  5       [        R                  " U R                  S5      ;   $ )z!True if the changeset is obsoletes   obsolete©rc   ÚobsmodÚgetrevsr%   r/   s    r)   r   Úbasectx.obsoleteË   s"   € à�x‰x‹zœVŸ^š^¨D¯J©J¸ÓDÑDÐDr,   c                óf   • U R                  5       [        R                  " U R                  S5      ;   $ )z True if the changeset is extincts   extinctr®   r/   s    r)   ÚextinctÚbasectx.extinctÏ   s"   € à�x‰x‹zœVŸ^š^¨D¯J©J¸
ÓCÑCÐCr,   c                óf   • U R                  5       [        R                  " U R                  S5      ;   $ )z:True if the changeset is not obsolete, but its ancestor isó   orphanr®   r/   s    r)   ÚorphanÚbasectx.orphanÓ   s"   € à�x‰x‹zœVŸ^š^¨D¯J©J¸	ÓBÑBÐBr,   c                óf   • U R                  5       [        R                  " U R                  S5      ;   $ )z‰True if the changeset tries to be a successor of a public changeset

Only non-public and non-obsolete changesets may be phase-divergent.
s   phasedivergentr®   r/   s    r)   ÚphasedivergentÚbasectx.phasedivergent×   s%   € ð
 �x‰x‹zœVŸ^š^¨D¯J©JÐ8IÓJÑJÐJr,   c                óf   • U R                  5       [        R                  " U R                  S5      ;   $ )z‹Is a successor of a changeset with multiple possible successor sets

Only non-public and non-obsolete changesets may be content-divergent.
s   contentdivergentr®   r/   s    r)   ÚcontentdivergentÚbasectx.contentdivergentÞ   s%   € ð
 �x‰x‹zœVŸ^š^¨D¯J©JÐ8KÓLÑLÐLr,   c                ó~   • U R                  5       =(       d'    U R                  5       =(       d    U R                  5       $ )zLTrue if the changeset is either orphan, phase-divergent or
content-divergent)r·   rº   r½   r/   s    r)   Ú
isunstableÚbasectx.isunstableå   s,   € ð �{‰{‹}×P × 3Ñ 3Ó 5×P¸×9NÑ9NÓ9PÐPr,   c                óî   • / nU R                  5       (       a  UR                  S5        U R                  5       (       a  UR                  S5        U R                  5       (       a  UR                  S5        U$ )zªreturn the list of instabilities affecting this changeset.

Instabilities are returned as strings. possible values are:
- orphan,
- phase-divergent,
- content-divergent.
r¶   s   phase-divergents   content-divergent)r·   rj   rº   r½   )r'   Úinstabilitiess     r)   rÃ   Úbasectx.instabilitiesê   sd   € ð ˆØ�;‰;�=‰=Ø× Ñ  Ô+Ø×Ñ× Ñ Ø× Ñ Ð!3Ô4Ø× Ñ ×"Ñ"Ø× Ñ Ð!5Ô6ØÐr,   c                ó   • U R                   $ )z)return contexts for each parent changeset©Ú_parentsr/   s    r)   ÚparentsÚbasectx.parentsû   s   € à�}‰}Ðr,   c                ó    • U R                   S   $ ©Nr   rÆ   r/   s    r)   Úp1Ú
basectx.p1ÿ   s   € Ø�}‰}˜QÑÐr,   c                óh   • U R                   n[        U5      S:X  a  US   $ U R                  [           $ )Né   r   )rÇ   Úlenr%   r   )r'   rÈ   s     r)   Úp2Ú
basectx.p2  s0   € Ø—-‘-ˆÜˆw‹<˜1ÓØ˜1‘:ÐØ�z‰zœ'Ñ"Ð"r,   c                ó   • SU R                   ;   a   U R                  R                  U5      $ SU R                   ;   d  XR                  5       ;   a9  XR                  ;   a*  U R                  U   U R                  R                  U5      4$ U R                  R                  n X R                  R                     R                  U5      u  p4X44$ ! [         a5    [        R
                  " U R                  =(       d    SU[        S5      5      ef = f! [         a5    [        R
                  " U R                  =(       d    SU[        S5      5      ef = f)NrM   s   Nones   not found in manifestÚ_manifestdelta)Ú__dict__rM   ÚfindÚKeyErrorr   ÚManifestLookupErrorr�   r   ÚfilesrÔ   Úflagsr%   ÚmanifestlogÚ
_changesetr[   )r'   ÚpathÚmflr.   Úflags        r)   Ú	_fileinfoÚbasectx._fileinfo  s+  € Ø˜$Ÿ-™-Ó'ðØ—~‘~×*Ñ*¨4Ó0Ð0ð ˜tŸ}™}Ó,°¿
¹
»Ó0DØ×*Ñ*Ó*à×'Ñ'¨Ñ-Ø×'Ñ'×-Ñ-¨dÓ3ðð ð �j‰j×$Ñ$ˆð	ØŸ_™_×5Ñ5Ñ6×;Ñ;¸DÓA‰JˆDð ˆzÐøô+ ó Ü×/Ò/Ø—J‘J×) '¨4´Ð3KÓ1Lóð ðûô  ó 	Ü×+Ò+Ø—
‘
×%˜g t¬QÐ/GÓ-Hóð ð	ús   ’C Â )D Ã?DÄ?Ec                ó*   • U R                  U5      S   $ rË   )rà   ©r'   rÝ   s     r)   ÚfilenodeÚbasectx.filenode#  s   € Ø�~‰~˜dÓ# AÑ&Ð&r,   c                ó`   •  U R                  U5      S   $ ! [        R                   a     gf = f)Nr   r,   )rà   r   ÚLookupErrorrã   s     r)   rÚ   Úbasectx.flags&  s3   € ð	Ø—>‘> $Ó'¨Ñ*Ð*øÜ× Ñ ó 	Ùð	ús   ‚ –-¬-c                ó.   • [         R                  " U 5      $ r#   )r   Úcomputechangesetcopiesr/   s    r)   Ú_copiesÚbasectx._copies,  s   € ä×.Ò.¨tÓ4Ð4r,   c                ó    • U R                   S   $ rË   ©rë   r/   s    r)   Úp1copiesÚbasectx.p1copies0  ó   € Ø�|‰|˜A‰Ðr,   c                ó    • U R                   S   $ r‡   rî   r/   s    r)   Úp2copiesÚbasectx.p2copies3  rñ   r,   c                ó,   • [         R                   " XUS9$ )z>return a subrepo for the stored revision of path, never wdir())Úallowcreate©r   )r'   rÝ   rö   s      r)   ÚsubÚbasectx.sub6  s   € ä�Š˜t°{ÑCÐCr,   c                ó0   • [         R                  " XU5      $ r#   )r   Únullsubrepo)r'   rÝ   Úpctxs      r)   ÚnullsubÚbasectx.nullsub:  s   € Ü×"Ò" 4¨tÓ4Ð4r,   c                ó,   • [         R                   " XSS9$ )zMreturn a subrepo for the stored revision, or wdir if this is a wdir
context.
T)Ú	allowwdirr÷   rã   s     r)   Ú
workingsubÚbasectx.workingsub=  s   € ô �Š˜t°TÑ:Ð:r,   c                óª   • U R                   nU(       d  UR                  5       n[        R                  " UR                  UUUUUUR
                  U UUS9
$ )N)ÚauditorÚctxÚlistsubreposr¨   )r%   ÚgetcwdÚmatchmodr   ÚrootÚnofsauditor)	r'   ÚpatsÚincludeÚexcludeÚdefaultr  r¨   r©   Úrs	            r)   r   Úbasectx.matchC  sR   € ð �J‰JˆÞØ—(‘(“*ˆCÜ�~Š~Ø�F‰FØØØØØØ—M‘MØØ%Øñ
ð 	
r,   c
                óœ   • Uc  U R                  5       nUb  U R                  U   n[        R                  " U R                  UU UUUUUUUU	S9$ )z;Returns a diff generator for the given contexts and matcher)r   ÚchangesÚoptsÚ
losedatafnÚpathfnÚcopyÚcopysourcematchÚhunksfilterfn)rÌ   r%   r   rh   )
r'   Úctx2r   r  r  r  r  r  r  r  s
             r)   rh   Úbasectx.diff]  s^   € ð ‰<Ø—7‘7“9ˆDØÑØ—:‘:˜dÑ#ˆDÜ�zŠzØ�J‰JØØØØØØ!ØØØ+Ø'ñ
ð 	
r,   c                ó6   • U R                   R                  5       $ r#   )rM   Údirsr/   s    r)   r  Úbasectx.dirs|  s   € Ø�~‰~×"Ñ"Ó$Ð$r,   c                ó8   • U R                   R                  U5      $ r#   )rM   Úhasdir)r'   Údirs     r)   r  Úbasectx.hasdir  s   € Ø�~‰~×$Ñ$ SÓ)Ð)r,   c           
     ó¤  ^• U nU R                   U   nSn	[        U[        5      (       d  [        U[        5      (       a  Sn	X‡p‡U R                   R                  U5      nUR	                  Xr5      n[
        R                  " / / / / / / / 5      n
UR                  XzX#XE5      n
U	(       aD  [
        R                  " U
R                  U
R                  U
R                  / / / U
R                  5      n
U(       a—  [
        R                  " Xx5       H}  u  mn UR                  T5      n[        R                   " TU5      nUR                  UUUUUSS9nS H4  n[#        X¯5      [#        Xï5      nnUR%                  U4S jU 5       5        M6     M     U
R                  R'                  5         U
R                  R'                  5         U
R                  R'                  5         U
R(                  R'                  5         U
R*                  R'                  5         U
R,                  R'                  5         U
R                  R'                  5         U
$ ! [         a    Sn GN0f = f)a¤  return status of files between two nodes or node and working
directory.

If other is None, compare this node with working directory.

ctx1.status(ctx2) returns the status of change from ctx1 to ctx2

Returns a mercurial.scmutils.status object.

Data can be accessed using either tuple notation:

    (modified, added, removed, deleted, unknown, ignored, clean)

or direct attribute access:

    s.modified, s.added, ...
FTN)r   rf   rb   re   r  )rt   ru   rv   rd   re   rf   rb   c              3  ó2   >#   • U  H  nS TU4-  v •  M     g7f)s   %s/%sNrG   )Ú.0Úfr‰   s     €r)   Ú	<genexpr>Ú!basectx.status.<locals>.<genexpr>Û  s   øé € Ð!JÂ6¸a (¨g°q¨\Ö"9Â6ùs   ƒ)r%   Ú
isinstanceÚ	changectxÚnarrowmatchr_   r   r   r   rt   rv   ru   rb   ÚitersubreposrŠ   r×   r  ÚsubdirmatcherÚgetattrÚextendÚsortrd   re   rf   )r'   rC   r   ro   rp   rq   r  Úctx1r  Úreversedr  rø   Úrev2Úsubmatchrn   ÚkÚrfilesÚsfilesr‰   s                     @r)   r   Úbasectx.status‚  sç  ø€ ð6 ˆØ�z‰z˜%Ñ ˆð ˆÜ˜$¤	×*Ñ*¬z¸$Ä	×/JÑ/JØˆHØ�$à—
‘
×&Ñ& uÓ-ˆØ×!Ñ! $Ó.ˆÜ�NŠN˜2˜r 2 r¨2¨r°2Ó6ˆØ×ÑØ�U¨ó
ˆö ô —’Ø—
‘
˜AŸI™I q§w¡w°°B¸¸A¿G¹GóˆAö Ü '× 4Ò 4°TÖ @‘�˜ð ØŸ;™; wÓ/�Dô $×1Ò1°'¸5ÓA�Ø—J‘JØØ"Ø'Ø#Ø'Ø!%ð ð �ó�Aô &-¨Q£]´G¸A³M˜F�FØ—M‘MÔ!JÁ6Ó!JÖJóñ# !Að: 	
�
‰
�‰ÔØ	�‰�‰ŒØ	�	‰	�‰ÔØ	�	‰	�‰ÔØ	�	‰	�‰ÔØ	�	‰	�‰ÔØ	�‰�‰ŒàˆøôE  ó  ð  “Dð	 ús   ÄH?È?IÉIc                ó2   • [        SU R                  -  5      e)z)Get a mergestate object for this context.z"%s does not implement mergestate())ÚNotImplementedErrorÚ	__class__©r'   rb   s     r)   r   Úbasectx.mergestateç  s   € ä!Ø0°4·>±>ÑAó
ð 	
r,   c                ó  • [        U R                  5       5      S:„  =(       d]    U R                  5       U R                  5       R                  5       :g  =(       d'    U R	                  5       =(       d    U R                  5       (       + $ r‡   )rÐ   rÈ   ÚbranchrÌ   ÚclosesbranchrÙ   r/   s    r)   ÚisemptyÚbasectx.isemptyí  sb   € ä�—‘“Ó !Ñ#÷ Ø�{‰{‹} §¡£	× 0Ñ 0Ó 2Ñ2÷à× Ñ Ó"÷ð �z‰z‹|ô	
ð 	
r,   r$   ©Úreturnzistatus.Statusr#   ©T©NNNs   globFNN)	NNNNNNNNN)NNFFFF©F):r9   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r*   r0   r
   Ú	strmethodÚ__str__r;   rD   rH   rP   rT   rX   r\   r_   r   Úpropertycacher„   rŠ   rc   r.   r   r[   rš   r(   r¡   r¥   r«   r   r³   r·   rº   r½   rÀ   rÃ   rÈ   rÌ   rÑ   rà   rä   rÚ   rë   rï   ró   rø   rý   r  r   rh   r  r  r   r   r@  Ú__static_attributes__rG   r,   r)   r    r    6   sŽ  † ñòò"ð × Ò  Ó+€Gò<òò#ò%ò!ò$òòð@
à	ô@
ðD ñ6ó ð6ò)òòò òò!òò/ò,ô;òEòDòCòKòMòQò
ò"ò ò#òò6'òð ñ5ó ð5òòôDò5ò;ð ØØØØØØô
ð8 ØØØØØØØØô
ò>%ò*ð
 ØØØØØðcð 
õcôJ
õ
r,   r    c                  óJ  ^ • \ rS rSrSrS'U 4S jjrS rS r\r\	S 5       r
\	S 5       r\S 5       r\	S	 5       r\	S
 5       rS rS rS rS rS rS rS rS r\	U 4S j5       rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S  r%S(S! jr&S)S" jr'S# r(S$ r)S% r*S&r+U =r,$ )*r)  iö  z˜A changecontext object makes access to data related to a particular
changeset convenient. It represents a read-only context already present in
the repo.c                óH   >• [         TU ]  U5        X l        X0l        X@l        g r#   )Úsuperr*   r@   r�   Ú_maybe_filtered)r'   r(   rc   r.   Úmaybe_filteredr:  s        €r)   r*   Úchangectx.__init__û  s"   ø€ Ü‰Ñ˜ÔØŒ	ØŒ
ð  .Õr,   c                ód   •  [        U R                  5      $ ! [         a    [        U 5      s $ f = fr#   )Úhashr@   rA   Úidr/   s    r)   Ú__hash__Úchangectx.__hash__  s-   € ð	Ü˜Ÿ	™	“?Ð"øÜó 	Ü�d“8ŠOð	ús   ‚ —/®/c                ó(   • U R                   [        :g  $ r#   )r@   r   r/   s    r)   Ú__nonzero__Úchangectx.__nonzero__  s   € Ø�y‰yœGÑ#Ð#r,   c                óÄ   • U R                   (       a  U R                  nOU R                  R                  5       nUR                  R	                  U R                  5       5      $ r#   )rR  r%   Ú
unfilteredÚ	changelogÚchangelogrevisionrc   r&   s     r)   rÜ   Úchangectx._changeset  sA   € à××Ø—:‘:‰Dà—:‘:×(Ñ(Ó*ˆDØ�~‰~×/Ñ/°·±³
Ó;Ð;r,   c                ó6   • U R                   R                  5       $ r#   )r™   Úreadr/   s    r)   rM   Úchangectx._manifest  s   € à× Ñ ×%Ñ%Ó'Ð'r,   c                ó\   • U R                   R                  U R                  R                     $ r#   )r%   rÛ   rÜ   r[   r/   s    r)   r™   Úchangectx._manifestctx  s!   € à�z‰z×%Ñ% d§o¡o×&>Ñ&>Ñ?Ð?r,   c                óP   • U R                   R                  5       u  pUc  X l        U$ r#   )r™   Úread_any_fast_deltarM   )r'   ÚbaseÚdeltas      r)   rÔ   Úchangectx._manifestdelta"  s'   € à×'Ñ'×;Ñ;Ó=‰ˆØ‰<Ø"ŒNØˆr,   c                óv  • U R                   nU R                  (       a  UR                  nOUR                  5       R                  nUR	                  U R
                  5      u  p4U[        :X  a  [        XUR                  U5      SS9/$ [        XUR                  U5      SS9[        XUR                  U5      SS9/$ )NF©rS  )	r%   rR  r_  r^  Ú
parentrevsr@   r   r)  r.   )r'   r(   ÚclrÌ   rÑ   s        r)   rÇ   Úchangectx._parents)  s–   € à�z‰zˆØ××Ø—‘‰Bà—‘Ó"×,Ñ,ˆBà—‘˜tŸy™yÓ)‰ˆØ”‹=Ü˜d¨¯©°«ÀEÑJÐKÐKä�d §¡¨£¸EÑBÜ�d §¡¨£¸EÑBð
ð 	
r,   c                ó¢   • U R                   nUR                  UR                  UR                  UR                  UR
                  UR                  4$ r#   )rÜ   r[   ÚuserÚdaterÙ   ÚdescriptionÚextra)r'   Úcs     r)   Ú	changesetÚchangectx.changeset9  s?   € Ø�O‰Oˆà�J‰JØ�F‰FØ�F‰FØ�G‰GØ�M‰MØ�G‰Gð
ð 	
r,   c                ó.   • U R                   R                  $ r#   )rÜ   r[   r/   s    r)   ÚmanifestnodeÚchangectx.manifestnodeD  s   € Ø�‰×'Ñ'Ð'r,   c                ó.   • U R                   R                  $ r#   )rÜ   rr  r/   s    r)   rr  Úchangectx.userG  ó   € Ø�‰×#Ñ#Ð#r,   c                ó.   • U R                   R                  $ r#   )rÜ   rs  r/   s    r)   rs  Úchangectx.dateJ  r~  r,   c                ó.   • U R                   R                  $ r#   )rÜ   rÙ   r/   s    r)   rÙ   Úchangectx.filesM  s   € Ø�‰×$Ñ$Ð$r,   c                óÆ   • [        U R                  5       5      nUR                  U R                  5       5        UR                  U R	                  5       5        [        U5      $ r#   )rg   rÙ   Údifference_updateÚ
filesaddedÚfilesremovedÚsorted)r'   rt   s     r)   ÚfilesmodifiedÚchangectx.filesmodifiedP  sI   € Ü�t—z‘z“|Ó$ˆØ×"Ñ" 4§?¡?Ó#4Ô5Ø×"Ñ" 4×#4Ñ#4Ó#6Ô7Ü�hÓÐr,   c                ó&  • U R                   R                  nSnU R                  R                  S:X  a  SnO7U R                  R                  R                  SS5      nUS:X  a  SnOUS:w  a  S nUc!  U(       a  [        R                  " U 5      nU$ / nU$ ©NTs   changeset-sidedataFó   experimentals   copies.read-froms   changeset-onlys   compatibility)rÜ   r…  r%   Úfilecopiesmoderƒ   Úconfigr   Úcomputechangesetfilesadded)r'   r…  Úcompute_on_noneÚsources       r)   r…  Úchangectx.filesaddedV  s“   € Ø—_‘_×/Ñ/ˆ
ØˆØ�:‰:×$Ñ$Ð(=Ó=Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFØÐ*Ó*Ø"'‘ØÐ+Ó+à!�
ØÑÞÜ%×@Ò@ÀÓF�
ð Ðð  �
ØÐr,   c                ó&  • U R                   R                  nSnU R                  R                  S:X  a  SnO7U R                  R                  R                  SS5      nUS:X  a  SnOUS:w  a  S nUc!  U(       a  [        R                  " U 5      nU$ / nU$ r‹  )rÜ   r†  r%   r�  rƒ   rŽ  r   Úcomputechangesetfilesremoved)r'   r†  r�  r‘  s       r)   r†  Úchangectx.filesremovedi  s“   € Ø—‘×3Ñ3ˆØˆØ�:‰:×$Ñ$Ð(=Ó=Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFØÐ*Ó*Ø"'‘ØÐ+Ó+à#�ØÑÞÜ'×DÒDÀTÓJ�ð Ðð  "�ØÐr,   c                óR  >• U R                   R                  nU R                   R                  nSnU R                  R                  S:X  a  SnO8U R                  R
                  R                  SS5      nUS:X  a  SnO	US:w  a  S =pUc  U(       a  [        TU ]   u  pOUc  0 nUc  0 nX4$ r‹  )	rÜ   rï   ró   r%   r�  rƒ   rŽ  rQ  rë   )r'   rï   ró   r�  r‘  r:  s        €r)   rë   Úchangectx._copies|  s°   ø€ à—?‘?×+Ñ+ˆØ—?‘?×+Ñ+ˆØˆØ�:‰:×$Ñ$Ð(=Ó=Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFð Ð*Ó*Ø"'‘ØÐ+Ó+à&*Ð*�ØÑÞÜ%*¡W¡_Ñ"�˜(àÑ#Ø!�HØÑØˆHØÐ!Ð!r,   c                ó.   • U R                   R                  $ r#   )rÜ   rt  r/   s    r)   rt  Úchangectx.descriptionŸ  s   € Ø�‰×*Ñ*Ð*r,   c                ót   • [         R                  " U R                  R                  R	                  S5      5      $ ©Nó   branch)r
   ÚtolocalrÜ   ru  Úgetr/   s    r)   r>  Úchangectx.branch¢  s(   € Ü×Ò §¡× 5Ñ 5× 9Ñ 9¸)Ó DÓEÐEr,   c                ó4   • SU R                   R                  ;   $ ©Ns   close©rÜ   ru  r/   s    r)   r?  Úchangectx.closesbranch¥  s   € Ø˜4Ÿ?™?×0Ñ0Ñ0Ð0r,   c                ó.   • U R                   R                  $ )z#Return a dict of extra information.r¢  r/   s    r)   ru  Úchangectx.extra¨  s   € à�‰×$Ñ$Ð$r,   c                óL   • U R                   R                  U R                  5      $ )zReturn a list of byte tag names)r%   Únodetagsr�   r/   s    r)   ÚtagsÚchangectx.tags¬  s   € à�z‰z×"Ñ" 4§:¡:Ó.Ð.r,   c                óL   • U R                   R                  U R                  5      $ )z%Return a list of byte bookmark names.)r%   Únodebookmarksr�   r/   s    r)   Ú	bookmarksÚchangectx.bookmarks°  s   € à�z‰z×'Ñ'¨¯
©
Ó3Ð3r,   c                óÀ   • U R                   nU R                  (       a  UR                  nOUR                  5       R                  nUR	                  U R
                  5      $ r#   )r%   rR  r_  r^  Ú	fast_rankr@   )r'   r(   ro  s      r)   r¯  Úchangectx.fast_rank´  sB   € Ø�z‰zˆØ××Ø—‘‰Bà—‘Ó"×,Ñ,ˆBØ�|‰|˜DŸI™IÓ&Ð&r,   c                óv   • U R                   R                  R                  U R                   U R                  5      $ r#   )r%   Ú_phasecacher    r@   r/   s    r)   r    Úchangectx.phase¼  s'   € Ø�z‰z×%Ñ%×+Ñ+¨D¯J©J¸¿	¹	ÓBÐBr,   c                ó^   • U R                   [        R                  " U R                  S5      ;   $ )Ns   visible)r@   r   Ú
filterrevsr%   r/   s    r)   ÚhiddenÚchangectx.hidden¿  s"   € Ø�y‰yœH×/Ò/°·
±
¸JÓGÑGÐGr,   c                ó   • gr?   rG   r/   s    r)   Ú
isinmemoryÚchangectx.isinmemoryÂ  ó   € Ør,   c                ó¨   • U R                   R                  R                  U R                  5      nU Vs/ s H  o R                   U   PM     sn$ s  snf )zŸreturn list of changectx contexts for each child changeset.

This returns only the immediate child changesets. Use descendants() to
recursively walk children.
)r%   r_  Úchildrenr�   ©r'   rv  Úxs      r)   r½  Úchangectx.childrenÅ  s@   € ð �J‰J× Ñ ×)Ñ)¨$¯*©*Ó5ˆÙ'(Ó)¢q !—
‘
˜1”¡qÑ)Ð)ùÒ)s   ´Ac              #  óœ   #   • U R                   R                  R                  U R                  /5       H  nU R                   U   v •  M     g 7fr#   )r%   r_  Ú	ancestorsr@   )r'   Úas     r)   rÂ  Úchangectx.ancestorsÎ  s8   é € Ø—‘×%Ñ%×/Ñ/°·±°Ö<ˆAØ—*‘*˜Q‘-Ôò =ùó   ‚A
Ac              #  óœ   #   • U R                   R                  R                  U R                  /5       H  nU R                   U   v •  M     g7f)zbRecursively yield all children of the changeset.

For just the immediate children, use children()
N)r%   r_  Údescendantsr@   )r'   rx   s     r)   rÇ  Úchangectx.descendantsÒ  s:   é € ð
 —‘×%Ñ%×1Ñ1°4·9±9°+Ö>ˆAØ—*‘*˜Q‘-Ôò ?ùrÅ  c                óT   • Uc  U R                  U5      n[        U R                  XXS9$ )z&get a file context from this changeset)Úfileidr)  Úfilelog)rä   rS   r%   )r'   rÝ   rÊ  rË  s       r)   rS   Úchangectx.filectxÚ  s-   € à‰>Ø—]‘] 4Ó(ˆFÜØ�J‰J˜°tñ
ð 	
r,   c           	     óÀ  ^• UR                   nUc  UR                  S   R                   nU R                  R                  R	                  U R                   U5      nU(       d"  U R                  R
                  R                  mGO2[        U5      S:X  a  US   mGOU R                  R                  R                  SS5       H=  n [        R                  " U R                  U5      nUR                  5       mTU;   d  M=    O2   U R                  R                  R                  U R                   U5      mU(       a~  U R                  R                  R!                  [#        S5      [%        T5      [%        U R                   5      [%        U5      4-  SR'                  U4S j[)        U5       5       5      -   5        U R                  T   $ ! [        R                   a     GM  f = f)zÄreturn the "best" ancestor context of self and c2

If there are multiple candidates, it will show a message and check
merge.preferancestor configuration before falling back to the
revlog ancestor.r   r   s   merges   preferancestors(   note: using %s as ancestor of %s and %s
r,   c              3  ób   >#   • U  H$  nUT:w  d  M  [        S 5      [        U5      -  v •  M&     g7f)s:         alternatively, use --config merge.preferancestor=%s
N)r   r   )r$  ÚnÚancs     €r)   r&  Ú%changectx.ancestor.<locals>.<genexpr>  s=   øé € ð ò ".˜AØ ™8ó#œð9óô   ›(ö	#ò
 ".ùs   ƒ
/‘/)r�   rÇ   r%   r_  Úcommonancestorsheadsrk   ÚnullidrÐ   rƒ   Ú
configlistr   Ú	revsymbolr   ÚRepoLookupErrorr.   Úancestorr   r   r   Újoinr‡  )r'   Úc2ÚwarnÚn2Úcahsr  r  rÐ  s          @r)   r×  Úchangectx.ancestorâ  s|  ø€ ð �X‰XˆØ‰:Ø—‘˜Q‘×%Ñ%ˆBØ�z‰z×#Ñ#×8Ñ8¸¿¹ÀRÓHˆÞØ—*‘*×*Ñ*×1Ñ1ŠCÜ�‹Y˜!‹^Ø�q‘'ŠCð —Z‘Z—]‘]×-Ñ-¨hÐ8IÖJ�ðÜ!×+Ò+¨D¯J©J¸Ó:�Cð —h‘h“j�Ø˜$•;Ùñ Kð —j‘j×*Ñ*×3Ñ3°D·J±JÀÓC�ÞØ—
‘
—‘×$Ñ$äÐFÓGÜ  ›:¤u¨T¯Z©ZÓ'8¼%À»)ÐDñEð —h‘hô ô "(¨¤óó ñ	ôð �z‰z˜#‰Ðøô/ ×,Ñ,ó Ûðús   Ã!GÇGÇGc                óv   • U R                   R                  R                  U R                  UR                  5      $ )z.True if this changeset is an ancestor of other)r%   r_  Úisancestorrevr@   rB   s     r)   ÚisancestorofÚchangectx.isancestorof  s'   € à�z‰z×#Ñ#×1Ñ1°$·)±)¸U¿Z¹ZÓHÐHr,   c                óª   ^ ^• UU 4S jn[         R                  " T R                  R                  T5      U5      nT R                  R                  U5      $ )úGenerates matching file names.c                óŽ   >^ • [        U 4S jTR                   5       5      (       a  g TR                  T [        S5      T-  5        g )Nc              3  ód   >#   • U  H%  nTU:H  =(       d    TR                  US -   5      v •  M'     g7f)ó   /N)Ú
startswith)r$  rn   ry   s     €r)   r&  Ú.changectx.walk.<locals>.bad.<locals>.<genexpr>  s*   øé € ÐMº}¸!�2˜‘7×5˜bŸm™m¨A°©HÓ5Ô5º}ùs   ƒ-0s   no such file in rev %s)Úanyr„   Úbadr   )ry   Úmsgr   r'   s   ` €€r)   rê  Úchangectx.walk.<locals>.bad  s6   ù€ ô ÔM¸t¿}º}ÓM×MÑMØØ�I‰I�bœ!Ð5Ó6¸Ñ=Õ>r,   )r  Úbadmatchr%   r*  rM   Úwalk)r'   r   rê  Úms   ``  r)   rî  Úchangectx.walk  s@   ù€ ö	?ô ×Ò˜dŸj™j×4Ñ4°UÓ;¸SÓAˆØ�~‰~×"Ñ" 1Ó%Ð%r,   c                ó$   • U R                  U5      $ r#   )rî  ©r'   r   s     r)   ÚmatchesÚchangectx.matches!  s   € Ø�y‰y˜ÓÐr,   )rM   rR  r�   r@   rD  ©NNrF  )-r9   rG  rH  rI  rJ  r*   rX  r[  Ú__bool__rM  rÜ   rM   Úpropertyr™   rÔ   rÇ   rw  rz  rr  rs  rÙ   rˆ  r…  r†  rë   rt  r>  r?  ru  r¨  r¬  r¯  r    r¶  r¹  r½  rÂ  rÇ  rS   r×  rà  rî  ró  rN  Ú__classcell__©r:  s   @r)   r)  r)  ö  s#  ø† ñ÷
.òò$ð €Hàñ<ó ð<ð ñ(ó ð(ð ñ@ó ð@ð ñó ðð ñ
ó ð
ò	
ò(ò$ò$ò%ò òò&ð& ô "ó ð "òD+òFò1ò%ò/ò4ò'òCòHòò*ò ò ô
ô+òZIò&÷ ð  r,   r)  c                  óÔ  • \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
S r\rS	 r\R                  " \5      rS
 rS rS rS rS rS r\S 5       rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S  r'S! r(S" r)S# r*S$ r+S% r,S& r-S' r.S( r/S) r0S* r1S+ r2S,r3S- r4S<S/ jr5S0 r6S1 r7S=S2 jr8S3 r9S4 r:S5 r;S6 r<S7 r=S>S8 jr>S?S9 jr?S: r@S;rAg.)@Úbasefilectxi%  a8  A filecontext object represents the common logic for its children:
filectx: read-only access to a filerevision that is already present
         in the repo,
workingfilectx: a filecontext that represents files from the working
                directory,
memfilectx: a filecontext that represents files in-memory,
c                óL   • U R                   R                  U R                  5      $ r#   )r%   ÚfileÚ_pathr/   s    r)   Ú_filelogÚbasefilectx._filelog.  s   € à�z‰z�‰˜tŸz™zÓ*Ð*r,   c                óö   • SU R                   ;   a  U R                  R                  5       $ SU R                   ;   a  U R                  U R                  5      $ U R
                  R                  U R                  5      $ )NÚ
_changectxÚ_descendantrev)rÕ   r  rc   Ú_adjustlinkrevr  rÿ  ÚlinkrevÚ_filerevr/   s    r)   Ú	_changeidÚbasefilectx._changeid2  s_   € à˜4Ÿ=™=Ó(Ø—?‘?×&Ñ&Ó(Ð(Ø §¡Ó.ð ×&Ñ& t×':Ñ':Ó;Ð;à—=‘=×(Ñ(¨¯©Ó7Ð7r,   c                ó¶   • SU R                   ;   a%  U R                  R                  U R                  5      $ U R                  R                  U R                  5      $ )NÚ_fileid)rÕ   rÿ  Úlookupr
  r  rä   rþ  r/   s    r)   Ú	_filenodeÚbasefilectx._filenode=  s@   € à˜Ÿ™Ó%Ø—=‘=×'Ñ'¨¯©Ó5Ð5à—?‘?×+Ñ+¨D¯J©JÓ7Ð7r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÿ  rc   r  r/   s    r)   r  Úbasefilectx._filerevD  s   € à�}‰}× Ñ  §¡Ó0Ð0r,   c                ó   • U R                   $ r#   ©rþ  r/   s    r)   Ú	_repopathÚbasefilectx._repopathH  s   € à�z‰zÐr,   c                óR   •  U R                     g! [        R                   a     gf = f©NTF)r  r   rç   r/   s    r)   r[  Úbasefilectx.__nonzero__L  s)   € ð	Ø�NŠNØøÜ× Ñ ó 	áð	ús   ‚ �&¥&c                óœ   •  SU R                  5       U R                  4-  $ ! [        R                   a    SU R                  5       -  s $ f = f)Ns   %s@%ss   %s@???)rÝ   r  r   rç   r/   s    r)   r0   Úbasefilectx.__bytes__V  sG   € ð	+Ø˜tŸy™y›{¨D¯O©OÐ<Ñ<Ð<øÜ× Ñ ó 	+Ø˜tŸy™y›{Ñ*Ò*ð	+ús   ‚! ¡'AÁ
Ac                óP   • S[        U 5      R                  < S[        U 5      < S3$ r3   r7   r/   s    r)   r;   Úbasefilectx.__repr__^  r=   r,   c                ó|   •  [        U R                  U R                  45      $ ! [         a    [	        U 5      s $ f = fr#   )rV  rþ  r  rA   rW  r/   s    r)   rX  Úbasefilectx.__hash__a  s7   € ð	Ü˜Ÿ™ T§^¡^Ð4Ó5Ð5øÜó 	Ü�d“8ŠOð	ús   ‚ # £;º;c                óÒ   •  [        U 5      [        U5      :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ ! [         a     gf = fr?   )r8   rþ  r  rA   rB   s     r)   rD   Úbasefilectx.__eq__g  sZ   € ð	ä�T“
œd 5›kÑ)÷ 6Ø—J‘J %§+¡+Ñ-÷6à—N‘N e§o¡oÑ5ðøô
 ó 	Ùð	ús   ‚AA Á
A&Á%A&c                ó   • X:X  + $ r#   rG   rB   s     r)   rH   Úbasefilectx.__ne__q  rJ   r,   c                ó   • U R                   $ r#   )r  r/   s    r)   ÚfilerevÚbasefilectx.filerevt  ó   € Ø�}‰}Ðr,   c                ó   • U R                   $ r#   )r  r/   s    r)   rä   Úbasefilectx.filenodew  r—   r,   c                óL   • U R                   R                  U R                  5      $ r#   )r  rÚ   rþ  r/   s    r)   Ú_flagsÚbasefilectx._flagsz  s   € à�‰×$Ñ$ T§Z¡ZÓ0Ð0r,   c                ó   • U R                   $ r#   )r(  r/   s    r)   rÚ   Úbasefilectx.flags~  ó   € Ø�{‰{Ðr,   c                ó   • U R                   $ r#   )rÿ  r/   s    r)   rË  Úbasefilectx.filelog�  r$  r,   c                ó   • U R                   $ r#   ©r  r/   s    r)   rc   Úbasefilectx.rev„  r—   r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÿ  r  r  r/   s    r)   r  Úbasefilectx.linkrev‡  s   € Ø�}‰}×$Ñ$ T§]¡]Ó3Ð3r,   c                ó6   • U R                   R                  5       $ r#   )r  r.   r/   s    r)   r.   Úbasefilectx.nodeŠ  ó   € Ø�‰×#Ñ#Ó%Ð%r,   c                ó6   • U R                   R                  5       $ r#   )r  r   r/   s    r)   r   Úbasefilectx.hex�  s   € Ø�‰×"Ñ"Ó$Ð$r,   c                ó6   • U R                   R                  5       $ r#   )r  rr  r/   s    r)   rr  Úbasefilectx.user�  r6  r,   c                ó6   • U R                   R                  5       $ r#   )r  rs  r/   s    r)   rs  Úbasefilectx.date“  r6  r,   c                ó6   • U R                   R                  5       $ r#   )r  rÙ   r/   s    r)   rÙ   Úbasefilectx.files–  ó   € Ø�‰×$Ñ$Ó&Ð&r,   c                ó6   • U R                   R                  5       $ r#   )r  rt  r/   s    r)   rt  Úbasefilectx.description™  s   € Ø�‰×*Ñ*Ó,Ð,r,   c                ó6   • U R                   R                  5       $ r#   )r  r>  r/   s    r)   r>  Úbasefilectx.branchœ  s   € Ø�‰×%Ñ%Ó'Ð'r,   c                ó6   • U R                   R                  5       $ r#   )r  ru  r/   s    r)   ru  Úbasefilectx.extraŸ  r?  r,   c                ó6   • U R                   R                  5       $ r#   )r  r    r/   s    r)   r    Úbasefilectx.phase¢  r?  r,   c                ó6   • U R                   R                  5       $ r#   )r  r¡   r/   s    r)   r¡   Úbasefilectx.phasestr¥  ó   € Ø�‰×'Ñ'Ó)Ð)r,   c                ó6   • U R                   R                  5       $ r#   )r  r   r/   s    r)   r   Úbasefilectx.obsolete¨  rJ  r,   c                ó6   • U R                   R                  5       $ r#   )r  rÃ   r/   s    r)   rÃ   Úbasefilectx.instabilities«  s   € Ø�‰×,Ñ,Ó.Ð.r,   c                ó6   • U R                   R                  5       $ r#   )r  r[   r/   s    r)   r[   Úbasefilectx.manifest®  rJ  r,   c                ó   • U R                   $ r#   )r  r/   s    r)   r)  Úbasefilectx.changectx±  s   € Ø�‰Ðr,   c                ó   • U R                   $ r#   ©Ú_copiedr/   s    r)   ÚrenamedÚbasefilectx.renamed´  ó   € Ø�|‰|Ðr,   c                óF   • U R                   =(       a    U R                   S   $ rË   rT  r/   s    r)   Ú
copysourceÚbasefilectx.copysource·  s   € Ø�|‰|×/ §¡¨Q¡Ð/r,   c                ó   • U R                   $ r#   r$   r/   s    r)   r(   Úbasefilectx.repoº  r‘   r,   c                ó4   • [        U R                  5       5      $ r#   )rÐ   Údatar/   s    r)   ÚsizeÚbasefilectx.size½  r”   r,   c                ó   • U R                   $ r#   r  r/   s    r)   rÝ   Úbasefilectx.pathÀ  r‘   r,   c                ól   •  [         R                  " U R                  5       5      $ ! [         a     gf = fr?   )r   Úbinaryr_  ÚOSErrorr/   s    r)   ÚisbinaryÚbasefilectx.isbinaryÃ  s0   € ð	Ü×$Ò$ T§Y¡Y£[Ó1Ð1øÜó 	Ùð	ús   ‚#& ¦
3²3c                ó(   • SU R                  5       ;   $ )Nó   x©rÚ   r/   s    r)   ÚisexecÚbasefilectx.isexecÉ  ó   € Ø�t—z‘z“|Ñ#Ð#r,   c                ó(   • SU R                  5       ;   $ ©Nó   lrk  r/   s    r)   ÚislinkÚbasefilectx.islinkÌ  rn  r,   c                ó   • g)zºwhether this filectx represents a file not in self._changectx

This is mainly for merge code to detect change/delete conflicts. This is
expected to be True for all subclasses of basectx.FrG   r/   s    r)   ÚisabsentÚbasefilectx.isabsentÏ  s   € ð
 r,   Fc                óÌ  • UR                   (       a  UR                  U 5      $ U R                  c  [        R                  " S5      eUR                  c¨  U R
                  R                  (       a4  U R                  R                  U R                  UR                  5       5      $ U R                  5       S-
  UR                  5       :X  a4  U R                  R                  U R                  UR                  5       5      $ U R                  5       UR                  5       :X  d  U R                  5       S:X  a4  U R                  R                  U R                  UR                  5       5      $ g)úFcompare with other file context

returns True if different than fctx.
s;   filectx.cmp() must be reimplemented if not backed by revlogé   rq  T)Ú
_customcmprm   r  r   ÚProgrammingErrorr%   Ú_encodefilterpatsrÿ  r_  r`  rÚ   ©r'   Úfctxs     r)   rm   Úbasefilectx.cmpØ  sù   € ð
 �?�?Ø—8‘8˜D“>Ð!à�>‰>Ñ!Ü×(Ò(ØNóð ð �>‰>Ñ!Ø�z‰z×+×+à—}‘}×(Ñ(¨¯©¸¿¹»ÓEÐEð �y‰y‹{˜Q‰ $§)¡)£+Ó-ð —}‘}×(Ñ(¨¯©¸¿¹»ÓEÐEØ�9‰9‹;˜$Ÿ)™)›+Ó%¨¯©«¸Ó)=ð —=‘=×$Ñ$ T§^¡^°T·Y±Y³[ÓAÐAð r,   Nc                ó€  • U R                   nUR                  5       R                  nUR                  nU R	                  5       nX:X  a  U$ [        U SS5      nSn	Uc=  U R                   S   R                  5        V
s/ s H  oªR                  5       PM     nn
SnOU/nUc  UR                  X·US9=p‰Xx;  a„  U	c  UR                  X·US9n	U R                  nU R                  nU	 HS  nUb  Xã:  a    gUR                  U5      nXßS   ;   d  M(  UXoS      R                  SS9R                  U5      :X  d  MQ  Us  $    U$ s  sn
f )	a,  return the first ancestor of <srcrev> introducing <fnode>

If the linkrev of the file revision does not point to an ancestor of
srcrev, we'll walk down the ancestors until we find one introducing
this file revision.

:srcrev: the changeset revision we search ancestors from
:inclusive: if true, the src revision will also be checked
:stoprev: an optional revision to stop the walk at. If no introduction
          of this file content could be found before this floor
          revision, the function will returns "None" and stops its
          iteration.
Ú_ancestrycontextNT©Ú	inclusiveé   r   F)Úexact)r%   r^  r_  rÛ   r  r-  rÈ   rc   rÂ  r  rþ  rc  Úread_delta_parentsrž  )r'   Úsrcrevrƒ  Ústoprevr(   ro  rÞ   ÚlkrÚ	memberancÚiterancÚpÚrevsÚfnoderÝ   rÃ  Úacs                   r)   r  Úbasefilectx._adjustlinkrev  sG  € ð �z‰zˆØ�_‰_Ó×(Ñ(ˆØ×Ñˆà�l‰l‹nˆØ‹=ØˆJä˜DÐ"4°dÓ;ˆ	ØˆØ‰>à%)§Z¡Z°Ñ%5×%=Ñ%=Ô%?Ó@Ò%? —E‘E–GÑ%?ˆDÐ@Ø‰Ià�8ˆDØÑØ"$§,¡,¨tÀI ,Ð"NÐNˆIàÓØ‰ØŸ,™, t¸I˜,ÐF�Ø—N‘NˆEØ—:‘:ˆDÛ�ØÑ&¨1«;ÙØ—W‘W˜Q“Z�Ø˜a™5•=ð Ø˜q™E™
×5Ñ5¸EÐ5ÐB×FÑFÀtÓLõð  !šñ ð$ ˆ
ùò= As   Á;D;c                óZ   • U R                  5       U:¼  a  gU R                  US9nUc  gX!:¬  $ )zBTrue if a filectx has been introduced after a given floor revisionT©rˆ  F)r  Ú	_introrev)r'   ÚchangelogrevÚintrorevs      r)   ÚisintroducedafterÚbasefilectx.isintroducedafter;  s5   € à�<‰<‹>˜\Ó)ØØ—>‘>¨,�>Ð7ˆØÑØØÑ'Ð'r,   c                ó"   • U R                  5       $ )aO  return the rev of the changeset which introduced this file revision

This method is different from linkrev because it take into account the
changeset the filectx was created from. It ensures the returned
revision is one of its ancestors. This prevents bugs from
'linkrev-shadowing' when a file revision is used by multiple
changesets.
)r“  r/   s    r)   r•  Úbasefilectx.introrevD  s   € ð �~‰~ÓÐr,   c                ó   • Sn[        U 5      nSU;   a  U R                  nO SU;   a  U R                  R                  5       nUb  U R	                  USUS9$ SU;   a%  U R	                  U R
                  US9nUb  X@l        U$ U R                  5       $ )a  
Same as `introrev` but, with an extra argument to limit changelog
iteration range in some internal usecase.

If `stoprev` is set, the `introrev` will not be searched past that
`stoprev` revision and "None" might be returned. This is useful to
limit the iteration range.
Nr  r  T)rƒ  rˆ  r  r’  )Úvarsr  r  rc   r  r  r  )r'   rˆ  ÚtoprevÚattrsr•  s        r)   r“  Úbasefilectx._introrevO  sš   € ð ˆÜ�T“
ˆØ˜%Óà—^‘^‰FØ˜UÓ"à—_‘_×(Ñ(Ó*ˆFàÑØ×&Ñ& v¸ÀwÐ&ÐOÐOØ Ó&Ø×*Ñ*¨4×+>Ñ+>ÈÐ*ÐPˆHàÑ#Ø!)”ØˆOà—<‘<“>Ð!r,   c                óŠ   • U R                  5       nU R                  5       U:X  a  U $ U R                  U R                  5       US9$ )zrReturn filectx having identical contents, but pointing to the
changeset revision where this filectx was introduced)Úchangeid)r•  rc   rS   rä   )r'   r•  s     r)   ÚintrofilectxÚbasefilectx.introfilectxl  s;   € ð —=‘=“?ˆØ�8‰8‹:˜Ó!ØˆKØ�|‰|˜DŸM™M›O°hˆ|Ð?Ð?r,   c                ó"  • [        U R                  XUS9nS[        U 5      ;   d  S[        U 5      ;   a)  U R                  5       Ul        [        U SS5      Ul        U$ S[        U 5      ;   a#  U R                  Ul        [        U SS5      Ul        U$ )z@create parent filectx keeping ancestry info for _adjustlinkrev()©rÊ  rË  r  r  r�  Nr  )rS   r%   r›  rc   r  r-  r�  )r'   rÝ   rÊ  rË  r~  s        r)   Ú_parentfilectxÚbasefilectx._parentfilectxt  s‡   € ä�t—z‘z 4ÀÑHˆØœ$˜t›*Ó$¨¼¸T»
Ó(Bð
 #'§(¡(£*ˆDÔÜ$+¨DÐ2DÀdÓ$KˆDÔ!ð
 ˆð	 ¤ d£Ó+à"&×"5Ñ"5ˆDÔÜ$+¨DÐ2DÀdÓ$KˆDÔ!Øˆr,   c           
     ó
  • U R                   nU R                  nU R                  R                  U R                  5      nU Vs/ s H,  nX@R                  R
                  R                  :w  d  M(  XU4PM.     nnUR                  U R                  5      nU(       a7  UR                  SUS   US   U R                  R                  US   5      45        U VVV	s/ s H  u  pxo�R                  XxU	5      PM     sn	nn$ s  snf s  sn	nnf ©Nr   r   )rþ  rÿ  rÈ   r  r%   rk   rÓ  rV  Úinsertrý  r¥  )
r'   rþ  ÚflrÈ   r.   Úplr  rÝ   rŽ  Úls
             r)   rÈ   Úbasefilectx.parents„  sá   € Ø—
‘
ˆØ�]‰]ˆØ—-‘-×'Ñ'¨¯©Ó7ˆñ  ó
â�Ø—z‘z×/Ñ/×6Ñ6Ñ6ó ˆU˜"ÓÙð 	ð 
ð �J‰J�t—~‘~Ó&ˆÞð �I‰I�a˜!˜A™$  !¡ d§j¡j§o¡o°a¸±dÓ&;Ð<Ô=áJLÕMÊ"¹¸ÀQ×#Ñ# D°Ö3É"ÓMÐMùò%
ùô$ Ns   Á'C9Á-C9ÃC>c                ó(   • U R                  5       S   $ rË   )rÈ   r/   s    r)   rÌ   Úbasefilectx.p1œ  s   € Ø�|‰|‹~˜aÑ Ð r,   c                óž   • U R                  5       n[        U5      S:X  a  US   $ [        U R                  U R                  SU R
                  S9$ )NrÏ   r   éÿÿÿÿr¤  )rÈ   rÐ   rS   r%   rþ  rÿ  )r'   rŒ  s     r)   rÑ   Úbasefilectx.p2Ÿ  s>   € Ø�L‰L‹NˆÜˆq‹6�Q‹;Ø�Q‘4ˆKÜ�t—z‘z 4§:¡:°bÀ$Ç-Á-ÑPÐPr,   c                óè  ^ ^^	• [         R                  " U 4S j5      m	UU	4S jnT R                  5       n[        USS5      c—  T R                  R                  5       R                  nT R                  5       c=  UR                  T R                  5        Vs/ s H  owR                  5       PM     snSS9nOUR                  T R                  5       /SS9nX…l
        [        R                  " XTX#S9$ s  snf )a  Returns a list of annotateline objects for each line in the file

- line.fctx is the filectx of the node where that line was last changed
- line.lineno is the line number at the first appearance in the managed
  file
- line.text is the data on that line (including newline character)
c                ó:   >• TR                   R                  U 5      $ r#   )r%   rý  )r¿  r'   s    €r)   Ú<lambda>Ú&basefilectx.annotate.<locals>.<lambda>­  s   ø€ ¨T¯Z©Z¯_©_¸QÔ-?r,   c                ó.  >• U R                     U R                  5       nT(       d5  U Vs/ s H(  o"R                  5       U R                  5       :X  d  M&  UPM*     nnU H0  nSUR                  ;  d  M  T" UR                  5       5      Ul        M2     U$ s  snf )Nrÿ  )r  rÈ   rÝ   rÕ   rÿ  )r%  r«  rŒ  ÚfollowÚgetlogs      €€r)   rÈ   Ú%basefilectx.annotate.<locals>.parents¯  sw   ø€ ð
 �KŠKØ—‘“ˆBö Ù!#Ó<¢˜A§v¡v£x°1·6±6³8Ñ';—a¡�Ð<ó �Ø! Q§Z¡ZÕ/Ù!'¨¯©«Ó!1�A–Jñ ð ˆIùò =s   ©%BÁBr�  NTr‚  )ÚskiprevsÚdiffopts)r   Úlrucachefuncr¡  r-  r%   r^  r_  rc   rÂ  rÈ   r�  r	   Úannotate)
r'   r¸  r»  r¼  rÈ   ri  ro  rŒ  r�  r¹  s
   ``       @r)   r¾  Úbasefilectx.annotate¥  sÓ   ú€ ô ×"Ò"Ô#?Ó@ˆö	ð* × Ñ Ó"ˆÜ�4Ð+¨TÓ2Ñ:ð —‘×&Ñ&Ó(×2Ñ2ˆBð �x‰x‹zÑ!ð —\‘\Ø&*§l¡l¤nÓ5¢n —U‘U–W¡nÑ5Àð "ð ‘ð —\‘\ 4§8¡8£: ,¸$�\Ð?�Ø$&Ô!ä�~Š~Ø Hñ
ð 	
ùò 6s   ÂC/c              #  óô   #   • 0 nU nU(       a  SnOS n UR                  5       S U  H%  nXRUR                  5       UR                  5       4'   M'     U(       d  g UR                  [	        U5      5      nUv •  Md  7fr‡   )rÈ   r  rä   ÚpopÚmax)r'   ÚfollowfirstÚvisitrv  ÚcutÚparents         r)   rÂ  Úbasefilectx.ancestorsÙ  ss   é € ØˆØˆÞØ‰CàˆCàØŸ)™)›+ d sÓ+�Ø?E�v—~‘~Ó'¨¯©Ó):Ð;Ó<ñ ,æØØ—	‘	œ#˜e›*Ó%ˆAØŠGñ ùs   ‚A6A8c                ór   • U R                   R                  U R                  5       U R                  5       5      $ )z‚Returns `data()` after running repository decoding filters.

This is often equivalent to how the data would be expressed on disk.
)r%   Ú
wwritedatarÝ   r_  r/   s    r)   ÚdecodeddataÚbasefilectx.decodeddataé  s'   € ð
 �z‰z×$Ñ$ T§Y¡Y£[°$·)±)³+Ó>Ð>r,   r0  )FNr#   )FNNrF  )Br9   rG  rH  rI  rJ  rM  rÿ  r  r  r  r  r[  rö  r0   r
   rK  rL  r;   rX  rD   rH   r"  rä   r(  rÚ   rË  rc   r  r.   r   rr  rs  rÙ   rt  r>  ru  r    r¡   r   rÃ   r[   r)  rV  rZ  r(   r`  rÝ   rg  rl  rr  ru  rz  rm   r  r–  r•  r“  r¡  r¥  rÈ   rÌ   rÑ   r¾  rÂ  rÊ  rN  rG   r,   r)   rû  rû  %  s•  † ñð ñ+ó ð+ð ñ8ó ð8ð ñ8ó ð8ð ñ1ó ð1ð ñó ðòð €Hò+ð × Ò  Ó+€Gò<òòò#òòð ñ1ó ð1òòòò4ò&ò%ò&ò&ò'ò-ò(ò'ò'ò*ò*ò/ò*òòò0òò òòò$ò$òð €Jò'ôR8òt(ò	 ô"ò:@òò Nò0!òQô2
ôhõ ?r,   rû  c                  ór   • \ rS rSrSr    SS jr\S 5       rSS jrS r	S r
S	 rS
 r\S 5       rS rSrg)rS   iñ  zZA filecontext object makes access to data related to a particular
filerevision convenient.Nc                ó’   • Xl         X l        Uc  Uc  Uc   SUUU4-  5       eUb  XPl        Ub  X0l        Ub  X`l        Ub  X@l        gg)zXchangeid must be a revision number, if specified.
fileid can be a file revision or node.Ns.   bad args: changeid=%r, fileid=%r, changectx=%r)r%   rþ  rÿ  r  r  r
  )r'   r(   rÝ   r   rÊ  rË  r)  s          r)   r*   Úfilectx.__init__õ  sw   € ð Œ
ØŒ
ð Ñ  FÑ$6¸)Ñ:Oð	
à<ØØØð@
ñ 
ó	
ØOð ÑØ#ŒMàÑØ%ŒNØÑ Ø'ŒOØÑØ!�Lð r,   c                ó¸   •  U R                   U R                     $ ! [        R                   a*    U R                   R	                  5       U R                     s $ f = fr#   )r%   r  r   ÚFilteredRepoLookupErrorr^  r/   s    r)   r  Úfilectx._changectx  sM   € ð	;Ø—:‘:˜dŸn™nÑ-Ð-øÜ×,Ñ,ó 	;ð" —:‘:×(Ñ(Ó*¨4¯>©>Ñ:Ò:ð#	;ús   ‚ ›;AÁAc                óX   • [        U R                  U R                  UU R                  US9$ )zEopens an arbitrary revision of the file without
opening a new filelog)rÊ  rË  r   )rS   r%   rþ  rÿ  )r'   rÊ  r   s      r)   rS   Úfilectx.filectx,  s,   € ô Ø�J‰JØ�J‰JØØ—M‘MØñ
ð 	
r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÿ  Úrawdatar  r/   s    r)   rÕ  Úfilectx.rawdata7  s   € Ø�}‰}×$Ñ$ T§^¡^Ó4Ð4r,   c                óL   • U R                   R                  U R                  5      $ )zlow-level revlog flags)rÿ  rÚ   r  r/   s    r)   ÚrawflagsÚfilectx.rawflags:  s   € à�}‰}×"Ñ" 4§=¡=Ó1Ð1r,   c                óP  •  U R                   R                  U R                  5      $ ! [        R                   aj    U R
                  R                  R                  SS5      S:X  a   g[        R                  " [        S5      [        U R                  5      -  [        S5      S9ef = f)Ns   censors   policys   ignorer,   s   censored node: %ss"   set censor.policy to ignore errors)Úhint)rÿ  rc  r  r   ÚCensoredNodeErrorr%   rƒ   rŽ  ÚAbortr   r   r/   s    r)   r_  Úfilectx.data>  s†   € ð	Ø—=‘=×%Ñ% d§n¡nÓ5Ð5øÜ×&Ñ&ó 	Ø�z‰z�}‰}×#Ñ# I¨yÓ9¸YÓFÙÜ—+’+ÜÐ&Ó'¬%°·±Ó*?Ñ?ÜÐ<Ó=ñð ð	ús   ‚$' §>B%Á'>B%c                óL   • U R                   R                  U R                  5      $ r#   )rÿ  r`  r  r/   s    r)   r`  Úfilectx.sizeI  s   € Ø�}‰}×!Ñ! $§-¡-Ó0Ð0r,   c                ó†  • U R                   R                  U R                  5      nU(       d  gU R                  5       U R	                  5       :X  a  U$ U R                  5       nU R                  nU R                  R                  5        H  n X4R                  U5      :X  a    gM     U$ ! [        R                   a     M7  f = f)a  check if file was actually renamed in this changeset revision

If rename logged in file revision, we report copy for changeset only
if file revisions linkrev points back to the changeset in question
or both changeset parents contain different file revisions.
N)rÿ  rV  r  rc   r  rÝ   r  rÈ   rä   r   rç   )r'   rV  ÚnamerŽ  rŒ  s        r)   rU  Úfilectx._copiedL  s£   € ð —-‘-×'Ñ'¨¯©Ó7ˆÞØà�8‰8‹:˜Ÿ™›Ó'ØˆNà�y‰y‹{ˆØ—‘ˆØ—‘×(Ñ(Ö*ˆAðØŸJ™J tÓ,Ó,Ùñ -ñ +ð ˆøô ×$Ñ$ó Úðús   ÂB(Â(C Â?C c           
     óÊ   • U R                   R                  U R                  5      nU Vs/ s H,  n[        U R                  U R
                  X R                   S9PM.     sn$ s  snf )Nr¤  )rÿ  r½  r  rS   r%   rþ  r¾  s      r)   r½  Úfilectx.childrenf  sV   € à�M‰M×"Ñ" 4§>¡>Ó2ˆñ ó
â�ô �D—J‘J §
¡
°1¿m¹mÔLÙñ
ð 	
ùò 
s   ª3A )r  r  r
  rÿ  rþ  r%   )NNNNr#   )r9   rG  rH  rI  rJ  r*   rM  r  rS   rÕ  rØ  r_  r`  rU  r½  rN  rG   r,   r)   rS   rS   ñ  sa   † ñ ð ØØØô"ð@ ñ;ó ð;ô,	
ò5ò2ò	ò1ð ñó ðõ2
r,   rS   c                  óF  ^ • \ rS rSrSr      S#U 4S jjrS rS r\R                  " \5      r
S r\r\S 5       r\S 5       r\S	 5       rS
 rS rS rS rS rS rS rS rS rS r\r\r\rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S  r*S$S! jr+S"r,U =r-$ )%Úcommittablectxio  z€A committablectx object provides common functionality for a context that
wants the ability to commit, e.g. workingctx or memctx.c                ó¶  >• [         TU ]  U5        S U l        S U l        X l        U(       a  [
        R                  " U5      U l        U(       a  X0l        U(       a  X`l	        0 U l
        U(       a  UR                  5       U l
        Ub#  [        R                  " U5      U R                  S'   U R                  R                  S5      (       d  SU R                  S'   g g )Nrœ  s   default)rQ  r*   r@   r�   Ú_textr   Ú	parsedateÚ_dateÚ_userÚ_statusÚ_extrar  r
   Ú	fromlocalrž  ©	r'   r(   Útextrr  rs  ru  r  r>  r:  s	           €r)   r*   Úcommittablectx.__init__s  s¦   ø€ ô 	‰Ñ˜ÔØˆŒ	ØˆŒ
ØŒ
ÞÜ!×+Ò+¨DÓ1ˆDŒJÞØŒJÞØ"ŒLàˆŒÞØŸ*™*›,ˆDŒKØÑÜ%-×%7Ò%7¸Ó%?ˆD�K‰K˜	Ñ"Ø�{‰{�‰˜y×)Ñ)Ø%/ˆD�K‰K˜	Ò"ð *r,   c                ó8   • [        U R                  S   5      S-   $ )Nr   ó   +)ÚbytesrÇ   r/   s    r)   r0   Úcommittablectx.__bytes__�  s   € Ü�T—]‘] 1Ñ%Ó&¨Ñ-Ð-r,   c                óD   • U R                   R                  R                    g r#   ©r%   rk   Úwdirhexr/   s    r)   r   Úcommittablectx.hex“  s   € Ø�
‰
× Ñ ×(Ó(r,   c                ó   • g©NTrG   r/   s    r)   r[  Úcommittablectx.__nonzero__˜  ó   € Ør,   c                ó6   • U R                   R                  5       $ r#   )r%   r   r/   s    r)   rí  Úcommittablectx._status�  s   € à�z‰z× Ñ Ó"Ð"r,   c                óJ   • U R                   R                  R                  5       $ r#   )r%   rƒ   Úusernamer/   s    r)   rì  Úcommittablectx._user¡  s   € à�z‰z�}‰}×%Ñ%Ó'Ð'r,   c                ó†   • U R                   R                  nUR                  SS5      nUc  [        R                  " 5       nU$ )Ns   devels   default-date)r%   rƒ   Ú
configdater   Úmakedate)r'   rƒ   rs  s      r)   rë  Úcommittablectx._date¥  s7   € à�Z‰Z�]‰]ˆØ�}‰}˜X Ó7ˆØ‰<Ü×$Ò$Ó&ˆDØˆr,   c                ó   • g r#   rG   rˆ   s     r)   rŠ   Úcommittablectx.subrev­  rþ  r,   c                ó   • g r#   rG   r/   s    r)   rz  Úcommittablectx.manifestnode°  rþ  r,   c                óp   • U R                   =(       d$    U R                  R                  R                  5       $ r#   )rì  r%   rƒ   r  r/   s    r)   rr  Úcommittablectx.user³  s"   € Ø�z‰z×5˜TŸZ™ZŸ]™]×3Ñ3Ó5Ð5r,   c                ó   • U R                   $ r#   )rë  r/   s    r)   rs  Úcommittablectx.date¶  r‘   r,   c                ó   • U R                   $ r#   )ré  r/   s    r)   rt  Úcommittablectx.description¹  r‘   r,   c                óœ   • [        U R                  R                  U R                  R                  -   U R                  R                  -   5      $ r#   )r‡  rí  rt   ru   rv   r/   s    r)   rÙ   Úcommittablectx.files¼  s:   € ÜØ�L‰L×!Ñ! D§L¡L×$6Ñ$6Ñ6¸¿¹×9MÑ9MÑMó
ð 	
r,   c                ó.   • U R                   R                  $ r#   )rí  rt   r/   s    r)   rt   Úcommittablectx.modifiedÁ  s   € Ø�|‰|×$Ñ$Ð$r,   c                ó.   • U R                   R                  $ r#   )rí  ru   r/   s    r)   ru   Úcommittablectx.addedÄ  s   € Ø�|‰|×!Ñ!Ð!r,   c                ó.   • U R                   R                  $ r#   )rí  rv   r/   s    r)   rv   Úcommittablectx.removedÇ  ó   € Ø�|‰|×#Ñ#Ð#r,   c                ó.   • U R                   R                  $ r#   )rí  rd   r/   s    r)   rd   Úcommittablectx.deletedÊ  r  r,   c                óH   • [         R                  " U R                  S   5      $ r›  )r
   r�  rî  r/   s    r)   r>  Úcommittablectx.branchÑ  s   € Ü×Ò §¡¨IÑ 6Ó7Ð7r,   c                ó    • SU R                   ;   $ r¡  ©rî  r/   s    r)   r?  Úcommittablectx.closesbranchÔ  s   € Ø˜4Ÿ;™;Ñ&Ð&r,   c                ó   • U R                   $ r#   r   r/   s    r)   ru  Úcommittablectx.extra×  r,  r,   c                ó   • gr?   rG   r/   s    r)   r¹  Úcommittablectx.isinmemoryÚ  r»  r,   c                ó   • / $ r#   rG   r/   s    r)   r¨  Úcommittablectx.tagsÝ  ó   € Øˆ	r,   c                óv   • / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r#   )rÈ   r.  r¬  )r'   ÚbrŒ  s      r)   r¬  Úcommittablectx.bookmarksà  s.   € ØˆØ—‘–ˆAØ�H‰H�Q—[‘[“]Ö#ñ  àˆr,   c                óº   • [         R                  " U R                  R                  5      nU R	                  5        H  n[        XR                  5       5      nM     U$ r#   )r   Únewcommitphaser%   rƒ   rÈ   rÂ  r    )r'   r    rŒ  s      r)   r    Úcommittablectx.phaseæ  s?   € Ü×%Ò% d§j¡j§m¡mÓ4ˆØ—‘–ˆAÜ˜Ÿw™w›yÓ)ŠEñ  àˆr,   c                ó   • gr?   rG   r/   s    r)   r¶  Úcommittablectx.hiddenì  r»  r,   c                ó   • / $ r#   rG   r/   s    r)   r½  Úcommittablectx.childrenï  r(  r,   c                ó¾   • SU R                   ;   a   U R                  R                  U5      $  U R	                  U5      $ ! [         a     gf = f! [
         a     gf = f)NrM   r,   )rÕ   rM   rÚ   r×   Ú	_flagfuncrf  rã   s     r)   rÚ   Úcommittablectx.flagsò  sc   € Ø˜$Ÿ-™-Ó'ðØ—~‘~×+Ñ+¨DÓ1Ð1ð	Ø—>‘> $Ó'Ð'øô	 ó Ùðûô
 ó 	Ùð	ús    ’? ®A ¿
AÁAÁ
AÁAc                ó>   • U R                   S   R                  U5      $ )z1return the "best" ancestor context of self and c2r   )rÇ   r×  )r'   rÙ  s     r)   r×  Úcommittablectx.ancestorþ  s   € à�}‰}˜QÑ×(Ñ(¨Ó,Ð,r,   c              #  ó  #   • U R                    S h  v•N   U R                  R                  R                  U R                    Vs/ s H  oR	                  5       PM     sn5       H  nU R                  U   v •  M     g  Njs  snf 7fr#   )rÇ   r%   r_  rÂ  rc   )r'   rŒ  rÃ  s      r)   rÂ  Úcommittablectx.ancestors  sc   é € Ø—=‘=× Ð Ø—‘×%Ñ%×/Ñ/Ø"ŸmšmÓ,šm˜�U‰UŽW™mÑ,ö
ˆAð —*‘*˜Q‘-Ôò
ñ 	!ùâ,ùs!   ‚B’A=“1BÁA?Á!BÁ?Bc                ó   • g)a)  Perform post-commit cleanup necessary after committing this ctx

Specifically, this updates backing stores this working context
wraps to reflect the fact that the changes reflected by this
workingctx have been committed.  For example, it marks
modified and added files as normal in the dirstate.

NrG   )r'   r.   s     r)   ÚmarkcommittedÚcommittablectx.markcommitted	  s   � r,   c                ó   • gr?   rG   )r'   ÚmissingÚmerger>  s       r)   ÚdirtyÚcommittablectx.dirty  r»  r,   )rë  rî  r�   r@   rí  ré  rì  )r,   NNNNN©FTT).r9   rG  rH  rI  rJ  r*   r0   r   r
   rK  rL  r[  rö  rM  rí  rì  rë  rŠ   rz  rr  rs  rt  rÙ   rt   ru   rv   rd   rˆ  r…  r†  r>  r?  ru  r¹  r¨  r¬  r    r¶  r½  rÚ   r×  rÂ  r;  r@  rN  rø  rù  s   @r)   rç  rç  o  s  ø† ñ?ð ØØØØØ÷0ò:.ò)ð × Ò  Ó+€Gòð €Hàñ#ó ð#ð ñ(ó ð(ð ñó ðòòò6òòò
ò
%ò"ò$ò$ð €MØ€JØ€Lò8ò'òòòòòòòò
ò-ò ò÷ò r,   rç  c                  óD  ^ • \ rS rSrSr S!U 4S jjrS rS rS r\	S 5       r
S"S jrU 4S	 jrS
 r\	S 5       rS rS"S jrS#S jrS$S jrS$S jrS r       S%S jrS rS rS r S& S'S jjr\	S 5       r\	S 5       rS rU 4S jrS rS rS r S r!S(S jr"S r#U =r$$ ))Ú
workingctxi  a]  A workingctx object makes access to data related to
the current working directory convenient.
date - any valid date string or (unixtime, offset), or None.
user - username string, or None.
extra - a dictionary of extra values, or None.
changes - a list of file lists as returned by localrepo.status()
           or None to use the repository status.
c           
     óÔ   >• S nU(       a  SU;  a   UR                   R                  5       n[        TU ]  XX4XVUS9  g ! [         a     [        R                  " [        S5      5      ef = f)Nrœ  s   branch name not in UTF-8!©r>  )Údirstater>  ÚUnicodeDecodeErrorr   rÝ  r   rQ  r*   rð  s	           €r)   r*   Úworkingctx.__init__!  sl   ø€ ð ˆÞ˜	¨Ó.ðCØŸ™×-Ñ-Ó/�ô 	‰Ñ˜ T°ÈÐÒOøô &ó CÜ—k’k¤!Ð$@Ó"AÓBÐBðCús	   ’= ½*A'c              #  ó–   #   • U R                   R                  nU H)  nUR                  U5      R                  (       d  M%  Uv •  M+     g 7fr#   ©r%   rG  Ú	get_entryÚtracked)r'   rx   r%  s      r)   rX   Úworkingctx.__iter__,  s7   é € Ø�J‰J×ÑˆÛˆAØ�{‰{˜1‹~×%×%Ñ%Ø”ò ùs   ‚:A	Á 	A	c                ó`   • U R                   R                  R                  U5      R                  $ r#   rK  rN   s     r)   rP   Úworkingctx.__contains__2  s#   € Ø�z‰z×"Ñ"×,Ñ,¨SÓ1×9Ñ9Ð9r,   c                óB   • U R                   R                  R                  $ r#   rø  r/   s    r)   r   Úworkingctx.hex5  s   € Ø�z‰z×'Ñ'×/Ñ/Ð/r,   c           
     ó`  • U R                   R                  R                  5       nUS   U R                   R                  R                  :X  a  US S nU R                   R                  5       nU Vs/ s H2  n[        U R                   UR                  R                  U5      USS9PM4     sn$ s  snf )Nr   r±  Frm  )	r%   rG  rÈ   rk   rÓ  r^  r)  r_  rc   )r'   rŒ  ÚunfirÏ  s       r)   rÇ   Úworkingctx._parents8  sŸ   € à�J‰J×Ñ×'Ñ'Ó)ˆØˆQ‰4�4—:‘:×+Ñ+×2Ñ2Ó2Ø�#�2�ˆAà�z‰z×$Ñ$Ó&ˆñ
 ó	
ò �ô Ø—
‘
˜DŸN™N×.Ñ.¨qÓ1°1ÀUôñ ñ	
ð 	
ùò 
s   Á/9B+c                óp  • Uc   U R                   R                  R                  nU R                   R                  nUR	                  U R                   5         UR                  X5      nU R                   U   nU(       a.  U H(  nXe;  d  M
  XF   U;   d  M  UR                  XF   U5        M*     X R                   R                  R                  :X  aP  [        UR                  5       R                  5       5       H%  u  pgXe;  d  M  Xu;  d  M  UR                  S U5        M'     S S S 5        g ! , (       d  f       g = fr#   )
r%   rk   rÓ  rG  Úchanging_parentsÚ
setparentsr  r‡  Úcopiesri   )r'   Úp1nodeÚp2noderG  rY  rü   r%  rn   s           r)   rX  Úworkingctx.setparentsF  sä   € Ø‰>Ø—Z‘Z×-Ñ-×4Ñ4ˆFØ—:‘:×&Ñ&ˆØ×&Ñ& t§z¡zÕ2Ø×(Ñ(¨Ó8ˆFØ—:‘:˜fÑ%ˆDÞó  �AØ•}¨©°dÕ):Ø Ÿ™ f¡i°Ö3ñ  ð Ÿ™×1Ñ1×8Ñ8Ó8Ü" 8§?¡?Ó#4×#:Ñ#:Ó#<Ö=‘D�AØ•}¨­Ø Ÿ™ d¨AÖ.ñ >÷ 3×2Ö2ús%   Á0D'Â	D'ÂA*D'ÄD'ÄD'Ä'
D5c                ó:   >• U R                     [        TU ]	  U5      $ r#   )rM   rQ  rà   )r'   rÝ   r:  s     €r)   rà   Úworkingctx._fileinfoY  s   ø€ à�ŠÜ‰wÑ  Ó&Ð&r,   c                ó€  ^^^^	^
• U R                   R                  R                  5       R                  mU R	                  5       n[        U5      S:  a  US   R                  5       m
UU
4S jnU$ Uu  p4UR                  U5      nUR                  5       UR                  5       UR                  5       smmm	UUUU	4S jnU$ )NrÏ   r   c                ó6   >• T" X 5      n TR                  U 5      $ r#   rk  )r%  Ú	copiesgetÚmans    €€r)   ÚfuncÚ'workingctx._buildflagfunc.<locals>.funch  s   ø€ Ù˜a“O�Ø—y‘y “|Ð#r,   c                ó¤   >• T" X 5      n TR                  U 5      TR                  U 5      TR                  U 5      p2nX:X  a  U$ X:X  a  U$ X#:X  a  U$ g©Nr,   rk  )r%  Úfl1Úfl2Úflara  Úm1Úm2Úmas       €€€€r)   rc  rd  s  sP   ø€ Ù˜a“O�Ø "§¡¨£¨R¯X©X°a«[¸"¿(¹(À1»+˜#�Ø“:Ø�JØ“:Ø�JØ“:Ø�JØr,   )r%   rG  rY  rž  rÈ   rÐ   r[   r×  )r'   rÈ   rc  rÌ   rÑ   Úpara  rj  rk  rl  rb  s         @@@@@r)   Ú_buildflagfuncÚworkingctx._buildflagfunc^  s    ü€ ð —J‘J×'Ñ'×.Ñ.Ó0×4Ñ4ˆ	Ø—,‘,“.ˆÜˆw‹<˜!Óà˜!‘*×%Ñ%Ó'ˆCö$ð, ˆð ‰FˆBØ—‘˜R“ˆBØŸ™›¨¯©«°r·{±{³}ˆJˆB��B÷	ð 	ð ˆr,   c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   rG  Úflagfuncrn  r/   s    r)   r4  Úworkingctx._flagfunc€  s#   € à�z‰z×"Ñ"×+Ñ+¨D×,?Ñ,?Ó@Ð@r,   c                óF   •  U R                  U5      $ ! [         a     gf = frf  )r4  rf  rã   s     r)   rÚ   Úworkingctx.flags„  s(   € ð	Ø—>‘> $Ó'Ð'øÜó 	Ùð	ús   ‚ “
 Ÿ c                ó,   • [        U R                  XUS9$ )z-get a file context from the working directory)rD  rË  )Úworkingfilectxr%   ©r'   rÝ   rË  s      r)   rS   Úworkingctx.filectxŠ  s   € äØ�J‰J˜°wñ
ð 	
r,   c                óþ  • [        U R                  5       H(  nU R                  U5      R                  US9(       d  M(    g   U=(       a    U R	                  5       =(       d�    U=(       a/    U R                  5       U R                  5       R                  5       :g  =(       d^    U R                  5       =(       dG    U R                  5       =(       d0    U R                  5       =(       d    U=(       a    U R                  5       $ )z-check whether a working directory is modified)r>  T)r‡  r„   rø   r@  rÑ   r>  rÌ   rt   ru   rv   rd   )r'   r>  r?  r>  rn   s        r)   r@  Úworkingctx.dirty�  sµ   € ô ˜Ÿ™Ö&ˆAØ�x‰x˜‹{× Ñ ¨Ð ×1Ð1Ùñ 'ð
 × �t—w‘w“y÷ ,Ø×>˜4Ÿ;™;›=¨D¯G©G«I×,<Ñ,<Ó,>Ñ>÷,à�}‰}‹÷,ð �z‰z‹|÷,ð �|‰|‹~÷	,ð
 ×*˜DŸL™L›Nð	
r,   c           
     ót  ^^
• U R                   R                  5          U R                   R                  U R                   R                  snm
U
U4S jn/ nU R                   R                  R
                  nU GH]  n[        R                  " U[        R                  R                  TU5      5         U" U5      nUR                  SS5      n	U	S:w  aF  UR                   U	:”  a6  UR                  [        S5      USUR                   -  S-  U" U5      4-  5        ["        R$                  " UR&                  5      (       d\  ["        R(                  " UR&                  5      (       d7  UR                  [        S	5      U" U5      -  5        UR                  U5        GM!  T
R+                  U5      (       a  GM:  UR                  [        S
5      U" U5      -  5        GM`     UsS S S 5        $ ! [         a9    UR                  [        S5      U" U5      -  5        UR                  U5         GM¯  f = f! , (       d  f       g = f)Nc                óP   >• TR                  [        R                  " TU 5      5      $ r#   ©Úpathtor   rØ  ©r%  ÚdsÚprefixs    €€r)   rµ  Ú workingctx.add.<locals>.<lambda>£  ó   ø€ ˜rŸy™y¬¯ª°v¸qÓ)AÔBr,   ó   %s does not exist!
s   uis   large-file-limitr   so   %s: up to %d MB of RAM may be required to manage this file
(use 'hg revert %s' to cancel the pending addition)
r„  i@B s:   %s not added: only files and symlinks supported currently
s   %s already tracked!
)r%   Úwlockrƒ   rG  ÚwvfsÚlstatr   ÚcheckportableÚosrÝ   rØ  rf  rÚ  r   rj   ÚconfigbytesÚst_sizeÚstatÚS_ISREGÚst_modeÚS_ISLNKÚset_tracked)r'   Úlistr�  rƒ   ÚuipathÚrejectedr‡  r%  ÚstÚlimitr€  s     `       @r)   ÚaddÚworkingctx.add   sÁ  ù€ Ø�Z‰Z×ÑÕØ—Z‘Z—]‘] D§J¡J×$7Ñ$7ˆFˆB�ÝBˆFØˆHØ—J‘J—O‘O×)Ñ)ˆEÜ�ô ×%Ò% b¬"¯'©'¯,©,°v¸qÓ*AÔBðÙ˜q›�Bð
 Ÿ™ uÐ.AÓB�Ø˜A“: "§*¡*¨uÓ"4Ø—G‘GÜð3óð ˜a "§*¡*™n°Ñ7¹À»ÐCñDôô Ÿš R§Z¡Z×0Ñ0´D·L²LÀÇÁ×4LÑ4LØ—G‘GÜð5óñ ! ›)ñ	$ôð —O‘O A×&ØŸ™¨×*Ô*Ø—G‘GœAÐ6Ó7¹&À»)ÑC×DñA ðB ÷M  Ñøô ó Ø—G‘GœAÐ5Ó6¹À»ÑBÔCØ—O‘O AÔ&Ûðú÷  Õús7   �BH)Â0G#Â8C3H)Æ0)H)Ç#>H&È!H)È%H&È&H)È)
H7c                ó„  ^^• U R                   R                  5          U R                   R                  mUU4S jn/ nU Hc  nTR                  U5      (       a  M  U R                   R                  R                  [        S5      U" U5      -  5        UR                  U5        Me     UsS S S 5        $ ! , (       d  f       g = f)Nc                óP   >• TR                  [        R                  " TU 5      5      $ r#   r}  r  s    €€r)   rµ  Ú#workingctx.forget.<locals>.<lambda>Ì  rƒ  r,   s   %s not tracked!
)r%   r…  rG  Úset_untrackedrƒ   rÚ  r   rj   )r'   rÙ   r�  r’  r“  r%  r€  s     `   @r)   ÚforgetÚworkingctx.forgetÉ  s‰   ù€ Ø�Z‰Z×ÑÕØ—‘×$Ñ$ˆBÝBˆFØˆHÛ�Ø×'Ñ'¨×*Ó*Ø—J‘J—M‘M×&Ñ&¤qÐ)=Ó'>ÁÈÃÑ'JÔKØ—O‘O AÖ&ñ ð ÷  ××ús   �9B1ÁAB1Â1
B?c                ó.  •  U R                   R                  R                  U5      n[        R                  " UR                  5      (       dz  [        R                  " UR                  5      (       dU  U R                   R                  R                  [        S5      U R                   R                  R                  U5      -  5        g U R                   R                  5          U R                   R                  nUR                  U5        UR                  X5        S S S 5        g ! [         aW    U R                   R                  R                  [        S5      U R                   R                  R                  U5      -  5         g f = f! , (       d  f       g = f)Nr„  s1   copy failed: %s is not a file or a symbolic link
)r%   r†  r‡  ÚFileNotFoundErrorrƒ   rÚ  r   rG  r~  rŒ  r�  rŽ  r�  r…  r�  r  )r'   r‘  Údestr”  r€  s        r)   r  Úworkingctx.copyÔ  s  € ð	Ø—‘—‘×&Ñ& tÓ,ˆBô —’˜RŸZ™Z×(Ñ(¬D¯LªL¸¿¹×,DÑ,DØ�J‰J�M‰M×ÑÜÐGÓHØ—*‘*×%Ñ%×,Ñ,¨TÓ2ñ3õð
 —‘×!Ñ!Õ#Ø—Z‘Z×(Ñ(�Ø—‘˜tÔ$Ø—‘˜Ô%÷ $Ð#øô !ó 	Ø�J‰J�M‰M×ÑÜÐ)Ó*¨T¯Z©Z×-@Ñ-@×-GÑ-GÈÓ-MÑMôñ ð		ú÷ $Õ#ús   ‚%D" Ã 9FÄ"AFÆFÆ
Fc                óö   • U R                   nU(       d  UR                  5       n[        R                  " UR                  5      (       + n	[
        R                  " UR                  UUUUUUR                  U UUU	S9$ )N)r  r  r  r¨   Úicasefs)r%   r  r   Úfscasesensitiver	  r  r   r  )
r'   r  r  r  r  r  r¨   r©   r  r£  s
             r)   r   Úworkingctx.matchç  sn   € ð �J‰JˆÞØ—(‘(“*ˆCô ×*Ò*¨1¯6©6Ó2Ô2ˆÜ�~Š~Ø�F‰FØØØØØØ—I‘IØØ%ØØñ
ð 	
r,   c                ó¨  • U(       a%  U R                   R                  R                  (       a  U$ / nU H›  nU R                  U5      S:X  ar  X   R	                  5       nUS:X  d0  [        U5      S:¼  d!  SU;   d  [        R                  " U5      (       a*  U R                   R                  R                  SU-  5        MŠ  UR                  U5        M�     U$ )Nrq  r,   i   ó   
s*   ignoring suspect symlink placeholder "%s"
)r%   rG  Ú
_checklinkrÚ   r_  rÐ   r   re  rƒ   Údebugrj   )r'   rÙ   Úsaner%  rx   s        r)   Ú_filtersuspectsymlinkÚ workingctx._filtersuspectsymlink  s©   € Þ˜Ÿ
™
×+Ñ+×6×6ØˆLð ˆÛˆAØ�z‰z˜!‹} Ó$Ø‘G—L‘L“N�à˜“HÜ˜1“v “~Ø “zÜ!×(Ò(¨×+Ñ+à—J‘J—M‘M×'Ñ'ØFÈÑJôñ Ø�K‰K˜ŽNñ ð ˆr,   c                ón  • U(       d  / / / / 4$ / n/ n/ n/ nU R                   S   n[        U5       HÜ  n X‡;  d>  U R                  U5      UR                  U5      :w  d  Xx   R                  X   5      (       a  UR	                  U5        MZ  Uc  UR	                  U5        Mp  X   R                  5       n	U	R                  n
U	R                  n[        R                  " X’5      nUb  X«U4nUR	                  X�45        MË  UR	                  U5        MÞ     X4XV4$ ! [         a    UR	                  U5         GM  f = frË   )rÇ   r‡  rÚ   rm   rj   r‡  rŽ  r‹  r   Úreliable_mtime_ofrf  )r'   rÙ   Úmtime_boundaryrt   rd   rb   Úfixuprü   r%  rn   Úmoder`  Ú
file_mtimeÚ
cache_infos                 r)   Ú_checklookupÚworkingctx._checklookup  s  € æØ�r˜2˜r�>Ð!àˆØˆØˆØˆØ�}‰}˜QÑˆä˜–ˆAð"ð “MØ—z‘z !“}¨¯
©
°1«Ó5Ø‘w—{‘{ 4¡7×+Ñ+à—O‘O AÖ&Ø#Ñ+Ø—L‘L –Oà™Ÿ™›�AØŸ9™9�DØŸ9™9�DÜ!*×!<Ò!<¸QÓ!O�JØ!Ñ-Ø&*°*Ð%=˜
ØŸ™ a _Ö5àŸ™ Qžñ+ ð>  %Ð.Ð.øô ó "ð —‘˜q×!Ð!ð"ús%   ´ADÂ
DÂ ADÃ;DÄD4Ä3D4c                ó  ^• [         R                  " U R                  R                  S5        U R                  R                  mU R                  R                  5       nU(       a7  TR                  (       a  U4S jnOTR                  nU H  u  pVU" XV5        M     U(       d%  U R                  R                  R                  (       aì   TR                  nU R                  R                  S5         U R                  R                  TL d   eTR                  nU(       a,  U R                  R                  5       n	TR                  U	5        O.U(       a'  Sn
U R                  R                  R                  U
5        U(       a  U H  nU" X5        M     SSS5        U R                  R!                  5         gg! , (       d  f       N*= f! [        R                   a    TR                  5          NSf = f! U R                  R!                  5         f = f)z1update dirstate for files that are actually cleans   status.pre-dirstate-write-filec                ó&   >• TR                  U SSS9$ )NT©Ú
p1_trackedÚ
wc_tracked)Úupdate_file)r%  ÚpfdrG  s     €r)   rµ  Ú-workingctx._poststatusfixup.<locals>.<lambda>R  s   ø€ ¨×(<Ñ(<ØØ#Ø#ð )=ñ )r,   Fs*   skip updating dirstate: identity mismatch
N)r   Úwait_on_cfgr%   rƒ   rG  ÚpostdsstatusÚis_changing_parentsÚ	set_cleanÚ_dirtyr…  ÚcurrenttransactionÚwriter©  r   Ú	LockErrorÚ
invalidateÚclearpostdsstatus)r'   r   r°  Ú
poststatusÚnormalr%  ÚpdfÚ	pre_dirtyÚ
post_dirtyÚtrrï  ÚpsrG  s               @r)   Ú_poststatusfixupÚworkingctx._poststatusfixupK  sw  ø€ ä×Ò˜DŸJ™JŸM™MÐ+LÔMØ—:‘:×&Ñ&ˆØ—Z‘Z×,Ñ,Ó.ˆ
ÞØ×+×+ô‘ð "×+Ñ+�Û‘�Ù�q–ñ  æ˜Ÿ™×,Ñ,×3×3ð/ð
 %ŸO™O�	Ø—Z‘Z×%Ñ% eÕ,ØŸ:™:×.Ñ.°(Ò:Ð:Ð:Ø!)§¡�JÞ!Ø!ŸZ™Z×:Ñ:Ó<˜Ø Ÿ™ rÕ*Þ"ð K˜ØŸ
™
Ÿ™×+Ñ+¨AÔ.Þ!Û",˜BÙ˜tÖ,ñ #-÷ -ð$ —
‘
×,Ñ,Õ.ð3 4÷ -Õ,ûô —?‘?ó &Ø×#Ñ#Ö%ð&ûð —
‘
×,Ñ,Õ.úsI   Ã'G Ã/B!F4ÆG Æ4
GÆ>G ÇG/ ÇG Ç$G,Ç)G/ Ç+G,Ç,G/ Ç/Hc           	     óª  • / nSU ;   a  [        U R                  5      nU R                  R                  nUR	                  U R                  5         UR                  XX#US9u  pxn	/ n
U(       a£  U R                  Xy5      u  p¼pÚUR                  R                  U5        UR                  R                  U5        U(       a"  U(       a  UR                  R                  U5        U
(       a)  U(       a"  UR                  R                  S U
 5       5        U R                  XŠ5        SSS5        UR                  5       (       a„  WR                  (       d"  UR                  (       d  UR                  (       aK  [        R
                  " UR                  UR                   UR"                  UR                  / / / 5      U l        U$ X€l        W$ ! , (       d  f       N©= f)z7Gets the status from the dirstate -- internal use only.s   .hgsub)rf   rb   re   c              3  ó*   #   • U  H	  u  pUv •  M     g 7fr#   rG   )r$  r%  r   s      r)   r&  Ú-workingctx._dirstatestatus.<locals>.<genexpr>�  s   é € Ð#8²%©$¨!¥A²%ùs   ‚N)r‡  r„   r%   rG  Úrunning_statusr   r´  rt   r.  rd   rb   rÏ  Úalwaysre   rf   r   ru   rv   rí  )r'   r   rf   rb   re   ÚsubreposrG  rm   rn   r¯  r°  Ú	modified2Údeleted2Ú	clean_sets                 r)   Ú_dirstatestatusÚworkingctx._dirstatestatusv  sU  € ð ˆØ˜ÓÜ˜dŸm™mÓ,ˆHØ—:‘:×&Ñ&ˆØ×$Ñ$ T§Z¡ZÕ0Ø%-§_¡_Ø¨Àwð &5ð &Ñ"ˆC�Nð
 ˆEÞØ8<×8IÑ8IØó9Ñ5�	 Yð —
‘
×!Ñ! )Ô,Ø—	‘	× Ñ  Ô*æ¦Ø—G‘G—N‘N 9Ô-ÞžUØ—G‘G—N‘NÑ#8±%Ó#8Ô9à×!Ñ! !Ô+÷' 1ð* �<‰<�>‰>à�y�y˜AŸIŸI¨¯¯ä&Ÿ~š~Ø—J‘J §¡¨¯©°A·I±I¸rÀ2Àró �”ð ˆð  !”àˆ÷? 1Õ0ús   ÁCGÇ
Gc                ó<  • 0 n0 nU R                   R                  R                  5       nU R                   US      R                  5       nU R                   US      R                  5       n[	        U R                  5       5      [	        U R                  5       5      -  nU R                   R                  5       nU R                   R                  R                  5       R                  5        H/  u  p‰X†;  d  U" U5      (       d  M  X”;   a  X‘U'   M$  X•;   d  M+  X’U'   M1     X4$ r¨  )
r%   rG  rÈ   r[   rg   ru   rt   r*  rY  ri   )
r'   rï   ró   rÈ   Ú
p1manifestÚ
p2manifestÚ
changedsetr*  ÚdstÚsrcs
             r)   rë   Úworkingctx._copiesŸ  sì   € àˆØˆØ—*‘*×%Ñ%×-Ñ-Ó/ˆØ—Z‘Z ¨¡
Ñ+×4Ñ4Ó6ˆ
Ø—Z‘Z ¨¡
Ñ+×4Ñ4Ó6ˆ
Ü˜Ÿ™›Ó&¬¨T¯]©]«_Ó)=Ñ=ˆ
Ø—j‘j×,Ñ,Ó.ˆØŸ
™
×+Ñ+×2Ñ2Ó4×:Ñ:Ö<‰HˆCØÓ$©K¸×,<Ñ,<ÙØÓ Ø #˜“ØÕ"Ø #˜“ñ =ð Ð!Ð!r,   c                ó8   • U R                  U R                  5      $ )a$  generate a manifest corresponding to the values in self._status

This reuse the file nodeid from parent, but we use special node
identifiers for added and modified files. This is used by manifests
merge to see that files are different and by update logic to avoid
deleting newly added files.
)r\   rí  r/   s    r)   rM   Úworkingctx._manifest±  s   € ð ×(Ñ(¨¯©Ó6Ð6r,   c                ó   • U R                  5       nUS   R                  5       R                  5       nU R                  nU R                  R
                  R                  UR                  4U R                  R
                  R                  UR                  44 H*  u  pVU H  nXSU'    UR                  Xt" U5      5        M!     M,     UR                  UR                  -    H  nXs;   d  M
  X7	 M     U$ ! [         a     M_  f = f)z9Builds a manifest that includes the given status results.r   )rÈ   r[   r  r4  r%   rk   Úaddednodeidru   Úmodifiednodeidrt   Úsetflagrf  rd   rv   )r'   r   rÈ   rb  ÚffÚir¬  r%  s           r)   r\   Úworkingctx._buildstatusmanifest¼  sß   € à—,‘,“.ˆà�a‰j×!Ñ!Ó#×(Ñ(Ó*ˆà�^‰^ˆà�Z‰Z×%Ñ%×1Ñ1°6·<±<Ð@Ø�Z‰Z×%Ñ%×4Ñ4°f·o±oÐFó
‰DˆAó �Ø�A‘ðØ—K‘K  2 a£5Ö)ó ñ	
ð —‘ &§.¡.Ô0ˆAØ�xØ’Fñ 1ð ˆ
øô ó Úðús   Â%C/Ã/
C=Ã<C=c                óÂ   >• U R                  X4XV5      nU R                  UR                  5      UR                  SS& XR                  S   :w  a  [        TU ]  XX4XV5      nU$ )a  build a status with respect to another context

This includes logic for maintaining the fast path of status when
comparing the working directory against its parent, which is to skip
building a new manifest if self (working directory) is not comparing
against its parent (repo['.']).
Nó   .)rÚ  r«  rt   r%   rQ  r   )r'   rC   rn   r   ro   rp   rq   r:  s          €r)   r   Úworkingctx._buildstatusÔ  sa   ø€ ð × Ñ  °YÓLˆð ×2Ñ2°1·:±:Ó>ˆ�
‰
‘1ˆØ—J‘J˜tÑ$Ó$Ü‘Ñ$Ø˜%¨ióˆAð ˆr,   c                óJ   ^ ^• TT R                   S   :w  a  UU 4S jnX2l        U$ )ac  override the match method with a filter for directory patterns

We use inheritance to customize the match.bad method only in cases of
workingctx since it belongs only to the working directory when
comparing against the parent changeset.

If we aren't comparing against the working directory's parent, then we
just use the default match object sent to us.
rí  c                óÜ   >• U T;  ae  TR                  U 5      (       dN  TR                  R                  R                  STR                  R                  R                  U 5      U4-  5        g g g )Ns   %s: %s
)r  r%   rƒ   rÚ  rG  r~  )r%  rë  rC   r'   s     €€r)   rê  Ú$workingctx._matchstatus.<locals>.badõ  sW   ø€ ð ˜E“>¨%¯,©,°q¯/©/Ø—J‘J—M‘M×&Ñ&Ø# t§z¡z×':Ñ':×'AÑ'AÀ!Ó'DÀcÐ&JÑJõð +:�>r,   )r%   rê  )r'   rC   r   rê  s   ``  r)   r_   Úworkingctx._matchstatusé  s'   ù€ ð �D—J‘J˜tÑ$Ó$öð ŒIØˆr,   c           	     ó¸   • [        U R                  R                  R                  U R                  R	                  U5      [        U R
                  5      SSS95      $ )rã  TF)rÖ  re   rf   )r‡  r%   rG  rî  r*  r„   rò  s     r)   rî  Úworkingctx.walk   sP   € äØ�J‰J×Ñ×$Ñ$Ø—
‘
×&Ñ& uÓ-Ü §¡Ó.ØØð	 %ð ó
ð 	
r,   c                ó®   ^• U R                   R                  U5      nU R                   R                  m[        U4S jTR	                  U5       5       5      $ )Nc              3  ól   >#   • U  H)  nTR                  U5      R                  (       d  M%  Uv •  M+     g 7fr#   )rL  rM  )r$  r%  r€  s     €r)   r&  Ú%workingctx.matches.<locals>.<genexpr>  s%   øé € ÐNÒ!2˜A°b·l±lÀ1³o×6MÕ6M—a‘aÒ!2ùs   ƒ$4«	4)r%   r*  rG  r‡  ró  )r'   r   r€  s     @r)   ró  Úworkingctx.matches  s@   ø€ Ø—
‘
×&Ñ& uÓ-ˆØ�Z‰Z× Ñ ˆÜÔN §¡¨EÔ!2ÓNÓNÐNr,   c                óâ  • U R                   R                  R                  U R                   5         U R                  5       U R	                  5       -    H(  nU R                   R                  R                  USSS9  M*     U R                  5        H(  nU R                   R                  R                  USSS9  M*     U R                   R                  R                  U5        U R                   R                  5         [        R                  " U R                   U5        S S S 5        U R                   R                  R                  U R                   R                  5       5        g ! , (       d  f       NL= f)NTr¸  F)r%   rG  rW  rt   ru   r»  rv   rX  Ú!_quick_access_changeid_invalidater   ÚaftercommitrÄ  rÃ  )r'   r.   r%  s      r)   r;  Úworkingctx.markcommitted  s  € Ø�Z‰Z× Ñ ×1Ñ1°$·*±*Õ=Ø—]‘]“_ t§z¡z£|Ô3�Ø—
‘
×#Ñ#×/Ñ/Ø $°4ð 0ó ñ 4ð —\‘\–^�Ø—
‘
×#Ñ#×/Ñ/Ø %°Eð 0ó ñ $ð �J‰J×Ñ×*Ñ*¨4Ô0Ø�J‰J×8Ñ8Ô:ä×Ò˜tŸz™z¨4Ô0÷ >ð" 	�
‰
×Ñ×!Ñ! $§*¡*×"?Ñ"?Ó"AÕB÷# >Õ=ús   °C*E Å 
E.c                ó´   • U(       a)  [         R                  R                  U R                  5      $ [         R                  R	                  U R                  5      $ r#   )Úmergestatemodr   rb   r%   rc  r;  s     r)   r   Úworkingctx.mergestate$  s;   € ÞÜ ×+Ñ+×1Ñ1°$·*±*Ó=Ð=Ü×'Ñ'×,Ñ,¨T¯Z©ZÓ8Ð8r,   )rí  )r,   NNNNr#   rB  ©r,   rE  ©FFFrB  rF  )%r9   rG  rH  rI  rJ  r*   rX   rP   r   rM  rÇ   rX  rà   rn  r4  rÚ   rS   r@  r–  rœ  r  r   r«  r´  rÏ  rÚ  rë   rM   r\   r   r_   rî  ró  r;  r   rN  rø  rù  s   @r)   rD  rD    s  ø† ñð IM÷	Pòò:ò0ð ñ
ó ð
ô/õ&'ò
 ðD ñAó ðAòô
ô
ô 'ôR	ò&ð* ØØØØØØô
ò>ò2*/òX)/ðX :?ð'à	õ'ðR ñ"ó ð"ð" ñ7ó ð7òõ0ò*ò.	
òOò
C÷(9ò 9r,   rD  c                  óD   • \ rS rSrSrSS jrS r\rS rS r	S r
S	 rS
rg)Úcommittablefilectxi*  zŠA committablefilectx provides common functionality for a file context
that wants the ability to commit, e.g. workingfilectx or memfilectx.Nc                ót   • Xl         X l        S U l        S =U l        U l        Ub  X0l        U(       a  X@l        g g r#   )r%   rþ  r  r  r  rÿ  r  )r'   r(   rÝ   rË  r  s        r)   r*   Úcommittablefilectx.__init__.  s9   € ØŒ
ØŒ
ØˆŒØ)-Ð-ˆŒ˜œàÑØ#ŒMÞØ!�Oð r,   c                ó   • grü  rG   r/   s    r)   r[  Úcommittablefilectx.__nonzero__9  rþ  r,   c                ó"   • U R                  5       $ r#   )rc   r/   s    r)   r  Úcommittablefilectx.linkrev>  s   € à�x‰x‹zÐr,   c                óÖ   • U R                  5       nU(       d  g UU R                  R                  S   R                  R	                  XR
                  R                  R                  5      4$ rË   )rZ  r  rÇ   rM   rž  r%   rk   rÓ  rã   s     r)   rV  Úcommittablefilectx.renamedB  sW   € Ø�‰Ó ˆÞØàØ�O‰O×$Ñ$ QÑ'×1Ñ1×5Ñ5Ø—j‘j×.Ñ.×5Ñ5óð
ð 	
r,   c                óº  ^ • U 4S jnT R                   nT R                  nT R                  R                  nT R	                  5       nU(       a  US-   /nOX!" US   U5      U4/nUSS  H  nUR                  X!" Xr5      U45        M     U VV	V
s/ s H<  u  p‰n
U	T R                  R                  R                  :w  d  M,  T R                  X‰U
S9PM>     sn
n	n$ s  sn
n	nf )z5return parent filectxs, following copies if necessaryc                óx   >• U R                   R                  UTR                  R                  R                  5      $ r#   )rM   rž  r%   rk   rÓ  )r  rÝ   r'   s     €r)   rä   Ú,committablefilectx.parents.<locals>.filenodeP  s*   ø€ Ø—=‘=×$Ñ$ T¨4¯:©:×+CÑ+C×+JÑ+JÓKÐKr,   r#   r   r   Nr¤  )
rþ  rÿ  r  rÇ   rV  rj   r%   rk   rÓ  r¥  )r'   rä   rÝ   rª  ÚpclrV  r«  ÚpcrŒ  rÏ  r¬  s   `          r)   rÈ   Úcommittablefilectx.parentsM  sÞ   ø€ õ	Lð �z‰zˆØ�]‰]ˆØ�o‰o×&Ñ&ˆØ—,‘,“.ˆæØ˜GÑ#Ð$‰Bà˜ # a¡&¨$Ó/°Ð4Ð5ˆBà�a�b“'ˆBØ�I‰I�t˜X bÓ/°Ð4Ö5ñ ñ
 õ
â‘��aØ�D—J‘J×,Ñ,×3Ñ3Ñ3ó 8ˆD×Ñ °QÐÓ7Ùó
ð 	
ùô 
s   Â+CÂ=Cc                ó   • / $ r#   rG   r/   s    r)   r½  Úcommittablefilectx.childrenf  r(  r,   )r  r  rÿ  r  r  rþ  r%   rõ  )r9   rG  rH  rI  rJ  r*   r[  rö  r  rV  rÈ   r½  rN  rG   r,   r)   r  r  *  s-   † ñLô	"òð €Hòò	
ò
õ2r,   r  c                  óœ   ^ • \ rS rSrSrSU 4S jjr\S 5       rS rS r	S r
S rS	 rS
 rS rS rS rSS jrSS jrS rS rS rSrU =r$ )rv  ij  znA workingfilectx object makes access to data related to a particular
file in the working directory convenient.c                ó&   >• [         TU ]  XX45        g r#   ©rQ  r*   )r'   r(   rÝ   rË  rD  r:  s        €r)   r*   Úworkingfilectx.__init__n  s   ø€ Ü‰Ñ˜ WÕ9r,   c                ó,   • [        U R                  5      $ r#   )rD  r%   r/   s    r)   r  Úworkingfilectx._changectxq  s   € ä˜$Ÿ*™*Ó%Ð%r,   c                óL   • U R                   R                  U R                  5      $ r#   )r%   Úwreadrþ  r/   s    r)   r_  Úworkingfilectx.datau  s   € Ø�z‰z×Ñ §
¡
Ó+Ð+r,   c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   rG  Úcopiedrþ  r/   s    r)   rZ  Úworkingfilectx.copysourcex  s!   € Ø�z‰z×"Ñ"×)Ñ)¨$¯*©*Ó5Ð5r,   c                ót   • U R                   R                  R                  U R                  5      R                  $ r#   )r%   r†  r‡  rþ  r‹  r/   s    r)   r`  Úworkingfilectx.size{  s%   € Ø�z‰z�‰×$Ñ$ T§Z¡ZÓ0×8Ñ8Ð8r,   c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   r†  r‡  rþ  r/   s    r)   r‡  Úworkingfilectx.lstat~  ó   € Ø�z‰z�‰×$Ñ$ T§Z¡ZÓ0Ð0r,   c                óæ   • U R                   R                  5       u  p U R                  R                  R	                  U R
                  5      [        R                     U4$ ! [         a    X4s $ f = fr#   )	r  rs  r%   r†  r‡  rþ  rŒ  ÚST_MTIMErŸ  )r'   ÚtÚtzs      r)   rs  Úworkingfilectx.date�  s\   € Ø—‘×$Ñ$Ó&‰ˆð	Ø—J‘J—O‘O×)Ñ)¨$¯*©*Ó5´d·m±mÑDÀbÐIÐIøÜ ó 	Ø�7ŠNð	ús   žAA  Á A0Á/A0c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   r†  Úexistsrþ  r/   s    r)   r+  Úworkingfilectx.existsˆ  s   € Ø�z‰z�‰×%Ñ% d§j¡jÓ1Ð1r,   c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   r†  Úlexistsrþ  r/   s    r)   r.  Úworkingfilectx.lexists‹  s   € Ø�z‰z�‰×&Ñ& t§z¡zÓ2Ð2r,   c                ó`   • U R                   R                  R                  U R                  5      $ r#   )r%   r†  Úauditrþ  r/   s    r)   r1  Úworkingfilectx.auditŽ  r$  r,   c                ó$   • UR                  U 5      $ )rx  )rm   r}  s     r)   rm   Úworkingfilectx.cmp‘  s   € ð �x‰x˜‹~Ðr,   c                ó¬   • U R                   R                  R                  SS5      nU R                   R                  R	                  U R
                  XS9  g)ú+wraps unlink for a repo's working directoryrŒ  s   removeemptydirs)ÚignoremissingÚrmdirN)r%   rƒ   Ú
configboolr†  Ú
unlinkpathrþ  )r'   r7  r8  s      r)   ÚremoveÚworkingfilectx.removeš  sA   € à—
‘
—‘×(Ñ(¨Ð:LÓMˆØ�
‰
�‰×"Ñ"Ø�J‰J mð 	#ò 	
r,   c                óV   • U R                   R                  " U R                  X4SU0UD6$ )úwraps repo.wwriteÚbackgroundclose)r%   Úwwriterþ  ©r'   r_  rÚ   r?  Úkwargss        r)   rÄ  Úworkingfilectx.write¡  s2   € à�z‰z× Ò Ø�J‰J˜ñ
Ø5Dð
ØHNñ
ð 	
r,   c                ób   • U R                   R                  R                  XR                  5        g)zmarks this file a copy of `src`N)r%   rG  r  rþ  )r'   rá  s     r)   Ú
markcopiedÚworkingfilectx.markcopied§  s   € à�
‰
×Ñ× Ñ  §j¡jÕ1r,   c                óh  • U R                   R                  nU R                  nUR                  U5        U R                   R                  R                  SS5      (       a•  UR                  U5      (       a&  UR                  U5      (       d  UR                  USS9  [        [        [        R                  " U5      5      5       H,  nUR                  U5      (       d  M  UR                  U5          g   gUR                  U5      (       a)  UR                  U5      (       d  UR                  U5        ggg)zcRemoves conflicting items in the working directory so that
``write()`` can be called successfully.
rŒ  s   merge.checkpathconflictsT)ÚforciblyN)r%   r†  rþ  r1  rƒ   r9  Úisdirrr  Úrmtreer1  r‘  r   ÚfinddirsÚisfileorlinkÚunlinkÚ
removedirs)r'   r†  r%  rŒ  s       r)   ÚclearunknownÚworkingfilectx.clearunknown«  sÝ   € ð �z‰z�‰ˆØ�J‰JˆØ�
‰
�1ŒØ�:‰:�=‰=×#Ñ#ØÐ8÷
ñ 
ð
 �z‰z˜!�}‰} T§[¡[°§^¡^Ø—‘˜A¨�Ñ-Üœd¤8×#4Ò#4°QÓ#7Ó8Ö9�Ø×$Ñ$ Q×'Ó'Ø—K‘K ”NÙò :ð �z‰z˜!�}‰} T§[¡[°§^¡^Ø—‘ Õ"ð &4ˆ}r,   c                ód   • U R                   R                  R                  U R                  X5        g r#   )r%   r†  Úsetflagsrþ  )r'   r¬  r¿  s      r)   rR  Úworkingfilectx.setflagsÂ  s   € Ø�
‰
�‰× Ñ  §¡¨QÕ2r,   rG   rõ  rF  )r9   rG  rH  rI  rJ  r*   rM  r  r_  rZ  r`  r‡  rs  r+  r.  r1  rm   r;  rÄ  rE  rO  rR  rN  rø  rù  s   @r)   rv  rv  j  sl   ø† ñ1÷:ð ñ&ó ð&ò,ò6ò9ò1òò2ò3ò1òô
ô
ò2ò#÷.3ð 3r,   rv  c                  ó,  ^ • \ rS rSrSrU 4S jrS rS&S jrS r\	S 5       r
\	S 5       rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS'S jrS rS rS rS rS r      S(S jr S r!S r"S  r#S! r$ S)S" jr%S&S# jr&S*S$ jr'S%r(U =r)$ )+ÚoverlayworkingctxiÆ  am  Wraps another mutable context with a write-back cache that can be
converted into a commit context.

self._cache[path] maps to a dict with keys: {
    'exists': bool?
    'date': date?
    'data': str?
    'flags': str?
    'copied': str? (path or None)
}
If `exists` is True, `flags` must be non-None and 'date' is non-None. If it
is `False`, the file was deleted.
c                óD   >• [         TU ]  U5        U R                  5         g r#   )rQ  r*   rb   )r'   r(   r:  s     €r)   r*   Úoverlayworkingctx.__init__Õ  s   ø€ Ü‰Ñ˜ÔØ�
‰
�r,   c                óN   • Xl         U/U l        [        R                  " U S5        g )Nó	   _manifest)Ú_wrappedctxrÇ   r   Úclearcachedproperty)r'   Ú
wrappedctxs     r)   ÚsetbaseÚoverlayworkingctx.setbaseÙ  s#   € Ø%ÔØ#˜ˆŒô 	× Ò   |Õ4r,   c                óä   • Uc   U R                   R                  R                  nXR                  R	                  5       :X  d   eU R                  U R                   R                  5       U   /U l        g r#   )r%   rk   rÓ  rZ  r.   r^  rÇ   )r'   rZ  r[  s      r)   rX  Úoverlayworkingctx.setparentsá  s[   € Ø‰>Ø—Z‘Z×-Ñ-×4Ñ4ˆFØ×)Ñ)×.Ñ.Ó0Ó0Ð0Ð0Ø×)Ñ)¨4¯:©:×+@Ñ+@Ó+BÀ6Ñ+JÐKˆ�r,   c                óL  • U R                  U5      (       ar  U R                  U   S   (       aB  U R                  U   S   b  U R                  U   S   $ U R                  U   R                  5       $ [        R
                  " SU-  5      eU R                  U   R                  5       $ ©Nó   existsó   dataó   No such file or directory: %s)ÚisdirtyÚ_cacherZ  r_  r   r{  rã   s     r)   r_  Úoverlayworkingctx.dataç  s�   € Ø�<‰<˜×ÑØ�{‰{˜4Ñ  ×+Ø—;‘;˜tÑ$ WÑ-Ñ9ØŸ;™; tÑ,¨WÑ5Ð5ð  ×+Ñ+¨DÑ1×6Ñ6Ó8Ð8ä×,Ò,Ø4°tÑ;óð ð ×#Ñ# DÑ)×.Ñ.Ó0Ð0r,   c                óò  • U R                  5       nUS   R                  5       R                  5       nU R                  nU R	                  5        H<  nU R
                  R                  R                  X$'   UR                  XC" U5      5        M>     U R                  5        H<  nU R
                  R                  R                  X$'   UR                  XC" U5      5        M>     U R                  5        H  nX$	 M     U$ rË   )rÈ   r[   r  r4  ru   r%   rk   ræ  rè  rt   rç  rv   )r'   rÈ   rb  rß   rÝ   s        r)   rM   Úoverlayworkingctx._manifestö  sÁ   € à—,‘,“.ˆØ�a‰j×!Ñ!Ó#×(Ñ(Ó*ˆà�~‰~ˆØ—J‘J–LˆDØŸ
™
×0Ñ0×<Ñ<ˆC‰IØ�K‰K˜˜d 4›jÖ)ñ !ð —M‘M–OˆDØŸ
™
×0Ñ0×?Ñ?ˆC‰IØ�K‰K˜˜d 4›jÖ)ñ $ð —L‘L–NˆDØ’	ñ #àˆ
r,   c                ó   ^ • U 4S jnU$ )Nc                ó(   >• TR                   U    S   $ )Nó   flags©rg  )rÝ   r'   s    €r)   r%  Ú&overlayworkingctx._flagfunc.<locals>.f	  s   ø€ Ø—;‘;˜tÑ$ XÑ.Ð.r,   rG   ©r'   r%  s   ` r)   r4  Úoverlayworkingctx._flagfunc	  s   ø€ õ	/ð ˆr,   c                óx   • [        U R                  5       U R                  5       -   U R                  5       -   5      $ r#   )r‡  ru   rt   rv   r/   s    r)   rÙ   Úoverlayworkingctx.files	  s)   € Ü�d—j‘j“l T§]¡]£_Ñ4°t·|±|³~ÑEÓFÐFr,   c                óÄ   • U R                   R                  5        Vs/ s H6  nU R                   U   S   (       d  M  U R                  U5      (       d  M4  UPM8     sn$ s  snf ©Nrc  ©rg  ÚkeysÚ_existsinparentrp  s     r)   rt   Úoverlayworkingctx.modified	  sY   € ð —[‘[×%Ñ%Ô'ó
â'�Ø�{‰{˜1‰~˜iÕ(ó à-1×-AÑ-AÀ!×-D÷ Ù'ñ
ð 	
ùò 
ó   �A¼AÁAc                óÄ   • U R                   R                  5        Vs/ s H6  nU R                   U   S   (       d  M  U R                  U5      (       a  M4  UPM8     sn$ s  snf ru  rv  rp  s     r)   ru   Úoverlayworkingctx.added	  sY   € ð —[‘[×%Ñ%Ô'ó
â'�Ø�{‰{˜1‰~˜iÕ(ó à15×1EÑ1EÀa×1H÷ Ù'ñ
ð 	
ùò 
rz  c                óÄ   • U R                   R                  5        Vs/ s H6  nU R                   U   S   (       a  M  U R                  U5      (       d  M4  UPM8     sn$ s  snf ru  rv  rp  s     r)   rv   Úoverlayworkingctx.removed	  sY   € ð —[‘[×%Ñ%Ô'ó
â'�Ø—;‘;˜q‘> )Õ,ó à15×1EÑ1EÀa×1H÷ Ù'ñ
ð 	
ùò 
rz  c                ó   • 0 nU R                   R                  5       nU R                  R                  5        HC  nU" U5      (       d  M  UR	                  US 5        U R                  U   S   nU(       d  M?  XAU'   ME     U$ ©Nó   copied©r%   r*  rg  rw  rÁ  ©r'   rY  r*  r%  r‘  s        r)   rï   Úoverlayworkingctx.p1copies%	  óo   € ØˆØ—j‘j×,Ñ,Ó.ˆØ—‘×!Ñ!Ö#ˆAÙ˜q—>‘>ÙØ�J‰J�q˜$ÔØ—[‘[ ‘^ IÑ.ˆFßˆvØ"�q“	ñ $ð ˆr,   c                ó   • 0 nU R                   R                  5       nU R                  R                  5        HC  nU" U5      (       d  M  UR	                  US 5        U R                  U   S   nU(       d  M?  XAU'   ME     U$ r€  r‚  rƒ  s        r)   ró   Úoverlayworkingctx.p2copies1	  r…  r,   c                ó   • grü  rG   r/   s    r)   r¹  Úoverlayworkingctx.isinmemory=	  rþ  r,   c                óŒ   • U R                  U5      (       a  U R                  U   S   $ U R                  U   R                  5       $ )Nó   date)rf  rg  rZ  rs  rã   s     r)   ÚfiledateÚoverlayworkingctx.filedate@	  s?   € Ø�<‰<˜×ÑØ—;‘;˜tÑ$ WÑ-Ð-à×#Ñ# DÑ)×.Ñ.Ó0Ð0r,   c                óf   • U R                  USU R                  U5      U R                  U5      US9  g )NT)r+  rs  rÚ   r  )Ú
_markdirtyrŒ  rÚ   )r'   rÝ   Úorigins      r)   rE  Úoverlayworkingctx.markcopiedF	  s4   € Ø�‰ØØØ—‘˜tÓ$Ø—*‘*˜TÓ"Øð 	ò 	
r,   c                óT   • U R                  U5      (       a  U R                  U   S   $ g r€  )rf  rg  rã   s     r)   ÚcopydataÚoverlayworkingctx.copydataO	  s(   € Ø�<‰<˜×ÑØ—;‘;˜tÑ$ YÑ/Ð/àr,   c                óì   • U R                  U5      (       aB  U R                  U   S   (       a  U R                  U   S   $ [        R                  " SU-  5      eU R                  U   R                  5       $ )Nrc  rm  re  )rf  rg  r   r{  rZ  rÚ   rã   s     r)   rÚ   Úoverlayworkingctx.flagsU	  sm   € Ø�<‰<˜×ÑØ�{‰{˜4Ñ  ×+Ø—{‘{ 4Ñ(¨Ñ2Ð2ä×,Ò,Ø4°tÑ;óð ð ×#Ñ# DÑ)×/Ñ/Ó1Ð1r,   c                óh   • XR                   ;   a  U R                   U   S   $ XR                  5       ;   $ ru  )rg  rÌ   rN   s     r)   rP   Úoverlayworkingctx.__contains__`	  s/   € Ø—+‘+ÓØ—;‘;˜sÑ# IÑ.Ð.Ø—g‘g“iÑÐr,   c                óX   •  U R                   U     g! [        R                   a     gf = fr  )rZ  r   rØ   rã   s     r)   rx  Ú!overlayworkingctx._existsinparente	  s2   € ð	ð ×Ñ˜TÒ"ØøÜ×(Ñ(ó 	Ùð	ús   ‚ ’)¨)c           
     ób  ^ • U 4S jnUR                  S5      n[        [        U5      5       H'  nSR                  USU 5      nUT ;   d  M  U" X5        M)     T R	                  U/SS9n[        T R                  5       R                  5       R                  U5      5      n[        U5      S:”  a}  [        U5      S:X  a
  US   U:X  a  gU Vs/ s H  oˆT ;   d  M
  UPM     nnU(       d  g[        R                  " SXT R                  5       [        U5      S	R                  U5      4-  5      egs  snf )
a  Replicates conflict checks done by wvfs.write().

Since we never write to the filesystem and never call `applyupdates` in
IMM, we'll never check that a path is actually writable -- e.g., because
it adds `a/foo`, but `a` is actually a file in the other commit.
c                ó*  >• STR                  5       U   R                  5       ;   a7  [        R                  " SXTR                  5       R	                  5       4-  5      e[        R                  " SXTR                  5       R	                  5       4-  5      e)Nrq  s*   error: %s conflicts with symlink %s in %d.s+   error: '%s' conflicts with file '%s' in %d.)rÌ   rÚ   r   rÝ  rc   )rÝ   Ú	componentr'   s     €r)   ÚfailÚ/overlayworkingctx._auditconflicts.<locals>.failw	  sƒ   ø€ ð �t—w‘w“y Ñ+×1Ñ1Ó3Ó3Ü—k’kðØ!%°$·'±'³)·-±-³/Ð BñCóð ô
 —k’kðØ"¨t¯w©w«y¯}©}«Ð?ñ@óð r,   ræ  r   s   path)r  r   Nsb   error: file '%s' cannot be written because  '%s/' is a directory in %s (containing %d entries: %s)s   , )ÚsplitÚrangerÐ   rØ  r   r‘  rÌ   r[   rî  r   rÝ  )	r'   rÝ   rž  Ú
componentsrê  r�  r   Úmfilesrï  s	   `        r)   Ú_auditconflictsÚ!overlayworkingctx._auditconflictso	  s  ø€ õ	ð  —Z‘Z Ó%ˆ
Ü”s˜:“Ö'ˆAØŸ	™	 *¨Q¨q /Ó2ˆIØ˜DÕ Ù�TÖ%ñ (ð —
‘
˜D˜6¨7�
Ð3ˆÜ�d—g‘g“i×(Ñ(Ó*×/Ñ/°Ó6Ó7ˆÜˆv‹;˜‹?Ü�6‹{˜aÓ F¨1¡I°Ó$5Øá!'Ó5¢˜A°©9—a¡ˆFÐ5ÞØÜ—+’+ð ð ˜tŸw™w›y¬#¨f«+°u·z±zÀ&Ó7IÐJñKóð ð ùò 6s   Ã	D,ÃD,c                ó¤   • Uc  [         R                  " S5      eU R                  U5        U R                  USU[        R
                  " 5       US9  g )Ns   data must be non-NoneT)r+  r_  rs  rÚ   )r   r{  r¤  r�  r   r  )r'   rÝ   r_  rÚ   rB  s        r)   rÄ  Úoverlayworkingctx.writeŸ	  sL   € Ø‰<Ü×(Ò(Ð)AÓBÐBØ×Ñ˜TÔ"Ø�‰Ø˜ D¬x×/@Ò/@Ó/BÈ%ð 	ò 	
r,   c                óx   • SnU(       a  SnO	U(       a  SnU R                  US[        R                  " 5       US9  g )Nr,   rq  rj  T)r+  rs  rÚ   )r�  r   r  )r'   rÝ   r¬  r¿  rß   s        r)   rR  Úoverlayworkingctx.setflags§	  s4   € ØˆÞØ‰DÞØˆDØ�‰˜ T´×0AÒ0AÓ0CÈ4ˆÒPr,   c                ó$   • U R                  USS9  g )NF)r+  )r�  rã   s     r)   r;  Úoverlayworkingctx.remove¯	  s   € Ø�‰˜ UˆÒ+r,   c                ó,  • U R                  U5      (       an  U R                  U   S   (       aE  SU R                  U   S   ;   a/  U R                  U R                  U   S   R                  5       5      $ U R                  U   S   $ U R	                  U5      $ )zaexists behaves like `lexists`, but needs to follow symlinks and
return False if they are broken.
rc  rq  rm  rd  )rf  rg  r+  Ústriprx  rã   s     r)   r+  Úoverlayworkingctx.exists²	  s‡   € ð �<‰<˜×Ñð —‘˜DÑ! )×,Ø˜DŸK™K¨Ñ-¨hÑ7Ó7à—{‘{ 4§;¡;¨tÑ#4°WÑ#=×#CÑ#CÓ#EÓFÐFà—{‘{ 4Ñ(¨Ñ3Ð3à×#Ñ# DÓ)Ð)r,   c                ót   • U R                  U5      (       a  U R                  U   S   $ U R                  U5      $ )z'lexists returns True if the path existsrc  )rf  rg  rx  rã   s     r)   r.  Úoverlayworkingctx.lexistsÃ	  s6   € à�<‰<˜×ÑØ—;‘;˜tÑ$ YÑ/Ð/à×#Ñ# DÓ)Ð)r,   c                óþ   • U R                  U5      (       aK  U R                  U   S   (       a  [        U R                  U   S   5      $ [        R                  " SU-  5      eU R
                  U   R                  5       $ rb  )rf  rg  rÐ   r   r{  rZ  r`  rã   s     r)   r`  Úoverlayworkingctx.sizeÊ	  sr   € Ø�<‰<˜×ÑØ�{‰{˜4Ñ  ×+Ü˜4Ÿ;™; tÑ,¨WÑ5Ó6Ð6ä×,Ò,Ø4°tÑ;óð ð ×Ñ Ñ%×*Ñ*Ó,Ð,r,   c                ór  ^ • Uc&  T R                  5       n[        U5      S:X  a  US   S4nUS   c  T R                  US      S4nO$T R                  US      T R                  US      4nT R                  5       nU 4S jn	Uc  T R                  R                  5       n[        T R                  UUUU	UUUUUS9
$ )z–Converts this ``overlayworkingctx`` into a ``memctx`` ready to be
committed.

``text`` is the commit message.
``parents`` (optional) are rev numbers.
Nr   r   c           
     ó¾   >• TR                   R                  U5      nUc  TR                  U5      $ US   (       a#  [        U UUUS   SUS   ;   SUS   ;   US   5      $ g )Nrc  rd  rq  rm  rj  r�  )rg  rž  rS   Ú
memfilectx)r(   ÚmemctxrÝ   Úhitr'   s       €r)   ÚgetfileÚ+overlayworkingctx.tomemctx.<locals>.getfileò	  sq   ø€ Ø—+‘+—/‘/ $Ó'ˆCØ‰{Ø—|‘| DÓ)Ð)Ø�Y—Ü!ØØØØ˜‘LØ˜C ™MÑ)Ø˜C ™MÑ)Ø˜	‘Nóð ð r,   )rs  ru  rr  r>  Úeditor)rÈ   rÐ   r%   rÙ   rZ  r>  r¶  )
r'   rñ  r>  ru  rs  rÈ   rr  rº  rÙ   r¸  s
   `         r)   ÚtomemctxÚoverlayworkingctx.tomemctxÔ	  sÐ   ø€ ð" ‰?Ø—l‘l“nˆGÜ�7‹|˜qÓ Ø" 1™: tÐ,�ð �1‰:ÑØ—z‘z '¨!¡*Ñ-¨tÐ4‰Gà—z‘z '¨!¡*Ñ-¨t¯z©z¸'À!¹*Ñ/EÐFˆGà—
‘
“ˆõ	ð& ‰>Ø×%Ñ%×,Ñ,Ó.ˆFäØ�J‰JØØØØØØØØØñ
ð 	
r,   c                óú   • UR                  5       R                  5       nUR                  5       US'   U R                  UR	                  5       UR                  5       UUR                  5       UR                  5       S9$ )Ns   amend_source)rñ  r>  ru  rs  rr  )ru  r  r   r»  rt  r>  rs  rr  )r'   Ú	precursorru  s      r)   Útomemctx_for_amendÚ$overlayworkingctx.tomemctx_for_amend
  sl   € Ø—‘Ó!×&Ñ&Ó(ˆØ!*§¡£ˆˆoÑØ�}‰}Ø×&Ñ&Ó(Ø×#Ñ#Ó%ØØ—‘Ó!Ø—‘Ó!ð ð 
ð 	
r,   c                ó   • XR                   ;   $ r#   rn  rã   s     r)   rf  Úoverlayworkingctx.isdirty 
  s   € Ø—{‘{Ñ"Ð"r,   c                ó    • S U l         0 U l        g r#   )Ú_mergestaterg  r/   s    r)   rb   Úoverlayworkingctx.clean#
  s   € ØˆÔØˆ�r,   c           	     óp  • / n[         R                  " U R                  5       U R                  5       R	                  5       [         R
                  " U R                  5       U R                  R                  5       5      4/5        U R                  R                  5        He  nU R                  U   n U R                  U   nUR                  5       US   :X  a,  UR                  5       US   :X  a  UR                  U5        Mc  Me  Mg     U H  nU R                  U	 M     U$ ! [        R                   a     M˜  f = f)zÃRemoves keys from the cache that are actually clean, by comparing
them with the underlying context.

This can occur during the merge process, e.g. by passing --tool :local
to resolve a conflict.
rd  rm  )r   Úprefetchfilesr(   rÌ   rc   Ú
matchfilesrg  rw  rZ  r_  rÚ   rj   r   rØ   )r'   rw  rÝ   ÚcacheÚ
underlyings        r)   Ú_compactÚoverlayworkingctx._compact'
  s  € ð ˆô 	×ÒØ�I‰I‹Kð —G‘G“I—M‘M“OÜ×&Ò& t§y¡y£{°D·K±K×4DÑ4DÓ4FÓGððô	
ð —K‘K×$Ñ$Ö&ˆDØ—K‘K Ñ%ˆEð	Ø!×-Ñ-¨dÑ3�
à—O‘OÓ%¨¨w©Ó7Ø"×(Ñ(Ó*¨e°H©oÓ=à—K‘K Ö%ñ >ñ 8ñ 'ó ˆDØ—‘˜DÒ!ñ àˆøô ×,Ñ,ó âðús   Â/ADÄD5Ä4D5c                ó  • U(       aX  UcU  U R                   R                  U5      =(       d    0 nUR                  S5      nUc  U R                  U   R                  5       nUUUUUS.U R                   U'   [        R
                  " U S5        g )Nrd  )rc  rd  r‹  rm  r�  rY  )rg  rž  rZ  r_  r   r[  )r'   rÝ   r+  r_  rs  rÚ   r  Úoldentrys           r)   r�  Úoverlayworkingctx._markdirtyL
  s�   € ö �d‘lØ—{‘{—‘ tÓ,×2°ˆHØ—<‘< Ó(ˆDØ‰|Ø×'Ñ'¨Ñ-×2Ñ2Ó4�ð ØØØØñ
ˆ�‰�DÑô 	× Ò   |Õ4r,   c                ó,   • [        U R                  XUS9$ )N)rÆ  rË  )Úoverlayworkingfilectxr%   rw  s      r)   rS   Úoverlayworkingctx.filectxa
  s   € Ü$Ø�J‰J˜°7ñ
ð 	
r,   c                óŒ   • U(       d  U R                   c%  [        R                  " U R                  5      U l         U R                   $ r#   )rÄ  rþ  Úmemmergestater%   r;  s     r)   r   Úoverlayworkingctx.mergestatef
  s3   € Þ�D×$Ñ$Ñ,Ü,×:Ò:¸4¿:¹:ÓFˆDÔØ×ÑÐr,   )rg  rÄ  rÇ   rZ  r#   r   ©NNNNNN)NNr,   NrF  )*r9   rG  rH  rI  rJ  r*   r]  rX  r_  rM  rM   r4  rÙ   rt   ru   rv   rï   ró   r¹  rŒ  rE  r“  rÚ   rP   rx  r¤  rÄ  rR  r;  r+  r.  r`  r»  r¿  rf  rb   rË  r�  rS   r   rN  rø  rù  s   @r)   rU  rU  Æ  sö   ø† ñõò5ôLò1ð ñó ðð ñó ðòGò
ò
ò
ò
ò
òò1ò
òò	2ò ò
ò.ô`
òQò,ò*ò"*ò-ð ØØØØØô?
òB	
ò#òò#ðL EIô5ô*
÷
 ò  r,   rU  c                  ó’   ^ • \ rS rSrSrSU 4S jjrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSS jrSS jrS rSrU =r$ )rÑ  il
  z‡Wrap a ``workingfilectx`` but intercepts all writes into an in-memory
cache, which can be flushed through later by calling ``flush()``.c                óJ   >• [         TU ]  XX45        Xl        X@l        X l        g r#   )rQ  r*   r%   Ú_parentrþ  )r'   r(   rÝ   rË  rÆ  r:  s        €r)   r*   Úoverlayworkingfilectx.__init__p
  s!   ø€ Ü‰Ñ˜ WÔ5ØŒ
ØŒØ�
r,   c                óD   • U R                  5       UR                  5       :g  $ r#   ©r_  r}  s     r)   rm   Úoverlayworkingfilectx.cmpv
  ó   € Ø�y‰y‹{˜dŸi™i›kÑ)Ð)r,   c                ó   • U R                   $ r#   )rÙ  r/   s    r)   r)  Úoverlayworkingfilectx.changectxy
  rX  r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  r_  rþ  r/   s    r)   r_  Úoverlayworkingfilectx.data|
  ó   € Ø�|‰|× Ñ  §¡Ó,Ð,r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  rŒ  rþ  r/   s    r)   rs  Úoverlayworkingfilectx.date
  ó   € Ø�|‰|×$Ñ$ T§Z¡ZÓ0Ð0r,   c                ó"   • U R                  5       $ r#   )r.  r/   s    r)   r+  Úoverlayworkingfilectx.exists‚
  s   € Ø�|‰|‹~Ðr,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  r+  rþ  r/   s    r)   r.  Úoverlayworkingfilectx.lexists…
  ó   € Ø�|‰|×"Ñ" 4§:¡:Ó.Ð.r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  r“  rþ  r/   s    r)   rZ  Ú overlayworkingfilectx.copysourceˆ
  ræ  r,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  r`  rþ  r/   s    r)   r`  Úoverlayworkingfilectx.size‹
  rã  r,   c                óP   • U R                   R                  U R                  U5        g r#   )rÙ  rE  rþ  )r'   r�  s     r)   rE  Ú overlayworkingfilectx.markcopiedŽ
  s   € Ø�‰×Ñ §
¡
¨FÕ3r,   c                ó   • g r#   rG   r/   s    r)   r1  Úoverlayworkingfilectx.audit‘
  ó   € Ør,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  rÚ   rþ  r/   s    r)   rÚ   Úoverlayworkingfilectx.flags”
  s   € Ø�|‰|×!Ñ! $§*¡*Ó-Ð-r,   c                óN   • U R                   R                  U R                  X5      $ r#   )rÙ  rR  rþ  )r'   rr  rl  s      r)   rR  Úoverlayworkingfilectx.setflags—
  s   € Ø�|‰|×$Ñ$ T§Z¡Z°Ó@Ð@r,   c                óR   • U R                   R                  " U R                  X40 UD6$ r#   )rÙ  rÄ  rþ  rA  s        r)   rÄ  Úoverlayworkingfilectx.writeš
  s"   € Ø�|‰|×!Ò! $§*¡*¨dÑD¸VÑDÐDr,   c                óL   • U R                   R                  U R                  5      $ r#   )rÙ  r;  rþ  ©r'   r7  s     r)   r;  Úoverlayworkingfilectx.remove�
  rë  r,   c                ó   • g r#   rG   r/   s    r)   rO  Ú"overlayworkingfilectx.clearunknown 
  rô  r,   )rÙ  rþ  r%   rõ  rF  )r9   rG  rH  rI  rJ  r*   rm   r)  r_  rs  r+  r.  rZ  r`  rE  r1  rÚ   rR  rÄ  r;  rO  rN  rø  rù  s   @r)   rÑ  rÑ  l
  s`   ø† ñI÷ò*òò-ò1òò/ò1ò-ò4òò.òAôEô/÷ð r,   rÑ  c                  óT   ^ • \ rS rSrSr SU 4S jjr S S	S jjr\S 5       rSr	U =r
$ )
Úworkingcommitctxi¤
  z»A workingcommitctx object makes access to data related to
the revision being committed convenient.

This hides changes in the working directory, if they aren't
committed in this context.
c                ó(   >• [         TU ]  XXEXb5        g r#   r  )r'   r(   r  rñ  rr  rs  ru  r:  s          €r)   r*   Úworkingcommitctx.__init__¬
  s   ø€ ô 	‰Ñ˜ T°Õ@r,   c           
     ó  • U(       a.  U R                    Vs/ s H  oUU R                  ;  d  M  UPM     nnO/ n[        R                  " U R                  R
                   Vs/ s H  oQ" U5      (       d  M  UPM     snU R                  R                   Vs/ s H  oQ" U5      (       d  M  UPM     snU R                  R                   Vs/ s H  oQ" U5      (       d  M  UPM     sn/ / / U5      $ s  snf s  snf s  snf s  snf )zœReturn matched files only in ``self._status``

Uncommitted files appear "clean" via this context, even if
they aren't actually so in the working directory.
)rM   Ú_changedsetr   r   rí  rt   ru   rv   )r'   r   rf   rb   re   r%  s         r)   rÚ  Ú workingcommitctx._dirstatestatus±
  sË   € ö Ø $§¢ÓL¢˜1¸4×;KÑ;KÑ2K—Q¡ˆEÐLˆEàˆEÜ�~Š~ØŸ™×-Ò-Ó:Ò-�1°°q·�QÑ-Ñ:ØŸ™×*Ò*Ó7Ò*�1¨e°A¯h�QÑ*Ñ7ØŸ™×,Ò,Ó9Ò,�1°°a·�QÑ,Ñ9ØØØØó
ð 	
ùò Mùò ;ùÚ7ùÚ9s.   –C-­C-Á C2Á4C2ÂC7
Â(C7
ÃC<ÃC<c                óØ   • [        U R                  R                  5      nUR                  U R                  R                  5        UR                  U R                  R
                  5        U$ )z/Return the set of files changed in this context)rg   rí  rt   Úupdateru   rv   )r'   Úchangeds     r)   r  Úworkingcommitctx._changedsetÇ
  sI   € ô �d—l‘l×+Ñ+Ó,ˆØ�‰�t—|‘|×)Ñ)Ô*Ø�‰�t—|‘|×+Ñ+Ô,Øˆr,   rG   )r,   NNNr  rB  )r9   rG  rH  rI  rJ  r*   rÚ  rM  r  rN  rø  rù  s   @r)   r  r  ¤
  s;   ø† ñð DH÷Að :?ð
à	õ
ð, ñó ör,   r  c                ó   ^ ^• 0 mUU 4S jnU$ )zÈCreate a filectxfn that caches based on the path.

We can't use util.cachefunc because it uses all arguments as the cache
key and this creates a cycle since the arguments include the repo and
memctx.
c                ó2   >• UT;  a  T" XU5      TU'   TU   $ r#   rG   )r(   r¶  rÝ   rÉ  rc  s      €€r)   Ú
getfilectxÚ(makecachingfilectxfn.<locals>.getfilectxÙ
  s%   ø€ Ø�uÓÙ˜t¨TÓ2ˆE�$‰KØ�T‰{Ðr,   rG   )rc  r  rÉ  s   ` @r)   Úmakecachingfilectxfnr  Ð
  s   ù€ ð €Eöð
 Ðr,   c                ó   ^ • U 4S jnU$ )z€Given a context return a memfilectx for ctx[path]

This is a convenience method for building a memctx based on another
context.
c           
     ó    >• TU   nUR                  5       n[        U UUUR                  5       UR                  5       UR	                  5       US9$ ©N)rr  rl  rZ  )rZ  rµ  r_  rr  rl  )r(   r¶  rÝ   r~  rZ  r  s        €r)   r  Ú"memfilefromctx.<locals>.getfilectxè
  sL   ø€ Ø�4‰yˆØ—_‘_Ó&ˆ
ÜØØØØ�I‰I‹KØ—;‘;“=Ø—;‘;“=Ø!ñ
ð 	
r,   rG   )r  r  s   ` r)   Úmemfilefromctxr  á
  s   ø€ õ
ð Ðr,   c                ó   ^ • U 4S jnU$ )z†Given a patch (e.g. patchstore object) return a memfilectx

This is a convenience method for building a memctx based on a patchstore.
c           
     óZ   >• TR                  U5      u  p4nUc  g Uu  pg[        U UUUUUUS9$ r  )r¸  rµ  )	r(   r¶  rÝ   r_  r±  rZ  rr  rl  Ú
patchstores	           €r)   r  Ú$memfilefrompatch.<locals>.getfilectxþ
  sI   ø€ Ø!+×!3Ñ!3°DÓ!9Ñˆ�JØ‰<ØØ‰ˆÜØØØØØØØ!ñ
ð 	
r,   rG   )r  r  s   ` r)   Úmemfilefrompatchr  ø
  s   ø€ õ
ð Ðr,   c                  óx   ^ • \ rS rSrSrSr     SU 4S jjrSS jrS r\	S 5       r
\	SS j5       rS	 rS
rU =r$ )r¶  i  aö  Use memctx to perform in-memory commits via localrepo.commitctx().

Revision information is supplied at initialization time while
related files data and is made available through a callback
mechanism.  'repo' is the current localrepo, 'parents' is a
sequence of two parent revisions identifiers (pass None for every
missing parent), 'text' is the commit message and 'files' lists
names of files touched by the revision (normalized and relative to
repository root).

filectxfn(repo, memctx, path) is a callable receiving the
repository, the current memctx object and the normalized path of
requested file, relative to repository root. It is fired by the
commit function for every file in 'files', but calls order is
undefined. If the file is available in the revision being
committed (updated or added), filectxfn returns a memfilectx
object. If the file was removed, filectxfn return None for recent
Mercurial. Moved files are represented by marking the source file
removed and the new file added with copy information (see
memfilectx).

user receives the committer name and defaults to current
repository username, date is the commit date in any format
supported by dateutil.parsedate() and defaults to current date, extra
is a dictionary of metadata or is left empty.
Tc           	     ó�  >• [         TU ]  XXgX‰S9  S U l        S U l        U Vs/ s H+  o»=(       d     U R                  R
                  R                  PM-     nnUu  pÍXÍ4 Vs/ s H  o°R                  U   PM     snU l        [        [        U5      5      nX@l
        0 U l        [        U[        R                  5      (       a  [        U5      nO[!        U5      (       d  [#        U5      n[%        U5      U l        U
(       a?  U
" U R                  U / 5      U l        U R                  R+                  U R(                  5        g g s  snf s  snf )NrF  )rQ  r*   r@   r�   r%   rk   rÓ  rÇ   r‡  rg   Ú_filesr„   r(  r   Ú	filestorer  Úcallabler  r  Ú
_filectxfnré  Úsavecommitmessage)r'   r(   rÈ   rñ  rÙ   Ú	filectxfnrr  rs  ru  r>  rº  rŒ  rÌ   rÑ   r:  s                 €r)   r*   Úmemctx.__init__1  s	  ø€ ô 	‰Ñ˜ T°ÐÑFØˆŒ	ØˆŒ
ÙCJÓKÂ7¸a×8˜Ÿ™×1Ñ1×8Ñ8Ò8Á7ˆÐKØ‰ˆØ13±Ó9²¨1Ÿ™ Aœ±Ñ9ˆŒÜ”s˜5“zÓ"ˆØŒØˆŒä�i¤§¡×1Ñ1Ü(¨Ó3‰IÜ˜)×$Ñ$ä& yÓ1ˆIô /¨yÓ9ˆŒæÙ §
¡
¨D°"Ó5ˆDŒJØ�J‰J×(Ñ(¨¯©Õ4ð ùò! Lùâ9s   £2D>Á Ec                ó:   • U R                  U R                  X5      $ )zhget a file context from the working directory

Returns None if file doesn't exist and should be removed.)r  r%   rw  s      r)   rS   Úmemctx.filectxU  s   € ð �‰˜tŸz™z¨4Ó6Ð6r,   c                ó8   • U R                   R                  U 5      $ ©zcommit context to the repo©r%   Ú	commitctxr/   s    r)   ÚcommitÚmemctx.commit[  ó   € à�z‰z×#Ñ# DÓ)Ð)r,   c                ó¨  • U R                   S   nUR                  5       R                  5       nU R                  R                   H%  nU R
                  R                  R                  X#'   M'     U R                  R                   H%  nU R
                  R                  R                  X#'   M'     U R                  R                   H  nX2;   d  M
  X#	 M     U$ )z;generate a manifest based on the return values of filectxfnr   )rÇ   r[   r  rí  rt   r%   rk   rç  ru   ræ  rv   )r'   rü   rb  r%  s       r)   rM   Úmemctx._manifest_  s¥   € ð
 �}‰}˜QÑˆØ�m‰m‹o×"Ñ"Ó$ˆà—‘×&Ô&ˆAØ—Z‘Z×-Ñ-×<Ñ<ˆC‹Fñ 'ð —‘×#Ô#ˆAØ—Z‘Z×-Ñ-×9Ñ9ˆC‹Fñ $ð —‘×%Ô%ˆAØ�xØ’Fñ &ð ˆ
r,   c           	     óÌ  ^^• U R                  5       R                  5       mU R                  S   nUR                  5       [        :w  a  UR                  5       mUU4S jnOU4S jn/ / / pTnU R
                   HP  nU" U5      (       d  UR                  U5        M#  X   (       a  UR                  U5        M?  UR                  U5        MR     [        R                  " X4U/ / / / 5      $ )z?Calculate exact status from ``files`` specified at constructionr   c                ó&   >• U T;   =(       d    U T;   $ r#   rG   ©r%  Úman1Úman2s    €€r)   rµ  Ú memctx._status.<locals>.<lambda>}  ó   ø€   d¡×!7¨a°4©iÐ!7r,   c                ó   >• U T;   $ r#   rG   ©r%  r1  s    €r)   rµ  r3    ó	   ø€   d¢r,   ©	rÌ   r[   rÇ   rc   r   r  rj   r   r   ©	r'   rÑ   Úmanagingrt   ru   rv   r%  r1  r2  s	          @@r)   rí  Úmemctx._statuss  s±   ù€ ð �w‰w‹y×!Ñ!Ó#ˆØ�]‰]˜1Ñˆð �6‰6‹8”wÓØ—;‘;“=ˆDÝ7‰Hä*ˆHà#% r¨2˜ˆØ—”ˆAÙ˜A—;‘;Ø—‘˜Q–Ø—Ø—‘ Ö"à—‘˜qÖ!ñ ô �~Š~˜h¨w¸¸BÀÀBÓGÐGr,   c                ó„   • U R                   S   R                  5       [        :X  a  U R                   S   /$ U R                   $ )Nr   r   )rÇ   rc   r   r/   s    r)   rÈ   Úmemctx.parentsŒ  s8   € Ø�=‰=˜Ñ×ÑÓ!¤WÓ,Ø—M‘M !Ñ$Ð%Ð%Ø�}‰}Ðr,   )r  r  r�   rÇ   r@   ré  r„   )NNNNNr#   rB  )r9   rG  rH  rI  rJ  Ú_returnnoneformissingfilesr*   rS   r)  rM  rM   rí  rÈ   rN  rø  rù  s   @r)   r¶  r¶    se   ø† ñð< "&Ðð ØØØØ÷"5ôH7ò*ð ñó ðð& óHó ðH÷0ð r,   r¶  c                  óX   ^ • \ rS rSrSr   S
U 4S jjrS rS rS rSS jr	S r
S	rU =r$ )rµ  i’  zhmemfilectx represents an in-memory file to commit.

See memctx and committablefilectx for more details.
c                óŠ   >• [         TU ]  XSU5        X@l        U(       a  SU l        OU(       a  SU l        OSU l        Xpl        g)a!  
path is the normalized file path relative to repository root.
data is the file content as a string.
islink is True if the file is a symbolic link.
isexec is True if the file is executable.
copied is the source file path if current file was copied in the
revision being committed, or None.Nrq  rj  r,   )rQ  r*   Ú_datar(  Ú_copysource)	r'   r(   r)  rÝ   r_  rr  rl  rZ  r:  s	           €r)   r*   Úmemfilectx.__init__˜  s<   ø€ ô" 	‰Ñ˜ T¨9Ô5ØŒ
ÞØˆD�KÞØˆD�KàˆDŒKØ%Õr,   c                ó   • U R                   $ r#   )rB  r/   s    r)   rZ  Úmemfilectx.copysource³  s   € Ø×ÑÐr,   c                óD   • U R                  5       UR                  5       :g  $ r#   rÜ  r}  s     r)   rm   Úmemfilectx.cmp¶  rÞ  r,   c                ó   • U R                   $ r#   ©rA  r/   s    r)   r_  Úmemfilectx.data¹  r‘   r,   c                ó2   • U R                   U R                  	 g)r6  N)r  rþ  rü  s     r)   r;  Úmemfilectx.remove¼  s   € ð �O‰O˜DŸJ™JÑ'r,   c                ó   • Xl         g)r>  NrI  ©r'   r_  rÚ   rB  s       r)   rÄ  Úmemfilectx.writeÁ  s   € à�
r,   )rB  rA  r(  )FFNrF  )r9   rG  rH  rI  rJ  r*   rZ  rm   r_  r;  rÄ  rN  rø  rù  s   @r)   rµ  rµ  ’  s6   ø† ñð ØØ÷&ò6 ò*òô(÷
ð r,   rµ  c                  ó†   ^ • \ rS rSrSr      SU 4S jjrS r\S 5       rSS jr	S r
\S 5       r\SS	 j5       rS
rU =r$ )ÚmetadataonlyctxiÆ  a‹  Like memctx but it's reusing the manifest of different commit.
Intended to be used by lightweight operations that are creating
metadata-only changes.

Revision information is supplied at initialization time.  'repo' is the
current localrepo, 'ctx' is original revision which manifest we're reuisng
'parents' is a sequence of two parent revisions identifiers (pass None for
every missing parent), 'text' is the commit.

user receives the committer name and defaults to current repository
username, date is the commit date in any format supported by
dateutil.parsedate() and defaults to current date, extra is a dictionary of
metadata or is left empty.
c	                ó–  >• Uc  UR                  5       n[        TU ]	  XXVU5        S U l        S U l        X l        UR                  5       U l        Uc  UR                  5       nOU V	s/ s H  o™c  M  X   PM     nn	US S  n[        U5      S:  a)  UR                  U[           5        [        U5      S:  a  M)  U=u  p«U l        U R                  5       R                  u  pÍX R                  R                  R                   :w  a  U
R                  5       U:w  a  [#        S5      eX°R                  R                  R                   :w  a  UR                  5       U:w  a  [#        S5      eUR%                  5       U l        0 U l        U(       a?  U" U R                  U / 5      U l        U R                  R-                  U R*                  5        g g s  sn	f )NrÏ   z=can't reuse the manifest: its p1 doesn't match the new ctx p1z=can't reuse the manifest: its p2 doesn't match the new ctx p2)rt  rQ  r*   r@   r�   Ú_originalctxrz  Ú_manifestnoderÈ   rÐ   rj   r   rÇ   rš   r%   rk   rÓ  ÚRuntimeErrorrÙ   r  r„   ré  r   )r'   r(   ÚoriginalctxrÈ   rñ  rr  rs  ru  rº  rŒ  rÌ   rÑ   Úmp1Úmp2r:  s                 €r)   r*   Úmetadataonlyctx.__init__Ö  s‘  ø€ ð ‰<Ø×*Ñ*Ó,ˆDÜ‰Ñ˜ T°Ô7ØˆŒ	ØˆŒ
Ø'ÔØ(×5Ñ5Ó7ˆÔØ‰?Ø!×)Ñ)Ó+‰Gá(/ÓAª 1“w�t”w©ˆGÐAØ™!�*ˆÜ�'‹l˜QÓØ�N‰N˜4¤™=Ô)ô �'‹l˜QÕà!(Ð(‰ˆ�”ð ×#Ñ#Ó%×-Ñ-‰ˆØ—‘×)Ñ)×0Ñ0Ó0°R·_±_Ó5FÈ#Ó5MÜð0óð ð —‘×)Ñ)×0Ñ0Ó0°R·_±_Ó5FÈ#Ó5MÜð7óð ð
 "×'Ñ'Ó)ˆŒØˆŒæÙ §
¡
¨D°"Ó5ˆDŒJØ�J‰J×(Ñ(¨¯©Õ4ð ùò/ Bs   Á'GÁ1Gc                ó   • U R                   $ r#   )rT  r/   s    r)   rz  Úmetadataonlyctx.manifestnode  s   € Ø×!Ñ!Ð!r,   c                óH   • U R                   R                  U R                     $ r#   )r%   rÛ   rT  r/   s    r)   r™   Úmetadataonlyctx._manifestctx	  s   € à�z‰z×%Ñ% d×&8Ñ&8Ñ9Ð9r,   c                ó4   • U R                   R                  XS9$ )N)rË  )rS  rS   rw  s      r)   rS   Úmetadataonlyctx.filectx  s   € Ø× Ñ ×(Ñ(¨Ð(Ð?Ð?r,   c                ó8   • U R                   R                  U 5      $ r&  r'  r/   s    r)   r)  Úmetadataonlyctx.commit  r+  r,   c                ó6   • U R                   R                  5       $ r#   )rS  r[   r/   s    r)   rM   Úmetadataonlyctx._manifest  s   € à× Ñ ×)Ñ)Ó+Ð+r,   c           	     óÄ  ^^• U R                  5       R                  5       mU R                  S   nUR                  5       [        :w  a  UR                  5       mUU4S jnOU4S jn/ / / pTnU R
                   HL  nU" U5      (       d  UR                  U5        M#  X`;   a  UR                  U5        M;  UR                  U5        MN     [        R                  " X4U/ / / / 5      $ )zZCalculate exact status from ``files`` specified in the ``origctx``
and parents manifests.
r   c                ó&   >• U T;   =(       d    U T;   $ r#   rG   r0  s    €€r)   rµ  Ú)metadataonlyctx._status.<locals>.<lambda>$  r4  r,   c                ó   >• U T;   $ r#   rG   r6  s    €r)   rµ  rf  &  r7  r,   r8  r9  s	          @@r)   rí  Úmetadataonlyctx._status  s±   ù€ ð
 �w‰w‹y×!Ñ!Ó#ˆØ�]‰]˜1Ñˆð �6‰6‹8”wÓØ—;‘;“=ˆDÝ7‰Hä*ˆHà#% r¨2˜ˆØ—”ˆAÙ˜A—;‘;Ø—‘˜Q–Ø“Ø—‘ Ö"à—‘˜qÖ!ñ ô �~Š~˜h¨w¸¸BÀÀBÓGÐGr,   )r  rT  r�   rS  rÇ   r@   ré  r„   rÖ  r#   rB  )r9   rG  rH  rI  rJ  r*   rz  r÷  r™   rS   r)  rM   rM  rí  rN  rø  rù  s   @r)   rQ  rQ  Æ  sp   ø† ñð& ØØØØØ÷.5ò`"ð ñ:ó ð:ô@ò*ð ñ,ó ð,ð óHó öHr,   rQ  c                  óL   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rSrg)Úarbitraryfilectxi4  z|Allows you to use filectx-like functions on a file in an arbitrary
location on disk, possibly not in the working directory.
Nc                ó   • X l         Xl        g r#   )r%   rþ  )r'   rÝ   r(   s      r)   r*   Úarbitraryfilectx.__init__9  s   € àŒ
Ø�
r,   c                óš  • SU R                  5       ;   =(       d    SUR                  5       ;   nU(       dw  [        U[        5      (       ab  U R                  (       aQ  [        R
                  " U R                  5       U R                  R                  UR                  5       5      5      (       + $ U R                  5       UR                  5       :g  $ rp  )	rÚ   r(  rv  r%   Úfilecmprm   rÝ   Úwjoinr_  )r'   r~  Úsymlinkss      r)   rm   Úarbitraryfilectx.cmp>  s�   € ð ˜4Ÿ:™:›<Ñ'×?¨4°4·:±:³<Ñ+?ˆÞœJ t¬^×<Ñ<ÀÇÇô —{’{ 4§9¡9£;°·
±
×0@Ñ0@ÀÇÁÃÓ0MÓNÔNÐNØ�y‰y‹{˜dŸi™i›kÑ)Ð)r,   c                ó   • U R                   $ r#   r  r/   s    r)   rÝ   Úarbitraryfilectx.pathI  r‘   r,   c                ó   • grf  rG   r/   s    r)   rÚ   Úarbitraryfilectx.flagsL  s   € Ør,   c                óB   • [         R                  " U R                  5      $ r#   ©r   Úreadfilerþ  r/   s    r)   r_  Úarbitraryfilectx.dataO  ó   € Ü�}Š}˜TŸZ™ZÓ(Ð(r,   c                óB   • [         R                  " U R                  5      $ r#   rw  r/   s    r)   rÊ  Úarbitraryfilectx.decodeddataR  rz  r,   c                óD   • [         R                  " U R                  5        g r#   )r   rM  rþ  r/   s    r)   r;  Úarbitraryfilectx.removeU  s   € Ü�Š�D—J‘JÕr,   c                óX   • U(       a   e[         R                  " U R                  U5        g r#   )r   Ú	writefilerþ  rN  s       r)   rÄ  Úarbitraryfilectx.writeX  s   € ÞÐˆyÜ�Š�t—z‘z 4Õ(r,   )rþ  r%   r#   )r9   rG  rH  rI  rJ  r*   rm   rÝ   rÚ   r_  rÊ  r;  rÄ  rN  rG   r,   r)   rj  rj  4  s/   † ñôò
	*òòò)ò)ò õ)r,   rj  )<Ú
__future__r   rn  r‰  rŒ  Úi18nr   r.   r   r   r   Ú r	   r
   r   r   r   r  r   rþ  r   r   r¯   r   r   r   r   r   r   r   r   r   r   Ú
interfacesr   ÚistatusÚutilsr   r   Údirstateutilsr   rM  r    r)  rû  rS   rç  rD  r  rv  rU  rÑ  r  r  r  r  r¶  rµ  rQ  rj  rG   r,   r)   Ú<module>r‰     s9  ðõ #ã Û 	Û å ÷ñ ÷
÷ ÷ ÷ ÷ õ(÷õð ×"Ñ"€÷}
ñ }
ô@l �ô l ÷^	I?ñ I?ôX{
ˆkô {
ô|e�Wô eôPP9�ô P9ôf=˜ô =ô@Y3Ð'ô Y3ôxc ˜ô c ôL5Ð.ô 5ôp)�zô )òXò"ò.ô0ˆ^ô ôD1Ð#ô 1ôhkH�nô kH÷\&)ò &)r,   