<!--
	Copyright 2009 The Go Authors. All rights reserved.
	Use of this source code is governed by a BSD-style
	license that can be found in the LICENSE file.
-->
{{with .PAst}}
	<pre>{{node_html . $.FSet}}</pre>
{{end}}
{{with .PDoc}}
	<!-- PackageName is printed as title by the top-level template -->
	{{if $.IsPkg}}
		<p><code>import "{{html .ImportPath}}"</code></p>
	{{end}}
	{{comment_html .Doc}}
	{{if $.IsPkg}}
		{{with .Filenames}}
			<p>
			<h4>Package files</h4>
			<span style="font-size:90%">
			{{range .}}
				<a href="/{{.|srcLink}}">{{.|filename|html}}</a>
			{{end}}
			</span>
			</p>
		{{end}}
	{{end}}
	{{with .Consts}}
		<h2 id="Constants">Constants</h2>
		{{range .}}
			{{comment_html .Doc}}
			<pre>{{node_html .Decl $.FSet}}</pre>
		{{end}}
	{{end}}
	{{with .Vars}}
		<h2 id="Variables">Variables</h2>
		{{range .}}
			{{comment_html .Doc}}
			<pre>{{node_html .Decl $.FSet}}</pre>
		{{end}}
	{{end}}
	{{with .Funcs}}
		{{range .}}
			{{/* Name is a string - no need for FSet */}}
			{{$name_html := html .Name}}
			<h2 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h2>
			<p><code>{{node_html .Decl $.FSet}}</code></p>
			{{comment_html .Doc}}
			{{example_html .Name $.Examples $.FSet}}
		{{end}}
	{{end}}
	{{with .Types}}
		{{range .}}
			{{$tname := printf "%s" .Type.Name}}
			{{$tname_html := node_html .Type.Name $.FSet}}
			<h2 id="{{$tname_html}}">type <a href="/{{posLink_url .Decl $.FSet}}">{{$tname_html}}</a></h2>
			{{comment_html .Doc}}
			<p><pre>{{node_html .Decl $.FSet}}</pre></p>
			{{example_html $tname $.Examples $.FSet}}
			{{range .Consts}}
				{{comment_html .Doc}}
				<pre>{{node_html .Decl $.FSet}}</pre>
			{{end}}
			{{range .Vars}}
				{{comment_html .Doc}}
				<pre>{{node_html .Decl $.FSet}}</pre>
			{{end}}
			{{range .Factories}}
				{{$name_html := html .Name}}
				<h3 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
				<p><code>{{node_html .Decl $.FSet}}</code></p>
				{{comment_html .Doc}}
				{{example_html .Name $.Examples $.FSet}}
			{{end}}
			{{range .Methods}}
				{{$name_html := html .Name}}
				<h3 id="{{$tname_html}}.{{$name_html}}">func ({{node_html .Recv $.FSet}}) <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
				<p><code>{{node_html .Decl $.FSet}}</code></p>
				{{comment_html .Doc}}
				{{$name := printf "%s_%s" $tname .Name}}
				{{example_html $name $.Examples $.FSet}}
			{{end}}
		{{end}}
	{{end}}
	{{with .Bugs}}
		<h2 id="Bugs">Bugs</h2>
		{{range .}}
		{{comment_html .}}
		{{end}}
	{{end}}
{{end}}
{{with .PList}}
	<h2>Other packages</h2>
	<p>
	{{/* PList entries are strings - no need for FSet */}}
	{{range .}}
	<a href="?p={{urlquery .}}">{{html .}}</a><br />
	{{end}}
	</p>
{{end}}
{{with .Dirs}}
	<p class="detail">
	Need more packages? The
	<a href="http://godashboard.appspot.com/package">Package Dashboard</a>
	provides a list of <a href="/cmd/goinstall/">goinstallable</a> packages.
	</p>
	{{/* DirList entries are numbers and strings - no need for FSet */}}
	<h2 id="Subdirectories">Subdirectories</h2>
	<p>
	<table class="layout">
	<tr>
	<th align="left" colspan="{{html .MaxHeight}}">Name</th>
	<td width="25">&nbsp;</td>
	<th align="left">Synopsis</th>
	</tr>
	<tr>
	<th align="left"><a href="..">..</a></th>
	</tr>
	{{range .List}}
		<tr>
		{{repeat `<td width="25"></td>` .Depth}}
		<td align="left" colspan="{{html .Height}}"><a href="{{html .Path}}">{{html .Name}}</a></td>
		<td></td>
		<td align="left">{{html .Synopsis}}</td>
		</tr>
	{{end}}
	</table>
	</p>
{{end}}
