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