Ë zÅÔƒ”£ƒZãóˆ—ddlZddlmZddlmZmZmZddlmZddl m Z m Z m Z mZm Z mZmZmZddlmZmZdZd „Zd „Zd „ZGd „d «Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d.d„Z%d„Z&d„Z'ejPd«Z)d„Z*d„Z+d „Z,d/d!„Z- d0d"„Z.d.d#„Z/d$„Z0d%„Z1d&„Z2d'„Z3d(„Z4d1d)„Z5d2d*„Z6d+„Z7d.d,„Z8d-„Z9y)3éNé)Ú_)ÚbinÚhexÚshort)Úgetattr)ÚencodingÚerrorÚobsutilÚpycompatÚ requirementsÚscmutilÚtxnutilÚutil)Ú stringutilÚurlutils"bookmarks.active bookmarks.currentcó:—tj|jvS©N)r ÚBOOKMARKS_IN_STORE_REQUIREMENT©Úrepos ú7usr/lib/python3.12/site-packages/mercurial/bookmarks.pyÚbookmarksinstorer(s€Ü × 6Ñ 6¸$×:KÑ:KÐ KÐKócóH—t|«r |jS|jSr)rÚsvfsÚvfsrs rÚ bookmarksvfsr,s€Ü(¨Ô.ˆ4�9‰9Ð<°D·H±HБ>×'Ñ'×0Ñ0ˆÜˆð" ܘDÔ! VÛ"�DØŸ:™:›<�DÙØ ðØ'+§z¡z°$¸Ó':™ ˜˜WÙ% c›{˜Ù# Dœ>Ü&.×&6Ñ&6°wÓ&?˜GØ.2˜F 7™OØ$+§K¡K°Ó$5˜EØ$˜}Ø18°  ¨¢ à %§ ¡ ¨WÔ 5Ø#(¨¡9¨wÒ#6à$)§J¡J¤Løñ##÷"ôD# 4¨Ó.ˆ� øô&ò ð )9˜ Ü+¨DÔ1Ø,B˜MØŸ™Ÿ ™ ÜÐ;Ó<Ø,¬h×.>Ñ.>¸tÓ.DÐEñF÷ð ú÷'"Ð!ûô@!ò Ù ð úsPÁ E:ÁE.Á4BDÃ6E.Ã9E:ÄAE+Å'E.Å*E+Å+E.Å.E7Å3E:Å: FÆFcó—|jSr)r?©r@s rÚactivezbmstore.activexs €à�|‰|Ðrcó\—|�||jvrtd|z«‚||_d|_y)Nsbookmark %s does not exist!F)r,ÚAssertionErrorr?r/©r@Úmarks rrNzbmstore.active|s2€à Ð  ¨D¯L©LÑ 8Ü Ð!?À$Ñ!FÓGÐ GàˆŒ ؈� rcó,—t|j«Sr)Úlenr,rMs rÚ__len__zbmstore.__len__„s€Ü�4—<‘<Ó Ð rcó,—t|j«Sr)Úiterr,rMs rÚ__iter__zbmstore.__iter__‡s€Ü�D—L‘LÓ!Ð!rcó6—|jj«Sr©r,ÚitemsrMs rÚ iteritemszbmstore.iteritemsŠó€Ø�|‰|×!Ñ!Ó#Ð#rcó6—|jj«SrrZrMs rr[z bmstore.items�r]rcó6—|jj«Sr)r,ÚkeysrMs rr`z bmstore.keys‘s€Ø�|‰|× Ñ Ó"Ð"rcó6—|jj«Sr)r,ÚvaluesrMs rrbzbmstore.values–s€Ø�|‰|×"Ñ"Ó$Ð$rcó—||jvSr©r,rQs rÚ __contains__zbmstore.__contains__™s€Ø�t—|‘|Ð#Ð#rcó —|j|SrrdrQs rÚ __getitem__zbmstore.__getitem__œs€Ø�|‰|˜DÑ!Ð!rNcó:—|jj||«Sr)r,r6)r@rRÚdefaults rr6z bmstore.getŸs€Ø�|‰|×Ñ  gÓ.Ð.rcó —d|_||jvr|j|«||j|<|jj |«}|€|g|j|<y|j |«|j «y)NF)r.r,Ú_delr-r6r7r8©r@rRrHrIs rÚ_setz bmstore._set¢sl€ØˆŒ Ø �4—<‘<Ñ Ø �I‰I�dŒOØ!ˆ� ‰ �TÑØ— ‘ ×!Ñ! $Ó'ˆØ ˆ=Ø#' &ˆD�M‰M˜$Ò à �L‰L˜Ô Ø �J‰J�Lrcóò—||jvryd|_|jj|«}|j|}t |«dk(r|d|k(sJ‚|j|=y|j |«y)NFrr)r,r.Úpopr-rTÚremoverls rrkz bmstore._del®so€Ø �t—|‘|Ñ #Ø ØˆŒ Ø�|‰|×Ñ Ó%ˆØ— ‘ ˜dÑ#ˆÜ ˆu‹:˜Š?ؘ‘8˜tÒ#Ð #Ð#Ø— ‘ ˜dÑ#à �L‰L˜Õ rcó:—|jj|g«S)z@Return a sorted list of bookmarks pointing to the specified node)r-r6)r@rHs rÚnamesz bmstore.namesºs€à�}‰}× Ñ   rÓ*Ð*rcó6—|jjd«}|D]h\}}|jj|«}|€|j|«n|j ||«|€ŒJ|j|«}|�|d}||f||<Œj|j |«y)z$Apply a list of changes to bookmarksr Nr)Úchangesr6r,rkrmÚ _recordchange) r@rÚtrrtÚ bmchangesÚnamerHÚoldÚpreviouss rÚ applychangeszbmstore.applychanges¾s”€à—J‘J—N‘N <Ó0ˆ Û!‰JˆD�$Ø—,‘,×"Ñ" 4Ó(ˆC؈|Ø— ‘ ˜$•à— ‘ ˜$ Ô%ØÑ$à$Ÿ=™=¨Ó.�ØÐ'Ø" 1™+�CØ#&¨ +� ˜$’ð"ð ×ј2Õrcó”—t|j«rdnd}|jdd|j|d¬«d|jd<y ) z„record that bookmarks have been changed in a transaction The transaction is then responsible for updating the file content.rsplainr )r T)ÚlocationÚ post_finalizeó1sbookmark_movedN)rr+ÚaddfilegeneratorÚ_writeÚhookargs)r@rvr}s rruzbmstore._recordchangeÏsM€ô+¨4¯:©:Ô6‘3¸HˆØ ×ÑØ Ø Ø �K‰KØØð ô ð*.ˆ� ‰ Ð%Ò&rcó”—|j}|j|jvrd|_|j«t |«r|j }|j «}n|j}|j«}|5|dddd¬«5}|j|«ddd«ddd«y#1swYŒxYw#1swYyxYw)zFactored out for extensibilityNr ówT©Ú atomictempÚ checkambig) Ú _bookmarksrNr,Ú _writeactiverrÚlockrÚwlockr�)r@rÚrbmrrŠÚfs rÚ _writerepozbmstore._writerepoÝs˜€à�o‰oˆØ �:‰:˜TŸ\™\Ñ )؈CŒJØ × Ñ Ô ä ˜DÔ !Ø—)‘)ˆCØ—9‘9“;‰Dà—(‘(ˆCØ—:‘:“<ˆDÚ Ù�\ 4°DÀTÕJÈaØ— ‘ ˜A”÷K÷ˆTßJÐJú÷ˆTús$ B>ÂB2Â!B>Â2B; Â7B>Â>CcóÀ—|jry|jj«5|j�W|jj dddd¬«5}|j t j|j««ddd«n%|jjjd«ddd«d|_y#1swYŒxYw#1swYd|_yxYw)Nóbookmarks.currentr„Tr…) r/r+r‹r?rÚwriter Ú fromlocalÚ tryunlink)r@r�s rr‰zbmstore._writeactiveîs­€Ø �<Š<Ø Ø �Z‰Z× Ñ Õ Ø�|‰|Ð'Ø—Z‘Z—^‘^Ø(¨$¸4ÈDð$ôàØ—G‘GœH×.Ñ.¨t¯|©|Ó<Ô=÷ðð — ‘ —‘×(Ñ(Ð)=Ô>÷ ðˆ� ÷ ðú÷ ðˆ� ús#¨,C Á/CÂ.C ÃC ÃC à Ccó—t|jj««D]7\}}|jdt |«t j |«fz«Œ9d|_|jj«y)Ns%s %s T) Úsortedr,r[r‘rr r’r.r+Úinvalidatevolatilesets)r@r#rxrHs rr�zbmstore._writeûs^€Ü  §¡×!3Ñ!3Ó!5Ö6‰JˆD�$Ø �H‰H�Z¤3 t£9¬h×.@Ñ.@ÀÓ.FÐ"GÑGÕ Hð7àˆŒ Ø � ‰ ×)Ñ)Õ+rcó|—|dk(r6|jr |jStjtd««‚|S)Nó.sno active bookmark)rNr ÚRepoLookupErrorr)r@Úbnames rÚ expandnamezbmstore.expandnames6€Ø �DŠ=Ø�{Š{Ø—{‘{Ð"ä×+Ñ+¬AÐ.CÓ,DÓEÐE؈ rcóÔ—|jdj«}||jv�rÏ|�sÌ|�r¨|j||k(r||k(rgS|j|j«}|jjj |g«}|j||}|jD�cgc]<}|j dd«d|j dd«dk(r|j|‘Œ>} }|j«|vr|| vrt|j|g|«S| D�cgc])}|j|j«|vs||k(sŒ(|‘Œ+} }t|j| |«} t|j||j|«rL|jjjtd«|t|j««fz«| Stjtd«|z«‚||jj«vs'||jj j#«k(r |stjtd««‚t%|«dkDrV|sT t'j(|j|«} | r1|jjj-td «|z«gScc}wcc}w#tj*$rd } YŒVwxYw) aŒcheck repo for a potential clash of mark with an existing bookmark, branch, or hash If target is supplied, then check that we are moving the bookmark forward. If force is supplied, then forcibly move the bookmark to a new commit regardless if it is a move forward. If divergent bookmark are to be deleted, they will be returned as list. r˜ó@rrs%moving bookmark '%s' forward from %s s.bookmark '%s' already exists (use -f to force)s5a bookmark cannot have the name of an existing branchéFs[bookmark %s matches a changeset hash (did you leave a -r out of an 'hg bookmark' command?) )r+rHr,Úrevr0Ú ancestorsr4Údivergent2deleteÚ validdestr:Ústatusrrr ÚAbortÚ branchmapÚdirstateÚbranchrTrÚ isrevsymbolÚ LookupErrorr;) r@rRÚforceÚtargetÚcurrŸÚancÚbmctxÚbÚdivsÚ deletefromÚdelbmsÚ shadowhashs rÚ checkconflictzbmstore.checkconflict s­€ð�j‰j˜Ñ×#Ñ#Ó%ˆØ �4—<‘<Ò ªÚØ—<‘< Ñ%¨Ò/°F¸c²Mà�IØ—j‘j Ñ(×,Ñ,Ó.�Ø—j‘j×*Ñ*×4Ñ4°c°UÓ;�ØŸ ™  4¨¡:Ñ.�ð"Ÿ\š\óá)˜Ø—w‘w˜t QÓ'¨Ñ*¨d¯j©j¸¸qÓ.AÀ!Ñ.DÒDð—L‘L “OØ)ððð—9‘9“; cÑ)¨f¸©nÜ+¨D¯J©J¸¸À$ÓGÐGñ $óÙ#˜! t§z¡z°!¡}×'8Ñ'8Ó':¸cÑ'AÀQÈ&Ã[’A˜tððô*¨$¯*©*°jÀ$ÓG�ܘTŸZ™Z¨°· ± ¸6Ñ0BÔCØ—J‘J—M‘M×(Ñ(ÜÐCÓDؤ u§z¡z£|Ó!4Ð5ñ6ôð"�MÜ—+‘+ÜÐCÓDÀtÑKóð ð �D—J‘J×(Ñ(Ó*Ñ *Ø�t—z‘z×*Ñ*×1Ñ1Ó3Ò3ÙÜ—+‘+ÜÐJÓKóð ô ˆt‹9�qŠ=¡ð #Ü$×0Ñ0°·±¸TÓB� ñØ— ‘ — ‘ ×"Ñ"Üð'óð ñ ôðˆ ùò]ùòøô.×$Ñ$ò #Ø"’ ð #ús%Â/AKÄ$)K ÅK É0 KËK'Ë&K'r)FN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rKÚpropertyrNÚsetterrUrXr\r[r`rbrergr6rmrkrrr{rurŽr‰r�r›r´©rrr'r'=s™„ñ ò+/ðZñóðð ‡]�]ñóðò!ò"ò$ò$ò#ò %ò$ò"ó/ò ò ò+òò" .òò" ò,ò ôCrr'có¢—|jjd«}tjt j |««}|dk(s||vrd}|S)z Get the active bookmark. We can have an active bookmark that updates itself as we commit. This function returns the name of that bookmark. It is stored in .hg/bookmarks.current r�rN)rÚtryreadr r5rÚ firstline)rÚmarksÚcontentrRs rr>r>OsL€ð�h‰h×ÑÐ3Ó4€GÜ × Ñ œJ×0Ñ0°Ó9Ó :€DØ ˆs‚{�d %Ñ'ØˆØ €KrcóZ—||j_|jj«y)z¨ Set the given bookmark to be 'active', meaning that this bookmark will follow new commits that are made. The name is recorded in .hg/bookmarks.current N©rˆrNr‰©rrRs rÚactivaterÄ^s €ð "€D‡O�OÔØ‡O�O× Ñ Õ"rcóZ—d|j_|jj«y)z7 Unset the active bookmark in this repository. NrÂrs rÚ deactivaterÆhs €ð"€D‡O�OÔØ‡O�O× Ñ Õ"rcó²—|j}|j}|dj«D�cgc]}|j«‘Œ}}||vxr|||vScc}w)a€ Tell whether the 'active' bookmark (the one that follows new commits) points to one of the parents of the current working directory (wdir). While this is normally the case, it can on occasion be false; for example, immediately after a pull, the active bookmark can be moved to point to a place different than the wdir. This is solved by running `hg update`. N)Ú_activebookmarkrˆÚparentsrH)rrRr¿ÚprÉs rÚisactivewdirparentrËps^€ð × Ñ €DØ �O‰O€EØ!% d¡×!3Ñ!3Ô!5Ó6Ñ!5˜Aˆq�v‰v�xÐ!5€GÐ6Ø �5ˆ=Ò 3˜U 4™[¨GÐ3Ð3ùò7s®Acó—g}|j}|D�cgc]0}|jdd«d|jdd«dk(sŒ/|‘Œ2}}|D].}|dk(sd|vrŒ |sŒ|||vsŒ||k7sŒ|j|«Œ0|Scc}w)zZfind divergent versions of bm on nodes in deletefrom. the list of bookmark to delete.r�rr)rˆr4r7)rr±ÚbmÚtodeleter¿r¯Ú divergentrRs rr¡r¡sŸ€ð€HØ �O‰O€EáóÙˆa˜AŸG™G D¨!Ó,¨QÑ/°2·8±8¸DÀ!Ó3DÀQÑ3GÓGŠ�5ððóˆØ �4Š<˜4 tÑ+à Ú �E˜$‘K :Ò-Ø�r‹zØ—‘ Õ%ð ð €Oùòs “0A?ÁA?có—|js td«‚|jjdd«d}g}|jj «D]/\}}|jdd«d|k(sŒ|j |«Œ1|S)avGiven a repo with an active bookmark, return divergent bookmark nodes. Args: repo: A repository with an active bookmark. Returns: A list of binary node ids that is the full list of other revisions with bookmarks divergent from the active bookmark. If there were no divergent bookmarks, then this list will contain only one entry. s9headsforactive() only makes sense with an active bookmarkr�rr)rÈr9r4rˆr[r7)rrxÚheadsrRÚns rÚheadsforactiverÓ’s†€ð × Ò ÜØ Hó ð ð × Ñ × %Ñ % d¨AÓ .¨qÑ 1€DØ €EØ—?‘?×(Ñ(Ö*‰ˆˆaØ �:‰:�d˜AÓ ˜qÑ ! TÓ )Ø �L‰L˜�Oð+ð €Lrcó²—d\}}|j}t|«r|dj«}||fS|r|jt d«|z«|}||fS)zƒReturn a tuple (activemark, movemarkfrom) indicating the active bookmark and where to move the active bookmark from, if needed.)NNr˜supdating to active bookmark %s )rÈrËrHr£r)r:rÚcheckoutÚ movemarkfromÚ activemarks rÚcalculateupdaterتsj€ð(Ñ€HˆlØ×%Ñ%€Jܘ$ÔØ˜D‘z—‘Ó(ˆ ð �lÐ #Ð#ñ Ø � ‰ ”!Ð7Ó8¸:ÑEÔFØˆØ �lÐ #Ð#rcó\—|}|j}|j}|syg}|||vrØ||}|D�cgc]5}|jdd«d|jdd«dk(r|||‘Œ7} }|jj |j «g«} | D�cgc]*}|j «| vs||k(sŒ|j «‘Œ,}}t|||||«r!|j||j «f«t|||«D]} |j| df«Œ|rQ|j«5|jd«5} |j|| |«ddd«ddd«t|«St|«Scc}wcc}w#1swYŒ1xYw#1swYt|«SxYw)NFr�rróbookmark)rˆrNr4r0r rŸrHr¢r7r¡rŠÚ transactionr{Úbool) rrÉrHr±r¿rNrwÚnewr¯r°r­rÍrvs rÚupdaterÞ·s’€Ø€JØ �O‰O€EØ �\‰\€FÙ Øà€IØ ˆV�}˜ÑØ�4‰jˆñó á�Ø�w‰w�t˜QÓ Ñ" f§l¡l°4¸Ó&;¸AÑ&>Ò>ð ��q‘‹NØð ð ð �n‰n×&Ñ&¨¯©«  {Ó3ˆÙ(,ÓK© 1°·±³¸3±À!ÀsÃ(�a—f‘f•h¨ˆ ÐKÜ �T˜4  f¡ Ñ.°Ô 4Ø × Ñ ˜f c§h¡h£jÐ1Ô 2ä˜t Z°Ö8ˆØ×ј"˜d˜Õ$ð9ñØ �Y‰Y�[˜$×*Ñ*¨;Ô7¸2Ø × Ñ ˜t R¨Ô 3÷8�[ä � ‹?ÐŒ4� ‹?Ðùò! ùò L÷8Ð7ú�[ä � ‹?Ðús5°:FÂFÂ7FÄ6FÅF ÅFÆ F ÆFÆF+có2—d|vxr|jd« S)Nr�)Úendswith)r¯s rÚ isdivergentráÔs€Ø �1ˆ9Ò -˜QŸZ™Z¨Ó-Ð-Ð-rc#ó¸K—t|di«}|jj}|j«D] \}}||«sŒt |«rŒ||f–—Œ"y­w)Nrˆ)rr0Úhasnoder[rá)rr¿rãÚkÚvs rÚlistbinbookmarksræØsOèø€ô �D˜,¨Ó +€Eà�n‰n×$Ñ$€GØ— ‘ – ‰ˆˆ1á �1�:œk¨!�nØ�Q�$‹Jñùs‚AAÁ AÁ AcóL—i}t|«D]\}}t|«||<Œ|Sr)rær)rÚdÚbookrHs rÚ listbookmarksrêäs,€Ø €AÜ& tÖ,‰ ˆˆdÜ�d“)ˆˆ$Šð-à €Hrc ó —t|«ryt|«rtj«}n|j «}|5|j «5|j d«5}|j}t|j|d««}||k7r||k7r ddd«ddd«ddd«y|dk(r|dfg}n4||vr ddd«ddd«ddd«y|||j«fg}|j|||« ddd«ddd«ddd«y#1swYnxYwddd«n #1swYnxYwddd«y#1swYyxYw)NFr rT) rárrÚnullcontextmanagerr‹rŠrÛrˆrr6rHr{) rÚkeyryrÝr‹rvr¿Úexistingrts rÚ pushbookmarkrïësù€Ü�3ÔØÜ˜ÔÜ×'Ñ'Ó)‰à— ‘ “ ˆÚ �— ‘ • ˜T×-Ñ-¨lÔ;¸rØ—‘ˆÜ�u—y‘y  cÓ*Ó+ˆØ �sŠ?˜x¨3šØ÷ <— �ˆð �#Š:ؘT�{�m‰Gà˜$‰Ø÷<— �ˆð˜T #™YŸ^™^Ó-Ð.Ð/ˆGØ ×ј4  WÔ-Ø÷<— �ˆ×;Ð;ú— — ‘ ú��‰úse¿EÁD/Á"3DÂD/ÂEÂ.DÂ>D/ÃEÃ*DÄD/Ä EÄD# ÄD/Ä& EÄ/D8 Ä4EÅE có.—|r t|«}nt|«}t|«}||z}ggggggggf}|dj}|dj} |dj} |dj} |dj} |dj} |dj}|dj}t|«D]Û}||vr||vr| |d ||f«Œ||d d f«Œ&||vr||||d f«Œ9||}||}||k(r ||||f«ŒT||vry||vru||}||}|j«|j«kr%t |||«r | |||f«Œ | |||f«Œ¬t |||«r | |||f«ŒÅ| |||f«ŒÑ| |||f«ŒÝ|S) a‹Compare bookmarks between srcmarks and dstmarks This returns tuple "(addsrc, adddst, advsrc, advdst, diverge, differ, invalid)", each are list of bookmarks below: :addsrc: added on src side (removed on dst side, perhaps) :adddst: added on dst side (removed on src side, perhaps) :advsrc: advanced on src side :advdst: advanced on dst side :diverge: diverge :differ: changed, but changeset referred on src is unknown on dst :invalid: unknown on both side :same: same on both side Each elements of lists in result tuple is tuple "(bookmark name, changeset ID on source side, changeset ID on destination side)". Each changeset ID is a binary node or None. Changeset IDs of tuples in "addsrc", "adddst", "differ" or "invalid" list may be unknown for repo. If "targets" is specified, only bookmarks listed in it are examined. rréržééééN)Úsetr7r•rŸr¢)rÚsrcmarksÚdstmarksÚtargetsÚbsetÚ srcmarksetÚ dstmarksetÚresultsÚaddsrcÚadddstÚadvsrcÚadvdstÚdivergeÚdifferÚinvalidÚsamer¯ÚscidÚdcidÚsctxÚdctxs rÚcomparebookmarksr sÔ€ñ4Ü�7‹|‰ä˜“]ˆ ܘ“]ˆ ؘJÑ&ˆà�2�r˜2˜r 2 r¨2Ð.€GØ �Q‰Z× Ñ €FØ �Q‰Z× Ñ €FØ �Q‰Z× Ñ €FØ �Q‰Z× Ñ €FØ�a‰j×Ñ€GØ �Q‰Z× Ñ €FØ�a‰j×Ñ€GØ �1‰:× Ñ €Dä �DŽ\ˆØ �HÑ Ø�H‰}Ù˜˜4 ¨!¡Ð-Õ.ᘘD $˜Õ(Ø �hÑ Ù �A�x ‘{ DÐ)Õ *à˜A‘;ˆDؘA‘;ˆDØ�tŠ|Ù�a˜˜t�_Õ%ؘ‘ $¨$¡,ؘD‘z�ؘD‘z�Ø—8‘8“: §¡£ Ò*Ü   t¨TÔ2Ù  4¨˜Õ/á  D¨$ Õ0ä   t¨TÔ2Ù  4¨˜Õ/á  D¨$ Õ0ñ˜˜4 �Õ'ð9ð< €Nrcó�—|dk(rd}|jd«rtj|«j}tj|«D]O\}}|j }|jd«rtj|«j}||k(sŒHd||fzcSt dd«D]}d||fz} | |vs || |k(sŒ| cSy) zñReturn appropriate diverged bookmark for specified ``path`` This returns None, if it is failed to assign any divergent bookmark name. This reuses already existing one with "@number" suffix, if it refers ``remotenode``. r�rsfile:s%s@%sréds%s@%dN)Ú startswithrÚurlÚpathÚ list_pathsÚrawlocÚrange) r:r¯rÚ localmarksÚ remotenoderxrÊÚlocÚxrÒs rÚ_divergerMsÇ€ð ˆD‚yØ ˆð ‡��xÔ Ü�{‰{˜4Ó ×%Ñ%ˆÜ×%Ñ% bÖ)‰ˆˆaØ�h‰hˆØ �>‰>˜(Ô #Ü—+‘+˜cÓ"×'Ñ'ˆCØ �3‹;ؘq $˜iÑ'Ò 'ð *ô�1�cŽ]ˆØ ˜˜1�vÑ ˆØ �JÑ  *¨Q¡-°:Ó"=ØŠHðð rcóV—i}|j«D]\}}t|«||<Œ|Sr)r[r)r¿ÚbinremotemarksrxrHs rÚunhexlifybookmarksrls/€Ø€NØ—k‘k–m‰ ˆˆdÜ" 4›yˆ�tÒð$à Ðrs>20sHc óê—g}|D]\\}}|s|jj}|jtj |t |«««|j|«Œ^dj |«S)amencode a '(bookmark, node)' iterable into a binary stream the binary format is: :node: is a 20 bytes binary node, :bookmark-length: an unsigned short, :bookmark-name: the name of the bookmark (of length ) wdirid (all bits set) will be used as a special value for "missing" r)Ú nodeconstantsÚwdiridr7Ú _binaryentryÚpackrTÚjoin)rÚ bookmarksÚ binarydatarérHs rÚ binaryencoder#vsi€ð€JÛ‰ ˆˆdÙØ×%Ñ%×,Ñ,ˆDØ×Ñœ,×+Ñ+¨D´#°d³)Ó<Ô=Ø×ј$Õð  ð �8‰8�JÓ Ðrcó¸—tj}g} |j|«}t|«|kr#|rt j t d««‚ |Stj|«\}}|j|«}t|«|kr |rt j t d««‚||jjk(rd}|j||f«ŒÈ)aodecode a binary stream into an '(bookmark, node)' iterable the binary format is: :node: is a 20 bytes binary node, :bookmark-length: an unsigned short, :bookmark-name: the name of the bookmark (of length )) wdirid (all bits set) will be used as a special value for "missing" sbad bookmark streamN) rÚsizeÚreadrTr r¤rÚunpackrrr7)rÚstreamÚ entrysizeÚbooksÚentryrHÚlengthÚbookmarks rÚ binarydecoder.ŒsÊ€ô×!Ñ!€IØ €EØ Ø— ‘ ˜IÓ&ˆÜ ˆu‹:˜ Ò !ÙÜ—k‘k¤!Ð$:Ó";Ó<Ð<Ø ð €Lô$×*Ñ*¨5Ó1‰ ˆˆfØ—;‘;˜vÓ&ˆÜ ˆx‹=˜6Ò !ÙÜ—k‘k¤!Ð$:Ó";Ó<Ð<Ø �4×%Ñ%×,Ñ,Ò ,؈DØ � ‰ �h Ð%Ô&ð rc óL—g}|j}|j«D]K\}}||j|d«k7sŒ||vsŒ!|j|||jt d«|zf«ŒM|D]2}||vsŒ|j|d|jt d«|zf«Œ4|S)zMcomputes the bookmark changes that set the local bookmarks to remotemarksNóupdating bookmark %s sremoving bookmark %s )rˆr[r6r7Údebugr)r:rÚ remotemarksÚchangedrr¯Úids rÚmirroring_remoter5¬s¨€ð€GØ—‘€JØ×$Ñ$Ö&‰ˆˆBØ �—‘  4Ó(Ó (¨R°4ªZØ �N‰N˜A˜r 2§8¡8¬QÐ/HÓ-IÈAÑ-MÐNÕ Oð'óˆØ �KÒ Ø �N‰NØ�D˜"Ÿ(™(¤AÐ&?Ó$@À1Ñ$DÐEõ ðð €Nrc óx—|j}t|||«\}}}} } } } } |j}|j}|j dd«r|j x}}t |«}g}|D]m\}}}||vr"|j|||td«|zf«Œ-||vsŒ2|j|«|jtd«|t|«ddfz«Œo|D]'\}}}|j|||td«|zf«Œ)|jd„|D««| D]†\}}}||vr3|j|«|j|||td «|zf«Œ>t|||||«}|r$|j|||td «||fzf«Œs|td «|z«Œˆ|| zD]=\}}}||vsŒ |j|«|j|||td «|zf«Œ?| D]G\}}}||vsŒ |j|«|jtd«|t|«ddfz«ŒI|S) zqcomputes the bookmark changes that merge remote bookmarks into the local bookmarks, based on comparebookmarkssuisquietbookmarkmovesadding remote bookmark %s s0remote bookmark %s points to locally missing %s Né r0c3ó&K—|] }|d–—Œ y­w)rNr»)Ú.0rès rÚ z&merging_from_remote..ásèø€Ð5©W¨˜q �t©Wùs‚simporting bookmark %s s#divergent bookmark %s stored as %s sAwarning: failed to assign numbered name to divergent bookmark %s )rˆr r£r;Ú configboolr1rör7rrprÚdifference_updateÚdiscardr)r:rr2rÚexplicitrrþrÿrrrrrrr£r;r3r¯rrÚdbs rÚmerging_from_remoter@¼s„€ð—‘€Jô ˜˜{¨JÓ7ñ ØØØØØØØØ ð�Y‰Y€FØ �7‰7€DØ ‡}�}�UÐ0Ô1ØŸ™Ð ˆ�ä�8‹}€HØ€GÛ‰ ˆˆ4�Ø �4‰<Ø �N‰NØ�D˜&¤!Ð$BÓ"CÀaÑ"GÐHõ ð�(Š]Ø �O‰O˜AÔ Ø �G‰GÜÐFÓGØ”c˜$“i  �nÐ%ñ&õ ð ó ‰ ˆˆ4�Ø�‰˜˜4 ¬Ð+DÓ)EÈÑ)IÐJÕKð ð ×ÑÑ5©WÓ5Ô5ã ‰ ˆˆ4�Ø �‰=Ø × Ñ ˜QÔ Ø �N‰N˜A˜t V¬QÐ/IÓ-JÈQÑ-NÐOÕ Pä˜"˜a  z°4Ó8ˆBÙØ—‘àØØÜÐAÓBÀaÈÀWÑLð õñÜð6óðñ õð!!ð.  &œ‰ ˆˆ4�Ø �Š=Ø × Ñ ˜QÔ Ø �N‰N˜A˜t V¬QÐ/IÓ-JÈQÑ-NÐOÕ Pð)ó ‰ ˆˆ4�Ø �Š=Ø �O‰O˜AÔ Ø �G‰GÜÐFÓGØ”c˜$“i  �nÐ%ñ&õ ð ð €Nrcó2—|dk(ry|jd«|dk(rt|||«}nt|||||«}|r\|«}g} d„} t|| ¬«D]"\} } } }| j | | f«| |«Œ$|j j ||| «yy)Nóignoreschecking for updated bookmarks ómirrorcó—|d|dxsdfS)Nrrrr»)Úts rÚz"updatefromremote..s€˜˜1™˜q ™tš{ sÑ+r)rí)r1r5r@r•r7rˆr{)r:rr2rÚtrfuncr>Úmoder3rvrtrír¯rHÚwriterÚmsgs rÚupdatefromremoterKs¦€ð ˆyÒàØ‡H�HÐ 0Ô1Ø ˆyÒÜ" 2 t¨[Ó9‰ä% b¨$° ¸TÀ8ÓLˆáÙ ‹XˆØˆÙ+ˆÜ$*¨7¸×$<Ñ ˆAˆt�V˜SØ �N‰N˜A˜t˜9Ô %Ù �3�Kð%=ð �‰×$Ñ$ T¨2¨wÕ7ðrcó4‡‡—|dk(r|jtd««y|jtd««|j«5}t|j dddi«j ««}ddd«gŠ|j rd „Šnd „Š|jrˆˆfd „}nˆˆfd „}|d k(rÜ|j}tj««t|j««z}t|«D]Ž} |j| «} |j| «} | | k(rŒ+| €|| t| «td««ŒJ| €'|| t|j«td««Œs|| t| «td««Œ�n¾t||j«} | \} }}}}}}}| D]"\} }}|| t|«td««Œ$|D]"\} }}|| t|«td««Œ$|D]"\} }}|| t|«td««Œ$|D]"\} }}|| t|«td««Œ$‰s|jtd««yt‰«D]}|j!|«Œy#1swY�ŒxYw)z*Show bookmarks incoming from other to reporBs+bookmarks exchange disabled with this path ró searching for changed bookmarks ólistkeysó namespacer Ncó—|Srr»©r4s rrFzincoming..1ó€™2rcó —|ddS©Nr7r»rQs rrFzincoming..3ó €˜2˜c˜r™7rcó@•—‰jd|‰|«|fz«y©Ns %-25s %s %s ©r7©r¯r4ÚstÚgetidÚ incomingss €€rÚaddzincoming..add6ó"ø€Ø × Ñ Ð0°A±u¸R³yÀ"Ð3EÑEÕ Frcó>•—‰jd|‰|«fz«y©Ns %-25s %s rXrYs €€rr]zincoming..add;󸀨 × Ñ Ð-°±E¸"³I°Ñ>Õ ?rrCóaddedsremovedóchangedóadvancedódivergedóno changed bookmarks found r)r£rÚcommandexecutorrÚ callcommandÚresultÚ debugflagÚverboserˆrör`r•r6rÚnullidr r‘)r:rÚpeerrHÚer2r]rÚallmarksr¯rÚremÚrrþrÿrrrrrrrrÚsr[r\s @@rÚincomingrssVù€à ˆyÒØ � ‰ ”!ÐCÓDÔEØØ‡I�IŒaÐ4Ó5Ô6à × Ñ Ô  1Ü(Ø �M‰MØà  ,ðó ÷ ‰f‹hó  ˆ ÷ ð€IØ ‡|‚|Ù‰á"ˆØ ‡z‚zö Gõ  @ð ˆyÒØ—_‘_ˆ Ü�{×'Ñ'Ó)Ó*¬S°·±Ó1BÓ-CÑCˆÜ˜Ö!ˆAØ—.‘. Ó#ˆCØ—/‘/ !Ó$ˆCØ�cŠzØØ�Ù�A”s˜3“x¤ 8£Õ-Ø�Ù�A”s˜4Ÿ;™;Ó'¬¨:«Õ7á�A”s˜3“x¤ :£Õ/ñ"ô ˜T ;°·±Ó @ˆØIJÑFˆ�˜ ¨°¸À$ã#‰MˆAˆt�Tá �”3�t“9œa ›kÕ *ð$ó$‰MˆAˆt�Tá �”3�t“9œa  ›nÕ -ð$ó%‰MˆAˆt�Tá �”3�t“9œa  ›nÕ -ð%ó$‰MˆAˆt�Tá �”3�t“9œa  ›mÕ ,ð$ñ Ø � ‰ ”!Ð3Ó4Ô5Øä �IÖ ˆØ �‰�� ðð ÷ Ñ ús Á ,J Ê Jc󇇗|jtd««t|jd««}t ||j |«}|\}}}}} } } } gŠ|j rd„Šnd„Š|jrˆˆfd„} nˆˆfd„} |D]"\}}}| |t|«td««Œ$|D]\}}}| |dtd ««Œ|D]"\}}}| |t|«td ««Œ$| D]"\}}}| |t|«td ««Œ$| D]"\}}}| |t|«td ««Œ$‰s|jtd ««yt‰«D]}|j|«Œy)z*Show bookmarks outgoing from repo to otherrMr có—|Srr»rQs rrFzoutgoing..qrRrcó —|ddSrTr»rQs rrFzoutgoing..srUrcó@•—‰jd|‰|«|fz«yrWrX©r¯r4rZr[Ú outgoingss €€rr]zoutgoing..addvr^rcó>•—‰jd|‰|«fz«yr`rXrxs €€rr]zoutgoing..add{rarrbs( sdeletedrdrercrfrr) r£rrÚlistkeysr rˆrjrkrr•r‘)r:rÚotherr2rqrþrÿrrrrrrr]r¯rrrrr[rys @@rÚoutgoingr}gslù€à‡I�IŒaÐ4Ó5Ô6ä$ U§^¡^°LÓ%AÓB€Kܘ˜tŸ™° Ó<€AØEFÑB€FˆF�F˜F G¨V°W¸dà€IØ ‡|‚|Ù‰á"ˆØ ‡z‚zö Gõ  @ó ‰ ˆˆ4�á ˆAŒs�4‹yœ!˜H›+Õ&ð ó ‰ ˆˆ4�á ˆAˆyœ!˜J›-Õ(ð ó ‰ ˆˆ4�á ˆAŒs�4‹yœ!˜K›.Õ)ð ó!‰ ˆˆ4�á ˆAŒs�4‹yœ!˜K›.Õ)ð!ó ‰ ˆˆ4�á ˆAŒs�4‹yœ!˜J›-Õ(ð ñ Ø � ‰ ”!Ð3Ó4Ô5Øä �IÖ ˆØ �‰�� ðð rcó—|j«5}t|jdddi«j««}ddd«t ||j «}|\}}}}} } } } t |«t |«fS#1swYŒAxYw)zCompare bookmarks between repo and other for "hg summary" output This returns "(# of incoming, # of outgoing)" tuple. rNrOr N)rgrrhrir rˆrT) rrmrnr2rqrþrÿrrrrrrs rÚsummaryr˜s‰€ð × Ñ Ô  1Ü(Ø �M‰MØà  ,ðó ÷ ‰f‹hó  ˆ ÷ ô ˜˜{¨D¯O©OÓ<€AØEFÑB€FˆF�F˜F G¨V°W¸dÜ �‹Kœ˜V›Ð %Ð%÷ Ð ús ‘,A=Á=BcóØ—|j«}||k(ry|sy|jr5|j«tj||j«g«vS|j |«S)z?Is the new bookmark destination a valid update from the old oneFT)Ú unfilteredÚobsstorerHr Ú foregroundÚ isancestorof)rryrÝs rr¢r¢¬s`€à �?‰?Ó €DØ ˆc‚zàÙ ðØ �ŠØ�x‰x‹zœW×/Ñ/°°s·x±x³z°lÓCÐCÐCð×Ñ Ó$Ð$rcó”—|j«}|stjtd««‚t j ||d«|S)zvreturn a valid version of a potential bookmark name Raises an abort error if the bookmark name is not valid. s4bookmark names cannot consist entirely of whitespacerÚ)r3r Ú InputErrorrrÚ checknewlabelrÃs rÚ checkformatrˆ½sG€ð �:‰:‹<€DÙ Ü×ÑÜ ÐEÓ Fó ð ô ×ј$  kÔ2Ø €Krcóø—|j}g}|D]T}||vr!tjtd«|z«‚||jk(r t |«|j |df«ŒV|j|||«y)z]remove a mark from the bookmark store Raises an abort error if mark does not exist. óbookmark '%s' does not existN)rˆr r†rrÈrÆr7r{)rrvrrr¿rtrRs rÚdeleter‹Ësz€ð �O‰O€EØ€GÛˆØ �uÑ Ü×"Ñ"¤1Ð%DÓ#EÈÑ#LÓMÐ MØ �4×'Ñ'Ò 'Ü �tÔ Ø�‰˜˜d�|Õ$ð ð  ×Ñ�t˜R Õ)rcón—|j}t||«}||vr!tjt d«|z«‚g}|j ||«D]} |j | df«Œ|j|||f|dfg«|j|||«|j|k(r|s t||«yyy)arename a bookmark from old to new If force is specified, then the new name can overwrite an existing bookmark. If inactive is specified, then do not activate the new bookmark. Raises an abort error if old is not in the bookmark store. rŠN) rˆrˆr r†rr´r7Úextendr{rÈrÄ) rrvryrÝrªÚinactiver¿rRrtrÍs rÚrenamer�Ûs»€ð �O‰O€EÜ �t˜SÓ !€DØ �%ÑÜ×ÑœqÐ!@ÓAÀCÑGÓHÐHØ€GØ×!Ñ! $¨Ö.ˆØ�‰˜˜D�zÕ"ð/à ‡N�N�T˜5 ™:Ð&¨¨d¨ Ð4Ô5Ø ×Ñ�t˜R Ô)Ø ×јsÒ"©8Ü��tÕð,4Ð"rcóþ—|j}|dj«}d}g} |rtj||gd«}tj||d«} | xr| j «du} | j«€| j «} | j«} | sJ‚|D]m} t|| «} |€| }|r| |jk(r t|«Œ0|j| || «D]}| j|df«Œ| j| | f«Œo| sy| j«rŽ|jjtd«| j!«ddz«| j#«rFt%j&|| j!«dd| «}|jjd|z«|j)||| «| r|||k(r t+||«y|| k7r||jk(r t|«yyy)a$add a list of bookmarks If force is specified, then the new name can overwrite an existing bookmark. If inactive is specified, then do not activate any bookmark. Otherwise, the first bookmark is activated. Raises an abort error if old is not in the bookmark store. r˜Nsnowarns bookmarking hidden changeset %s r7s(%s) )rˆrHrÚunhidehashlikerevsÚ revsinglerŸÚp1rˆrÈrÆr´r7Úhiddenr:r;rrÚobsoleter Ú_getfilteredreasonr{rÄ)rrvrrrŸrªrŽr¿r¬ÚnewactrtÚctxÚ activatenewÚtgtrRrÍrJs rÚ addbookmarksr›òsÌ€ð �O‰O€EØ ˆt‰*�/‰/Ó €CØ €FØ€Gñ Ü×)Ñ)¨$°°°yÓAˆä × Ñ ˜D # tÓ ,€Cà�,Ò4 3§7¡7£9°Ð#4€KØ ‡x�xƒzÐØ�f‰f‹hˆØ �(‰(‹*€CÙ €Jˆ3ãˆÜ˜4 Ó&ˆØ ˆ>؈FÙ ˜ × 4Ñ 4Ò4Ü �tÔ Ø Ø×%Ñ% d¨E°3Ö7ˆBØ �N‰N˜B ˜:Õ &ð8à�‰˜˜c�{Õ#ðñ Øà ‡z�z„|Ø �‰� ‰ ”QÐ;Ó<¸s¿w¹w»yÈÈ"¸~ÑMÔNà �<‰<Œ>Ü×,Ñ,¨T°3·7±7³9¸S¸b°>À3ÓGˆCØ �G‰G�L‰L˜ S™Ô )à ×Ñ�t˜R Ô)Ù�s˜e F™mÒ+Ü��vÕØ �Š˜ $×"6Ñ"6Ò6Ü�4Õð7ˆrc ó˜—|j}t|«dk(r*|j«r|jt d««t |j ««D]ê\}\}}}|j«|j|¬«|js|jd|z|¬«|jdd||¬«dd tj|«z z} |j|j d | d z|jj!|«||«|¬«|j#t$|v¬ «|jd «Œìy)z“private method to print bookmarks Provides a way for extensions to control how bookmarks are printed (e.g. prepend or postpend names) rsno bookmarks set rs %s )ÚlabelrÚs%sr)ésrev nodes %d:%s)rNó N)ÚhexfuncrTÚisplainr£rr•r[Ú startitemÚcontextÚquietÚplainr‘r ÚcolwidthÚ condwriter0rŸÚdataÚactivebookmarklabel) r:rÚfmÚbmarksÚhexfnÚbmarkrÒÚprefixr�Úpads rÚ_printbookmarksr°+s€ð �J‰J€EÜ ˆ6ƒ{�aÒ˜BŸJ™JœLØ � ‰ ”!Ð)Ó*Ô+Ü%+¨F¯L©L«NÖ%;Ñ!ˆÑ!��6˜5Ø � ‰ ŒØ � ‰ ˜ˆ ÔØ�xŠxØ �H‰H�W˜vÑ%¨UˆHÔ 3Ø �‰�˜e U°%ˆÔ8Ø�bœ8×,Ñ,¨UÓ3Ñ3Ñ4ˆØ � ‰ Ø—‘ˆLØ Ø �)‰OØ �N‰N× Ñ ˜qÓ !Ù �!‹HØð ô ð �‰Ô+¨uÐ4ˆÔ6Ø �‰��ñ!&rÄrÆrËr¡rÓrØrÞrárærêrïr rrÚStructrr#r.r5r@rKrsr}rr¢rˆr‹r�r›r°r³rµr»rrÚr»sðóå÷ñõ ÷ ÷ ó ÷ð<ÐòLò=ò ÷OñOòd ò#ò#ò 4òò&ò0 $òò:.ò ò òó,IòXò>ðˆv�}‰}˜XÓ&€ ò ò,ò@ ó IðZ<@ó8ó,F òR. òb&ò(%ò" ò *ó ó.6òró8*ó(Hr