// Code generated by go-bindata. DO NOT EDIT.
// sources:
// ebpf/bin/probe.o

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  fileInfoEx
}

type fileInfoEx interface {
	os.FileInfo
	MD5Checksum() string
}

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

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) MD5Checksum() string {
	return fi.md5checksum
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

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

func bindataProbeoBytes() ([]byte, error) {
	return bindataRead(
		_bindataProbeo,
		"/probe.o",
	)
}



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

	info := bindataFileInfo{
		name: "/probe.o",
		size: 5320,
		md5checksum: "",
		mode: os.FileMode(420),
		modTime: time.Unix(1594314963, 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, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}

//
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
// nolint: deadcode
//
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, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}

//
// AssetNames returns the names of the assets.
// nolint: deadcode
//
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){
	"/probe.o": bindataProbeo,
}

//
// 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, &os.PathError{
					Op: "open",
					Path: name,
					Err: os.ErrNotExist,
				}
			}
		}
	}
	if node.Func != nil {
		return nil, &os.PathError{
			Op: "open",
			Path: name,
			Err: os.ErrNotExist,
		}
	}
	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{Func: nil, Children: map[string]*bintree{
	"": {Func: nil, Children: map[string]*bintree{
		"probe.o": {Func: bindataProbeo, Children: 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
	}
	return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
}

// 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, "/")...)...)
}
