// Code generated by go-bindata.
// sources:
// icon.png
// DO NOT EDIT!

package main

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

func iconPngBytes() ([]byte, error) {
	return bindataRead(
		_iconPng,
		"icon.png",
	)
}

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

	info := bindataFileInfo{name: "icon.png", size: 1102, mode: os.FileMode(420), modTime: time.Unix(1475512090, 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){
	"icon.png": iconPng,
}

// 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{
	"icon.png": &bintree{iconPng, 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, "/")...)...)
}

