
    q&f.s                        d dl Z d dlZddlmZmZmZ ddlmZmZ	 g Z
 e       Z G d d      Zd>dZ ed	d
      d        Z edd
d      d        Z edd
      d        Z ede      d        Z edd
d      d        Z ede      d        Z edd
d      d        Z ede      d        Z eddd      d        Z ed d
d      d!        Z ed"dd      d#        Z ed$d%d      d&        Z ed'dd      d(        Z ed)d*d      d+        Z ed,d-d      d.        Z ed/dd      d0        Z ed1d*d      d2        Zd3 Z d4 Z!d5 Z"ejF                  fd6Z$d7e%d8e%d9e%fd:Z& G d; d<      Z'	 	 	 	 d?d=Z(y)@    N   )mdiffnoderevlogutils   )	constantsdeltasc                       e Zd ZdZddZd Zy)_column_basezconstains the definition of a revlog column

    name:         the column header,
    value_func:   the function called to get a value,
    size:         the width of the column,
    verbose_only: only include the column in verbose mode.
    Nc                 ~    || _         || _        |t        ur|d}t        t	        |      |      }|| _        || _        y )N   )name
value_func	NODE_SIZEmaxlen_sizeverbose_only)selfr   r   sizeverboses        =/usr/lib/python3/dist-packages/mercurial/revlogutils/debug.py__init__z_column_base.__init__%   sA    	$y |s4y$'D
#    c                 B    | j                   t        u r|S | j                   S N)r   r   )r   	node_sizes     r   get_sizez_column_base.get_size/   s    ::"::r   NF)__name__
__module____qualname____doc__r   r    r   r   r   r      s    $r   r   c                       fd}|S )zdecorated function is registered as a column

    name: the name of the column,
    size: the expected size of the column.
    c                 P    t        |       }t        j                  |       |S )N)r   r   r   r   )r   INDEX_ENTRY_DEBUG_COLUMNappend)funcentryr   r   r   s     r   registerzdebug_column.<locals>.register=   s.    	
 	!''.r   r$   )r   r   r   r+   s   ``` r   debug_columnr,   6   s     Or      rev   )r   c                     d|z  S N   %dr$   indexrevr*   hexfns       r   _revr6   J   s    3;r   s   rankT)r   r   c                 .    d|t         j                     z  S r0   )r   
ENTRY_RANKr2   s       r   rankr9   O   s    5--...r   s   linkrevc                 .    d|t         j                     z  S r0   )r   ENTRY_LINK_REVr2   s       r   _linkrevr<   T       511222r   s   nodeidc                 4     ||t         j                           S r   )r   ENTRY_NODE_IDr2   s       r   _nodeidr@   Y   s    y../00r   s   p1-revc                 .    d|t         j                     z  S r0   )r   ENTRY_PARENT_1r2   s       r   _p1_revrC   ^   r=   r   s	   p1-nodeidc                 d    |t         j                     }| |   } ||t         j                           S r   )r   rB   r?   r3   r4   r*   r5   parentp_entrys         r   _p1_noderH   c   1    9++,FFmG00122r   s   p2-revc                 .    d|t         j                     z  S r0   )r   ENTRY_PARENT_2r2   s       r   _p2_revrL   j   r=   r   s	   p2-nodeidc                 d    |t         j                     }| |   } ||t         j                           S r   )r   rK   r?   rE   s         r   _p2_noderN   o   rI   r   s	   full-size   c                 .    d|t         j                     z  S r0   )r   ENTRY_DATA_UNCOMPRESSED_LENGTHr2   s       r   	full_sizerR   v   s    5AABBBr   s
   delta-basec                 .    d|t         j                     z  S r0   )r   ENTRY_DELTA_BASEr2   s       r   
delta_baserU   {   s    533444r   s   flagsc                 <    |t         j                     }|dz  }d|z  S )Ni  r1   r   ENTRY_DATA_OFFSETr3   r4   r*   r5   fields        r   flagsr[      s%    )--.E	VOE5=r   s	   comp-mode   c                 .    d|t         j                     z  S r0   )r   ENTRY_DATA_COMPRESSION_MODEr2   s       r   compression_moder_      s    5>>???r   s   data-offsetc                 <    |t         j                     }|dz  }d|z  S )N   r1   rW   rY   s        r   data_offsetrb      s%    )--.E	bLE5=r   s
   chunk-size
   c                 .    d|t         j                     z  S r0   )r   ENTRY_DATA_COMPRESSED_LENGTHr2   s       r   data_chunk_sizerf      s    5??@@@r   s   sd-comp-mode   c                     |t         j                     }|t         j                  k(  ry|t         j                  k(  ry|t         j                  k(  ryd|z  S )Ns   plains   default   inliner1   )r   ENTRY_SIDEDATA_COMPRESSION_MODECOMP_MODE_PLAINCOMP_MODE_DEFAULTCOMP_MODE_INLINE)r3   r4   r*   r5   compressions        r   sidedata_compression_modero      sP    	AABKi///		33	3		22	2{""r   s   sidedata-offsetc                 .    d|t         j                     z  S r0   )r   ENTRY_SIDEDATA_OFFSETr2   s       r   sidedata_offsetrr      s    588999r   s   sd-chunk-sizec                 .    d|t         j                     z  S r0   )r    ENTRY_SIDEDATA_COMPRESSED_LENGTHr2   s       r   sidedata_chunk_sizeru      s    5CCDDDr   c                 D   |rt         j                  }nt         j                  }d}|D ]#  }t         ||j	                  |                  } n |}g }	t
        D ]X  }
|
j                  r| j                  s|
j                  |      }|
j                  }|	j                  |j                  |             Z |j                  dj                  |	      dz          |j                  }|D ]  }|j                          ||   }d}t
        D ]w  }
|
j                  r| j                  s|s|j                  d       d}|
j                  |      }|
j!                  ||||      }d|z  }|j#                  |
j                  ||       y |j                  d        |j%                          y)zdisplay index data for a revlog          
TFs   %%%dsN)nodemodhexshortr   r   r'   r   r   r   r   r(   rjustplainjoinr3   	startitemr   writeend)uirepo	formatterrevlog	full_noder5   idlenifmheader_piecescolumnr   r   r3   r4   r*   firstvaluedisplays                      r   debug_indexr      sz    E E&++a.)* 
BM* /rzzu%{{TZZ-./ HHTYY}%-.LLE 
c
. 
	2F""2::E??5)D%%eS%?EoGHHV[['51
	2 	" FFHr   c                    |}t        |      }| j                  d       d}t               }t        |      D ]/  }|j	                  |      }|dk(  r|}|j                  |      }|j                  |      }	|j                  |      \  }
}|j                  |      }||z   }|t        |j                  |            z  }|j                  |       	 ||j                  |      z  }| j                  d||
||j                  |      |j                  |      |j                  |      |j                  |      |j                  |
      |j                  |      |||t        |      |	fz         2 y# t        $ r d}Y w xY w)z+perform the work for `hg debugrevlog --dumpse   # rev p1rev p2rev start   end deltastart base   p1   p2 rawsize totalsize compression heads chainlen
r   s:   %5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d %11d %5d %8d
N)r   r   setrangedeltaparent	chainbasechainlen
parentrevsrawsizeaddr   ZeroDivisionErrorstart)r   r   rnumrevstsheadsr4   dbasecbaseclenp1p2rsrn   s                 r   dumpr      sm    	A!fGHH? 
BEEW~ "
c"B;EC zz#c"BYYs^"WQ\\#&''		#	quuSz/K 	 c
E
	
"
 ! 	K	s   E**E87E8c           	        JKL |}|j                   }|j                  }g }d}|t        j                  z  r|j	                  d       |t        j
                  z  rd}|j	                  d       |sdg}d}d}d}	d}
d}d}d}t        j                  d       }t        j                  d       }d}d}d}d}d}d}d}d}g }g }g }g d	}g d	}g d	}t        j                  d
       }g d	}i } i }!d }"|j                         5  t        |      }#t        |#      D ]  }$|j                  |$      \  }%}&|j                  |$      }'|dkD  r|j                  |$      }(||(z  } |"|(|       |&t        j                  k7  r|dz  }|j!                  |$      })|'t        j                  k(  r||j	                  d       |j	                  |j#                  |$             |j	                  |)       |)dk(  r|	dz  }	|
dz  }
no|dz  }|dxx   dz  cc<    |"|)|        |"|)|d          nF|'|%k7  xr |'|&k7  xr |j%                  |'|$       }*|j	                  ||'   dz          ||'   }+|j#                  |$      },|j	                  |+       |j	                  |,|+z
  |)z          |)dk(  r|	dz  }	|dz  }n|j'                  |$      rH |"|)|       |dz  }|j)                  |$      }-||-xx   dz  cc<   |*r||-xx   dz  cc<    |"|)||-          ng |"|)|       |'|$dz
  k(  r#|dz  }|'|%k(  r|dz  }nF|'|&k(  r|dz  }n;|*r9|dz  }n3|'|%k(  r|dz  }n(|'|&k(  r|dz  }n|'t        j                  k7  r
|dz  }|dz  }t+        |d      r |j,                  j/                  |$|$      d   }.n|j0                  j3                  |$|$      d   }.|.rt5        |.dd       }/nd}/|/| vr
d| |/<   d|!|/<   | |/xx   dz  cc<   |!|/xx   |)z  cc<    	 ddd       ||||fD ]  })|)d   	d|)d<    #|z
  |	z
  |z
  }0||z
  |z
  |z
  }1||z
  }2|d   }3|dxx   |#z  cc<   |d   }4|dk(  rd|d<   n|dxx   |z  cc<   |d   }5i }6|dkD  r|dxx   |z  cc<   |D ]   }-||-   d   |6|-<   ||-   dxx   ||-   z  cc<   " |d   }7|0dkD  r|dxx   |0z  cc<   |4|5z   |7z   }8t7        |      |#z  }9t9        |      }:t9        |      };d}<|8r|3|8z  }<dJdKJfd}=dCKfd	}>d }?| j;                  d|z         | j;                  ddj=                  |      z         | j?                  d        |>|8      }@ |=|8      }A| j;                  d|A|#z  z          | j;                  d|@ |?||#      z  z          | j;                  d|@ |?|#|z
  |#      z  z          | j;                  d|A|#z  z          | j;                  d|@ |?|	|#      z  z          | j;                  d|@ |?|
|
|z         z  z          | j;                  d|@ |?||
|z         z  z          | j;                  d |@ |?||z   |#      z  z          tA        |      D ]  }-d!|-z  }B@ |?||-   |#      z  }C|B|Cg}D||-   rBCdd" xDd"<   }Cd#}E@}F|F |?||-   ||-         z  }F|Dj	                  |E       |Dj	                  |F       | j?                  d$j=                  D              | j;                  d%@ |?|0|#      z  z          | j;                  d&A|8z  z          | j;                  d |@ |?|4|5z   |8      z  z          tA        |      D ]&  }-| j?                  d!|-z  @ |?|6|-   |8      z  z          ( | j;                  d%@ |?|7|8      z  z          tB        jD                  jG                  d'      LLfd(}G| j?                  d       | j;                  d)A|#z  z          tA        |       D ]7  }/| j?                   G|/             | j?                  @ |?| |/   |#      z         9 | j;                  d*A|8z  z          tA        |       D ]7  }/| j?                   G|/             | j?                  @ |?|!|/   |8      z         9 | j?                  d       d+|z  }Hg }It        H      d,kD  r(Ij	                  Hd-d        |Hdd- }Ht        |H      d,kD  r(Ij	                  H       |IjI                          d.j=                  |I      }H| j?                  d       | j;                  d/|Hz         | j?                  d        |=t9        |9|:|;|<            }@| j;                  d0|@|9z  z          | j;                  d1|@|:z  z          | j;                  d2|@|;z  z          | j;                  d3|@|<z  z          |dkD  r.| j?                  d       | j;                  d4tK        |      z         | j;                  d5tK        |      z         | j;                  d6tK        |      z         tA        |      D ],  }-|-dk(  r	| j;                  d7|-ftK        ||-         z   z         . | j;                  d8tK        |      z         |0dkD  r9| j?                  d        |>|0      }@ |>|0d9      }A| j;                  d:|@ |?||0      z  z          |dkD  rx| j;                  d;A |?||      z  z          | j;                  d<|A |?||      z  z          | j;                  d=|A |?|1|      z  z          | j;                  d>|A |?|1|      z  z          |ry| j;                  d?@ |?||0      z  z          | j;                  d@|@ |?||0      z  z          | j;                  dA|@ |?|2|0      z  z          | j;                  dB|@ |?||0      z  z          yyy# 1 sw Y   xY w)Dzcode for `hg debugrevlog`Fri   Ts   generaldeltas   (none)r   c                       yNr   r$   r$   r   r   <lambda>zdebug_revlog.<locals>.<lambda>4      r   c                       yr   r$   r$   r   r   r   zdebug_revlog.<locals>.<lambda>6  r   r   Nr   r   c                  
    g dS )Nr   r$   r$   r   r   r   zdebug_revlog.<locals>.<lambda>Q  s    L r   c                 \    |d   | |d   k  r| |d<   | |d   kD  r| |d<   |dxx   | z  cc<   y )Nr   r   r   r$   )r   ls     r   addsizezdebug_revlog.<locals>.addsizeV  s?    Q4<4!A$;AaD!A$;AaD	!r   r   _inner   emptyNr   s   %%%dd
s   %%%dd %s(%%5.2f%%%%)
c                 2    t        t        |             z  S r   r   str)r   basedfmtstrs    r   dfmtstrzdebug_revlog.<locals>.dfmtstr  s    SS]**r   c                 <    t        t        |             d|z  fz  S )Nrx   r   )r   paddingbasepcfmtstrs     r   pcfmtstrzdebug_revlog.<locals>.pcfmtstr  s    s3s8}dWn===r   c                 4    |r| dt        |       z  |z  fS | dfS )Nd   g      Y@)float)r   totals     r   pcfmtzdebug_revlog.<locals>.pcfmt  s(    3u-566%<r   s   format : %d
s   flags  : %s
s   , ry   s   revisions     : s       merges    : s       normal    : s       empty     : s                      text  : s                      delta : s       snapshot  : s         lvl-%-3d :       r   s     non-ancestor-bases: r   s       deltas    : s   revision size : asciic                     | dk(  rd| z  S | v rdt        j                  |       | fz  S dt        j                  |       z  S )Nr   s       %s     : s       0x%s (%s)  : s       0x%s      : )rz   r{   )	chunktypeletterss    r   fmtchunktypez"debug_revlog.<locals>.fmtchunktype  sK     #i//'!'7;;y+A9*MMM&Y)???r   s   chunks        : s   chunks size   : r1      rx   s   total-stored-content: %s bytes
s   avg chain length  : s   max chain length  : s   max chain reach   : s   compression ratio : s4   uncompressed data size (min/max/avg) : %d / %d / %d
s4   full revision size (min/max/avg)     : %d / %d / %d
s4   inter-snapshot size (min/max/avg)    : %d / %d / %d
s5       level-%-3d (min/max/avg)          : %d / %d / %d
s4   delta size (min/max/avg)             : %d / %d / %d
r\   s   deltas against prev  : s       where prev = p1  : s       where prev = p2  : s       other-ancestor   : s       unrelated        : s   deltas against p1    : s   deltas against p2    : s   deltas against ancs  : s   deltas against other : )r   )&_format_version_format_flagsr   FLAG_INLINE_DATAr(   FLAG_GENERALDELTAcollectionsdefaultdictreadingr   r   r   r   r   rz   nullrevlengthr   isancestorrev
issnapshotsnapshotdepthhasattrr   get_segment_for_revs_revlog_getsegmentforrevsbytessumr   writenoi18nr   r   sortedstringascii_lettersencodereversetuple)Mr   r   r   formatvr[   gdeltafull_text_total_size	nummergesnumemptynumemptytextnumemptydeltanumfullnumseminumsnapdepthnumsnapdepth_nadnumprevnumprev_nadnump1nump2numothernumother_nad	nump1prev	nump2prevchainlengths
chainbases
chainspansdatasizefullsizesemisizesnapsizedepth	deltasizechunktypecountschunktypesizesr   r   r4   r   r   deltasr   nadbaseaddrrevaddrdepthsegmentr   	numdeltasnumoprevnum_other_ancestorstotalrawsize	fulltotal	semitotal	snaptotal
deltatotal	totalsizeavgchainlenmaxchainlenmaxchainspan	compratior   r   r   fmtfmt2basecountpiecesmore	anc_countr   b_totalp_totalr   r   r   sM                                                                             @@@r   debug_revlogr    s   AF	AEF9%%%Y9&&&_% I HLMGG**95L"..y9GKEEHL II LJJ HHH++,@AMION 
 O.a&> M	.C\\#&FBMM#&EzIIcN$)$8$W__$Q	88C=D'##A&!!!''#,/!!$'19MH A%LqLG Oq(OD(+D-"23 RK 88OOE377 
 ##L$7!$;<%e,''#,!!(+!!7X#5"=>19MH!Q&M\\#&D(+qLGOOC0E '1,'(/14/D-"67D),a'1 B;%NI"b[%NI '1,K"
"
'//1 A$) q(#((77SA!D))66sC@C!'!A,/	$	/-.	*,-y)I&!+&9%-%[M	.O.d 8Xy9 7?DG '!H,w6I"Y.<H"\1A;LQK7KI!|wII{w 7(/2	%eQ<#667 1J1}!	!I%
2Il#g-Kl#Kz?LI 9,	K,L+>  NN#f,-NN#ejj&778HHUO
9
C9DNN&78NN&uY/H)HHINNcE'I*=w$GGG NN&78NN&uXw/G)GGHNN&
lL=$@A
A	B NN&
m\M%AB
B	C NNcE'G*;W$EEE % #)E1eL/99E"!&s+F2J,DI/6U8KLLIMM$MM)$
&!"# NN&uY/H)HHINN&	)99:NNcE)i*?$KKK % 

'%/E)E*I667	


 NN&uZ/K)KKL""))'2G@ HHUONN&78O, C	
i()
u_Y7AABC NN&	)99:O, D	
i()
u^I6	BBCD HHUO**GG
g,
wrs|$#2, g,
 NN7OOii GHHUONN6@AHHUO
#k;iH
ICNN*S;->>?NN*S;->>?NN*S<-??@NN*S9_<=z

DHo	
 NN@
/	 NN@
/	 & 
A:
Ex%e 4557	

 NN@
	
	
 1}
y!	1%
&uWi/H)HH	
 Q;NN*TE)W4M-MM NN*TE)W4M-MM NN*TE(G4L-LL NN*TE(G4L-LL NN*S5	3J-JJ NN*S5	3J-JJ NN*19==> NN*lI667 ) gO. O.s   >K+nnc           	      t   t        j                  || j                  | j                         }|j	                  |      }|j                  |      \  }}|j	                  |      }|j	                  |      }	|j                  |      }
|
g}t        |d         }d}|j                  |      }|t        j                  k7  r=|j                  |      }t        j                  ||
      }||t        j                  f}dg}t        j                   |||	||||      }|j#                         }|j%                  |||       y)z&display the search process for a delta)write_debugdebug_searchr   N)
target_rev)	deltautildeltacomputerr   quietr   r   revisionr   r[   rz   r   r   textdiffr   DELTA_BASE_REUSE_TRYr   revisioninfo_datafpfinddeltainfo)r   r   r4   base_revr$  r   p1rp2rr   r   	full_textbtexttextlen
cachedeltar[   	base_textr  revinfofhs                      r   debug_delta_findr6  u  s%   ++HH\M ;;sD  %HC	S	B	S	B$IKE%(mGJLLE7??"OOH-	y)4y'E'EF
&&

G 
	B<r   	changelogmanifestfilelogsc                    |j                  d       | j                  j                         D cg c]  }|j                  s| }}|j	                  d        |D ]b  }|s|j
                  r|s|j                  r"|s|j                  r1|j                  |       j                         }|j                          t        |      }	|j                  }
|j                  |	dz
        }|j                  }d}d}|d   t        j                   k(  rd}n;|d   t        j"                  k(  rd	}|d   }n|d   t        j$                  k(  rd
}|d   }|j'                  dd|	       |j'                  dd|       |j'                  dd|
rdnd       |j'                  dd|       |j'                  dd|       |j                  d       e yc c}w )zSFormat revlog statistics for debugging purposes

    fm: the output formatter.
    s,   rev-count   data-size inl type      target 
c                 2    | j                   | j                  fS r   )revlog_type	target_id)es    r   r   z$debug_revlog_stats.<locals>.<lambda>  s    q}}akk&B r   )keyr   s   unknownr   r   s	   changelogs   manifests   files   revlog.rev-count   %9ds   revlog.data-sizes   %12ds   revlog.inlines    %-3ss   yess   nos   revlog.types    %-9ss   revlog.targets    %sry   N)r~   storewalk	is_revlogsortis_changelogis_manifestlog
is_filelogget_revlog_instance
get_revlogr   r   _inline_get_data_offsettargetr   KIND_CHANGELOGKIND_MANIFESTLOGKIND_FILELOGr   )r   r   r7  r8  r9  r>  revlog_entriesr*   rlognb_revinline	data_sizerL  r<  revlog_targets                  r   debug_revlog_statsrV    s    HH=>!%!2BAakkaBNBBC  U//e22e..((.99;
T))&1*5	 !9	000&KAY)444%K"1IMAY)000!K"1IM
$ff5
$gy9
!8vV5I
;7
!6=9
A  Cs   G Gc                       e Zd Zd ZddZy)DeltaChainAuditorc                     || _         | j                   j                  | _        |j                  j                  | _        i | _        t        | j                        | _        y r   )	r   r3   _indexdelta_configgeneral_delta_generaldelta_chain_size_cacher   _total_revs)r   r   s     r   r   zDeltaChainAuditor.__init__  sG    ll((#00>>!#t{{+r   c                    | j                   |   }|t        j                     }|t        j                     }|t        j                     }|t        j
                     }	|t        j                     }
|	}|	t        j                  k7  r|	| j                  k  r| j                   |	   }|t        j                     dk(  rc|t        j                     }||k(  s"|t        j                  k(  s|| j                  k\  rn(|}| j                   |   }|t        j                     dk(  rc|
}|
t        j                  k7  r|
| j                  k  r| j                   |
   }|t        j                     dk(  rc|t        j                     }||k(  s"|t        j                  k(  s|| j                  k\  rn(|}| j                   |   }|t        j                     dk(  rc| j                  rT||	k(  rd}nV||
k(  rd}nN||k(  rd}nF||k(  rd}n>||k(  rd}n6| j                  j                  |      rd}n||dz
  k(  rd	}nd
}n
||k(  rd}nd	}| j                  j                  |      d   }|	|
||||d}|s|s|rod}t        |      D ]K  }| j                  j!                  |      }|||z  } n'| j                   |   }||t        j                     z  }M || j                  |<   ||d<   |S )Nr      p1   p2s   bases   skip1s   skip2s   snapr   s   prevs   other)r   r   compressed_sizeuncompressed_size	deltatypechain
chain_size)rZ  r   re   rQ   rT   rB   rK   rz   r   r_  r]  r   r   _deltachainreversedr^  get)r   r4   	size_info	dist_infosparse_infor>  compsize
uncompsizer  r   r   p1_basee1new_basep2_basee2re  rf  datarg  iter_revcacheds                         r   r4  zDeltaChainAuditor.revinfo  s   KKY;;<y??@
++,y''(y''(  R$*:*:%:RBY;;<Ai889'7??24#3#33"[[) Y;;<A  R$*:*:%:RBY;;<Ai889'7??24#3#33"[[) Y;;<A rz!	!	#	$	$	((-#	q#	$	s{#	#	((-a0 '!+"
 	[J$UO H//33H=%&(JKK)a	 F FGG
H +5D""3'!+Dr   N)TTT)r    r!   r"   r   r4  r$   r   r   rX  rX    s    ,Yr   rX  c              #     $K   t        |       }| }|j                  }|j                  }| j                  j                  }	d}
|r|
dz  }
|r|
dz  }
|	r|r|
dz  }
|
dz  }
|
 |t        |      }nt        |      $t        $fd|D              }i }|D ]  }|j                  ||||      }|d   }|d	   }|d
   }|d   }|j                  |t        |      dz         }|r  ||      } ||      }||z   |z
  }||d   z
  }	 |d   }|r$|d   }|dk7  rt        |      t        |      z  }n|}|rdk7  rt              t        |      z  }n}ddd|fddd|d   fddd|d   fddd|fdddt        |      fddd|fddd |d    fg}|r%|j                  d!d"d#|fd$d"d%|fd&d"d'fd(d)d*fg       |r |j                  d+d,d-fd.d,d/fd0d1d2fg       |	r|r|d   }d}d}d}t        j                  ||      D ]9  } |dz  } || d          || d         z   }!|! || d         z
  }"||"z  }||"k  s8|"}; |rt        |      t        |      z  }#nd}#|j                  d3d"d4|fd5d"d6|fd7d)d8|#fd9dd:|fg       |  y # t        $ r d}Y w xY ww);Ns9       rev      p1      p2  chain# chainlen     prev   deltas+          size    rawsize  chainsize     ratios      lindist extradist extraratios)      readsize largestblk rddensity srchunksry   c              3   .   K   | ]  }|k  s	|  y wr   r$   ).0r4   revlog_sizes     r   	<genexpr>z$debug_delta_chain.<locals>.<genexpr>S  s     C#{1B#Cs   
)rk  rl  rm  rc  rd  rf  r   r   rg  r   r-   s   %7dr4   ra  r   rb  r   s   chainidchainids   chainlens   %8dr   s   prevrevprevrevs	   deltatypes   %7sre  s   compsizes   %10drn  s
   uncompsizero  s	   chainsize	chainsizes
   chainratios   %9.5f
chainratios   lindistr@  lindists	   extradist	extradists
   extraratios   %10.5f
extraratios   readsizereadsizes   largestblocklargestblocks   readdensityreaddensitys   srchunkssrchunks)rX  r   r   data_configwith_sparse_readiterr   r   r4  
setdefault
IndexErrorr   extendr#  
slicechunk)%r   revsrk  rl  rm  auditorr   r   r   withsparsereadheaderall_revsr   r4   infocompuncomprf  r   r~  	basestartrevstart
lineardistr  r  r  r  r  r*   r  r  r  	revschunkblkendblksizer  r{  s%                                       @r   debug_delta_chainr  0  s      'GAGGEXXF''88N	  LL<<+JJ
eOF
L|7!fCCCJ Y#	  
 %&)*W!H	''	3z?Q3FGi(ISzH!D94J"T,%77I	BiG \*I{"9-f=
&
A~"9-i0@@
&
 VUC(FD$t*-FD$t*-G4&*c%j9G46;[0AB
 LL ':t<"G\6B!7KC"HlJG	 LLJ?!6;	B"I|ZH k\*IHLH&11!U; +	Ay}-y}0EE 51#66G#')#*L+ #I.x@LL ':x@$g~|L#X}kJ &*h?	 sY&  	G	s2   C<J I6D#J)AJ6JJJJr   )NTTT))r   r    r   r   rz   r   r   r	   r#  r'   objectr   r   r,   r6   r9   r<   r@   rC   rH   rL   rN   rR   rU   r[   r_   rb   rf   ro   rr   ru   r   r   r  r   r6  boolrV  rX  r  r$   r   r   <module>r     s     
  H	 4( f1  gAt,/ -/ jq!3 "3 ii(1 )1 ia.3 /3 l+3 ,3 ia.3 /3 l+3 ,3 lT2C 3C m!T25 35 hQ- . lD1@ 2@ n2t4 5 m"d3A 4A oAt4	# 5	#  r48: 9: R6E 7E1h0
f\~
 07 $=N,,)-,9=,^b bN 
r   