Ë _LµhúnãóŒ—ddlZddlZddlZddlZddlmZddlmZmZddl m Z ddl m Z m Z mZmZm Z mZmZmZmZmZmZmZmZddlmZmZd„Zd „Zd „ZiZiZej@«Z!e!jDZ"e!jFZ#e!jHZ$ed «Z%ed «Z&Gd „d«Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-e!de"«d„«Z.e!de"«d„«Z/e!de"«d„«Z0e!de"«d„«Z1d„Z2d„Z3d„Z4d „Z5d!„Z6e!d"e$ed#«e5¬$«d%„«Z7e!d&e$ed#«e5¬$«d'„«Z8e!d(e$ed#«e5¬$«d)„«Z9e!d*e$ed#«e5¬$«d+„«Z:e!d,e$d-e5¬$«d.„«Z;e!d/e$ed#«e5¬$«d0„«Z<e!d1e#e5¬$«d2„«Z=e!d3e#e5¬$«d4„«Z>e!d5e#ed6««d7„«Z?e!d8e$d9d9¬:«d;„«Z@e!d„ZBd?„ZCd@„ZDdA„ZEdNdB„ZFdC„ZGdD„ZHej’dE„«ZJdNdF„ZKdG„ZLdH„ZMdI„ZNdJ„ZOdK„ZPdL„ZQdM„ZReRdde!«ej§«ZTy)OéNé)Ú_)ÚhexÚshort)Úgetattr) ÚencodingÚerrorÚ formatterÚmatchÚpycompatÚ registrarÚscmutilÚ simplemergeÚtagmergeÚ templatekwÚ templaterÚ templateutilÚutil)ÚprocutilÚ stringutilcó6—|jd|dz|zg|¢­ŽS©Nó merge-toolsó.)Úconfig©ÚuiÚtoolÚpartÚargss ú7usr/lib/python3.12/site-packages/mercurial/filemerge.pyÚ_toolstrr"-s#€Ø ˆ2�9‰9�^ T¨D¡[°4Ñ%7Ð ?¸$Ò ?Ð?ócó6—|jd|dz|zg|¢­ŽSr)Ú configboolrs r!Ú _toolboolr&1s#€Ø ˆ2�=‰=˜¨°©°tÑ);Ð C¸dÒ CÐCr#có2—|jd|dz|z«Sr)Ú configlist)rrrs r!Ú _toollistr)5s€Ø �=‰=˜¨°©°tÑ);Ó <ÐrBÚ _customcmprHrJrFrNrEr:r#r!r+r+WsF„ñIò ò;òòòò'ð€Jò  òòòór#r+cóp—|tvr|St||d|«}|jd«r|St||«S)Nó executableópython:)Ú internalsr"Ú startswithÚfindexternaltool)rrÚcmds r!Ú _findtoolr\‹s=€Ø ŒyÑØˆ Ü �2�t˜]¨DÓ 1€CØ ‡~�~�jÔ!؈ Ü ˜B Ó %Ð%r#cóR—|jd«r|Stj|«S)NrW)rYrÚ shellquote)r[s r!Ú_quotetoolpathr_”s$€Ø ‡~�~�jÔ!؈ Ü × Ñ ˜sÓ #Ð#r#c ó6—dD]_}t|||«}|sŒtj|t||d««}|sŒ7tj|t||d«z«}|sŒ]|cSt||d|«}tjtj |««S)N)sregkeys regkeyaltsregnames regappendrV)r"rÚ lookupregrÚfindexeÚ expandpath)rrÚknÚkÚpÚexes r!rZrZšsŽ€Û'ˆÜ �R˜˜rÓ "ˆÙØ Ü �N‰N˜1œh r¨4°Ó<Ó =ˆÚ Ü× Ñ  ¤X¨b°$¸ Ó%EÑ!EÓFˆAÚØ’ð(ô �2�t˜]¨DÓ 1€CÜ × Ñ œDŸO™O¨CÓ0Ó 1Ð1r#c󔇇‡‡—‰jdd«Šdˆfd„ Šd„Šˆˆˆˆfd„}‰jdd«}|r*t‰|«}|r ‰|«sy|r |t|«fS||fStj j d «} | r|r ‰| «sy| | fS|xr‰} ‰jd «D]©\} } tj|jd | g«} | |«sŒ1|| | || |«sŒ>|rP‰| d d ¬«sE‰jtd«tj| «tj|«fz«t‰| «}| t|«fcSi}t«}‰jd«D]U\}}|jd«d}||vrt!t#‰|d««||<t%‰|d«sŒE|j'|«ŒW|j)«}t+|j-«D� �cgc]\} }| |vsŒ | | f‘Œc}} «}‰jdd«}|r*||||||«r||vr|s||fS|j/dd|f«|j1d«|D],\}}||d|||«sŒt‰|«}|t|«fcS|s|s|r+|s(t3|«r‰jtd«|z«yycc}} w)Nómergesstrict-capability-checkcóz•—|tvr&|xr"t|jj|«St‰||«Sr-)rXÚ capabilitiesÚgetr&)rÚ capabilityÚstrictrs €r!Ú hascapabilityz _picktool..hascapability«s:ø€Ø ”9Ñ ØÒJœi¨™o×:Ñ:×>Ñ>¸zÓJÐ Jܘ˜T :Ó.Ð.r#cóJ—|tvxrt|jtk(Sr-)rXÚ mergetypeÚnomerge©rs r!Ú supportscdz_picktool..supportscd°s!€Ø”yÐ ÒI¤Y¨t¡_×%>Ñ%>Ä'Ñ%IÐIr#có•—|}|rtd«||fz}t‰ |«s>|r‰ jtd«|z«y ‰ jtd«|z«y |r(‰|d‰«s‰ jtd«|z«y |r(‰|d‰«s‰ jtd«|z«y |r ‰|«s y t j «s+t ‰ |d«r‰ jtd«|z«y y ) Ns%s (for pattern %s)scouldn't find merge tool %s ssymlinkstool %s can't handle symlinks óbinarystool %s can't handle binary óguistool %s requires a GUI TF)rr\ÚwarnÚnoterÚguir&) rÚpatÚsymlinkÚbinaryÚ changedeleteÚtmsgroÚ strictcheckrtrs €€€€r!Úcheckz_picktool..check³s ø€ØˆÙ ÜÐ+Ó,°°c¨{Ñ:ˆDܘ˜TÔ"ÙØ—‘œÐ:Ó;¸dÑBÔCðð—‘œÐ:Ó;¸dÑBÔCðñ™]¨4°¸[ÔIØ �G‰G”AÐ8Ó9¸DÑ@Ô Aðñ™M¨$° ¸;ÔGØ �G‰G”AÐ6Ó7¸$Ñ>Ô ?ðñ¡*¨TÔ"2ð ð ô —‘”¤I¨b°$¸Ô$?Ø �G‰G”AÐ1Ó2°TÑ9Ô :ððr#óuis forcemerge)s:promptNsHGMERGEsmerge-patternsr#rvT)rns�warning: check merge-patterns configurations, if %r for binary file %r is unintentional (see 'hg help merge-tools' for binary files capability) rrrsprioritysdisabled)Nshgmergesno tool found to merge %s )s:mergeN)F)r%rr\r_rÚenvironrlÚ configitemsr Úrootrxrr ÚbytestrÚsetÚsplitÚintr"r&ÚaddÚkeysÚsortedÚitemsÚinsertÚappendÚlen)r@rr8r}r|r~r�ÚforceÚtoolpathÚhgmergeÚ binarycapr{rÚmfÚtoolsÚdisabledreÚvÚtÚnamesrfÚuimergeror€rts ` @@@r!Ú _picktoolrœ¨s×û€Ø—-‘- Ð*DÓE€Kõ/ò J÷ð2 �I‰I�e˜]Ó +€E٠ܘR Ó'ˆÙ ¡ ¨8Ô 4Ø#áØœ~¨hÓ7Ð8Ð8ð˜u�~Ð%ô×Ñ×"Ñ" :Ó.€GÙÙ ¡ ¨7Ô 3Ø#à˜WÐ%Ð %ð Ò&˜;€Ià—^‘^Ð$5Ö6‰ ˆˆTÜ �[‰[˜Ÿ™ C¨#¨Ó /ˆÙ ˆd�8™˜d C¨°)¸\ÕJÙ™m¨D°)ÀDÕIØ—‘Üð;óô  ×'Ñ'¨Ó-¬x×/?Ñ/?ÀÓ/EÐFñ Gôô!  TÓ*ˆHØœ.¨Ó2Ð3Ò 3ð7ð" €EÜ‹u€HØ—‘˜~Ö.‰ˆˆ1Ø �G‰G�D‹M˜!Ñ ˆØ �E‰>Üœ8 B¨¨;Ó7Ó8ˆE�!‰HÜ �R˜˜KÕ (Ø �L‰L˜�Oð /ð �J‰J‹L€EÜ Ø#(§;¡;¤=ÔI¡=™˜˜a°DÀÒ4Hˆ1ˆ"ˆdŠ =ÒIó €Eð�i‰i˜˜xÓ(€GÙñ �˜$ ¨°Ô >ؘeÑ#©LØ Ð)Ð)Ø �L‰L˜˜T 7˜OÔ ,Ø ‡L�LÐ#Ô$Û‰ˆˆ1Ù ��D˜' 6¨<Õ 8Ü   QÓ'ˆHØ”~ hÓ/Ð0Ò 0ðñ ‘&™LÙ¤ E¤ à �G‰G”AÐ4Ó5¸Ñ<Ô =ØØ ùó- Js Ç6 K ÈK có,—d|vryd|vryd|vryd|vryy)zGuess the EOL type of a fileóNs ó ó r:©r>s r!Ú_eoltyper¢s-€à ��}ØØ�$�ØØ ��}ØØ ��}ØØ r#cóÞ—t|j««}|rRtj|«}t|«}|r/|j ||«}||k7rtj ||«yyyy)z/Convert EOL markers in a file to match origfileN)r¢r>rÚreadfileÚreplaceÚ writefile)ÚfileÚbackupÚtostyler>ÚstyleÚnewdatas r!Ú _matcheolr¬&sc€ä�v—{‘{“}Ó%€GÙÜ�}‰}˜TÓ"ˆÜ˜“ˆÙ Ø—l‘l 5¨'Ó2ˆGؘ$ŠÜ—‘˜t WÕ-ðð ðr#ópromptc óv—|j}|jj«}tj|«}|jj «j «rtjd«‚t|j|jg«} ||«| d< |jj«r!|jt| zd«} gd¢| } n`|jj«r!|jt| zd«} gd¢| } n%|jtd«| zd«} gd¢| } | dk(rt!||||||«S| dk(rt#||||||«S| d k(rt%||||||«Sy #tj&$r$|j)d «t%||||||«cYSwxYw) zfAsks the user which of the local `p1()` or the other `p2()` version to keep as the merged version.s/in-memory merge does not support file conflictssfdé)ólocalóotheró unresolved)r±r°r²s¢file '%(fd)s' needs to be resolved. You can keep (l)ocal%(l)s, take (o)ther%(o)s, or leave (u)nresolved. What do you want to do?$$ &Local $$ &Other $$ &Unresolvedr±r°r²r N)rrGr8rÚ getuipathfnrFÚ isinmemoryr ÚInMemoryMergeConflictsErrorÚ partextrasÚlabelrEÚ promptchoiceÚ_localchangedotherdeletedmsgÚ_otherchangedlocaldeletedmsgrÚ_iotherÚ_ilocalÚ_ifailÚResponseExpectedÚwrite) r@ÚmynodeÚlocalÚotherÚbaseÚtoolconfrÚfdÚuipathfnÚpromptsÚindexÚchoices r!Ú_ipromptrÊ2sµ€ð �‰€BØ �‰�‰Ó €BÜ×"Ñ" 4Ó(€Hð ‡z�z×ÑÓ×(Ñ(Ô*Ü×/Ñ/Ø >ó ð ô˜%Ÿ+™+ u§{¡{Ð3Ó4€GÙ˜b“\€GˆE�Nð BØ �:‰:× Ñ Ô Ø—O‘OÔ$@À7Ñ$JÈAÓNˆEÚ8¸Ñ?‰FØ �Z‰Z× Ñ Ô "Ø—O‘OÔ$@À7Ñ$JÈAÓNˆEÚ8¸Ñ?‰Fð —O‘OÜð:óðñðó ˆEò9¸Ñ?ˆFà �XÒ Ü˜4 ¨°°t¸XÓFÐ FØ �xÒ Ü˜4 ¨°°t¸XÓFÐ FØ �}Ò $ܘ$ ¨¨u°d¸HÓEÐ Eð%øä × !Ñ !òBØ �‰�ŒÜ�d˜F E¨5°$¸ÓAÒAðBúsÂ&B/FÅFÅ+FÆ4F8Æ7F8r°có:—d|jj«fS)z=Uses the local `p1()` version of files as the merged version.r)rGrE©r@rÀrÁrÂrÃrÄs r!r¼r¼fs€ð ˆe�j‰j×!Ñ!Ó#Ð #Ð#r#r±có>—|jj«r)t|j«j«d}d|fSt|j«j |jj «|jj ««d}d|fS)z=Uses the other `p2()` version of files as the merged version.TFr)rGrEÚ_underlyingfctxifabsentÚremover¿r>rJ)r@rÀrÁrÂrÃrÄÚdeleteds r!r»r»ls�€ð ‡z�z×ÑÔä § ¡ Ó+×2Ñ2Ô4؈ð ˆgˆ:Ðô  § ¡ Ó+×1Ñ1Ø �J‰J�O‰OÓ ˜uŸz™z×/Ñ/Ó1ô ðˆØ ˆgˆ:Ðr#sfailcóâ—|jj«rUt|j«j|jj «|jj ««y)z± Rather than attempting to merge files that were modified on both branches, it marks them as unresolved. The resolve command must be used to resolve these conflicts.©rF)rGrErÎr¿r>rJrÌs r!r½r½{sM€ð ‡z�z×ÑÔÜ § ¡ Ó+×1Ñ1Ø �J‰J�O‰OÓ ˜uŸz™z×/Ñ/Ó1ô ð r#cóh—|j«r!|j«|j«S|S)z¼Sometimes when resolving, our fcd is actually an absentfilectx, but we want to write to it (to do the resolve). This helper returns the underyling workingfilectx in that case. rD)Úfilectxs r!rÎrΉs/€ð ×ÑÔØ× Ñ Ó" 7§<¡<£>Ñ2Ð2àˆr#cóú—tj|j««rXtd«|jj «z}|j td«|z«tj|«‚y)z verifies that text is non-binarys%s looks like a binary file.s warning: %s N) rr}ÚtextrrGr8rxr ÚAbort)ÚinputrÚmsgs r!Ú _verifytextrÚ”s\€ä×јŸ™›Ô&ÜÐ/Ó0°5·:±:·?±?Ó3DÑDˆØ �‰”Ð"Ó# cÑ)Ô*Ü�k‰k˜#ÓÐð'r#cóú—|\}}}}} |s4|jj«s|jj«ry|j} gd¢} t| |d| «} | r‘d}| d k(rd }n| d k(rd }td „|||fD««rytj||||¬«\}}|r| | vr4|jj||jj««|s| jd«yy#tj $rst | |dd«j«} | | vrOdj| D� cgc] } d| zdz‘Œ ncc} wc} «}t j td«|| |fz«‚Y�ŒwxYw)Nr)skeepó keep-merge3ókeep-mergediffspremerger#ó, ó's6%s.premerge not valid ('%s' is neither boolean nor %s)rirÝó mergediffrÜómerge3c3óbK—|]'}tj|j««–—Œ)y­wr-)rr}rÖ)Ú.0rØs r!Ú z_premerge..·s&èø€ð Ù9M°ŒJ× Ñ ˜eŸj™j›l× +Ñ9Mùs‚-/©Úmodes premerge successful r)rGrErr&r Ú ConfigErrorr"ÚlowerÚjoinrÚanyrr¿rJÚdebug)r@rÁrÂrÃrÄrr’r}r|ÚscriptfnrÚ validkeepÚpremerger˜Ú_validræÚ merged_textÚ conflictss r!Ú _premergeròœs‘€Ø08Ñ-€Dˆ(�F˜G XÙ�%—*‘*×%Ñ%Ô'¨5¯:©:×+>Ñ+>Ô+@Øà �‰€Bâ<€Ið ܘR  {¸°JÓ?ˆñØˆØ Ð(Ò (؉DØ ˜Ò '؈DÜ ñ Ø:?ÀÀuÑ9Mó ô ðÜ!,×!8Ñ!8Ø �4˜ Tô" ш �Yñ˜H¨ Ñ1ð �J‰J× Ñ ˜[¨%¯*©*×*:Ñ*:Ó*<Ô =ÙØ �H‰HÐ.Ô /ØØ øô; × Ñ òܘB  k°3Ó7×=Ñ=Ó?ˆØ ˜9Ñ $Ø—Z‘Z¹)Ó D¹)°Q ¨¡¨D£¹)ùÔ DÓEˆFÜ×#Ñ#ÜÐKÓLؘ 6Ð*ñ+óð ò %ðúsÁC4Ã4AE:Ä6E Å1E:Å9E:cóz—|\}}}} } tj|«} | r>|jjt d«|| |j ««fz«y|j «s|j «r>|jjt d«|| |j ««fz«yy)Ns2warning: internal %s cannot merge symlinks for %s Fs@warning: internal %s cannot merge change/delete conflict for %s T)rr³rrxrr8rE) r@rÀÚfcdÚfcoÚfcarÄrr’r}r|rìrÆs r!Ú _mergecheckr÷Ès«€Ø08Ñ-€Dˆ(�F˜G XÜ×"Ñ" 4Ó(€HÙØ �‰� ‰ Ü ÐDÓ EØ‘X˜cŸh™h›jÓ)Ð*ñ +ô ðØ ‡|�|„~˜Ÿ™œØ �‰� ‰ Ü ð%ó ð‘X˜cŸh™h›jÓ)Ð*ñ  +ô ðØ r#có@—|j} t||«t||«t||«tj||||¬«\}}|jj ||jj ««d|dfS#t j$rYywxYw)aD Uses the internal non-interactive simple merge algorithm for merging files. It will fail if there are any conflicts and leave markers in the partially merged file. Markers will have two sections, one for each side of merge, unless mode equals 'union' or 'union-other-first' which suppresses the markers.råTF)TTF)rrÚrrGr¿rJr r×)r@rÁrÂrÃrærrðrñs r!Ú_mergerùÝs˜€ð �‰€Bð &Ü�E˜2ÔÜ�D˜"ÔÜ�E˜2Ôô"-×!8Ñ!8Ø �4˜ Tô" ш �Yð � ‰ ×ј e§j¡j×&6Ñ&6Ó&8Ô9Ø�Y Ð%Ð%øô �;‰;ò!Ù ð!úsŽ$BÂBÂBóunionsJwarning: conflicts while merging %s! (edit, then use 'hg resolve --mark') )Úprecheckcó —t||||d«S)zÒ Uses the internal non-interactive simple merge algorithm for merging files. It will use both local and other sides for conflict regions by adding local on top of other. No markers are inserted.rú©rù©r@rÀrÁrÂrÃrÄr¨s r!Ú_iunionrÿöó€ô �$˜˜u d¨HÓ 5Ð5r#óunion-other-firstcó —t||||d«S)z0 Like :union, but add other on top of local.rrýrþs r!Ú_iunion_other_firstrs€ô �$˜˜u dÐ,@Ó AÐAr#ricó —t||||d«S)zð Uses the internal non-interactive simple merge algorithm for merging files. It will fail if there are any conflicts and leave markers in the partially merged file. Markers will have two sections, one for each side of merge.rirýrþs r!Ú_imergerrr#rácó —t||||d«S)a Uses the internal non-interactive simple merge algorithm for merging files. It will fail if there are any conflicts and leave markers in the partially merged file. Marker will have three sections, one from each side of the merge and one for the base content.rárýrþs r!Ú_imerge3r)s€ô �$˜˜u d¨IÓ 6Ð6r#smerge3-lie-about-conflictsr#có*—t|i|¤Ž\}}}|d|fSrM)r)r ÚkwargsÚb1ÚjunkÚb2s r!Ú_imerge3alwaysgoodr ;s'€ô˜TÐ, VÑ,�L€Bˆˆbð ˆu�bˆ=Ðr#ràcó —t||||d«S)ag Uses the internal non-interactive simple merge algorithm for merging files. It will fail if there are any conflicts and leave markers in the partially merged file. The marker will have two sections, one with the content from one side of the merge, and one with a diff from the base content to the content on the other side. (experimental)ràrýrþs r!Ú _imerge_diffrNs€ô �$˜˜u d¨LÓ 9Ð9r#s merge-localcó —t||||d«S)zg Like :merge, but resolve all conflicts non-interactively in favor of the local `p1()` changes.r°rýrþs r!Ú _imergelocalraó€ô �$˜˜u d¨HÓ 5Ð5r#s merge-othercó —t||||d«S)zg Like :merge, but resolve all conflicts non-interactively in favor of the other `p2()` changes.r±rýrþs r!Ú _imergeotherrirr#stagmergesjautomatic tag merging of %s failed! (use 'hg resolve --tool :merge' or another merge tool of your choice) có~—tj||j|j|j«\}}||dfS)z? Uses the internal tag merge algorithm (experimental). F)rÚmergerG) r@rÀrÁrÂrÃrÄr¨ÚsuccessÚstatuss r!Ú _itagmergerqs5€ô—n‘n T¨5¯:©:°u·z±zÀ4Ç9Á9ÓM�O€GˆVØ �F˜EÐ !Ð!r#sdumpT)r}r|cóT—t||j«}|jj«}ddlm} t |j| j «rtjd«‚tj|dz|jj««|j|dz|jj«|jj««|j|dz|jj«|jj««y)a Creates three versions of the files to merge, containing the contents of local, other and base. These files can then be used to perform a merge manually. If the file to be merged is named ``a.txt``, these files will accordingly be named ``a.txt.local``, ``a.txt.other`` and ``a.txt.base`` and they will be placed in the same directory as ``a.txt``. This implies premerge. Therefore, files aren't dumped, if premerge runs successfully. Use :forcedump to forcibly write files out. r©Úcontexts0in-memory merge does not support the :dump tool.s.locals.others.base)FrF)Ú _workingpathrGr8ÚrÚ isinstanceÚoverlayworkingfilectxr rµrr¦Ú decodeddataÚwwriter>rJ) r@rÀrÁrÂrÃrÄr¨ÚarÅrs r!Ú_idumpr$‚sË€ô �T˜5Ÿ:™:Ó&€AØ �‰�‰Ó €Båä�%—*‘*˜g×;Ñ;Ô<Ü×/Ñ/Ø ?ó ð ô ‡N�N�1�y‘= %§*¡*×"8Ñ"8Ó":Ô;؇K�K��Y‘ § ¡ §¡Ó 1°5·:±:×3CÑ3CÓ3EÔF؇K�K��X‘ ˜tŸy™yŸ~™~Ó/°·±·±Ó1BÔCØ r#s forcedumpc ó$—t|||||||«S)zS Creates three versions of the files as same as :dump, but omits premerge. )r$rþs r!Ú _forcedumpr&Ÿs€ô �$˜  u¨d°H¸fÓ EÐEr#có,—tjd«‚)Ns5in-memory merge does not support external merge tools)r rµrþs r!Ú _xmergeimmr(§s€ô × +Ñ +Ø@ó ðr#c óê—|jdd«} | sytj} |j«t |«|j «| |j«|t |«t d«d|j«v|ddœ«| |j«|t d«d|j«v|dd œ«| |j«|t d «d|j«v|d d œ«||d œ} tj| «} tj||«} tj|| tj| ¬ «} |j| j!| ««y)Nócommand-templatesspre-merge-tool-outputr°óló HG_MY_LABEL)óctxófctxónodeónameóislinkólabelóbaseó HG_BASE_LABEL)r-r.r0r1r2r±óHG_OTHER_LABEL)r-r/spathr°r3r±stoolpathstoolargs©ÚdefaultsÚ resources)rrÚ mappingdictrFrr8rrJrÚ unquotestringr ÚtemplateresourcesÚ maketemplaterrÚkeywordsrÚ renderdefault)rr@rÀÚfclÚfcbrõÚenvr’r Útmplr9ÚpropsÚtresr™s r!Ú_describemergerEµsZ€Ø �9‰9Ð)Ð+CÓ D€DÙ Øä×*Ñ*€Kà— ‘ “Ü�V“Ø—‘“ÙàŸ ™ ›ØÜ˜V›Ü˜8›Ø 3§9¡9£;Ð.ؘnÑ-ñ  ó  ñàŸ ™ ›ØÜ˜7›Ø 3§9¡9£;Ð.ØÐ.Ñ/ñ  ó ñàŸ ™ ›ØÜ˜8›Ø 3§9¡9£;Ð.ØÐ/Ñ0ñ  ó ðØñC" €EôJ × "Ñ " 4Ó (€Dô × &Ñ & r¨4Ó 0€DÜ×ÑØ ˆDœ:×.Ñ.¸$ô €Að‡I�Iˆa�o‰o˜eÓ$Õ%r#c ó†—|j}|j}|j} |\} } } } }tj|«}|j«s|j«r>|jj t d«| ||j««fz«yt||«}t|j| d«}d| j«| j«fd|j«|j«fg}d}d|vrg|}|j«}|jd«r"tjj|«\}}|jd ||j«f«t!|«5}|dd \}}t#|«d k(r|d }d „}|j«t%|«t%|j'«j)««t%| j'«j)««d |j+«vd |j+«vd | j+«v||«||«||«dœ }|j}||||||«||«||«dœ}t-j.d||d„«}t1|| d«r=|jj3t d«| ||j««fz«|€Y| dz|z}|jj5d|z«t7||||| ||| |« |j9||j:|d¬«}n«|jj5d| |fz«d} ddlm}|jA| d| z«} tI| |d«}!|!€#tEjFt d«| |fz«‚tKjL|«}"ddlm'}#|#jQ||d | |!d|"id!«\}$}%|%rd}|jj5d"|z«d!|d#fcddd«S#tB$r"tEjFt d«| z«‚wxYw#1swYyxYw)$Ns7warning: %s cannot merge change/delete conflict for %s )FrNsargsr3r±r#s$outputs.origr°r¯écóh—|jrd|j|jfzS|jS)Ns%s: %s)Ú label_detailr·)rØs r!Ú format_labelz_xmerge..format_label s/€Ø×!Ò!Ø  E§K¡K°×1CÑ1CÐ#DÑDÐDà—{‘{Ð"r#r+) sHG_FILEs HG_MY_NODEs HG_OTHER_NODEs HG_BASE_NODEs HG_MY_ISLINKsHG_OTHER_ISLINKsHG_BASE_ISLINKr,r5r4)r°r3r±soutputs labellocals labelothers labelbaseó\$cóR—tjtj|««Sr-©rr^rÚ localpath©Úss r!Úz_xmerge...s€”h×)Ñ)¬$¯.©.¸Ó*;ÔÚ_maketempfilesr�rrFÚnoderJrÚ interpolater&rrërEÚsystemr…rrUÚloadpathÚ Exceptionr r×rrÚ shellsplitrVÚ pythonhook)&r@rÀrÁrÂrÃrÄr¨rôrõrörr’r}r|rìrÆrNr ÚfilesÚoutpathÚlocaloutputpathÚextÚ temppathsÚbasepathÚ otherpathrJrArr¥r[ÚrrUÚmodÚmergefnÚargslistrVÚretÚraiseds& r!Ú_xmergeroës€Ø �*‰*€CØ �*‰*€CØ �)‰)€CØ08Ñ-€Dˆ(�F˜G XÜ×"Ñ" 4Ó(€HØ ‡|�|„~˜Ÿ™œØ �‰� ‰ Ü ÐIÓ JØ‘X˜cŸh™h›jÓ)Ð*ñ +ô ðܘT 3Ó'€IÜ �D—G‘G˜T 7Ó +€Dð �#—(‘(“*˜cŸo™oÓ/Ð0Ø �3—8‘8“:˜sŸ™Ó0Ð1ð €Eð€GØ�TÑàˆØ Ÿ+™+›-ˆà × #Ñ # HÔ -Ü#%§7¡7×#3Ñ#3°OÓ#DÑ ˆO˜SØ � ‰ �h °·±³Ð?Ô@ä ˜Ô  )Ø'¨¨˜mш�)Ü ˆy‹>˜QÒ Ø! !™ ˆIò #🙛 Ü  ›=Ü# C§M¡M£O×$8Ñ$8Ó$:Ó;Ü" 3§=¡=£?×#7Ñ#7Ó#9Ó:Ø! S§Y¡Y£[Ð0Ø $¨¯ © « Ð 3Ø# s§y¡y£{Ð2Ù(¨Ó/Ù+¨EÓ2Ù*¨4Ó0ñ  ˆð�W‰Wˆð ØØØÙ'¨Ó.Ù'¨Ó.Ù& tÓ,ñ ˆô×ÑØ Ø Ø Ù <ó  ˆô �R˜˜vÔ &Ø �G‰G�N‰NÜÐ8Ó9Ø™ #§(¡(£*Ó-Ð.ñ/ô ð РؘT‘/ DÑ(ˆCØ �G‰G�M‰MÐ7¸#Ñ=Ô >Ü ˜2˜t V¨S°#°s¸CÀÈ4Ô PØ— ‘ ؘŸ™¨C¸Lðó‰Að �G‰G�M‰MØ9¸XÀxÐrÚ firstlinerI)rØÚtemplater1rCÚtemplateresults r!Ú_populate_label_detailru\sW€à �*‰*× Ñ Ó €CØ ‡x�xƒzÐØ�f‰f‹hˆà �SˆM€EØ×+Ñ+¨EÓ2€NÜ#×-Ñ-¨nÓ=€EÕr#có*—|j}|jdd«}|�t||d|«}tj|«}t j ||«}t j||tj|¬«}|D]}t||«Œy)z?Populates the label details using the conflict marker template.r*s mergemarkerNsmergemarkertemplater6) rrr"rr:r r;r<rr=ru)r@ÚinputsrrrsrDrBrØs r!Ú_populate_label_detailsrxgsŠ€à �‰€BØ�y‰yÐ-¨~Ó>€HØ ÐܘB Ð&<¸hÓGˆÜ×&Ñ& xÓ0€HÜ × &Ñ & r¨4Ó 0€DÜ × "Ñ "Ø ˆHœz×2Ñ2¸dô €DóˆÜ˜u dÕ+ñr#có2—|€dddœSd|dzd|dzdœS)zƒReturn a dictionary of extra labels for use in prompts to the user Intended use is in strings of the form "(l)ocal%(l)s". r#)r+óos [%s]rrr:)Úlabelss r!r¶r¶ws=€ð €~àØñ ð ð ˜ ™Ñ"ؘ ™Ñ"ñ ðr#cóÖ—|j«ryddlm}t||j«rWt j d«\}}tj|d«5}|j|j««ddd«nGtj|||j««}t||«}tj ||«|j#||¬«S#1swYŒxYw)ašMakes and returns a filectx-like object for ``fcd``'s backup file. In addition to preserving the user's pre-existing modifications to `fcd` (if any), the backup is used to undo certain premerges, confirm whether a merge changed anything, and determine what line endings the new file should have. Backups only need to be written once since their content doesn't change afterwards. Nrrshg-merge-backupÚwb)r@)rErrrr r ÚmkstemprXÚfdopenr¿r>rÚ backuppathr8rrÚcopyfileÚarbitraryfilectx)r@rrôrrÅr¨r2r#s r!Ú _makebackuprƒˆs¹€ð ‡|�|„~Øõä�#�w×4Ñ4Ô5ä×%Ñ%Ð&8Ó9‰ ˆˆFÜ �Y‰Y�r˜4Ô  AØ �G‰G�C—H‘H“JÔ ÷!Ð ô×#Ñ# B¨¨c¯h©h«jÓ9ˆÜ ˜˜sÓ #ˆÜ � ‰ �a˜Ô à × #Ñ # F°Ð #Ó 6Ð6÷!Ð ús Á CÃC(c#óø‡K—tjd¬«Šˆfd„}g}|D]\}}}|j||||««Œ! |–—tj‰«y#tj‰«wxYw­w)zyCreates a temporary file for each (prefix, path, data) tuple in `files`, so an external merge tool may use them. shgmerge-)Úprefixcó•—tjj|«\}}dtjj|«|fz}tjj ‰|«}|r||z }t j ||«|S)Ns%s~%s)rXr8rYÚbasenamerérr¦)r…r8r>ÚfullbasereÚpreÚnameÚtmproots €r!Úmaketempfrompathz(_maketempfiles..maketempfrompath­slø€ÜŸ™×(Ñ(¨Ó.‰ ˆ�#Øœ"Ÿ'™'×*Ñ*¨8Ó4°fÐ=Ñ=ˆÜ�w‰w�|‰|˜G SÓ)ˆÙ Ø �C‰KˆDÜ �‰�t˜TÔ"؈ r#N)r Úmkdtempr�ÚshutilÚrmtree)rbrŒÚ temp_filesr…r8r>r‹s @r!rZrZ¦sqøèø€ô ×Ñ kÔ2€Gôð€JÛ#ш��dØ×ÑÑ*¨6°4¸Ó>Õ?ð$ðØÒä� ‰ �gÕøŒ� ‰ �gÕüsƒAA:ÁA Á A:Á A7Á7A:c óÄ —|j}|j«} tj|«} | | «} |j «xs"|j «xs|j «} d|j «|j «zv} |j «xs|j «}t||| | | |«\}}d}|tvr|jd«r|td«d}|ru|jd«rdd}|jd«dk\r'|d djdd «\}}|sd }d |vsd |vrd }nd }|r!tjtd«|z«‚}|j!d|| t#j$| «t#j$| «t#j$|«fz«|tvr0t|}|j&}|j(}|j*}d}n2|j-«rt.}nt0}t2}td«}d}d }||| | |f}|sddg}t|«dkr|j5d«t7j8||d«}t7j8||d «}t7j8||d«}|t:k(r |||||||«S||j«k7r;|j=td«| |«| |j««| fz«n|j=td«| z«|j!d|||fz«|rI|||||||«s<|r9|j-«rtj>d«‚|jA|| z«ytC|||«}d } |jEdd«}|rtG||d«} n|} |t2k(rrtI||||«d}!| dk7r|}!|dk7s| dk7rtK||||g|!¬«tM|||||«}|s|df|s|�|jO«SSSd|_(d|_(d|_(| dk7rtK||||g|¬«||||||||«\}"}}#|"rtS||||||«}|rF|r9|j-«rtj>d«‚|jA|| z«tU|«||#f|s|�|jO«SSS#|s|�|jO«wwwxYw)aŒperform a 3-way merge in the working directory mynode = parent node before merge orig = original local filename before merge fco = other file context fca = ancestor file context fcd = local file context for current/destination file Returns whether the merge is complete, the return value of the merge, and a boolean indicating whether the file was deleted from disk.r+Nó internal:sinternalrWFó:r¯érTó\ó/sinvalid 'python:' syntax: %ss?picked tool '%s' for %s (binary %s symlink %s changedelete %s) smerging %s failed! r°r±rGr3rsmerging %s and %s to %s s merging %s smy %s other %s ancestor %s s0in-memory merge does not support merge conflictsrÒr‚s mergemarkerssbasicrs)+rr8rr³rNrJrErœrXrYr�ÚcountÚrsplitr r×rrër r†rqÚ onfailurerûr´r(roÚ fullmerger�rÚ MergeInputrrrrµrxrƒrr"Ú_run_partial_resolution_toolsrxròrÏrIÚ_checkÚ_onfilemergefailure)$r@ÚwctxrÀÚorigrôrõrör{rrÅrÆÚfduipathr}r|r~rr’rìÚ invalidsyntaxÚscriptÚfuncrqr™rûÚ isexternalrÄrÁrÂrÃr¨riÚinternalmarkerstyleÚ markerstyleÚ labeltoolÚ needcheckrÐs$ r!Ú filemergerª¿s€ð �‰€BØ �‰‹€BÜ×"Ñ" 4Ó(€HÙ˜‹|€HØ �\‰\‹^Ò ?˜sŸ|™|›~Ò ?°·±³€FØ�c—i‘i“k C§I¡I£KÑ/Ð/€GØ—<‘<“>Ò3 S§\¡\£^€Lܘt R¨¨V°W¸lÓK�N€Dˆ(Ø€HØ ŒyјTŸ_™_¨\Ô:à”C˜ Ó$Ð&Ð'ˆÙ�H×'Ñ'¨ Ô3؈ Ø �>‰>˜$Ó  1Ò $Ø'¨¨˜|×2Ñ2°4¸Ó;Ñ ˆF�HÙØ $� à˜Ñ  D¨HÑ$4Ø $‘ à ˆMÙ Ü—+‘+œaÐ ?Ó@À8ÑKÓLÐ L؈؇H�HØKà Ø Ü × Ñ ˜VÓ $Ü × Ñ ˜WÓ %Ü × Ñ ˜\Ó *ð  ñ ô ð ŒyÑܘ‰ˆØ—N‘Nˆ Ø—N‘Nˆ Ø—=‘=ˆØ‰ à �?‰?Ô Ü‰DäˆD܈ ÜÐ-Ó.ˆ ؈؈ à�X˜v w°Ð8€Há Ø˜HÐ%ˆÜ ˆ6ƒ{�Q‚Ø� ‰ �gÔÜ × "Ñ " 3¨¨q© Ó 2€EÜ × "Ñ " 3¨¨q© Ó 2€EÜ × !Ñ ! # v¨a¡yÓ 1€DØ”GÒÙØ Ø Ø Ø Ø Ø ó  ð ð ˆs�x‰x‹zÒØ � ‰ Ü Ð*Ó +Ù˜‹~™x¨¯©« Ó3°XÐ>ñ ?õ ð � ‰ ”!�OÓ$ xÑ/Ô0à‡H�HÐ ,°°S¸#¨Ñ >Ô?á™  v¨s°C¸¸hÔGÙ Ø�‰Ô Ü×7Ñ7ØGóðð �G‰G�I Ñ(Ô )Øä ˜˜r 3Ó '€FØ €AðFØ Ÿi™i¨¨Ó?ÐÙ Ü" 2 t¨_Ó=‰Kà-ˆKà œ Ò !Ü )¨$°°u¸dÔ Cð ˆIؘhÒ&ð!� Ø" hÒ.°+ÀÒ2IÜ'ؘ5 %¨Ð.°YõôØØØØØó ˆAñؘ%�xñH�VÐ'Ø �M‰M�Oð(ˆqðC"&ˆEÔ Ø!%ˆEÔ Ø $ˆDÔ à ˜(Ò "Ü # D¨5°%¸Ð*>ÀTÕ Já $Ø Ø Ø Ø Ø Ø Ø ó! ш �1�gñ Ü�t˜Q  D¨#¨vÓ6ˆAá ÙØ—?‘?Ô$Ü×;Ñ;ð+óðð —‘˜  HÑ,Ô-Ü  Ô #à�'ˆzá�VÐ'Ø �M‰M�Oð(ˆqø‰q�VÐ'Ø �M‰M�Oð(ˆqúsÎ A3SÐBSÓScóð—|j}|jdd«ryg}t«}d}|j|«D�]\}} |j d«d} | |vrŒ |j |d| zg«} d} | r[t j |jd | |jj«¬ «} | |jj««} | sŒ˜|j|d | z«rŒ®|j|d | zd«}|j|d | z| «}|j|d| z«}|j|| ||f«�Œ|sy|j«d|jj«|j«fd|jj«|j«fd|jj«|j«fg}t!|«5}|\}}}|D]­\}} }}t#j$|«}|||dœ}t'j(d||d„«}d||fz}|j+||jd¬«}|rt-j.d| |fz«‚t'j0|«}t'j0|«}||k(sŒ­n|j3«|j3t'j0|««|j3«ddd«y#1swYyxYw)zCRuns partial-resolution tools on the three inputs and updates them.risdisable-partial-toolsNspartial-merge-toolsrrs %s.patternsTr#)r1s %s.disables%s.orders %s.executables%s.argsr°r3r±)r°r3r±rKcóR—tjtj|««Sr-rMrOs r!rQz/_run_partial_resolution_tools..¥s€œ(×-Ñ-¬d¯n©n¸QÓ.?Ô@r#s%s %sspartial-mergetool)rSrTs)partial merge tool %s exited with code %d)rr%r‡r„rˆr(r r…rGrFr8Ú configintrr�ÚsortrÖrZrr^rr\r]r Ú StateErrorr¤Úset_text)r@rÁrÂrÃrr–ÚseenÚsectionrer˜rŠÚpatternsÚis_matchÚmÚorderÚ executabler rbrfrNrgrhr[r¥riÚ local_textÚ other_texts r!rœrœps´€à �‰€BØ ‡}�}�XÐ7Ô8Øà €EÜ ‹5€DØ$€GØ—‘˜w×'‰ˆˆ1Ø�w‰w�t‹}˜QÑˆØ �4‰<Ø Ø—=‘= ¨.¸4Ñ*?ÀÓDˆØˆÙ Ü— ‘ Ø— ‘ ˜3 ¨e¯j©j×.BÑ.BÓ.DôˆAñ˜Ÿ™Ÿ™Ó*Ó+ˆHÚ Ø�}‰}˜W m°dÑ&:Ô;ØØ—L‘L ¨+¸Ñ*<¸aÓ@ˆEØŸ™ 7Ð,<¸tÑ,CÀTÓJˆJØ—9‘9˜W j°4Ñ&7Ó8ˆDØ �L‰L˜%  z°4Ð8Ö 9ð#(ñ& Øà ‡J�J„Lð �5—:‘:—?‘?Ó$ e§j¡j£lÐ3Ø �$—)‘)—.‘.Ó" D§I¡I£KÐ0Ø �5—:‘:—?‘?Ó$ e§j¡j£lÐ3ð €Eô ˜Ô  )Ø)2Ñ&ˆ �8˜Yã-2Ñ )ˆE�4˜ TÜ×%Ñ% jÓ1ˆCà#Ø!Ø#ñˆGô ×#Ñ#ØØØÙ@ó ˆDð˜c 4˜[Ñ(ˆCØ— ‘ ˜# 4§9¡9Ð9M� ÓNˆAÙÜ×&Ñ&Ø@ÀDÈ!À9ÑLóðôŸ™ yÓ1ˆJÜŸ™ yÓ1ˆJؘZÓ'áð1.3ð4 �‰�zÔ"Ø � ‰ ”d—m‘m HÓ-Ô.Ø �‰�zÔ"÷? × Ñ úsÇ$B5K,ÊA K,Ë,K5cóB—td«}tj|«‚)Ns0merge halted after failed merge (see hg resolve))rr ÚInterventionRequired)rÙs r!Ú _haltmerger¼¹s€Ü Ð ?Ó @€CÜ × $Ñ $ SÓ )Ð)r#có¦—|jdd«}|dk(r*td«}|j|d«dk(r t«|dk(r t«yy)Nris on-failurer­s,continue merge operation (yn)?$$ &Yes $$ &Norrshalt)rrr¸r¼)rÚactionrÙs r!ržrž¾sO€Ø �Y‰Y�x Ó /€FØ �ÒÜÐ?Ó@ˆØ �?‰?˜3 Ó " aÒ 'Ü ŒLØ �ÒÜ� ðr#có^—ttjd|tj««S)Ns^([<>=+|-])\1{6}( .*)$)ÚboolÚreÚsearchÚ MULTILINEr¡s r!ÚhasconflictmarkersrÄÉs*€ô Ü � ‰ Ø &Ø Ü �L‰Ló ó ðr#có0—|j«}tj|«}|s7t||d«sdt ||d«vrt |j ««rd}d}dt ||d«vr(d}|jtd«||«zd«rd}|sW|sUt||d «sd t ||d«vr9|�7|j|«s&|jtd «||«zd«rd}|�#t||d «rtt||«|«|S) Nscheckconflictss conflictsscheckrFr­Ts0was merge of '%s' successful (yn)?$$ &Yes $$ &Nos checkchangedschangedsJ output file %s appears unchanged was merge successful (yn)?$$ &Yes $$ &Nosfixeol) r8rr³r&r)rÄr>r¸rrHr¬r) r@rirrrôr¨rÅrÆÚcheckeds r!r�r�×s(€Ø �‰‹€BÜ×"Ñ" 4Ó(€Há Ü�"�dÐ-Ô.Ø œ9 R¨¨xÓ8Ñ 8ä ˜cŸh™h›jÔ )؈Aà€GØ”I˜b $¨Ó1Ñ1ØˆØ �?‰?Ü ÐAÓ BÙ�r‹lñ à ô ð ˆAñ Ùä �b˜$ Ô 0ØœY r¨4°Ó:Ñ:ð Ð  c§g¡g¨f¤oØ�‰Üð&óñ ˜2“,ñ ð ôð�à Мi¨¨D°)Ô<Ü”,˜t SÓ)¨6Ô2à €Hr#có@—|j|j««Sr-)Úwjoinr8)r@r1s r!rrs€Ø �:‰:�c—h‘h“jÓ !Ð!r#c óЗ|jj«D]¢\}}d|z}|t|<|td|z<|t|<t |j j«D��cgc] \}}|sŒ |‘Œ c}}«}|sŒeddj |«z} |jtjd| z«z|_Œ¤td«td«td«y cc}}w) z4Load internal merge tool from specified registrarobjr“r’s (actual capabilities: %s)rÞs %ss* (actual capabilities: binary, symlink)s! (actual capabilities: binary)s" (actual capabilities: symlink)N) Ú_tabler�rXÚ internalsdocrŒrkrérSr Úsysstrr) rÚextnameÚ registrarobjrŠr¤Úfullnamerer˜rkÚcapdescs r!ÚloadinternalmergerÑ sÝ€à"×)Ñ)×/Ñ/Ö1‰ ˆˆdؘ$‘;ˆØ"Œ �(ÑØ)-Œ �, Ñ%Ñ&Ø!%Œ �XÑä¨T×->Ñ->×-DÑ-DÔ-FÔLÑ-F¡T Q¨Ê!šqÐ-FÒLÓMˆ Ú Ø6¸¿¹Øó:ñˆGð Ÿ<™<¬(¯/©/¸)ÀgÑ:MÓ*NÑNˆD�Lð2ô"Ð3Ô4ôÐ*Ô+ôÐ+Õ,ùó#Ms Á& C" Á1C" r-)UÚ contextlibrXrÁrŽÚi18nrr[rrr rrrr r r r rrrrrrrÚutilsrrr"r&r)rXrËÚ internalmergeÚ internaltoolrrÚ mergeonlyršr¹rºr+r\r_rZrœr¢r¬rÊr¼r»r½rÎrÚròr÷rùrÿrrrr rrrrr$r&r(rErorurxr¶rƒÚcontextmanagerrZrªrœr¼ržrÄr�rrÑÚvaluesÚ i18nfunctionsr:r#r!ÚrÛs¯ðóÛ Û Û å÷õ÷÷÷õ÷ ò @òDò=ð € à€ à&ˆy×&Ñ&Ó(€ ð × Ñ €Ø × "Ñ "€ Ø × "Ñ "€ ñ !ð-ó Ðñ !ð.ó Ð÷1ñ1òh&ò$ò 2ònòb ò .ñˆi˜Ó!ñ0Bó"ð0Bñfˆh˜Ó ñ$ó!ð$ñ ˆh˜Ó ñ ó!ð ñˆg�wÓñ ó ð òòò) òXò*&ñ2Ø Ø Ùð 2óðôñ6óð6ñØØ Ùð 2óðôñBóðBñ Ø Ø Ùð 2óðôñ6óð6ñØ Ø Ùð 2óðôñ7óð7ñØ!Ø ØØ ô ñ ó ð ñØØ Ùð 2óðôñ:óð:ñˆn˜i°+Ô>ñ6ó?ð6ñˆn˜i°+Ô>ñ6ó?ð6ñØØ Ùð "óóñ"óð"ñˆg�y¨°tÔ<ñó=ðñ8ˆl˜I¨d¸DÔAñFóBðFò ò3&òlnòb>ó ,ò ò"7ð< ×Ññóðó0nòbF#òR*ò ò ò, ò^"ò-ñ:�$˜˜lÔ+ð× Ñ Ó"� r#