// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package assets contains template strings and other assets for the allocatord web interface.
//
// This package is auto-generated by "jiri go generate v.io/x/ref/services/allocator/allocatord"
// which in-turn uses https://github.com/jteeuwen/go-bindata/
// Code generated by go-bindata.
// sources:
// bad-request.tmpl.html
// dash.js
// dashboard.tmpl.html
// error.tmpl.html
// head.tmpl.html
// header.tmpl.html
// home.tmpl.html
// root.tmpl.html
// style.css
// DO NOT EDIT!

package assets

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func bindataRead(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(data))
	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	var buf bytes.Buffer
	_, err = io.Copy(&buf, gz)
	clErr := gz.Close()

	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}
	if clErr != nil {
		return nil, err
	}

	return buf.Bytes(), nil
}

type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

func (fi bindataFileInfo) Name() string {
	return fi.name
}
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _badRequestTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8e\x41\x0a\x02\x31\x0c\x00\xef\xfb\x8a\xf8\x00\x5b\xbc\x4a\xe8\x41\xf0\x2e\xfe\xa0\x9a\x40\x17\x56\x5b\x6b\x44\x96\xd2\xbf\xdb\x36\x7a\xf0\x14\x3a\x9d\x21\xc1\x0d\xc5\xab\xac\x89\x21\xc8\x6d\x71\x13\xfe\x06\x7b\x72\x13\x00\xca\x2c\x0b\xbb\x83\x27\x38\xf3\xe3\xc5\x4f\x41\xab\x68\x42\xab\x12\x5e\x22\xad\xc3\x0d\xbb\x7f\xb1\xbd\x3b\x4e\x99\xfb\x04\x28\xc5\x9c\xbc\x84\x5a\x3b\xb5\x5f\x5c\xca\x7b\x96\x00\xe6\x98\x73\xcc\xb0\xd5\xcf\xa4\xc1\x60\xfb\xde\xd5\x6a\x34\xd2\x84\xef\xd4\x44\xb4\xba\xba\x6d\x1a\x57\x7f\x02\x00\x00\xff\xff\xe0\x6f\x86\xe4\xcd\x00\x00\x00")

func badRequestTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_badRequestTmplHtml,
		"bad-request.tmpl.html",
	)
}

func badRequestTmplHtml() (*asset, error) {
	bytes, err := badRequestTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "bad-request.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _dashJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\x6d\x53\xdb\x3e\x12\x7f\xcf\xa7\xd8\xb6\xdc\xd8\xb9\x0b\x26\xa1\x0c\xed\x84\xe9\x74\x20\x70\x25\x73\xe5\xa1\x24\xf4\x5e\x30\x4c\x47\x58\x4a\xac\x56\x96\x52\x49\x06\xd2\x9b\x7c\xf7\x5b\xf9\x51\x26\x86\xff\xfc\x79\x61\xe2\xdd\xfd\xed\xae\xf6\x49\xeb\xdd\x5d\x18\xab\xe5\x4a\xf3\x45\x62\x61\x6f\x30\x3c\x80\x59\xc2\xe0\x3b\x91\x84\xf2\x2c\x85\xa3\xcc\x26\x4a\x9b\x08\x8e\x84\x80\x5c\xc8\x80\x66\x86\xe9\x07\x46\xa3\x2d\x04\xdf\x18\x06\x6a\x0e\x36\xe1\x06\x8c\xca\x74\xcc\x20\x56\x94\x01\xbe\x2e\xd4\x03\xd3\x92\x51\xb8\x5f\x01\x81\xe3\xe9\xc9\x8e\xb1\x2b\xc1\x1c\x4a\xf0\x98\x49\x44\xda\x84\x58\x88\x89\x84\x7b\x06\x73\x95\x49\x0a\x5c\x22\x91\xc1\xd7\xc9\xf8\xf4\x62\x7a\x0a\x73\x2e\x58\xb4\xb5\xf5\x40\x34\x50\x62\x12\xf8\x04\xf3\x4c\xc6\x96\x2b\x19\xf6\xe0\x7f\x5b\x00\xa8\xec\x84\x58\x02\x99\x41\x43\x56\xc1\x82\x49\xa6\x89\x45\x2f\x12\xa2\xad\x89\x50\xc4\x81\xc7\x67\x47\xd7\xb3\x29\xc2\x6f\x91\x00\x39\xd2\xfd\x59\x6e\x05\x1b\x41\xf0\x15\x11\x32\x5e\x41\x98\x9a\x5e\xd0\x2f\x99\x14\xf5\xfe\x87\xad\x1a\x76\xcd\xe1\x14\x89\xa2\x24\xe6\xb4\x75\xbf\x53\xef\xb7\xab\x29\x84\x9a\xfd\xde\xed\x54\xfb\x6d\x69\xda\x2a\x7f\x23\xe1\x35\x75\xe3\xab\x1b\x0c\x38\x59\x30\x08\xff\xd1\xa5\x70\xba\x32\x28\x92\x4b\x5c\xc5\xb6\xad\x3b\x5e\x66\x3b\x99\xe3\xec\x2c\x91\xf5\x9a\x95\x73\x96\x2a\xbd\xaa\x0c\x7d\x39\x7e\xc1\x12\x8a\xe5\x22\xc7\x2b\xcb\x9e\x9d\x23\x65\x69\x69\xeb\xbe\xc5\x34\x31\x71\x16\x86\xbb\xc3\xc1\xde\x7e\xf3\x78\xcd\x99\x13\x6e\x7e\xfd\xa5\x2b\x4e\xe8\x25\x5f\x28\xf2\xfe\xbe\x33\xf8\xbc\x3b\xdc\x2a\x8b\xe7\xe4\xe6\xfa\x68\x36\xb9\xbc\x98\xfe\x98\x5d\xfe\x98\x9e\x8e\x2f\x2f\x4e\x5c\x29\x15\xae\x06\xc3\x24\x18\xc1\xfb\x83\xc1\xa0\x50\x1c\xec\x55\xef\xf0\x4f\xd8\x2b\x69\xfb\x1e\x6d\xbf\xa4\x1d\x78\xb4\x83\x92\x36\xf4\xc1\xc3\x0a\x3d\xa4\x9e\xc6\x0a\xfe\xa1\x45\xc4\xc7\x07\xa4\xaf\x6b\x9f\xf3\x82\xff\xf1\xdf\xc9\xc9\xec\x0c\x5d\xfd\x30\x18\x1c\xb6\x18\x67\xa7\x93\x2f\x67\x33\xe4\xec\xbd\x7f\xc6\x19\x5f\x7e\xbd\xbc\x46\x46\xf0\x6e\x30\xf8\xf8\xfe\xe3\xbf\x83\x5a\x25\xcd\xb0\xb1\xb0\xf3\x26\x72\xca\x62\x25\xa9\x41\x29\xe7\x40\x85\x4f\xb1\x81\x2d\xa3\x17\x24\x65\x0e\x1f\x54\xf4\xd8\xe8\x79\x49\x40\x4a\xd5\xbf\xc0\x9e\xac\x26\xb1\xbd\x22\x1a\x01\x96\x69\x53\x76\x74\x01\xda\xce\xb4\x40\xd0\x76\x84\xff\xc3\xde\x61\x4e\x6f\x1b\x70\x12\xd1\xd2\xa1\xc3\x40\x06\xa5\x48\x69\xcb\xe7\x39\x52\xc5\xd6\xcc\x66\x5a\xb6\x14\xbd\xf9\xf4\x09\x70\xf0\xb0\x39\xc7\x51\xe5\xa4\xd6\x5b\xc5\x58\x99\x32\x9c\x75\xd9\x12\x12\x22\xa9\x40\xf7\x70\x40\x69\x37\x55\xe4\x82\xcb\x45\x1d\x8c\xc8\x3f\x92\x41\xf5\xcb\x93\x92\x33\x56\xd2\x6a\x25\x10\x5a\x1f\x6c\x3b\x0c\xde\x55\x40\x13\xf4\xa2\x38\xe1\x82\x6a\x86\xb3\x2c\x8a\x71\x24\xfe\x0a\x9f\x0d\x37\xf7\x87\x9e\x60\x88\x70\x56\x56\x40\x10\xe4\x9e\x09\x40\xaf\x9c\xbd\xcd\xac\x44\x55\x87\x74\xa4\xab\xab\x92\x6f\xb7\x43\x37\xbd\x7b\x91\xc5\x8c\x84\xbd\xbb\xc3\x12\x9f\x2d\xb1\xc7\x98\x8b\x7d\xe3\xc9\x4d\x4e\x83\x9b\x49\x65\x04\x4f\x14\x55\x86\x76\xb8\x65\x69\x64\x98\x60\x31\x06\x17\x8f\x67\xd5\x62\x21\xd8\x58\x10\x63\xc2\xa0\xa1\x1f\xd6\xd8\xd2\xee\x6b\x62\xeb\x9e\x9f\x93\x2f\x2e\x27\xae\xf5\xf3\xe3\x17\x1e\x1a\x6f\xd4\xd7\x99\xa8\x9c\xf7\x02\x2f\x14\x5e\x69\x72\xb1\x93\x87\x0f\xbd\x33\x89\x7a\xac\x2a\xcb\x55\x5c\x5e\x2e\xa6\xee\x6b\x00\x39\xf2\x0b\xa5\x1e\x3c\xa3\xcd\xc8\x56\x3c\x57\x6a\xa3\xfc\x59\xf8\x7e\x58\x1b\x67\x5a\x2b\xbd\x93\x9a\x05\x1a\x4e\x38\x65\x95\xe1\xed\x88\xfc\x24\x4f\x78\x6c\x4b\xac\xf9\x1c\xc0\xbf\x90\x52\xd4\x6d\xe1\x4e\xaf\x57\xaa\x06\x88\xa8\x92\xac\xa9\x10\x17\x85\xa6\x4a\x9a\x84\x8d\xf3\x60\x14\xec\xc3\x9a\xbb\xf6\xf4\xcc\x09\x17\x5e\xa5\xf9\x2a\x9e\xbb\xea\xc7\xe8\xb9\x9a\x58\xa5\x4b\x81\x8d\xdb\x55\xb4\x2f\xc5\xdc\x3f\xfa\x66\x76\x6f\xca\x7c\x12\xdc\x35\x5e\xcc\xa9\x7f\xbe\xd2\x5e\x71\xb9\x47\xd8\x9f\xa7\x24\x4e\x1a\x7f\x72\x1d\x8d\x53\xf9\x2c\xc2\xfc\x4a\xf6\xe8\xb9\xb9\x50\x0a\xab\x2f\x7a\xe0\x26\x23\x82\xff\x29\x9a\xfa\x48\x33\x92\x1b\x0a\xa9\x8a\xb3\x94\x49\x1b\x2d\x98\x3d\x15\xcc\xfd\x3c\x5e\x4d\x68\xa1\x3b\xe2\xb4\x57\x9f\xc6\xa9\x57\xcb\xbc\xb5\xbd\x22\xaa\x6f\xb2\x02\x90\xbf\xf4\xdb\xbc\x19\xf6\xdd\xd4\x6d\x46\xa3\x56\xfc\xe6\x38\x3f\xa6\xfc\x8f\xbb\xa2\xf6\x1b\xc4\xba\xf9\xf9\xc8\xa9\x4d\x46\xfe\xa4\x6f\x78\x09\x73\xbb\xda\xa8\x35\xed\x1b\xae\x60\xb8\x26\xd1\xb6\xb9\xa5\x32\xdc\x39\x8f\x57\xa6\xc4\x42\x0b\xba\x2c\xe2\xde\xc7\x99\x69\xe3\x06\xed\x57\x6c\x02\x25\x94\x1e\xf9\xb7\x89\xc7\x5e\x77\xa9\x7d\x38\x7a\xe2\x4e\x6b\xca\xe5\x77\x22\x32\x3c\xf1\xc0\xe3\x26\x25\xd7\xd3\xd2\x08\x62\x2e\xdd\xfe\xc7\xf2\x7a\x88\xce\xb9\x9c\x71\x9c\xe9\x78\x77\x0e\x06\x83\x5e\xdf\x87\x90\xa7\x6e\x08\x79\x7a\x09\xb2\xd0\x9c\x0a\xbc\x15\xcc\xe6\x09\x71\x2a\x8c\x60\x67\xd8\x6f\x91\x33\xc9\xed\x86\xac\xdb\x54\x56\x8e\x8a\xd5\x99\x12\x44\xdd\x06\xe7\xe7\xe7\x40\x69\x70\xb7\xee\x3f\x93\x4c\x70\x7f\x6e\x8b\x26\xa3\x34\x05\x12\xf4\x21\x48\xf0\xdf\x26\x22\xe5\x42\x70\x53\x0c\xa1\x2e\xe0\xdd\xba\x05\x68\xe1\xbd\x54\x94\xbf\xd6\x55\x29\xc7\x11\xd5\xe4\x31\xc4\x22\x71\xbb\xf5\x8c\xdc\x8b\x22\x5a\xb7\x45\x11\x97\xbb\xd7\x5d\xbf\x2c\xea\x7c\x93\xea\xf5\xab\xea\x7f\x61\x72\x17\x7b\xb9\x81\x5a\x25\xa8\xfb\x9f\x38\xeb\x61\xae\x55\x9a\x2f\xfd\x0b\xfe\xc0\x24\x16\x22\x97\xcf\x3a\xbf\xe5\x48\xc1\xef\x17\xfb\x9b\xbf\x32\x50\x0b\x45\x77\x77\xf7\x74\xa3\xa1\x74\x90\xda\x88\x50\x3a\x56\x22\x4b\x65\x18\xb8\xd9\x62\xb1\x12\x5c\xb0\x83\x4e\x09\x99\xa5\xf7\x4c\xfb\x7c\x3e\x87\xd2\x9d\x66\xca\x14\x98\x6b\xf5\x68\x4a\x56\x94\x92\x65\x33\x93\x96\xd6\x9f\x92\xe5\x3e\x72\xdb\xca\x52\x5d\xa0\x4b\x1b\xb9\xda\xc4\xbb\x21\x5d\x76\x15\x68\xb9\xc3\xc2\x67\x40\xc9\xbc\xba\x51\xaa\x20\x8d\x6a\x52\x2d\x5f\x5f\xec\xeb\x6a\x66\xad\x81\x09\x5c\x2c\x36\x3c\x0f\x6f\x6b\x17\x30\xab\x83\xbb\x4a\xdc\x5f\xa1\xa8\xad\xb3\x5b\xa7\x89\x63\x03\xd4\x97\x80\x8b\xcd\x9b\x8e\x1d\xaf\x39\x3e\xfa\x89\x03\x36\x78\x2b\xdf\xba\xaf\x45\xfc\x4a\xca\xb8\xc6\x8f\x38\xb7\x66\x71\x89\x87\x96\xf8\x2d\x59\x5e\xc0\x20\x11\xdf\x6c\x0e\x85\x0f\x9e\x53\xdb\x5d\x97\xd0\x8b\xdb\xd8\xe6\x86\x53\xbc\x37\x0b\x0e\xc3\x2f\xd7\x95\x1b\x33\x99\x65\x51\xa3\x6e\x82\xbe\xe8\x07\x22\xc2\x02\xd9\x07\xdc\x7e\x31\x27\x1b\xf5\x5e\xc6\xa8\x0c\x04\x46\x65\x94\x3f\x8b\x05\x7d\xed\x0c\xfe\x3f\x00\x00\xff\xff\xf4\xd9\x7c\x20\x77\x0f\x00\x00")

func dashJsBytes() ([]byte, error) {
	return bindataRead(
		_dashJs,
		"dash.js",
	)
}

func dashJs() (*asset, error) {
	bytes, err := dashJsBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "dash.js", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _dashboardTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x55\x5d\x4f\xe3\x3a\x10\x7d\xe7\x57\xf8\xe6\x25\x5c\xd1\xd8\x2d\x70\xef\x95\x7a\xd3\xae\x56\xc0\xae\x90\x10\xa0\x65\x5f\x56\xab\x7d\x70\xed\x69\xe3\xd6\x89\x83\x3d\x29\x44\x2c\xff\x7d\x9d\x8f\x96\x16\xda\x8a\xae\x56\x7d\xe8\x64\x7c\xe6\xcc\xc7\xf1\x24\xf1\x5f\xe7\x37\x67\x5f\xbf\xdd\x5e\x90\x04\x53\x3d\x3c\x88\x9b\x3f\x42\xe2\x04\xb8\xac\x0c\x6f\xa2\x42\x0d\xc3\xa7\x27\x7a\x07\x76\x0e\xf6\x9a\xa7\xf0\xfc\x4c\xce\xb9\x4b\x46\x86\x5b\x19\xb3\x06\x70\xd0\xa0\xb5\xca\x66\x24\xb1\x30\x1e\x84\x8c\x8d\x4d\x86\x8e\x4e\x8c\x99\x68\xe0\xb9\x72\x54\x98\x94\x09\xe7\x3e\x8c\x79\xaa\x74\x39\xb8\x33\x85\x15\x70\x74\x66\x24\x1c\xdd\x5a\xd3\x3f\xed\x76\x3b\xff\x74\xbb\x3f\xbf\x98\x91\x41\xd3\xf7\x66\xc7\xbb\x14\x72\xad\x44\xe7\xa4\x39\x7c\x79\x6a\x2d\x8f\x08\xeb\xdc\x84\x58\xd0\x83\xd0\x61\xa9\xc1\x25\x00\xb8\x70\x63\x99\xc3\x20\x44\x78\xc4\x2a\x79\xd8\xf6\xe5\x84\x55\x39\x12\x67\xc5\x20\x48\x10\x73\xd7\x67\x8c\x4f\xf9\xe3\xeb\x7a\x2b\x1f\xd3\x6a\xe4\xd8\xf4\xbe\x00\x5b\xb2\x63\xea\x7f\xed\x03\x4d\x55\x46\xa7\x2e\x18\xc6\xac\xe1\xdb\x41\x2e\x64\x36\xf5\x94\xda\x14\x72\xac\xb9\x85\x8d\xec\x51\x61\x75\x94\x73\xeb\xc0\xfa\x44\x27\xb4\xc7\x72\xef\xf9\xf3\x69\x84\x31\x33\x05\xac\x47\x4f\x7d\x8a\xb6\x97\xc6\xb7\x2d\xd7\x8b\xb2\x81\x43\x8e\x4a\xb0\x7a\xd2\xd4\x8f\x34\xa8\x27\x1f\xbc\x4c\x3e\xd8\x50\x5f\x1b\x24\xfd\xc5\xd9\xd1\x4a\xad\x55\x50\x6b\x35\xe5\x73\xde\x78\x83\xf5\x0e\x1f\x1e\x1e\xe8\xa4\xa1\x6b\x6e\x54\xc2\x2d\x3a\xa6\x0d\x97\x60\xf7\xe6\x1e\xb6\xb7\xa4\x91\x9d\x36\x64\xb4\x22\x3b\x0c\x45\x61\x2d\x64\x18\x76\xc8\x53\xce\xc5\x8c\x4f\xc0\xf5\xc9\xf7\x50\x18\x0b\x35\x2e\xfc\xf1\xfc\xf7\xff\x1b\xe3\x1d\xe0\x4d\x76\xe5\x49\xce\xb8\xd6\x23\x1f\x7b\x58\x37\xae\x32\x85\x6d\xc4\x6a\x8d\x31\x5b\x2c\x5c\x3c\x32\xb2\x6c\xcb\x96\x6a\x4e\x94\x1c\x04\xc2\xaf\x11\x57\x19\xd8\x65\xad\xcb\xa3\x2a\x6c\xc5\xbf\x72\x52\x6f\x65\xb0\x6b\x6f\x3d\x72\x3d\xae\x02\x5f\x66\x7e\xb0\x99\xf0\xd0\x0d\x80\x9a\x18\x52\xae\x74\x4d\x7c\x51\x59\xaf\x80\xeb\x0f\xcb\x0e\xea\xa1\xbc\x2e\x53\x68\xee\x5c\x7b\x18\xd4\x38\xcd\x11\x32\x51\x56\x02\xbe\x4d\xfe\x16\x7e\x9f\xbb\xf7\x42\x45\x5e\x44\x85\xf3\x02\x46\xb9\xc0\xf7\x06\xa5\x90\xb6\x41\xa3\x12\xe1\xdd\xb9\xa4\x72\xb3\xdf\x89\x1b\x2b\xad\x2b\x31\xb7\x0d\x74\xd5\x5c\x4c\x56\x16\xd6\xef\x81\xc9\x5c\xb4\xe3\x96\x54\x97\x59\x65\x93\x48\xf3\x11\x78\xe9\xae\x6e\x3e\x9e\x5f\x5e\x7f\xa6\x94\x6e\x56\x6b\xc9\xb9\x45\xb0\xc5\x79\xa4\x10\x52\xe2\x40\x83\x40\x90\xc1\xb0\x97\xec\xe8\x73\x2d\x28\x18\x1e\xef\x81\x3d\xdd\x03\xfb\xef\x1e\xd8\xde\x3e\x45\xf4\x36\x6d\xcc\x16\xec\x7f\x72\x1f\x09\xc1\x5a\x63\xa3\xd4\x4d\x96\xe3\xfe\xe4\xf7\x0a\x24\x41\xe3\xdf\xab\x68\x15\xcc\x81\x48\x8e\x9c\x92\x5b\xff\x5d\x72\x40\xd0\x96\x84\x4f\xbc\xd8\xa4\x5a\x18\x4b\xd7\xa9\x63\xd6\xbc\x43\xfc\x4b\xa5\xfe\x9c\xff\x0a\x00\x00\xff\xff\xe2\xe2\xf1\xab\xe6\x07\x00\x00")

func dashboardTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_dashboardTmplHtml,
		"dashboard.tmpl.html",
	)
}

func dashboardTmplHtml() (*asset, error) {
	bytes, err := dashboardTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "dashboard.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _errorTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8f\x41\x0a\xc2\x30\x10\x45\xf7\x3d\xc5\xd8\xbd\x0d\xdd\xca\x18\x70\x21\xb8\x10\x04\xc1\x03\xd4\x66\x24\x85\xb6\x29\x43\x44\x4a\xc8\xdd\x4d\x32\x76\xe1\xea\x93\xff\xdf\x83\x09\xee\x8c\xeb\xfd\xba\x10\x58\x3f\x8d\xba\xc2\x2d\xa8\x33\xba\x02\x40\x3f\xf8\x91\xf4\x99\xd9\x31\x2a\x79\x54\xa8\x64\xc6\xa7\x33\x6b\xa1\x6c\xab\x4f\x33\x14\x0a\x6e\x7d\xff\x66\x26\x93\xa8\xb6\x8c\x0b\x53\x4e\x80\x10\x9a\xc7\xfd\x1a\x63\x2e\xd5\xaf\x0d\xe1\x33\x78\x0b\x8d\xb8\x7b\x19\x17\xe1\x4b\x77\xc8\x5a\x8c\x8d\x48\xa2\xd0\x6c\xfe\x40\xec\xc0\x32\xbd\x8e\x75\x42\x2f\x6e\xa2\x18\x6b\x9d\x13\x55\xa7\x37\x0f\x95\x5c\x9b\xce\x2a\x5f\xfc\x06\x00\x00\xff\xff\x96\xa3\xfc\xdf\xfa\x00\x00\x00")

func errorTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_errorTmplHtml,
		"error.tmpl.html",
	)
}

func errorTmplHtml() (*asset, error) {
	bytes, err := errorTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "error.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _headTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdf\x8e\xa2\x3c\x14\xbf\xff\x9e\xc2\xf4\xbb\xf0\x62\x44\x10\x15\xc7\xc9\x32\x9b\xcd\x5c\xed\xdd\x64\x77\x5f\xa0\x94\xa3\x36\x03\x94\xd0\xa2\x75\x59\xdf\x7d\x4f\x5b\x23\xa3\xce\xcc\x0e\x44\x13\x02\x9c\x9e\xdf\xbf\x42\x38\x36\x4d\x0a\x2b\x5e\xc0\x80\x6c\x80\xa6\xe4\x70\xf8\x6f\x30\xf8\x92\x83\xa2\x78\xc6\x5f\x41\x73\x88\xc9\x96\xc3\xae\x14\x95\x22\xae\xc8\x44\xa1\xa0\x50\x31\xd9\xf1\x54\x6d\xe2\x14\xb6\x9c\x81\x67\x6f\x46\xae\xe3\xf4\xe3\x05\x57\x9c\x66\x9e\x64\x34\x83\x78\x72\xb9\x9c\x53\xcd\xf3\x3a\x7f\x6f\xb9\x96\x50\xd9\x35\x9a\xe0\x72\x21\xae\xe0\x48\x9f\x23\x7b\xcd\xc9\xe3\x5b\xbe\x69\x59\x66\xe0\xe5\x22\xe1\x78\xda\x41\xe2\x61\xc1\x63\xb4\x34\x74\x97\x59\xf6\x20\x91\xe4\xd3\x2c\x52\x51\x55\x4b\x2f\xa1\x68\x50\xed\xaf\xe9\x92\x8c\xb2\x17\x43\x68\x18\x33\x5e\xbc\x0c\x36\x15\xac\xe2\xa1\xef\xaf\xb0\x45\x8e\xd7\x42\xac\x33\xa0\x25\x97\x63\x26\x72\x9f\x49\xf9\x75\x45\x73\x9e\xed\xe3\x9f\xa2\xae\x18\xdc\x3d\x89\x14\xee\x9e\x2b\xf1\x30\x0b\x82\xd1\x3c\x08\xfe\xfc\x10\x89\x50\xe2\x01\x2f\x47\x58\xe2\x8a\x66\x9c\x8d\xa6\x6e\xb1\xbd\x3b\x5e\x61\xc7\xd0\x3a\xaa\x20\x8b\x87\xd6\xa1\xdc\x00\x28\x57\x54\xfb\x12\xe2\xa1\x02\xad\x8c\xf0\xf0\xb1\x35\x69\xda\x49\xdb\x4e\x9c\x6b\xd2\x34\xe3\x6f\x52\x82\x92\xcf\x78\xcb\xf5\xe1\xe0\xf3\x14\x63\x72\xb5\x1f\x23\x81\xdb\xfc\x36\x24\x31\x9b\xc3\x99\x6f\x79\x6c\xc3\x15\xef\xa5\xa4\xdb\x63\x25\x6a\xb6\xf1\x38\x6e\x22\x19\x48\xfe\x1b\x64\x4c\xe6\x0b\x3d\x5f\xbc\x6f\x63\x45\xb7\xa6\x5d\xfa\x97\x04\x9e\x05\x8e\xcb\x62\xfd\xca\xdd\xc7\x52\x93\xc9\x4c\xe3\xd1\x47\xec\x08\xed\x24\xb7\x08\xf5\x22\xec\x23\x66\x81\xdd\x92\xcd\xd0\xde\xac\x5f\x32\x07\xed\x24\x17\x05\x3a\x0a\xfa\x88\x59\x60\xb7\x64\x61\xa0\xf1\xe8\x95\xcc\x41\xbb\x3d\xb3\x48\x2f\xa2\x5e\xcf\xcc\x00\xbb\x25\x9b\x87\x1a\x8f\x5e\xc9\x1c\xb4\x9b\xdc\x3d\xee\xc6\x7d\xbf\x8d\x74\xd0\xb7\xe4\x9c\x84\xfd\xdc\x10\xfc\x52\xaf\xc1\x37\x4d\xff\xd6\x38\x5e\x78\x93\x25\x26\x59\xba\x24\x27\xa7\xae\x76\x73\x29\x7c\xf9\x26\xc7\xb7\xef\x24\xe5\x6a\xb7\x96\x5a\x46\x7a\x19\x9d\x09\xd9\xca\xed\x13\xa1\xf9\x8b\x3c\x58\xb9\xb5\xcc\x34\xd4\xd3\xf3\x27\x64\x2b\xed\x44\x3e\x8e\xd1\x5c\x9a\x37\x87\x33\x1c\x0d\x88\xfa\x85\xc3\xf4\x49\x64\xa2\x22\xed\xcc\xfc\x3f\xa5\xf3\x69\xc8\x3e\x81\xfc\x6e\x7c\xbe\x42\x7e\x60\x33\x97\xca\xcc\xed\xf3\xef\x58\xd3\x40\x91\xe2\x7f\x9d\xbf\x01\x00\x00\xff\xff\x52\x29\x6b\xf4\xfe\x08\x00\x00")

func headTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headTmplHtml,
		"head.tmpl.html",
	)
}

func headTmplHtml() (*asset, error) {
	bytes, err := headTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "head.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _headerTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x90\x31\x6e\xc6\x20\x0c\x46\xf7\x9e\xc2\x72\xe7\x86\x0b\x90\x48\x1d\xba\x76\xa9\xd4\xdd\x0a\x26\x41\x22\x50\x01\xcd\x62\x71\xf7\xd2\x26\xa4\xbf\x94\x0d\x7f\xcf\x96\x1f\x16\x31\x6c\x5d\x60\xc0\x95\xc9\x70\xc2\x5a\x9f\x00\xf4\x51\x4c\xed\xd9\x8a\x40\x3b\xcc\x9e\x72\x1e\xd1\xb3\x2d\x78\xc4\x0d\x10\xac\x89\xed\x88\xcf\x78\xf1\xb8\x44\x9c\x3e\x29\x90\x71\xdf\x9b\x56\x74\xf5\xe6\x2f\x0a\xbd\x2b\x73\xda\xdd\xcc\x2f\x81\x36\xc6\x49\xa4\xb8\xe2\x19\x86\x8f\x16\x73\x7a\x6f\x61\xad\xf0\xea\x7d\x9c\xa9\xc4\xa4\xd5\xef\xe8\xa9\xa2\x9a\xcb\xdd\x2a\xb9\x65\xfd\xd7\x12\x71\x16\x86\xb7\x8d\x9c\xff\xfb\xcc\x4d\xb6\x6d\xec\xf8\xc1\x50\x84\x83\x39\x07\xae\x3d\x5a\xf5\x4b\x74\xfc\x13\x00\x00\xff\xff\xe2\x89\x41\x0f\x31\x01\x00\x00")

func headerTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headerTmplHtml,
		"header.tmpl.html",
	)
}

func headerTmplHtml() (*asset, error) {
	bytes, err := headerTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "header.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\x71\xd5\x02\x58\x5e\x2c\x2a\x45\xdf\x12\xd9\x40\xb3\x16\x58\x81\x3a\x2b\xda\x74\x40\x9f\x06\x5a\x3a\x5b\x6c\x24\xd2\x23\x29\x3b\x82\xa1\xff\x7d\x47\xfd\xb2\x95\xd8\x59\x87\x2e\x0f\x91\x25\x7e\xfc\xf8\xdd\x0f\xde\x5d\xf4\x2a\x51\xb1\x2d\x37\x08\xa9\xcd\xb3\xf9\x28\xea\x1e\xc8\x93\xf9\x08\x20\xb2\xc2\x66\x38\xff\x93\x4b\x9e\x88\x22\x87\xfd\xbe\xfe\x00\xec\x0b\xea\x2d\xea\x3b\x9e\x63\x55\xc1\xdb\x2c\x53\x31\xb7\x4a\x47\x61\x83\xa7\x9d\x84\xc4\x7c\x93\x71\x8b\xe0\x39\x36\x0f\x58\x55\x8d\xa2\xb0\x61\x8e\x5e\x05\x01\xdc\xfd\x71\xff\xfe\x1a\x76\x08\xe3\xa5\xd2\x5a\xed\xc6\xc0\x21\x53\x16\xd4\x0a\x6c\x8a\x60\x6c\x99\x09\xb9\x76\xaf\x22\x41\x49\xcc\x65\x32\x85\x14\x65\x8c\x6e\x7d\x64\x30\x2e\x34\x7d\x0c\x34\xba\x63\x12\xb0\xa8\x73\x21\x55\xa6\xd6\x25\x08\xd9\x73\x20\x60\x86\x39\x11\x98\x29\x64\xe2\x01\x7b\x36\xe0\x32\x19\x2d\x33\x34\x86\x8e\x61\x10\x04\xa4\x6b\xa9\x92\x12\xe2\x8c\x1b\x33\xf3\x3a\xdc\x46\xab\x2d\xfd\xd6\x41\xc6\x4b\x55\x58\xe0\x9d\xb9\x89\x77\xca\x52\xd4\x8d\xad\xe4\x3d\x13\x6b\xb1\xb1\x0e\x04\xb0\x2a\x64\x6c\x85\x92\x10\xa7\x5c\xae\xf1\xd6\x4a\x5f\x90\x3d\x12\x77\xbf\xdf\x2f\x3e\x4e\x60\x5f\xa3\x00\x28\x20\x85\x53\xcb\xd6\x68\xdf\x37\xc2\x6f\xcb\x0f\x09\x81\x27\x4c\x48\x89\xda\xc1\x61\x06\x5e\xb4\x52\xd2\x42\x4c\xf6\xea\xd9\x78\xad\x79\x39\x9e\x7b\x97\x2d\xdd\xa5\x17\x85\x6e\x79\xee\xdd\xd4\xb4\xb5\x9a\xf0\x20\x27\x4a\xc4\xb6\x33\x33\xe7\x42\x7a\x8d\xc6\x28\x7d\xdd\x7d\xdd\xf0\x35\x06\x75\xe0\xe6\xbf\x69\x74\xc6\x91\xb7\x60\x41\x89\xb0\x46\xf8\x20\x8d\xe5\x14\x07\xe3\x82\x73\x32\x27\x28\xd0\xaf\x5b\xce\xa3\xa3\x3a\x67\x9b\x20\x13\xc6\xb6\x87\x9e\x83\xb4\xbe\xec\x40\xb5\xba\xf9\x37\x55\x68\x0a\x6e\x7b\xfc\xe1\x14\x67\x1e\xb1\x34\x2f\xfb\xbd\x76\x2e\x86\x0b\x21\x13\x7c\x9c\xc2\x45\x9b\x00\x70\x3d\x03\xd6\x6b\xaf\x43\x74\xfe\x78\x41\x51\x3d\x3e\xfc\x04\x28\x48\xd0\x72\x91\x99\x23\x98\x53\xf9\x66\xbe\xdf\x3f\x14\x4b\x74\x9e\x00\xd6\xfb\xe3\xcd\x00\xb5\x79\x46\x16\xf3\x2d\xf9\x79\x48\xe6\x72\x68\xc3\x65\x13\x02\x97\x3c\xf7\x22\x47\x0a\xa4\xfb\x16\x2d\x75\x78\x02\xdb\xf1\x16\x52\x3c\x5a\x42\x7b\x90\x70\xcb\x83\xee\x75\xb6\xdf\xb3\x8e\xcd\x91\xb1\xaf\xb4\x50\x55\xf3\xa7\x9f\xbf\x58\x4d\xa2\x9c\xf0\xfa\xb0\x63\xe9\xe1\xe6\x27\x2c\x59\xa8\x82\x02\xe1\x9c\x72\xde\x0c\xe1\xd4\x38\xc8\x67\xa5\x6c\x55\x85\x51\x28\xe6\xd1\xce\xe1\x28\xb2\xee\xb2\x8b\xed\xc0\xb9\xff\x9b\xb8\xdb\x16\x04\x9f\xb8\xa5\x6a\x22\xcd\x59\x8d\x5d\x8a\xb1\x6e\x4b\xb7\x63\xa0\xa6\x41\x52\x31\x38\x45\x80\x32\x39\x2f\xfd\x28\x9b\xeb\xd7\xe3\xec\xb3\xd2\x04\x74\xed\x87\x59\x37\x04\x3c\xb5\x8e\x43\xaa\x71\x35\xf3\x48\xcc\x3b\x6e\xd2\xa5\xe2\x3a\xf9\xfa\xf9\x63\x55\x79\xfd\xa6\xc2\x5a\x25\x83\x0d\xbd\x90\x77\x3d\xb0\x5c\x53\x01\x9a\x79\x7f\x2d\x33\x2e\x1f\xbc\x79\xbf\x2d\x0a\xf9\x30\x1b\x06\x42\x9f\x2b\xa1\x72\x3b\xf3\x12\x34\x56\xab\x92\x8a\xde\x7e\xdf\xdc\x4a\x3a\xfa\x05\x8d\x0d\xfc\x65\x85\x4a\xc6\x99\x88\x1f\x66\xde\xa1\xa0\x8e\x4f\x9d\x33\x9e\xc2\xb8\x25\x74\xa1\xf5\x2d\x7f\xa0\xc2\xc5\x61\x85\x3b\xa0\x1e\xa2\x64\x62\x26\xc0\x18\x1b\x4f\xc8\xca\x06\xf7\xb2\x8d\x83\xd7\x41\xd9\xc1\xcc\x1c\xd2\xf1\x4e\x49\x84\x15\xa5\x7b\xc2\x46\x4f\x23\x5e\x3b\xc9\x39\x26\xae\x6b\xeb\xad\x8b\xd8\xb1\x03\x9a\x92\xfb\xdf\xed\xef\xe9\x9c\xd1\xcd\x7d\xfe\x37\x93\xdb\xea\x7e\x87\x3b\x67\xf5\xc0\x9c\x9d\xb0\x29\xb0\x05\x25\xb8\x2b\xfa\xc1\x53\xed\x79\xb3\xd0\xc7\xb1\xce\xf4\xd1\x73\xa7\x1c\xac\x6e\x7a\xd2\xe8\x08\xd0\xb6\x48\x30\x3a\xae\x0d\x7f\x6b\x0c\x5a\xf3\x89\xfc\xe0\xaa\x52\xd8\xb5\xe0\x30\x57\x75\x4f\xfc\x4e\xf7\x76\xd0\xc7\x7e\x70\xfb\xf7\xbf\x0b\xd4\xe5\xb9\xed\xee\x67\xdf\x9e\x89\xc0\x15\xc0\x7b\x7c\xb4\xbe\xeb\x1b\x5d\x67\xde\x72\x0d\xae\x80\x52\xf7\xc8\x37\xd4\x7f\xdd\x1a\x73\xa5\xd5\x3f\x94\xda\xc9\x4d\x0f\xcd\x09\xd2\x88\xf6\xfb\x5d\xbf\xbe\xbe\xba\xba\x62\x57\x47\xa8\x66\x3e\x19\x90\xd5\x9f\x3a\x26\xb1\x02\xbf\xc5\xcc\xa8\xe5\xf3\xa5\x51\x59\x61\x69\xb9\x1f\x17\xea\x9d\x6e\x6a\xf3\xbd\x2e\x81\xc6\xbf\x8c\xfb\xe4\x18\x6b\xb4\x85\x96\xb0\xe2\x94\x9a\x37\x34\x21\xc0\x25\xe4\x6c\xa5\x74\xce\xad\xef\x2d\x16\x0b\x78\xf7\x6e\x0a\xdf\xe8\x0f\xd2\xeb\x3c\xbf\x36\x94\x26\xc4\x7e\x49\xe3\x05\x65\x43\x27\x03\x9e\x0b\x9c\x82\xb7\xd2\x2a\xbf\x53\xbb\x0e\x54\x81\x4b\xff\x9f\x14\xd6\x50\xfa\x3f\xa8\xe0\xe0\x8f\xc3\x98\x53\x8d\xe8\xdf\x85\xdf\x8d\x51\x13\x46\xf9\x9d\x94\x7e\x17\x5f\xbf\x73\xdd\x85\xef\xb1\x43\xe0\x18\xf2\x38\x7d\x0e\x02\x08\x43\xa8\x05\xbb\x7b\xe4\x26\xca\x43\x0a\x98\x54\x15\x19\x4d\x9d\x6a\xbd\xce\xea\x89\x14\x12\x61\x68\x0e\x2c\xa1\x71\x2f\x6b\x19\x2e\x7c\x9b\x0a\x33\x61\x35\xcd\xe0\x88\x41\xae\xb5\xb0\xc9\x0d\x54\xbd\xcd\x27\xd7\x1b\x4b\xeb\x67\xf3\xff\x90\xd1\x51\xe8\xe6\x57\xf7\x6c\xe6\xf8\x7f\x02\x00\x00\xff\xff\x36\x99\x37\x00\xdf\x0b\x00\x00")

func homeTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_homeTmplHtml,
		"home.tmpl.html",
	)
}

func homeTmplHtml() (*asset, error) {
	bytes, err := homeTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "home.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _rootTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x6c\x90\x41\x6b\x84\x30\x10\x85\xef\xfe\x8a\x69\xee\x1a\xf6\x9e\x15\x4a\x2f\x2d\xb4\xbd\x14\x7a\x9f\x35\xb3\x1a\x88\x49\x88\x51\x10\xf1\xbf\xef\x18\x37\xb7\x3d\x4d\x32\xbc\xf7\xf1\xe6\xa9\x37\xed\xbb\xb4\x06\x82\x21\x8d\xb6\xad\x54\x19\x84\xba\xad\x00\x54\x32\xc9\x52\xfb\x8f\x0e\xb5\x99\x47\xd8\xb6\xbc\x80\xe6\x8f\xe2\x42\xf1\x17\x47\xda\x77\x78\xb7\xd6\x77\x98\x7c\x54\xf2\xd4\xb3\x93\x95\x34\x06\x8b\x89\x40\x1c\x34\x01\xcd\xbe\x57\x4a\x9e\x64\x75\xf3\x7a\x85\xce\xe2\x34\x5d\x85\xd1\xe4\xd8\xb7\x86\xe8\x17\x7e\xc7\xda\xe2\xea\xe7\x04\x58\xb0\x5a\xbc\x22\x52\xcc\xcc\x1c\x53\x9b\xa5\xd0\x46\x34\x2e\xeb\x79\x3d\x5c\xca\x36\x60\x4f\x75\xce\xd1\x7e\x44\x3a\x18\xe8\x34\xfc\xf0\x5d\x3d\xc1\x97\x9b\x12\xba\x8e\x26\xf0\xf7\xd7\x27\x72\xee\xcb\x93\x19\xce\xc9\x2f\x2c\xf0\xdb\x9c\x92\x77\x75\xe0\x8f\x59\x48\xc0\x10\xe9\x7e\x15\xdb\xd6\x7c\xfa\xc3\x2c\xda\x6f\xdf\x83\x71\x4a\xe2\x93\x21\x33\x44\x49\x8e\xcd\x5d\xc8\xa3\x8c\x63\x9e\xe5\x3f\x02\x00\x00\xff\xff\x9c\x04\x6e\xc0\x94\x01\x00\x00")

func rootTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_rootTmplHtml,
		"root.tmpl.html",
	)
}

func rootTmplHtml() (*asset, error) {
	bytes, err := rootTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "root.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _styleCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x84\x56\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\x41\xc0\x18\xd0\x16\xa5\x2b\xd9\x6e\xec\x3a\x4f\x69\xd6\x00\x03\x86\x3d\xac\xdb\xde\x29\xf1\x2c\x71\xa5\x48\x83\xa4\xfc\xa3\xc5\xfe\xf7\x1d\x29\x4a\x96\x2c\x39\x0d\x82\xc4\x3a\xdf\x7d\x77\xf7\xf1\xbb\xa3\x3e\xbc\x23\xcf\xfa\x70\x31\xa2\x28\x1d\x59\x26\xe9\x03\xf9\xab\x04\xf2\x0f\x53\x8c\x8b\xba\x22\x4f\xb5\x2b\xb5\xb1\x0b\xf2\x24\x25\x09\x4e\x96\x18\xb0\x60\x8e\xc0\x17\xe4\xdd\x87\x19\xc6\xff\x6d\x81\xe8\x3d\x71\xa5\xb0\xc4\xea\xda\xe4\x40\x72\xcd\x81\xe0\x63\xa1\x8f\x60\x14\x70\x92\x5d\x08\x23\x9f\xbf\xfe\x4a\xad\xbb\x48\x88\x81\x52\xe4\xa0\x30\xd8\x95\xcc\x91\x9c\x29\x92\x01\xd9\xeb\x5a\x71\x22\x14\x1a\x81\xfc\xfe\xdb\xf3\x97\x3f\xbe\x7e\x21\x7b\x21\x21\x64\x9b\x65\x9a\x5f\xc8\x8f\x19\x41\x3f\xe5\xe8\x9e\x55\x42\x5e\x76\xe4\x4f\x9d\x69\xa7\x1f\x5b\xf3\x09\x7c\xa1\x3b\xb2\x4e\x92\xce\x16\xf2\xee\x88\xd2\xa6\x62\xb2\xb3\xe6\x5a\x6a\xb3\x23\xf3\xd5\x66\xbd\x59\xbf\x78\x33\x06\x67\xdf\x04\x42\x87\xa0\x4a\x6b\x6c\x4b\x15\x3b\xc2\x94\x13\x4c\x0a\x66\x81\x5f\x31\xc5\x77\x84\x4c\x97\x87\xb3\x37\x49\xa1\x80\x96\x31\xf5\x32\x69\x8c\x07\xc6\x79\x88\x8f\xcf\x15\x33\x85\x50\xdd\xa3\xa7\x67\x2f\xf5\x69\x47\x4a\xc1\x39\xa8\xc7\xd9\x7f\xb3\xd9\x82\x49\xa9\x73\xe6\xb4\xe1\xa1\xd5\xab\x13\xab\x7d\x97\x37\x2e\x8b\x8a\x21\x5d\x3f\x7a\xe0\xdb\xf5\xe1\x4c\x96\x6b\xa8\xc8\x72\xeb\x3f\x6d\x6f\x6a\x09\xd6\x8f\x0f\x6d\x45\x67\x7a\x12\xdc\x95\x3b\xf2\x29\x19\x54\x49\x4d\xd3\x4b\x1a\xac\xb7\x59\x33\xa7\xac\xe7\x2f\x64\x8e\xd0\xd4\xe9\x03\xfa\x3f\x0c\xf2\x75\x30\xd1\x1c\x93\xa5\xab\x98\x6c\x2f\xe1\x8c\x84\xbc\x92\x61\x91\xd5\xce\x69\x45\x0f\xcc\x5a\x71\x84\x90\xb1\x45\x49\x23\x8a\x83\xb3\xa3\x78\x40\x05\xf6\x8f\xaa\x72\x60\x7a\x8d\xa0\x3a\x9c\xae\xee\x76\x22\x01\x71\x55\x61\xa9\x70\xc8\x59\xf7\x4c\x39\x38\x26\xa4\xed\x77\xd8\xb4\x11\x80\xae\x9f\xae\x5d\xa4\xf7\xd1\x69\xce\x8e\xc0\x9c\xbd\xaa\x37\xca\x67\x35\x21\x9f\xf4\xe3\x90\xc2\xc0\xeb\xf6\xb5\xe2\x3b\x78\x7b\x60\xea\x9a\xa3\x1d\x85\x8f\xc9\x98\xe0\x79\x6e\x30\x02\x3e\xbb\xbe\x7a\x9a\x54\xcb\xa1\x10\x5a\xfe\x96\x53\xfc\xcd\x2b\xac\x80\x15\x30\x16\x42\x1c\x8c\x7e\xb3\x69\x63\xca\x30\x10\x4c\x94\x0b\xb2\x68\xb5\x14\x88\xf4\xfc\xfc\x1c\xe0\xe7\x39\x86\xa0\xaa\xc1\x34\xa0\xda\x0a\x27\x34\x9e\xec\x5e\x9c\x9b\xf9\xe3\xc2\x1e\x24\xc3\xd1\xf7\xbc\xb7\xfc\x53\x2e\x0c\xe4\x8d\x27\xea\xa6\xae\x94\xff\xa6\xe3\x34\x49\x7e\xe9\xeb\x2f\x3c\xfa\x64\x25\x30\x1e\x33\x8d\x60\xff\xad\xad\x13\xfb\x0b\xf5\x05\xa1\xaa\x76\x9e\xde\x1c\x68\x06\xee\x04\x10\xe0\x33\x96\x7f\x2b\x8c\xdf\x5a\xdd\x36\x49\x92\xed\x6a\xfb\xd2\xf4\x79\xa6\xb6\x64\xdc\x0f\xaf\x29\x32\xf6\x26\x79\x4f\xe2\xef\x62\x99\xbc\xf5\x6b\xc0\xb3\x44\xfc\xc0\x26\xc3\xf1\x88\xd5\xb6\xd5\xaf\xb7\x13\x32\x69\x8d\x31\xf1\xa9\x44\x01\xdf\x32\xfe\xd0\x3b\x84\x9b\xc5\xf8\x9d\x0a\xc5\xbd\x6c\x3f\xe1\xcf\xe3\x80\x68\x96\xe1\x91\xd4\x0d\x5a\x38\xa5\x58\x9d\x84\xbd\x8b\x0f\x3d\xea\xb8\x38\xf6\x25\xd4\x38\xa5\xaf\x2f\x93\x36\x76\xee\x84\x93\x83\x99\x5e\x25\x23\x1f\xc0\x1d\x27\x27\x7c\x86\x73\x1f\x52\x34\xfa\xac\x0a\x7a\xa1\xec\x8c\x57\x90\x77\x78\x4f\xbc\xe1\x7c\x35\x8c\x86\x30\x6d\x85\x8d\x7e\x3d\x3d\x8c\x88\x8c\x2e\x0c\x55\x76\x04\xca\x99\x63\x07\x2d\xd4\x18\x6f\xd9\x76\x90\x97\xcc\xc4\xa1\x9f\xd6\xec\xc9\x30\xa4\xd7\xff\xed\x5f\x08\xf4\xd2\x6e\x7b\x42\x42\x77\x57\x05\x86\x28\xeb\x10\xf6\x27\x47\xd6\xaa\xa3\x9d\xde\xc8\xd8\x48\xd2\xed\xba\xf4\xbd\x85\x72\xef\xae\x83\x48\xfe\xa6\x25\xbf\xbb\xed\x56\xdd\x89\xf1\xda\x30\x5f\x8f\xa5\xf7\x66\xb8\x5f\x67\x4f\x4e\xa3\x3a\xc7\x83\xd5\xe9\x5b\xe3\x10\x0a\x87\x14\x25\x8b\x6d\x93\x56\x6a\x16\xf6\x8e\x64\x19\x0c\xaf\xa4\x26\xc5\xc3\x60\x50\xe6\x2f\x2f\xeb\x97\xf4\xe9\xa6\xe2\xe9\x43\xba\xbd\xd1\xef\xac\xae\x38\x41\xf1\xdb\x56\xec\x37\xdf\x7b\x86\xdb\x74\xcd\x65\x33\xa9\x9b\x8e\xe8\xe5\xfa\x30\x59\xc3\xe4\xab\xc6\xf4\x0d\x98\xd7\xc6\xfa\x96\x83\x4c\xa3\x29\x92\xb0\xd9\x6c\x26\x4a\x5a\x58\x90\xb8\x44\xa1\x79\xf7\x68\xc3\x39\xec\x59\x2d\xdd\x4f\x17\xde\xf0\xa4\x46\xe0\x3b\xa5\xdd\x9b\x2e\xc3\xdb\x5d\xe9\xf5\x1e\x12\x4d\xa0\x76\xb7\x01\x18\xa3\x0d\xad\x6c\x71\xef\x36\x88\x74\x4f\xeb\xe8\xfa\xda\x13\x17\x6d\xfc\x7f\xa7\x97\xa7\xa7\x24\x69\xd6\xe3\xad\xea\x3a\x69\x28\xad\x42\x73\xff\x07\x00\x00\xff\xff\x7f\x06\x77\x98\x3c\x0b\x00\x00")

func styleCssBytes() ([]byte, error) {
	return bindataRead(
		_styleCss,
		"style.css",
	)
}

func styleCss() (*asset, error) {
	bytes, err := styleCssBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "style.css", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"bad-request.tmpl.html": badRequestTmplHtml,
	"dash.js":               dashJs,
	"dashboard.tmpl.html":   dashboardTmplHtml,
	"error.tmpl.html":       errorTmplHtml,
	"head.tmpl.html":        headTmplHtml,
	"header.tmpl.html":      headerTmplHtml,
	"home.tmpl.html":        homeTmplHtml,
	"root.tmpl.html":        rootTmplHtml,
	"style.css":             styleCss,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"bad-request.tmpl.html": &bintree{badRequestTmplHtml, map[string]*bintree{}},
	"dash.js":               &bintree{dashJs, map[string]*bintree{}},
	"dashboard.tmpl.html":   &bintree{dashboardTmplHtml, map[string]*bintree{}},
	"error.tmpl.html":       &bintree{errorTmplHtml, map[string]*bintree{}},
	"head.tmpl.html":        &bintree{headTmplHtml, map[string]*bintree{}},
	"header.tmpl.html":      &bintree{headerTmplHtml, map[string]*bintree{}},
	"home.tmpl.html":        &bintree{homeTmplHtml, map[string]*bintree{}},
	"root.tmpl.html":        &bintree{rootTmplHtml, map[string]*bintree{}},
	"style.css":             &bintree{styleCss, map[string]*bintree{}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
