250 lines
9.6 KiB
Go
250 lines
9.6 KiB
Go
// Code generated by go-bindata. (@generated) DO NOT EDIT.
|
|
|
|
//Package tex generated by go-bindata.// sources:
|
|
// themes/tex/resume_template.tex
|
|
package tex
|
|
|
|
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
|
|
}
|
|
|
|
// Name return file name
|
|
func (fi bindataFileInfo) Name() string {
|
|
return fi.name
|
|
}
|
|
|
|
// Size return file size
|
|
func (fi bindataFileInfo) Size() int64 {
|
|
return fi.size
|
|
}
|
|
|
|
// Mode return file mode
|
|
func (fi bindataFileInfo) Mode() os.FileMode {
|
|
return fi.mode
|
|
}
|
|
|
|
// ModTime return file modify time
|
|
func (fi bindataFileInfo) ModTime() time.Time {
|
|
return fi.modTime
|
|
}
|
|
|
|
// IsDir return file whether a directory
|
|
func (fi bindataFileInfo) IsDir() bool {
|
|
return fi.mode&os.ModeDir != 0
|
|
}
|
|
|
|
// Sys return file is sys mode
|
|
func (fi bindataFileInfo) Sys() interface{} {
|
|
return nil
|
|
}
|
|
|
|
var _themesTexResume_templateTex = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x56\x4d\x6f\xe3\x36\x10\x3d\xaf\x7e\x05\x0f\x42\xd0\x02\xb6\xe0\xdd\x6d\x2f\x05\x7a\xd8\xa6\x29\x1a\x34\x6d\x83\xee\xf6\x63\x11\xe6\xc0\x50\x63\x89\x6b\x8a\x52\x49\xca\x89\xcb\xce\x7f\x2f\x48\x51\x5f\xb6\x9c\x36\x40\x2f\x86\xc8\x79\xf3\x86\x33\x6f\x38\x34\xcd\x6b\xde\x56\xa0\x2c\x97\xcc\x98\x3b\xf6\x45\xc3\x1a\xd0\xab\xd7\x9b\xc6\xde\x3b\xa6\xad\xe0\x12\x30\xa1\xad\x81\x86\xf1\x1d\x2b\xc0\x35\x4c\x9b\x9d\x68\x66\x9b\x77\xbc\xba\x77\xdb\x56\xca\x86\x15\x47\x70\x2b\xac\x04\x03\x7c\xbe\xcb\xb4\x66\x87\x23\x20\x7b\x68\x25\xd3\x4f\x73\xe2\x52\xe4\x20\x85\xda\x99\x7b\x57\x1e\x1a\xd0\x1a\xb6\x98\xd0\x40\xba\xad\x75\xc5\xac\xa3\x06\xb8\x15\xb5\x42\x47\x6f\x98\x2e\x80\x1a\x6e\x4a\xd6\x00\xd5\xac\x28\x20\xd7\xa2\x28\x2d\x3a\x74\x1b\xa8\xd0\xe1\x5d\xe7\xab\x5b\x09\xf7\x91\xc7\x34\x8c\x0b\x55\x4c\x88\x36\x8d\x45\xf7\xb6\xff\x49\x28\xcb\x73\x5b\x4b\x50\x85\x2d\x1d\xb5\xf0\x64\x4b\xe8\x58\xdf\xf2\x0a\x13\xea\x93\x36\xf6\x20\xc1\x41\xd5\x58\x9f\xd6\x03\x14\x42\xb9\xbe\xb4\x01\xa2\x1d\xe5\xa0\x2c\x68\xa1\x0a\x12\x8f\x4a\x9c\xcb\xbe\x61\x46\xf0\xec\x27\x56\x01\x59\x23\x12\xf4\xd0\x25\x07\x39\x77\xb8\x61\x0f\x20\x9f\xf1\x48\x9c\x13\x5b\xd2\x83\x6b\xce\x7c\x66\xd9\xbb\x3c\xd7\x60\x0c\xe2\xc8\x73\x62\xa2\xd4\x39\x50\x39\xe2\x32\xc5\x6d\x6d\x2c\x93\x97\x75\x0e\x4b\x2c\x53\x2b\x89\x3c\xa7\xa8\x4b\x61\x0f\x3e\xd0\x72\x84\xcb\xba\x55\x56\x1f\xce\x85\x98\x99\x97\x0f\x7b\x5b\xd6\x6a\xea\x1b\xd7\xcb\xe0\xab\x8a\x09\x39\x01\xc7\xf5\x32\xf8\xd7\x5f\x6e\x10\x69\xa9\x61\xeb\x88\x73\xeb\xc9\x76\xa7\xc5\x99\xdd\xc8\xd4\x29\x15\xf8\x6a\x4d\xb2\xf7\x3b\x21\xa5\x21\xd9\x0d\x53\x45\xeb\x7b\xc8\xa3\x93\xbe\x0d\x23\x95\x37\xf6\xc8\x40\x96\x50\x0d\x0a\x1e\x79\x5d\x55\x4c\xe5\x8e\x86\xab\x64\xac\x06\xcb\x4b\x74\x9b\xec\xcb\xa1\xff\x86\x1b\xd5\x35\xed\xa3\xc8\x6d\x89\x8e\xff\xfd\x87\x3f\x83\x66\xaa\x00\x32\x61\x4e\x5e\x85\x78\xbe\x13\x11\x2f\xfc\x77\x07\x49\xc5\x8a\xa4\x3b\xf2\xd5\xd7\x24\xfb\x01\x0e\x8f\xb5\xce\x43\xff\x88\x2d\x81\x3f\x49\x2a\xc8\xc6\xaf\xd2\x9d\xff\x05\x69\x00\x71\x45\x86\x75\x27\x3f\xa8\xdc\x07\xa0\x34\xa1\x55\x2b\xad\xe0\xb5\x6c\x2b\xe5\xde\xa0\xe3\xe8\x90\x84\x3e\x88\x98\x58\xec\xa3\x8a\x9c\xf5\xea\xaa\x33\xa0\x11\x2f\xba\x2c\x26\x27\x97\xe1\xe4\x73\xc2\x80\x11\x5b\x52\xd8\x98\xc0\x8a\x8c\x27\x78\x35\x94\xdd\x3b\x20\x92\xcf\x9c\xcb\xbe\x93\x2d\x28\x7e\x40\xfc\xbc\xb3\x8f\x29\x0d\xda\x82\xca\x27\x33\x6c\xd8\x7e\x4e\xac\xd7\x98\xc4\x84\x7f\xaf\xf5\xee\xac\xfa\xde\x78\xf5\xd4\x80\x16\xa0\x38\xf4\x5d\xf0\xdf\x35\x1e\xc8\x9d\xeb\x66\xe6\xb7\xcc\xc2\x8f\x1f\x49\x76\xa5\x72\xff\x89\x78\x11\x9c\x1f\xfa\xa6\x1e\xa7\xd1\x8a\xcc\x2d\xb7\xb5\x11\xfe\x78\x71\xf2\xd0\x13\xca\xf7\x96\xe9\xb0\x88\x01\x27\x4a\x94\x41\x89\xef\x45\x51\x4a\x3f\x3d\x3b\x29\x86\xc8\xeb\xb5\x1f\x18\x69\x99\x7d\xf0\x33\x39\x96\x36\x7a\x97\xd9\xb5\x85\xaa\x77\x28\xfd\xc0\x06\xdf\xe9\xbc\xc2\xde\x9d\x4a\x3f\x10\x85\x85\x4a\xec\x3d\x51\x36\x8a\x13\x4f\xd2\x7f\xfd\x7b\x0f\x9e\x48\x19\xf4\xc6\x41\xac\xab\xbc\xed\x66\xd1\x59\xc5\x66\x88\x17\x89\x15\x2a\x05\xa1\x52\xf3\x30\x21\xf4\xd0\xb0\xb4\x6a\x17\x72\x98\xa6\x3b\xca\xf2\x91\xa4\x30\xea\x82\x48\xd6\xe4\xc4\x3c\x76\x82\x73\x01\xdd\xe6\x87\x0f\x87\xa6\x9b\xe2\x69\x97\xd4\xb5\xea\x56\x90\xbd\xd3\xc0\xa6\x96\x77\x36\xac\xaa\xfc\x8d\x85\x27\x4f\x77\xad\x8c\x15\xb6\x0d\xaf\x29\xbe\xa8\xb6\xbf\xd5\xb2\x55\x16\x40\x9f\xad\xed\x0c\xf1\xf2\xda\xee\x43\x6d\xe7\x61\x4e\x6a\xbb\xd4\x20\x47\x33\x2a\xdd\xf7\xf3\x3d\x99\xbc\x07\xe3\x6e\xff\x16\xa4\xfb\xec\x67\x5d\x30\x25\xfe\x9a\x34\x84\xaf\xf2\x7e\xb8\x4c\xb1\x44\x6b\xe2\xe7\x67\x8c\x70\xe4\x86\x67\x5d\xe2\x13\x15\x33\xfc\xd4\xdf\xb3\x74\x7f\x7c\xd3\x86\x24\x3f\xf9\x24\x2f\x66\x19\x1d\xdd\xc2\x28\xe4\xc2\x55\xfc\x9f\x2e\x22\x0e\xca\x3f\xdf\x14\xc1\x30\xfe\x8d\xfa\x27\x00\x00\xff\xff\x01\x9d\x2e\x1f\xad\x0a\x00\x00")
|
|
|
|
func themesTexResume_templateTexBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_themesTexResume_templateTex,
|
|
"themes/tex/resume_template.tex",
|
|
)
|
|
}
|
|
|
|
func themesTexResume_templateTex() (*asset, error) {
|
|
bytes, err := themesTexResume_templateTexBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "themes/tex/resume_template.tex", size: 2733, mode: os.FileMode(420), modTime: time.Unix(1612134982, 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){
|
|
"themes/tex/resume_template.tex": themesTexResume_templateTex,
|
|
}
|
|
|
|
// 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{
|
|
"themes": &bintree{nil, map[string]*bintree{
|
|
"tex": &bintree{nil, map[string]*bintree{
|
|
"resume_template.tex": &bintree{themesTexResume_templateTex, 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, "/")...)...)
|
|
}
|