Ë Q¤u+ùôûãóœ—ddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZmZmZmZmZm Z mZmZddlmZmZddlmZej8d «Zej<Zd Zd „Z d „Z!Gd „d«Z"Gd„d«Z#d„Z$d„Z%hd£Z&Gd„d«Z' ejPZ'ejTejV«Gd„d««Z,d6d„Z-d„Z.d„Z/d„Z0d„Z1ejTejV«Gd„d««Z2Gd„d ejf«Z4d!Z5Gd"„d#e6«Z7ejTejp«Gd$„d%««Z9ejTejt«Gd&„d'««Z;ejTejx«Gd(„d)««Z=ejTej|«Gd*„d+««Z?ejTejx«Gd,„d-««Z@ejTej|«Gd.„d/««ZAGd0„d1e2«ZBGd2„d3eA«ZCGd4„d5e9«ZDy#e)$rY�Œ¤wxYw)7éNé)Ú_)ÚbinÚhexÚnullrev)Úgetattr) ÚencodingÚerrorÚmatchÚmdiffÚpathutilÚpolicyÚpycompatÚrevlogÚutil)Ú repositoryr)Ú constantsÚparsersièc#óDK—|r|dddk7r td«‚d}|j«D]r}|�||kDr td«‚|}|jd«\}}t|«}|dd}|tvr |dd}|dz}nd}|d|zk7r td «‚|t |«|f–—Œty­w) Néÿÿÿÿó ó"Manifest did not end in a newline.ó#Manifest lines not in sorted order.óróéóInvalid manifest line)Ú ValueErrorÚ splitlinesÚsplitÚlenÚ_manifestflagsr)ÚnodelenÚdataÚprevÚlÚfÚnÚnlÚflagss ú6usr/lib/python3.12/site-packages/mercurial/manifest.pyÚ_parser,/sÆèø€ñ  ��R�S� ˜UÒ"ÜÐ>Ó?Ð?Ø €DØ �_‰_Ö ˆØ Ð   q¢ÜÐCÓDÐ D؈Ø�w‰w�u‹~‰ˆˆ1Ü �‹VˆØ�"�#�ˆØ ”NÑ "Ø�#�2�ˆAØ �!‰G‰BàˆEØ ��W‘Ò ÜÐ5Ó6Ð 6à”�Q“˜ÐÓñùs‚BB cóº—g}g}|D]7\}}}|j|«|jd|t|«|fz«Œ9t|«dj|«S)Nó%s%s%s r)ÚappendrÚ_checkforbiddenÚjoin)ÚitÚfilesÚlinesr'r(Úfls r+Ú_textr6Js\€Ø €EØ €EÛ‰ˆˆ1ˆbØ � ‰ �QŒð � ‰ �] a¬¨Q«° _Ñ4Õ5ð ô �EÔØ �8‰8�E‹?Ðrcó"—eZdZd„Zd„Zd„ZeZy)Úlazymanifestitercó —d|_||_y©Nr)ÚposÚlm©Úselfr<s r+Ú__init__zlazymanifestiter.__init__Xs€ØˆŒØˆ�rcó—|S©N©©r>s r+Ú__iter__zlazymanifestiter.__iter__\ó€Øˆ rcó— |jj|j«\}}|dk(r|xjdz c_|dS|xjdz c_|j d|«}|||S#t$rt‚wxYw)Nrrrr)r<Ú_getr;Ú IndexErrorÚ StopIterationÚfind)r>r$r;Úzeroposs r+Únextzlazymanifestiter.next_s�€ð ØŸ™Ÿ ™  T§X¡XÓ.‰IˆD�#ð �"Š9Ø �HŠH˜‰M�Hؘ‘7ˆNØ �Š�A‰ �Ø—)‘)˜G SÓ)ˆØ�C˜Ð Ð øôò ÜÐ ð ús ‚(A5Á5BN©Ú__name__Ú __module__Ú __qualname__r?rDrLÚ__next__rBrr+r8r8Ws„òòò !ð�Hrr8có"—eZdZd„Zd„Zd„ZeZy)Úlazymanifestiterentriescó —||_d|_yr:)r<r;r=s r+r?z lazymanifestiterentries.__init__os€ØˆŒØˆ�rcó—|SrArBrCs r+rDz lazymanifestiterentries.__iter__srErcóˆ— |jj|j«\}}|dk(r|xjdz c_|S|j d|«}|j d|«}|dk(s |dk(s||krt jd«‚||dz |}|tvr ||z dz }n ||z dz }d}|d|jjzk7rt jd«‚t||jj|j|dz|«}|xjdz c_|||||fS#t$rt‚wxYw)Nrrrrrrr) r<rGr;rHrIrJr Ú StorageErrorr"Ú_nodelenÚ unhexlifyÚ extrainfo)r>r$r;rKÚnlposr*ÚhlenÚhashvals r+rLzlazymanifestiterentries.nextvsG€ð ØŸ™Ÿ ™  T§X¡XÓ.‰IˆD�#ð �"Š9Ø �HŠH˜‰M�H؈KØ—)‘)˜G SÓ)ˆØ— ‘ ˜% Ó%ˆØ �bŠ=˜E RšK¨5°7ª?Ü×$Ñ$Ð%=Ó>Ð >Ø�U˜Q‘Y Ð'ˆØ ”NÑ "ؘ7‘? QÑ&‰Dà˜7‘? QÑ&ˆD؈EØ �1�t—w‘w×'Ñ'Ñ'Ò 'Ü×$Ñ$Ð%=Ó>Ð >ÜØ �$—'‘'×#Ñ# D§H¡HÑ-¨w¸©{¸Dó ˆð �Š�A‰ �Ø�S˜Ð! 7¨EÐ2Ð2øô+ò ÜÐ ð ús ‚(D1Ä1ENrMrBrr+rSrSns„òòò3ð4�HrrScóN—t||||z«}|r|t|dz«z }|S)Néÿ)rÚchr)r$Úextrar;ÚlengthÚss r+rYrY“s2€Ü ˆD��s˜V‘|Ð $Ó%€AÙ Ø ŒS�˜‘Ó ÑˆØ €Hrcó—||kD||kz SrArB)ÚaÚbs r+Ú_cmprgšs€Ø �‰E�a˜!‘eÑ Ðr>rólótóxcó”—eZdZdZ dd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zy)Ú _lazymanifesta÷A pure python manifest backed by a byte string. It is supplimented with internal lists as it is modified, until it is compacted back to a pure byte string. ``data`` is the initial manifest data. ``positions`` is a list of offsets, one per manifest entry. Positive values are offsets into ``data``, negative values are offsets into the ``extradata`` list. When an entry is removed, its entry is dropped from ``positions``. The values are encoded such that when walking the list and indexing into ``data`` or ``extradata`` as appropriate, the entries are sorted by filename. ``extradata`` is a list of (key, hash, flags) for entries that were added or modified since the manifest was created or compacted. Ncó—||_|€J|j|«|_dgt|j«z|_||_g|_d|_y|dd|_|dd|_|dd|_||_||_y)NrF)rXÚ findlinesÚ positionsr!rZr$Ú extradataÚ hasremovals)r>r#r$rorZrprqs r+r?z_lazymanifest.__init__³s~€ð ˆŒ Ø Ð Ø!Ÿ^™^¨DÓ1ˆDŒNؘS¤3 t§~¡~Ó#6Ñ6ˆDŒN؈DŒI؈DŒNØ$ˆDÕ à&¡q˜\ˆDŒNØ&¡q˜\ˆDŒNØ&¡q˜\ˆDŒN؈DŒIØ*ˆDÕ rcó”—|sgS|jd«}|dk(s|dddk7r td«‚dg}|d|jd«}|t|«dz krr|dk7rm|j|dz«||dz|jd|dz«}||kr td«‚|}|jd|dz«}|t|«dz kr|dk7rŒm|S)Nrrrrrrr)rJrr!r/)r>r$r;ror%Únextss r+rnz_lazymanifest.findlinesÊsè€Ù؈IØ�i‰i˜ÓˆØ �"Š9˜˜R˜S˜  UÒ*ÜÐBÓCÐ CØ�Cˆ ØÐ(�d—i‘i Ó(Ð)ˆØ”C˜“I ‘MÒ! c¨R¢iØ × Ñ ˜S 1™WÔ %ؘ˜q™ 4§9¡9¨W°c¸A±gÓ#>Ð?ˆEØ�tŠ|Ü Ð!GÓHÐH؈DØ—)‘)˜E 3¨¡7Ó+ˆCð ”C˜“I ‘MÒ! c¨R£iðÐrcóp—|j|}|dk\r|j|fS|j| dz dfS)Nrrr)ror$rp)r>Úindexr;s r+rGz_lazymanifest._getÛsA€ð�n‰n˜UÑ#ˆØ �!Š8Ø—9‘9˜c�>Ð !Ø�~‰~˜s˜d Q™hÑ'¨Ð+Ð+rcó�—|dk\r,|j||jjd|dz«S|j| dz dS)Nrrr)r$rJrp)r>r;s r+Ú_getkeyz_lazymanifest._getkeyäsG€Ø �!Š8Ø—9‘9˜S 4§9¡9§>¡>°'¸3À¹7Ó#CÐDÐ DØ�~‰~˜s˜d Q™hÑ'¨Ñ*Ð*rcóä—d}t|j«dz }||krQ||zdz}|j|}|j|«}t||«}|dk(r|S|dkr|dz }n|dz}||krŒQy)Nrrrr©r!rorwrg©r>ÚkeyÚfirstÚlastÚmidpointÚnextposÚ candidateÚrs r+Úbsearchz_lazymanifest.bsearchésŠ€ØˆÜ�4—>‘>Ó" QÑ&ˆà�tŠmØ ™ ¨Ñ*ˆHØ—n‘n XÑ.ˆGØŸ ™  WÓ-ˆIÜ�S˜)Ó$ˆAØ�AŠvØ�à�q’5Ø# a™<‘Dà$ q™L�Eð�t‹mðrcóî—d}t|j«dz }||krS||zdz}|j|}|j|«}t||«}|dk(r|dfS|dkr|dz }n|dz}||krŒS|dfS)NrrrTFryrzs r+Úbsearch2z_lazymanifest.bsearch2ûs™€ðˆÜ�4—>‘>Ó" QÑ&ˆà�tŠmØ ™ ¨Ñ*ˆHØ—n‘n XÑ.ˆGØŸ ™  WÓ-ˆIÜ�S˜)Ó$ˆAØ�AŠvØ  $Ð'Ð'à�q’5Ø# a™<‘Dà$ q™L�Eð�t‹mð�uˆ~Ðrcó*—|j|«dk7S©Nr)r‚©r>r{s r+Ú __contains__z_lazymanifest.__contains__s€Ø�|‰|˜CÓ  BÑ&Ð&rcó¸—t|t«s td«‚|j|«}|dk(rt‚|j |«\}}|dk(r |d|dfS|j d|«}|j d|«}d|cxkrt|j«ksJ‚J‚t|j«t|j«k(sJ‚|dk(s |dk(s||krtjd«‚||z dz }||dz |}|tvr|dz}nd }|d|jzk7rtjd«‚t||j||dz|«} | |fS) Ns'getitem: manifest keys must be a bytes.rrrrrrrr)Ú isinstanceÚbytesÚ TypeErrorr‚ÚKeyErrorrGrJr!rorZr rWr"rXrY) r>r{Úneedler$r;rKr[r\r*r]s r+Ú __getitem__z_lazymanifest.__getitem__sd€Ü˜#œuÔ%ÜÐFÓGÐ GØ—‘˜cÓ"ˆØ �RŠ<܈NØ—I‘I˜fÓ%‰ ˆˆcØ �"Š9ؘ‘G˜T !™WÐ%Ð %Ø—)‘)˜G SÓ)ˆØ— ‘ ˜% Ó)ˆØ�FÔ1œc $§.¡.Ó1Ò1Ð1Ñ1Ð1Ð1Ü�4—>‘>Ó"¤c¨$¯.©.Ó&9Ò9Ð9Ð9Ø �bŠ=˜E RšK¨5°7ª?Ü×$Ñ$Ð%=Ó>Ð >Ø�w‰ Ñ"ˆØ�U˜Q‘Y Ð'ˆØ ”NÑ "Ø �A‰I‰DàˆEØ �1�t—}‘}Ñ$Ò $Ü×$Ñ$Ð%=Ó>Ð >ܘD $§.¡.°Ñ"8¸'ÀA¹+ÀtÓLˆØ˜ÐÐrcód—|j|«\}}|st‚|j|}|jd||j|dzdz|_|jd||j|dzdz|_|dk\r2|jd|dz|j|dzdz|_d|_yy)NrrrT)r„r�rorZr$rq)r>r{rŽÚfoundÚcurs r+Ú __delitem__z_lazymanifest.__delitem__,s¶€ØŸ ™  cÓ*‰ ˆ�Ù܈NØ�n‰n˜VÑ$ˆØŸ™¨¨Ð0°4·>±>À&È1Á*À,Ð3OÑOˆŒØŸ™¨¨Ð0°4·>±>À&È1Á*À,Ð3OÑOˆŒØ �!Š8🠙  $ 3˜¨'Ñ1°D·I±I¸cÀA¹g¸iÐ4HÑHˆDŒIØ#ˆDÕ ð rcó`—t|t«s td«‚t|t«rt |«dk7r td«‚|d}t|t«r t |«dvr td«‚|d}t|t«rt |«dkDr td|«‚|j |«\}}|rs|j |}|dkr|||df|j| dz <y|jj|||df«t |j« |j |<y|jj|||df«|j d|t |j« gz|j |dz|_|jd|dgz|j|dz|_ y) Ns-setitem: manifest keys must be a byte string.rs1Manifest values must be a tuple of (node, flags).r©éé s-node must be a 20-byte or 32-byte byte stringrs'flags must a 0 or 1 byte string, got %r) rŠr‹rŒÚtupler!r„rorpr/rZ)r>r{Úvaluer]r*rŽr‘r;s r+Ú __setitem__z_lazymanifest.__setitem__9s¡€Ü˜#œuÔ%ÜÐLÓMÐ Mܘ%¤Ô'¬3¨u«:¸ª?ÜØDóð ð˜‘(ˆÜ˜'¤5Ô)¬S°«\ÀÑ-IÜÐLÓMÐ MØ�a‘ˆÜ˜%¤Ô'¬3¨u«:¸ª>ÜÐFÈÓNÐ NØŸ ™  cÓ*‰ ˆ�Ù à—.‘. Ñ(ˆCØ�QŠwØ,/°¸%À¹(Ð+C�—‘ ˜t a™xÒ(ð—‘×%Ñ% s¨G°U¸1±XÐ&>Ô?Ü*-¨d¯n©nÓ*=Ð)=�—‘˜vÒ&ð �N‰N× !Ñ ! 3¨°°q±Ð":Ô ;à—‘˜w Ð'ܘŸ™Ó'Ð'Ð(ñ)à—.‘.  Ð)ñ*ð ŒNð —‘˜w Ð'¨1¨#Ñ-°·±¸v¸wÐ0GÑGð �Nrcóš—t|j|j|j|j|j |j «SrA)rlrXr$rorZrprqrCs r+Úcopyz_lazymanifest.copy\s;€äØ �M‰MØ �I‰IØ �N‰NØ �N‰NØ �N‰NØ × Ñ ó  ð rcój—t|j«dk(r |jsyg}d}d}dgt|j«z|_|t|j«k�r-|j|dk\rþ|j|}|} ||j|<|dz }|t|j«k(s|j|dkrn_|jr.|j j d||j|«dk7rn%||j||z z }|j|}Œž|j j d|«}|dk7r|dz }|||z z }|j|j ||«�n|t|j«krë|j|dkrÙ|j|}|j| dz }|j|j|««||j|<d}t|d«dkDrd}t|d«|kDr!t|d|dz«|j|<|t|d«z }|dz }|t|j«kr|j|dkrŒÙ|t|j«kr�Œ-d j|«|_d |_g|_y) Nrrs rrr–ér—rF) r!rprqrorZr$rJr/Ú_packÚordr1) r>r&ÚiÚoffsetr’Úlast_cutÚend_cutÚtr\s r+Ú_compactz_lazymanifest._compactgs†€ä ˆt�~‰~Ó  !Ò #¨D×,<Ò,<Ø Ø ˆØ ˆØˆØ˜œs 4§>¡>Ó2Ñ2ˆŒØ”#�d—n‘nÓ%Ó%Ø�~‰~˜aÑ  AÒ%Ø—n‘n QÑ'�Ø�ð Ø(.�D—N‘N 1Ñ%ؘ‘F�AØœC §¡Ó/Ò/°4·>±>À!Ñ3DÀqÒ3HØð×(Ò(Ø ŸI™IŸN™N¨9°c¸4¿>¹>È!Ñ;LÓMØòðà˜dŸn™n¨QÑ/°#Ñ5Ñ5�FØŸ.™.¨Ñ+�Cð%ð&Ÿ)™)Ÿ.™.¨°Ó4�ؘb’=ؘq‘L�Gؘ' C™-Ñ'�Ø—‘˜Ÿ™ 8¨GÐ4Ö5àœ#˜dŸn™nÓ-Ò-°$·.±.ÀÑ2CÀaÒ2GØŸ.™.¨Ñ+�CØŸ™¨ t¨a¡xÑ0�AØ—H‘H˜TŸZ™Z¨›]Ô+Ø(.�D—N‘N 1Ñ%ð�Dܘ1˜Q™4“y 2’~Ø!˜Ü˜1˜Q™4“y 4Ò'Ü,/°°!±°T¸A±X±Ó,?˜Ÿ™ qÑ)Øœc ! B¡%›jÑ(�Fؘ‘F�Aðœ#˜dŸn™nÓ-Ò-°$·.±.ÀÑ2CÀaÓ2GðC”#�d—n‘nÓ%Ô%ð^—H‘H˜Q“KˆŒ Ø ˆÔ؈�rcód—|d}t|«dvsJ‚|ddzt|«z|dzdzS)Nrr•rrrr)r!r)r>Údr(s r+rŸz_lazymanifest._pack¢sB€Ø ˆa‰DˆÜ�1‹v˜Ñ!Ð!Ð!Ø�‰t�g‰~¤ A£Ñ&¨¨1©Ñ-°Ñ5Ð5rcó:—|j«|jSrA)r¦r$rCs r+Útextz_lazymanifest.text§s€Ø � ‰ ŒØ�y‰yÐrcóâ—i}|j«D]2\}}}||vr ||fdf||<Œ||}||f|k7r ||f|f||<Œ+|sŒ.d||<Œ4|j«D]\}}}||vsŒ d||ff||<Œ|S)z2Finds changes between the current manifest and m2.©NrN)Ú iterentries)r>Úm2ÚcleanÚdiffÚfnÚe1r*Úe2s r+r°z_lazymanifest.diff«s¦€ðˆà!×-Ñ-Ö/‰MˆB��Eؘ‰|Ø ˜;¨ Ð3��R’à˜‘V�ؘ�; "Ò$Ø " E˜{¨B˜�D˜’HÚØ#�D˜’Hð0ð Ÿ^™^Ö-‰MˆB��EؘŠ~Ø&¨¨U¨ Ð3��R’ð.ðˆ rcó—t|«SrA)rSrCs r+r­z_lazymanifest.iterentriesÀs €Ü& tÓ,Ð,rcó—t|«SrA©r8rCs r+Úiterkeysz_lazymanifest.iterkeysÃó €Ü Ó%Ð%rcó—t|«SrAr¶rCs r+rDz_lazymanifest.__iter__Ær¸rcó,—t|j«SrA)r!rorCs r+Ú__len__z_lazymanifest.__len__És€Ü�4—>‘>Ó"Ð"rcó„—t|jd«}|j«D]\}}}||«sŒ||f||<Œ|Sr¬)rlrXr­)r>ÚfilterfnÚcr'r(r5s r+Ú filtercopyz_lazymanifest.filtercopyÌsF€ä ˜$Ÿ-™-¨Ó -ˆØ×(Ñ(Ö*‰HˆAˆq�"Ù˜�{ؘ"�u��!’ð+ðˆr)NNNF©F)rNrOrPÚ__doc__r?rnrGrwr‚r„rˆr�r“ršrœr¦rŸrªr°r­r·rDr»r¿rBrr+rlrl¡s{„ñð*ØØØó+ò.ò",ò+ò ò$ò('ò ò4 $ò!òF  ò9òv6ò óò*-ò&ò&ò#órrlcóÊ—eZdZdd„Zd„Zd„Zd„Zd„ZeZd„Z d„Z d„Z d „Z d „Z d „Zdd „Zed„«Zd„Zd„Zd„Zd„Zd„Zd d„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z y )!Ú manifestdictcó4—||_t||«|_yrA)rXrlÚ_lm)r>r#r$s r+r?zmanifestdict.__init__Ýs€ØˆŒ Ü  ¨$Ó/ˆ�rcó&—|j|dSr:©rÅr‡s r+r�zmanifestdict.__getitem__ás€Ø�x‰x˜‰}˜QÑÐrcó —|j|SrArÇr‡s r+rJzmanifestdict.findäs€Ø�x‰x˜‰}Ðrcó,—t|j«SrA©r!rÅrCs r+r»zmanifestdict.__len__çs€Ü�4—8‘8‹}Ðrcó2—t|j«dk7Sr:rÊrCs r+Ú __nonzero__zmanifestdict.__nonzero__ês€ô�4—8‘8‹} Ñ!Ð!rcóD—||j|«f|j|<yrA)r*rÅ)r>r{Únodes r+ršzmanifestdict.__setitem__ñs€Ø˜dŸj™j¨›oÐ-ˆ�‰�Š rcó$—|€y||jvS©NFrÇr‡s r+rˆzmanifestdict.__contains__ôs€Ø ˆ;ØØ�d—h‘hˆÐrcó—|j|=yrArÇr‡s r+r“zmanifestdict.__delitem__ùs €Ø �H‰H�S‰Mrcó6—|jj«SrA)rÅrDrCs r+rDzmanifestdict.__iter__üó€Ø�x‰x× Ñ Ó"Ð"rcó6—|jj«SrA)rÅr·rCs r+r·zmanifestdict.iterkeysÿrÓrcó4—t|j««SrA©Úlistr·rCs r+Úkeyszmanifestdict.keysó€Ü�D—M‘M“OÓ$Ð$rNcóî—|�Utj|d„«}t|j|««}|j|«D�chc] }||vsŒ|’Œ c}S|D�chc] }||vsŒ|’Œ c}Scc}wcc}w)ú7Set of files in this manifest that are not in the othercó—yrArB)ÚpathÚmsgs r+Úz)manifestdict.filesnotin..s€¸tr)ÚmatchmodÚbadmatchÚsetÚwalk)r>r®r Úsm2r's r+Ú filesnotinzmanifestdict.filesnotinsw€à Ð Ü×%Ñ% eÑ-CÓDˆEÜ�b—g‘g˜e“nÓ%ˆCØ#Ÿy™y¨Ô/Ó@Ñ/˜!°1¸C²<’AÐ/Ñ@Ð @ÙÓ/™4�a 1¨B¢;’˜4Ñ/Ð/ùòAùÚ/sÁ A-ÁA-Á A2Á&A2có,—tj|«SrA©r ÚdirsrCs r+Ú_dirszmanifestdict._dirs ó€ä�}‰}˜TÓ"Ð"rcó—|jSrA©rérCs r+rèzmanifestdict.dirsó €Ø�z‰zÐrcó—||jvSrArì)r>Údirs r+Úhasdirzmanifestdict.hasdirs€Ø�d—j‘jÐ Ð rcó´‡—|j«}t|«dkxr8|j«xs&|j«xrt ˆfd„|D««S)znChecks whether we can correctly and quickly iterate over matcher files instead of over manifest files.édc3ó&•K—|]}|‰v–—Œ y­wrArB)Ú.0r±r>s €r+Ú z.manifestdict._filesfastpath..søèø€Ð&B¹E°b r¨T¤z¹Eùsƒ)r3r!ÚisexactÚprefixÚall)r>r r3s` r+Ú_filesfastpathzmanifestdict._filesfastpathsNø€ð— ‘ “ ˆÜ�5‹z˜CÑò Ø �M‰M‹Oò DØ— ‘ “ÒB¤3Ó&B¹EÓ&BÓ#Bð rc#óºK—|j«rt|«D]}|–—Œyt|j««}|j |«rt |«D] }||vsŒ|–—Œ y|D]$}||vr|j |«||«sŒ!|–—Œ&|jd«t |«D]&}|j|«rŒ|j|d«Œ(y­w)zêGenerates matching file names. Equivalent to manifest.matches(match).iterkeys(), but without creating an entirely new manifest. It also reports nonexistent files by marking them bad with match.bad(). Nr) ÚalwaysÚiterrâr3rùÚsortedÚremoveÚdiscardrðÚbad©r>r r'Úfsetr±s r+rãzmanifestdict.walk sÃèø€ð �<‰<Œ>ܘ$–Z�Ø“ð à ä�5—;‘;“=Ó!ˆð × Ñ ˜uÔ %ܘT–l�ؘ’:Ø“Hð#ð ãˆBØ�T‰zà— ‘ ˜B”Ù�R�yØ“ð ð � ‰ �SÔ䘖,ˆBØ—;‘;˜r•?Ø— ‘ ˜"˜dÕ#ñùs‚A"CÁ%)CÂ6CÃCcóp—|j«r|j«S|j|«rOt|j«}|j }|j «D]}||vsŒ|||j |<Œ|St|j«}|j j|«|_|S)z6generate a new manifest filtered by the match argument)rûrœrùrÃrXrÅr3r¿)r>r Úmr<r±s r+Ú_matcheszmanifestdict._matchesEs”€à �<‰<Œ>Ø—9‘9“;Ð à × Ñ ˜uÔ %ܘTŸ]™]Ó+ˆAØ—‘ˆBØ—k‘k–m�ؘ’8Ø " 2¡�A—E‘E˜"’Ið$ðˆHä ˜Ÿ™Ó 'ˆØ—‘×#Ñ# EÓ*ˆŒØˆrcó¼—|r5|j|«}|j|«}|j||¬«S|jj|j|«S)ázFinds changes between the current manifest and m2. Args: m2: the manifest to which this manifest should be compared. clean: if true, include files unchanged between these manifests with a None value in the returned dictionary. The result is returned as a dict with filename as key and values of the form ((n1,fl1),(n2,fl2)), where n1/n2 is the nodeid in the current/other manifest and fl1/fl2 is the flag in the current/other manifest. Where the file does not exist, the nodeid will be None and the flags will be the empty string. ©r¯)rr°rÅ)r>r®r r¯Úm1s r+r°zmanifestdict.diffVsO€ñ Ø—‘˜uÓ%ˆBØ—‘˜UÓ#ˆBØ—7‘7˜2 U�7Ó+Ð +Ø�x‰x�}‰}˜RŸV™V UÓ+Ð+rcóR—|tvr td«‚|||f|j|<y)NóInvalid manifest flag set.)r"rŒrÅ)r>r{Úflags r+Úsetflagzmanifestdict.setflagks+€Ø ”~Ñ %ÜÐ9Ó:Ð :ؘS™  4˜ˆ�‰�Š rcóJ— |j|dS#t$r|cYSwxYwr:©rÅr�)r>r{Údefaults r+Úgetzmanifestdict.getps.€ð Ø—8‘8˜C‘= Ñ#Ð #øÜò ØŠNð ús ‚” "¡"cóF— |j|dS#t$rYywxYw)Nrrrr‡s r+r*zmanifestdict.flagsvs,€ð Ø—8‘8˜C‘= Ñ#Ð #øÜò Ùð ús ‚” Ÿ cón—t|j«}|jj«|_|SrA)rÃrXrÅrœ)r>r¾s r+rœzmanifestdict.copy|s&€Ü ˜Ÿ™Ó 'ˆØ—‘— ‘ “ˆŒØˆrcóD—d„|jj«D«S)Nc3ó&K—|] }|dd–—Œ y­w©NrrB©rôÚxs r+rõz%manifestdict.items..‚óèø€Ð6Ñ5˜!��"�1”Ñ5ùó‚©rÅr­rCs r+Úitemszmanifestdict.items�ó€Ù6˜tŸx™x×3Ñ3Ô5Ó6Ð6rcóD—d„|jj«D«S)Nc3ó&K—|] }|dd–—Œ y­wrrBrs r+rõz)manifestdict.iteritems..…rrrrCs r+Ú iteritemszmanifestdict.iteritems„rrcó6—|jj«SrArrCs r+r­zmanifestdict.iterentries‡s€Ø�x‰x×#Ñ#Ó%Ð%rcó6—|jj«SrA)rÅrªrCs r+rªzmanifestdict.textŠs€à�x‰x�}‰}‹Ðrcó—g}d}d}dg}d}tj|«}t|«}t|«tkrê|D]­\} } t || |«\}} | s$|j | \} } d| t| «| fz}n|| k(rttd«| z«‚d}|�&||kr!||k\r|| kr| }|sŒp|j|«Œ‚|�#|j||dj|«g«|}| }|g}Œ¯|�#|j||dj|«g«t||«\}}||fSt|j««}tj tj|«tj|««}||fS)z“Given a base manifest text as a bytearray and a list of changes relative to that text, compute a delta that can be used by revlog. Nrrr.s!failed to remove %s from manifest)rÚbufferr×r!ÚFASTDELTA_TEXTDIFF_THRESHOLDÚ_msearchrÅrÚAssertionErrorrr/r1Ú _addlistdeltaÚ bytearrayrªr Útextdiff)r>ÚbaseÚchangesÚdeltaÚdstartÚdendÚdlineÚstartÚaddbufr'ÚtodeleteÚendÚhr5r&Ú deltatextÚ arraytexts r+Ú fastdeltazmanifestdict.fastdeltaŽs™€ðˆØˆØˆØ�ˆØˆä—‘˜TÓ"ˆä�w“-ˆÜ ˆw‹<Ô6Ò 6ó '‘ ��8ä% f¨a°Ó7‘ ��sÙØ ŸH™H Q™K‘E�A�rØ%¨¬C°«F°B¨Ñ7‘Aà ’|ä,ÜÐBÓCÀaÑGóðð�AØÐ%¨&°Eª/¸dÀeºmؘc’zØ"˜ÚØŸ ™  Q�àÐ)ØŸ ™  f¨d°C·H±H¸U³OÐ%DÔEØ"�FØ�DؘC‘Eð/ 'ð2Ð!Ø— ‘ ˜f d¨C¯H©H°U«OÐ<Ô=ä#0°°uÓ#=Ñ ˆI�yð˜)Ð#Ð#ô " $§)¡)£+Ó.ˆIÜŸ™Ü— ‘ ˜DÓ!¤4§;¡;¨yÓ#9óˆIð˜)Ð#Ð#r©rrArÐ)!rNrOrPr?r�rJr»rÌÚ__bool__ršrˆr“rDr·rØråÚ propertycacherérèrðrùrãrr°r rr*rœrr r­rªr8rBrr+rÃrÃÛs¥„ó0ò òòò"ð €Hò.òò ò#ò#ò%ó0ðñ#óð#òò!ò ò#$òJó",ò*(ó ò ò ò 7ò7ò&òó5$rrÃcó^‡‡ —ˆ ˆfd„}|s||fSt‰«Š |s‰ }||krb||zdz}|}|dkDr!‰|dz |dk7r|dz}|dkDr ‰|dz |dk7rŒ||d«}t‰||«|kr||dzd«dz}n|}||krŒb||d«}‰||}||k(r||dzd«}||dzfS||fS)aEreturn a tuple (start, end) that says where to find s within m. If the string is found m[start:end] are the line containing that string. If start == end the string was not found and they indicate the proper sorted insertion point. m should be a buffer, a memoryview or a byte string. s is a byte stringcóT•—|‰kr!‰||dz|k7r|dz }|‰kr ‰||dz|k7rŒ|S)NrrB)r¡r¾Úlenmrs €€r+Úadvancez_msearch..advanceÐsCø€Ø�$Šh˜1˜Q  Q¡˜<¨1Ò,Ø �‰FˆAð�$Šh˜1˜Q  Q¡˜<¨1Ó,àˆrrrrrré()r!r‹) rrcÚloÚhir?Úmidr1r4r‘r>s ` @r+r&r&Æs ù€õñ Ø�BˆxˆÜ ˆq‹6€DÙ Ø ˆØ ˆrŠ'Ø�B‰w˜1‰nˆØˆØ�aŠi˜A˜e a™i¨%Ð0°EÒ9Ø �Q‰JˆEð�aŠi˜A˜e a™i¨%Ð0°EÓ9á�e˜UÓ#ˆÜ ��5˜�Ó  Ò "ñ˜˜r™ 5Ó)¨AÑ-‰BðˆBð ˆr‹'ñ �"�eÓ €CØ ˆb�ˆI€E؈E‚zá�c˜B‘h Ó&ˆØ�C˜!‘Gˆ}Ðà�BˆxˆrcóŠ—|D]>}d|vsd|vsŒ tjtd«tj|«z«‚y)z'Check filenames for illegal characters.ró s)'\n' and '\r' disallowed in filenames: %rN)r rWrrÚbytestr)r&r's r+r0r0ñsH€ã ˆØ �A‰:˜ !šÜ×$Ñ$ÜÐ@ÓAÜ×"Ñ" 1Ó%ñ&óð ñrcó¬—d}t«}|D] \}}}||||z }|r|t|«z }|}Œ"|||dz }djd„|D««}||fS)Nrrc 3ólK—|],\}}}tjd||t|««|z–—Œ.y­w)s>lllN)ÚstructÚpackr!)rôr1r4Úcontents r+rõz _addlistdelta.. s7èø€ðá#$Ñ ˆE�3˜ô � ‰ �G˜U C¬¨W«Ó6¸Õ@Ù#$ùs‚24)r)r1)ÚaddlistrÚcurrentpositionÚ newaddlistr1r4rKr6s r+r(r(ýs…€ð€OÜ“€Jã шˆs�GØ�g˜o¨eÐ4Ñ4ˆ Ù Ø œ) GÓ,Ñ ,ˆJà‰ð !ð�'˜/Ð*Ð+Ñ+€Jà—‘ñá#$óó€Ið �jÐ Ð rcóJ—d|vr|jdd«\}}|dz|fSd|fS)Nó/rr)r )r'rïÚsubpaths r+Ú _splittopdirrRs5€Ø ˆq�yØ—w‘w˜t QÓ'‰ ˆˆWØ�T‰z˜7Ð"Ð"à�Aˆvˆ rcó—yrArB)rcs r+rßrßs€�$rcóT—eZdZd/d„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z e Z d „Z e jd „«Zd „Zd „Zd „Zd„Zd„ZeZd„Zd„Zd„Zd„Zd0d„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d0d„Z#e$d„«Z%d „Z&d!„Z'd"„Z(d#„Z)d$„Z*d%„Z+d&„Z,d1d'„Z-d(„Z.d)„Z/d*„Z0d+„Z1d,„Z2d-„Z3d0d.„Z4y)2Ú treemanifestcó<—||_||_|jj|_|jj|_t |_t |_d|_ i|_ i|_ i|_ i|_ |rd„}|j||«d|_ yy)NFcó—td«‚)Ns4treemanifest constructor only accepts flat manifests)r')ÚsubdirÚsubms r+Ú readsubtreez*treemanifest.__init__..readsubtree/s€Ü$ØKóðrT)Ú_dirÚ nodeconstantsÚnullidÚ_noder#rXÚ_noopÚ _loadfuncÚ _copyfuncÚ_dirtyréÚ _lazydirsÚ_filesÚ_flagsÚparse)r>r\rïrªrZs r+r?ztreemanifest.__init__ sŒ€ØˆŒ Ø*ˆÔØ×'Ñ'×.Ñ.ˆŒ Ø×*Ñ*×2Ñ2ˆŒ ܈ŒÜˆŒØˆŒ ؈Œ ؈ŒàˆŒ ؈Œ Ù ò ð �J‰J�t˜[Ô )؈D�Kð rcó —|j|zSrA©r[)r>rÝs r+Ú_subpathztreemanifest._subpath7s€Ø�y‰y˜4ÑÐrcóø—|j}|j}|jj«D]>\}\}}}|r!|||«|«j «||<Œ-|||«|«||<Œ@i|_yrA)rérircrrœ)r>ÚselfdirsrQr¨rÎrZÚdocopys r+Ú _loadalllazyztreemanifest._loadalllazy:su€Ø—:‘:ˆØ—-‘-ˆØ.2¯n©n×.BÑ.BÖ.DÑ *ˆAÑ*��k 6ÙÙ)©'°!«*°dÓ;×@Ñ@ÓB�˜’ á)©'°!«*°dÓ;�˜’ ð /Eð ˆ�rcó—|jj|«}|ro|\}}}|r4||j|«|«j«|j|<n%||j|«|«|j|<|j|=yyrA)rcrrirœré)r>r¨ÚvrÎrZrls r+Ú _loadlazyztreemanifest._loadlazyDs|€Ø �N‰N× Ñ ˜qÓ !ˆÙ Ø()Ñ %ˆD�+˜vÙÙ +¨D¯M©M¸!Ó,<¸dÓ C× HÑ HÓ J�— ‘ ˜1’ á +¨D¯M©M¸!Ó,<¸dÓ C�— ‘ ˜1‘ Ø—‘˜qÑ!ð rcó~—|sy|dk(s|dk(r|j«y|j}|D] }||dz«Œ|S)NóallóthisrP)rmrp)r>ÚvisitÚloadlazyÚks r+Ú_loadchildrensetlazyz!treemanifest._loadchildrensetlazyNsI€ÙØØ �FŠ?˜e wÒ.Ø × Ñ Ô Øà—>‘>ˆÛˆAÙ �Q˜‘XÕ ðàˆ rcó–—g}|jj«D]?\}}|jj|«}|r |d|dk7sŒ/|j|«ŒA|jj«D]%\}}||jvsŒ|j|«Œ'|D]$}|j |«|j |«Œ&y)amload items in t1 and t2 if they're needed for diffing. The criteria currently is: - if it's not present in _lazydirs in either t1 or t2, load it in the other (it may already be loaded or it may not exist, doesn't matter) - if it's present in _lazydirs in both, compare the nodeid; if it differs, load it in both rN)rcrrr/rp)r>Út1Út2Ú toloadlazyr¨Úv1Úv2s r+Ú _loaddifflazyztreemanifest._loaddifflazyZs°€ðˆ Ø—\‘\×'Ñ'Ö)‰EˆAˆrØ—‘×!Ñ! !Ó$ˆBÙ˜˜A™ " Q¡%›Ø×!Ñ! !Õ$ð*ð—\‘\×'Ñ'Ö)‰EˆAˆrؘŸ ™ Ò$Ø×!Ñ! !Õ$ð*óˆAØ �L‰L˜ŒOØ �L‰L˜�OñrcóÔ—|j«t|j«}|j«|jj «D]}||j «z }Œ|SrA)Ú_loadr!rdrmréÚvaluesr»)r>Úsizers r+r»ztreemanifest.__len__psQ€Ø � ‰ Œ Ü�4—;‘;ÓˆØ ×ÑÔØ—‘×"Ñ"Ö$ˆAØ �A—I‘I“KÑ ‰Dð%àˆ rcó$—|j« SrA©Ú_isemptyrCs r+rÌztreemanifest.__nonzero__xs€à—=‘=“?Ð"Ð"rcó:—|j«|js6|jr+td„|jj «D««ry|j «|j xs*t d„|jj «D««S)Nc3ó>K—|]}|j« –—Œy­wrAr„©rôrs r+rõz(treemanifest._isempty..‚sèø€ÐMÑ9L°A 1§:¡:£<Ô/Ñ9Lùs‚Fc3ó<K—|]}|j«–—Œy­wrAr„rˆs r+rõz(treemanifest._isempty..†sèø€Ð$OÑ;N°a Q§Z¡Z§\Ñ;Nùs‚)r€rdréÚanyr�rmrørCs r+r…ztreemanifest._isempty~sk€Ø � ‰ Œ à �;Š;Ø �JŠJœ3ÑM¸¿¹×9JÑ9JÔ9LÓMÔMàØ ×ÑÔØ—:‘:ˆ~ÒO¤Ñ$O¸4¿:¹:×;LÑ;LÔ;NÓ$OÓ!OÐOrcó¨—d|jt|j«t|jt u«|j t|«fzS)Ns;)r[rr^Úboolr`r_rbÚidrCs r+Ú__repr__ztreemanifest.__repr__ˆsH€ð Kà— ‘ Ü�D—J‘J“Ü�T—^‘^¤uÐ,Ó-Ø— ‘ Ü�4“ð ñ ð rcó—|jS)z}The directory that this tree manifest represents, including a trailing '/'. Empty string for the repo root directory.rhrCs r+rïztreemanifest.dir•s€ð�y‰yÐrcó6—|jrJ‚|jS)z�This node of this instance. nullid for unsaved instances. Should be updated when the instance is read or written from a revlog. ©rbr^rCs r+rÎztreemanifest.nodešs€ð—;’;ЈØ�z‰zÐrcó —||_d|_yrÐ)r^rb©r>rÎs r+Úsetnodeztreemanifest.setnode¡s€ØˆŒ ؈� rc#óªK—|j«|j«ttj|j j «|jj «««D]]\}}||jvr1|j|«||jj|d«f–—ŒE|j«D]}|–—ŒŒ_y­wr¬) r€rmrýÚ itertoolsÚchainrérrdrirerr­)r>Úpr(rs r+r­ztreemanifest.iterentries¥sžèø€Ø � ‰ Œ Ø ×ÑÔÜÜ �O‰O˜DŸJ™J×,Ñ,Ó.°· ± ×0AÑ0AÓ0CÓ Dö ‰DˆAˆqð�D—K‘KÑØ—m‘m AÓ&¨¨4¯;©;¯?©?¸1¸cÓ+BÐBÓBàŸ™ž�AØ“Gñ)ñ  ùs‚CCc#ó~K—|j«|j«ttj|j j «|jj «««D]G\}}||jvr|j|«|f–—Œ*|j «D] \}}||f–—Œ ŒIy­wrA) r€rmrýr–r—rérrdri)r>r˜r(r'Úsns r+rztreemanifest.items±s•èø€Ø � ‰ Œ Ø ×ÑÔÜÜ �O‰O˜DŸJ™J×,Ñ,Ó.°· ± ×0AÑ0AÓ0CÓ Dö ‰DˆAˆqð�D—K‘KÑØ—m‘m AÓ&¨Ð)Ó)àŸW™WžY‘E�A�rؘR˜%“Kñ'ñ  ùs‚B;B=c#ó0K—|j«|j«ttj|j |j ««D]<}||j vr|j|«–—Œ%|j |D]}|–—ŒŒ>y­wrA)r€rmrýr–r—rérdri)r>r˜r's r+r·ztreemanifest.iterkeys¿spèø€Ø � ‰ Œ Ø ×ÑÔÜœ Ÿ™¨¯ © °D·K±KÓ@ÖAˆAØ�D—K‘KÑØ—m‘m AÓ&Ó&àŸ™ Aœ�AØ“Gñ'ñ Bùs‚BBcó4—t|j««SrArÖrCs r+rØztreemanifest.keysÉrÙrcó"—|j«SrA)r·rCs r+rDztreemanifest.__iter__Ìs€Ø�}‰}‹Ðrcóà—|€y|j«t|«\}}|r>|j|«||jvry|j|j |«S||j vSrÐ)r€rRrprérˆrd©r>r'rïrQs r+rˆztreemanifest.__contains__Ïsf€Ø ˆ9ØØ � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à˜$Ÿ*™*Ñ$Øà—:‘:˜c‘?×/Ñ/°Ó8Ð 8à˜Ÿ ™ Ð#Ð #rNcóú—|j«t|«\}}|r@|j|«||jvr|S|j|j ||«S|j j ||«SrA)r€rRrprérrd)r>r'rrïrQs r+rztreemanifest.getÞsh€Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à˜$Ÿ*™*Ñ$Ø�Ø—:‘:˜c‘?×&Ñ& w°Ó8Ð 8à—;‘;—?‘? 1 gÓ.Ð .rcó¾—|j«t|«\}}|r/|j|«|j|j |«S|j |SrA)r€rRrprér�rdrŸs r+r�ztreemanifest.__getitem__êsN€Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à—:‘:˜c‘?×.Ñ.¨wÓ7Ð 7à—;‘;˜q‘>Ð !rcó0—|j«t|«\}}|r>|j|«||jvry|j|j |«S||j vs||jvry|j j|d«Sr¬)r€rRrprér*rcrerrŸs r+r*ztreemanifest.flagsôs}€Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à˜$Ÿ*™*Ñ$ØØ—:‘:˜c‘?×(Ñ(¨Ó1Ð 1à�D—N‘NÑ" a¨4¯:©:¡oØØ—;‘;—?‘? 1 cÓ*Ð *rcóö—|j«t|«\}}|r/|j|«|j|j |«S|j ||j j|d«fSr¬)r€rRrprérJrdrerrŸs r+rJztreemanifest.findsb€Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à—:‘:˜c‘?×'Ñ'¨Ó0Ð 0à—;‘;˜q‘> 4§;¡;§?¡?°1°cÓ#:Ð:Ð :rcód—|j«t|«\}}|ra|j|«|j|j |«|j|j «r=|j|=d|_y|j |=||jvr |j|=d|_y©NT) r€rRrprér“r…rdrerbrŸs r+r“ztreemanifest.__delitem__ s�€Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô à �J‰J�s‰O× 'Ñ '¨Ô 0à�z‰z˜#‰×'Ñ'Ô)Ø—J‘J˜s�Oð ˆ� ð— ‘ ˜A�Ø�D—K‘KÑØ—K‘K �N؈� rcó†—|€J‚|j«t|«\}}|rx|j|«||jvr2t |j |j |««|j|<|j|j||«d|_ yt|«dvsJ‚||j|<d|_ y)Nr•T) r€rRrprérUr\riršr!rdrb)r>r'r(rïrQs r+ršztreemanifest.__setitem__s®€Øˆ}Ј}Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô Ø˜$Ÿ*™*Ñ$Ü".Ø×&Ñ&¨¯ © °cÓ(:ó#�— ‘ ˜3‘ð �J‰J�s‰O× 'Ñ '¨°Ô 3ðˆ� ô�q“6˜XÑ%Ð %Ð%؈D�K‰K˜‰N؈� rcóЗ|jtur!|jtc}|_||«y|jtur!|jtc}|_||«yyrA)r`r_ra)r>ÚlfÚcfs r+r€ztreemanifest._load/sQ€Ø �>‰>¤Ñ &Ø!%§¡´Ð ˆB�”Ù ˆt�HØ �^‰^¤5Ñ (Ø!%§¡´Ð ˆB�”Ù ˆt�Hð)rcó†—|tvr td«‚|j«t|«\}}|rx|j |«||j vr2t |j|j|««|j |<|j |j||«d|_ y||j|<d|_ y)z/Set the flags (symlink, executable) for path f.r TN) r"rŒr€rRrprérUr\rir rerb)r>r'r*rïrQs r+r ztreemanifest.setflag7s¦€à œÑ &ÜÐ9Ó:Ð :Ø � ‰ Œ Ü# A“‰ ˆˆWÙ Ø �N‰N˜3Ô Ø˜$Ÿ*™*Ñ$Ü".Ø×&Ñ&¨¯ © °cÓ(:ó#�— ‘ ˜3‘ð �J‰J�s‰O× #Ñ # G¨UÔ 3ðˆ� ð#ˆD�K‰K˜‰N؈� rcó&‡—t‰j‰j«}‰j|_‰j|_‰j t ur*ˆfd„}‰jt ur ||«|S||_|S‰j |_|S)Nc óÄ•—‰j«‰jj«D����cic]\}\}}}|||df“Œc}}}}|_|j}‰jj«D]\}}|j «||<Œt j ‰j «|_t j ‰j«|_ycc}}}}wr¥)r€rcrrérœÚdictrdre)rcr¨r(r�r¾Úsdirsror>s €r+raz$treemanifest.copy.._copyfuncNs«ø€Ø— ‘ ” à8<¿¹×8LÑ8LÔ8NöÙ8N© ¨©9¨A¨q°!�A˜˜1˜d�|‘OÐ8Nô�” ðŸ™�Ø ŸJ™J×,Ñ,Ö.‘D�A�qØ Ÿv™v›x�E˜!’Hð/äŸ9™9 T§[¡[Ó1�”ÜŸ9™9 T§[¡[Ó1�•ùõs±C )rUr\r[r^rbrar_r`)r>rœras` r+rœztreemanifest.copyHs~ø€Ü˜D×.Ñ.°· ± Ó:ˆØ—Z‘ZˆŒ Ø—k‘kˆŒ Ø �>‰>œUÑ "ô 2ð�~‰~¤Ñ&Ù˜$”ð ˆ ð"+�”ðˆ ð"Ÿ^™^ˆDŒN؈ rcóʇ‡‡—|rC|j«s3‰j|«}|j|«}|j|«St«Šˆˆˆfd„Љ‰|«‰S)rÛcó•—|j|jk(r|js |jsy|j«|j«‰j||«|jj «D]K\}}||jvr|j|}‰||«Œ-‰j |j««ŒM|jD]1}||jvsŒ‰j|j|««Œ3yrA) r^rbr€r~rérÚupdater·rdÚaddri) ryrzr¨r r®r±Ú _filesnotinr3r>s €€€r+r³z,treemanifest.filesnotin.._filesnotinjsÁø€Ø�x‰x˜2Ÿ8™8Ò#¨B¯IªI¸b¿iºiØØ �H‰HŒJØ �H‰HŒJØ × Ñ ˜r 2Ô &ØŸ™Ÿ™Ö)‘��2ؘŸ™‘=ØŸ™ !™�BÙ  BÕ'à—L‘L §¡£Õ/ð *ð—i”i�ؘRŸY™YÒ&Ø—I‘I˜bŸk™k¨"›oÕ.ñ r)rûrrårâ)r>r®r r r³r3s` @@r+råztreemanifest.filesnotinasVú€á ˜Ÿ™œØ—‘˜uÓ%ˆBØ—‘˜UÓ#ˆBØ—=‘= Ó$Ð $䓈ö /ñ" �D˜"ÔØˆ rcó,—tj|«SrArçrCs r+Ú_alldirsztreemanifest._alldirs~rêrcó—|jSrA)rµrCs r+rèztreemanifest.dirs‚s €Ø�}‰}Ðrcó—|j«t|«\}}|r>|j|«||jvr|j|j |«Sy|dz}||jvxs||j vS)NFrP)r€rRrprérðrc)r>rïÚtopdirrXÚdirslashs r+rðztreemanifest.hasdir…sw€Ø � ‰ Œ Ü% cÓ*‰ˆ�Ù Ø �N‰N˜6Ô "ؘŸ™Ñ#Ø—z‘z &Ñ)×0Ñ0°Ó8Ð8ØØ˜‘:ˆØ˜4Ÿ:™:Ð%ÒC¨°T·^±^Ð)CÐCrc#ópK—|j«rt|«D]}|–—Œyt|j««}|j |«D]}||vr|j |«|–—Œ|j d«t|«D]&}|j|«rŒ|j|d«Œ(y­w)zxGenerates matching file names. It also reports nonexistent files by marking them bad with match.bad(). Nr) rûrürâr3Ú_walkrþrÿrýrðrrs r+rãztreemanifest.walk�s–èø€ð �<‰<Œ>ܘ$–Z�Ø“ð à ä�5—;‘;“=Ó!ˆà—*‘*˜UÖ#ˆBØ�T‰zà— ‘ ˜B”Ø‹Hð $ð � ‰ �SÔ䘖,ˆBØ—;‘;˜r•?Ø— ‘ ˜"˜dÕ#ñùs ‚BB6Â!B6c#ó¾K—|j|jdd«}|sy|j«|j|«}t t |j «t |j«z«D]`}||jvr|j|«}||«sŒ+|–—Œ0|r|dd|vsŒ:|j |j|«D]}|–—ŒŒby­w)z5Recursively generates matching file names for walk().Nr) Úvisitchildrensetr[r€rwrýr×rérdrir»)r>r rtr˜Úfullpr's r+r»ztreemanifest._walkªs¾èø€à×&Ñ& t§y¡y°°" ~Ó6ˆÙØ ð � ‰ Œ Ø×)Ñ)¨%Ó0ˆÜœ˜TŸZ™ZÓ(¬4°· ± Ó+<Ñ<Ö=ˆAØ�D—K‘KÑØŸ ™  aÓ(�Ù˜•<Ø“Ká  # 2 ¨%¢Ø!ŸZ™Z¨™]×0Ñ0°Ö7˜Ø›ñ8ñ>ùs‚B!CÂ$CÂ3*Ccód—|j«r|j«S|j|«S)zCrecursively generate a new manifest filtered by the match argument.)rûrœÚ_matches_inner)r>r s r+rztreemanifest._matches½s(€à �<‰<Œ>Ø—9‘9“;Ð Ø×"Ñ" 5Ó)Ð)rcó—|j«r|j«S|j|jdd«}|dk(r|j«St |j |j«}|s|S|j «|jD]m}|dk7r||vrŒ |j|«}||«sŒ'|j||j|<||jvsŒR|j||j|<Œo|j|«}|jj«D]@\}}|r|dd|vrŒ|j|«}|j«rŒ2||j|<ŒB|j«sd|_|S)NrrrrsT)rûrœr½r[rUr\r€rdrirerwrérrÀr…rb) r>r rtÚretr±r¾rïrYrs r+rÀztreemanifest._matches_innerÃsY€Ø �<‰<Œ>Ø—9‘9“;Ð à×&Ñ& t§y¡y°°" ~Ó6ˆØ �FŠ?Ø—9‘9“;Рܘ4×-Ñ-¨t¯y©yÓ9ˆÙ؈Jà � ‰ Œ Ø—+”+ˆBð ˜Ò B¨e¡OØØ—M‘M "Ó%ˆEñ˜”<ØØ!Ÿ[™[¨™_ˆC�J‰J�r‰NØ�T—[‘[Ò Ø!%§¡¨R¡�— ‘ ˜2’ðð"×)Ñ)¨%Ó0ˆØŸ™×)Ñ)Ö+‰IˆC�Ù˜˜S˜b˜¨Ñ.ØØ×#Ñ# EÓ*ˆAØ—:‘:•<Ø!"�— ‘ ˜#’ð ,ð�|‰|Œ~؈CŒJ؈ rcó—t«‚rA)ÚFastdeltaUnavailable)r>r+r,s r+r8ztreemanifest.fastdeltaìs €Ü"Ó$Ð$rcó6‡‡‡ ‡ —|rE|j«s5‰j|«}|j|«}|j|‰¬«SiŠ t‰j«Š ˆˆ ˆ ˆfd„}g}|‰||«|r |j «\}}||||«|rŒ ‰ S)rrcó&•—|j|jk(r|js |jsy|j«|j«‰j||«|jj «D]4\}}|jj |‰ «}|j||f«Œ6|jj «D]'\}}||jvsŒ|j‰ |f«Œ)|jj «D]•\}}|jj |d«}|jj |d«} |jj |d«} || k7s|| k7r||f| | ff‰ |j|«<Œ‰ sŒ‚d‰ |j|«<Œ—|jj «D]H\}} ||jvsŒ|jj |d«} d| | ff‰ |j|«<ŒJy)zicompares two tree manifests and append new tree-manifests which needs to be compared to stackNrr¬) r^rbr€r~rérrr/rdreri)ryrzÚstackr¨r r®r±Ún1Úfl1Ún2Úfl2r¯Ú emptytreeÚresultr>s €€€€r+Ú_iterativediffz)treemanifest.diff.._iterativediffs¨ø€ð�x‰x˜2Ÿ8™8Ò#¨B¯IªI¸b¿iºiØØ �H‰HŒJØ �H‰HŒJØ × Ñ ˜r 2Ô &àŸ™Ÿ™Ö)‘��2Ø—X‘X—\‘\ ! YÓ/�Ø— ‘ ˜b "˜XÕ&ð*🙟™Ö)‘��2ؘBŸH™HÒ$Ø—L‘L )¨R Õ1ð*ðŸ)™)Ÿ/™/Ö+‘��BØ—i‘i—m‘m B¨Ó,�Ø—Y‘Y—]‘] 2 tÓ,�Ø—i‘i—m‘m B¨Ó,�ؘ’8˜s cšzØ02°C¨y¸2¸s¸)Ð.D�F˜2Ÿ;™; r›?Ò+ÚØ.2�F˜2Ÿ;™; r›?Ò+ð,ðŸ)™)Ÿ/™/Ö+‘��BؘRŸY™YÒ&ØŸ)™)Ÿ-™-¨¨CÓ0�CØ/:¸RÀ¸IÐ.F�F˜2Ÿ;™; r›?Ò+ñ,r)rûrr°rUr\Úpop) r>r®r r¯r rÎÚstacklsryrzrÌrÍs ` ` @@r+r°ztreemanifest.diffïs—û€ñ ˜Ÿ™œØ—‘˜uÓ%ˆBØ—‘˜UÓ#ˆBØ—7‘7˜2 U�7Ó+Ð +ØˆÜ  ×!3Ñ!3Ó4ˆ ÷ Gð>ˆÙ�t˜R Ô)ÙØ—[‘[“]‰FˆB�á ˜2˜r 7Ô +òðˆ rcóp—|j xr(|j xr|j|jk(SrAr‘)r>r®s r+Úunmodifiedsinceztreemanifest.unmodifiedsince,s+€Ø—;‘;ˆÒK r§y¡y =ÒK°T·Z±ZÀ2Ç8Á8Ñ5KÐKrcó—|j}t|j|«D]Y\}}}|dk(r|dz}||df||<Œd|vr|||<|sŒ&|j||«Œ9||j|<|sŒK||j |<Œ[y)NrirPF)rcr,rXr rdre)r>rªrZÚselflazyr'r(r5s r+rfztreemanifest.parse/sŠ€Ø—>‘>ˆÜ˜tŸ}™}¨dÖ3‰HˆAˆq�"Ø�TŠzؘ‘H�ð ! +¨uÐ5�˜’ ؘ‘ð ��Q‘ÚØ—L‘L  BÕ'ð"#�— ‘ ˜A‘ÚØ%'�D—K‘K ’Nñ'4rcóT—|j«t|j««S)z3Get the full data of this manifest as a bytestring.)r€r6r­rCs r+rªztreemanifest.textFs€à � ‰ Œ Ü�T×%Ñ%Ó'Ó(Ð(rcó—|j«|j}|jj«D��cgc]\}}|dd|ddf‘Œ}}}|jD�cgc]!}|dd|j|j df‘Œ#}}|j D�cgc]}||j |||«f‘Œ}}tt||z|z««Scc}}wcc}wcc}w)zœGet the full data of this directory as a bytestring. Make sure that any submanifests have been written first, so their nodeids are correct. Nrrri) r€r*rcrrér^rdr6rý)r>r*r¨roÚlazydirsrèr'r3s r+Údirtextztreemanifest.dirtextKsÑ€ð � ‰ Œ Ø— ‘ ˆØ59·^±^×5IÑ5IÔ5KÔLÑ5K©T¨Q°�Q�s˜�V˜Q˜q™T 4Ò(Ð5KˆÑLØ=A¿ZºZÓH¹Z¸��3�B�˜Ÿ™ A™×,Ñ,¨dÒ3¸ZˆÐHØ8<¿ º ÓD¹ °1�!�T—[‘[ ‘^¡U¨1£XÒ.¸ ˆÐDÜ”V˜D 5™L¨8Ñ3Ó4Ó5Ð5ùóMùÚHùÚDsºCÁ &CÂCcó"‡‡—ˆˆfd„}||_y)NcóB•—|j‰«‰«d|_yrÐ)rfrb)rcÚgettextrZs €€r+Ú_load_for_readz)treemanifest.read.._load_for_readWsø€Ø �G‰G‘G“I˜{Ô +؈A�Hr)r`)r>rÛrZrÜs `` r+Úreadztreemanifest.readVsù€õ ð(ˆ�rcó܇ —|j«|j«|j«t|j«Š ˆ fd„}|j|jdd«}|j |«}|dk(s|dk(rd}|j j«D]I\}}|r|dd|vrŒ|||«} |||«} | |jjk(r| | } } ||| | |«ŒKy)Ncó”•—|jj|«}|r|dS|jj|‰«jSr:)rcrrér^)rr¨ÚldrÌs €r+Úgetnodez+treemanifest.writesubtrees..getnodecs<ø€Ø—‘—‘ Ó#ˆBÙØ˜!‘u� Ø—7‘7—;‘;˜q )Ó,×2Ñ2Ð 2rrrsrr) r€rUr\r½r[rwrérr]) r>r r®Ú writesubtreer rártr¨rYÚsubp1Úsubp2rÌs @r+Ú writesubtreesztreemanifest.writesubtrees]sáø€Ø � ‰ Œ Ø �‰Œ Ø �‰Œ Ü  ×!3Ñ!3Ó4ˆ ô 3ð×&Ñ& t§y¡y°°" ~Ó6ˆØ×)Ñ)¨%Ó0ˆØ �GÒ ˜u¨šØˆEØ—z‘z×'Ñ'Ö)‰GˆAˆtÙ˜˜3˜B˜ uÑ,ØÙ˜B “NˆEÙ˜B “NˆEؘ×*Ñ*×1Ñ1Ò1Ø$ e�u�Ù ˜˜u e¨UÕ 3ñ*rc#ó>K—|r|j|jdd«sy|r||jdd«r|–—|j«|j«|jj «D] \}}|j |¬«D]}|–—ŒŒ"y­w)z®Returns an iterator of the subtrees of this manifest, including this manifest itself. If `matcher` is provided, it only returns subtrees that match. Nr)Úmatcher)Úvisitdirr[r€rmrérÚ walksubtrees)r>rçr¨rYÚsubtrees r+réztreemanifest.walksubtreesws‹èø€ñ ˜7×+Ñ+¨D¯I©I°c°r¨NÔ;Ø Ù™' $§)¡)¨C¨R .Ô1ØŠJà � ‰ Œ à ×ÑÔØ—z‘z×'Ñ'Ö)‰GˆAˆtØ×,Ñ,°WÐ,Ö=�Ø“ ñ>ñ*ùs‚BB)rrrArÐ)5rNrOrPr?rirmrprwr~r»rÌr:r…r Ú strmethodrŽrïrÎr”r­rr r·rØrDrˆrr�r*rJr“ršr€r rœrår;rµrèrðrãr»rrÀr8r°rÒrfrªrØrÝrårérBrr+rUrUs„óò. òò"ò òò,ò#ð€HòPð×Ññ  óð  òò òò ò  ð€Iòò%òò $ó /ò"ò +ò;òò ò&òò"ó2ð:ñ#óð#òò Dò$ò4 ò&*ò 'òR%ó;òzLò(ò.)ò 6ò(ò4ô4rrUc󊇗eZdZdZdZˆfd„Zˆfd„Zd„Zˆfd„Zˆfd„Z ˆfd„Z ˆfd „Z ˆfd „Z ˆfd „Z dˆfd „ Zdˆfd „ ZˆxZS)ÚmanifestfulltextcachezÛFile-backed LRU cache for the manifest cache File consists of entries, up to EOF: - 20 bytes node, 4 bytes length, manifest data These are written in reverse cache order (oldest to newest). smanifestfulltextcachecóV•—tt|� |«d|_d|_d|_yrÐ)Úsuperrír?rbÚ_readÚ_opener)r>ÚmaxÚ __class__s €r+r?zmanifestfulltextcache.__init__—s(ø€Ü Ô# TÑ3°CÔ8؈Œ ؈Œ ؈� rcó•—|js |j€y |j|j«5}tt|�} |j d«}t|«dkrn\ tjd|j d««d}t|j |««}t|«|k7rn |||«Œ|ddd«d|_d|_ y#tj$rYŒ,wxYw#1swYŒ1xYw#t$rYŒ?wxYw)NTr–ó>LérF)rðrñÚ_filerïríršrÝr!rIÚunpackr r)ÚIOErrorrb)r>ÚfprârÎr‚r™rós €r+rÝzmanifestfulltextcache.read�sõø€Ø �:Š:˜Ÿ™Ð-Ø ð Ø—‘˜dŸj™jÔ)¨RÜÔ1°4ÑD�ààŸ7™7 2›;�Dܘ4“y 2’~ØðÜ%Ÿ}™}¨U°B·G±G¸A³JÓ?ÀÑB˜ô& b§g¡g¨d£mÓ4�Eܘ5“z TÒ)ØÙ˜˜eÔ$ð÷*ð(ˆŒ ؈� øô"Ÿ<™<òÙðú÷*Ð)ûô ò á ð úsLœC?·0C3Á((CÂ3C3ÃC?ÃC0Ã-C3Ã/C0Ã0C3Ã3C<Ã8C?Ã? D Ä D c ó2—|jr |j€y |j|jddd¬«5}|jj} |j |j vrn|j|j «|jtjdt|j«««|j|j«||jurn |j}Œ¢ ddd«y#1swYyxYw#t$rYywxYw)NówT)Ú atomictempÚ checkambigrõ) rbrñr÷Ú_headr%r{Ú_cacheÚwriterIrJr!r™rù)r>rúrÎs r+rzmanifestfulltextcache.write¹sá€Ø�{Š{˜dŸl™lÐ2Ø ð Ø—‘Ø— ‘ ˜D¨T¸dðôàØ—z‘z—‘�ØØ—x‘x 4§;¡;Ñ.ØŸ™ §¡Ô*ØŸ™¤§¡¨U´C¸¿ ¹ ³OÓ!DÔEØŸ™ §¡Ô,ؘtŸz™zÑ)ØØŸ9™9�Dðð ÷÷ñûôò ñ ð ús/›D ºB:C>Ã5D Ã>DÄD ÄD Ä DÄDcó`•—|js|j«tt|�«SrA)rðrÝrïrír»©r>rós €r+r»zmanifestfulltextcache.__len__Õs$ø€Ø�zŠzØ �I‰IŒKÜÔ*¨DÑ9Ó;Ð;rcób•—|js|j«tt|�|«SrA)rðrÝrïrírˆ©r>rvrós €r+rˆz"manifestfulltextcache.__contains__Ús&ø€Ø�zŠzØ �I‰IŒKÜÔ*¨DÑ>¸qÓAÐArcó`•—|js|j«tt|�«SrA)rðrÝrïrírDrs €r+rDzmanifestfulltextcache.__iter__ßs$ø€Ø�zŠzØ �I‰IŒKÜÔ*¨DÑ:Ó<ÐrvÚsetdirtyr™rós €r+r�z!manifestfulltextcache.__getitem__äsOø€Ø�zŠzØ �I‰IŒKà—;‘;—?‘? 1Ó%¨T¯Z©ZÐ7ˆÜÔ+¨TÑ>¸qÓAˆÙ ؈DŒK؈ rcót•—|js|j«tt|�||«d|_yr¥)rðrÝrïríršrb)r>rvrorós €r+ršz!manifestfulltextcache.__setitem__îs,ø€Ø�zŠzØ �I‰IŒKÜ Ô# TÑ6°q¸!Ô<؈� rcór•—|js|j«tt|�|«d|_yr¥)rðrÝrïrír“rbrs €r+r“z!manifestfulltextcache.__delitem__ôs*ø€Ø�zŠzØ �I‰IŒKÜ Ô# TÑ6°qÔ9؈� rcóf•—|js|j«tt|�||¬«S)N)r)rðrÝrïrír)r>rvrrós €r+rzmanifestfulltextcache.getús+ø€Ø�zŠzØ �I‰IŒKÜÔ*¨DÑ5°aÀÐ5ÓIÐIrcój•—tt|� «|rd|_|j «d|_y)NTF)rïríÚclearrbrrð)r>Úclear_persisted_datarós €r+r zmanifestfulltextcache.clearÿs+ø€Ü Ô# TÑ0Ô2٠؈DŒKØ �J‰JŒL؈� rrArÀ)rNrOrPrÁr÷r?rÝrr»rˆrDr�ršr“rr Ú __classcell__©rós@r+ríríŠsMø„ñð %€Eôô ò8ô8<ô Bô =ô ôô õ J÷ ñrríécó—eZdZdZy)rÄz;Exception raised when fastdelta isn't usable on a manifest.N)rNrOrPrÁrBrr+rÄrÄ s„ÚErrÄcóP—eZdZdZ d$d„Zd„Zd„Zed„«Zd%d„Z d „Z d&d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd'd„Zd'd„Zd„Zd„Zd„Zdddej8ddfd„Z d(d„Zd„Zd„Z d„Z!d„Z"d „Z# d)d!„Z$ed"„«Z%e%jLd#„«Z%y)*ÚmanifestrevlogznA revlog that stores manifest texts. This is responsible for caching the full-text manifest contents. NFc óh—||_d}d}t|dd«}|�$|jd|«}|jdd«}|xs||_t |«|_|r|js J|d|zf«‚d} |rd |z| z} ||_|r||_n d |i|_tj|tj|j f| t|« d t|jjd d«¬ «|_|jj|_|jj |_y)aÚConstructs a new manifest revlog `indexfile` - used by extensions to have two manifests at once, like when transitioning between flatmanifeset and treemanifests. `treemanifest` - used to indicate this is a tree manifest revlog. Opener options can also be used to make this a tree manifest revlog. The opener option takes precedence, so if it is set to True, we ignore whatever value is passed in to the constructor. röFÚoptionsNómanifestcachesizeó treemanifests opts is %rs 00manifestsmeta/rTspersistent-nodemap)ÚtargetÚradixrþÚmmaplargeindexÚupperboundcompÚpersistentnodemap)r\rrÚ _treeondiskríÚ_fulltextcacheÚtreeÚ _dirlogcacherÚrevlog_constantsÚKIND_MANIFESTLOGrŒÚMAXCOMPRESSIONrÚ_revlogruÚ _generaldelta) r>r\Úopenerr Ú dirlogcacherUÚ cachesizeÚoptiontreemanifestÚoptsrs r+r?zmanifestrevlog.__init__s1€ð$+ˆÔðˆ Ø"ÐÜ�v˜y¨$Ó/ˆØ Ð ØŸ™Ð!5°yÓAˆIØ!%§¡¨/¸5Ó!AÐ à-Ò=°ˆÔä3°IÓ>ˆÔá Ø×#Ò#Ð A d¨M¸DÑ,@Ð%AÓ AÐ#àˆÙ ؘt‘O eÑ+ˆEàˆŒ ñ Ø +ˆDÕ à!$ d  ˆDÔ ä—}‘}Ø Ü$×5Ñ5°t·y±yÐAØä ›:�~ØÜ)Ø$Ÿn™n×0Ñ0Ð1FÈÓNô  ˆŒ ð—\‘\×'Ñ'ˆŒ Ø!Ÿ\™\×7Ñ7ˆÕrcó—|jS)zõreturn an actual revlog instance if any This exist because a lot of code leverage the fact the underlying storage is a revlog for optimization, so giving simple way to access the revlog instance helps such code. )r%rCs r+Ú get_revlogzmanifestrevlog.get_revlogTs€ð�|‰|Ðrcó&‡‡—tj|d«sy|j|j_|j |j «€ytj|«Štj|«Šˆˆfd„}|j|«y)z1Persist the manifestfulltextcache on lock releaseÚ _wlockrefNc󢕗|sy‰«}‰«}|�|€y|jjd«|ury|jj«yr¬)Ú manifestlogÚ getstoragerr)ÚsuccessÚrepor>ÚmanifestrevlogrefÚreporefs €€r+ÚpersistmanifestcachezEmanifestrevlog._setupmanifestcachehooks..persistmanifestcacheisRø€áØá“9ˆDÙ$Ó&ˆD؈|˜t˜|ØØ×Ñ×*Ñ*¨3Ó/°tÑ;àØ × Ñ × %Ñ %Õ 'r) rÚ safehasattrÚ wcachevfsrrñÚ _currentlockr/ÚweakrefÚrefÚ _afterlock)r>r4r7r5r6s @@r+Ú_setupmanifestcachehooksz'manifestrevlog._setupmanifestcachehooks]sqù€ä×Ñ  kÔ2Ø à&*§n¡nˆ×ÑÔ#Ø × Ñ ˜TŸ^™^Ó ,Ð 4Ø ä—+‘+˜dÓ#ˆÜ#ŸK™K¨Ó-Ðõ (ð �‰Ð,Õ-rcó—|jSrA)rrCs r+Ú fulltextcachezmanifestrevlog.fulltextcacheys€à×"Ñ"Ð"rcó–—|jj«|jj|¬«|j|i|_y©N)r)r%Ú clearcachesrr r r!©r>rs r+rCzmanifestrevlog.clearcaches}s;€Ø � ‰ × Ñ Ô"Ø ×Ñ×!Ñ!Ð7KÐ!ÔLØ!ŸY™Y¨Ð-ˆÕrcóê—|r|jsJ‚||jvrGt|j|j||j|j¬«}||j|<|j|S)N)rU)rr!rr\r')r>r¨Úmfrevlogs r+Údirlogzmanifestrevlog.dirlog‚st€Ù Ø×#Ò#Ð #Ð#Ø �D×%Ñ%Ñ %Ü%Ø×"Ñ"Ø— ‘ ØØ×!Ñ!Ø!×-Ñ-ô ˆHð$,ˆD× Ñ ˜aÑ Ø× Ñ  Ñ#Ð#rc ó¸— ||jvr t«‚t|«tjt |«D� cgc]} | df‘Œc} t |«D� cgc]} | df‘Œc} «} |j |j|| «\} } |jj|«| f}tj| «}|jj||||||«}|jj|«}| �| |j|<|Scc} wcc} w#t$r·|jrS|sJd«‚| sJd«‚||j|«}||j|«}|j||||||| ¬«}d} nU|j!«}|jj|||||«}|jj|«}t#|«} YŒÜwxYw)aadd some manifest entry in to the manifest log input: m: the manifest dict we want to store transaction: the open transaction p1: manifest-node of p1 p2: manifest-node of p2 added: file added/changed compared to parent removed: file removed compared to parent tree manifest input: readtree: a function to read a subtree match: a filematcher for the subpart of the tree manifest FTs,readtree must be set for treemanifest writess/match must be specified for treemanifest writes©r N)r@rÄr0ÚheapqÚmergerýr8r%Úrevrr$Ú addrevisionrÎrr Ú_addtreerªr))r>rÚ transactionÚlinkÚp1Úp2ÚaddedÚremovedÚreadtreer rÚworkr7r6Ú cachedeltarªrLr(r r®s r+r²zmanifestrevlog.add�sÖ€ð8) ,ؘ×+Ñ+Ñ+Ü*Ó,Ð,ô ˜EÔ "ä—;‘;Ü%+¨E¤]Ó3¡] �!�U’ ]Ñ3Ü$*¨7¤OÓ4¡O˜q�!�T’ OÑ4óˆDð $%§;¡;¨t×/AÑ/AÀ"Ñ/EÀtÓ#LÑ ˆI�yØŸ™×)Ñ)¨"Ó-¨yÐ8ˆJÜ—;‘;˜yÓ)ˆDØ—,‘,×*Ñ*Ø�k 4¨¨R°óˆCð— ‘ ×!Ñ! #Ó&ˆAð, Ð Ø$-ˆD× Ñ ˜qÑ !àˆùòG4ùÚ4øô$ò ,ð ×ÒÙÐPÐ!PÓP�xÙÐPÐPÓP�uÙ˜dŸi™i¨Ó,�Ù˜dŸi™i¨Ó,�Ø—M‘MØ�{ D¨"¨b°(À%ð"ó�ð!‘ à—v‘v“x�Ø—l‘l×.Ñ.¨t°[À$ÈÈBÓO�Ø—L‘L×%Ñ% cÓ*�Ü% d›O� ùð' ,ús1‚?DÁ DÁ DÁ D Á&BDÄ DÄB=GÇGcój‡‡‡‡—‰jdk7r2|j|«s|j|«r|j«Sˆˆˆˆfd„}|j||||«|j «} d} ‰jdk7rG| |j «k(r|j«} n#| |j «k(r|j«} | sV‰j j | ‰‰|j«|j««} ‰j j| «} |j| «| S)Nrc óx•—‰j|j««}|j|‰‰||dd‰|¬« y)N©rUr )rGrïr²) rYrãrär ÚsublogrPrUr>rOs €€€€r+râz-manifestrevlog._addtree..writesubtreeäsCø€Ø—[‘[ §¡£Ó,ˆFØ �J‰JØØØØØØØØ!Øð õ r)r rÒrÎrårØr%rMr”) r>rrOrPr r®rUr rârªr(rLs ` `` ` r+rNzmanifestrevlog._addtreeÜsôû€ð �9‰9˜Ò Ø × Ñ ˜bÔ ! Q×%6Ñ%6°rÔ%:à—6‘6“8ˆO÷ ð �‰˜˜B  ¨eÔ4Ø�y‰y‹{ˆØ ˆØ �9‰9˜Ò à�r—z‘z“|Ò#Ø—G‘G“I‘ؘŸ™›Ò%Ø—G‘G“I�áØ—,‘,×*Ñ*Ø�k 4¨¯©«°B·G±G³IóˆCð— ‘ ×!Ñ! #Ó&ˆAð � ‰ �!Œ ؈rcó,—t|j«SrA)r!r%rCs r+r»zmanifestrevlog.__len__s€Ü�4—<‘<Ó Ð rcó6—|jj«SrA)r%rDrCs r+rDzmanifestrevlog.__iter__ s€Ø�|‰|×$Ñ$Ó&Ð&rcó8—|jj|«SrA)r%rLr“s r+rLzmanifestrevlog.rev s€Ø�|‰|×Ñ Ó%Ð%rcó8—|jj|«SrA)r%rΩr>rLs r+rÎzmanifestrevlog.nodes€Ø�|‰|× Ñ  Ó%Ð%rcó8—|jj|«SrA)r%Úlookup©r>r™s r+rbzmanifestrevlog.lookups€Ø�|‰|×"Ñ" 5Ó)Ð)rcó8—|jj|«SrA)r%Ú parentrevsr`s r+rezmanifestrevlog.parentrevss€Ø�|‰|×&Ñ& sÓ+Ð+rcó8—|jj|«SrA)r%Úparentsr“s r+rgzmanifestrevlog.parentss€Ø�|‰|×#Ñ# DÓ)Ð)rcó8—|jj|«SrA)r%Úlinkrevr`s r+rizmanifestrevlog.linkrevó€Ø�|‰|×#Ñ# CÓ(Ð(rcó6—|jj«SrA)r%Ú checksizerCs r+rlzmanifestrevlog.checksizes€Ø�|‰|×%Ñ%Ó'Ð'rcó<—|jj||¬«S©N)Ú_df)r%Úrevision©r>rÎros r+rpzmanifestrevlog.revision!s€Ø�|‰|×$Ñ$ T¨sÐ$Ó3Ð3rcó<—|jj||¬«Srn)r%Úrawdatarqs r+rszmanifestrevlog.rawdata$s€Ø�|‰|×#Ñ# D¨cÐ#Ó2Ð2rcó:—|jj||«SrA)r%Úrevdiff)r>Úrev1Úrev2s r+ruzmanifestrevlog.revdiff's€Ø�|‰|×#Ñ# D¨$Ó/Ð/rcó:—|jj||«SrA)r%Úcmp)r>rÎrªs r+ryzmanifestrevlog.cmp*s€Ø�|‰|×Ñ  dÓ+Ð+rcó8—|jj|«SrA)r%Ú deltaparentr`s r+r{zmanifestrevlog.deltaparent-s€Ø�|‰|×'Ñ'¨Ó,Ð,rc óF—|jj|||||||¬«S)N)Ú nodesorderÚ revisiondataÚassumehaveparentrevisionsÚ deltamodeÚsidedata_helpersÚ debug_info)r%Ú emitrevisions)r>Únodesr}r~rr€r�r‚s r+rƒzmanifestrevlog.emitrevisions0s5€ð�|‰|×)Ñ)Ø Ø!Ø%Ø&?ØØ-Ø!ð*ó ð rc óH—|jj||||||||¬«S)N)Ú alwayscacheÚ addrevisioncbÚduplicaterevisioncbr‚Údelta_base_reuse_policy)r%Úaddgroup) r>ÚdeltasÚ linkmapperrOr†r‡rˆr‚r‰s r+rŠzmanifestrevlog.addgroupDs8€ð�|‰|×$Ñ$Ø Ø Ø Ø#Ø'Ø 3Ø!Ø$;ð%ó  ð rcó8—|jj|«SrA)r%Úrawsizer`s r+rŽzmanifestrevlog.rawsizeZrjrcó8—|jj|«SrA)r%Ú getstrippoint)r>Úminlinks r+r�zmanifestrevlog.getstrippoint]s€Ø�|‰|×)Ñ)¨'Ó2Ð2rcó:—|jj||«SrA)r%Ústrip)r>r‘rOs r+r“zmanifestrevlog.strip`s€Ø�|‰|×!Ñ! '¨;Ó7Ð7rcó6—|jj«SrA)r%r3rCs r+r3zmanifestrevlog.filescs€Ø�|‰|×!Ñ!Ó#Ð#rc óœ—t|t«stjd«‚|jj ||jfi|¤ŽS)Ns"expected manifestrevlog to clone())rŠrr ÚProgrammingErrorr%Úclone)r>ÚtrÚ destrevlogÚkwargss r+r—zmanifestrevlog.clonefsB€Ü˜*¤nÔ5Ü×(Ñ(Ð)NÓOÐ Oà!ˆt�|‰|×!Ñ! " j×&8Ñ&8ÑC¸FÑCÐCrcóB—|jj|||||¬«S)N)ÚexclusivefilesÚ sharedfilesÚrevisionscountÚ trackedsizeÚ storedsize)r%Ú storageinfo)r>rœr�ržrŸr s r+r¡zmanifestrevlog.storageinfols/€ð�|‰|×'Ñ'Ø)Ø#Ø)Ø#Ø!ð (ó ð rcó.—|jjSrA©r%r'rCs r+r'zmanifestrevlog.opener|s€à�|‰|×"Ñ"Ð"rcó&—||j_yrAr£rcs r+r'zmanifestrevlog.opener€s€à#ˆ� ‰ Õr)rNFrÀ)NNrA)FNNNN)FFFFF)'rNrOrPrÁr?r-r>Úpropertyr@rCrGr²rNr»rDrLrÎrbrergrirlrprsruryr{rÚCG_DELTAMODE_STDrƒrŠrŽr�r“r3r—r¡r'ÚsetterrBrr+rrs,„ñðØØó <8ò|ò.ð8ñ#óð#ó.ò $ð.ØóJòX(òT!ò'ò&ò&ò*ò,ò*ò)ò(ó4ó3ò0ò,ò-ð ØØ"'Ø×-Ñ-ØØó ð2ØØ ØØ $ó ò,)ò3ò8ò$òDðØØØØó  ð ñ#óð#ð ‡]�]ñ$óñ$rrcó>—eZdZdZd„Zd„Zd d„Zd„Zd d„Zd„Z d„Z y ) r1ašA collection class representing the collection of manifest snapshots referenced by commits in the repository. In this situation, 'manifest' refers to the abstract concept of a snapshot of the list of files in the given commit. Consumers of the output of this class do not care about the implementation details of the actual manifests they receive (i.e. tree or flat or lazily loaded, etc).cóT—|j|_d}d}t|dd«}|�$|jd|«}|jd|«}||_||_|jj |«||_i|_tj|«|jd<||_ y)NFrörrrr) r\rrÚ_treemanifestsÚ _rootstorer>Ú _narrowmatchÚ _dirmancacherÚ lrucachedictÚ _cachesize)r>r'r4Ú rootstoreÚ narrowmatchÚusetreemanifestr)r+s r+r?zmanifestlog.__init__�s¤€Ø!×/Ñ/ˆÔ؈؈ ä�v˜y¨$Ó/ˆØ Ð Ø"Ÿh™h ¸ÓHˆOØŸ™Ð!5°yÓAˆIà-ˆÔà#ˆŒØ �‰×0Ñ0°Ô6Ø'ˆÔðˆÔÜ!%×!2Ñ!2°9Ó!=ˆ×ј#Ñà#ˆ�rcó&—|jd|«S)zgRetrieves the manifest instance for the given node. Throws a LookupError if not found. r)rr“s r+r�zmanifestlog.__getitem__¥s€ð�x‰x˜˜TÓ"Ð"rcó.—||jj|d«vr|j||S|jj«s5|jj |dd«st |j ||«S|rg|jjr0|r |j|«j|«t|||«}ndtjtd«|z«‚|r|jj|«|jrt|d|«}n t!||«}||j j"k7rP|jj|«}|s.t%j&|j(«}||j|<|||<|S)zÓRetrieves the manifest instance for the given node. Throws a LookupError if not found. `verify` - if True an exception will be thrown if the node is not in the revlog rBNrs9cannot ask for manifest directory '%s' in a flat manifestr)r­rr¬rûrèÚexcludeddirmanifestctxr\r«rr2rLÚtreemanifestctxr ÚAbortrrªÚ manifestctxr]rr®r¯)r>r rÎÚverifyrÚmancaches r+rzmanifestlog.get«sq€ð �4×$Ñ$×(Ñ(¨¨rÓ2Ñ 2Ø×$Ñ$ TÑ*¨4Ñ0Ð 0à× Ñ ×'Ñ'Ô)Ø×$Ñ$×-Ñ-¨d°3°B¨iÔ8Ü-¨d×.@Ñ.@À$ÈÓMÐMÙ Ø�‰×*Ò*Ùð—O‘O DÓ)×-Ñ-¨dÔ3ä# D¨$°Ó5‘ä—k‘kÜð$óðñ óðñà—‘×#Ñ# DÔ)à×"Ò"Ü# D¨#¨tÓ4‘ä  dÓ+�à �4×%Ñ%×,Ñ,Ò ,Ø×(Ñ(×,Ñ,¨TÓ2ˆHÙÜ×,Ñ,¨T¯_©_Ó=�Ø*2�×!Ñ! $Ñ'؈H�T‰N؈rcó8—|jj|«SrA)r«rG)r>r s r+r2zmanifestlog.getstorageÚs€Ø�‰×%Ñ% dÓ+Ð+rcóp—|jj«|jj|¬«yrB)r­r r«rCrDs r+rCzmanifestlog.clearcachesÝs*€Ø ×Ñ×ÑÔ!Ø �‰×#Ñ#Ð9MÐ#ÕNrcó8—|jj|«SrA)r«rLr“s r+rLzmanifestlog.revás€Ø�‰×"Ñ" 4Ó(Ð(rcóN—|jjj|¬«S)N)rO)r«r%Ú update_caches)r>rOs r+r¿zmanifestlog.update_cachesäs €Ø�‰×&Ñ&×4Ñ4ÀÐ4ÓMÐMrN)TrÀ) rNrOrPrÁr?r�rr2rCrLr¿rBrr+r1r1…s-„ñ?ò$ò,#ó -ò^,óOò)óNrr1có,—eZdZd„Zd„Zd„Zd„Zdd„Zy)ÚmemmanifestctxcóZ—||_t|jj«|_yrA)Ú _manifestlogrÃr\r#Ú _manifestdict)r>r1s r+r?zmemmanifestctx.__init__ês#€Ø'ˆÔÜ)¨+×*CÑ*C×*KÑ*KÓLˆÕrcó8—|jjd«Sr¬©rÃr2rCs r+Ú_storagezmemmanifestctx._storageîó€Ø× Ñ ×+Ñ+¨CÓ0Ð0rcóv—t|j«}|j«j«|_|SrA©rÁrÃrÝrœrÄ©r>Úmemmfs r+rœzmemmanifestctx.copyñó.€Ü˜t×0Ñ0Ó1ˆØ"Ÿi™i›k×.Ñ.Ó0ˆÔ؈ rcó—|jSrA)rÄrCs r+rÝzmemmanifestctx.readöó€Ø×!Ñ!Ð!rNc ód—|j«j|j|||||||¬«S)NrI)rÇr²rÄ)r>rOrPrQrRrSrTr s r+rzmemmanifestctx.writeùs>€Ø�}‰}‹×"Ñ"Ø × Ñ Ø Ø Ø Ø Ø Ø Øð#ó  ð rrA©rNrOrPr?rÇrœrÝrrBrr+rÁrÁès„òMò1òò "ô  rrÁcóT—eZdZdZd„Zd„Zd„Zd„Zed„«Z d„Z d d„Z d d „Z d „Z y ) r¸zxA class representing a single revision of a manifest, including its contents, its parent revs, and its linkrev. có.—||_d|_||_yrA)rÃÚ_datar^)r>r1rÎs r+r?zmanifestctx.__init__ s€Ø'ˆÔ؈Œ àˆ� rcó8—|jjd«Sr¬rÆrCs r+rÇzmanifestctx._storagerÈrcó—|jSrA©r^rCs r+rÎzmanifestctx.noderírcóv—t|j«}|j«j«|_|SrArÊrËs r+rœzmanifestctx.copyrÍrcóT—|j«j|j«SrA©rÇrgr^rCs r+rgzmanifestctx.parents$ó€à�}‰}‹×&Ñ& t§z¡zÓ2Ð2rcó<—|j�€|jj}|j|jk(r&t |j «|_|jS|j«}|j|jvr-tj|j|j«}n?|j|j«}t|«}||j|j<t |j |«|_|jSrA) rÔrÃr\r^r]rÃr#rÇr@rrFrpr))r>ÚncÚstorerªr7s r+rÝzmanifestctx.read(sÒ€Ø �:‰:Ñ Ø×"Ñ"×0Ñ0ˆBØ�z‰z˜RŸY™YÒ&Ü)¨"¯*©*Ó5�” ð�z‰zÐ🠙 ›�Ø—:‘: ×!4Ñ!4Ñ4Ü#×+Ñ+¨E×,?Ñ,?ÀÇ Á Ñ,KÓL‘Dà Ÿ>™>¨$¯*©*Ó5�DÜ )¨$£�IØ6?�E×'Ñ'¨¯ © Ñ3Ü)¨"¯*©*°dÓ;�” Ø�z‰zÐrcóò—|j«}|j|j«}|j|«}|tk7r#||j |«vr|j «S|j«S)aCalls either readdelta or read, based on which would be less work. readdelta is called if the delta is against the p1, and therefore can be read quickly. If `shallow` is True, nothing changes since this is a flat manifest. )rÇrLr^r{rreÚ readdeltarÝ©r>ÚshallowrÞr�r{s r+Úreadfastzmanifestctx.readfast8sd€ð— ‘ “ˆØ �I‰I�d—j‘jÓ !ˆØ×'Ñ'¨Ó*ˆ Ø œ'Ò ! k°U×5EÑ5EÀaÓ5HÑ&HØ—>‘>Ó#Ð #Ø�y‰y‹{Ðrcó—|j«}|j|j«}tj|j |j |«|««}t|jj|«S)a Returns a manifest containing just the entries that are present in this manifest, but not in its p1 manifest. This is efficient to read if the revlog delta is already p1. Changing the value of `shallow` has no effect on flat manifests. ) rÇrLr^r Ú patchtextrur{rÃr\r#)r>rârÞr�r¨s r+ràzmanifestctx.readdeltaFs^€ð— ‘ “ˆØ �I‰I�d—j‘jÓ !ˆÜ �O‰O˜EŸM™M¨%×*;Ñ*;¸AÓ*>ÀÓBÓ CˆÜ˜E×/Ñ/×7Ñ7¸Ó;Ð;rcó@—|j«j|«SrA©rÝrJr‡s r+rJzmanifestctx.findRó€Ø�y‰y‹{×Ñ Ó$Ð$rNrÀ)rNrOrPrÁr?rÇrÎrœr;rgrÝrãràrJrBrr+r¸r¸sC„ñòò1òòð ñ3óð3òó ó <ó%rr¸có.—eZdZdd„Zd„Zd„Zd„Zdd„Zy) ÚmemtreemanifestctxcóT—||_||_t|j«|_yrA)rÃr[rUr\Ú _treemanifest)r>r1rïs r+r?zmemtreemanifestctx.__init__Xs$€Ø'ˆÔ؈Œ Ü)¨+×*CÑ*CÓDˆÕrcó8—|jjd«Sr¬rÆrCs r+rÇzmemtreemanifestctx._storage]rÈrcó†—t|j|j¬«}|jj «|_|S©N©rï)rêrÃr[rìrœrËs r+rœzmemtreemanifestctx.copy`s4€Ü" 4×#4Ñ#4¸$¿)¹)ÔDˆØ"×0Ñ0×5Ñ5Ó7ˆÔ؈ rcó—|jSrA)rìrCs r+rÝzmemtreemanifestctx.readerÏrNc ór‡—ˆfd„}‰j«j‰j||||||||¬« S)NcóX•—‰jj||«j«SrA©rÃrrÝ)rïrÎr>s €r+rUz*memtreemanifestctx.write..readtreeis%ø€Ø×$Ñ$×(Ñ(¨¨dÓ3×8Ñ8Ó:Ð :rrZ)rÇr²rì) r>rOrPrQrRrSrTr rUs ` r+rzmemtreemanifestctx.writehsIø€ô ;ð�}‰}‹×"Ñ"Ø × Ñ Ø Ø Ø Ø Ø Ø ØØð#ó  ð rr9rArÑrBrr+rêrêVs„óEò 1òò "ô rrêcóP—eZdZd„Zd„Zd„Zd„Zd„Zed„«Z d d„Z d d„Z d „Z y ) r¶có<—||_||_d|_||_yrA)rÃr[rÔr^)r>r1rïrÎs r+r?ztreemanifestctx.__init__{s€Ø'ˆÔ؈Œ ؈Œ àˆ� rcó(—|jj}|j«sH|j|jdd«s*t |jj |j«S|jj|j«Sr†)rÃr¬rûrèr[Úexcludedmanifestrevlogr\r2)r>r±s r+rÇztreemanifestctx._storage‰sv€Ø×'Ñ'×4Ñ4ˆ Ø×!Ñ!Ô#Ø×'Ñ'¨¯ © °#°2¨Ô7Ü-Ø×%Ñ%×3Ñ3°T·Y±Yóðð× Ñ ×+Ñ+¨D¯I©IÓ6Ð6rc󀇇—‰j�€¤‰j«Š‰j‰jjj k(r0t ‰jj«‰_‰jS‰jrvt ‰jj‰j¬«}ˆˆfd„}ˆfd„}|j||«|j‰j«|‰_‰jS‰j‰jvr-tj‰j‰j«}n?‰j‰j«}t|«}|‰j‰j<t ‰jj‰j|¬«‰_‰jS)Nrðcó:•—‰j‰j«SrA)rpr^)r>rÞs€€r+rÛz%treemanifestctx.read..gettext›sø€Ø Ÿ>™>¨$¯*©*Ó5Ð5rcó\•—‰jj||d¬«j«S)NF)r¹rô)rïrYr>s €r+rZz)treemanifestctx.read..readsubtreežs,ø€ð ×,Ñ,×0Ñ0°°dÀ5Ð0ÓI×NÑNÓPÐPr)rïrª)rÔrÇr^rÃr\r]rUrr[rÝr”r@rrFrpr))r>rrÛrZrªr7rÞs` @r+rÝztreemanifestctx.read’sPù€Ø �:‰:Ñ Ø—M‘M“OˆEØ�z‰z˜T×.Ñ.×<Ñ<×CÑCÒCÜ)¨$×*;Ñ*;×*IÑ*IÓJ�” ð6�z‰zÐð3×"Ò"Ü  ×!2Ñ!2×!@Ñ!@ÀdÇiÁiÔP�õ6ôQð —‘�w  Ô,Ø— ‘ ˜$Ÿ*™*Ô%Ø�” ð�z‰zÐð—:‘: ×!4Ñ!4Ñ4Ü#×+Ñ+¨E×,?Ñ,?ÀÇ Á Ñ,KÓL‘Dà Ÿ>™>¨$¯*©*Ó5�DÜ )¨$£�IØ6?�E×'Ñ'¨¯ © Ñ3Ü)Ø×%Ñ%×3Ñ3¸¿¹Èô�” ð�z‰zÐrcó—|jSrAr×rCs r+rÎztreemanifestctx.node³rírcóŽ—t|j|j¬«}|j«j «|_|Srï)rêrÃr[rÝrœrìrËs r+rœztreemanifestctx.copy¶s4€Ü" 4×#4Ñ#4¸$¿)¹)ÔDˆØ"Ÿi™i›k×.Ñ.Ó0ˆÔ؈ rcóT—|j«j|j«SrArÚrCs r+rgztreemanifestctx.parents»rÛrcóò—|j«}|ro|j|j«}tj|j |j |«|««}t|jj|«S|j |j|j««}|jj|j|j|««j«}|j«}t|jj|j¬«}|j!|«j#«D]+\} \\} } \} } | sŒ| || <| sŒ|j%| | «Œ-|S)aReturns a manifest containing just the entries that are present in this manifest, but not in its p1 manifest. This is efficient to read if the revlog delta is already p1. If `shallow` is True, this will read the delta for this directory, without recursively reading subdirectory manifests. Instead, any subdirectory entry will be reported as it appears in the manifest, i.e. the subdirectory will be reported among files and distinguished only by its 't' flag. rð)rÇrLr^r rårur{rÃr\r#rÃrr[rÎrÝrUr°rr )r>rârÞr�r¨Úr0Úm0r Úmdr'Ún0Úfl0rÈrÉs r+ràztreemanifestctx.readdelta¿s&€ð— ‘ “ˆÙ Ø— ‘ ˜$Ÿ*™*Ó%ˆAÜ—‘ § ¡ ¨e×.?Ñ.?ÀÓ.BÀAÓ FÓGˆAÜ × 3Ñ 3× ;Ñ ;¸QÓ?Ð ?ð×"Ñ" 5§9¡9¨T¯Z©ZÓ#8Ó9ˆBØ×"Ñ"×&Ñ& t§y¡y°%·*±*¸R³.ÓA×FÑFÓHˆBØ—‘“ˆBܘd×/Ñ/×=Ñ=À4Ç9Á9ÔMˆBØ-/¯W©W°R«[×->Ñ->Ö-@Ñ)�Ñ)‘I�R˜™y  CÚØ�B�q‘EÚØŸ ™  1 cÕ*ð .Að ˆIrcól—|j«}|j|j«}|j|«}|tk7r%||j |«vr|j |¬«S|r9t|jj|j|j««S|j«S)a#Calls either readdelta or read, based on which would be less work. readdelta is called if the delta is against the p1, and therefore can be read quickly. If `shallow` is True, it only returns the entries from this manifest, and not any submanifests. )râ) rÇrLr^r{rreràrÃr\r#rprÝrás r+rãztreemanifestctx.readfastÜs˜€ð— ‘ “ˆØ �I‰I�d—j‘jÓ !ˆØ×'Ñ'¨Ó*ˆ Ø œ'Ò ! k°U×5EÑ5EÀaÓ5HÑ&HØ—>‘>¨'�>Ó2Ð 2á ÜØ×#Ñ#×+Ñ+¨U¯^©^¸D¿J¹JÓ-Góð ð—9‘9“;Ð rcó@—|j«j|«SrArçr‡s r+rJztreemanifestctx.findñrèrNrÀ) rNrOrPr?rÇrÝrÎrœr;rgràrãrJrBrr+r¶r¶ys?„òò7òòBòð ñ3óð3óó:ó*%rr¶có(‡—eZdZdZˆfd„Zd„ZˆxZS)Ú excludeddiraþStand-in for a directory that is excluded from the repository. With narrowing active on a repository that uses treemanifests, some of the directory revlogs will be excluded from the resulting clone. This is a huge storage win for clients, but means we need some sort of pseudo-manifest to surface to internals so we can detect a merge conflict outside the narrowspec. That's what this class is: it stands in for a directory whose node is known, but whose contents are unknown. cóx•—tt|� ||«||_||jd<d|j d<y)Nrri)rïrr?r^rdre)r>r\rïrÎrós €r+r?zexcludeddir.__init__ s9ø€Ü Œk˜4Ñ)¨-¸Ô=؈Œ ð ˆ� ‰ �CÑØˆ� ‰ �CÒrcó—|SrArBrCs r+rœzexcludeddir.copy rEr)rNrOrPrÁr?rœrrs@r+rrõsø„ñ ô örrcó*—eZdZdZd„Zd„Zdd„Zd„Zy)rµzBcontext wrapper for excludeddir - see that docstring for rationalecó.—||_||_||_yrA)r\r[r^)r>r\rïrÎs r+r?zexcludeddirmanifestctx.__init__ s€Ø*ˆÔ؈Œ ؈� rcóX—t|j|j|j«SrA)rr\r[r^rCs r+rÝzexcludeddirmanifestctx.read s€Ü˜4×-Ñ-¨t¯y©y¸$¿*¹*ÓEÐErcó"—|j«SrA)rÝ)r>râs r+rãzexcludeddirmanifestctx.readfast s€à�y‰y‹{ÐrcóF—tjd|jz«‚)Ns.attempt to write manifest from excluded dir %s©r r–r[)r>Úargss r+rzexcludeddirmanifestctx.write! s!€Ü×$Ñ$Ø =ÀÇ Á Ñ Ió ð rNrÀ)rNrOrPrÁr?rÝrãrrBrr+rµrµ s„ÙLòò Fóó rrµcó4—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z y) røa\Stand-in for excluded treemanifest revlogs. When narrowing is active on a treemanifest repository, we'll have references to directories we can't see due to the revlog being skipped. This class exists to conform to the manifestrevlog interface for those directories and proactively prevent writes to outside the narrowspec. có —||_||_yrA)r\r[)r>r\rïs r+r?zexcludedmanifestrevlog.__init__1 s€Ø*ˆÔ؈� rcóF—tjd|jz«‚)Ns(attempt to get length of excluded dir %srrCs r+r»zexcludedmanifestrevlog.__len__5 ó!€Ü×$Ñ$Ø 7¸$¿)¹)Ñ Có ð rcóF—tjd|jz«‚)Ns'attempt to get rev from excluded dir %srr“s r+rLzexcludedmanifestrevlog.rev: s!€Ü×$Ñ$Ø 6¸¿¹Ñ Bó ð rcóF—tjd|jz«‚)Ns+attempt to get linkrev from excluded dir %srr“s r+rizexcludedmanifestrevlog.linkrev? s!€Ü×$Ñ$Ø :¸T¿Y¹YÑ Fó ð rcóF—tjd|jz«‚)Ns(attempt to get node from excluded dir %srr`s r+rÎzexcludedmanifestrevlog.nodeD rrcó—yrArB)r>rršs r+r²zexcludedmanifestrevlog.addI s€ð rN) rNrOrPrÁr?r»rLrirÎr²rBrr+rørø' s%„ñòò ò  ò  ò  ó  rrø)rN)ErJr–rIr;Úi18nrrÎrrrrrÚr r r ràr r rrrÚ interfacesrÚ interfaceutilÚ revlogutilsrr"Ú importmodrr;r%r,r6r8rSrYrgr"rlÚ lazymanifestÚAttributeErrorÚ implementerÚ imanifestdictrÃr&r0r(rRr_rUr®rír$Ú ExceptionrÄÚimanifeststoragerÚ imanifestlogr1ÚimanifestrevisionwritablerÁÚimanifestrevisionstoredr¸rêr¶rrµrørBrr+Úr)s¯ðó ÛÛ Ûå÷ñõ ÷ ÷ õ ÷õð ˆ&× Ñ ˜9Ó %€Ø×"Ñ"€ ð $Ðòò6 ÷ñ÷."ñ"òJ òò)€÷qñqðh  Ø×(Ñ(€Mð €×ј:×3Ñ3Ó4÷g$ðg$ó5ðg$óT(òVò!ò,ñ €ð€×ј:×3Ñ3Ó4÷h ðh ó5ðh ôVz˜D×-Ñ-ôzð~€ôF˜9ôFð€×ј:×6Ñ6Ó7÷q$ðq$ó8ðq$ðh €×ј:×2Ñ2Ó3÷_Nð_Nó4ð_NðD€×ј:×?Ñ?Ó@÷ ð óAð ð:€×ј:×=Ñ=Ó>÷L%ðL%ó?ðL%ð^€×ј:×?Ñ?Ó@÷ ð óAð ðD€×ј:×=Ñ=Ó>÷x%ðx%ó?ðx%ôv�,ôô: ˜_ô ô*( ˜^õ( øða:ò Úð ús IÉI É I