[PATCH] hgweb: fix tab alignment in file view

Brodie Rao dackze at gmail.com
Thu May 14 15:09:30 CDT 2009


# HG changeset patch
# User Brodie Rao <me+hg at dackz.net>
# Date 1242331656 14400
# Node ID f59baf8f314e1ae5e1ab9bc75053e59dcf4c7518
# Parent  a00a4db76a15b79019e9078e15df0eaf6e7af312
hgweb: fix tab alignment in file view

With the switch from table-based to div-based file output, line numbers were
counting towards tab stop alignment, throwing off the alignment of all output.

CSS 2 specifies that tab stop calculation starts at the left edge of an
element's content area. By wrapping each line in <tt> and setting a style of
display: inline-block, the content area is effectively reset.

diff --git a/templates/coal/map b/templates/coal/map
--- a/templates/coal/map
+++ b/templates/coal/map
@@ -52,7 +52,7 @@ filerevision = ../paper/filerevision.tmp
 fileannotate = ../paper/fileannotate.tmpl
 filediff = ../paper/filediff.tmpl
 filelog = ../paper/filelog.tmpl
-fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
+fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> <tt>{line|escape}</tt></div>'
 filelogentry = ../paper/filelogentry.tmpl
 
 annotateline = '
diff --git a/templates/gitweb/map b/templates/gitweb/map
--- a/templates/gitweb/map
+++ b/templates/gitweb/map
@@ -70,7 +70,7 @@ filerevision = filerevision.tmpl
 fileannotate = fileannotate.tmpl
 filediff = filediff.tmpl
 filelog = filelog.tmpl
-fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</pre></div>'
+fileline = '<div style="font-family:monospace" class="parity#parity# source"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> <tt>#line|escape#</tt></div>'
 annotateline = '
   <tr style="font-family:monospace" class="parity#parity#">
     <td class="linenr" style="text-align: right;">
diff --git a/templates/monoblue/map b/templates/monoblue/map
--- a/templates/monoblue/map
+++ b/templates/monoblue/map
@@ -61,7 +61,7 @@ filerevision = filerevision.tmpl
 fileannotate = fileannotate.tmpl
 filediff = filediff.tmpl
 filelog = filelog.tmpl
-fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</pre></div>'
+fileline = '<div style="font-family:monospace" class="parity#parity# source"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> <tt>#line|escape#</tt></div>'
 annotateline = '
   <tr class="parity{parity}">
     <td class="linenr">
diff --git a/templates/paper/map b/templates/paper/map
--- a/templates/paper/map
+++ b/templates/paper/map
@@ -52,7 +52,7 @@ filerevision = filerevision.tmpl
 fileannotate = fileannotate.tmpl
 filediff = filediff.tmpl
 filelog = filelog.tmpl
-fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
+fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> <tt>{line|escape}</tt></div>'
 filelogentry = filelogentry.tmpl
 
 annotateline = '
diff --git a/templates/spartan/map b/templates/spartan/map
--- a/templates/spartan/map
+++ b/templates/spartan/map
@@ -42,7 +42,7 @@ filerevision = filerevision.tmpl
 fileannotate = fileannotate.tmpl
 filediff = filediff.tmpl
 filelog = filelog.tmpl
-fileline = '<div class="parity#parity#"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</div>'
+fileline = '<div class="parity#parity# source"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a> <tt>#line|escape#</tt></div>'
 filelogentry = filelogentry.tmpl
 annotateline = '
   <tr class="parity#parity#">
diff --git a/templates/static/style-coal.css b/templates/static/style-coal.css
--- a/templates/static/style-coal.css
+++ b/templates/static/style-coal.css
@@ -192,6 +192,7 @@ h3 {
 .sourcefirst { border-bottom: 1px solid #999; font-weight: bold; font-size: smaller; }
 .sourcelast { border-top: 1px solid #999; }
 .source a { color: #999; font-size: smaller; font-family: monospace;}
+.source tt { display: inline-block; }
 .bottomline { border-bottom: 1px solid #999; }
 
 .fileline { font-family: monospace; }
diff --git a/templates/static/style-gitweb.css b/templates/static/style-gitweb.css
--- a/templates/static/style-gitweb.css
+++ b/templates/static/style-gitweb.css
@@ -48,7 +48,12 @@ div.pre { font-family:monospace; font-si
 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
+
 .linenr { color:#999999; text-decoration:none }
+.source { font-family: monospace; white-space: pre; }
+.source a { display: block; float: left; font-family: monospace; }
+.source tt { display: inline-block; }
+
 div.rss_logo { float: right; white-space: nowrap; }
 div.rss_logo a {
 	padding:3px 6px; line-height:10px;
diff --git a/templates/static/style-monoblue.css b/templates/static/style-monoblue.css
--- a/templates/static/style-monoblue.css
+++ b/templates/static/style-monoblue.css
@@ -279,6 +279,8 @@ div.parity1:hover {
   color: #999;
   text-align: right;
 }
+.source { font-family: monospace; white-space: pre; }
+.source tt { display: inline-block; }
 .lineno {
   text-align: right;
 }
diff --git a/templates/static/style-paper.css b/templates/static/style-paper.css
--- a/templates/static/style-paper.css
+++ b/templates/static/style-paper.css
@@ -180,7 +180,8 @@ h3 {
 }
 .sourcefirst { border-bottom: 1px solid #999; font-weight: bold; font-size: smaller; }
 .sourcelast { border-top: 1px solid #999; }
-.source a { color: #999; font-size: smaller; font-family: monospace;}
+.source a { color: #999; font-size: smaller; font-family: monospace; }
+.source tt { display: inline-block; }
 .bottomline { border-bottom: 1px solid #999; }
 
 .fileline { font-family: monospace; }
diff --git a/templates/static/style.css b/templates/static/style.css
--- a/templates/static/style.css
+++ b/templates/static/style.css
@@ -5,7 +5,9 @@ a { text-decoration:none; }
 .parity0 { background-color: #dddddd; }
 .parity1 { background-color: #eeeeee; }
 .lineno { width: 60px; color: #aaaaaa; font-size: smaller;
-          text-align: right; padding-right:1em; }
+          text-align: right; }
+.source { font-family: monospace; white-space: pre; }
+.source tt { display: inline-block; }
 .plusline { color: green; }
 .minusline { color: red; }
 .atline { color: purple; }
diff --git a/tests/test-hgweb-commands.out b/tests/test-hgweb-commands.out
index d25fe897d40f628adc63cf9c5f0182f7db1d09a3..d93bf6d37a37ed0a7570201e1c8f956994766409
GIT binary patch
literal 29180
zc%1D$32-FUbxSaYog~f at C<r*je_PhBcBPq~8Qs^ghs55yili;P2qAi=|I9S%>7I1=
zNUJ?uU@&D9V%Clg4kkctxD4h<Y|6$MimPlALokOE3RB#$<NyLTp(qnO at BQE1)7{fE
z8i{3>LqceJ{(t|y|KEH6UH!Yak&IA_l#0a4Q)1Af9+6~O(Q-tV#H{Xq!^?tXOj4Ol
z>&7GlPz;)}bYq4{CP^ETmdO*-lF}-TG?LAF&Lom1lT2RHa at 33@<8d;QF_fZ3^paI9
zS%6Yi^=UH_={t32K_yevFcn?v7ZS0!K&Y0{k#N5tnHfb9PEAGnvJ|KTsAl#HdCMyH
zh+-ny8H>Yz2@&wOi>ocYAfzIsZ)r42)-uYfo+HsHwkdL|VpN|9t<a|`+9a%A?H5d{
zW(ATrXf}k11o)$XQ4sxuB-NsZCRw!VNIt?+ES07#YFg#l^@+R{x=TeFaLB1dcV|2r
zPr&bJJl?~8o7vw!(E*77IMpm;2F5vfxeUtq!k64&ON3g{gq%#$j`nOk*-6`_ct^au
zwY`&e%3ZXxJ>Hd(lWD14PG+giC40qHR%p;Ev0j9X8>CMvS$W;SOVX!F1<sj1kzKMz
zT96bqwX7kL=;(#N at dW-&wD<CsK9Tn$DzS`fPHY75VkxaEX1?}-G7t{Q=$ZxGC)P}n
z_6s}nRzVf`jAdo2s){DMySqgXFpxGVLid<ODFcY$t4WP1D!8JA7LHd0#C)MPZPXXh
z(SQn7SS`!2S1c(<U^l@|Gl(m7lBC(Vl<92imJ)4qP!_2z+nuCxvbDP_nWpjfj&yfd
zds3$Da+Y>=wo(ajX5(`G%2F at F1!b8<S?U+|eAOu}nRE`S;w4JkvhAHxyVR9Twso{g
z@$Pss(~<4WwzYL->sFO|5iY38Y<7hSvOYD4^oi(kQwy$p!F4aV?giJq;JO!F_k!zQ
zaNX5icbINDeiu}*hy{gtx@~88&>8n&WrE}t6AKXs(H}4DnuT2xx@(pWY+F0JV`z{d
zc`~$p&E^eji4YaV(_7by;=t$t`NI0qEt|ofCq!{@t3aITPft(BrdwmWkrPLU`Ro%3
z9N=8XWJ`wi^fAQ#rF+JD*3MR}O1NFA7TrF=22%+Z;MrXYEY#UuqG?H%k`ePcY>gGQ
zoM3ZaDM&dgvIfwoz5=x*g4)wB7<yW_Oo7<^0#Hq+J6njRbDr=4p51KCs1)Q&tsqs_
z6D>+bYQ!?8>5#VQPD^CpMHGQ|YkNcN at Q|IOkcvfB$p8^uV+Nxc7$cy(?FqQCKViuF
z1+-X%88&peNG!OFnlud443dB*ABEwOkuU<HEuXY5GlfGf&#00KqDBTwibf3-qo=(<
zwNju72<g})`ArCF2^dqVDVbPCFNg(dWJ-o2sUiX^g&Z-Bj8_W~57z=%E>g1Lajswp
zaK3E6^p#Y`9EZM?u at u}~Og^f@`cm#}#GD}&^S*>aNU=7=88!goA5%!--)ay%sHUb9
zUQ;im$fjq{(K9HR)(9!rVppS+Ra6=nlQv-E(@=8GHRqCFY9LCsACn&Jf^C-(6?8yv
zE9W76!f;TPf-~Nvl99=SU@{hS&mt-p0u at tziiRf1-kx+yAd2h^NO*UZKul#9T(`!#
zK#R5(A$VTVEFqOu$`yKQnIt_!xcP5^T`;9!WY7{po|r8J^mtk~WRoZwyH@}jR!}Tb
zpr#47!_gEG7ZKovCQT_h+)61xN|HUK%n=i4S?J!q4o^rm#aAGg!T=!-05&Q`-tTap
z-F9&3rIj4}&SDaayD}^9DsK)t*o>`wu#2r7df8_PfJ{y17Jx58%Janrg%5+%bOsb9
zL$PM!0>>l!=1`Ed88QQ616{V{AcQ>?t}qqdzKPV*cqbbLl>^_Xxh!JMXpDpuzh~1Y
zVn49d3kF-#X13kQXHspQi9 at +gZw@+_M5+cSWSW&qs#WJ|52;lB`-4X{ft4^}!RkY&
z4?B~I`A~07|3?Jp!F?YXJ&0kTX(8D9a0FYSwWUD7@==Och~KkUQD^3U9oJ66;ut at C
zAdVrk2Qp+{kqik5w>;5H2x3E;j#gR<XstRG7VHEJOZ8xf%pUF35$=?&a=gb&nuItW
zpDp`%he$rl&#k*JvcdVdlNiKw6}O1(mukl^A?~Mo9RNKBcNi7OW#%UEZzW>hH<~Yz
zjUdB#f;d?}!Abyu+#fER%C3<}Iei7AR)v@|Q}DE42hHkBsX1i_D3e!I84y)RLu$nq
z-fvu+YtUq>fNG=CkZIe!HTIy$&)p!WdAZEzYb(JStPAL!S*XL;r>K!dPvW=Grd~2K
zG^-epsHPyR1s6k!tYoucyPX3Qa8-~-Ge|ce!a_`Wbqy*wX1 at 2>6=EjntodZU8@`}u
zB@=N8sc1AxL>Z)@l~i?cZKaCX2Es=&>5@#kB$JgSi>gDhxw)C7ZN|@sV5>{8)g{<k
zNl>ylxmBx3G~NOT6D<j{YE>x8HWy`^i?Xfe8t{acgNYTqxajH;T%uBNNmp=5S8&M>
zR&YsIa7kBi$$A7gFR3M6sU=;hCEuUalCIQ}uGEtAlUmu!2IA+rgwK%%vVNT>4=PGl
zCJ&9<P0DLha6JH)o5V>RF1PA3B^w4vy*Kw@$PhEn#1}i(DpyD9P17QgIVls at gIGR?
zq1SA{K|waxJA0gSB+^Ju10xKfmWqY%TKq at Z))EhjU{##m!NAO at Cai2s?=+(LOJpe$
zH6YfD;xB1yC-%C1tv1qy<m$tbTzU5tVct4C!TLyLSXB}%fAHi>u)^{yKltIQ6Z>aT
zU!B-HMy#1Tg(P!`Aq+DHU4G0w8f39p_+%ta(?NhVWSG-cZD>$lb~p)hBQ*qvsb(by
z*ic`-c at WCuQwp7Cw|G~PM2|lZ{{&@(^;b7P8Cm0O3E!bg8*AJ+;@iR7Qjwv(pA?Nn
z at 4U&;A`h&ckJ$i%FST$I3n#7M)3U4-4 at Kc31R+NR*Orh9t?bUPz&oEPua0QHBEoYb
ztVXg8n2R>$P(P4zuuiZt7dYo5tmRSOpoBY8_sEP{DikDRhM#doTjQRpae5-|NfUm`
zWQ!9Xkdd`p?Bgb$10?VF5Du&VmCxYJWx?|}Llb($2iP$8!##)k*bH-9oLe98S+M$3
z1|Ve_O2+bM4rR`|iGwF^h?;CjjqD-x2v9}xKn{B*F}Fk_r&!Z8T|JZVrxI)2!1iFB
zjA7QH#?hGfe=^2Lq4H?VEGJ`%AcqO;=9!RGZPR<Q8;91GastD6-7kP=m4J(elFM7Y
zLfM3|u(O=ZaEo^;AH)Sz4o`_lob)0zx at 8mAq$%%gtDv-78P+|K%4{kKZZ}uJSAu5B
zPbmaoS&kKecJnSDB+4zw13UWyIEM$mAr*m8V7y%z$5b+Hh~e1*6CMPdTG}l3Ist}#
z#Dl6T9`a*`Db9lXu>11CyYhWX${$C9v37z$ybB?@iL_#RcBzxn)>uzpIuPWgQ=WSS
z at W(k`VSg_Z(k6ZS;RfopsQD7ppaRT3FiacfATWQ>TzU56AamWD?p1Q#p9}`M?jGf+
zpY1is)n at yw1FN#V#>gsc56u{uy at 43lswfqCdM0?7z-?GXfDcxBB3MLn4>hL1Wb>&=
zKF7iO&|&yWLurH8znsKi4(B}%Q5X_dz?@SYQfC$O;~j{MIIimuozVTD59q$HD5OTE
z^#hMZYyhVi7N~yNl`qbuydujKRF10;!zhp`NiD%Q8#B`}Z|cvBY5_#NROTtCk+Ls$
z>RGddM)tHna$!$pwK)LmEj=IB*a$0I+!=aLs>-abq)lr2v=%sofj!Vl4Hs@%LuZ^7
z`V#Kn)+GGtz*1m$Cu?kT8yRRk85q#UV7vSSI at -#$#AMv<i+3{!h9chOf^ZbwWyB1w
zBiS3W04!741yXkzqxn(`mW!}z#41H at -H4TpyjXlL7Wbi_^|Pp|9V+l><Pb!zifswJ
zjgcymRq%LlVCtZC?s?%feDmJ2hK2IGFCm9#@vxR-<V^eIb?rmN-Vx<fqs~z;_8IZU
zK7sfR{M$5aTwkbCdui1JxWgF!&Q)|ZqD2&4{Wl5bD_lFM4ml`2Uy;o#=ALKhd^mQS
zm+xV_jh*zXPaJ`5gTb-?gyei>P-Bj>$e_l^S!JMN&?BVS9Cb8|5V5ogv*m;VDzRA1
zP5Y`@?@;4i!^0oOdc!Qzz)}MWJdo>FO>O5b+~6_kxh1s+TPs?tYDI_?=c^G7!4m at u
zMW=<L(?Zdy%Kmg7TdHBW%lpc^C4*(Gg(}uU73=U;vDWblz{jYDwKN(XQ?g{k;5Y=3
zTtz)>I7gb2c&p$){6}|YBn|pv=V0V1a+p-#(lM&ZN_HGy#P!iEkFgq0xt8)FtC1b{
z+lJz7?t}5~!&x5-KC0(~Uj{tS=p`^H2|R~NO*3HqYY%FNkglK`?ATUh52+YdJ<6?o
zM0VC8(PZcdODP8V>^xpOrvhQ5Pt)xUJ<4A5%a1AYtwD56ondeFHOaJM<;g}c5!|;$
zsfK=9Cj4xxVS*=jF-6J;BQdQk@{M0oS&OF2G|h5Yeg>4=7S_dx3P4J>^8G?G*#>5u
z;vNTIne4_99Jq{(jX;cLe9pS&VBi=QzjbrQbE`>U=Tl;1w4G5TG9?*AmcUu{ld&<u
z_jG*=8H=}&#5jE71-phXcI5=R1!k1tvmBA)Ag4;!LM)?1aX71jjk7D?N#tr2>aF$E
zn1fTyDNlma4-9wdvxP|}tqWyVQcb=v41dPQ$9owcxxV!ijZSmN+q9yW+n1P`kyP5$
z+6 at hM3zc&eV6!ES8SAE<Fq0Yhe`f+d;eUuebz=qD9a$V%Y~>Xb9E`OV+nQJpa4Uu^
zi*>XEP7aZ=cE-{)r)Wcx#b}qC3;Glt)omia9z1G^J&dfc2O=zek}^Dzy<AgZYcc=c
zPnP4MZ`+eijEwHsJQyhGU{zj7E$@vuW14YL^~%7+)@=iW8wUIa!SSAUCreT$1_npg
zI at w7Ozg;ex7+t+?B-rPjouXwSjGh=+JvxX<R0|$+p4dJzIP5;Hq$-Hq78ZoNu={-C
z0(RL#YO$X)gRdo@#46>%-~mk)fhODWZ>L|P;CpRqh9oN`lkJl&fH5|-fvhA+uHn8R
z;7L?2x5X&6bj}f&Q~S)>Q(jJ*?JKxgF1X8P!&I8JU|<tRtE;7gW&&7Z1yE&e>D&Z2
zZT0|-$qs21`Fqu)h at yue6^0CG6nFMI_!Wy50N9pM%%DY8%Frf}tCQGb<HL2>p!nf|
z8(KZQVRQ!oE)TAz`WUWAB9qlveEc8)qB`1Otu??<xoohuTG&7%ZLs$7vIsE%LG=aR
zBKsf!ZbFdG at fbv%Iq+(G_VAXDahNPw3UIc$T8>?IPhxxp)6c~obm6sGB;r!xBiTTA
zWW|oEtf!+m%2Q(c#n5_j`1+mQ%b at lW3PzUT9G1G1Aj_7K@Kw$>Jw-d{6ZCM%m4iJE
zbXiSIZun>fhp at XGagu(!easqXM61u;u8pT~zBn>C6E>B-kpKn`fdG3^i^A0n?Ift1
zJrMQHpjOGy$XGhp!hpwZ^Un>T0qGJonlNHOS0;+!1N0(>7Wi)_*ue!)ru=bKtt8+R
z7v5GsJMd8{5H*sFRFu++s#r?xfBr(%^~qAv4&ZWzUMiZUGzM}dEnU)N;LiGWiTJuR
zTJU2H|Jc5 at kzlf26LGz-bcVU|In+WHC(9 at 4%yNKrkG>uR(se&MOyYI^)D4IdDzm)S
zVs>6}*XWk at +gBfd_YLp<_fyN39J}&IUpepZ?#{mQuXj!V^eyRx!OtE$*7)s*ZoTB<
zckX%TOOdu?Hw`5V- at 19_O@l|R9{R<7$uo|B_sBcW`G at a({+cZtf3WYK%fGWNzU0~C
z_Mi7B7k1}f*>m8EH!h|--r2ut+haf6bix<U)c)h<ebX1-^tY#f?b+LmGk3h+(X at ZX
z|9<PIN4#|Mu5*W9o!t8E1H;#RchjopmahK6<n`NE7LGjn$#0zU*gs!$%6+f2T>DV-
z=iaz=Ag8=>(<!I?@bUv=r~fu{$urT15B$rn at 85aS<L50&Wm3m1625TkeHW~H?7*6p
zn-?81^r_+dSN(WR{8wEK=l7hyKmU{dho2gGen-pZ$FF|thHq}{dF9FT{_?q3<?9<>
zXnFLO;gzqEYmYeYi0l3+{bKLkx4yS&?5ycc&u_i;&dFETJo=k^kN*BmV at v*TvM at EB
zS##YrPpo at j;J)J%H-CM}qGL9m_w&84FMhrG^dDbz?!G-wT>WoXKQa2u^MBv6^o85M
z+xFstUtaa;Kl{0Kq%`!S?8BcrdE(6OH(z_{%9pQu^s%dsyk5U$-}+zw_Kn}KZ at qak
za@)RdeC3Ygg->_g_ZO=c-FeZ9$CrP(J95Lh7mSc=?~3M*JNu=l?_Yn`voG8;y5(oT
zS+nhtXKs1<mWIz6TbedqcJ^r}onRidZs3k1?p at S;@t&)S_a^@5_(fN2{8Ha at e|puu
z`+o8EgD0hij2r*+^tT_l<<a*}d}R4?rGLEg;q}_u&pdSYgI6#6-e=z2bMcbTKXCE>
z;!$TmeGEDGfqx%1qTgJyB>9 at s`|IqRyH2?9S5L|>ANcFH|K^W(760jX-+TM5$A9<U
z<h1#kb!qyS>YxANmv28Ye#x;H+;+)HS1(#TarDWV{r7+Mj02axOCH*KTJC43-FQ*+
z<yT}TPW<eNSB~#$?drR%`Suo}<-rF}J at f0oKQZ>j?U!EmcH=W!`@Z(}WsL{UdSvr!
zUwrD)$)}^K3;*DJ;nMZjy?CS9AN{Y+m!G=iCyn553 at Q~SK#ObcP|*LZ1m+36l4EG_
z0mi>7DF!vk(6*6L_6=VX&=zkeTd0-SWwKSb$ZAAEWv~g6V#&-`8PrHdSl&%o)uz@|
zB(j^J)sD(EqZ_RH*`w(i?In97F|h2=J)H+n8)a{I?csN^StmY3Q at xj!kuh>MtHU@?
z%Izj;DKm+tK$D{^-RL0=GW+qsCBoq-`(bdHENVK^!}3NC>4-x-PaHsr{q(}pH7knG
znf4H~AgL-fdf9ty`48iTq$)YhDSjem`{f<G`QWTnP}G?oQqVP>EvnbILQ*uSca&wp
zKv^*%s)0d at hSQ9uRXsDwS7*PF0)XtP<_t<T*5|(9qugmw&J_M?jB<OiWE53fZ1#i4
z&V2og4O^m<5wWj5BtZ)dQMzPVI;2&gB*3B&=6A3k<e!b9ha`&@ezzeQU+}w+ai*l1
zZsRoNMANz|_d+ZebKZ+rooptP38NWG!yc1{ka7~y15+t52Ljb9$h+82*cvJshxo*m
zWUXERT_7vP2)+w>Hz`O4<kdYSj$8!2grJ8}^A**RfJ!AJh|8$}i}<Pw{AW1uSuzM?
z5Iv$|&k~oFJQ0sKa_x7zoNa6Ow+Ff*9oy~ayrvtV8=;DUr3ED;sZKM5(?M)Vu7&to
z*n_gRdREFfINl5GodPE1z0NWeEl<G;Fopt`M(m=xk2z)y?wD2B(`BoAx!;oO;SZl&
zHTHP1#rQLsUWss;xQ<cDw*-9VanSy{n_v|x%3^e!1KMPdV!6uCl*~IYW?#?D4Mkb`
zF#cr^FtRE6A7Tfbdn?+it5o>@DjVf&HXEvUVKid)bNwMbo<p`UlPXfd1>&A!@75yh
z<p#Ju#ELDR<@uXFh}Gd-SP>Sd07*=PUB$;Nyr`QB^TUL_=SG<V<FmLdHUKEg4UL9f
z-uI1^(x$GK&}=Q<6=lA-hqPl6PA~S5Xgt;dD(FKBcuH!6edhpi1vLkDpot}VrbYfa
z_$KF2=tK$}Yxx!e=wl1<&`}j6mABd2+714?a?Gp?OL*yawX>zoVfrDHBrz<(B4yWa
rbB7&S?D43bU|Xt)i_a#(*V9M_hljTfkC4HwYqxFRIyyK!I1u at NDNO4~



More information about the Mercurial-devel mailing list