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