// Code generated by go-bindata.
// sources:
// wski18n/resources/de_DE.all.json
// wski18n/resources/en_US.all.json
// wski18n/resources/es_ES.all.json
// wski18n/resources/fr_FR.all.json
// wski18n/resources/it_IT.all.json
// wski18n/resources/ja_JA.all.json
// wski18n/resources/ko_KR.all.json
// wski18n/resources/pt_BR.all.json
// wski18n/resources/zh_Hans.all.json
// wski18n/resources/zh_Hant.all.json
// DO NOT EDIT!

package wski18n

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 _wski18nResourcesDe_deAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesDe_deAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesDe_deAllJson,
		"wski18n/resources/de_DE.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

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

func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesEn_usAllJson,
		"wski18n/resources/en_US.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13874, mode: os.FileMode(420), modTime: time.Unix(1522158494, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesEs_esAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesEs_esAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesEs_esAllJson,
		"wski18n/resources/es_ES.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesFr_frAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8a\xe6\x52\x50\xa8\xe6\x52\x50\x50\x50\x50\xca\x4c\x51\xb2\x52\x50\x4a\xaa\x2c\x48\x2c\x2e\x56\x48\x4e\x2d\x2a\xc9\x4c\xcb\x4c\x4e\x2c\x49\x55\x48\xce\x48\x4d\xce\xce\xcc\x4b\x57\xd2\x81\x28\x2c\x29\x4a\xcc\x2b\xce\x49\x2c\xc9\xcc\xcf\x03\xe9\x08\xce\xcf\x4d\x55\x40\x12\x53\xc8\xcc\x53\x70\x2b\x4a\xcd\x4b\xce\x50\xe2\x52\x50\xa8\xe5\x8a\xe5\x02\x04\x00\x00\xff\xff\x45\xa4\xe9\x62\x65\x00\x00\x00")

func wski18nResourcesFr_frAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesFr_frAllJson,
		"wski18n/resources/fr_FR.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesIt_itAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesIt_itAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesIt_itAllJson,
		"wski18n/resources/it_IT.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesJa_jaAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesJa_jaAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesJa_jaAllJson,
		"wski18n/resources/ja_JA.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesKo_krAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesKo_krAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesKo_krAllJson,
		"wski18n/resources/ko_KR.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesPt_brAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesPt_brAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesPt_brAllJson,
		"wski18n/resources/pt_BR.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesZh_hansAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesZh_hansAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesZh_hansAllJson,
		"wski18n/resources/zh_Hans.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _wski18nResourcesZh_hantAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")

func wski18nResourcesZh_hantAllJsonBytes() ([]byte, error) {
	return bindataRead(
		_wski18nResourcesZh_hantAllJson,
		"wski18n/resources/zh_Hant.all.json",
	)
}

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

	info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 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){
	"wski18n/resources/de_DE.all.json":   wski18nResourcesDe_deAllJson,
	"wski18n/resources/en_US.all.json":   wski18nResourcesEn_usAllJson,
	"wski18n/resources/es_ES.all.json":   wski18nResourcesEs_esAllJson,
	"wski18n/resources/fr_FR.all.json":   wski18nResourcesFr_frAllJson,
	"wski18n/resources/it_IT.all.json":   wski18nResourcesIt_itAllJson,
	"wski18n/resources/ja_JA.all.json":   wski18nResourcesJa_jaAllJson,
	"wski18n/resources/ko_KR.all.json":   wski18nResourcesKo_krAllJson,
	"wski18n/resources/pt_BR.all.json":   wski18nResourcesPt_brAllJson,
	"wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
	"wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
}

// 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{
	"wski18n": &bintree{nil, map[string]*bintree{
		"resources": &bintree{nil, map[string]*bintree{
			"de_DE.all.json":   &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
			"en_US.all.json":   &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
			"es_ES.all.json":   &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
			"fr_FR.all.json":   &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
			"it_IT.all.json":   &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
			"ja_JA.all.json":   &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
			"ko_KR.all.json":   &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
			"pt_BR.all.json":   &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
			"zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
			"zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, 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, "/")...)...)
}
