grim/hgweb-template-boot

Import the existing prosody theme. Thanks Zash!
draft default tip
2019-12-18, Gary Kramlich
f08c165473e9
Parents
Children
Import the existing prosody theme. Thanks Zash!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarks.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,30 @@
+{header}
+<title>{repo|escape}: bookmarks</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-bookmarks" title="Atom feed for {repo|escape}: bookmarks" />
+<link rel="canonical" href="{urlbase|escape}{url|escape}bookmarks" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(bookmarks=1)%reponav}
+
+<table class="table">
+<thead>
+<tr>
+ <th>bookmark</th>
+ <th>node</th>
+</tr>
+</thead>
+<tbody class="stripes2">
+{entries%bookmarkentry}
+</tbody>
+</table>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/branches.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,30 @@
+{header}
+<title>{repo|escape}: branches</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-branches" title="Atom feed for {repo|escape}: branches" />
+<link rel="canonical" href="{urlbase|escape}{url|escape}branches" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(branches=1)%reponav}
+
+<table class="table">
+<thead>
+<tr>
+ <th>branch</th>
+ <th>node</th>
+</tr>
+</thead>
+<tbody class="stripes2">
+{entries % branchentry}
+</tbody>
+</table>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/changeset.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,82 @@
+{header}
+<title>{repo|escape}: revision {node|short}: {desc|firstline|strip|escape}</title>
+<link rel="canonical" href="{urlbase|escape}{url|escape}rev/{node|short}" />
+<meta name="author" content="{author|person|escape}" />
+<meta name="description" content="{desc|firstline|strip|escape}" />
+<meta name="date" content="{date|shortdate}" />
+<meta name="dcterms.created" content="{date|shortdate}" />
+<meta name="revision" content="{node}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(log=1)%reponav}
+<h3>
+ changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+</div>
+
+<div class="row">
+<div class="col col-md-8">
+<p class="description" style="white-space:pre-wrap">{desc|strip|escape|websub|nonempty}</p>
+</div>
+
+<div class="col col-md-4">
+<dl class="dl-horizontal" id="changesetEntry">
+<dt>author</dt>
+<dd>{author|person|escape}</dd>
+<dt>date</dt>
+<dd><time datetime="{date|rfc3339date}">{date|age}</time></dd>
+{if(obsolete, '
+<dt>obsolete</dt>
+<dd>{join(succsandmarkers%obsfateentry, '<br>\n')}</dd>
+')}
+{if(instabilities, '
+<dt>unstable</dt>
+<dd>{join(whyunstable%whyunstableentry, '<br>\n')}</dd>
+')}
+<tr>
+<dt>branch</dt>
+<dd>{branch|escape}</dd>
+<dt>parents</dt>
+<dd>{ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}</dd>
+<dt>children</dt>
+<dd>{child%changesetchild}</dd>
+<dt>files</dt>
+<dd><ul class="list-unstyled">{files}</ul></dd>
+</dl>
+
+</div>
+</div>
+
+<div class="row">
+<dl class="dl-horizontal">
+ <dt>diffstat</dt>
+ <dd>
+ <details>
+ <summary>{diffsummary}</summary>
+ <div id="diffstatdetails">
+ <table class="diffstat-table stripes2">{diffstat}</table>
+ </div>
+ </dd>
+</dl>
+
+<p class="text-right">
+<a class="btn btn-success" rel="alternate" type="text/x-diff" download="{node|short}.patch" href="{url|urlescape}raw-rev/{symrev}">&darr; Download patch</a></li>
+</p>
+
+<div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="#">on</a></div>
+<div class="sourcefirst"> line diff</div>
+<div class="diffblocks">
+{diff}
+</div>
+</div>
+
+</div>
+</div>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/diffstat.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,8 @@
+ <tr>
+ <td class="diffstat-file"><a href="#l{fileno}.1">{file|escape}</a></td>
+ <td class="diffstat-total" align="right">{total}</td>
+ <td class="diffstat-graph">
+ <span class="diffstat-add" style="width:{addpct}%;">&nbsp;</span>
+ <span class="diffstat-remove" style="width:{removepct}%;">&nbsp;</span>
+ </td>
+ </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/error.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,23 @@
+{header}
+<title>{repo|escape}: error</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+<h3>error</h3>
+<div class="alert alert-danger">
+<p>
+An error occurred while processing your request:
+</p>
+<p>
+{error|escape}
+</p>
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fileannotate.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,41 @@
+{header}
+<link rel="canonical" href="{urlbase|escape}{url|escape}annotate/{node|short}/{file|escape}" />
+<title>{repo|escape}: {file|escape} annotate</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(file=1)%reponav}
+<h3>
+ file {file|escape} in changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+
+{dict(annotate=1)%filemenu}
+
+{diffoptsform}
+
+<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
+ renderDiffOptsForm();
+</script>
+
+<div class="overflow">
+<table id="annotate">
+<tbody class="stripes2 sourcelines"
+ data-logurl="{url|urlescape}log/{symrev}/{file|urlescape}"
+ data-selectabletag="TR"
+ data-ishead="{ishead}">
+ {annotate%annotateline}
+</tbody>
+</table>
+</div>
+</div>
+</div>
+
+<script type="text/javascript" src="{staticurl|urlescape}followlines.js"></script>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filecomparison.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,39 @@
+{header}
+<title>{repo|escape}: {file|escape} comparison</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(log=1)%reponav}
+<h3>
+ changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+<h4>file {file|escape}</h4>
+
+<div class="legend">
+ <span class="legendinfo equal">equal</span>
+ <span class="legendinfo delete">deleted</span>
+ <span class="legendinfo insert">inserted</span>
+ <span class="legendinfo replace">replaced</span>
+</div>
+
+<table class="table">
+ <thead class="header">
+ <tr>
+ <th>{leftrev}:{leftnode|short}</th>
+ <th>{rightrev}:{rightnode|short}</th>
+ </tr>
+ </thead>
+ {comparison}
+</table>
+
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filediff.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,26 @@
+{header}
+<title>{repo|escape}: {file|escape} diff</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(log=1)%reponav}
+<h3>
+ changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+<h4>file {file|escape}</h4>
+
+<div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="#">on</a></div>
+<div class="sourcefirst"> line diff</div>
+<div class="stripes2 diffblocks">
+{diff}
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filelog.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,43 @@
+{header}
+<title>{repo|escape}: {file|escape} history</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}" />
+<link rel="canonical" href="{urlbase|escape}{url|escape}log/{node|short}/{file|urlescape}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(file=1)%reponav}
+<h3>
+ file {file|escape} in changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+ {if(linerange,
+'<h4> (following lines {linerange}{if(descend, ', descending')} <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">all revisions for this file</a>)</h4>')}
+
+{dict(log=1)%filemenu}
+
+<table class="table">
+<tbody class="stripes2">
+{entries%filelogentry}
+</tbody>
+</table>
+
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}/{file|urlescape}{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}/{file|urlescape}{morevars%urlparameter}">more</a>
+</div>
+<div class="btn-group">
+{nav%filenav}
+</div>
+</nav>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filelogentry.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,9 @@
+ <tr>
+ <td class="description">
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>
+ {alltags}{rename%filelogrename}
+ </td>
+ <td class="age">{date|age}</td>
+ <td class="author">{author|person|escape}</td>
+ </tr>
+ {if(patch, '<tr><td colspan="3">{diff}</td></tr>')}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemenu.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,14 @@
+
+<p class="text-right">
+{ifeq(symrev,"tip",'
+<a class="btn btn-primary" rel="canonical" href="{url|urlescape}{key}/{node|short}/{file|urlescape}{sessionvars%urlparameter}">Permalink</a>
+','
+<a class="btn btn-primary" href="{url|urlescape}{key}/tip/{file|urlescape}{sessionvars%urlparameter}">View latest</a>
+')}
+<a class="btn btn-success" rel="alternate" download="{file|basename|urlescape}" href="{url|urlescape}raw-file/{symrev}/{file|urlescape}">&darr; Download file</a></li>
+</p>
+<ul class="nav nav-tabs nav-justified">
+<li class="{ifeq(key,"file","active","")}"><a class="btn btn-default" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">view</a></li>
+<li class="{ifeq(key,"log","active","")}"><a class="btn btn-default" href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">log</a></li>
+<li class="{ifeq(key,"annotate","active","")}"><a class="btn btn-default" href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filerevision.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,37 @@
+{header}
+<title>{repo|escape}: {node|short} {file|escape}</title>
+<link rel="canonical" href="{urlbase|escape}{url|escape}file/{node|short}/{file|escape}" />
+<meta name="dcterms.modified" content="{date|shortdate}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(file=1)%reponav}
+<h3>
+ file {file|escape} in changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+
+{dict(file=1)%filemenu}
+
+<div class="overflow">
+<div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="#">on</a></div>
+<div class="sourcefirst"> line source</div>
+<pre class="sourcelines stripes4 wrap"
+ data-logurl="{url|urlescape}log/{symrev}/{file|urlescape}"
+ data-selectabletag="SPAN"
+ data-ishead="{ishead}">
+{text%fileline}
+</pre>
+</div>
+
+<script type="text/javascript" src="{staticurl|urlescape}followlines.js"></script>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/footer.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,3 @@
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graph.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,65 @@
+{header}
+<title>{repo|escape}: revision graph</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}: log" />
+<link rel="canonical" href="{urlbase|escape}{url|escape}graph/{node|short}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(graph=1)%reponav}
+
+<noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
+
+<noscript>
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}graph/{symrev}{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}graph/{symrev}{morevars%urlparameter}">more</a>
+</div>
+</nav>
+</noscript>
+
+<div id="wrapper">
+<canvas id="graph"></canvas>
+<ul id="graphnodes" class="stripes2">{nodes%graphentry}</ul>
+</div>
+
+<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
+var data = {jsdata|json};
+var graph = new Graph();
+graph.scale({bg_height});
+graph.render(data);
+</script>
+
+<noscript>
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}graph/{symrev}{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}graph/{symrev}{morevars%urlparameter}">more</a>
+</div>
+</nav>
+</noscript>
+
+<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
+ ajaxScrollInit(
+ '{url|urlescape}graph/%next%{graphvars%urlparameter}',
+ '{nextentry%"{node}"}', <!-- NEXTHASH
+ function (htmlText) \{
+ var m = htmlText.match(/'(\w+)', <!-- NEXTHASH/);
+ return m ? m[1] : null;
+ },
+ '#wrapper',
+ '<div class="%class%" style="text-align: center;">%text%</div>',
+ 'graph'
+ );
+</script>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphentry.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,9 @@
+<li data-node="{node|short}">
+ <div class="fg">
+ <span class="desc">
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>
+ </span>
+ {alltags}
+ <div class="info"><span class="age">{date|age}</span>, by {author|person|escape}</div>
+ </div>
+</li>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/header.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+<head>
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="icon" href="//prosody.im/prosody.svg" type="image/png" />
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="//prosody.im/share/bootstrap/css/bootstrap.css" type="text/css" />
+<link rel="stylesheet" href="/style-boot.css" type="text/css" />
+<link rel="stylesheet" href="https://prosody.im/prosody.css" type="text/css" />
+<script type="text/javascript" src="{staticurl|urlescape}mercurial.js"></script>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/help.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,19 @@
+{header}
+<title>Help: {topic}</title>
+<link rel="canonical" href="{urlbase|escape}{url|escape}help/{topic|escape}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+<h2>Mercurial Help: {topic}</h2>
+<div id="doc">
+{rstdoc(doc, "html")}
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/helptopics.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,32 @@
+{header}
+<title>Help: {title}</title>
+<link rel="canonical" href="{urlbase|escape}{url|escape}help" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="menu">
+<h1>{repo|escape}</h1>
+<h2>Mercurial Help</h2>
+
+<table class="table">
+<tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
+{topics % helpentry}
+
+{if(earlycommands, '
+<tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
+{earlycommands % helpentry}
+')}
+
+{if(othercommands, '
+<tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
+{othercommands % helpentry}
+')}
+
+</table>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/index.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,48 @@
+{header}
+<title>Source repositories - Prosody IM</title>
+</head>
+<body>
+{navbar}
+
+<div class="container">
+<div class="row">
+<div class="jumbotron">
+<h1 id="prosody-im"><img src="//prosody.im/prosody.svg" /> Prosody IM</h1>
+<h2>Source Code Repositories</h2>
+<div class="container">
+<div class="col-md-3">
+<h2><a href="/trunk/">trunk</a> <span class="label label-warning">dev</span></h2>
+<p>Development branch</p>
+</div>
+<div class="col-md-3">
+<h2><a href="/0.11/">0.11</a> <span class="label label-success">stable</span></h2>
+<p>Stable branch</p>
+</div>
+<div class="col-md-3">
+<h2><a href="/site">site</a> <span class="label label-default">web</span></h2>
+<p>The prosody.im website</p>
+</div>
+<div class="col-md-3">
+<h2><a href="/prosody-modules/">modules</a></h2>
+<p>Community-maintained modules</p>
+</div>
+</div>
+</div>
+
+
+<table class="table">
+<thead>
+<tr>
+<th><a href="?sort={sort_name}">Name</a></th>
+<th><a href="?sort={sort_description}">Description</a></th>
+<th><a href="?sort={sort_lastchange}">Last modified</a></th>
+<th>&nbsp;</th>
+</tr>
+</thead>
+<tbody class="stripes2">
+{entries%indexentry}
+</tbody>
+</table>
+</div>
+</div>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/manifest.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,36 @@
+{header}
+<title>{repo|escape}: {node|short} {path|escape}</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(file=1)%reponav}
+<h3>
+ directory {path|escape} in changeset <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ {alltags}
+</h3>
+<table class="table">
+<thead>
+<tr>
+ <th class="name">name</th>
+ <th class="size">size</th>
+</tr>
+</thead>
+<tbody class="stripes2">
+<tr class="fileline">
+ <td class="name"><a href="{url|urlescape}file/{symrev}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
+ <td class="size"></td>
+</tr>
+{dentries%direntry}
+{fentries%fileentry}
+</tbody>
+</table>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/map Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,287 @@
+default = 'summary'
+
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+navbar = nav.tmpl
+reponav = reponav.tmpl
+
+summary = summary.tmpl
+changelog = shortlog.tmpl
+shortlog = shortlog.tmpl
+shortlogentry = shortlogentry.tmpl
+graph = graph.tmpl
+graphentry = graphentry.tmpl
+help = help.tmpl
+helptopics = helptopics.tmpl
+
+helpentry = '
+ <tr><td>
+ <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
+ {if(basename, '{basename|escape}', '{topic|escape}')}
+ </a>
+ </td><td>
+ {summary|escape}
+ </td></tr>'
+
+filemenu = filemenu.tmpl
+
+naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a class="btn btn-default" href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a class="btn btn-default" href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '<li><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></li> '
+filenolink = '{file|escape} '
+fileellipses = '...'
+diffstatlink = diffstat.tmpl
+diffstatnolink = diffstat.tmpl
+changelogentry = shortlogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+
+nav = '{before%naventry} {after%naventry}'
+navshort = '{before%navshortentry}{after%navshortentry}'
+navgraph = '{before%navgraphentry}{after%navgraphentry}'
+filenav = '{before%filenaventry}{after%filenaventry}'
+
+updirentry = '
+ <tr class="fileline">
+ <td class="name">
+ <a href="{url|urlescape}file/{symrev}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
+ </td>
+ <td class="size"></td>
+ <td class="permissions">drwxr-xr-x</td>
+ </tr>'
+
+direntry = '
+ <tr class="fileline dir">
+ <td class="name">
+ <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">&#128447; {basename|escape}/</a>
+ <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
+ {emptydirs|escape}
+ </a>
+ </td>
+ <td class="size"></td>
+ </tr>'
+
+fileentry = '
+ <tr class="fileline">
+ <td class="filename">
+ <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">
+ &#128462; {basename|escape}
+ </a>
+ </td>
+ <td class="size">{size}</td>
+ </tr>'
+
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filecomparison = filecomparison.tmpl
+filelog = filelog.tmpl
+fileline = '
+ <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
+filelogentry = filelogentry.tmpl
+
+annotateline = '
+ <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
+ <td class="annotate parity{blockparity}">
+ {if(blockhead,
+ '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {node|shortest}
+ </a>')}
+ <div class="annotate-info">
+ <div>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {node|short}</a>
+ {desc|escape|firstline}
+ </div>
+ <div><em>{author|person|escape}</em></div>
+ <div>parents: {parents%annotateparent}</div>
+ <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+ </div>
+ </td>
+ <td class="source followlines-btn-parent"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
+ </tr>'
+annotateparent = '
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>'
+diffblock = '<div class="inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
+difflineplus = '
+ <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
+difflineminus = '
+ <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
+difflineat = '
+ <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
+diffline = '
+ <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
+
+comparisonblock ='
+ <tbody class="block">
+ {lines}
+ </tbody>'
+comparisonline = '
+ <tr id="{lineid}">
+ <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
+ <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
+ </tr>'
+
+changesetparent = '<a rel="prev" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
+
+changesetparentdiff = '
+ {changesetparent}
+ {ifeq(node, basenode, '(current diff)', '({difffrom})')}'
+
+difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
+
+filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
+filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
+
+filerename = '{file|escape}@'
+filelogrename = '
+ <span class="base">
+ based on
+ <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {file|escape} in revision {node|short}
+ </a>
+ </span>'
+fileannotateparent = '
+ <tr>
+ <td class="metatag">parent:</td>
+ <td>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+changesetchild = ' <a rel="next" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
+fileannotatechild = '
+ <tr>
+ <td class="metatag">child:</td>
+ <td>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+tags = tags.tmpl
+tagentry = '
+ <tr class="tagEntry">
+ <td>
+ <a href="{url|urlescape}file/{tag|revescape}{sessionvars%urlparameter}">
+ {tag|escape}
+ </a>
+ </td>
+ <td class="node">
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+bookmarks = bookmarks.tmpl
+bookmarkentry = '
+ <tr class="tagEntry">
+ <td>
+ <a href="{url|urlescape}file/{bookmark|revescape}{sessionvars%urlparameter}">
+ {bookmark|escape}
+ </a>
+ </td>
+ <td class="node">
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+branches = branches.tmpl
+branchentry = '
+ <tr class="tagEntry">
+ <td>
+ <a href="{url|urlescape}file/{branch|revescape}{sessionvars%urlparameter}" class="{status}">
+ {branch|escape}
+ </a>
+ </td>
+ <td class="node">
+ <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+phasetag = '{ifeq(phase, 'public', '', '<span class="label label-default phase phase-{phase|escape}">{phase|escape}</span> ')}'
+obsoletetag = '{if(obsolete, '<span class="label label-danger obsolete">obsolete</span> ')}'
+instabilitytag = '<span class="label label-warning instability">{instability|escape}</span> '
+changelogtag = '<a href="{url|urlescape}rev/{name|revescape}{sessionvars%urlparameter}" class="label label-success tag">{name|escape}</a> '
+changesettag = '<span class="label label-success tag">{tag|escape}</span> '
+bookmarktag = '<a href="{url|urlescape}rev/{name|revescape}{sessionvars%urlparameter}" class="label label-default bookmark">{name|escape}</a> '
+changesetbookmark = '<span class="label label-default bookmark">{bookmark|escape}</span> '
+changelogbranchhead = '<span class="label label-primary branchhead">{name|escape}</span> '
+changelogbranchname = '<span class="label label-info branchname">{name|escape}</span> '
+alltags = '{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{bookmarks%bookmarktag}'
+
+successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
+obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
+obsfateverb = '{obsfateverb(successors, markers)}'
+obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
+obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
+obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
+obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}'
+instabilitychangesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
+divergentnode = '{instabilitychangesetlink} ({phase})'
+whyunstableentry = '{instability}: {if(divergentnodes, divergentnodes%divergentnode)} {reason} {instabilitychangesetlink}'
+
+filediffparent = '
+ <tr>
+ <th class="parent">parent {node|short}:</th>
+ <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <tr>
+ <th class="child">child {node|short}:</th>
+ <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+
+indexentry = '
+ <tr class="{labels}">
+ <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
+ <td>{description}</td>
+ <td class="age">{lastchange|rfc822date}</td>
+ <td class="indexlinks">{archives%indexarchiveentry}</td>
+ </tr>\n'
+indexarchiveentry = '<a title="Download {extension|escape} archive" href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{extension|escape}</a>'
+index = index.tmpl
+archiveentry = '
+ <li>
+ <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
+ </li>'
+notfound = notfound.tmpl
+error = error.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
+breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
+
+searchform = '
+ <form class="navbar-form navbar-right" action="{url|urlescape}log">
+ {sessionvars%hiddenformentry}
+ <input class="form-control" name="rev" title="{searchhint}" placeholder="Search" value="{query|escape}">
+ <button class="btn btn-default" type=submit>&#128269;</button>
+ <a class="btn btn-info" href="{url|urlescape}help/revsets">?</a>
+ </form>'
+searchhint = 'Find changesets by keywords (author, files, the commit message), revision
+ number or hash, or revset expression.'
+
+diffoptsform = '
+ <form id="diffopts-form"
+ data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
+ data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
+ data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
+ data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
+ <span>Ignore whitespace changes - </span>
+ <span>Everywhere:</span>
+ <input id="ignorews-checkbox" type="checkbox" />
+ <span>Within whitespace:</span>
+ <input id="ignorewsamount-checkbox" type="checkbox" />
+ <span>At end of lines:</span>
+ <input id="ignorewseol-checkbox" type="checkbox" />
+ </form>'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nav.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,24 @@
+<nav class="navbar navbar-default">
+ <div class="container">
+ <div class="navbar-header">
+ <a class="navbar-toggle collapsed" href="#navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </a>
+ <a class="navbar-brand" rel="index" href="/">Prosody IM</a>
+ </div>
+ <div id="navbar" class="navbar-collapse">
+ <ul class="nav navbar-nav">
+ <li><a href="//prosody.im/download">Download</a></li>
+ <li><a href="//prosody.im/doc">Documentation</a></li>
+ <li><a href="//prosody.im/discuss">Support</a></li>
+ <li><a href="//prosody.im/bugs">Issues</a></li>
+ <li class="active"><a href="//prosody.im/source">Source</a></li>
+ <li><a href="//prosody.im/doc/developers">Dev docs</a></li>
+ </ul>
+{if(repo, "{searchform}","")}
+ </div>
+ </div>
+</nav>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/notfound.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,12 @@
+{header}
+<title>Mercurial repository not found</title>
+</head>
+<body>
+
+<h2>Mercurial repository not found</h2>
+
+The specified repository "{repo|escape}" is unknown, sorry.
+
+Please go back to the <a href="{url|urlescape}">main repository list page</a>.
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/reponav.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,12 @@
+<ul class="nav nav-tabs nav-justified">
+<li{ifeq(key,"summary"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}">summary</a></li>
+<li{ifeq(key,"file"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+<li{ifeq(key,"log"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">changes</a></li>
+<li class="hidden-xs{ifeq(key,"graph"," active","")}"><a class="btn btn-default" href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
+<!--
+<li{ifeq(key,"branches"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
+<li{ifeq(key,"tags"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
+<li{ifeq(key,"bookmarks"," class=\"active\"","")}><a class="btn btn-default" href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
+-->
+</ul>
+<br/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/search.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,45 @@
+{header}
+<title>{repo|escape}: searching for {query|escape}</title>
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(log=1)%reponav}
+<h3>searching for '{query|escape}'</h3>
+
+<p>
+Assuming {modedesc}.
+{if(showforcekw, '<a href="{url|urlescape}log?rev={query|urlescape}&forcekw=1">
+Use {showforcekw}</a> instead.')}
+{if(showunforcekw, '<a href="{url|urlescape}log?rev={query|urlescape}">
+Use {showunforcekw}</a> instead.')}
+</p>
+
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}log{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}log{morevars%urlparameter}">more</a>
+</div>
+</nav>
+
+<table class="table">
+<tbody class="stripes2">
+{entries%shortlogentry}
+</tbody>
+</table>
+
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}log{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}log{morevars%urlparameter}">more</a>
+</div>
+</nav>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/shortlog.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,64 @@
+{header}
+<title>{repo|escape}: changes</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}" />
+<link rel="canonical" href="{urlbase|escape}{url|escape}shortlog/{node|short}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(log=1)%reponav}
+
+<noscript>
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}{morevars%urlparameter}">more</a>
+</div>
+<div class="btn-group">
+{changenav%navshort}
+</div>
+</nav>
+</noscript>
+
+<table class="table">
+<tbody class="stripes2">
+{entries%shortlogentry}
+</tbody>
+</table>
+
+<noscript>
+<nav class="btn-toolbar" role="group">
+<div class="btn-group">
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}{lessvars%urlparameter}">less</a>
+<a class="btn btn-default" href="{url|urlescape}log/{symrev}{morevars%urlparameter}">more</a>
+</div>
+<div class="btn-group">
+{changenav%navshort}
+</div>
+</nav>
+</noscript>
+
+<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
+ ajaxScrollInit(
+ '{url|urlescape}shortlog/%next%{sessionvars%urlparameter}',
+ '{nextentry%"{node}"}', <!-- NEXTHASH
+ function (htmlText) \{
+ var m = htmlText.match(/'(\w+)', <!-- NEXTHASH/);
+ return m ? m[1] : null;
+ },
+ '.table > tbody',
+ '<tr class="%class%">\\
+ <td colspan="3" style="text-align: center;">%text%</td>\\
+ </tr>'
+ );
+</script>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/shortlogentry.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,8 @@
+ <tr>
+ <td class="description">
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>
+ {alltags}
+ </td>
+ <td class="age"><time datetime="{date|rfc3339date}">{date|age}</time></td>
+ <td class="author">{author|person|escape}</td>
+ </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/summary.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,75 @@
+{header}
+ <title>{repo|escape}: Summary</title>
+ <link rel="alternate" type="application/atom+xml" href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="canonical" href="{urlbase|escape}{url|escape}" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<div class="jumbotron">
+<h1 id="web-name">{repo|escape}</h1>
+<h2 id="web-description">{desc|escape}</h2>
+</div>
+
+{dict(summary=1)%reponav}
+
+<div class="col col-md-12">
+<p id="web-motd">{motd|escape}</p>
+<p>To clone this repository using <a href="https://www.mercurial-scm.org/">Mercurial</a>, run:</p>
+<pre><code>hg clone &#39;{urlbase}{url|escape}&#39; prosody-{sub("^prosody-","",url|dirname|basename)|escape}</code></pre>
+<p>Subsequent updates can be downloaded simply by running:</p>
+<pre><code>hg pull -u</code></pre>
+<p><a rel="help" href="{url|urlescape}help{sessionvars%urlparameter}">Mercurial help</a></p>
+</div>
+
+<div class="col col-md-12">
+<h2><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">Changes</a></h2>
+<table class="table">
+{shortlog%shortlogentry}
+<tr class="light">
+<td colspan="2"><a class="list" href="{url|urlescape}shortlog{sessionvars%urlparameter}">...</a></td>
+</tr>
+</table>
+</div>
+</div>
+
+<div class="row">
+
+<div class="col col-md-4">
+<h2><a href="{url|urlescape}branches{sessionvars%urlparameter}">Branches</a></h2>
+<table class="table">
+{branches%branchentry}
+<tr class="light">
+<td colspan="2"><a class="list" href="{url|urlescape}branches{sessionvars%urlparameter}">...</a></td>
+</tr>
+</table>
+</div>
+
+<div class="col col-md-4">
+<h2><a href="{url|urlescape}tags{sessionvars%urlparameter}">Tags</a></h2>
+<table class="table">
+{tags%tagentry}
+<tr class="light">
+<td colspan="2"><a class="list" href="{url|urlescape}tags{sessionvars%urlparameter}">...</a></td>
+</tr>
+</table>
+</div>
+
+<div class="col col-md-4">
+<h2><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">Bookmarks</a></h2>
+<table class="table">
+{bookmarks%bookmarkentry}
+<tr class="light">
+<td colspan="2"><a class="list" href="{url|urlescape}bookmarks{sessionvars%urlparameter}">...</a></td>
+</tr>
+</table>
+</div>
+
+</div> <!-- /row -->
+
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tags.tmpl Wed Dec 18 14:48:55 2019 -0600
@@ -0,0 +1,29 @@
+{header}
+<title>{repo|escape}: tags</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url|urlescape}atom-tags" title="Atom feed for {repo|escape}: tags" />
+</head>
+<body>
+
+{navbar}
+
+<div class="container">
+<div class="row">
+<h1>{repo|escape}</h1>
+{dict(tags=1)%reponav}
+
+<table class="table">
+<thead>
+<tr>
+ <th>tag</th>
+ <th>node</th>
+</tr>
+</thead>
+<tbody class="stripes2">
+{entries%tagentry}
+</tbody>
+</table>
+</div>
+</div>
+
+{footer}