Ë ô{Ö{…ÒÊãób—ddlZddlZddlmZddlmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZddlmZmZej6Zej8Zej:Zej<Zej>Zej@Z ejBZ!ejDZ"iZ#ejHe#«Z$e$d«d„«Z%e$d d ¬ «d „«Z&e$d ddh¬«d„«Z'e$ddddh¬«d„«Z(e$ddh¬«d„«Z)e$d«d„«Z*e$d«d„«Z+e$ddh¬«d„«Z,e$dd dh¬«d!„«Z-e$d"d#¬ «d$„«Z.e$d%«d&„«Z/e$d'«d(„«Z0e$d)dh¬«d*„«Z1e$d+dh¬«d,„«Z2e$d-dh¬«d.„«Z3d/„Z4e$d0«d1„«Z5e$d2«d3„«Z6e$d4«d5„«Z7e$d6«d7„«Z8e$d8dh¬«d9„«Z9e$d:«d;„«Z:e$d<«d=„«Z;e$d>«d?„«Z<e$d@«dA„«Z=e$dB«dC„«Z>e$dD«dE„«Z?e$dF«dG„«Z@e$dH«dI„«ZAe$dJ«dK„«ZBe$dLd h¬«dM„«ZCe$dNd dh¬«dO„«Ze$dP«dQ„«ZDe$dR«dS„«ZEe$dTdU¬ «dV„«ZFe$dWd dh¬«dX„«ZGe$dY«dZ„«ZHe$d[«d\„«ZIe$d]«d^„«ZJe$d_d`d dh¬«da„«ZKe$db«dc„«ZLdd„ZMe#j�«ZOy)eéNé)Ú_)Úbin)ÚcolorÚdagopÚdiffutilÚencodingÚerrorÚminirstÚobsutilÚpycompatÚ registrarÚrevsetÚ revsetlangÚscmutilÚtemplatefiltersÚ templatekwÚ templateutilÚutil)ÚdateutilÚ stringutilsdate(date[, fmt])có8—dt|«cxkrdks ntjtd««‚t |||dtd««}d}t|«dk(rt |||d«}|€t j|«St j||«S)z¥Format a date. The format string uses the Python strftime format. The default is a Unix date format, including the timezone: "Mon Sep 04 15:13:13 2006 0700".rés!date expects one or two argumentsrsdate expects a date informationN)Úlenr Ú ParseErrorrÚevaldateÚ evalstringrÚdatestr)ÚcontextÚmappingÚargsÚdateÚfmts ú;usr/lib/python3.12/site-packages/mercurial/templatefuncs.pyr"r"3s™€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!EÓFÓGÐGä ØØØ ˆQ‰ä Ð ,Ó-ó  €Dð €CÜ ˆ4ƒy�A‚~ܘ '¨4°©7Ó3ˆØ €{Ü×Ñ Ó%Ð%ä×Ñ  cÓ*Ð*ósdict([[key=]value...])s*args **kwargs)Úargspecc󦇇—tj«}|dD]s}tj|«}|st j t d««‚||vs||dvr!t j t d«|z«‚t‰‰|«||<Œu|jˆˆfd„|dj«D««tj|«S)zvConstruct a dict from key-value pairs. A key may be omitted if a value expression can provide an unambiguous name.óargssdict key cannot be inferredskwargss!duplicated dict key '%s' inferredc3óB•K—|]\}}|t‰‰|«f–—Œy­w©N)Ú evalfuncarg)Ú.0ÚkÚvrr s €€r$Ú zdict_..Zs+øèø€ðá+‰DˆAˆqð ŒK˜ ¨!Ó ,Ô-Ù+ùsƒ) rÚsortdictrÚfindsymbolicnamer rrr+ÚupdateÚitemsÚ hybriddict)rr r!Údatar.r-s`` r$Údict_r6LsÃù€ô �=‰=‹?€Dà �'Œ]ˆÜ × )Ñ )¨!Ó ,ˆÙÜ×"Ñ"¤1Ð%CÓ#DÓEÐ EØ �‰9˜˜T )™_Ñ,Ü×"Ñ"¤1Ð%IÓ#JÈQÑ#NÓOÐ Oܘg w°Ó2ˆˆQŠð ð ‡K�Kôà˜‘O×)Ñ)Ô+óôô × "Ñ " 4Ó (Ð(r%s)diff([includepattern [, excludepattern]])óctxóui)Úrequiresc ób‡‡‡—t‰«dkDrtjtd««‚ˆˆˆfd„}‰j ‰d«}‰j ‰d«}t j |«}|j|jg|d«|d««|¬«}d j|«S) zCShow a diff, optionally specifying files to include or exclude.rs(diff expects zero, one, or two argumentscój•—|t‰«kr#t‰‰‰|«j«}|r|gSgSr*)rrÚstrip)ÚiÚsr!rr s €€€r$Ú getpatternszdiff..getpatternsks8ø€Ø Œs�4‹yŠ=ܘ7 G¨T°!©WÓ5×;Ñ;Ó=ˆAÙØ�s� ؈ r%r7r8rr)ÚmatchÚoptsr%) rr rrÚresourcerÚ diffalloptsÚdiffr@Újoin)rr r!r?ÚctxÚuiÚdiffoptsÚchunkss``` r$rDrDas ú€ô  ˆ4ƒy�1‚}ä×ÑœqÐ!LÓMÓNÐNöð × Ñ ˜7 FÓ +€CØ × Ñ ˜' 5Ó )€BÜ×#Ñ# BÓ'€HØ �X‰XØ�i‰i˜™K¨›N©K¸«NÓ;À(ðó€Fð �8‰8�FÓ Ðr%sextdata(source)ósourceócache)r&r9có@—d|vrtjtd««‚t|||d«}|sdt j |d«}|r,tjtd«td«|z¬«‚tjtd««‚|j |d«jdi«}|j |d«}||vr||}n)tj|j«|«x}||<|j|j«d «S) zBShow a text read from the specified extdata source. (EXPERIMENTAL)rJsextdata expects one argumentsempty data source specifiedsdid you mean extdata('%s')?©ÚhintrKsextdatar7r%) r rrrrr1rBÚ setdefaultrÚ extdatasourceÚrepoÚgetÚrev)rr r!ÚsourceÚsymÚcacherFr5s r$ÚextdatarW|s €ð ˜Ñä×ÑœqÐ!@ÓAÓBÐBä ˜ ¨$¨y©/Ó :€FÙ Ü×+Ñ+¨D°©OÓ<ˆÙ Ü×"Ñ"ÜÐ0Ó1ÜÐ5Ó6¸Ñ<ôð ô ×"Ñ"¤1Ð%CÓ#DÓEÐ EØ × Ñ ˜W hÓ /× :Ñ :¸:ÀrÓ J€EØ × Ñ ˜7 FÓ +€CØ ��Ø�V‰}‰ä&×4Ñ4°S·X±X³ZÀÓHÐHˆˆu�V‰}Ø �8‰8�C—G‘G“I˜sÓ #Ð#r%sfiles(pattern)có&—t|«dk(stjtd««‚t |||d«}|j |d«}|j |g«}t|j|««}tj||d|«S)zUAll files of the current changeset matching the pattern. See :hg:`help patterns`.rsfiles expects one argumentrr7sfile) rr rrrrBr@ÚlistÚmatchesrÚcompatfileslist)rr r!ÚrawrFÚmÚfiless r$r^r^˜sƒ€ô ˆt‹9˜Š>ä×ÑœqÐ!>Ó?Ó@Ð@ä �W˜g t¨A¡wÓ /€CØ × Ñ ˜7 FÓ +€CØ � ‰ �3�%Ó€AÜ �—‘˜Q“Ó €EÜ × 'Ñ '¨°¸'À5Ó IÐIr%s1fill(text[, width[, initialident[, hangindent]]])cóˆ—dt|«cxkrdks ntjtd««‚t |||d«}d}d}d}dt|«cxkrdkr>nn;t |||dtd««} t |||d«}t |||d «}tj||||«S#t $rYŒ#wxYw) zJFill many paragraphs with optional indentation. See the "fill" filter.rés"fill expects one to four argumentsréLr%rsfill expects an integer widthé) rr rrrÚ evalintegerÚ IndexErrorrÚfill)rr r!ÚtextÚwidthÚ initindentÚ hangindents r$rere§sÔ€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!FÓGÓHÐHä �g˜w¨¨Q©Ó 0€DØ €EØ€JØ€JØŒC�‹IÔ˜ÕÜØ Ø Ø �‰Gä Ð.Ó /ó  ˆð Ü# G¨W°d¸1±gÓ>ˆJÜ# G¨W°d¸1±gÓ>ˆJô × Ñ   e¨Z¸Ó DÐDøôò Ù ð úsÁ= B5Â5 CÃCsfilter(iterable[, expr])có‡—dt‰«cxkrdks ntjtd««‚t ‰‰‰d«}t‰«dk(rˆˆfd„}nˆˆˆfd„}|j ‰‰|«S)zsRemove empty elements from a list or a dict. If expr specified, it's applied to each element to test emptiness.rrs#filter expects one or two argumentsrcó(•—|j‰‰«Sr*)Útobool)Úwrr s €€r$Úselectzfilter_..selectÎsø€Ø—8‘8˜G WÓ-Ð -r%cóÖ•—t|tj«stjt d««‚‰j ‰|j‰««}t‰|‰d«S)Nsnot filterable by expressionr) Ú isinstancerÚmappabler rrÚ overlaymapÚtomapÚ evalboolean)rmÚlmr!rr s €€€r$rnzfilter_..selectÓsXø€Ü˜a¤×!6Ñ!6Ô7Ü×&Ñ&¤qÐ)HÓ'IÓJÐJØ×#Ñ# G¨Q¯W©W°WÓ-=Ó>ˆBܘw¨¨D°©GÓ4Ð 4r%)rr rrÚ evalwrappedÚfilter)rr r!Úiterablerns``` r$Úfilter_ryÄsiú€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!GÓHÓIÐIܘ7 G¨T°!©WÓ5€HÜ ˆ4ƒy�A‚~ö .ö  5ð �?‰?˜7 G¨VÓ 4Ð4r%sformatnode(node)cóä—t|«dk7rtjtd««‚|j |d«}t |||d«}|j r|Stj|«S)z;Obtain the preferred form of a changeset hash. (DEPRECATED)rsformatnode expects one argumentr8r) rr rrrBrÚ debugflagrÚshort)rr r!rGÚnodes r$Ú formatnoder~Üsg€ô ˆ4ƒy�A‚~ä×ÑœqÐ!CÓDÓEÐEà × Ñ ˜' 5Ó )€BÜ �g˜w¨¨Q©Ó 0€DØ ‡|‚|؈ Ü × Ñ  Ó &Ð&r%smailmap(author)órepocób—t|«dk7rtjtd««‚t |||d«}|j |d«}|j |d«}d|vr3|j jd«}tj|«|d<tj|d|«S)zNReturn the author, updated according to the value set in the .mailmap filersmailmap expects one argumentrrKrsmailmaps.mailmap) rr rrrrBÚwvfsÚtryreadrÚ parsemailmapÚmapname)rr r!ÚauthorrVrQr5s r$Úmailmapr†ês¥€ô ˆ4ƒy�A‚~Ü×ÑœqÐ!@ÓAÓBÐBä ˜ ¨$¨q©'Ó 2€Fà × Ñ ˜W hÓ /€EØ × Ñ ˜G WÓ -€Dà˜ÑØ�y‰y× Ñ  Ó-ˆÜ&×3Ñ3°DÓ9ˆˆjÑä × Ñ ˜e JÑ/°Ó 8Ð8r%s@pad(text, width[, fillchar=' '[, left=False[, truncate=False]]])s!text width fillchar left truncatecó�—d|vsd|vrtjtd««‚t|||dtd««}t |||d«}d}d}d}d|vrOt |||d«}t t j|««dk7rtjtd ««‚d |vrt|||d «}d |vrt|||d «}|tjt j|««z }|d kr-|r+tjt j|«||¬ «S|d kr|S|r||z|zS|||zzS)z#Pad text with a fill character.stextswidths#pad() expects two to four argumentsspad() expects an integer widthFó sfillcharrs%pad() expects a single fill charactersleftstruncater)Úleftside) r rrrcrrrÚ stripeffectsrtr ÚcolwidthÚtrim) rr r!rgrfÚtruncateÚleftÚfillcharÚ fillwidths r$Úpadr‘ýsa€ð�dјh¨dÑ2ä×ÑœqÐ!GÓHÓIÐIä ØØØ ˆX‰ä Ð +Ó,ó  €Eô �g˜w¨¨W© Ó 6€Dà€HØ €DØ€HØ�dÑܘg w°°[Ñ0AÓBˆÜ Œu×!Ñ! (Ó+Ó ,°Ò 1ä×"Ñ"¤1Ð%MÓ#NÓOÐ OØ�$�ܘ7 G¨T°'©]Ó;ˆØ�dÑܘw¨°°kÑ1BÓCˆàœ×)Ñ)¬%×*<Ñ*<¸TÓ*BÓCÑC€IØ�1‚}™Ü�}‰}œU×/Ñ/°Ó5°uÀtÔLÐLØ�A‚~؈ ٠ؘ)Ñ# dÑ*Ð*à�h Ñ*Ñ*Ð*r%s&indent(text, indentchars[, firstline])có—dt|«cxkrdks ntjtd««‚t |||d«}t |||d«}|}t|«dk(rt |||d«}t j |||¬«S)zµIndents all non-empty lines with the characters given in the indentchars string. An optional third parameter will override the indent for the first line only if present.rrbs'indent() expects two or three argumentsrr)Ú firstline)rr rrrrÚindent)rr r!rfr”r“s r$r”r”*s‡€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!KÓLÓMÐMä �g˜w¨¨Q©Ó 0€DÜ ˜ ¨$¨q©'Ó 2€Fà€IÜ ˆ4ƒy�A‚~ܘw¨°°a±Ó9ˆ ä × !Ñ ! $¨¸)Ô DÐDr%sget(dict, key)cóN—t|«dk7rtjtd««‚t |||d«}t |||d«} |j |||«S#tj$r0}td«}tjt|«|¬«‚d}~wwxYw)zšGet an attribute/key from an object. Some keywords are complex types. This function allows you to obtain the value of an attribute on these types.rsget() expects two argumentsrrs&get() expects a dict as first argumentrMN)rr rrrvÚ evalrawexpÚ getmemberÚbytes)rr r!ÚdictargÚkeyÚerrrNs r$rRrR>sœ€ô  ˆ4ƒy�A‚~ä×ÑœqÐ!?Ó@ÓAÐAä˜' 7¨D°©GÓ4€GÜ �W˜g t¨A¡wÓ /€Cð6Ø× Ñ  ¨'°3Ó7Ð7øÜ × Ñ ò6äÐ:Ó;ˆÜ×Ñœu S›z°Ô5Ð5ûð6úsÁA!Á!B$Á4+BÂB$s config(section, name[, default])có`—|j|d«j}t||||t«S)z5Returns the requested hgrc config option as a string.r8)rBÚconfigÚ_configr©rr r!Úfns r$r�r�Qs/€ð × Ñ ˜' 5Ó )× 0Ñ 0€BÜ �7˜G T¨2¬zÓ :Ð:r%s$configbool(section, name[, default])có`—|j|d«j}t||||t«S)z6Returns the requested hgrc config option as a boolean.r8)rBÚ configboolržrtrŸs r$r¢r¢Xs/€ð × Ñ ˜' 5Ó )× 4Ñ 4€BÜ �7˜G T¨2¬{Ó ;Ð;r%s#configint(section, name[, default])có`—|j|d«j}t||||t«S)z7Returns the requested hgrc config option as an integer.r8)rBÚ configintržrcrŸs r$r¤r¤_s/€ð × Ñ ˜' 5Ó )× 3Ñ 3€BÜ �7˜G T¨2¬{Ó ;Ð;r%có—dt|«cxkrdks ntjtd««‚t |||d«}t |||d«}t|«dk(r||||d«}||||«S|||«S)Nrrbs%config expects two or three argumentsrr)rr rrÚevalstringliteral)rr r!ÚconfigfnÚ defaultfnÚsectionÚnameÚdefaults r$ržržfs‰€Ø ”�T“Ô ˜aÔ Ü×ÑœqÐ!IÓJÓKÐKô   ¨°$°q±'Ó:€GÜ ˜W g¨t°A©wÓ 7€DÜ ˆ4ƒy�A‚~Ù˜G W¨d°1©gÓ6ˆÙ˜  wÓ/Ð/ᘠÓ&Ð&r%sif(expr, then[, else])cóì—dt|«cxkrdks ntjtd««‚t |||d«}|rt |||d«St|«dk(rt |||d«Sy)z?Conditionally execute based on the result of an expression.rrbs!if expects two or three argumentsrrN)rr rrrtr–)rr r!Útests r$Úif_r®vsw€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!EÓFÓGÐGä �w ¨¨a©Ó 1€D٠ܘ' 7¨D°©GÓ4Ð4Ü ˆT‹�aŠÜ˜' 7¨D°©GÓ4Ð4ð r%s*ifcontains(needle, haystack, then[, else])cój—dt|«cxkrdks ntjtd««‚t |||d«} t |||d«}|j |||«}|rt |||d«St|«dk(rt |||d«Sy#tj$rd}YŒHwxYw) zNConditionally execute based on whether the item "needle" is in "haystack".rbr`s*ifcontains expects three or four argumentsrrFrN)rr rrrvr–Úcontains)rr r!ÚhaystackÚneedleÚfounds r$Ú ifcontainsr´…sÀ€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!NÓOÓPÐPä˜7 G¨T°!©WÓ5€HðܘG W¨d°1©gÓ6ˆØ×!Ñ! '¨7°FÓ;ˆñ ܘ' 7¨D°©GÓ4Ð4Ü ˆT‹�aŠÜ˜' 7¨D°©GÓ4Ð4ð øô × Ñ òØŠðúsÁ#BÂB2Â1B2s ifeq(expr1, expr2, then[, else])có—dt|«cxkrdks ntjtd««‚t |||d«}t |||d«}||k(rt |||d«St|«dk(rt |||d«Sy)zBConditionally execute based on whether 2 items are equivalent.rbr`s$ifeq expects three or four argumentsrrrN)rr rrrr–)rr r!r­r@s r$Úifeqr¶šs�€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!HÓIÓJÐJä �g˜w¨¨Q©Ó 0€DÜ �w ¨¨a©Ó 1€EØ ˆu‚}ܘ' 7¨D°©GÓ4Ð4Ü ˆT‹�aŠÜ˜' 7¨D°©GÓ4Ð4ð r%sjoin(list, sep)cóð—dt|«cxkrdks ntjtd««‚t |||d«}d}t|«dkDrt |||d«}|j |||«S)z&Join items in a list with a delimiter.rrs!join expects one or two argumentsrrˆ)rr rrrvrrE)rr r!ÚjoinsetÚjoiners r$rErEªss€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!EÓFÓGÐGä˜' 7¨D°©GÓ4€GØ €FÜ ˆ4ƒy�1‚}ܘG W¨d°1©gÓ6ˆØ �<‰<˜ ¨&Ó 1Ð1r%slabel(label, expr)cóâ—t|«dk7rtjtd««‚|j |d«}t |||d«}t |||d«}|j||«S)z’Apply a label to generated content. Content with a label applied can result in additional post-processing, such as automatic colorization.rslabel expects two argumentsr8rr)rr rrrBrr¦Úlabel)rr r!rGÚthingr»s r$r»r»¸so€ô  ˆ4ƒy�A‚~ä×ÑœqÐ!?Ó@ÓAÐAà × Ñ ˜' 5Ó )€BÜ �w ¨¨a©Ó 1€Eô ˜g w°°Q±Ó 8€Eà �8‰8�E˜5Ó !Ð!r%slatesttag([pattern])cóÈ—t|«dkDrtjtd««‚d}t|«dk(rt |||d«}t j |||«S)aThe global tags matching the given pattern on the most recent globally tagged ancestor of this changeset. If no such tags exist, the "{tag}" template resolves to the string "null". See :hg:`help revisions.patterns` for the pattern syntax. rs&latesttag expects at most one argumentNr)rr rrrrÚshowlatesttags)rr r!Úpatterns r$Ú latesttagrÀÊs]€ô ˆ4ƒy�1‚}ä×ÑœqÐ!JÓKÓLÐLà€GÜ ˆ4ƒy�A‚~ܘW g¨t°A©wÓ7ˆÜ × $Ñ $ W¨g°wÓ ?Ð?r%slocaldate(date[, tz])có—dt|«cxkrdks ntjtd««‚t |||dtd««}t|«dk\rMd}t |||d«}t |t«rtj|«\}}|rd}|€$ t|«}ntj«d}tj|d|f«S#ttf$rtjtd««‚wxYw)zIConverts a date to the specified timezone. The default is local date.rrs&localdate expects one or two argumentsrs$localdate expects a date informationNslocaldate expects a timezone)rr rrrr+rpr˜rÚ parsetimezoneÚintÚ TypeErrorÚ ValueErrorÚmakedaterr")rr r!r"ÚtzoffsetÚtzÚ remainders r$Ú localdaterÊÜs €ð ”�T“Ô ˜aÔ ä×ÑœqÐ!JÓKÓLÐLä ØØØ ˆQ‰ä Ð 1Ó2ó  €Dô ˆ4ƒy�A‚~ØˆÜ ˜ '¨4°©7Ó 3ˆÜ �bœ%Ô Ü"*×"8Ñ"8¸Ó"<Ñ ˆH�iÙØ�Ø Ð ð Kܘr›7‘ô ×$Ñ$Ó& qÑ)ˆÜ × Ñ ˜d 1™g xÐ0Ó 1Ð1øô œzÐ*ò Kä×&Ñ&¤qÐ)HÓ'IÓJÐJð Kús  CÃ.D s max(iterable)c ó,—t|«dk7rtjtd««‚t |||d«} |j ||«S#tj$r0}td«}tjt |«|¬«‚d}~wwxYw)zReturn the max of an iterablersmax expects one argumentrs(max first argument should be an iterablerMN)rr rrrvÚgetmaxr˜©rr r!Úkwargsrxr›rNs r$Úmax_rÏýó†€ô ˆ4ƒy�A‚~ä×ÑœqÐ!<Ó=Ó>Ð>ä˜7 G¨T°!©WÓ5€Hð6Ø�‰˜w¨Ó0Ð0øÜ × Ñ ò6äÐ<Ó=ˆÜ×Ñœu S›z°Ô5Ð5ûð6úó¾AÁBÁ#+BÂBs min(iterable)c ó,—t|«dk7rtjtd««‚t |||d«} |j ||«S#tj$r0}td«}tjt |«|¬«‚d}~wwxYw)zReturn the min of an iterablersmin expects one argumentrs(min first argument should be an iterablerMN)rr rrrvÚgetminr˜rÍs r$Úmin_rÔ rÐrÑs mod(a, b)có —t|«dk(stjtd««‚d„}t j ||||d|df«S)z0Calculate a mod b such that a / b + a mod b == arsmod expects two argumentscó —||zSr*©)ÚaÚbs r$Úzmod..$s€˜˜Ašr%rr)rr rrrÚ runarithmetic)rr r!Úfuncs r$ÚmodrÝsT€ô ˆt‹9˜Š>ä×ÑœqÐ!=Ó>Ó?Ð?á €DÜ × %Ñ %Ø�˜4  a¡¨$¨q©'Ð2ó ðr%sobsfateoperations(markers)có:—t|«dk7rtjtd««‚t |||d«} t j |«}tj|d¬«S#ttf$r!td«}tj|«‚wxYw)úCCompute obsfate related information based on markers (EXPERIMENTAL)rs&obsfateoperations expects one argumentrs operation©rªs6obsfateoperations first argument should be an iterable) rr rrr+r ÚmarkersoperationsrÚ hybridlistrÄÚKeyError©rr r!Úmarkersr5Úerrmsgs r$Úobsfateoperationsrç*s�€ô ˆ4ƒy�A‚~ä×ÑœqÐ!JÓKÓLÐLä˜' 7¨D°©GÓ4€Gð'Ü×(Ñ(¨Ó1ˆÜ×&Ñ& t°,Ô?Ð?øÜ ”xÐ ò'äÐLÓMˆÜ×јvÓ&Ð&ð'ús ¾+A*Á*0Bsobsfatedate(markers)có<—t|«dk7rtjtd««‚t |||d«} t j |«}tj|dd¬«S#ttf$r!td«}tj|«‚wxYw)rßrs obsfatedate expects one argumentrsdates%d %d)rªr#s0obsfatedate first argument should be an iterable) rr rrr+r Ú markersdatesrrârÄrãräs r$Ú obsfatedaterê<s’€ô ˆ4ƒy�A‚~ä×ÑœqÐ!DÓEÓFÐFä˜' 7¨D°©GÓ4€Gð'ä×#Ñ# GÓ,ˆÜ×&Ñ& t°'¸xÔHÐHøÜ ”xÐ ò'äÐFÓGˆÜ×јvÓ&Ð&ð'ús ¾,A+Á+0Bsobsfateusers(markers)cóD—t|«dk7rtjtd««‚t |||d«} t j |«}tj|d¬«S#tttf$r!td«}tj|«‚wxYw)rßrs!obsfateusers expects one argumentrsuserràs>obsfateusers first argument should be an iterable of obsmakers) rr rrr+r Ú markersusersrrârÄrãrÅ)rr r!rår5Úmsgs r$Ú obsfateusersrîOs˜€ô ˆ4ƒy�A‚~ä×ÑœqÐ!EÓFÓGÐGä˜' 7¨D°©GÓ4€Gð $Ü×#Ñ# GÓ,ˆÜ×&Ñ& t°'Ô:Ð:øÜ ”x¤Ð ,ò$äð ó ˆô×јsÓ#Ð#ð $ús ¾+A*Á*5Bs obsfateverb(successors, markers)có"—t|«dk7rtjtd««‚t |||d«}t |||d«} t j ||«S#t$r!td«}tj|«‚wxYw)zFCompute obsfate related information based on successors (EXPERIMENTAL)rs!obsfateverb expects two argumentsrrs.obsfateverb first argument should be countable)rr rrr+r Ú obsfateverbrÄ)rr r!Ú successorsråræs r$rðrðds�€ô ˆ4ƒy�A‚~ä×ÑœqÐ!EÓFÓGÐGä˜W g¨t°A©wÓ7€Jܘ' 7¨D°©GÓ4€Gð'Ü×"Ñ" :¨wÓ7Ð7øÜ ò'äÐDÓEˆÜ×јvÓ&Ð&ð'ús ÁA$Á$*Bs relpath(path)cóÀ—t|«dk7rtjtd««‚|j |d«}t |||d«}|j |«S)zhConvert a repository-absolute path into a filesystem path relative to the current working directory.rsrelpath expects one argumentrr)rr rrrBrÚpathto)rr r!rQÚpaths r$ÚrelpathrõvsY€ô ˆ4ƒy�A‚~ä×ÑœqÐ!@ÓAÓBÐBà × Ñ ˜G WÓ -€DÜ �g˜w¨¨Q©Ó 0€DØ �;‰;�tÓ Ðr%srevset(query[, formatargs...])cóô‡ —t|«dkDstjtd««‚t |||d«}|j |d«Š ˆ fd„}t|«dkDr.queryŽs-ø€Ü �O‰O˜DŸG™G T´)×2DÑ2DÀTÓ2JÔ KˆÙ�‹wˆr%rNrKs revsetcachesrevision)rªÚcachekey) rr rrrrBr+rÚ formatspecrOrÚrevslist) rr r!r\rüršrØÚ formatargsÚrevsrVÚ revsetcacherQs @r$rrƒs ø€ô ˆt‹9�qŠ=ä×ÑœqÐ!HÓIÓJÐJä �W˜g t¨A¡wÓ /€CØ × Ñ ˜G WÓ -€Dôô ˆ4ƒy�1‚}؈Ø@DÀQÀRÁÓIÁ¸1”k '¨7°AÕ6Àˆ ÐIÙ”Z×*Ñ*¨3Ð<°Ò<Ó=‰à× Ñ  ¨(Ó3ˆØ×&Ñ& ~°rÓ:ˆ ØˆØ �+Ñ Ø˜sÑ#‰Dᘓ:ˆDØ#ˆK˜Ñ Ü × Ñ   t°+ÈÔ LÐLùòJsÁ,C5srstdoc(text, style)cóÌ—t|«dk7rtjtd««‚t |||d«}t |||d«}t j ||dg¬«S)zFormat reStructuredText.rsrstdoc expects two argumentsrrsverbose)ÚstyleÚkeep)rr rrrr Úformat)rr r!rfrs r$Úrstdocr¢s_€ô ˆ4ƒy�A‚~ä×ÑœqÐ!@ÓAÓBÐBä �g˜w¨¨Q©Ó 0€DÜ �w ¨¨a©Ó 1€Eä �>‰>˜$ e°:°,Ô ?Ð?r%ssearch(pattern, text)c ó˜—t|«dk7rtjtd««‚t |||d«}t |||d«} t j |«}|j«ttj|j««z}|rCtjtd«djd„t|«D««|d œz«‚|j|«}|stj «Sd |j#d«i}|j%d „t'|j)«d«D««|j%tj|j+«««tj,|d ¬ «S#t j$r"tjtd«|z«‚wxYw)z‰Look for the first text matching the regular expression pattern. Groups are accessible as ``{1}``, ``{2}``, ... in %-mapped template.rssearch expects two argumentsrrs!search got an invalid pattern: %ss2invalid group %(group)s in search pattern: %(pat)ss, c3ó&K—|] }d|z–—Œ y­w)s'%s'Nr×)r,Úgs r$r/zsearch..Çsèø€Ð$LÑ:K°Q W¨q¥[Ñ:Kùs‚)sgroupspató0c3ó0K—|]\}}d|z|f–—Œy­w)s%dNr×)r,r=r.s r$r/zsearch..Ñsèø€Ð FÑ)E¡  Aˆu�q‰y˜!ŒnÑ)Eùs‚s{0})Útmpl)rr rrrÚreÚcompileÚknownresourcekeysÚsetr Ú byteskwargsÚ groupindexrEÚsortedÚsearchrÚ mappingnoneÚgroupr2Ú enumerateÚgroupsÚ groupdictÚ mappingdict) rr r!ÚpatÚsrcÚpatreÚ badgroupsr@rus r$rr¯s‰€ô ˆ4ƒy�A‚~ä×ÑœqÐ!@ÓAÓBÐBä �W˜g t¨A¡wÓ /€CÜ �W˜g t¨A¡wÓ /€CðNÜ— ‘ ˜3“ˆð ×)Ñ)Ó+¬cÜ×јU×-Ñ-Ó.ó/ñ€IñÜ×Ñä ÐCÓ DàŸ*™*Ñ$L¼&ÀÔ:KÓ$LÓLØññ ó ð ð �L‰L˜Ó €EÙ Ü×'Ñ'Ó)Ð)à �— ‘ ˜A“Ð €B؇I�IÑ F¬°5·<±<³>À1Ô)EÓ FÔF؇I�IŒh×"Ñ" 5§?¡?Ó#4Ó5Ô6Ü × #Ñ # B¨VÔ 4Ð4øô1 �8‰8òNä×ÑœqÐ!EÓFÈÑLÓMÐMðNús ÁFÆ5G sseparate(sep, args...)s sep *argsc#óÂK—d|vrtjtd««‚t|||d«}d}|dD]}t|||«}|sŒ|rd}n|–—|–—Œ!y­w)z,Add a separator between non-empty arguments.sseps&separate expects at least one argumentTr(FN)r rrr)rr r!ÚsepÚfirstÚargÚargstrs r$Úseparater%Ösrèø€ð�TÑä×ÑœqÐ!JÓKÓLÐLä �W˜g t¨F¡|Ó 4€CØ €EØ�GŒ}ˆÜ˜G W¨cÓ2ˆÙØ Ù Ø‰EàŠIØ‹ ñùs‚AAsshortest(node, minlength=4)có —dt|«cxkrdks ntjtd««‚t |||d«}d}t|«dkDrt |||dtd««}|j |d«}d|jjz}t|«|kDr|St|«|k(r t|«}n tj||«}|s|S|j |d«} tj"||||«S#tj$r|cYSwxYw#tj$r|jj}YŒutj $r|cYSwxYw#tj$$r|cYSwxYw) z1Obtain the shortest representation of a node.rrs'shortest() expects one or two argumentsrr`s'shortest() expects an integer minlengthrrK)rr rrrrcrBÚ nodeconstantsÚnodelenrÚbinasciiÚErrorrÚresolvehexnodeidprefixÚWdirUnsupportedÚwdiridÚ LookupErrorÚshortesthexnodeidprefixÚRepoLookupError) rr r!ÚhexnodeÚ minlengthrQÚ hexnodelenr}rVs r$Úshortestr4ês�€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!KÓLÓMÐM䘠'¨4°©7Ó3€Gà€IÜ ˆ4ƒy�1‚}ÜØ Ø Ø �‰Gä Ð8Ó 9ó  ˆ ð × Ñ ˜G WÓ -€DØ�T×'Ñ'×/Ñ/Ñ/€JÜ ˆ7ƒ|�jÒ ØˆÜ ˆW‹˜Ò #ð Ü�w“<‰Dð Ü×1Ñ1°$¸Ó@ˆDñ ؈NØ × Ñ ˜W hÓ /€EðÜ×.Ñ.¨t°T¸9ÀeÓLÐLøô�~‰~ò ØŠNð ûô ×$Ñ$ò -Ø×%Ñ%×,Ñ,ŠDÜ× Ñ ò ØŠNð ûô × Ñ òØŠðús<Â9 D ÃD&Ã3E+Ä D#Ä"D#Ä&)E(ÅE(Å'E(Å+FÆFsstrip(text[, chars])có—dt|«cxkrdks ntjtd««‚t |||d«}t|«dk(r!t |||d«}|j |«S|j «S)z[Strip characters from a string. By default, strips all leading and trailing whitespace.rrs"strip expects one or two argumentsr)rr rrrr<)rr r!rfÚcharss r$r<r<sv€ð ”�T“Ô ˜aÔ ä×ÑœqÐ!FÓGÓHÐHä �g˜w¨¨Q©Ó 0€DÜ ˆ4ƒy�A‚~ܘ7 G¨T°!©WÓ5ˆØ�z‰z˜%Ó Ð Ø �:‰:‹<Ðr%s%sub(pattern, replacement, expression)c#óúK—t|«dk7rtjtd««‚t |||d«}t |||d«}t |||d«} t j |«} |j||«–—y#t j$r"tjtd«|z«‚wxYw#t j$r"tjtd«|z«‚wxYw­w) z8Perform text substitution using regular expressions.rbssub expects three argumentsrrrssub got an invalid pattern: %ss"sub got an invalid replacement: %sN)rr rrrrrÚsub)rr r!rÚrplrrs r$r8r8&sîèø€ô ˆ4ƒy�A‚~ä×ÑœqÐ!?Ó@ÓAÐAä �W˜g t¨A¡wÓ /€CÜ �W˜g t¨A¡wÓ /€CÜ �W˜g t¨A¡wÓ /€CðKÜ— ‘ ˜3“ˆðOØ�i‰i˜˜SÓ!Ó!øô �8‰8òKä×ÑœqÐ!BÓCÀcÑIÓJÐJðKûô �8‰8òOä×ÑœqÐ!FÓGÈ#ÑMÓNÐNðOüs0‚AC;Á B Á6C C; 5CÃC;Ã5C8Ã8C;sstartswith(pattern, text)có—t|«dk7rtjtd««‚t |||d«}t |||d«}|j |«r|Sy)ziReturns the value from the "text" argument if it begins with the content from the "pattern" argument.rs startswith expects two argumentsrrr%)rr rrrÚ startswith)rr r!Úpatnrfs r$r;r;=s^€ô ˆ4ƒy�A‚~ä×ÑœqÐ!DÓEÓFÐFä �g˜w¨¨Q©Ó 0€DÜ �g˜w¨¨Q©Ó 0€DØ ‡��tÔØˆ Ø r%ssubsetparents(rev, revset)s rev revsetcó˜—d|vsd|vrtjtd««‚|j|d«}t j |||d«}t j |||d«}t|tj«stjtd««‚|j||«}|j}|rJ|j|d«}|jdi«} || vr| |} n4tj||«} | | |<ntj|||¬«} t j|| j|««S) z@Look up parents of the rev in the sub graph given by the revset.srevsrevsets#subsetparents expects two argumentsrs&subsetparents expects a queried revsetrKssubsetparentswalker)Ústartrev)r rrrBrrcrvrprÿÚtovaluerýrOrÚsubsetparentswalkerÚ parentsset) rr r!rQrSÚqÚsubsetršrVÚ walkercacheÚwalkers r$Ú subsetparentsrFLs8€ð�TјY¨dÑ2ä×ÑœqÐ!GÓHÓIÐIà × Ñ ˜G WÓ -€Dä × "Ñ " 7¨G°T¸&±\Ó B€Cô × Ñ  ¨'°4¸ ±?ÓC€AÜ �aœ×.Ñ.Ô /ä×ÑœqÐ!JÓKÓLÐLØ �Y‰Y�w Ó (€FØ �*‰*€Cá à× Ñ  ¨(Ó3ˆØ×&Ñ&Ð'=¸rÓBˆ Ø �+Ñ Ø  Ñ%‰Fä×.Ñ.¨t°VÓ<ˆFØ%ˆK˜Ò ô×*Ñ*¨4°À#ÔFˆÜ × Ñ   v×'8Ñ'8¸Ó'=Ó >Ð>r%sword(number, text[, separator])có€—dt|«cxkrdks,ntjtd«t|«z«‚t |||dtd««}t |||d«}t|«dk(rt |||d«}nd}|j |«}|t|«k\s|t|« kry||S) z"Return the nth word from a string.rrbs+word expects two or three arguments, got %drsword expects an integer indexrNr%)rr rrrcrÚsplit)rr r!ÚnumrfÚsplitterÚtokenss r$ÚwordrLssÆ€ð ”�T“Ô ˜aÔ ä×ÑÜ Ð<Ó =ÄÀDÃ Ñ Ió ð ô ØØØ ˆQ‰ä Ð *Ó+ó  €Cô �g˜w¨¨Q©Ó 0€DÜ ˆ4ƒy�A‚~ܘg w°°Q±Ó8‰àˆà �Z‰Z˜Ó !€FØ Œc�&‹kÒ˜S¤C¨£K <Ò/Øà�c‰{Ðr%cóZ—|jj«D]\}}|t|<Œy)z2Load template function from specified registrarobjN)Ú_tabler3Úfuncs)rGÚextnameÚ registrarobjrªrÜs r$Ú loadfunctionrR�s(€à"×)Ñ)×/Ñ/Ö1‰ ˆˆdØŒˆdŠ ñ2r%)Pr)rÚi18nrr}rÚrrrr r r r r rrrùrrrrrrÚutilsrrr–rvr+rtrrcrr¦rOÚ templatefuncr"r6rDrWr^reryr~r†r‘r”rRr�r¢r¤ržr®r´r¶rEr»rÀrÊrÏrÔrÝrçrêrîrðrõrrr%r4r<r8r;rFrLrRÚvaluesÚ i18nfunctionsr×r%r$ÚrYsAðóÛ åÝ÷÷÷÷ó÷$ð × $Ñ $€ Ø×&Ñ&€ Ø×&Ñ&€ Ø×&Ñ&€ Ø × Ñ €Ø×&Ñ&€ Ø × $Ñ $€ Ø ×2Ñ2Ðð €Ø%ˆy×%Ñ% eÓ,€ ñÐ"Ó#ñ+ó$ð+ñ0Ð'Ð1BÔCñ)óDð)ñ(Ø0¸FÀE¸?ôñóðñ0Ø  °V¸XÐ4Fôñ$óð$ñ2Ш6¨(Ô3ñ Jó4ð JñÐBÓCñEóDðEñ8Ð)Ó*ñ5ó+ð5ñ.Ð!¨U¨GÔ4ñ 'ó5ð 'ñÐ ¨G°XÐ+>Ô?ñ9ó@ð9ñ$ØIØ 0ôñ&+ó ð&+ñRÐ7Ó8ñEó9ðEñ&ÐÓ ñ6ó!ð6ñ$Ð1¸U¸GÔDñ;óEð;ñ Ð5ÀÀÔHñ<óIð<ñ Ð4À¸wÔGñ<óHð<ò 'ñ Ð'Ó(ñ 5ó)ð 5ñÐ;Ó<ñ5ó=ð5ñ(Ð1Ó2ñ 5ó3ð 5ñÐ Ó!ñ 2ó"ð 2ñÐ#¨u¨gÔ6ñ"ó7ð"ñ"Ð%Ó&ñ@ó'ð@ñ"Ð&Ó'ñ2ó(ð2ñ@ÐÓñ 6ó ð 6ñÐÓñ 6ó ð 6ñˆlÓñ óð ñÐ+Ó,ñ'ó-ð'ñ"Ð%Ó&ñ'ó'ð'ñ$Ð&Ó'ñ$ó(ð$ñ(Ð1Ó2ñ'ó3ð'ñ"Ш'¨Ô3ñ ó4ð ñÐ/¸7ÀHÐ:MÔNñMóOðMñ<Ð$Ó%ñ @ó&ð @ñÐ&Ó'ñ#5ó(ð#5ñLÐ'°Ô>ñó?ðñ&Ð,¸ÀÐ7JÔKñ)óLð)ñXÐ%Ó&ñ ó'ð ñÐ6Ó7ñOó8ðOñ,Ð*Ó+ñ ó,ð ñØ!Ø Ø�xÐ ôñ ?ó ð ?ñDÐ0Ó1ñó2ðò8ð— ‘ “� r%