Ë [®”� ÷]ãó®—ddlZddlZddlmZddlmZmZddlmZ m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddlm Z m!Z!m"Z"ddl#m$Z$ejJZ%ejLZ&dZ'dnd „Z(d „Z)d „Z*d „Z+d „Z,d„Z-Gd„d«Z.ed«ed«fed«ed«fed«ed«fdœZ/ dod„Z0gZ1iZ2d„Z3d„Z4d„Z5e3d«d„«Z6e3d«d„«Z7e3d «d!„«Z8e3d"«d#„«Z9d$„Z:d%„Z;gZd'„Z?d(„Z@e>d)«d*„«ZAe>d+«d,„«ZBe>d«d-„«ZCe>d«d.„«ZDd/„ZEd0„ZFe>d1«d2„«ZGe>d"«d3„«ZHd4„ZId5„ZJd6„ZKd7„ZLe>d8d¬9«d:„«ZMd;„ZNd<„ZOd=„ZPej¢fd>„ZRd?„ZSd@„ZTGdA„dB«ZUGdC„dDej¬«ZWdE„ZXdF„ZYdG„ZZ dpdH„Z[gZ\iZ]dI„Z^dJ„Z_e^dK«dL„«Z`e^dM«dN„«ZadO„ZbdP„ZcdQ„ZddR„ZedS„ZfdT„ZgdU„ZhdV„ZidndW„ZjdX„ZkgZliZmdndY„ZndZ„Zo dqd[„Zpend\«d]„«ZqendM« drd^„«Zrend"« dsd_„«Zsend`« dsda„«Ztend1« dtdb„«Zuendc« dtdd„«Zvende« dqdf„«Zwendg« dqdh„«Zxdi„Zydj„Zzdk„Z{dl„Z|dm„Z}y)uéNé)Ú_)ÚhexÚnullrev)Ú bookmarksÚbundle2Ú bundlecachesÚ changegroupÚ discoveryÚerrorÚlockÚ logexchangeÚ narrowspecÚobsoleteÚobsutilÚphasesÚpushkeyÚpycompatÚ requirementsÚscmutilÚ streamcloneÚurlÚutilÚwireprototypes)ÚhashutilÚ stringutilÚurlutil)Ú repositorys narrowaclcór—tj|d«}d}|s?d}|jd«s?|jd«r.tj||«}d}d}n|r|j |«}|dd|dd}}|dk7r!t j td «|z«‚|d k(r.|€tj|d«}tj||«S|jd «rtj||||z¬ «S|d k(rtj|«St j td«||fz«‚)NéóstreamsHGósHG10sUNrés%s: not a Mercurial bundles10ó2)Ú magicstringsS1s%s: unknown bundle version %s) r Ú readexactlyÚ startswithÚheaderlessfixupÚjoinr ÚAbortrÚ cg1unpackerrÚ getunbundlerrÚstreamcloneapplier)ÚuiÚfhÚfnameÚvfsÚheaderÚalgÚmagicÚversions ú6usr/lib/python3.12/site-packages/mercurial/exchange.pyÚ readbundler74s4€Ü × $Ñ $ R¨Ó +€Fà €C٠؈Ø× Ñ  Ô'¨F×,=Ñ,=¸eÔ,DÜ×,Ñ,¨R°Ó8ˆB؈F؉CÙ Ø—‘˜“ˆà˜A˜a�[ &¨¨1 +ˆ7€Eà �‚~Ü�k‰kœ!Ð9Ó:¸UÑBÓCÐCØ�%ÒØ ˆ;Ü×)Ñ)¨"¨aÓ0ˆCÜ×&Ñ& r¨3Ó/Ð/Ø × Ñ ˜DÔ !Ü×#Ñ# B¨¸À¹ÔHÐHØ �EÒ Ü×-Ñ-¨bÓ1Ð1ä�k‰kÜ Ð.Ó /°5¸'Ð2BÑ Bó ð ócóÀ—g}t|j««D]0\}}tj|«}|j d||fz«Œ2dj |«S)Ns%s=%só;)ÚsortedÚitemsÚurlreqÚquoteÚappendr))ÚparamsÚpartsÚkeyÚvalues r6Ú_format_paramsrDSsT€Ø €EܘVŸ\™\›^Ö,‰ ˆˆUÜ— ‘ ˜UÓ#ˆØ � ‰ �X  e  Ñ,Õ-ð-ð �9‰9�UÓ Ðr8cóº—d„}i}t||d«}t|tj«rC|j}|dk(rd}||«}|s!t j td«|z«‚d|zSt|tj«�råd|jvr8||jd«}|s#t j td«|z«‚d}d}|j«D�]I}|jd k(rN|jd } | d vrd }Œ)| d vrd }| |d<Œ5t j td«|ztd«¬«‚|jdk(rQ|€Otj|jd«} | j«} tj | «}d|zcS|jdk(rQ|€Otj|jd«} | j«} tj | «}d|zcS|jdk(s�Œ2d|d<|j"r�ŒEd|d<�ŒL|st j td««‚d||fz} |r| dz } | t%|«z } | St|t&j(«r2t'j*|«d} tj | «} d | zSt j td!«|z«‚)"z�Infer the bundlespec from a bundle file handle. The input file handle is seeked and the original seek position is not restored. có‚— tjj|«j«dS#t$rYywxYw©Nr)rÚ compenginesÚ forbundletypeÚ bundletypeÚKeyError)r3s r6Úspeccompressionz&getbundlespec..speccompressionbs>€ð Ü×#Ñ#×1Ñ1°#Ó6×AÑAÓCÀAÑFÐ FøÜò Ùð ús ‚/2² >½>Ns _truncatedBZsBZs!unknown compression algorithm: %ss%s-v1s Compressionsnoneó changegroupóversion)ó01s02sv2)s03s cg.versions7changegroup version %s does not have a known bundlespecs#try upgrading your Mercurial client©Úhintsstream2s requirementssnone-v2;stream=v2;%ss stream3-expsnone-v2;stream=v3-exp;%só obsmarkerssyess obsolescencesnosobsolescence-mandatorys0could not identify changegroup version in bundles%s-%sr:r#snone-packed1;%ssunknown bundle type: %s)r7Ú isinstancer r+Ú_typer r*rrÚ unbundle20r@Ú iterpartsÚtyper=ÚunquoteÚsplitÚ_formatrequirementsparamsÚ mandatoryrDrr-Úreadbundle1header)r.r/rLr@Úbr3Úcompr5ÚpartÚ cgversionrÚsplittedÚspecÚ formatteds r6Ú getbundlespecrd[sÊ€òð €Fä�2�r˜4Ó €AÜ�!”[×,Ñ,Ô-Ø�g‰gˆØ �/Ò !؈CÙ˜sÓ#ˆÙÜ—+‘+œaÐ DÓEÈÑKÓLÐ Lؘ$‰ÐÜ �A”w×)Ñ)Õ *Ø ˜QŸX™XÑ %Ù" 1§8¡8¨NÑ#;Ó<ˆDÙÜ—k‘kÜÐ:Ó;¸dÑBóððˆDàˆØ—K‘K—MˆDØ�y‰y˜NÒ*Ø ŸK™K¨ Ñ3� Ø Ñ.Ø#‘GØ (Ñ*Ø#�GØ,5�F˜=Ò)äŸ+™+Üð2óð"ñ "ô ÐEÓFô ð𗑘jÒ(¨W¨_ä%Ÿ~™~¨d¯k©k¸/Ñ.JÓK� Ø-˜<×-Ñ-Ó/�Ü ×:Ñ:¸8ÓD�Ø.°Ñ7Ò7Ø—‘˜nÒ,°°ä%Ÿ~™~¨d¯k©k¸/Ñ.JÓK� Ø-˜<×-Ñ-Ó/�Ü ×:Ñ:¸8ÓD�Ø2°VÑ;Ò;Ø—‘˜mÔ+Ø*0��Ñ'Ø—~”~Ø8=�FÐ4Ó5ðA"ñDÜ—+‘+ÜÐEÓFóð ð˜4 ˜/Ñ)ˆÙ Ø �D‰LˆDØ ”N 6Ó*Ñ *ˆD؈ ä �A”{×5Ñ5Ô 6Ü"×4Ñ4°RÓ8¸Ñ;ˆ Ü×5Ñ5°lÓCˆ Ø! IÑ-Ð-ä�k‰kœ!Ð6Ó7¸!Ñ;Ó<ÐÑIˆCÜðóˆDô—+‘+˜c¨Ô-Ð -ð "ðr8có¦—|jj}|jdd«}d|vxrd|v}|xs|jj d« S)zsreturn true if a pull/push must use bundle1 This function is used to allow testing of the older bundle versionódevelólegacy.exchangeóbundle2sbundle1)rkr.Ú configlistrzÚcapable)Úopr.ÚexchangeÚ forcebundle1s r6Ú _forcebundle1r‘ìsU€ð �‰�‰€Bð�}‰}˜XÐ'9Ó:€HØ XÐ-ÒH°*ÀÐ2H€LØ Ò <˜rŸy™y×0Ñ0°Ó<Ð<Ðz.pushoperation.fallbackheads..tsèø€Ð/© 1�a—f‘f—h©ùó‚) r|rjÚ commonheadsrkÚ unfilteredrlrfÚindexÚrevr˜ÚmissingÚextend)r¦Úunfirlr¸r¯ÚcheadsÚrevsets r6Ú fallbackheadszpushoperation.fallbackheadsUsË€ð �9‰9Ð à—=‘=×,Ñ,Ð ,Ø�y‰y×#Ñ#Ó%ˆð—‘×%Ñ%ˆØ�i‰i×!Ñ!×'Ñ'×+Ñ+ˆØ#'§9¢9ÓD¡9˜4±°D³ ¸VÒ0C’$ 9ˆÐDð—‘Ø *Ø �M‰M× %Ñ %Ø �M‰M× !Ñ !ó ˆð � ‰ Ñ/©Ó/Ô/؈ ùòEs  C6ÂC6cóJ—|jr |jS|jS)z3set of all common heads after changeset bundle push)ršr«r¾rªs r6rµzpushoperation.commonheadsws#€ð �=Š=Ø×#Ñ#Ð #à×%Ñ%Ð %r8©FNF©FN) Ú__name__Ú __module__Ú __qualname__Ú__doc__r§rÚ propertycacher«r¾ÚpropertyrµrÁr8r6r“r“üsk„ñðØ ØØØØóIðV ×Ññ)óð)ð ×ÑñóððBñ&óñ&r8r“supdating bookmark %s supdating bookmark %s failed sexporting bookmark %s sexporting bookmark %s failed sdeleting remote bookmark %s s#deleting remote bookmark %s failed )óupdateóexportódeletec ó2—|€i}t|||||||fitj|«¤Ž}|jj «r�t |j j«|jj «jz } | r;td«djt| ««z} tj| «‚|jj«stjtd««‚|jjd«stjtd««‚tt!j"|j««D]j} |j$j'«D]\} } | j)| «sŒŒ7tjtd«tj*| «z«‚dx}} |j,j/dd «}t1|«s1|r/t3j4|«s|j j7«}|j j9«}t;|j d |jj=««|_|xstIjJ«5|xstIjJ«5|j>xstIjJ«5|j jM|«tO|«tQ|«|jRs tU|«t1|«s tW|«tY|«t[|«t]|«t_|«ddd«ddd«ddd«|j,j/dd «rtajb||«|S#tj@$r>}d tCjD|«z} |j,jG| «Yd}~�Œwd}~wwxYw#1swYŒ¡xYw#1swYŒ¥xYw#1swYŒ©xYw) aWPush outgoing changesets (limited by revs) from a local repository to remote. Return an integer: - None means nothing to push - 0 means HTTP error - 1 means we pushed and remote head count is unchanged *or* we have outgoing changesets but refused to push - other values as described by addchangegroup() Nó:required features are not supported in the destination: %só, s!destination does not support pushóunbundlesLcannot push: destination does not support the unbundle wire protocol commandsJcannot push: required sidedata category not supported by this client: '%s'rqóbundle2.pushbacks push-responses"cannot lock source repository: %s ó remotenames)2r“rÚ strkwargsrzÚlocalr˜rkrÚ supportedrr)r;r r*Úcanpushr�rÚread_remote_wanted_sidedataÚ_sidedata_computersr<r{Úbytestrr.Ú configboolr‘ÚbookmodÚbookmarksinstoreÚwlockr Útransactionmanagerrr£ÚLockUnavailablerÚ forcebytestrÚdebugrÚnullcontextmanagerÚ checkpushr‡Ú_pushdiscoveryr–Ú_checksubrepostateÚ _pushbundle2Ú_pushchangesetÚ_pushsyncphaseÚ _pushobsoleteÚ _pushbookmarkrÚpullremotenames)rkrzr–r|r—rrxÚopargsr‚r¹r†ÚcategoryÚkindÚ computersrÛr Ú maypushbackÚerrs r6Úpushrð‘si€ð$€~ØˆÜ Ø ØØ Ø ØØØñ ô × Ñ ˜VÓ $ñ €Fð‡}�}×ÑÔä �— ‘ ×(Ñ(Ó )¨F¯M©M×,?Ñ,?Ó,A×,KÑ,KÑ Kð ñ Üðóð—‘œF 7›OÓ,ñ .ˆCô —+‘+˜cÓ"Ð "à �=‰=× Ñ Ô "Ü�k‰kœ!Ð@ÓAÓBÐBà �=‰=× Ñ  Ô -Ü�k‰kÜ ð2ó ó ð ô œ7×>Ñ>¸v¿}¹}ÓMÖNˆð $×7Ñ7×=Ñ=Ö?‰OˆD�)Ø�}‰}˜XÕ&Ùð @ô—+‘+Üð-óô×"Ñ" 8Ó,ñ -óð ðOðЀEˆDðð—i‘i×*Ñ*¨?Ðó ˆÔð Ò +”$×)Ñ)Ó+Ñ +Ø Ò .”T×,Ñ,Ó.Ñ .Ø×!Ñ!Ò>¤T×%<Ñ%<Ó%>Ñ>Ø— ‘ ×%Ñ% fÔ-ܘfÔ%ܘvÔ&Ø—|’|Ü& vÔ.Ü$ VÔ,Ü  Ô(ܘvÔ&ܘvÔ&ܘfÔ%ܘfÔ%÷?÷/÷ ,ð ‡w�w×ј/¨>Ô:Ü×#Ñ# D¨&Ô1à €Møô7 × Ñ òð5´z×7NÑ7NØ ó8 ñ ˆð � ‰ �‰˜×Òûðú÷?Ð>ú÷/Ð .ú÷ ,Ð +úsVÇB&N!ÊP Ê'#PË B O5ÍPÍP Î!O2Î43O-Ï-O2Ï5O> Ï:PÐP ÐP Ð Pcó‡—ˆfd„}|S)a|decorator for function performing discovery before push The function is added to the step -> function mapping and appended to the list of steps. Beware that decorated function will be added in order (this may matter). You can only use this decorator for a new step, if you want to wrap a step from an extension, change the pushdiscovery dictionary directly.cóX•—‰tvsJ‚|t‰<tj‰«|Sr•)ÚpushdiscoverymappingÚpushdiscoveryorderr?©ÚfuncÚstepnames €r6Údeczpushdiscovery..decó0ø€ØÔ3Ñ3Ð3Ð3Ø)-Ô˜XÑ&Ü×!Ñ! (Ô+؈ r8rÁ©r÷røs` r6Ú pushdiscoveryrû óø€ôð €Jr8có<—tD]}t|}||«Œy©zRun all discovery stepsN)rôró)r‚r÷Ústeps r6rârâó€ç&ˆÜ# HÑ-ˆÙ ˆV� ñ'r8cóŒ—|j}t|jd««rt|jd««sy|jjD]j}||}d|j «vsŒd|j «vsŒ.t|j«D]%}|j|«}|jd¬«Œ'Œly)zDEnsure all outgoing referenced subrepo revisions are present locallys.hgsubs .hgsubstateNT)Úonpush) rkrÚfilerjr¹ÚmanifestÚfilesr;ÚsubstateÚsubÚverify)r‚rkrnÚctxÚsubpathrs r6rãrã$sš€ð �;‰;€Dô ˆt�y‰y˜Ó#Ô $¬C°· ± ¸.Ó0IÔ,JØà �_‰_× $Ô $ˆØ�1‰gˆà ˜Ÿ ™ ›Ò &¨>¸S¿Y¹Y»[Ò+HÜ! #§,¡,Ö/�Ø—g‘g˜gÓ&�Ø— ‘  $� Õ'ñ0ñ %r8s changesetcó¸—tj}|jr5||j|j|j |j¬«}n)||j|j|j ¬«}|\}}}tj }||j|j|j||j ¬«}||_||_||_ y)z-discover the changeset that need to be pushed)r–r©)r–)Ú onlyheadsÚ commonincr–N) r Úfindcommonincomingr|rkrzr–Úfindcommonoutgoingrjrœrž)r‚Úfcir rlÚincrœÚfcorjs r6Ú_pushdiscoverychangesetr7s°€ô × &Ñ &€CØ ‡{‚{ÙØ �K‰KØ �M‰MØ—,‘,ØŸ ™ ô  ‰ ñ˜Ÿ ™  V§]¡]¸&¿,¹,ÔGˆ Ø(Ñ€FˆC�Ü × &Ñ &€CÙØ� ‰ Ø� ‰ Ø—+‘+ØØ�l‰lô €Hð€F„OØ$€FÔØ€F…Or8sphasecóä—|j}|jj«}t|jd«}|j j dd«r9|r7|jjs!|jdd«rg|_ g|_ ytj|j|j|«|_|jj}d}|jj sd}d |z}t#|j%|||j««}|jj s3|j&r't#|j%d |j(|««}nx|js|}nit#|j%d |j|««} | D� cgc]} | j+«‘Œ} } t#|j%|| |j(««}||_ ||_ ycc} w) zpdiscover the phase that needs to be pushed (computed for both success and failure case for changesets push)ruóuió_usedassubreporvFNr8s and public()sheads((%%ln::%%ln) %s)s%ln and (not public() or %ln::)sroots(%ln + %ln::))rjrkr¶ryrzr.rØr¹r{rŸr rÚremotephasessummaryr¾r„Ú draftrootsÚ publishingÚlistr˜rxr«r¯) r‚rjr»r„ÚdrootsÚ extracondr½ÚfallbackÚfutureÚfdrootsÚfs r6Ú_pushdiscoveryphaser!Rs­€ð �‰€HØ �;‰;× !Ñ !Ó #€DܘFŸM™M¨9Ó5€Lð � ‰ ×јUÐ$5Ô6Ù Ø—‘×'Ò'Ø × Ñ ˜]¨EÔ 2ð!#ˆÔØ(*ˆÔ%Øä ×4Ñ4Ø� ‰ �V×)Ñ)¨<ó€FÔð× Ñ × +Ñ +€Fà€IØ × Ñ × )Ò )Ø$ˆ Ø &¨Ñ 2€Fô�D—H‘H˜V V¨V×-AÑ-AÓBÓC€HØ × Ñ × )Ò )¨f¯nªnÜØ �H‰HØ2°F×4FÑ4FÈó ó ‰ð × Ò Ø‰ô Ø �H‰HÐ+¨X×-=Ñ-=¸vÓ Fó ˆñ&-Ó-¡W �1—6‘6•8 WˆÐ-Ü�d—h‘h˜v w°×0BÑ0BÓCÓDˆØ"€FÔØ$,€FÕ!ùò.sÆG-s obsmarkercót—tj|jtj«sy|jjsydt |j d«vry|j}d„|jd|j«D«}|jjj|«|_ y)Nóobsoletes namespacesc3ó<K—|]}|j«–—Œy­wr•r®r°s r6r³z+_pushdiscoveryobsmarkers..Ÿsèø€Ð FÑE˜!ˆQ�V‰V�XÑEùr´ó::%ln) rÚ isenabledrkÚ exchangeoptÚobsstoreryrzr˜r«Úrelevantmarkersr¡)r‚rkÚnodess r6Ú_pushdiscoveryobsmarkersr+‘s‰€ä × Ñ ˜fŸk™k¬8×+?Ñ+?Ô @Øà �;‰;× Ò Øàœ( 6§=¡=°-Ó@Ñ@Øà �;‰;€Dñ G˜tŸx™x¨°&×2DÑ2DÔEÓ F€EØ!Ÿ;™;×/Ñ/×?Ñ?ÀÓF€FÕr8ó bookmarkscóR—|j}|jj«}|j}|j d«d}|j rQt j|jj|j «}|jj|d¬«}tjt|d««}|jD�chc]}|jj!|«’Œ}}tj"||j|«} t%||||| «Scc}w)Nschecking for updated bookmarks rÁT)Ú inclusiver,)r.rkr¶rzrßr|rÚmaplistrfr¸Ú ancestorsrÙÚunhexlifybookmarksryrÚ _bookmarksÚ expandnameÚcomparebookmarksÚ_processcompared) r‚r.rkrzr0ÚrevnumsÚremotebookmarkÚbookmarkÚexplicitr^s r6Ú_pushdiscoverybookmarksr:£sö€à �‰€BØ �;‰;× !Ñ !Ó #€DØ �]‰]€F؇H�HÐ 0Ô1Ø€IØ ‡{‚{Ü×"Ñ" 4§>¡>×#5Ñ#5°v·{±{ÓCˆØ—N‘N×,Ñ,¨WÀÐ,ÓEˆ ä×/Ñ/´¸ÀÓ0NÓO€Nð>D×=MÒ=MóÙ=M°ˆ�‰×"Ñ" 8Õ,Ð=Mð ðô × #Ñ # D¨$¯/©/¸>Ó J€DÜ ˜F I¨x¸ÈÓ NÐNùò sÃ"D$có—|\}}}}} } } } |j} |D]Q\}}}||vr|j|«|r| |j«|vsŒ4|jj |||f«ŒS|D]~\}}}||vsŒ |j|«t j |«r/|jjtd«|z«d|_ Œa|jj |d|f«Œ€t|«t| «zt| «zD]:\}}}||vsŒ |j|«|jj |||f«Œ<|D]:\}}}||vsŒ |j|«|jj ||df«Œ<| D]\}}}||vsŒ |j|«Œ|rbookmark %s does not exist on the local or remote repository! rN)rkÚremover¸r¢r?rÙÚ isdivergentr.r~rr›rr;Úsort)r‚Úpushedr9Ú remotebmsr^ÚaddsrcÚadddstÚadvsrcÚadvdstÚdivergeÚdifferÚinvalidÚsamerkr]ÚscidÚdcids r6r5r5¸sõ€ð FJÑB€FˆF�F˜F G¨V°W¸dà �;‰;€D㉠ˆˆ4�Ø �‰=Ø �O‰O˜AÔ Ù˜˜d™Ÿ™Ó)¨VÒ3Ø × Ñ × &Ñ &¨¨4° Õ 7ð  ó  ‰ ˆˆ4�Ø �Š=Ø �O‰O˜AÔ Ü×"Ñ" 1Ô%Ø— ‘ —‘œqÐ!HÓIÈAÑMÔNØ"#�•à×#Ñ#×*Ñ*¨A¨s°D¨>Õ:ð ô˜f›¬¨W« Ñ5¼¸V» ÔD‰ ˆˆ4�Ø �Š=Ø �O‰O˜AÔ Ø × Ñ × &Ñ &¨¨4° Õ 7ðEó  ‰ ˆˆ4�Ø �Š=Ø �O‰O˜AÔ à × Ñ × &Ñ &¨¨4° ~Õ 6ð  ó ‰ ˆˆ4�Ø �Š=Ø �O‰O˜AÕ ðñܘ(Ó#ˆà� ‰ �‰Ü ð+ó ð�q‰kñ  ô ðˆŒà ×Ñ×ÑÕr8cón—|j}|jj«}|js,t j |j ||j«y|jsË|jrªtd«}td«}td«}td«||dœ}|jD]k}||}|j«rtj||z«‚|j«sŒAtj||j!«d|z«‚t#j$|«y) NFs%push includes obsolete changeset: %s!s,push includes phase-divergent changeset: %s!s.push includes content-divergent changeset: %s!s#push includes orphan changeset: %s!)sorphansphase-divergentscontent-divergentrT)rjrkr¶r¹rÚnochangesfoundr.Úexcludedr–r(rr©rr r*Ú isunstableÚ instabilitiesr Ú checkheads) r‚rjr»ÚmsoÚmspdÚmscdÚmstr¯r s r6Ú_pushcheckoutgoingrUîs €Ø�‰€HØ �;‰;× !Ñ !Ó #€DØ × Ò ä×јtŸw™w¨¨h×.?Ñ.?Ô@Øà �<Š<ð �=Š=äÐ<Ó=ˆCÜÐDÓEˆDÜÐFÓGˆDäÐCÓDØ$(Ø&*ñˆCð!×,Ô,�ؘ4‘j�Ø—<‘<”>ÜŸ+™+ c¨C¡iÓ0Ð0Ø—^‘^Õ%ô Ÿ+™+ c¨#×*;Ñ*;Ó*=¸aÑ*@Ñ&AÀCÑ&GÓHÐHð-ô ×јVÔ$Ø r8c󇇗ˆˆfd„}|S)awdecorator for function generating bundle2 part The function is added to the step -> function mapping and appended to the list of steps. Beware that decorated functions will be added in order (this may matter). You can only use this decorator for new steps, if you want to wrap a step from an extension, attack the b2partsgenmapping dictionary directly.c󌕗‰tvsJ‚|t‰<‰€tj‰«|Stj‰‰«|Sr•)Úb2partsgenmappingÚb2partsgenorderr?Úinsert©röÚidxr÷s €€r6røzb2partsgenerator..dec'sNø€ØÔ0Ñ0Ð0Ð0Ø&*Ô˜(Ñ#Ø ˆ;Ü × "Ñ " 8Ô ,ðˆ ô × "Ñ " 3¨Ô 1؈ r8rÁ©r÷r\røs`` r6Úb2partsgeneratorr^óù€õð €Jr8có—|jsü|jjråd|jj dd«v}|j du}|r|r'|j dt|j«¬«yt«}|j j«D]<\}}|\}}} } |€Œt|«} |t| «| zz}|| t|«z z}Œ>|r(tt|««} |j d| ¬«yyyy)zdGenerate race condition checking parts Exists as an independent function to aid extensions srelateds checkheadsrÁNs check:heads©Údatascheck:updated-heads) r–rjr©Ú capabilitiesr{r�ÚnewpartÚiterrœr˜r<r;) r‚ÚbundlerÚallowunrelatedÚ emptyremoteÚaffectedÚbranchrirœÚnewheadsÚ unsyncedheadsÚdiscardedheadsrzrbs r6Ú_pushb2ctxcheckheadsrn3s€ð �<Š<˜FŸO™O×7Ò7Ø# w×';Ñ';×'?Ñ'?Ø ˜2ó( ð ˆð×*Ñ*¨dÐ2ˆ Ù¡Ø �O‰O˜N´°f×6HÑ6HÓ1IˆOÕ Jä“uˆHØ!'×!5Ñ!5×!;Ñ!;Ö!=‘ �˜ØGLÑD� ˜X }°nØÑ*Ü  Ó-�Fؤ NÓ 3°fÑ <Ñ<�HØ ¬¨X«Ñ 6Ñ6‘Hð ">ñ ÜœF 8Ó,Ó-�Ø—‘Ð 6¸T�ÕBðð8ˆrtrd)r‚rfruÚ hasphaseheadsÚpÚchecksÚphaserzs r6Ú_pushb2checkphasesrˆhs €ô �FÔ ˜vŸ|š|ØÜ × Ñ  §¡Ó /€FØ § ¡ ¨9°bÓ 9Ð9€MØ ×ÑÐ&©=ä!'×!1Ò!1Ó2Ñ!1˜A�!�R‘%Ð!1ˆÐ2ØŒv�}‰}Ñ×$Ñ$ V×%8Ñ%8×%DÑ%DÔEØŒv�|‰|Ñ×#Ñ# F×$7Ñ$7×$BÑ$BÔCÜ ˆv�}‰}‹Ô Û�Ø�u‘ ×"Ñ"Õ$ð ä×+Ñ+¨FÓ3ˆIØ �O‰O˜O°)ˆOÕ <ð ð ,9Ð&ùâ2sÁ, Ec󴇇 —d‰jvry‰jjd«t‰«sy‰jj ‰«t ‰|«t j‰j«}d}|jd«}|r[|D�cgc]%}|tj‰j«vr|‘Œ'}}|stjtd««‚t|«}t j ‰j«}tj"‰j‰j$|d||¬«}|j'd|¬«Š |r‰ j)d |«t+j,‰j«r‰ j)d d «t.j0‰jj2vr‰ j)d d «ˆ ˆfd „}|Scc}w)zwhandle changegroup push through bundle2 addchangegroup result is stored in the ``pushop.cgresult`` attribute. ó changesetsNrOrMóno common changegroup versionópush©Ú bundlecapsÚremote_sidedatararNó treemanifestó1ó exp-sidedatacó–•—|jj‰j«}t|d«dk(sJ‚|ddd‰_y)z0extract addchangegroup returns from server replyrMrróreturnN)ÚrecordsÚ getrepliesÚidrrš)rŽÚ cgrepliesÚcgpartr‚s €€r6Ú handlereplyz_pushb2ctx..handlereply©sIø€à—J‘J×)Ñ)¨&¯)©)Ó4ˆ Ü�9˜^Ñ,Ó-°Ò2Ð2Ð2Ø# NÑ3°AÑ6°yÑAˆ�r8)r™ÚaddrUrkÚprepushoutgoinghooksrnrrsrzr{r Úsupportedoutgoingversionsr r*rÚmaxrÕÚ makestreamrjrdÚaddparamrÚistreemanifestrÚREPO_FEATURE_SIDE_DATAÚfeatures) r‚rfrur5Ú cgversionsÚvr�Úcgstreamršr™s ` @r6Ú _pushb2ctxr§{s”ù€ð ˜×(Ñ(Ñ(ØØ ×Ñ×јÔ'ä ˜fÔ %ØØ ‡K�K×$Ñ$ VÔ,䘠Ô)ä × Ñ  §¡Ó /€FØ€GØ—‘˜NÓ+€JÙñ ó á�Ø”K×9Ñ9¸&¿+¹+ÓFÑFò Øð ð ñ Ü—+‘+œaÐ @ÓAÓBÐ BÜ�j“/ˆä×9Ñ9¸&¿-¹-ÓH€OÜ×%Ñ%Ø� ‰ Ø�‰ØØØØ'ô €Hð�_‰_˜^°(ˆ_Ó ;€FÙØ�‰˜  GÔ,Ü×јfŸk™kÔ*Ø�‰˜¨Ô.Ü×(Ñ(¨F¯K©K×,@Ñ,@Ñ@Ø�‰˜¨Ô.õBð ÐùòA sÂ*Gcó —d|jvrytj|j«}|jj }d|j dd«v}d|v}d|jdd«v}|r|s t||«S|r t||«Sy)z!handle phase push through bundle2ruNr‰rŠópushkeyr}rÁ) r™rrsrzrkr.rŒr{Ú_pushb2phaseheadsÚ_pushb2phasespushkey)r‚rfrur.Ú legacyphaseÚ haspushkeyr„s r6Ú _pushb2phasesr®²s’€ð�F×$Ñ$Ñ$ØÜ × Ñ  §¡Ó /€FØ �‰�‰€Bà˜rŸ}™}¨XÐ7IÓJÐJ€KؘvÐ%€JØ § ¡ ¨9°bÓ 9Ð9€Má™[Ü  ¨Ó1Ð1Ù Ü# F¨GÓ4Ð4ð r8có4—|jjd«|jrltjD�cic]}|g“Œ}}|dj d„|jD««tj |«}|jd|¬«yycc}w)z6push phase information through a bundle2 - binary partrurc3ó<K—|]}|j«–—Œy­wr•r®)r±Úhs r6r³z$_pushb2phaseheads..Ésèø€ÐBÑ,A q˜!Ÿ&™&Ÿ(Ñ,Aùr´ó phase-headsraN)r™r›rŸrr~rºrtrd)r‚rfr…ÚupdatesÚ phasedatas r6rªrªÄs…€à ×Ñ×јÔ#Ø ×ÒÜ"(×"2Ò"2Ó3Ñ"2˜Q�1�b‘5Ð"2ˆÐ3Ø�‰ ×ÑÑB¨F×,AÒ,AÓBÔBÜ×'Ñ'¨Ó0ˆ Ø�‰˜¨YˆÕ7ð ùÚ3sº BcóJ‡‡—‰jjd«gŠˆfd„}tj}‰jD]Ù}|j d«}|j d|d««|j d||j«««|j d|dtjz««|j d|dtjz««‰j|j|f«|‰j|j<ŒÛˆˆfd „}|S) z7push phase information through a bundle2 - pushkey partrucó�•—t|j«}‰D]+\}}||k(sŒ tjt d«|z«‚y)Nsupdating %s to public failed)ÚintÚpartidr r*r)r‚ÚexcÚtargetidr¸r¯Ú part2nodes €r6Ú handlefailurez+_pushb2phasespushkey..handlefailureÓs@ø€Ü�s—z‘z“?ˆÛ%‰LˆF�DؘÓ!Ü—k‘k¤!Ð$CÓ"DÀtÑ"KÓLÐLñ&r8r©ó namespaceókeyóoldó%dónewcó•—‰D]…\}}|jj|«}|d}t|«dksJ‚d}|std«|z}nt |dd«std«|z}|€Œk‰j j |«Œ‡y)Nr©rs'server ignored update of %s to public! rr”óupdating %s to public failed! )r•r–rrr·r.r~)rŽr¸r¯ÚpartrepÚresultsr†r»r‚s €€r6ršz)_pushb2phasespushkey..handlereplyãs�ø€Û%‰LˆF�DØ—j‘j×+Ñ+¨FÓ3ˆGؘjÑ)ˆGÜ�w“< 1Ò$Ð $Ð$؈CÙÜÐCÓDÀtÑK‘ܘ ™ IÑ.Ô/ÜÐ:Ó;¸dÑB�؉ؗ ‘ —‘˜sÕ#ñ&r8)r™r›rÚencoderŸrdr rrr�rr?r—r¤)r‚rfr¼ÚencÚ newremoteheadr_ršr»s` @r6r«r«Îsçù€à ×Ñ×јÔ#Ø€IôMô �.‰.€CØ×.Ô.ˆ Ø�‰˜zÓ*ˆØ � ‰ �l¡C¨ £NÔ3Ø � ‰ �f™c -×"3Ñ"3Ó"5Ó6Ô7Ø � ‰ �f™c %¬&¯,©,Ñ"6Ó7Ô8Ø � ‰ �f™c %¬&¯-©-Ñ"7Ó8Ô9Ø×ј$Ÿ'™' =Ð1Ô2Ø#0ˆ�‰˜Ÿ™Ò ð/õ $ð Ðr8rRcóF—d|jvrytj|j«}t j |«€y|jj d«|jr6tj|j«}tj||«yy)NrR) r™rÚobsmarkersversionrcrÚ commonversionr›r¡rÚ sortedmarkersÚbuildobsmarkerspart)r‚rfÚremoteversionsÚmarkerss r6Ú_pushb2obsmarkersrÐós…€à˜×(Ñ(Ñ(ØÜ×.Ñ.¨w×/CÑ/CÓD€NÜ×јnÓ-Ð5ØØ ×Ñ×јÔ'Ø ×ÒÜ×'Ñ'¨×(<Ñ(<Ó=ˆÜ×#Ñ# G¨WÕ5ðr8cóø—d|jvrytj|j«}|jj j dd«}d|v}|sd|vr t||«Sd|vr t||«Sy)z$handle bookmark push through bundle2r,Nr‰rŠr©) r™rrsrzrkr.rŒÚ_pushb2bookmarkspartÚ_pushb2bookmarkspushkey)r‚rfruÚlegacyÚ legacybookss r6Ú_pushb2bookmarksrÖs€ð�v×'Ñ'Ñ'ØÜ × Ñ  §¡Ó /€Fà �[‰[�^‰^× &Ñ & xÐ1CÓ D€FØ &Ð(€Ká ˜<¨6Ñ1Ü# F¨GÓ4Ð4Ø �vÑ Ü& v¨wÓ7Ð7ð r8có—|sy|syy)z"small utility for bookmark pushingrÉrÊrÈrÁ)rxrys r6Ú _bmactionrØs€á ØÙ ØØ r8có¨—|rP|j|j«tjk(r!t j t d«|z«‚yy)z6abort if a given bookmark points to a secret changesets:cannot push bookmark %s as it points to a secret changesetN)rkr‡rÚsecretr r*r)r‚r¯r]s r6Ú_abortonsecretctxrÛsH€á �— ‘ ˜DÑ!×'Ñ'Ó)¬V¯]©]Ò:Ü�k‰kÜ ÐKÓ LÈqÑ Pó ð ð;€tr8cóx‡‡—‰jjd«‰jsygŠg}‰jD]C\}}}t‰||«|j ||f«‰j |t ||«f«ŒEt j‰j|«}|jd|¬«ˆˆfd„}|S)Nr,racón•—‰j}‰D]#\}}|jt|d|z«Œ%yrG)r.ÚstatusÚ bookmsgmap)rŽr.rwÚactionÚ allactionsr‚s €€r6ršz)_pushb2bookmarkspart..handlereply/s5ø€Ø �Y‰Yˆã&‰LˆD�&Ø �I‰I”j Ñ(¨Ñ+¨dÑ2Õ 3ñ'r8) r™r›r¢rÛr?rØrÙrtrkrd) r‚rfrbrwrxryrzršrás ` @r6rÒrÒ!s®ù€Ø ×Ñ×јÔ&Ø × Ò Øà€JØ €DØ ×-Ô-‰ˆˆc�3ܘ& # tÔ,Ø � ‰ �T˜3�KÔ Ø×ј4¤¨3°Ó!4Ð5Õ6ð.ô×$Ñ$ V§[¡[°$Ó7€IØ ‡O�O�L y€OÔ1õ4ð Ðr8c óH‡‡ —‰jjd«gŠ tj}ˆ fd„}‰jD]Ø\}}}t ‰||«|j d«}|jd|d««|jd||««|jd|t|«««|jd|t|«««d}|sd }n|sd }‰ j|j||f«|‰j|j<ŒÚˆ ˆfd „} | S) Nr,c󲕗t|j«}‰D];\}}}||k(sŒ tjt|dj «|z«‚J‚)Nr)r·r¸r r*rßÚrstrip)r‚r¹rºr¸rwràÚ part2books €r6r¼z._pushb2bookmarkspushkey..handlefailure=sWø€Ü�s—z‘z“?ˆÛ$-Ñ ˆF�D˜&ؘÓ!Ü—k‘k¤*¨VÑ"4°QÑ"7×">Ñ">Ó"@À4Ñ"GÓHÐHð%.ð ˆur8r©r½r¾r¿rÁrÈrÉrÊcó°•—‰ j}‰D]Ä\}}}|jj|«}|d}t|«dksJ‚|s(‰ jj t d«|z«Œat |dd«}|r|jt|d|z«Œ“|j t|d|z«‰ j€Œ¾d‰ _ ŒÆy)Nr©rs"server ignored bookmark %s update rr”) r.r•r–rr~rr·rÞrßr›) rŽr.r¸rwràrÄrÅÚretrår‚s €€r6ršz,_pushb2bookmarkspushkey..handlereplyTsÈø€Ø �Y‰YˆÛ$-Ñ ˆF�D˜&Ø—j‘j×+Ñ+¨FÓ3ˆGؘjÑ)ˆGÜ�w“< 1Ò$Ð $Ð$ÙØ— ‘ —‘œqÐ!GÓHÈ4ÑOÕPä˜' !™* YÑ/Ó0�ÙØ—I‘Iœj¨Ñ0°Ñ3°dÑ:Õ;à—G‘GœJ vÑ.¨qÑ1°DÑ8Ô9Ø—‘Ñ2Ø*+˜�ñ%.r8) r™r›rrÆr¢rÛrdr rr?r—r¤) r‚rfrÇr¼rwrxryr_ràršrås ` @r6rÓrÓ8súù€Ø ×Ñ×јÔ&Ø€IÜ �.‰.€Côð!×-Ô-‰ˆˆc�3ܘ& # tÔ,Ø�‰˜zÓ*ˆØ � ‰ �l¡C¨ Ó$5Ô6Ø � ‰ �f™c $›iÔ(Ø � ‰ �f™c¤# c£(›mÔ,Ø � ‰ �f™c¤# c£(›mÔ,ØˆÙØ‰FÙØˆFØ×ј$Ÿ'™' 4¨Ð0Ô1Ø#0ˆ�‰˜Ÿ™Ò ð.õ,ð" Ðr8ópushvars)r\có—|j}|ri}|D]:}d|vrd}tj||z«‚|jdd«\}}|||<Œ<|j d«}|j «D]\} } |j | | d¬«Œyy)zsend shellvars via bundle2ó=sIunable to parse variable '%s', should follow 'KEY=VALUE' or 'KEY=' formatrrèF©r[N)r¥r r*rYrdr<r ) r‚rfr¥Ú shellvarsÚrawr†Úkr¥r_rBrCs r6Ú_getbundlesendvarsrïhsž€ð�‰€HÙØˆ ÛˆCؘ3‰ð4ðô—k‘k #¨¡)Ó,Ð,Ø—9‘9˜T 1Ó%‰DˆAˆq؈I�aŠLðð�‰˜{Ó+ˆà#Ÿ/™/Ö+‰JˆC�Ø �M‰M˜#˜u°ˆMÕ 6ñ,ðr8có¨—tj|jtj|j««}|j xr|jj dd«}tjtj|j|d¬««}|jd|¬«g}tD]1}t|}|||«}t|«sŒ!|j|«Œ3|jdkryt!j"|j%««} |jj'«5} | j)d |d g|jj+«d œ«j-«} ddd« d} |r|j j6} tj8|j | |j¬ «} |D] }| «Œ y#1swYŒbxYw#t.j0$r&} t/j2t5d «| z«‚d} ~ wwxYw#t.j0$r&} t/j2t5d «| z«‚d} ~ wtj:$rŠ} |jj/t5d«| z«| j<�4|jj/t5d«d| j<zz«t/j2t5d««‚d} ~ wwxYw#t.j>$rE} tA| jB«}||jDvr‚|jD||| «Yd} ~ �Œ‚d} ~ wwxYw)z‹push data to the remote using bundle2 The only currently supported type of data is changegroup but this will evolve in the future.rqrÏóclient)Ú allowpushbackÚroles replycapsrarNrÎóforce)sbundler}óurlómissing support for %s©rzs remote: %s s(%s)spush failed on remote)#rÚbundle20r.rsrzr£rØÚ encodecapsÚ getrepocapsrkrdrYrXÚcallabler?ÚnbpartsrÚ chunkbufferÚ getchunksÚcommandexecutorÚ callcommandrÚresultr ÚBundleValueErrorÚ RemoteErrorrÚ transactionÚ processbundleÚ AbortFromPartrQÚ PushkeyFailedr·r¸r¤)r‚rfÚpushbackÚcapsblobÚ replyhandlersÚ partgennameÚpartgenrçÚstreamÚeÚreplyr¹ÚtrgetterrŽr¸Úrephands r6rärä~sÍ€ô ×јvŸy™y¬'×*=Ñ*=¸f¿m¹mÓ*LÓM€GØ×Ñò F§I¡I×$8Ñ$8ØÐ,ó%€Hô ×!Ñ!Ü×јFŸK™K°xÀiÔPó€Hð ‡O�O�L x€OÔ0Ø€Mß&ˆ Ü# KÑ0ˆÙ�f˜gÓ&ˆÜ �C�=Ø × Ñ  Õ %ð 'ð ‡�˜!ÒØÜ × Ñ ˜g×/Ñ/Ó1Ó 2€Fð"-ð HØ—‘×.Ñ.Ô0°AØŸ ™ Øà#)Ø#+ *Ø &§ ¡ × 1Ñ 1Ó 3ñó÷‘&“(ð÷1ð A؈HÙØ!×+Ñ+×7Ñ7�Ü×&Ñ&Ø— ‘ ØØØ—}‘}ô ‰Bó$!ˆÙ�� ñ!÷C1Ð0ûô×%Ñ%ò HÜ×#Ñ#¤AÐ&?Ó$@À3Ñ$FÓGÐ Gûð Hûô×%Ñ%ò HÜ×#Ñ#¤AÐ&?Ó$@À3Ñ$FÓGÐ GûÜ×$Ñ$ò AØ �I‰I�O‰OœA˜oÓ.°Ñ4Ô 5Ø�x‰xÐ#Ø— ‘ —‘¤ /Ó 2°gÀÇÁÑ6HÑ IÔJÜ×#Ñ#¤AÐ&>Ó$?Ó@Ð @ûð  Aûô × Ñ ò-Ü�S—Z‘Z“ˆØ ˜Ÿ™Ñ (Ø Øˆ�‰˜Ñ ¨×,Ò,ûð -ústÄ!G&Ä;>GÅ9G&ÆAH"ÇG#ÇG&Ç&HÇ9!HÈHÈK9È"K6È5!IÉK6É,BK1Ë1K6Ë6K9Ë9MÌ :M Í Mcó¬—d|jvry|jjd«t|«sy|jj d«sJ‚|j j |«|j}d}|j€R|jsF|j jjs&tj|j |ddd|¬«}n$tj|j |dd|¬«}|jrd g}n |j}|jj!|||j j#««|_y) z7Make the actual push of changeset bundle to remote reporŠNrÎrOrŒT)ÚfastpathrŽ©rŽrô)r™r›rUrzr�rkrœrjr|rMrfÚ filteredrevsr Úmakechangegroupr–rœÚunbundlerrš)r‚rjrŽÚcgrœs r6rårå¾s€à˜×(Ñ(Ñ(ØØ ×Ñ×јÔ'Ü ˜fÔ %Øð �=‰=× Ñ  Ô -Ð-Ð -à ‡K�K×$Ñ$ VÔ,Ø�‰€Hà€Jà ‡{�{ÐØ×Ò˜VŸ[™[×2Ñ2×?Ò?ô× (Ñ (Ø �K‰KØ Ø Ø ØØ!ô  ‰ô× (Ñ (Ø �K‰K˜ 5¨'¸jô ˆð‡|‚|Ø�j‰ à×(Ñ(ˆ ð—m‘m×,Ñ,¨R°¸f¿k¹k¿o¹oÓ>OÓP€F…Or8c ó—|j}t|jd«}|jj dd«r$|r"|j €|j dd«rddi}|s t||«ytj|j||«}|\}}|j dd«r t||«n't||«t||tj«|j rd|jvry|j}n |j}|jjd«|D�cgc]}|j!«|vsŒ|‘Œ}}|D]¤}|jj#«5} | j%dd|j'«d tjzd tj(zd œ«j+«} ddd« rŒ~|jj-t/d «|z«Œ¦ycc}w#1swYŒ;xYw) z2synchronise phase information locally and remotelyrurrNrvFsTruer©rÀ©r½r¾r¿rÁrÃ)rµryrzr.rØršr{Ú_localphasemoverÚanalyzeremotephasesrkr�r™rŸr r›r¯rÿrrrrr~r) r‚r¼r„ÚanaÚpheadsrÚoutdatedr²rÈrÚrs r6ræræîs€à × Ñ €Fä˜FŸM™M¨9Ó5€Là� ‰ ×јUÐ$5Ô6Ù Ø �O‰OÐ #Ø × Ñ ˜]¨EÔ 2ð& wÐ/ˆ ٠ܘ Õ'ô×(Ñ(¨¯©°f¸lÓKˆØ‰ˆ�à × Ñ ˜M¨5Ô 1Ü ˜F FÕ +ä ˜F FÔ +Ü ˜F F¬F¯L©LÔ 9ð �?Š?ؘF×,Ñ,Ñ,àØ×,Ñ,‰Hà×4Ñ4ˆHà×Ñ×јYÔ'ñ (ÓB™x˜!¨1¯6©6«8¸6Ò+A’A˜xˆÐBã%ˆMØ—‘×.Ñ.Ô0°AØ—M‘MØà&/Ø -× 1Ñ 1Ó 3Ø %¬¯ © Ñ 4Ø %¬¯ © Ñ 5ñ ó÷‘&“(ð÷1òØ— ‘ —‘ÜÐ8Ó9¸MÑIõñ&ùòC÷1Ð0úsÄ1G9Å G9Å.AG>Ç>H cóv—|jr;tj|j|jj «||«y|D�cgc]%}||j|j «ksŒ$|‘Œ'}}tj |}|r(|jjtd«|z«yycc}w)z0move to in the local source repos8cannot lock source repo, skipping local %s phase update N) r£rÚadvanceboundaryrkrr‡Ú phasenamesr.rÞr)r‚r*r‡rnÚ actualmovesÚphasestrs r6rr0sª€à ×ÒÜ×ÑØ �K‰K˜×)Ñ)×5Ñ5Ó7¸Àõ ñ#(ÓJ¡%˜Q¨5°6·;±;¸q±>×3GÑ3GÓ3IÓ+I’q %ˆ ÐJÜ×$Ñ$ UÑ+ˆÙ Ø �I‰I× Ñ Üð/óðñ õ ð ùòKs Á %B6Á2B6c ó6—d|jvry|j}|j}|jjd«|jrÆ|j j d«g}tj|j«}tj|«}t|d¬«D]*}||}|j|jd|d|««Œ,|D�cgc]}|rŒ|‘Œ c}r'td«} |j j| «yyycc}w) z5utility function to push obsolete markers to a remoterRNs'try to push obsolete markers to remote T©Úreverser#r8s&failed to push some obsolete markers! )r™rkrzr›r¡r.rßrrÌrÚ_pushkeyescaper;r?rrr~) r‚rkrzÚrsltsrÏÚ remotedatarBrbr r†s r6rçrçFsó€à˜×(Ñ(Ñ(ØØ �;‰;€DØ �]‰]€FØ ×Ñ×јÔ'Ø ×ÒØ� ‰ �‰ÐCÔD؈Ü×'Ñ'¨×(<Ñ(<Ó=ˆÜ×,Ñ,¨WÓ5ˆ ܘ*¨d×3ˆCà˜c‘?ˆDØ �L‰L˜Ÿ™¨ °S¸#¸tÓDÕ Eð4ñÓ &‘u�!¢AŠA�uÒ &ÜÐ>Ó?ˆCØ �G‰G�L‰L˜Õ ð 'ðùò 's ÃDÃ&Dc óD—|jdk(sd|jvry|jjd«|j}|j}|j D]´\}}}d}|sd}n|sd}|j «5}|jdd|t|«t|«dœ«j«}ddd«r|jt|d|z«Œƒ|jt|d |z«|j€Œ®d |_ Œ¶y#1swYŒ_xYw) z"Update bookmark position on remoterr,NrÈrÉrÊr©rr)ršr™r›r.rzr¢rÿrrrrÞrßr~r›) r‚r.rzr]rxryràrr s r6rèrè[s €à ‡�˜!Ò˜|¨v×/?Ñ/?Ñ?ØØ ×Ñ×јÔ&Ø �‰€BØ �]‰]€Fà×*Ô*‰ ˆˆ3�ØˆÙØ‰FÙØˆFà × #Ñ #Ô %¨Ø— ‘ Øà".ØÜ ›HÜ ›Hñ ó÷‰f‹hð ÷&ñ Ø �I‰I”j Ñ(¨Ñ+¨aÑ/Õ 0à �G‰G”J˜vÑ& qÑ)¨AÑ-Ô .à�‰Ñ*Ø"#�•ñ1+÷&Ð %ús Â8DÄD cóœ—eZdZdZ dd„Zej d„«Zej d„«Zej d„«Z d„Z y) Ú pulloperationzÖA object that represent a single pull operation It purpose is to carry pull related state and very common operation. A new should be created at the beginning of each pull and discarded afterward. Nc óh—||_||_| |_||_|D� cgc]} |jj | «‘Œc} |_||_||_d|_ d|_ d|_ d|_ ||_ d|_t«|_d|_||_| |_| |_ycc} w)NF)rkrzÚ remote_pathrir2r3Úexplicitbookmarksr–Ústreamclonerequestedr£rlÚrheadsÚfetchÚremotebookmarksršr˜r™ÚclonebundleattemptedÚ includepatsÚ excludepatsÚdepth) r¦rkrzrir–rr5r2r7r8r9Úpathr8s r6r§zpulloperation.__init__‡s»€ðˆŒ àˆŒ ð ˆÔàˆŒ ñBKó" ÙAJ°XˆD�O‰O× &Ñ & xÕ 0Àñ" ˆÔðˆŒ à$8ˆÔ!àˆŒàˆŒ àˆŒ àˆŒ à.ˆÔàˆŒ 䛈Œà$)ˆÔ!à&ˆÔà&ˆÔàˆ� ùò9" s¡"B/cóØ—|j€St|j«}t|j«}|jD]}||vsŒ|j |«Œ|S|jS)z0heads of the set of changeset target by the pull)rir˜rlrr3r?)r¦r²rçrns r6Ú pulledsubsetzpulloperation.pulledsubset¾s_€ð �:‰:Ð ô�D—K‘KÓ ˆAÜ�t—{‘{Ó#ˆCØ—[”[�ؘA’:Ø—J‘J˜q•Mð!ðˆJð—:‘:Ð r8có—t|« Sr•)r‘rªs r6Ú canusebundle2zpulloperation.canusebundle2Ðs€ä  Ó&Ð&Ð&r8có@—tj|j«Sr•)rrsrzrªs r6Úremotebundle2capszpulloperation.remotebundle2capsÔs€ä×"Ñ" 4§;¡;Ó/Ð/r8có6—|jj«Sr•)r£rrªs r6Úgettransactionzpulloperation.gettransactionØs€à�~‰~×)Ñ)Ó+Ð+r8) NFrÁNNNNNN) rÂrÃrÄrÅr§rrÆr<r>r@rBrÁr8r6r.r.~s}„ñðØØØØ!ØØØØ ó5ðn ×Ññóðð" ×Ññ'óð'ð ×Ññ0óð0ó,r8r.có(—eZdZdZd„Zd„Zd„Zd„Zy)rÜzŸAn object to manage the life cycle of a transaction It creates the transaction on demand and calls the appropriate hooks when closing the transaction.có<—||_||_||_d|_yr•)rkÚsourcerÚ_tr)r¦rkrErs r6r§ztransactionmanager.__init__ãs€ØˆŒ ؈Œ ؈ŒØˆ�r8cóZ—|js”d|jtj|j«fz}|j j |«|_|j|jjd<|j|jjd<|jS)z.headsofdiffs4ø€à�h‰hÐ+¨R°Ó4ˆÙ&)Ó*¡c˜s�—‘•  cÑ*Ð*ùÒ*ó™3cóp•—‰jd||«}|D�chc]}|j«’Œc}Scc}w)zReturns heads((h1 + h2) - null)sheads((%ln + %ln - null))rUrVs €r6Ú headsofunionz&_fullpullbundle2..headsofunions4ø€à�h‰hÐ3°R¸Ó<ˆÙ&)Ó*¡c˜s�—‘•  cÑ*Ð*ùÒ*r[c3ó@•K—|]}‰j|«–—Œy­wr•)rg)r±rnÚunficls €r6r³z#_fullpullbundle2..%søèø€Ð8©- Qˆv�~‰~˜a× ©-ùsƒ) r¶rfrirÚ _pullbundle2rÚNARROW_REQUIREMENTÚallr3rlr˜) rkÚpulloprZr]Ú old_headsÚclstartÚ new_headsr»r_s @@r6Ú_fullpullbundle2rgsÄù€ð �?‰?Ó €DØ �^‰^€Fô+ô +ð Ø—L‘L“Nˆ Ü�f“+ˆÜ�VÔÜ × *Ñ *¨d×.?Ñ.?Ñ ?ð Ø ”c˜&“kÒ !Ø Ü Ó8¨&¯-ª-Ó8Ô 8Ø Ù § ¡ £° Ó:ˆ Ù$ Y°· ± Ó>ˆŒ ܘFŸM™MÓ*¨V¯]©]Ñ:ˆŒ ð! r8cóà‡—|jj«}tj||dd¬«t j |j ««Šˆfd„}|jd|«y)z†adds a finalize callback to transaction which can be used to show stats to user and confirm the pull before committing transactionópullT)ÚtxnnameÚ as_validatorcóŠ•—‰«}td«}|jj|«rtjd«‚y)Ns+accept incoming changes (yn)?$$ &Yes $$ &Nos user aborted)rr.r€r r*)ÚtrrkÚcmÚreporefs €r6Úpromptz$add_confirm_callback..prompt6s;ø€Ù‹yˆÜ Ð=Ó >ˆØ �7‰7× Ñ  Ô #Ü—+‘+˜oÓ.Ð .ð $r8s900-pull-promptN)r£rrÚregistersummarycallbackÚweakrefÚrefr¶Ú addvalidator)rkrcrmrpros @r6Úadd_confirm_callbackru,s]ø€ð × Ñ × %Ñ %Ó '€BÜ ×#Ñ#Ø ˆb˜'°õô�k‰k˜$Ÿ/™/Ó+Ó,€Gô/ð ‡O�OÐ&¨Õ/r8c óF—|€i}|€| �|xs t«}| xs t«} n|j\}} tj|«tj| «t ||f||||||| | dœt j |«¤Ž} | jj«} | rit| j«| jjz }|r;td«djt|««z}tj |«‚|j"D]j}|j$j'«D]\}}|j)|«sŒŒ7tj*td«t j,|«z«‚t/|d|j1««| _t5j6«}t9j:|«s|j=«}|5|j?«5| j25| s6|j@jCdd«r&|j@jE«s tG|| «tI| «tKjL| «tO| «| jPr tS|| «tU| «tW| «tY| «t[| «ddd«ddd«ddd«|j@jCdd «rt]j^||«| S#1swYŒMxYw#1swYŒQxYw#1swYŒUxYw) aöFetch repository data from a remote. This is the main function used to retrieve data from a remote repository. ``repo`` is the local repository to clone into. ``remote`` is a peer instance. ``heads`` is an iterable of revisions we want to pull. ``None`` (the default) means to pull everything from the remote. ``bookmarks`` is an iterable of bookmarks requesting to be pulled. By default, all remote bookmarks are pulled. ``opargs`` are additional keyword arguments to pass to ``pulloperation`` initialization. ``streamclonerequested`` is a boolean indicating whether a "streaming clone" is requested. A "streaming clone" is essentially a raw file copy of revlogs from the server. This only works when the local repository is empty. The default value of ``None`` means to respect the server configuration for preferring stream clones. ``includepats`` and ``excludepats`` define explicit file patterns to include and exclude in storage, respectively. If not defined, narrow patterns from the repo instance are used, if available. ``depth`` is an integer indicating the DAG depth of history we're interested in. If defined, for each revision specified in ``heads``, we will fetch up to this many of its ancestors and data associated with them. ``confirm`` is a boolean indicating whether the pull should be confirmed before committing the transaction. This overrides HGPLAIN. Returns the ``pulloperation`` created for this pull. N)r:rir–rr2r7r8r9rÌrÍsDsidedata category requested by local side without localsupport: '%s'rirsrqrÐ)0r˜Ú narrowpatsrÚvalidatepatternsr.rrÑrzrÒrrkrÓrr)r;r r*Ú_wanted_sidedatarÖr<r{ÚProgrammingErrorr×rÜrr£rràrÙrÚrÛr r.rØÚplainruÚ_maybeapplyclonebundlerÚmaybeperformlegacystreamcloneÚ_pulldiscoveryr>rgÚ_pullchangesetÚ _pullphaseÚ_pullbookmarksÚ _pullobsoleterré)rkrzr:rir–rrêr2r7r8r9ÚconfirmrcÚ peerlocalr¹r†rërìrírÛs r6Úpullr…?s¢€ðT€~؈ðР+Ð"9Ø!Ò*¤S£Uˆ Ø!Ò*¤S£U‰ à#'§?¡?Ñ ˆ �[ä×Ñ  Ô,Ü×Ñ  Ô,ä Ø Øð ðØØØØ1ØØØñ ô × Ñ ˜VÓ $ñ €Fð— ‘ ×#Ñ#Ó%€IÙÜ�i×,Ñ,Ó-°· ± ×0EÑ0EÑEˆÙ Üðóð—‘œF 7›OÓ,ñ .ˆCô —+‘+˜cÓ"Ð "à×)Ô)ˆð $×7Ñ7×=Ñ=Ö?‰OˆD�)Ø�}‰}˜XÕ&Ùð @ô ×(Ñ(Üð%óô×"Ñ" 8Ó,ñ -óð ð*ô"*¨$°¸¿¹»ÓF€FÔÜ × #Ñ #Ó %€EÜ × #Ñ # DÔ )Ø— ‘ “ ˆÚ �— ‘ • ˜V×-Ó-Ù Ø �G‰G× Ñ ˜w¨ Ô 3¸D¿G¹G¿M¹M¼Oä   vÔ .ô ˜vÔ&Ü×1Ñ1°&Ô9Ü�vÔØ × Ò Ü ˜T 6Ô *Ü�vÔÜ�6ÔÜ�vÔÜ�fÔ÷!.— �ð& ‡w�w×ј/¨>Ô:Ü×#Ñ# D¨&Ô1à €M÷-.Ð-ú— � ú�ˆús=Ç!LÇ2 L Ç?B4K?Ê3L Ê;LË?L ÌL Ì L ÌLÌL có‡—ˆfd„}|S)a|decorator for function performing discovery before pull The function is added to the step -> function mapping and appended to the list of steps. Beware that decorated function will be added in order (this may matter). You can only use this decorator for a new step, if you want to wrap a step from an extension, change the pulldiscovery dictionary directly.cóX•—‰tvsJ‚|t‰<tj‰«|Sr•)ÚpulldiscoverymappingÚpulldiscoveryorderr?rõs €r6røzpulldiscovery..decÑrùr8rÁrús` r6Ú pulldiscoveryrŠÇrür8có<—tD]}t|}||«Œyrþ)r‰rˆ)rcr÷rÿs r6r~r~Úrr8s b1:bookmarkscó´—|j�y|jrd|jvryt|jd«}t j |«|_y)z¬fetch bookmark data in bundle1 case If not using bundle2, we have to fetch bookmarks before changeset discovery to reduce the chance and impact of race conditions.NrQr,)r5r>r@ryrzrÙr1)rcÚbookss r6Ú_pullbookmarkbundle1rŽásQ€ð ×ÑÐ)ØØ ×Ò  ¨v×/GÑ/GÑ Gð Ü �V—]‘] LÓ 1€EÜ$×7Ñ7¸Ó>€FÕr8rMcóà—tj|j|j|j|j ¬«}|\}}}|jj «jjj}|rX|rVt|«}|D]!}||«sŒ ||vsŒ|j|«Œ#t|«jt|««rg}||_ ||_||_y)z~discovery phase for the pull Current handle changeset discovery only, will change handle all discovery at some point.)rir–N)r rrkrzrir–r¶rfr·Úhas_noder˜r?Úissubsetrlr4r3)rcÚtmprlr4r3r�Úscommonrns r6Ú_pulldiscoverychangegroupr”ñsÆ€ô × &Ñ &Ø� ‰ �V—]‘]¨&¯,©,¸f¿l¹lô €Cð Ñ€FˆE�6Ø�{‰{×%Ñ%Ó'×1Ñ1×7Ñ7×@Ñ@€HÙ ‘ô�f“+ˆÛˆAÙ˜�{ؘGÒ#Ø—M‘M !Õ$ðô ˆv‹;× Ñ ¤ F£ Ô ,؈EØ€F„MØ€F„LØ€F…Mr8có† —dt|jd¬«i}|jj}tj|d¬«d}|j |d<|j xs |j|d<|jjtj«}|r|jr|j|d <|r|jr|j|d <|rAd |d <d|d <|jjd«|jjd«n¢|jjd«|j |d <d|j#dd«v}d|j$j'dd«v}|s"|r d|d<|jjd«d|j$vrd|jvrdg|d<d }d|j#dd«v}d|j$v} |j(�|jjd«d|jvr|j(€ |s | rd|d<d}d|j$vrJd|jvr<|jjd«|j+dg«j-d«|jjd«rH|j €«rTtAjB|j$«} t;jD| «� d|d<|jjd«tG||«tAjH|j«} | r| |d<|jjK«5} tM|«} d| d<| jOd | «jQ«} tAjR|j|jTd|j¬!«}d"|jVd<tAjX|j|||j¬#« ddd«|j rtAjd«|_jfdD]\}}|dk(sŒ ti||«Œ|r)i}|jfdD] }|d(||d)<Œ||_n7|jfdD]%\}}|dk(sŒ tkjl|«|_Œ'|j(� to|«yy#t@jZ$r`}|jjj]t7d$«|z«t]j^t7d%«|j`¬&«‚d}~wt\jb$r&}t]j^t7d'«|z«‚d}~wwxYw#1swY�Œ�xYw)*zNpull data using bundle2 For now, the only supported data are changegroup.s bundlecapsrñ©róT)rrócommonr}s includepatss excludepatsFócgr!rMrur‰rŠrÁrQr,Nsrequest-bookmarksó clonebundless cbattemptedsstreaming all changes óno changes found órequesting all changes rRsremote_sidedatarirHó getbundle)rErzsrecords)rŽrzsremote: abort: %s spull failed on remoterPrösnodesbookmark)8Ú caps20to10rkr.rÚcanperformstreamclonerlrir3rzr�rÚ NARROWCAPr7r8r™r›r4rŒr@r{r5Ú setdefaultr?rrhr6rÞrršrr&r'rrÊrËÚ_pullbundle2extrapreparerÕrÿÚdictrrÚbundleoperationrBÚmodesrrr rrQrÚcombinechangegroupresultsr•Ú_pullapplyphasesrÙr1r�)rcÚkwargsr.Ú streamingÚ servernarrowr¬ÚhasbinaryphaseÚbookmarksrequestedÚlegacybookmarkÚ hasbinarybookrÎr�rÚargsÚbundlerŽr¹rRrCr�Úrecords r6r`r`sÇ€ðœZ¨¯ © ¸)ÔDÐ E€Fð �‰�‰€Bô×1Ñ1°&À$ÔGÈÑJ€I🠙 €Fˆ9ÑØ—|‘|Ò4 v§}¡}€Fˆ8Ñð—=‘=×(Ñ(¬×)AÑ)AÓB€LÙ˜×*Ò*Ø!'×!3Ñ!3ˆˆ~ÑÙ˜×*Ò*Ø!'×!3Ñ!3ˆˆ~ÑáØˆˆu‰ Ø ˆˆyÑØ×Ñ×ј^Ô,Ø×Ñ×јYÕ'ð ×Ñ×ј^Ô,àŸ ™ ˆˆu‰ à 2§=¡=°Ð;MÓ#NÐNˆ Ø! V×%=Ñ%=×%AÑ%AÀ)ÈRÓ%PÐPˆÙ™~Ø $ˆF�9Ñ Ø × Ñ × Ñ  Ô +à ˜&×2Ñ2Ñ 2Ø × 0Ñ 0Ñ0Ø'0 k��{Ñ#àÐØ! R§]¡]°8Ð=OÓ%PÐP€NØ  F×$<Ñ$<Ð<€Mà ×ÑÐ)Ø×Ñ×ÑÐ1Ô2ð  F×$4Ñ$4Ñ4Ø × "Ñ "Ð *ÙÙ à#ˆˆ|ÑØ!Ðà�f×.Ñ.Ñ.Ø  v×'7Ñ'7Ñ 7ð × Ñ × Ñ Ð!5Ô 6Ø × Ñ ˜k¨2Ó .× 5Ñ 5°lÔ Cð � ‰ ×јoÔ.Ø �L‰LÐ Ü �—‘Ó  F§K¡K×$6Ñ$6Ð#7Ò 7à!'×!<Ñ!<ˆˆ~ÑáØ� ‰ �‰×ÑœaÐ :Ó;Õ<Ø �\Š\Ø� ‰ �‰×ÑœaÐ 5Ó6Ô7؈�à �<‰<Ð ¤D¨¯©Ó$7¸F¿K¹K×Ó$?ÀcÇhÁhÔOÐ OûÜ×%Ñ%ò HÜ×#Ñ#¤AÐ&?Ó$@À3Ñ$FÓGÐ Gûð Hú÷- )Ñ (ús8Ò1Z6ÓA3X Ø Z3ØAY7Ù7Z3Ú !Z.Ú.Z3Ú3Z6Ú6[có—y)z>hook function so that extensions can extend the getbundle callNrÁ)rcr§s r6r¡r¡§s�r8cóÈ—d|jvry|jjd«|js6|jjj t d««d|_y|j«}|j€\t|j«|jjgk(r/|jjj t d««n8|j€,|jjd«r|j|_ |jjd«rA|jj!d|j|jxs |j¬ «}nñ|j€Q|jj#«5}|j%d|jdd œ«j'«}ddd«n”|jjd«st)j*t d ««‚|jj#«5}|j%d|j|jdd œ«j'«}ddd«t-j.|j|d|jj1«|j¬ «}t-j2|«|_y#1swYŒkxYw#1swYŒwxYw)z0pull changeset from unbundle into the local reporMNršrr›schangegroupsubsetrœri©rlri)snodesrHsWpartial pull cannot be done because other repository doesn't support changegroupsubset.)sbasesr}rHr÷)r™r›r4rkr.rÞrršrBrirrlrhrzr�r3Ú getbundlerÿrrr r*rÚ applybundlerr¥)rcrmrrÚbundleops r6rr«sB€ð ˜×)Ñ)Ñ)ØØ ×Ñ×јÔ(Ø �<Š<Ø� ‰ �‰×ÑœaÐ 5Ó6Ô7؈ŒØØ × Ñ Ó €BØ ‡|�|Ф V§]¡]Ó 3¸¿ ¹ ×8JÑ8JÐ7KÒ KØ� ‰ �‰×ÑœaÐ ;Ó<Õ=Ø �‰Ð  &§-¡-×"7Ñ"7Ð8LÔ"Mà—}‘}ˆŒ à ‡}�}×ј\Ô*à �]‰]× $Ñ $Ø ˜FŸM™M°·±Ò1NÀÇÁð%ó ‰ð �‰Ð Ø �]‰]× *Ñ *Ô ,°Ø—‘Øà$Ÿl™lØ&ñó÷ ‰f‹hð ÷-Ð ,ð�]‰]× "Ñ "Ð#7Ô 8Ü�k‰kÜ ð&ó ó ð ð�]‰]× *Ñ *Ô ,°Ø—‘Ø$à$Ÿl™lØ$Ÿl™lØ&ñó÷‰f‹hð ÷-ô×"Ñ"Ø� ‰ Ø Ø ØØ� ‰ ×ÑÓØ�}‰}ô €Hô×7Ñ7¸ÓA€F…O÷I-Ð ,ú÷$-Ð ,úsÆ.K È)9KË KËK!cóf—d|jvryt|jd«}t||«y)Nru)r™ryrzr¦)rcr„s r6r€r€ës-€à�F×$Ñ$Ñ$ØÜ˜FŸM™M¨9Ó5€LÜ�V˜\Õ*r8c óv—d|jvry|jjd«t|jdd««}|r=|s;t j |j |j|«\}}|j}n|j}g}|j j«}|jj}|jjj}tj} tj} |D� cgc]} |||| ««| kDsŒ| ‘Œ}} |r2|j!«} t j"|j | | |«|D� cgc]} |||| ««| kDsŒ| ‘Œ}} |r3|j!«} t j"|j | | |«yycc} wcc} w)z/apply phase movement from observed remote stateruNrvF)r™r›rpr{rrrkr<r¶Ú _phasecacher‡rfr·Úget_revrr�rBr") rcr„rrÚ_drÚdheadsr»r‡r¸rr�Úpnrms r6r¦r¦ós„€à�F×$Ñ$Ñ$ØØ ×Ñ×јÔ#Ü�l×&Ñ& }°eÓ<Ó=€JÙ™Jä×0Ñ0Ø �K‰K˜×,Ñ,¨ló ‰ ˆ�ð×$Ñ$‰ð×$Ñ$ˆØˆØ �;‰;× !Ñ !Ó #€DØ × Ñ × "Ñ "€EØ �.‰.× Ñ × &Ñ &€CÜ �]‰]€FÜ �L‰L€Eñ"Ó C™6�R¡U¨4±°R³Ó%9¸FÓ%BŠb˜6€FÐ CÙ Ø × "Ñ "Ó $ˆÜ×јvŸ{™{¨B°¸Ô?ñ"Ó B™6�R¡U¨4±°R³Ó%9¸EÓ%AŠb˜6€FÐ BÙ Ø × "Ñ "Ó $ˆÜ×јvŸ{™{¨B°°vÕ>ðùòDùò CsÄF1ÄF1ÅF6Å5F6c ót—d|jvry|jjd«|j}|j}d}|j�|jj }t j|j|||jj«|j|j|¬«y)z?process the remote bookmark information to update the local oner,N)r9Úmode) r™r›rkr5r0Úbookmarks_moderÙÚupdatefromremoter.rzrrBr1)rcrkr5rÀs r6r�r�s�€à�v×'Ñ'Ñ'ØØ ×Ñ×јÔ&Ø �;‰;€DØ×,Ñ,€OØ€NØ ×ÑÐ%Ø×+Ñ+×:Ñ:ˆÜ ×ÑØ �‰Ø ØØ� ‰ ×ÑÓØ×ÑØ×)Ñ)Ø ör8có’—d|jvry|jjd«d}tj|jtj «rì|jj jd«t|jd«}d|vr­|j«}g}t|d¬«D]I}|jd«sŒtj||«}tj|«\}}||z }ŒK|r&|jj j||«|jj#«|S) aVutility function to pull obsolete markers from a remote The `gettransaction` is function that return the pull transaction, creating one if necessary. We return the transaction to inform the calling code that a new transaction have been created (when applicable). Exists mostly to allow overriding for experimentation purposerRNs!fetching remote obsolete markers r#sdump0Tr'sdump)r™r›rr&rkr'r.rßryrzrBr;r'rÚ b85decodeÚ _readmarkersr(Úinvalidatevolatilesets)rcrmÚ remoteobsrÏrBrbr5Únewmarkss r6r‚r‚,s €ð˜×(Ñ(Ñ(ØØ ×Ñ×јÔ'Ø €BÜ×ј&Ÿ+™+¤x×';Ñ';Ô<Ø� ‰ �‰×ÑÐBÔCܘVŸ]™]¨KÓ8ˆ Ø �yÑ Ø×&Ñ&Ó(ˆB؈Gܘi°×6�Ø—>‘> 'Õ*ÜŸ>™>¨)°C©.Ó9�DÜ(0×(=Ñ(=¸dÓ(CÑ%�G˜XؘxÑ'‘Gð 7ñ Ø— ‘ ×$Ñ$×(Ñ(¨¨WÔ5Ø �K‰K× .Ñ .Ô 0Ø €Ir8có~—|j}|j|jjd«xs|j ««}|j t |dz|j t d««}|j t |dz|j t d««}|s'tjtd«t |fz«‚|D�cgc]}|dk(rdnd |z‘Œ}}|D�cgc]}|dk(rdnd |z‘Œ}}t|jd g««}t|jd g««}tj||||«\}}} | r6tjtd «|tj| «fz«‚i} | j|«d | d<d | d<|| d <|r|| d <| Scc}wcc}w)z³Apply narrow fetch access control. This massages the named arguments for getbundle wire protocol commands so requested data is filtered through access control rules. s REMOTE_USERs .includessdefault.includess .excludessdefault.excludess%%s configuration for user %s is emptyó*spath:.spath:r7r8s4The following includes are not accessible for %s: %sTÚnarrowÚ narrow_acl)r.Ú shortuserÚenvironr{ÚusernamerŒÚ_NARROWACL_SECTIONr r*rr˜rÚrestrictpatternsrÚpprintÚupdate) rkr§r.rÎÚ user_includesÚ user_excludesr…Ú req_includesÚ req_excludesÚinvalid_includesÚnew_argss r6ÚapplynarrowaclrÙIsá€ð �‰€Bà�|‰|˜BŸJ™JŸN™N¨>Ó:ÒK¸b¿k¹k»mÓL€HØ—M‘MÜØ�<ÑØ � ‰ Ô(Ð*=Ó>ó€Mð —M‘MÜØ�<ÑØ � ‰ Ô(Ð*=Ó>ó€Mñ Ü�k‰kÜ Ð6Ó 7Ü! 8Ð,ñ -ó ð ñ ;HóÙ:G°Q�Q˜$’Y‰  H¨q¡LÑ0¸-ððñ;HóÙ:G°Q�Q˜$’Y‰  H¨q¡LÑ0¸-ððô�v—z‘z -°Ó4Ó5€LÜ�v—z‘z -°Ó4Ó5€Lä3=×3NÑ3NØ�l M°=ó4Ñ0€L�,Ð 0ñÜ�k‰kÜ ÐEÓ FØœ×*Ñ*Ð+;Ó<Ð=ñ >ó ð ð €HØ ‡O�O�FÔØ€HˆXÑØ!€Hˆ\ÑØ*€Hˆ]ÑÙØ".ˆ�Ñà €Oùò9ùòs ÃF5Ã+F:c 󞇇"‡#‡$—‰j}‰j}|j}|D� chc] } || «’Œ c} thz} |D� chc] } || «’Œ } } |r| D� cic]} | d“Œ} } t j t «}t j t «Š"ˆ"ˆ#ˆ$fd„}ˆ"fd„Š$ˆ"ˆfd„Š#t|j| | ¬««}t|«}t «}|D�cgc]}|j|«‘Œ}}t | «|z}|D�]}|j|«}|j|«D�cgc]}|tk7sŒ |‘Œ}}|�1 |}|D]'}t|dz| j||dz««| |<Œ)d}|duxs ||k}|rÞ||jj!«}|r¥||j|d«jj!«}t#|j%||««}|sst'|«dkDre||j|d«jj!«}t#|j%||««}nt)|j+|««}|rM||D] } || |«Œ |D]}|j-|«Œ|j-|j|««�Œ¯|stg}||vr0||D] } || |«Œ |D]}||j-|«Œ�Œì|D]}||xx||zcc<Œ�Œ| D]}!||!D] } || |!«Œ Œ||‰"fScc} wcc} wcc} wcc}wcc}w) aCompute the shape of a narrowed DAG. Args: repo: The repository we're transferring. common: The roots of the DAG range we're transferring. May be just [nullid], which means all ancestors of heads. heads: The heads of the DAG range we're transferring. match: The narrowmatcher that allows us to identify relevant changes. depth: If not None, only consider nodes to be full nodes if they are at most depth changesets away from one of heads. Returns: A tuple of (visitnodes, relevant_nodes, ellipsisroots) where: visitnodes: The list of nodes (either full or ellipsis) which need to be sent to the client. relevant_nodes: The set of changelog nodes which change a file inside the narrowspec. The client needs these as non-ellipsis nodes. ellipsisroots: A dict of {rev: parents} that is used in narrowchangegroup to produce ellipsis nodes with the correct parents. rc󤕗‰|j|«t‰|«dkDr*‰|«\}}‰|||«|}t‰|«dkDrŒ)yy)z=Add a root to an ellipsis head, splitting heads with 3 roots.r#N)r›r)ÚheadÚ curchangeÚchildÚrootsÚ ellipsisrootsÚ splitheadÚ splitrootss €€€r6Úaddrootz!_computeellipsis..addroot¦s\ø€à�dÑ×Ñ  Ô*ô �- Ñ%Ó&¨Ò*Ù$ T›?‰LˆE�5Ù �t˜U EÔ *؈Dô�- Ñ%Ó&¨Õ*r8c󦕗‰|j|«‰|j|«‰|j|«‰|j|«yr•)Údifference_updater›rÒÚdiscard)rÜrÞrßràs €r6râz$_computeellipsis..splitroots²sOø€Ø�dÑ×-Ñ-¨eÔ4Ø�dÑ×Ñ Ô&Ø�eÑ×#Ñ# EÔ*Ø�eÑ×$Ñ$ UÕ+r8có,•—t‰|«\}}}||f||f||ffD]O\}}‰ jd||||«}|D]0}||k(r |||ffccS|‰vst‰|«dksŒ(|||ffccSŒQtjt d«||||fz«‚)Ns%sort(merge() & %d::%d & %d::%d, -rev)r#s;Failed to split up ellipsis node! head: %d, roots: %d %d %d)r;r|rr r*r) rÜÚr1Úr2Úr3Únr1Únr2ÚmidÚjràrks €€r6ráz#_computeellipsis..splithead¸sÍø€Ü˜M¨$Ñ/Ó0‰ ˆˆB�ؘb˜ B¨ 8¨b°"¨XÓ6‰HˆC�Ø—)‘)Ø8¸#¸tÀSÈ$óˆCó�ؘ’8Ø  c  ˜?Ô*ؘMÑ)¬S°¸qÑ1AÓ-BÀQÓ-Fؘs C˜j˜=Ô(ñ ð 7ô�k‰kÜ ð#ó ð�R˜˜RÐ ñ  !ó ð r8r³NrF)rfÚ manifestlogr¸rÚ collectionsÚ defaultdictr˜rÚfindmissingrevsÚreversedr¯ÚchangelogrevisionÚ parentrevsÚminr{rÚreadrpÚdiffrr‚Úwalkr›)%rkrlriÚknownÚmatchr9rmÚmflÚclrevrnÚ commonrevsÚ headsrevsr±ÚrevdepthÚ ellipsisheadsrãr¹ÚvisitÚrelevant_nodesÚmÚ visitnodesÚrequiredr¸ÚprevÚpsÚcurdepthr…ÚneededÚshallow_enoughÚcurmfÚp1mfÚp2mfrÜr²ràrárâs%` @@@r6Ú_computeellipsisr�sMû€ð. �‰€BØ × Ñ €Cà �F‰F€Eá$*Ó+¡F˜q‘%˜•( FÑ+¬w¨iÑ7€JÙ#(Ó)¡5˜a‘�q• 5€IÐ)á Ù"+Ó,¡)˜Q�A�q‘D )ˆÐ,ä×+Ñ+¬CÓ0€MÜ×+Ñ+¬CÓ0€Mö ô,õ  ô&�2×%Ñ%¨Z¸yÐ%ÓIÓJ€GÜ �WÓ €EÜ“U€NÙ&-Ó.¡g �"—'‘'˜!•* g€JÐ.Ü�9‹~ Ñ%€H܈Ø×$Ñ$ SÓ)ˆØ!Ÿ}™}¨SÔ1Ó EÑ1�t°T¼W³_ŠdÐ1ˆÐ EØ Ð Ø ‘}ˆHÛ�Ü! (¨Q¡,°· ± ¸QÀÈÁ Ó0JÓK�˜’ ðàˆØ $˜Ò@¨(°3©-¸5Ñ*@ˆÙ ؘŸ™Ñ'×,Ñ,Ó.ˆEÙð˜2×/Ñ/°°1±Ó6×?Ñ?Ñ@×EÑEÓG�ܘeŸj™j¨¨uÓ5Ó6�Ù¤# b£'¨A¢+ð ˜r×3Ñ3°B°q±EÓ:×CÑCÑD×IÑIÓK�DÜ! %§*¡*¨T°5Ó"9Ó:‘Fô˜UŸZ™Z¨Ó.Ó/�á Ø% cÔ*�Ù˜˜cÕ"ð+ã�Ø— ‘ ˜Q•ðà × Ñ ˜rŸw™w s›|Ö ,áÜ�Y�Ø�h‰Ø)¨#Ô.�DÙ˜D #Õ&ð/ã�AØ! !Ñ$×(Ñ(¨Õ-òó�AØ! !Ó$¨ °cÑ(:Ñ:Ô$òðYó`ˆØ! !Ô$ˆDÙ �D˜!Õ ñ%ðð �~ }Ð 4Ð4ùòM,ùÚ)ùò-ùòZ/ùòFs#­L6Á L;Á" MÃ'MÄ9M ÅM có®—dh}tjtj||¬««}|jdtj |«z«|S)zFreturn a set with appropriate options to use bundle20 during getbundlesHG20r–óbundle2=)rrùrúr›r=r>)rkróÚcapsr s r6r�r� sE€à ˆ9€DÜ×!Ñ!¤'×"5Ñ"5°dÀÔ"FÓG€H؇H�Hˆ[œ6Ÿ<™<¨Ó1Ñ 1Ô2Ø €Kr8c󇇗ˆˆfd„}|S)aŠdecorator for function generating bundle2 part for getbundle The function is added to the step -> function mapping and appended to the list of steps. Beware that decorated functions will be added in order (this may matter). You can only use this decorator for new steps, if you want to wrap a step from an extension, attack the getbundle2partsmapping dictionary directly.c󌕗‰tvsJ‚|t‰<‰€tj‰«|Stj‰‰«|Sr•)Úgetbundle2partsmappingÚgetbundle2partsorderr?rZr[s €€r6røz%getbundle2partsgenerator..dec! sNø€ØÔ5Ñ5Ð5Ð5Ø+/Ô˜xÑ(Ø ˆ;Ü × 'Ñ '¨Ô 1ðˆ ô !× 'Ñ '¨¨XÔ 6؈ r8rÁr]s`` r6Úgetbundle2partsgeneratorr r_r8có,—|�td„|D««Sy)Nc3ó>K—|]}|jd«–—Œy­w)sHG2N)r')r±Úcaps r6r³z#bundle2requested../ sèø€Ð@±Z¨c�3—>‘> &×)±Zùs‚F)r‚rs r6Úbundle2requestedr- s€ØÐÜÑ@±ZÓ@Ó@Ð@Ø r8c óB—tj|«}i}t|«}|s–|r&|jdd«st t d««‚|r=t t d«dj t|j«««z«‚t|||«} d|d<|tj|| d|||¬ «fSd |d<i} |D]Y} | jd «sŒtj| td «d «} | j!t#j$| ««Œ[t#j&|j(| «} ||d <||d<t*D]-}t,|}|| ||f|| |dœtj.|«¤ŽŒ/| j0|d<|| j3«fS)aReturn chunks constituting a bundle's raw data. Could be a bundle HG10 or a bundle HG20 depending on bundlecaps passed. Returns a 2-tuple of a dict with metadata about the generated bundle and an iterator over raw chunks (of varying sizes). r˜Ts-request for bundle10 must include changegroups#unsupported getbundle arguments: %srÍrs bundleversionrOr�r#rNr}r—)rŽrur�sprefercompressed)rÚ byteskwargsrr{Ú ValueErrorrr)r;Úkeysror rŸr'r=rXrrÒrÚ decodecapsrør.rrrÑÚprefercompressedrþ)rkrErirlrŽr�r§ÚinfoÚ usebundle2rjruÚbcapsÚblobrfÚnamerös r6Úgetbundlechunksr'3 sÄ€ô"× !Ñ ! &Ó )€FØ €DÜ! *Ó-€Já Ù ˜fŸj™j¨°Ô5ÜÜÐBÓCóð ñ ÜÜÐ8Ó9Ø—*‘*œV F§K¡K£MÓ2Ó3ñ4óð ô$ D¨%°Ó8ˆØ!"ˆÐ Ñà Ü × "Ñ "ØØØØØ%Ø /ô  ð  ð ð€DÐ ÑØ €FÛˆØ × Ñ ˜KÕ (Ü—>‘> %¬¨KÓ(8Ð(:Ð";Ó<ˆDØ �M‰Mœ'×,Ñ,¨TÓ2Õ 3ðô×јtŸw™w¨Ó/€Gà€Fˆ8ÑØ€Fˆ9Ñç$ˆÜ% dÑ+ˆÙ Ø Ø Ø ð ð"ØØ+ñ  ô× Ñ  Ó(ó ð%ð!(× 8Ñ 8€DÐ Ñà �×"Ñ"Ó$Ð $Ð$r8r!có0—tj||fi|¤ŽSr•)rÚaddpartbundlestream2)rfrkr®r§s r6Ú_getbundlestream2r*~ s€ä × 'Ñ '¨°Ñ @¸Ñ @Ð@r8c óè—|jdd«r|syd} |jd«} | rQ| D� cgc]} | tj|«vr| ‘Œ} } | stjt d««‚t | «} t|||«} | jsy|jdd«ruttt|jd g«««} ttt|jd g«««}tj|j| |¬ «}nd}tj|| | ||||¬ «}|j!d|¬ «}| r|j#d| «|j#ddt%| j«zd¬«t'j(|«r|j#dd«t*j,|j.vr9|j#dd«t1j2|«}|j#d|«|jdd«rT|jdd«rA sr<|j!d«}ddj5| «dj5«fz|_yyyycc} w)z.add a changegroup part to the requested bundlerTNrOrMr‹rÊFr7r8)ÚincludeÚexclude)rŽÚmatcherr�rarNs nbchangesrÀrër�r‘r’sexp-wanted-sidedatarËsNarrow:responsespecs%s%só )r{r r�r r*rržror¹r;ÚfilterrprrûÚrootrŸrdr rrr¡rr¢r£rÚformat_remote_wanted_sidedatar)rb)rfrkrErŽrurirlr�r§r5r¤r¥rjr,r-r.r¦r_ÚsidedataÚnarrowspecparts r6Ú_getbundlechangegrouppartr5ƒ s<€ð �:‰:�d˜DÔ !©Øà€GØ—‘˜NÓ+€JÙñ ó á�Ø”K×9Ñ9¸$Ó?Ñ?ò Øð ð ñ Ü—+‘+œaÐ @ÓAÓBÐ BÜ�j“/ˆä  e¨VÓ4€HØ × Ò Øà ‡z�z�(˜EÔ"Üœ¤ f§j¡j°ÀÓ&CÓDÓEˆÜœ¤ f§j¡j°ÀÓ&CÓDÓEˆÜ×"Ñ" 4§9¡9°gÀwÔO‰àˆä×%Ñ%Ø ØØØØØØ'ô€Hð �?‰?˜>°ˆ?Ó 9€DÙØ � ‰ �j 'Ô*à‡M�M�, ¬¨H×,<Ñ,<Ó(=Ñ =È€MÔOä×јdÔ#Ø � ‰ �o tÔ,ä×(Ñ(¨D¯M©MÑ9Ø � ‰ �o tÔ,Ü×8Ñ8¸Ó>ˆØ � ‰ Ð,¨hÔ7ð � ‰ �8˜UÔ#Ø �J‰J�| UÔ +Ù ™ð!Ÿ™Ð)?Ó@ˆØ'Ø �J‰J�wÓ Ø �J‰J�wÓ ð+ ñ ˆÕð  ð ,ð $ùò[ s¯ I/c óô—|jdd«sy|rd|vrtjtd««‚t j |«}t j ||«}|r|jd|¬«yy)z+add a bookmark part to the requested bundlerFNr,s#no common bookmarks exchange methodra)r{r r*rrÙÚlistbinbookmarksrtrd)rfrkrErŽrur§r�rbs r6Ú_getbundlebookmarkpartr8Ï sn€ð �:‰:�k 5Ô )ØÙ �\¨Ñ/Ü�k‰kœ!ÐBÓCÓDÐDÜ × $Ñ $ TÓ *€EÜ × Ñ   eÓ ,€DÙ Ø�‰˜ ¨4ˆÕ0ð r8rQc óî—|jdd«}|D]^}|jd«}|jd|«|j|«j «} t j | «|_Œ`y)z@add parts containing listkeys namespaces to the requested bundleryrÁrQr½N)r{rdr ryr<rÚ encodekeysrb) rfrkrErŽrur§ryrRr_rs r6Ú_getbundlelistkeyspartsr;Þ sc€ð �z‰z˜* bÓ)€HÛˆ Ø�‰˜{Ó+ˆØ � ‰ �l IÔ.Ø�}‰}˜YÓ'×-Ñ-Ó/ˆÜ×&Ñ& tÓ,ˆ� ñ r8c ó>—|jdd«r†|€|j«}|jd|«D�cgc]}|j«‘Œ}}|jj |«} t j| «} tj|| «yycc}w)z8add an obsolescence markers part to the requested bundleÚ obsmarkersFNr%) r{rir˜r¯r(r)rrÌrrÍ) rfrkrErŽrurir§r²ÚsubsetrÏs r6Ú_getbundleobsmarkerpartr?ë s‡€ð ‡z�z�, Ô&Ø ˆ=Ø—J‘J“LˆEØ$(§H¡H¨X°uÔ$=Ó>Ñ$=˜q�!—&‘&•(Ð$=ˆÐ>Ø—-‘-×/Ñ/°Ó7ˆÜ×'Ñ'¨Ó0ˆÜ×#Ñ# G¨WÕ5ð 'ùò?s¹Bruc óR—|jdd«�r|rd|jd«vrtjtd««‚|€|j «}t j t«}|j«r||tj<�n9|jj}|jj} |jj} |D]#} |||| | ««j!| «Œ%t#|j%««} | rt'| «tj(ksJ‚|jtj(t««} | rl|jtjt««}d}|j+|| |«}|D]*}|tjj!| |««Œ,tj,D�cic]}|t/||«“Œ}}tj0|«}|j3d|¬ «yycc}w) z,add phase heads part to the requested bundlerFr}rus no common phases exchange methodNs"heads(only(%ln, %ln) and public())r²ra)r{r r*rrirðrñr˜rrrr¹r‡rfr¯r¸r›rrržr�r|r~r;rtrd)rfrkrErŽrurir§Ú headsbyphaser‡r¯r¸r±Ú seenphasesÚ draftheadsr€r½Ú extraheadsr Ú phasemappingr´s r6Ú_getbundlephasespartrFù sÍ€ð ‡z�z�(˜EÕ"Ù˜¨¯©°IÓ)>Ñ>Ü—+‘+œaÐ CÓDÓEÐ EØ ˆ=Ø—J‘J“LˆEä"×.Ñ.¬sÓ3ˆ Ø �?‰?Ô Ø*/ˆLœŸ™Ó 'ð×$Ñ$×*Ñ*ˆEØ—>‘>×&Ñ&ˆDØ—.‘.×$Ñ$ˆCÛ�Ø™U 4©¨Q«Ó0Ñ1×5Ñ5°aÕ8ðä˜l×/Ñ/Ó1Ó2ˆJñܘ:“¬&¯,©,Ò6Ð6Ð6ð&×)Ñ)¬&¯,©,¼»Ó>ˆJÙØ*×.Ñ.¬v¯}©}¼c»eÓD� à>�Ø!ŸY™Y v¨z¸;ÓG� Û#�AØ ¤§¡Ñ/×3Ñ3±D¸³GÕ<ð$ô =C×€ñ* ˜&Ÿ*™* T¨4Ô0°_ÈÑ5NØä  e¨VÓ4€HÜ ×"Ñ" 4¨°(Õ;r8scache:rev-branch-cachec óà—|jdd«r7|r5d|vs1|jdd«s|jjt«ryt |||«}t j |||«y)zíTransfer the rev-branch-cache mapping The payload is a series of data related to each branch 1) branch name length 2) number of open heads 3) number of closed heads 4) open heads nodes 5) closed heads nodes rTsrev-branch-cacherÊFN)r{r.Ú has_sectionrÏrorÚaddpartrevbranchcacherJs r6Ú_getbundlerevbranchcacherOF sa€ð4 �J‰J�t˜TÔ "ÙØ  fÑ ,Ø �:‰:�h Ô &Ø �7‰7× Ñ Ô1Ô 2àä  e¨VÓ4€HÜ ×!Ñ! $¨°Õ:r8cóò—|j«}tjdjt |«««j «}|dgk(s&||k(s |d|gk(st jd|z«‚yyy)zVcheck if the heads of a repo have been modified Used by peer for unbundling. r8rôshasheds.repository changed while %s - please try againN)rirÚsha1r)r;Údigestr Ú PushRaced)rkÚ their_headsÚcontextriÚ heads_hashs r6Ú check_headsrWl s|€ð �J‰J‹L€EÜ—‘˜sŸx™x¬¨u« Ó6Ó7×>Ñ>Ó@€Jà˜�zÒ!Ø ˜%Ò Ø ˜9 jÐ1Ò 1ô�o‰oØ =ÀÑ Gó ð ð 2ð ð "r8c 󂇇‡‡ ‡ ‡—dŠgd¢Š d}‰jjdd«}‰jd«s‰jd«rd} t‰|d «t |t j «sˆd j‰tj‰«g«}‰j«5‰j|«5}t j‰||‰‰«} t j| «Šddd«ddd«n«dŠ ˆ ˆˆˆfd „} ‰jjdd «s| «t j‰| |d ¬«} t j‰|| ¬«} | j Š|r%‰�#‰jj#dd¬«ˆfd„} ‰ d�‰ dj%«t/j0‰ d‰ d‰ d«|� |‰jj3««‰S#1swY�ŒxYw#1swYŒZxYw#| j Š|r&‰�#‰jj#dd¬«ˆfd„}wwwxYw#t&$r-} d| _|r‰�‰j+«xŠ | _ˆ fd„}‚d} ~ wwxYw#t/j0‰ d‰ d‰ d«|�!|‰jj3««wwxYw)aApply a bundle to a repo. this function makes sure the repo is locked during the application and have mechanism to check that no push race occurred between the creation of the bundle and its application. If the push was raced as PushRaced exception is raised.r©NNNNrqsbundle2-output-captures remote:http:s remote:https:Tsuploading changesr/có"•—‰ds…tj‰«s‰j«‰d<‰j«‰d<‰j ‰«‰d<‰‰dj d<‰‰dj d<d‰dj d<‰dS)Nr#rrrHrõr‘r‹)rÙrÚrÛr rrJ)Ú lockandtrrkrErs€€€€r6rBz unbundle..gettransaction¡ s�ø€Ø$ Qš<Ü&×7Ñ7¸Ô=Ø+/¯:©:«<˜I a™LØ'+§y¡y£{˜  !™ Ø'+×'7Ñ'7¸Ó'?˜  !™ Ø;A˜  !™ ×-Ñ-¨iÑ8Ø8;˜  !™ ×-Ñ-¨fÑ5Ø<@˜  !™ ×-Ñ-¨jÑ9Ø$ Q™<Ð'r8sbundle2lazylockingrŒ)Ú captureoutputrE)rŽ)r Úsubproccó.•—‰jd|d¬«y©NsoutputF)rbr[)rd)Úoutputr s €r6Ú recordoutzunbundle..recordoutÀ sø€ØŸI™I i°fȘIÕNr8r#cóX•—tjd|d¬«}‰j|«yr_)rÚ bundlepartr?)r`r_rAs €r6razunbundle..recordoutÊ s(ø€Ü&×1Ñ1Ø%¨F¸eô ˜ðŸ ™  TÕ*r8r)r.rØr'rWrSrrUr)rrIr rrµr¥r£rrÚ pushbufferrMÚ BaseExceptionÚduringunbundle2Ú salvageoutputÚ_bundle2salvagedoutputÚlockmodrOÚ popbuffer)rkrrirErrar\rjrmrŽrBr¹r[rAr s` `` @@@r6rr s�ý€ð €Aò#€IØ€Ià—G‘G×&Ñ&ØÐ2ó€Mð ‡~�~�oÔ&¨#¯.©.Ð9IÔ*J؈ ðB+ô �D˜%Ð!5Ô6ä˜"œg×0Ñ0Ô1à—j‘j &¬'×*>Ñ*>¸sÓ*CÐ!DÓEˆGØ—‘•˜d×.Ñ.¨wÔ7¸2Ü×(Ñ(¨¨r°2°v¸sÓC�Ü×5Ñ5°bÓ9�÷8—�ðˆAð1 ÷ (ð—w‘w×)Ñ)Ø#Ð%:ôñ#Ô$ä×,Ñ,ØØ"Ø"/Ø"ô �ð OÜ ×.Ñ.¨t°R¸BÔ?�BàŸ™�AÙ$¨¨ØŸ™×*Ñ*°¸tÐ*ÔDõOð˜Q‘<Ð+ؘa‘L×&Ñ&Ô(ô �‰˜  !™  i°¡l°I¸a±LÔAØ Ð Ù �d—g‘g×'Ñ'Ó)Ô *Ø €H÷w8Ñ7ú—�ûðDŸ™�AÙ$¨¨ØŸ™×*Ñ*°¸tÐ*ÔDõOð*7�}ûô!ò Ø&*�Ô#Ù  Q ]Ø9:¿¹Ó9JÐJ�E˜CÔ6ô+ð ûð ûô �‰˜  !™  i°¡l°I¸a±LÔAØ Ð Ù �d—g‘g×'Ñ'Ó)Õ *ð !úsvÁAI9Â-G;Â?/G.Ã.G;Ã6 I9ÄAIÅHÅA IÇ.G8 Ç3G;Ç;HÈI9È6H=È=IÉ I6É (I1É1I6É6I9É9AJ>cóœ—|j}|j}|jjdd«syt |«ry|j ry|j d«sy|j«5}|jdi«j«}ddd«d|_ tj|«}|s%|jjtd««ytj|||j ¬«}|sI|jj#td««|jj#td««ytj$|j|«}|d d }|jj'td «|z«t)|j|||«r%|jj'td ««y|jjdd «r%|jj#td««yt+j,td«td«¬«‚#1swY�Œ±xYw)z0Apply a clone bundle from a remote, if possible.rr™NTsDno clone bundles available on remote; falling back to regular clone )r2sOno compatible clone bundles available on server; falling back to regular clone s5(you may want to report this to the server operator) rsURLsapplying clone bundle from %s sfinished applying clone bundle sclonebundlefallbacksfalling back to normal clone serror applying bundles}if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false"rP)rkrzr.rØrrir�rÿrrr6r ÚparseclonebundlesmanifestÚnoterÚfilterclonebundleentriesr2r~ÚsortclonebundleentriesrÞÚtrypullbundlefromurlr r*)rcrkrzrrYÚentriesrs r6r|r|Ø så€ð �;‰;€DØ �]‰]€Fà �7‰7× Ñ ˜e _Ô 5Øô ˆ4„yØà ‡|‚|Øà �>‰>˜/Ô *Øà × Ñ Ô ! QØ�m‰m˜O¨RÓ0×7Ñ7Ó9ˆ÷ "ð #'€FÔä×4Ñ4°T¸3Ó?€GÙ Ø �‰� ‰ Ü ð3ó ô ð ä×3Ñ3Ø ˆg¨F×,GÑ,Gô€Gñ ð �‰� ‰ Ü ð3ó ô ð �‰� ‰ Ü ÐGÓ Hô ð ä×1Ñ1°$·'±'¸7ÓC€Gà �!‰*�VÑ €C؇G�G‡N�N”1Ð7Ó8¸3Ñ>Ô?ܘDŸG™G T¨3°Ô7Ø �‰�‰”qÐ<Ó=Õ>ð �‰× Ñ ˜EÐ#9Ô :Ø �‰� ‰ ”QÐ8Ó9Õ:ä�k‰kÜ Ð&Ó 'Üð4óô ð ÷i "Ñ !ús Á1!IÉI cóÌ—|s!tjtd|z««‚|ttj «d}|j |«}tj|«S)Ns$no remote repository supplied for %s) r r*rrr ÚCLONEBUNDLESCHEMEÚget_cached_bundle_inlinerrý)r.rÚpeerÚ clonebundleidÚpeerclonebundles r6Úinline_clone_bundle_openrx* sX€Ù Ü�k‰kœ!ÐCÀcÑIÓJÓKÐKØœœL×:Ñ:Ó;Ð=Ð>€MØ×3Ñ3°MÓB€OÜ × Ñ ˜OÓ ,Ð,r8c óH—|j«5|jd«5} |jtj«rt |||«}nt j||«}t||d«}t|tj«r|j|«ntj|||d|« ddd«ddd«y#tj $r:}|j#t%d«t'j(|«z«Yd}~n]d}~wtj*$rD}|j#t%d«t'j(|j,«z«Yd}~nd}~wwxYw ddd«ddd«y#1swYnxYwddd«y#1swYyxYw) z%Attempt to apply a bundle from a URL.s bundleurlr!r™NTsHTTP error fetching bundle: %s serror fetching bundle: %s F)r rr'r rsrxÚurlmodÚopenr7rSrr-ÚapplyrrµÚurlerrÚ httperrorr~rrrÞÚurlerrorÚreason)r.rkrrurmr/rrs r6rprp2 s;€à �‰��d×&Ñ& |Ô4¸ð Ø�~‰~œl×<Ñ<Ô=Ü-¨b°#°tÓ<‘ä—[‘[  SÓ)�ܘB  IÓ.ˆBä˜"œk×<Ñ<Ô=Ø—‘˜•ä×#Ñ# D¨"¨b°/À3ÔGØ÷5�ˆøô×Ñò Ø �G‰GÜÐ5Ó6Ü×)Ñ)¨!Ó,ñ-÷ ñ ûô�‰ò Ø �G‰GÜÐ0Ó1Ü×)Ñ)¨!¯(©(Ó3ñ4÷ ñ ûð úð ÷15�ˆ×4Ð4ú��‰ús^‘F£F¥BC Â;Fà E.Ã0DÄFÄE.Ä*:E)Å$FÅ)E.Å.FÅ2FÆF ÆFÆF!r•rÀ) NNFrÁNNNNNN)NNNN)NNNNN)NNrY)~rðrrÚi18nrr¯rrÚrrÙrr r r r r rirrrrrrrrrrrrzrrÚutilsrrrÚ interfacesrr}r=rÏr7rDrdror‡r‘r“rßrðrôrórûrârãrr!r+r:r5rUrYrXr^rnrqr{rˆr§r®rªr«rÐrÖrØrÛrÒrÓrïrärårærrrçrèr.Ú transactionalrÜryrgrur…r‰rˆrŠr~rŽr”r`r¡rr€r¦r�r‚rÙrr�rrrrr'r*r5r8r;r?rFrKrOrWrr|rxrprÁr8r6Úr†sÜðóÛå÷÷÷÷÷÷ó÷,ñõ #à �‰€Ø �‰€à!Ðó ò>òT=òn3ò(#.òL =÷ A&ñA&ñN Ð #Ó$Ù Ð *Ó+ðñ Ð $Ó%Ù Ð +Ó,ðñ Ð *Ó+Ù Ð 1Ó2ðñ € ð& Ø ØØØ Ø ómðbÐð Ðòò&ò(ñ&ˆ|Óñóðñ4ˆxÓñ;-óð;-ñ|ˆ|ÓñGóðGñ"ˆ|ÓñOóðOò(3òl#ðN€ð Ðóò,Cò6ñÐ$Ó%ñ 8ó&ð 8ñ�/Ó"ñ=ó#ð=ñ$�,Óñ3ó ð3ñl�(Óñ5óð5ò"8ò"ñJ�-Ó ñ 6ó!ð 6ñ�,Óñ 8ó ð 8òò òò.-ñ`�+ 1Ô%ñ7ó&ð7ò*=ò@-Qò`?ðD*0¯©óò,ò* $÷F\,ñ\,ô~˜×+Ñ+ôò@Nò ';òT0ð, Ø Ø ØØ ØØØØ Ø ó|ð@Ðð Ðòò&ñˆÓñ ?ó ð ?ñˆ~Óñóðò@RòjIò=Bò@+ò!?òHò*ò:5ópB5òJðÐð Ðóò,ð Ø ØØó H%ñV˜)Ó$ñAó%ðAñ˜.Ó)ð Ø Ø Ø ØòH ó*ðH ñV˜,Ó'à37ò 1ó(ð 1ñ˜+Ó&à37ò -ó'ð -ñ˜-Ó(à?Cò 6ó)ð 6ñ˜)Ó$à?Cò-8ó%ð-8ñ`˜/Ó*ð Ø Ø Ø ò<ó+ð<ñ6Ð3Ó4ð Ø Ø Ø ò";ó5ð";òJ ò&V òrO òd-ór8