diff --git a/bindata/README.md b/bindata/README.md new file mode 100644 index 000000000..36691c31b --- /dev/null +++ b/bindata/README.md @@ -0,0 +1,2 @@ +The files in this folder are auto generated from the files/ folder. +Currently bindata is used to store the favicon.ico file. That is all. diff --git a/bindata/bindata.go b/bindata/bindata.go new file mode 100644 index 000000000..96a9a2be7 --- /dev/null +++ b/bindata/bindata.go @@ -0,0 +1,247 @@ +// Code generated by go-bindata. (@generated) DO NOT EDIT. + +// Package bindata generated by go-bindata.// sources: +// files/favicon.ico +package bindata + +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 _filesFaviconIco = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x7a\x07\x78\x54\xd7\xb5\xf5\xb5\xfd\xe2\x3c\x3f\xc7\xb1\x7f\xe7\x4b\x48\x9c\x38\xb6\x89\x5b\x00\x1b\x3b\x01\x03\x06\x07\x6c\x27\x04\x9b\x60\xd3\x44\x15\x20\x90\x90\x84\x24\xd4\x7b\x1d\xf5\x51\xef\x65\xd4\x25\x9a\x11\xe0\x20\x8a\x24\xaa\x40\x12\x2a\x68\xd4\xdb\x8c\xca\xf4\xae\x99\xd1\x48\x1a\xd5\x29\xeb\xff\xee\x99\x11\xc1\x2f\x79\x2f\x7e\x71\x7c\xbf\x6f\xb1\xd1\x68\xee\xbd\x67\xed\xb3\xf7\xda\xfb\x9c\x23\x8a\x7a\x82\x7a\x82\xda\xf4\x2e\x6d\x5f\xa5\xf2\x57\x52\xd4\xcf\x28\x8a\x7a\x9b\xa2\xa8\x4d\x14\x45\xd9\x52\x96\xcf\xc9\xf5\x2e\x45\xbd\xf8\xac\x05\xdf\xf1\x7a\xa2\xae\xae\xee\x3f\x6c\x6c\x6c\x9e\xa2\x28\x8a\xc6\x7f\x3c\x86\x1f\x50\x14\xf5\xf4\x63\x76\x11\x3f\xb4\xe2\xe9\x7f\x82\x1f\xfe\x2f\xdf\xfd\xc1\x63\x20\xef\x63\xb3\x59\x3f\xa8\xac\xac\x7c\xea\x3b\x33\xfa\x96\x17\x83\xc1\x78\x92\xc1\xb0\x79\xda\xfa\xfe\x5f\xed\xda\xb5\x6d\xb9\xdd\x01\x9b\xf7\x1c\x1d\x1d\x7f\xe7\xe1\xe1\xb2\xda\xdf\xcb\xeb\x83\x10\x7f\xff\xb5\x41\x41\xbe\xeb\xc2\xc2\x82\xd6\x31\x18\x21\x1f\x46\x85\x85\xad\x8f\x89\x89\xd9\x40\x23\x2e\x2e\xee\x23\x26\x93\xf9\xc8\xfe\xed\xff\x31\x1b\xe2\xa2\xa2\x3e\x22\xdf\x63\x30\x36\x84\x85\x85\xad\x0f\x09\x09\xf8\x90\x7e\x8e\xaf\xaf\xe7\x3a\x7f\xef\x93\x6b\x3d\x5c\x5d\xd7\x9c\x74\xb6\xff\xe0\xf8\x71\xbb\xd5\xfb\xf6\xed\x7a\x7f\xf5\xb2\xd7\x97\x53\x14\xb5\x84\xa2\xa8\x1f\x7b\x79\x79\x3d\x43\xa6\xfa\x7b\xe6\x6e\x9d\x97\x9f\xd7\xdd\xbc\x16\x30\xd0\xd3\xde\xc4\xe3\xf6\x89\x84\xa3\x5c\x85\x58\x30\xa4\x91\x8b\x79\x93\x4a\xa9\x48\xaf\x56\x48\x67\x34\x2a\xf9\xac\x4e\xab\x9a\x9b\x9c\xd0\xce\xeb\x27\xc7\x17\x66\xa7\xa7\x0c\xf3\xb3\x33\x86\x85\xf9\x39\x83\xc1\xb0\x60\x30\x99\x8c\x06\xb3\xc9\x44\xac\xd1\xb0\x40\x3e\x9f\x9b\x9d\x36\xcc\xe8\xa7\x0c\xfa\xc9\x71\xc3\xc4\xb8\x7a\x5e\xab\x96\xcf\xab\xe4\xe2\x39\x85\x44\x30\x2b\x17\xf3\x66\xc4\x7c\xae\x5e\x38\x3c\x30\xc9\xe3\xf6\xe8\x86\x7a\xdb\x95\xbd\xec\x26\x5e\xdd\x8d\xab\xe7\x5c\xec\xed\xb6\xd0\x63\x62\x30\x5c\x7e\x44\x51\xd4\x93\xdf\x17\x77\x3b\x3b\xbb\xff\xa4\x28\xea\xa7\x9d\x6d\x8d\xe5\x73\x7a\x2d\xf4\xe3\x2a\x8c\x8f\xc9\xa0\x1b\x93\x11\x3b\xae\x96\x41\xa7\x51\x62\x52\xa3\x82\x7e\x5c\x83\xe9\x89\x71\xcc\x4c\x4d\x61\x6e\x46\x8f\xb9\x99\x59\xcc\xcf\x1b\x60\x58\x30\xc2\x64\x32\x01\x66\x3c\xba\x4c\x26\x33\x0c\xf3\x0b\x30\xcc\xce\x61\x7e\x66\x1a\x33\xfa\x49\x72\xef\xd4\xb8\x06\x93\x6a\x15\xc6\x55\x32\x68\x14\x22\xa8\x24\x7c\xc8\x85\x23\x50\xd0\x10\x8d\x40\x29\x1a\xc1\xa4\x5a\x82\x1e\x76\xa3\xe4\xc8\xfe\x3d\x7b\xe8\x78\xf4\x3d\x74\xe8\xd9\xef\x21\x0e\x9e\x28\x2d\x2d\xa5\xb9\xff\xa4\xa5\xe1\x6e\xbe\x5e\xab\x84\x42\xc2\x37\x8e\xc9\x45\x46\x9d\x5a\x6e\x9e\xd0\x28\xcd\x13\x5a\xb5\x79\x52\x37\x6e\xd6\x4f\xe9\x68\x40\x3f\xad\x83\x7e\x66\x1c\xd3\x0b\x93\x98\x31\x4c\x42\x6f\x9c\x84\xde\x34\x89\x19\x4c\x61\x16\x7a\xcc\x63\xfa\x11\xe6\xa0\xc7\x9c\x59\x8f\x79\x93\x1e\xb3\xc6\x29\xcc\x2c\x4c\x60\x7a\x6e\x9c\xdc\x3f\xa5\xd7\x62\x72\x52\x83\xc9\x71\x35\x94\x12\x9e\x59\x26\x18\x32\xcb\x85\xc3\x66\x19\x9f\x6b\x96\x09\x86\xcd\xa2\xd1\x81\x85\x31\xc9\x28\xda\x9b\xea\x04\x2f\xbc\xf0\xdc\x76\x8a\x7a\xe6\x65\x1b\x1b\x9b\x7f\x6b\x2e\x54\x57\x57\xd3\x31\xff\xdc\xe5\xca\xb3\x81\x6a\xb9\x10\x2a\xa9\xc0\x3c\x37\x33\x65\x9e\x9e\xd2\x41\x21\x93\x40\x25\x17\x43\x2a\x96\x41\x24\x56\x40\x24\x91\x60\x44\xc2\xc3\xa0\x64\x00\x7d\xd2\x2e\x74\x4b\xdb\xd0\x29\x69\x41\x87\xa4\x09\xed\x92\x07\x60\x4b\x1a\xd1\x26\x6e\x40\x9b\xa8\x1e\x0f\x45\xf7\xd1\x2a\xb4\x42\x70\x0f\xcd\x7c\x0b\x5a\x79\xf5\x68\x19\x6d\xc0\xc3\xe1\x26\xb4\x71\xdb\xd0\x39\xd8\x8b\xfe\x01\x2e\x46\x06\xbb\xc1\xed\xed\xc0\x50\x5f\x07\x86\x7a\xd8\xe0\x0f\x76\x41\x37\x26\x85\x42\xcc\x33\x8e\x89\x47\x70\xa7\xe6\x72\x2b\x2d\xfb\x87\x6d\x6c\x7e\xb9\x7c\xf9\xf2\xa7\xff\x1d\xdc\x2b\x2b\x2b\xe9\xe7\xfc\x67\x7e\x4e\xfa\x5e\xa9\x60\xc8\xa0\x96\x8b\x61\x98\x9b\x31\xc9\x24\x22\x44\x31\x22\xf0\xca\xab\xaf\xe0\x97\x2f\xbd\x04\x8a\xa2\xbe\x89\x97\x28\x50\xcb\x29\x3c\xbd\x86\xc2\xd3\x1b\x28\x50\x1b\x29\x3c\xf9\x31\x05\x8a\xc6\x27\xff\x00\x1f\x5b\xbe\x43\xfd\x81\x02\xb5\x9e\x02\xf5\x01\x05\x6a\x19\x05\xea\x45\xea\xef\x9f\x4d\x51\x78\x67\xc5\x32\xd8\xee\xb3\xc1\xd9\x52\x16\xc9\x03\xa5\x84\x6f\x52\x89\x87\x71\xa5\xf2\xcc\x45\x8a\xa2\x7e\xe7\xec\x7c\xe8\x67\x56\x8d\xfe\x2e\xdc\xe9\xba\xf2\x8c\xa7\x9b\xf3\x7a\xd1\x28\x47\x45\xfb\x7a\x61\x6e\xda\x28\x97\x89\xb1\x65\xf3\x9f\xc8\x38\x96\xfd\xf6\x6d\xbc\xf2\xeb\xd7\xf0\xea\xd2\x57\xb1\x74\xf9\xcb\x78\x73\xed\xaf\xf1\xce\xe7\xaf\x62\xed\xf1\xd7\xb1\x25\x6e\x05\x0e\x95\xaf\x85\xf7\x8d\x3f\x23\xa2\xe5\x4b\xc4\xb2\x77\x20\xa1\xcb\x06\xa9\xbd\xfb\x90\xd1\xbf\x17\x59\x9c\x7d\xc8\x1a\xdc\x8b\xf4\xbe\x7d\x48\xe9\xde\x83\xb8\x8e\x1d\x88\x6a\xdb\x8e\x80\x7b\x5b\xe1\x70\x7e\x03\xbe\x48\x5f\x89\x8d\x3e\x6f\xe3\xfd\xdd\x4b\xf1\xdb\x4d\xaf\xe0\xb5\x77\x5e\xc2\xcb\xbf\x79\x09\x2f\xff\xfa\x25\x2c\x59\xf2\xb3\x47\xbe\x48\x67\x46\x41\x29\x1a\x36\xcb\x85\x23\x66\x19\x6f\x00\xa5\xf9\x59\xe9\x14\x45\x2d\xf3\xb2\xb7\x7f\xf1\x5f\xd5\x43\x00\x4f\xa4\xa6\x92\x9a\xf2\x6a\x7f\x67\x5b\xc3\x94\x56\x81\xd9\xe9\x49\xc3\x98\x52\x8e\x5d\x3b\xb6\xff\xc3\x39\xf9\x3b\xbc\x45\x81\xfa\x88\x02\xb5\x85\x02\xf5\x25\x05\x6a\x27\x05\x6a\x37\x05\xca\x86\x02\xb5\xe7\x31\xd8\x58\x41\xff\x6e\x07\x05\x6a\x9b\x35\x26\x56\x52\xa0\x5e\xf8\x16\xef\xa1\x28\xe4\xa5\x27\x42\x23\x13\x98\x15\xa2\x61\xf4\xb3\x9b\x66\xb6\x6d\xd9\xec\x42\x51\xd4\x6f\x6c\x6c\x6c\x7e\xf4\xaf\x68\x41\x9d\x45\xef\x9e\x6f\x6e\xbc\x9b\x49\xeb\xdd\x94\x4e\x63\x9c\x9c\x18\x87\x8f\xb7\x27\x79\x5f\x68\x70\x00\x1a\xea\x6e\xa1\xbb\xbd\x05\x3d\x1d\x0f\x31\xd0\xd3\x01\x4e\x7f\x0f\xb8\x03\xbd\x18\xe6\xf4\x63\x84\x3b\x00\xde\x08\x17\x02\xde\x08\x44\xc2\x51\x88\x45\x02\x88\x25\x62\x88\xc4\x52\x48\x65\x32\xc8\x15\x72\x28\x94\x0a\x62\xe9\x9f\x45\x22\x21\x04\x82\x51\x08\x85\x7c\x08\xf8\x23\xe0\x8d\x70\xc0\x1f\xe5\x92\x67\x71\xfa\xbb\xd1\xdf\xcd\x46\x2f\xfd\xae\xf6\x66\x74\xb3\x9b\xd1\xd9\xd2\x80\xa6\x7b\x37\x90\x97\x95\x8a\x1f\x3f\xf7\x2c\x19\xd3\x57\x15\x85\x98\x50\xcb\x8c\x6a\x19\x1f\xec\x07\x77\x86\x28\x8a\xda\xba\x7a\xf5\xea\x97\x37\x6d\xda\xf4\x9f\xff\x17\xee\x74\x4f\x45\x51\xd4\xb3\x67\x2a\x8a\xed\x55\x52\x01\xb4\x2a\x19\x4c\x86\x79\x73\x45\x79\x29\x79\xcf\xe9\xb2\x22\x68\x55\x12\x68\x95\x12\x8c\xab\xa4\xa4\xfe\xe9\xd4\x0a\x4c\x6a\x55\x98\x1a\x1f\x83\x7e\x42\x83\x99\xc9\x71\xcc\x4d\x4f\x62\x61\x76\x1a\xc6\xf9\x59\xa3\xd9\xb8\x40\x17\xba\x6f\xd4\xbd\x6f\x5c\x66\xc0\x64\x58\x80\x71\x61\x1e\x0b\x73\x33\x98\xd3\x4f\x62\x56\x3f\x81\xa9\x71\x35\x26\x34\x4a\x68\x95\x62\xa8\xa5\x7c\xa8\xa4\xa3\x50\x8a\x47\xe9\x78\x87\x4c\xc0\x81\x52\x3c\x82\xfa\xdb\xd7\x1f\xc5\xc1\xdd\x9a\xcb\x18\x57\x8a\x8d\x6a\x19\x0f\x57\x2f\x9d\xbd\x4e\x51\xd4\x1a\x0f\x07\x87\x25\xdf\x56\x0b\xac\x39\xff\x5f\xb4\x86\x8c\x72\xfa\x04\xf4\xbb\xcd\x86\x05\x53\xfd\xbd\xbb\xe4\xf9\xc5\xac\x5c\x68\x15\x62\x5a\x6f\x30\xa6\x10\x43\xab\x92\x13\x8c\xab\x15\xd0\x69\x55\xa4\x4e\x4d\xe9\xb4\xd0\x4f\xea\x30\xad\x9f\xc0\xec\x34\xa9\xff\xe6\xf9\xb9\x19\x18\x16\xe6\x61\x34\x2c\xc0\x64\x34\xc2\x6c\x36\x3f\x82\xc9\x64\x24\x9f\x1b\x16\xe6\x40\x7f\x6f\x76\x46\x4f\x7a\x00\xfd\xe4\x38\x26\xc7\x35\x98\xd0\x8e\x61\x7c\x4c\x01\x8d\x52\x0a\xad\x42\x82\x31\xb9\x88\x80\x9e\x1b\xf1\xe8\x20\x14\xc2\x21\xdc\xad\xad\x22\xe3\xdb\xb4\xfe\x03\xf4\xb7\x37\x42\xab\x10\x99\x47\x07\x3a\xc1\x8c\x0a\x8b\xa6\xb5\xc0\xce\xce\xee\x85\x6f\xa3\x05\x95\x95\xa9\x74\xce\xff\xa2\xb7\xbd\xf5\xca\xdc\xa4\x06\xf3\xb3\xd3\xc6\x61\xee\x20\x79\x76\x54\x44\x28\x5d\x6b\x30\x26\x13\xd1\xf9\x80\xe9\x49\x0b\x3f\x7a\xbc\x8b\x76\xce\x8a\xd9\x99\x29\xc2\x81\x60\x6a\x82\xf8\x43\x4f\xf7\x34\x34\x74\x5a\xe2\xa7\x47\xd0\x8e\x61\x42\xab\x82\x4e\xa3\x22\xfd\x93\x4e\xbd\x08\x05\xe1\x6d\x81\x9c\xf4\x41\x5a\x95\x14\x1a\xa5\x04\x74\x1d\x52\x4a\x04\x50\xc9\x04\x64\x4c\x32\xde\x20\xbe\x3a\x55\x4c\xc6\xe9\xee\x74\x0c\x52\xde\xa0\x49\x37\x26\x41\xcf\xc3\x46\xb5\x75\x19\xf4\xda\x3f\xeb\x0b\xac\xb5\xee\x47\x17\xbe\x3a\xed\x39\x26\x13\x40\x3f\xa1\x35\xd1\xbd\x8c\xab\x8b\x33\x76\xed\xda\x01\x1e\xb7\x0f\x1a\x85\x18\x74\xdd\xa7\x79\xd1\x63\xa7\xe7\x66\x42\x63\x1d\xfb\x63\x63\xb6\xc4\x05\xdd\xb7\xc9\xa0\x56\x58\xc6\xbb\x38\x67\x34\xe8\xf8\xa1\xc7\x2d\x17\x8d\x5a\x20\x1c\x86\x54\xc0\x85\x94\xcf\x85\x84\xc7\x81\x78\x64\x00\xa2\xe1\x7e\x08\x87\x7a\x21\xe0\x76\x83\xc7\xe9\x02\x6f\xa0\x13\x23\x7d\x6c\x0c\xf7\x3e\x04\xb7\xab\x05\x83\x1d\x0f\x30\xdc\xdd\x0a\x7a\xac\xf4\x33\x85\xdc\x1e\xc4\x44\x84\x10\x1f\x14\x64\xd2\x7a\xc8\x33\xd2\x39\x53\x53\x55\x79\x97\xa2\xa8\x8f\x8e\xed\xdb\xf7\xd2\xff\x94\x07\x00\xe8\xd8\x78\x66\xff\xfe\x1d\x1b\x84\xc3\x03\x63\xfa\xf1\x31\x18\xe6\x67\x4d\xac\xbc\x5c\x3c\xfd\xcc\x73\xe8\xeb\x6c\x23\xb9\x4e\xcf\xe1\x8c\x7e\x82\xf0\x9e\xd4\x69\x48\x1c\xd0\x31\xba\xe8\x0b\xda\x0f\xe3\x1a\x25\xc6\xd5\x4a\x68\xe9\x98\x55\x59\xf9\x2b\xc4\x24\x5f\xc6\x64\x42\xa8\x64\x42\x8b\x95\x0a\xe8\x3e\xd2\xea\x07\x1e\x64\xc2\x11\xc8\x84\xc3\x16\x2b\x18\x86\x64\xd1\x17\xbc\x41\x88\x46\x68\x5f\xf4\x11\x08\xb8\x3d\xe0\x0d\x76\x61\xb4\xbf\x1d\x43\xdd\x2d\x18\x6c\x6f\xa4\x7b\x43\xe2\x53\xda\x47\x2e\x8e\xf6\x16\x2d\xa8\xbe\x04\xdd\x98\xd8\x2c\x1e\xe9\x47\x62\x4c\x44\x12\x45\x51\x2b\xfe\xa7\x3c\x48\x4d\x25\x71\xbf\xa4\xad\xb9\xe1\x92\x7e\x5c\x09\xe3\xc2\x9c\xb1\xbd\xad\x95\x3c\xe7\xde\xed\x1a\xe8\x54\x52\xc2\x6f\x76\x7a\xd2\x9a\xe3\x56\xee\x3a\xcd\xa3\x9f\x67\xa6\x74\x44\xf3\xe6\xe8\xbc\x27\xd0\x11\xcc\x4d\x59\x30\xa5\x1d\xfb\x7b\x68\x54\x16\xd0\x71\x44\xc7\x8d\x5c\x0c\xb5\x4c\x08\xb5\x54\x00\xb5\x4c\x40\x34\x6f\x8c\xd6\x3d\x9a\x9f\x68\x04\x92\xd1\x41\xc2\x9f\x4f\xe2\xa1\x03\x23\xbd\x6c\x12\x0b\x9c\x8e\x07\x44\x17\xe9\xfa\xd7\xdd\x5a\x8f\x9f\xfe\xe2\xe7\xf8\x78\xc3\x1a\x70\xba\x9b\x4d\x3a\xa5\x08\xec\xa6\x3a\x39\x45\x51\x07\x96\x2c\x59\xb2\xd4\x66\xdd\xba\x6f\xe4\x01\xbd\x96\xa7\xf5\xbe\xb4\x38\xef\x38\xed\xc3\x99\xa9\x71\xb3\x52\x26\xc5\xea\x0f\xd6\x22\x3b\x23\x15\x74\xcf\x4b\xe7\x25\x9d\xd7\xf4\x5c\xd3\xf9\x4b\x30\xa1\x25\x3f\xd3\xbc\x69\xfe\x03\x7d\x3d\x78\x50\x7f\x0f\x0d\xf5\xb7\x70\xff\x7e\x0d\x6e\xd6\x5e\xc5\x8d\x1b\x97\x71\xe3\xd6\x25\xdc\xbe\xf3\x35\xae\xd7\x9c\x43\xd5\xd5\x53\xa8\xba\x72\x1a\x57\xae\x9e\xf9\x26\xc8\x67\xa7\x71\xf5\xda\x19\x5c\xae\x2a\x43\x55\x55\x39\xbe\xbe\x58\x81\x2b\x97\xbe\x42\x6d\xcd\x05\xd4\x5e\xbf\x88\xbb\x37\xae\x81\xd3\xdd\x06\x99\x80\x6b\xf1\x01\x89\x81\x0e\x0c\xf7\xb6\x59\x72\xa1\x87\xce\x05\x7a\x8d\x34\x84\x2b\x17\xcf\x90\xb9\x8b\x09\xf5\x85\x4a\xcc\x35\xd2\x3e\xb8\x74\xae\xe2\x1a\x45\x51\xeb\x1c\x1c\xf6\x2f\xb1\xee\x5b\x90\x3e\xc7\xaa\x0b\xcb\xb8\xbd\x1d\xfd\x7a\x9d\x25\xee\x13\x99\xf1\xb0\x3f\x7a\x84\xc4\x26\x9d\xd3\x34\xf7\xc7\x79\xeb\xad\xdc\x17\xe6\xf4\xe0\x0c\xf4\x62\xdf\xde\x3d\x58\xb5\x76\x25\xde\x5b\xfb\x26\xfe\xb0\xf5\xb7\xf8\x74\xd7\x32\x7c\x69\xb7\x0a\x9f\x1f\x7e\x03\x9b\x0f\xfc\x04\x5b\x6c\x97\x60\xf3\xfe\x9f\xe3\x93\x3d\xcf\xe1\x93\xbd\xff\x0f\x9f\xee\x7d\x11\x9b\xf6\x3c\x87\x4d\x36\xcf\x60\xe3\xee\xa7\xb0\x61\x27\x85\x8f\x76\x52\xf8\xc4\xe6\x05\x7c\x66\xbb\x14\xdb\xec\xde\xc6\xf6\x63\xef\xe3\xb3\xbd\x2b\xb0\xe1\xf3\xa5\xf8\xe0\xe3\xdf\xe0\xad\xe5\xaf\x60\xe3\xa6\xb5\xa8\xba\x78\x16\x72\xc1\x10\xd1\x05\xda\x07\xb4\x26\x0c\xf5\x3c\x44\x7f\x5b\x3d\xf8\x03\x1d\x50\x2b\x44\xa4\x26\x64\xa7\x25\x12\x1f\x5c\xa9\x2c\x85\x56\x3e\x0a\x6e\xf7\x43\xa3\x9b\xf3\x51\x7f\x8a\xa2\xde\xde\xbc\x79\x33\x59\x27\xb2\xd9\x6c\xba\xd6\xff\xd7\xad\xeb\x55\x11\x93\x6a\x19\x8c\xf3\x33\xc6\xfa\xfb\x75\xe4\xbe\x2e\x76\x0b\x74\x6a\x39\xc9\xf7\xe9\xc9\x71\x4b\xcc\x4f\x8c\x13\xee\xb4\x1f\xe6\xa6\xa7\x20\x18\x1d\xc6\x96\xcf\xfe\x88\xa5\xef\x3f\x87\x3d\x47\xb6\xc2\xde\x73\x07\xdc\x82\xf7\xc0\x3b\xf2\x20\x3c\xc3\xf6\xc3\x3b\xfc\x10\x81\x47\xf0\x41\x78\x04\xdb\xc2\x2b\xe4\x30\xbc\x43\x8f\xc0\x33\xe4\x30\xdc\x03\x0f\xc0\xc5\x77\x0f\x9c\xbc\x76\xc2\xfe\xe4\x97\xb0\x3b\xf1\x17\x1c\x76\xfa\x1c\x47\xdd\xb6\xe1\xb8\xe7\x0e\x38\x79\xef\x84\x67\xe8\x7e\x78\x85\x1f\x80\xb3\xdf\x4e\xf2\xfb\x6d\x3b\x37\xe1\xb3\x2f\xd7\xe0\xc6\xf5\x0b\x24\x0e\x68\xfe\x74\xce\xd3\x31\x40\xe7\x41\x6f\x6b\x1d\x84\x43\xdd\x44\x13\xb9\xbd\x6d\xd8\xb2\xf9\x53\xbc\xfb\xd6\x6b\x18\xe8\xa8\x37\x4d\x8e\x89\xe9\xfe\xa0\x8d\xa2\xa8\x8d\x8e\xb6\xb6\xbf\x58\xdc\xbb\xda\xb2\x65\xcb\x5b\xdc\xbe\x0e\xfe\xfc\xb4\x0e\x6a\x95\xc2\xfc\xe1\x87\xeb\x70\xe1\xab\xd3\x98\x50\xcb\x49\x0d\x26\x5a\xaf\xd3\x10\xde\x7a\x6b\xfd\xa2\x6b\xc0\x84\x56\x8d\x80\x40\x1f\xac\xff\xe3\xfb\x70\xf5\xb3\x83\x47\xf8\x7e\xf8\xc5\xd8\xc2\x2f\xfa\x10\x02\x63\xec\x11\x10\x6d\x0f\xff\x48\x7b\x04\x46\x1f\x47\x60\xb4\x23\x02\xa3\x9c\x1e\x21\x20\xd2\x11\x3e\xe1\x76\xf0\x0c\x3e\x08\x17\xdf\xbd\x70\xf4\xdc\x05\x7b\xb7\x2f\x71\xc4\xe5\x2f\xb0\x75\xfc\x0c\xfb\xed\x37\x63\xff\xf1\xcd\x38\xec\xf2\x39\x8e\xb9\x6f\x83\x47\xe8\x3e\x78\x86\xef\x43\x40\xf4\x11\x1c\x77\xdd\x8d\x7d\xb6\x7f\x06\xbb\xe5\x16\xa4\x3c\x0e\x46\x69\x1d\xa0\xb5\xb0\xa7\x95\xe4\x41\x6f\xeb\x5d\x28\x04\x5c\x68\xe4\x42\x34\xd5\xd5\x5a\xf2\x20\xc4\xdb\x3c\x26\x1a\x04\xb7\xa7\x6d\xde\xcf\xdd\x99\x8e\x81\x57\x19\x0c\xb2\x9f\xf1\x54\x88\xbf\xd7\x2a\xa9\x60\xd8\x68\x9c\x9f\x41\x66\x46\x1a\x1c\x8e\xd9\x11\xcd\xa1\xeb\x32\x5d\xd3\x2d\xdc\xc7\xbf\x81\xf9\xd9\x69\x94\x94\xe4\x63\xf5\x27\x6f\xc0\x3f\xe2\x38\x02\xe3\x8e\x20\x98\x69\x8f\xf0\xc4\x13\x88\x4c\x3e\x09\x46\x12\x0d\x77\x30\x12\x3d\xc0\x48\xf4\x44\x64\xa2\x27\x18\x89\x5e\x60\x24\x78\x23\x32\xd1\x1b\x8c\x04\x2f\x84\xc6\xba\xc0\x3f\xc2\x01\x9e\x41\x87\xe1\xea\xbb\x1f\x8e\x1e\x36\xb0\x77\xdb\x89\xa3\x2e\xdb\x61\xe7\xf2\x25\x8e\x9c\xf8\x02\x87\x9d\xff\x42\x7c\x72\xd8\xe5\x33\x38\xfb\xec\x40\x40\xf4\x21\x04\xc5\xda\xe1\x90\xd3\x56\xb8\xba\x1f\x00\x77\xa0\x05\xe2\xe1\x7e\x8c\x58\x75\x80\xdb\xd5\x8c\xbe\xb6\xfb\x18\x60\xdf\x87\x4a\xca\x27\x7a\x98\x9b\x91\x44\x7c\x70\xfb\xca\x39\xe3\xac\x56\x8c\x0b\xa7\x4b\xf3\x28\x8a\x5a\x9a\x94\x94\x44\xe7\xc0\x93\x76\x07\x6d\xde\x99\xd4\x28\x66\x47\x86\x06\xf1\xe6\x1b\x6f\x98\xfb\x3a\x1f\x92\x9e\x93\xee\x69\x48\x2f\x67\x9d\x77\xd2\x8f\xe9\xe8\x9e\x48\x8f\xda\x1b\x55\x58\xb1\xfe\x27\xf0\x67\x38\x20\x34\xd1\x1e\x8c\x64\x57\xc4\xa4\x7b\x22\x2e\xc3\x07\x71\x19\xbe\x88\xcf\xf0\x47\x7c\x46\x00\xe2\x33\x02\xc1\xcc\x08\xb6\x20\x3d\x84\x20\x9e\x46\x5a\x08\xa2\x93\x7c\x10\x12\xed\x0a\xbf\x50\x07\x78\xf8\x1f\x81\x8b\xd7\x41\x38\xba\xef\xc3\xf1\x93\x7b\xe1\xe0\x46\xfb\x62\x37\x1c\x4e\xee\x86\xa3\xc7\x6e\x1c\x75\xd9\x86\xd0\x38\x27\x12\x2f\x27\x7c\x77\xc2\x3f\xea\x10\x6c\x8e\x6c\x40\x38\xe3\x24\x78\x43\xec\xbf\xe9\x40\x77\x2b\x38\x9d\x0f\xd0\xdd\x7c\x07\x43\xdd\x4d\x50\xcb\xf9\xa4\x56\xee\xd9\xb5\x03\xbb\xbf\xd8\x6c\x1c\xe3\xf7\xe0\xfa\xd7\x67\xe9\xf5\xe1\xaf\xac\xbd\x1e\x95\x16\x1f\xbf\x74\x7e\x7a\xd2\x14\x1b\x13\x8d\xa2\xfc\x6c\x6b\xdc\xeb\x30\x3d\x69\xd1\xf5\x45\xfe\x34\x77\xc3\xdc\x0c\x46\x47\x38\xd8\xba\xfb\x0f\xf0\x0a\x39\x8a\xf0\xe4\xe3\x88\x4e\x77\x07\x33\xcb\x17\x09\xd9\x01\x48\xcc\x09\x42\x52\x4e\x28\x92\x73\xc3\x90\x9a\x1b\x81\x94\x1c\x86\x05\xd9\x91\x48\xc9\x8a\xb4\x58\x82\x28\x30\xd3\x42\x10\x11\xe7\x85\x80\x30\x67\x78\xfa\x1f\x83\xab\xd7\x11\x38\xb9\xdb\xc2\xf1\xe4\x01\x38\xba\x1f\x80\xb3\xe7\x01\x9c\xf0\x3a\x00\x57\x9f\x83\x70\x3c\xb9\x0b\xd1\x29\x9e\xf0\x0a\x3e\x8c\x03\xc7\x3e\x81\x67\xf0\x5e\x84\x31\xed\xb0\x75\xf7\x07\x38\x7b\x2e\x0b\x32\x41\x3f\x46\xfb\xda\x31\xdc\xf3\x10\x9c\xce\x26\xf4\xb3\x1b\xd0\xd9\x78\x03\xa2\xe1\x6e\x68\x14\x42\xdc\xa9\xb9\x4c\xc7\x80\xe1\xde\xf5\xf3\x68\xb9\x7d\x35\x8a\xae\x77\xfd\x96\x7e\x8f\x62\x31\x99\xcf\x4f\x6a\xd5\x82\x4b\xe7\xcf\x81\xcf\xed\x33\xe9\x75\x6a\x6b\x7f\xf7\xcd\x9c\x9f\xd1\xd3\xfa\x20\xc7\x49\x0f\x67\x1c\x73\xdd\x01\x46\xca\x09\xc4\x66\x78\x22\x31\xc7\x1f\xc9\x79\xc1\x48\xcd\x0f\x47\x3a\x2b\x12\x19\xac\x68\x64\xb0\x62\x90\xc9\x8a\x45\x16\x2b\x1e\x59\x2c\x26\x41\x66\xbe\x15\x79\xf1\xc8\xc8\x8b\x47\x72\x66\x24\x22\xe3\x7d\x11\x10\xea\x0a\x4f\xbf\xe3\x70\xf5\x3c\x8a\x13\x1e\x76\x70\xf1\xb4\x83\x9b\x97\x1d\x4e\xfa\x1c\x85\xa7\xef\x51\x78\xf8\xda\xc1\x3f\xcc\x11\x05\xa7\x12\x90\x94\x15\x80\xf0\x78\x67\x24\x66\x7b\xc2\xc5\x67\x3b\xfc\x18\xb6\xd8\x7b\xf8\x13\xdc\xbd\x79\x09\xe2\xe1\x3e\x52\x07\xb8\xdd\x2d\x18\x68\x6f\x44\x4f\xcb\x5d\xe2\x03\xb9\x70\x00\x2a\xf1\x08\xe2\xa3\xc2\x4d\x8c\x80\x93\xa8\xbb\x76\xce\x7e\xb1\xee\x03\x20\x75\x50\xc2\x1b\xde\x43\xf7\x5b\x63\x72\x11\xd9\xdb\xb2\x68\xfd\x62\xad\xb3\xf0\x37\xcc\xcf\xa0\x80\x95\x87\x35\x7f\x7c\x15\x8c\x24\x37\xc4\x65\x79\x20\x31\xd7\x1f\xa9\xac\x50\x64\x14\x32\x90\x53\x12\x87\xdc\x92\x04\xe4\x95\x26\x21\xbf\x34\x19\xf9\x25\x29\x60\x95\xa6\x21\xaf\x38\x15\x79\x45\x34\xd2\x91\xc3\x4a\x41\x6e\x41\x2a\xf2\x0a\xd3\x90\x99\xcb\x44\x4c\x42\x30\x02\x82\xdd\xe0\xe6\x61\x0f\x17\x0f\x07\x9c\xf4\x72\x80\x87\xcf\x71\x78\xfb\x39\xc1\x27\xc0\x19\xfe\x41\x27\xe0\x17\xe8\x84\xb0\xa8\x93\x48\xcf\x8d\x44\x48\x84\x13\x72\x4b\x23\x11\x99\xe0\x02\xcf\x80\x7d\xf0\x09\xdb\x0f\x37\xbf\x5d\xd8\x6b\xfb\x19\x06\xba\x9a\xc1\x1f\xec\x24\xfc\x69\x1d\xa4\x75\xa0\xa3\xe1\x06\x06\xdb\xef\x41\xab\xe0\x1b\x39\xdd\x0f\x11\x17\xe1\x77\x87\x9e\x7b\xeb\x5e\xf6\x13\xd6\xde\x87\x12\x0b\x06\x77\xe9\xb5\x0a\x3a\xe6\x8d\x96\x58\x57\x3f\xe2\x4f\xea\xfc\xac\x1e\xec\x87\x2d\x44\x47\xbc\xfc\x1d\x90\x90\xeb\x85\x64\x56\x20\xd2\x8b\xc2\x90\x55\x12\x89\x9c\xd2\x38\xe4\x95\x25\xa2\xb0\x22\x0d\x45\x15\xe9\x28\x3e\x95\x89\xe2\x53\xd9\x28\xa9\xc8\x41\x71\x79\x2e\x8a\xca\x72\x91\x57\x90\x81\xbc\x82\x4c\xe4\xe4\xa5\xe2\xdc\xf9\x0a\x5c\xbe\x7a\x01\x97\xfe\x7a\x0e\x05\x45\x19\x08\x0d\xf7\x86\x97\xb7\x33\x7c\x7c\xdd\x10\x10\xe8\x8e\xa0\x60\x77\x84\x86\x7a\x22\x22\xc2\x0b\x11\x0c\x6f\xa4\x66\x45\x21\x22\xd2\x1d\x11\xd1\x27\x91\x9a\x1b\x8a\xa0\x70\x7b\x44\xc4\x3a\x23\x38\xf2\x28\x42\x63\x8f\xe2\x93\xad\xef\x23\x21\x36\x02\x42\x6e\x37\xb8\x44\x03\x9a\xd0\xdf\x76\x1f\x3d\xcd\x77\xf0\xb0\xee\x1a\x04\x83\xad\x46\xbd\x46\x0a\x4e\x57\x4b\x05\xe9\x7b\xac\xbc\x17\xe3\x40\x32\x3a\xd8\x3e\x3b\x49\xc7\xf8\x84\xe9\x6f\xfd\xad\x96\xe4\x3c\xbd\x7e\xd3\xaa\x95\xd8\xb9\x63\x87\x65\xef\x23\xde\x05\xa9\x45\x01\x48\x2f\x0a\x45\x76\x69\x24\x72\xcb\xe2\xc0\xaa\x48\x02\xab\x3c\x05\xc5\xa7\x33\x50\x7a\x26\x07\x65\xa7\xf3\x50\x76\x9a\x85\xf2\xd3\x05\x28\x3f\x5d\x88\xfc\x82\x2c\xa4\xa5\x27\xa2\xa4\xac\x00\x85\x45\x39\xc8\xce\x49\xc5\xe9\x33\xa5\x48\x4b\x8b\x47\x5e\x5e\x2a\xf2\xf3\xd3\xe1\xe3\xed\x00\x27\xc7\x83\x08\x0b\xf1\x45\x54\x64\x10\x62\xa2\x83\xc0\x8c\x0b\x45\x64\xa4\x1f\xf2\x8b\x92\xe0\x1f\xe8\x84\x9c\xa2\x78\xc4\x27\xfb\x21\x26\xc1\x13\x31\x89\x1e\x24\x0e\xc2\xe2\x1d\xe0\x15\x60\x4b\xc6\x56\x7b\xe5\x02\x44\x43\xdd\x64\xfe\xfb\xd9\xf5\xe8\x69\xb9\x83\xf6\x86\x5a\xb4\xdf\xbf\x66\x52\x89\x06\x68\x9d\xd4\xf6\xb7\xd4\x2f\x7b\x6c\xcd\x43\x8d\x8e\xb2\x9f\x97\x0b\x87\x0d\x74\xcf\xfe\x78\x3f\xbf\xb8\xb6\x99\x9b\x99\x42\x59\xa9\x65\x6d\xb9\xe6\xc3\xdf\x23\x3c\xc9\x19\x69\x45\x01\x48\x2b\x0c\x46\x66\x51\x04\xb2\x4b\x62\x90\x57\x96\xf0\x28\xe6\x4b\x4e\xe5\xa0\xfc\x0c\xcd\xbb\x08\xa7\xce\x96\x22\xbf\x30\x07\x31\x31\x11\x88\x67\xc6\x22\x23\x3d\x15\x61\xa1\x01\x48\x64\xc6\xe1\xcc\xe9\x0a\x24\xc4\xc7\x20\x91\x19\x8b\xb8\x98\x70\xd8\x1f\xd9\x05\x27\x87\x7d\x08\xf4\x73\x47\x0a\x33\x16\x29\x89\xb1\x48\x4d\x8e\x45\x5a\x5a\x2c\x8a\xcb\xd3\xc1\x2a\x49\x46\x66\x5e\x2c\xe2\x93\xfc\x91\x94\x1e\x88\xf8\x34\x1f\xc4\xa5\x79\x20\x2e\xdd\x0d\xbe\xa1\x07\xc8\xf8\xb6\x6f\xdb\x8a\x5e\x76\x23\xe9\x85\x2d\xfc\xef\xa2\xf3\xc1\x4d\x34\xdd\xfa\x2b\x06\xda\xee\x2e\xcc\xeb\x64\xe0\x74\x36\x1f\xb4\xf2\x27\x31\xd0\x52\x5d\xfd\x63\x8d\x52\x32\x3d\x3b\x3d\x81\xc9\xf1\x31\xf3\xe2\xba\x7c\x62\x5c\x4d\xf6\x61\x86\xb9\x03\xe4\xd9\x6f\xbe\xf1\x16\xde\x5b\xb5\x1c\x21\x4c\x7b\x24\xb3\x7c\x90\x94\xe7\x87\xe4\xdc\x20\xa4\xe6\x85\x21\x3d\x9f\x41\x34\x2f\x3d\x27\x1a\x69\xd9\xb1\xc8\x65\xa5\x22\xbf\x30\x93\xcc\x7b\x6c\x1c\x03\x69\x69\x49\x88\x8a\x0c\x43\x7e\x5e\x0e\xb2\xb3\x32\x51\x5e\x56\x86\xcb\x97\x2f\xa3\xac\xb4\x08\xc1\x81\x5e\x60\x84\xf9\x23\x91\x19\x8d\xf8\x38\x06\x18\xe1\x01\xc8\x4a\x4f\x45\x7e\x4e\x06\x32\xd3\x13\x91\x9b\x97\x8c\xaf\xab\xca\x50\x7e\x26\x1b\x49\xa9\xa1\xc8\xc8\x8d\x44\x6a\x76\x28\x92\xb3\x03\x91\x94\xed\x87\xe4\x1c\x1f\xf8\x84\xec\xc7\xca\xf7\x97\x93\x71\xe6\xa6\x27\x80\x37\xd0\xfe\x88\x7f\x47\x43\x2d\x1e\xd6\x5d\x45\xd3\xad\x4b\x0b\x3a\x29\x07\xfc\x81\xee\x7d\x16\xfe\x96\x1c\xd0\x6a\xb5\xcf\xeb\x34\xaa\x05\x7a\xbe\xc9\x7a\x5e\xfb\xb7\xbd\x09\x5a\xff\x43\x82\x03\xc9\x73\xdf\x7d\xe7\x5d\xbc\xbf\x6a\x39\xfc\xa3\xed\x10\x9b\xe9\x06\x66\x96\x17\x98\x99\x3e\x48\xc8\x0c\x44\x62\x66\x08\x52\xb2\xc3\x49\x8d\x4b\x48\x0b\x47\x72\x5a\x14\xb2\xf3\x92\x91\x57\x90\x8e\xf8\x84\x48\x30\x13\xa2\x10\x17\x17\x89\xb0\xf0\x20\x84\x47\x04\x13\xe4\xe7\x67\x21\x81\x19\x89\xd0\x60\x4f\x44\x32\x02\x70\xf6\x5c\x05\x2e\x5d\xfa\x0a\xe5\x15\x85\x28\x28\xcc\x41\x49\x59\x3e\xf2\x58\x19\xc8\x65\x25\xe0\xf4\x57\x39\x48\xc9\x60\x20\xb7\x90\x89\xec\xc2\x58\x64\xb0\x18\x48\xcf\x0f\x45\x1a\x2b\x08\x69\x05\x01\x70\xf2\xdc\x8e\x37\xde\x7e\x0d\x4b\x5f\xfb\x0d\x7e\xf4\xfc\xb3\x68\xba\x7b\xfd\x51\x1f\xb0\xc8\xff\xc1\xcd\x4b\x0b\x82\xde\x26\x88\xfb\x1f\x1e\x7c\x9c\xbf\x58\x2c\x7e\x46\xa7\x51\x2a\xe9\x75\xab\x4e\xa3\x32\x59\x7c\x30\x46\xe2\x5f\x25\x97\x62\xcf\xee\xdd\x84\xff\xca\x95\xef\x61\xd9\xbb\x6f\xc0\x37\xc4\x01\x31\x19\xae\x60\x66\x7b\x23\x25\x3f\x08\x69\xac\x30\x64\x16\x46\x21\xab\x30\x16\x39\xc5\x89\xc8\x2a\x48\x40\x6a\x56\x0c\x32\x72\x13\xc0\x2a\xce\x40\x0e\x2b\x0d\xfe\x81\xee\x38\xe9\xee\x80\x08\x46\x00\x7c\xfd\xdc\x10\x13\x1b\x86\xaf\x2a\x4f\xe1\xca\xb5\xaf\x51\x75\xf5\x12\xce\x9c\x2b\x25\xf6\xaf\x55\x95\x28\x2e\xcb\x47\x71\x59\x9e\x45\x37\xcb\xb3\x51\x5c\x9e\x8a\x82\xc5\x7a\x52\x96\x8c\xdc\xd2\x78\x64\x97\x44\x23\xb3\x38\x02\x19\x45\xa1\xc8\x28\x0e\xc2\xf6\xbd\x1b\xf1\x9b\xb7\x5e\xc1\xfb\x2b\x57\x92\xb1\x9e\x2f\x2f\x00\xb7\xf3\x01\xba\x9a\x6e\xa1\xa3\xbe\x06\xad\x77\xab\xd0\x74\xeb\x6b\x43\x7f\xcb\x4d\xb4\xde\xb9\xbc\xe3\xbf\xd7\x3f\xed\x98\x62\xdb\xcc\xe4\xf8\xe2\x1e\x94\x79\x42\xab\x22\x7b\x7a\x0b\xb3\xd3\x68\xa8\xbf\x47\x9e\xb9\x62\xc5\x3b\x78\x6b\xd9\xeb\xb0\x3d\xb6\x13\xf1\xd9\x9e\x88\xcb\xf2\x42\x5a\x61\x08\xb2\x8a\x19\xc8\x2e\x8e\x46\x76\x51\x1c\xb2\x8b\xe8\xf9\x61\x92\xfe\x26\x2e\x29\x04\x09\xa9\x11\x48\xcf\x61\x22\x39\x23\x16\xb1\x89\x11\x28\x2a\xcb\xc1\xe9\x73\xc5\xf8\xba\xea\x1c\x6e\xdc\xbe\x82\x6b\x35\x97\x50\x75\xed\x02\xce\x9c\x2b\xc6\xa9\xb3\x45\xe4\xf7\x45\xa5\x34\xe7\x6c\x14\x55\x64\xa1\xa8\x22\x03\x85\x15\xe9\x04\x05\x15\x29\xc8\x2f\x4f\x24\x7a\x9b\x5d\x1a\x85\xcc\x92\x08\x64\x97\x87\x93\x3e\x64\xf5\x86\xb7\xb1\x66\xdd\xef\xc8\x38\x7d\xdc\x4f\x80\xdb\xd5\x84\xde\x87\xf7\xd0\xf9\xe0\x16\xd8\xf7\xab\xd1\x7c\xfb\xf2\x42\xcf\x83\x1a\xd4\x57\x9f\xbf\xfe\xd8\xb6\xc7\x13\x8f\xeb\xe0\xb8\x42\x16\x6a\x9c\xd5\x43\xa7\x56\x1a\x75\x6a\xa5\x99\xec\xe5\xa8\x95\x30\x1b\xe7\x71\xb3\xb6\xda\x72\xee\xf2\xce\x0a\x7c\xb0\x7e\x25\xfc\x18\x0e\x88\xcb\x3a\x89\xb8\x4c\xda\x07\x74\xfd\x8f\x40\x46\x41\x24\xd2\x59\x51\x48\xcb\x8b\x42\x6a\x6e\x24\xa2\x93\x02\x11\x12\xe5\x85\x88\xf8\x00\x30\xd3\x23\x11\x93\x12\x81\x98\x54\x3a\x4e\xd2\x51\x58\x9e\x87\x33\xe7\x4b\x70\xee\x62\x09\xa9\x15\xf4\x3c\xb3\x4a\x32\x50\x58\x96\x69\x41\x79\x06\xa9\xa3\x45\x84\x7b\x1a\xe1\xce\x2a\x4f\x44\x5e\x59\x3c\xb2\x4b\xa3\x91\x59\xc2\x40\x46\x71\x18\xd2\x8a\x03\xb1\xc7\xee\x53\xac\xfa\x60\x05\x19\x9f\x8b\xe3\x51\x48\x86\x7b\x30\xdc\xdd\x6c\x99\xfb\x86\x5a\xb4\xd6\x5d\x35\x74\x36\x54\xa3\xa1\xba\x72\xb4\xbe\xba\xf2\xa7\xd4\xdf\xce\xb2\x1f\xf9\x01\x00\xf1\x85\x56\x25\xcd\x34\xcd\x4f\xd3\x73\x6f\x58\xdc\x7b\xd4\x8e\xc9\x01\xd3\x02\x6a\xab\xaf\x59\x74\xe0\xbd\x65\xf8\xf3\xb6\x0d\x08\x61\x1e\xb7\xf6\x80\x5e\x48\x2b\x08\x45\x6a\x7e\x28\x52\xf2\xc2\x48\xef\x9b\x94\x13\x06\x66\x66\x18\x42\x62\xbc\xe0\x13\x76\x02\xc1\xb1\xde\x88\xcf\x8a\x44\x52\x76\x1c\x52\x72\x13\x91\x53\x94\x8e\xb2\xb3\xf9\x38\x77\xa9\x18\xa7\x2b\x0b\x2c\xf3\x5c\x9e\x6e\xc1\x23\xce\xa9\x16\xde\xa4\xb6\x26\x20\xf7\x1b\xdc\x43\x91\x59\x1a\x82\x13\x7e\x36\x58\xb5\xce\xa2\x7b\xce\xf6\x47\x20\xe5\xf5\x81\xd7\xdf\x86\xae\xa6\xdb\x84\x7f\xdb\xbd\xeb\x86\xae\xc6\x1a\x34\xd4\x9c\x57\xde\xb8\x5c\xf2\x32\x89\x7b\x06\xe3\xef\xf6\x00\x1f\xf7\x87\x46\x21\x2d\x36\x2f\x4c\x43\xab\x92\x19\xb4\x64\xcf\xd5\x02\x18\x17\x50\x73\xfd\x8a\x25\x0e\xde\x7b\x1b\x5b\xb6\x7f\x04\xff\xe8\x23\x08\x61\x3a\x20\x26\xcd\x03\xc9\xf9\xc1\x48\xcc\x0d\x42\x62\x4e\x30\x12\xb2\x83\xc1\xcc\x0e\x41\x5c\x7a\x30\xfc\xa2\xdc\xe0\x11\xe6\x8c\xb0\x04\x7f\xa4\xb1\x98\xc8\x2e\xa1\x79\x65\xe2\xd4\x05\x16\x2a\xaf\x94\xe2\x7c\x55\x09\x4e\x55\xe6\x59\xea\x67\x59\xb2\x75\xae\x93\xc1\x2a\x4f\x42\x7e\x79\x02\xf2\xca\xe3\x91\x53\x1a\x8b\xec\x92\x28\xc2\x3d\xb3\x24\x1c\xe9\xc5\xc1\x70\x0b\xdc\x83\x55\x6b\x2d\xdc\x5d\x8e\x1f\x85\x94\xdf\x0f\xfe\x60\x3b\x3a\x1f\xdc\x46\x77\xf3\x6d\xb4\xd7\xd7\x18\xba\x1b\x6b\xd1\x58\x53\xa9\xbe\x51\x59\xf8\xda\x63\x7b\x5d\xff\xf0\x7a\xdc\x07\x6a\x99\xa8\xdc\x34\xa7\x87\x56\x29\x35\x68\x94\x52\xb2\xf7\xae\x56\x4a\x61\x36\xcc\x3d\x8a\x83\x15\xef\xbd\x89\x8f\x3f\x5b\x05\x67\xff\x9d\x08\x88\x3d\x8a\x98\x4c\x4f\x24\xe6\x07\x80\x99\x43\x23\x10\xf1\xd9\x41\x88\xcf\x09\x46\x6c\x66\x30\x02\x62\xdd\xe1\x1d\xe1\x8a\xc8\x94\x60\xe4\x94\xa5\xa0\xe4\x5c\x36\xca\x2b\x73\x51\x76\x3e\x0b\x05\x15\xc9\xc8\x29\x61\xa2\xf0\x14\xfd\x79\x3a\xd1\x37\x1a\x74\xac\x13\xde\xd6\x39\xcf\x2a\x8d\x40\x76\x59\x04\x98\x39\xde\xb0\x73\xfd\x1c\xab\x3f\xb4\x70\xf7\x70\x75\x84\x8c\x3f\x48\xb8\xd3\x73\x4e\x7a\x9e\xfa\x5a\x43\x77\xd3\x4d\x34\x56\x57\x8e\xdd\xbf\x52\x41\xb8\xb3\x59\xe4\x5c\xe7\x7f\xbd\x16\xb5\x80\xbe\x54\x12\x7e\xe9\xc2\xcc\x04\x34\x0a\x89\x41\xa3\x90\x98\x2d\x7b\xd8\x62\x98\x16\x66\x71\xb3\xd6\x72\xe6\xb2\x7c\xe5\xeb\x58\xbd\x7e\x05\x76\x1f\xfd\x18\xee\xe1\xfb\x10\x9b\xe3\x85\xa4\x82\x20\xc4\xe7\x06\x20\x3e\x37\x10\xf1\xb9\xc1\x48\x64\x85\x23\xb9\x20\x12\xe1\xc9\x7e\x08\x8a\xf3\x42\x5c\x66\x18\xd2\x0a\x62\x90\xc6\x8a\x44\x56\x71\x34\x58\xa7\x98\xa8\xb8\x98\x89\xaf\xaa\xf2\x71\xfe\x2a\x0b\xe5\x17\xd2\x08\xe7\xac\xe2\x48\xd2\x5f\xe6\x94\x45\x22\xef\x54\x14\x52\x0b\x03\x11\x18\x73\x14\x9b\xb7\xff\x0e\xbf\x5f\x63\xe1\xee\xef\xed\x0e\x39\x7f\x90\xd4\x7b\x3a\xe6\xe9\x7a\xd7\xde\x50\x6b\xe8\x6d\xbe\x45\xcf\xbb\xb2\xe6\x5c\xde\xab\xdf\x96\xfb\x3f\xf2\x81\x42\x38\xc2\x9a\x9b\xd2\x60\x4c\x26\x34\xa9\x65\x22\xf3\x98\x4c\x04\x95\x54\x08\xc3\x9c\x1e\x77\x6f\xdf\x24\x63\x78\xed\xad\x9f\xe3\xf7\x6b\x57\xe0\xc3\x3f\xfe\x16\x07\x9c\xff\x84\xf0\x94\x13\x48\x29\x0e\x42\x52\x61\x30\x52\x8a\xc3\x91\x54\x10\x8a\x98\xac\x00\x30\x52\x7c\x10\x18\xeb\x8e\x88\x44\x6f\xc4\xa4\xfa\x23\xbd\x90\x81\xd3\x7f\xcd\xc4\xf9\x6b\x79\x38\x7f\x35\xd7\x82\x6b\xb9\xb8\x50\x93\x8f\x73\x57\xb3\x51\x78\x2e\x1e\x59\xa5\xe1\xa4\xcf\xf2\x8d\x3c\x8c\xdd\x76\x1b\xf1\xee\xda\x5f\x63\xd5\xda\x77\xac\xe7\x31\xc1\x64\xde\x47\x7a\x1f\x7e\x93\x7b\xcb\x2d\x34\xd6\x5e\x10\xd6\x5d\x2a\xfc\xd5\xff\x95\xfb\x3f\xf2\x81\x8c\x3f\x9c\xa6\xd7\x2a\xa1\x94\x08\xcc\x2a\xa9\xd0\x44\xf6\xed\xc5\x3c\xcc\xe9\x75\x68\x69\x6a\xc0\x2f\x7e\xf6\x22\x19\xcf\xfa\x3f\xac\xc2\xb2\xf7\x7e\x8d\x4f\xb6\xbd\x07\x7b\xcf\x2f\x70\x22\xd0\x06\xae\xa1\x07\xe1\x1a\x72\x10\x27\x43\x0f\x21\x88\xe9\x86\xb8\xec\x20\xa4\x16\x46\x20\x3e\x2b\x00\x29\xac\x60\x94\x5d\x4c\xc2\x85\x1a\x9a\x73\x1e\xce\x57\xe7\xe0\xec\x95\x4c\x94\x5d\x4a\x46\xc9\x85\x04\xe4\x56\x44\xc0\x87\x61\x8b\x2f\xf6\xaf\xc7\x1b\xbf\x7b\x16\xef\xaf\x79\x13\xef\xae\x7a\x8b\xbc\x2b\x27\x33\x15\x32\x3e\x07\xdc\xce\x26\xc2\xbd\xa7\xf9\x8e\xb9\xa3\xa1\xd6\xd0\xd7\x72\x1b\x0f\x6e\x54\x0e\x54\x9d\x2d\x5c\xf2\xaf\x72\x5f\xbc\x1e\xd7\x03\x29\x7f\x30\x82\xfc\x0d\x8e\x94\x0f\xa5\x98\x67\x54\x8a\x79\xe4\xac\x42\xaf\x1b\x03\x77\xb0\x0f\x07\xf7\xed\x21\xe3\xfa\x68\xe3\x5a\xac\x5e\xf7\x2e\x56\xae\x7e\x13\xef\xad\x79\x1d\xeb\xff\xb4\x02\x7b\x8e\x7d\x8c\x13\x01\xbb\x11\xcc\x74\x42\x74\x86\x27\x62\xb3\xbc\x10\x96\x74\x02\xae\x81\x7b\x70\xdc\x7b\x3b\xbc\xc2\x0e\x91\x7d\x84\xa4\x7c\x5f\xc4\xa4\xbb\xc3\x2f\xea\x08\x5c\x03\x76\xc3\xd9\x7b\x1f\x4e\x78\x1e\xc6\x71\xb7\x03\xb0\xb5\xdb\x8d\xa5\x6f\xbf\x46\xde\x71\xf5\xeb\x4a\xc8\x85\x5c\xb2\xbe\xeb\x6a\xba\x43\x6b\x9d\x99\x5d\x5f\x63\xec\x6f\xbd\x43\xc7\x7c\x7d\x5d\x69\xda\x0b\xf4\x98\x59\xdf\x81\xfb\x63\x71\xf0\xa8\x36\x0a\x47\xfa\x9d\x24\x7c\x0e\xd9\x1b\xa4\xd7\x4b\x72\xe1\x08\x39\x9f\xd1\xa9\xe5\x18\x53\x48\x10\x16\x1c\xf0\xe8\x1c\xf6\xe9\x17\x29\x3c\xfb\x33\x0a\x9f\x6e\x5d\x07\x7b\x97\x7d\xb0\x3f\xb1\x1f\xc7\x5c\x76\xe1\x98\xdb\x76\xd8\x7b\x7c\x09\x27\xdf\xed\x70\xf0\xda\x86\xad\xfb\x3f\xc0\xeb\xab\x29\x3c\xf3\x06\x85\xf5\x9b\xdf\xc2\x9e\x23\x5b\x60\xe7\xb8\x17\xc7\x5d\x0f\xe0\xa8\xd3\x7e\x1c\x3a\xb6\x17\x07\x0e\xef\xc1\x87\x7f\xd8\x88\xcd\x9f\x7e\x8a\xb6\xc6\x3b\x50\x89\x86\x49\xac\xd3\x1a\xdf\xd5\x74\xd3\xd4\x5e\x5f\x6d\xea\x6f\xbd\x4d\xd7\xb8\xf3\xd5\x99\x27\x7f\x48\x11\x9d\xff\xfb\x1a\xf7\x1d\x7d\x40\x62\x41\x3c\xd2\xbf\x45\x3c\x3a\x30\xa3\x91\xf1\x21\xe1\x73\x17\xa4\x7c\x2e\x84\xc3\xfd\xe4\x3c\x4b\xa3\x94\xe0\x46\xf5\x15\xc4\x46\x85\xe3\xc8\x21\x5b\xec\xda\xb9\x1d\x9f\xfd\x79\x0b\x0e\x1c\xdc\x0b\x7b\xc7\x43\x38\xee\x64\x07\xfb\xe3\x87\x70\xd4\xde\x16\x76\xf6\xb6\x38\xea\x60\x0b\x07\xa7\xc3\xb0\x3d\xbc\x17\x3b\x76\x6c\xc3\xd6\xad\x5b\xb0\xed\x8b\xcf\x71\xc8\x6e\x2f\x8e\x1d\x3b\x04\x17\x67\x27\x04\xf8\x7a\x23\x2a\x3c\x04\xa7\x8a\xf3\x31\xd0\xd5\x4a\x7a\x9b\xce\xc6\x9b\x44\xe7\x3b\x1b\x6b\x4d\xec\xfb\xd7\xd1\xdb\x7c\x13\x0d\xd5\x17\x98\x8b\xe3\xfd\xbe\xfe\x1e\x72\xb1\x57\xe6\x71\xda\xdf\xe5\x73\xbb\x55\x5a\xb9\x00\xa2\xe1\xfe\x05\xd1\x48\xbf\x59\x38\xd4\x4b\xce\x2c\x75\x63\x52\x72\x56\xab\x94\x8a\xc8\xd9\x9e\x9c\xe4\x09\x0f\x52\xc1\x28\xa4\x82\x11\x48\xf8\xc3\x10\xf3\x86\x20\xe2\x71\x21\x1a\xe5\x40\x38\xc2\x81\x70\x94\x03\x31\x8f\x03\xf1\x28\xc7\xf2\xd9\xf0\x20\x01\xfd\x7f\x09\x7f\x88\xfc\xcd\x9b\x74\xb4\x1f\x9c\x8e\x46\xb2\x96\xef\x7c\x70\xcb\xcc\xbe\x5f\x6d\x68\x6f\xa8\x46\xfb\xfd\xab\xa8\xbf\xfa\x95\xdb\xe2\x18\xff\x5b\x5f\xf7\x6f\xbf\xac\xe7\x25\x14\x87\xd3\xf8\x12\x6f\xb0\xb3\x4d\x23\xe3\x59\xcf\x68\x7b\xe7\xf9\x9c\xee\x85\x91\xfe\x0e\xc3\xe8\x40\xa7\x81\x37\x68\xc5\x40\x87\x61\xb4\xbf\x9d\x60\xa4\x8f\x6d\x18\xe9\x6d\x33\x0c\xf7\x3c\x34\x0c\xf5\xb4\x1a\x86\xba\x5b\x0c\xdc\xae\x66\x03\xa7\xf3\x81\x61\xb0\xa3\xd1\x30\xd8\xde\x68\x18\x60\x37\x18\xfa\xd9\xf5\x86\xbe\x87\xf7\x0d\xbd\xad\x75\x86\x9e\xe6\x3b\x86\xce\x07\xb7\x0c\x1d\x0d\xb5\x0b\x16\xce\xb5\x0b\x6d\xf7\xaf\x99\xfa\x68\x8d\xbf\x71\x71\xfc\xfe\xb5\x53\x5f\x58\xe6\xa6\xf2\xa9\xc5\x3c\xfd\xbe\xaf\xc5\xbd\xa3\xca\xca\xca\xa7\x47\xfa\xdb\x13\x47\xfa\xda\x0d\xe3\xb2\x51\x68\x24\x23\xd0\x48\x86\x89\x55\x8b\x87\x30\x26\xe2\x42\x25\xe4\x40\x29\x18\x84\x82\x3f\x00\x05\xaf\x1f\xf2\xd1\x5e\xc8\x46\x7a\x20\x1d\xee\x86\x64\xa8\x0b\x12\x6e\x27\xc4\xdc\x0e\x88\x38\xed\x10\x0e\xb2\x21\x1c\x68\x83\xa0\xff\x21\xf8\x7d\xad\xe0\xf5\xb6\x60\xb4\xbb\x09\x23\x5d\x8d\x18\xea\xa8\x07\xa7\xfd\x1e\xb8\xec\x3a\xb0\xef\x5d\x41\x63\x6d\xe5\xb5\xda\xca\xa2\xd7\xa9\x7f\xd2\xd3\x7d\x5f\xd7\xe3\x39\xd6\xd3\xd2\xf0\xfb\xa1\xee\xa6\xfd\x9c\xce\xe6\x83\x9c\xae\x96\xa3\xdc\xce\x66\x07\x4e\x47\xa3\x33\xa7\xa3\xde\xb9\x9f\x6d\x41\x6f\x6b\x9d\x73\x4f\x6b\x9d\x1b\x41\xd3\x1d\xb7\x9e\xa6\x5b\x04\x5d\x8d\xb7\xdc\xda\xeb\x6b\xdd\xda\xeb\xab\xdd\xd8\xf5\xd5\x27\xd8\x75\xd7\x9d\xd9\x75\x57\x9d\x5b\x69\xdc\xa9\x72\x6e\xbe\x73\xd9\xa1\xe5\xd6\xd7\xc7\x9a\x6f\x7f\x7d\xe4\xc1\xcd\x8b\xb6\x4d\x35\x17\xf7\xdf\xab\x3a\xf5\xa7\xc5\x77\x7f\x57\x9d\xc3\x1c\xfd\xef\x46\x40\x47\xdb\xe7\x01\x01\x6d\x7f\x08\xdc\xa3\xed\x53\x00\x83\xb2\x2c\x8f\x16\xad\xf5\x36\xb3\xc5\x46\x18\x2d\x76\xe3\xa2\x9d\xb3\xd8\x57\x74\x16\xfb\xbc\xd5\xfe\x50\x60\xb5\xf7\x2c\xf6\x29\xab\x7d\x82\x61\xb5\xdf\x76\xbc\x8c\x6f\xda\x27\x37\x59\x7f\xb6\xda\x1f\x2c\x7e\xfe\xcf\xac\xf5\xfb\x4f\x97\x59\xef\x4b\xb7\xd8\x67\x39\x16\xbb\x44\x6d\xb1\x2b\x67\x2c\xf6\x88\xc1\x62\xeb\x4c\x16\x3f\x44\x98\x09\x81\x27\x01\xd2\x5d\xfe\x00\x20\x0f\xf8\x25\xa0\xa0\xed\x1a\x40\x4f\xdb\x2f\x81\x05\x72\x1b\x40\xdf\xf8\x54\x04\xfe\x7f\x00\x00\x00\xff\xff\x6d\x44\x9e\x8a\xae\x2f\x00\x00") + +func filesFaviconIcoBytes() ([]byte, error) { + return bindataRead( + _filesFaviconIco, + "files/favicon.ico", + ) +} + +func filesFaviconIco() (*asset, error) { + bytes, err := filesFaviconIcoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "files/favicon.ico", size: 12206, mode: os.FileMode(420), modTime: time.Unix(1587356420, 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) { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; 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) { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; 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){ + "files/favicon.ico": filesFaviconIco, +} + +// 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("nonexistent") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + canonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(canonicalName, "/") + 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{ + "files": &bintree{nil, map[string]*bintree{ + "favicon.ico": &bintree{filesFaviconIco, 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 { + canonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) +} diff --git a/bindata/files/favicon.ico b/bindata/files/favicon.ico new file mode 100644 index 000000000..f4d526ad9 Binary files /dev/null and b/bindata/files/favicon.ico differ diff --git a/bindata/generate.go b/bindata/generate.go new file mode 100644 index 000000000..84d4a05e5 --- /dev/null +++ b/bindata/generate.go @@ -0,0 +1,3 @@ +package bindata + +//go:generate go-bindata -pkg bindata -modtime 1587356420 -o bindata.go files/ diff --git a/dnclient/appmeta.go b/dnclient/appmeta.go index 9b12644d8..034ec60ee 100644 --- a/dnclient/appmeta.go +++ b/dnclient/appmeta.go @@ -1,4 +1,3 @@ -//nolint:dupl package dnclient import ( @@ -70,7 +69,7 @@ func (c *Client) handleAPIpath(app App, api string, next apiHandle, method ...st } // disccordnotifier uses 1-indexes. - c.router.Handle(path.Join("/", c.Config.URLBase, "api", string(app), api), + c.router.Handle(path.Join("/", c.Config.URLBase, "api", string(app), "{id:[0-9]+}", api), c.checkAPIKey(c.responseWrapper(func(r *http.Request) (int, interface{}) { switch id, _ := strconv.Atoi(mux.Vars(r)["id"]); { default: // unknown app, just run the handler. diff --git a/dnclient/bindata.go b/dnclient/bindata.go deleted file mode 100644 index 342df3c07..000000000 --- a/dnclient/bindata.go +++ /dev/null @@ -1,249 +0,0 @@ -// Code generated by go-bindata. (@generated) DO NOT EDIT. - -// Package dnclient generated by go-bindata.// sources: -// init/windows/application.ico -package dnclient - -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 _initWindowsApplicationIco = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x7a\x07\x78\x54\xd7\xb5\xf5\xb5\xfd\xe2\x3c\x3f\xc7\xb1\x7f\xe7\x4b\x48\x9c\x38\xb6\x89\x5b\x00\x1b\x3b\x01\x03\x06\x07\x6c\x27\x04\x9b\x60\xd3\x44\x15\x20\x90\x90\x84\x24\xd4\x7b\x1d\xf5\x51\xef\x65\xd4\x25\x9a\x11\xe0\x20\x8a\x24\xaa\x40\x12\x2a\x68\xd4\xdb\x8c\xca\xf4\xae\x99\xd1\x48\x1a\xd5\x29\xeb\xff\xee\x99\x11\xc1\x2f\x79\x2f\x7e\x71\x7c\xbf\x6f\xb1\xd1\x68\xee\xbd\x67\xed\xb3\xf7\xda\xfb\x9c\x23\x8a\x7a\x82\x7a\x82\xda\xf4\x2e\x6d\x5f\xa5\xf2\x57\x52\xd4\xcf\x28\x8a\x7a\x9b\xa2\xa8\x4d\x14\x45\xd9\x52\x96\xcf\xc9\xf5\x2e\x45\xbd\xf8\xac\x05\xdf\xf1\x7a\xa2\xae\xae\xee\x3f\x6c\x6c\x6c\x9e\xa2\x28\x8a\xc6\x7f\x3c\x86\x1f\x50\x14\xf5\xf4\x63\x76\x11\x3f\xb4\xe2\xe9\x7f\x82\x1f\xfe\x2f\xdf\xfd\xc1\x63\x20\xef\x63\xb3\x59\x3f\xa8\xac\xac\x7c\xea\x3b\x33\xfa\x96\x17\x83\xc1\x78\x92\xc1\xb0\x79\xda\xfa\xfe\x5f\xed\xda\xb5\x6d\xb9\xdd\x01\x9b\xf7\x1c\x1d\x1d\x7f\xe7\xe1\xe1\xb2\xda\xdf\xcb\xeb\x83\x10\x7f\xff\xb5\x41\x41\xbe\xeb\xc2\xc2\x82\xd6\x31\x18\x21\x1f\x46\x85\x85\xad\x8f\x89\x89\xd9\x40\x23\x2e\x2e\xee\x23\x26\x93\xf9\xc8\xfe\xed\xff\x31\x1b\xe2\xa2\xa2\x3e\x22\xdf\x63\x30\x36\x84\x85\x85\xad\x0f\x09\x09\xf8\x90\x7e\x8e\xaf\xaf\xe7\x3a\x7f\xef\x93\x6b\x3d\x5c\x5d\xd7\x9c\x74\xb6\xff\xe0\xf8\x71\xbb\xd5\xfb\xf6\xed\x7a\x7f\xf5\xb2\xd7\x97\x53\x14\xb5\x84\xa2\xa8\x1f\x7b\x79\x79\x3d\x43\xa6\xfa\x7b\xe6\x6e\x9d\x97\x9f\xd7\xdd\xbc\x16\x30\xd0\xd3\xde\xc4\xe3\xf6\x89\x84\xa3\x5c\x85\x58\x30\xa4\x91\x8b\x79\x93\x4a\xa9\x48\xaf\x56\x48\x67\x34\x2a\xf9\xac\x4e\xab\x9a\x9b\x9c\xd0\xce\xeb\x27\xc7\x17\x66\xa7\xa7\x0c\xf3\xb3\x33\x86\x85\xf9\x39\x83\xc1\xb0\x60\x30\x99\x8c\x06\xb3\xc9\x44\xac\xd1\xb0\x40\x3e\x9f\x9b\x9d\x36\xcc\xe8\xa7\x0c\xfa\xc9\x71\xc3\xc4\xb8\x7a\x5e\xab\x96\xcf\xab\xe4\xe2\x39\x85\x44\x30\x2b\x17\xf3\x66\xc4\x7c\xae\x5e\x38\x3c\x30\xc9\xe3\xf6\xe8\x86\x7a\xdb\x95\xbd\xec\x26\x5e\xdd\x8d\xab\xe7\x5c\xec\xed\xb6\xd0\x63\x62\x30\x5c\x7e\x44\x51\xd4\x93\xdf\x17\x77\x3b\x3b\xbb\xff\xa4\x28\xea\xa7\x9d\x6d\x8d\xe5\x73\x7a\x2d\xf4\xe3\x2a\x8c\x8f\xc9\xa0\x1b\x93\x11\x3b\xae\x96\x41\xa7\x51\x62\x52\xa3\x82\x7e\x5c\x83\xe9\x89\x71\xcc\x4c\x4d\x61\x6e\x46\x8f\xb9\x99\x59\xcc\xcf\x1b\x60\x58\x30\xc2\x64\x32\x01\x66\x3c\xba\x4c\x26\x33\x0c\xf3\x0b\x30\xcc\xce\x61\x7e\x66\x1a\x33\xfa\x49\x72\xef\xd4\xb8\x06\x93\x6a\x15\xc6\x55\x32\x68\x14\x22\xa8\x24\x7c\xc8\x85\x23\x50\xd0\x10\x8d\x40\x29\x1a\xc1\xa4\x5a\x82\x1e\x76\xa3\xe4\xc8\xfe\x3d\x7b\xe8\x78\xf4\x3d\x74\xe8\xd9\xef\x21\x0e\x9e\x28\x2d\x2d\xa5\xb9\xff\xa4\xa5\xe1\x6e\xbe\x5e\xab\x84\x42\xc2\x37\x8e\xc9\x45\x46\x9d\x5a\x6e\x9e\xd0\x28\xcd\x13\x5a\xb5\x79\x52\x37\x6e\xd6\x4f\xe9\x68\x40\x3f\xad\x83\x7e\x66\x1c\xd3\x0b\x93\x98\x31\x4c\x42\x6f\x9c\x84\xde\x34\x89\x19\x4c\x61\x16\x7a\xcc\x63\xfa\x11\xe6\xa0\xc7\x9c\x59\x8f\x79\x93\x1e\xb3\xc6\x29\xcc\x2c\x4c\x60\x7a\x6e\x9c\xdc\x3f\xa5\xd7\x62\x72\x52\x83\xc9\x71\x35\x94\x12\x9e\x59\x26\x18\x32\xcb\x85\xc3\x66\x19\x9f\x6b\x96\x09\x86\xcd\xa2\xd1\x81\x85\x31\xc9\x28\xda\x9b\xea\x04\x2f\xbc\xf0\xdc\x76\x8a\x7a\xe6\x65\x1b\x1b\x9b\x7f\x6b\x2e\x54\x57\x57\xd3\x31\xff\xdc\xe5\xca\xb3\x81\x6a\xb9\x10\x2a\xa9\xc0\x3c\x37\x33\x65\x9e\x9e\xd2\x41\x21\x93\x40\x25\x17\x43\x2a\x96\x41\x24\x56\x40\x24\x91\x60\x44\xc2\xc3\xa0\x64\x00\x7d\xd2\x2e\x74\x4b\xdb\xd0\x29\x69\x41\x87\xa4\x09\xed\x92\x07\x60\x4b\x1a\xd1\x26\x6e\x40\x9b\xa8\x1e\x0f\x45\xf7\xd1\x2a\xb4\x42\x70\x0f\xcd\x7c\x0b\x5a\x79\xf5\x68\x19\x6d\xc0\xc3\xe1\x26\xb4\x71\xdb\xd0\x39\xd8\x8b\xfe\x01\x2e\x46\x06\xbb\xc1\xed\xed\xc0\x50\x5f\x07\x86\x7a\xd8\xe0\x0f\x76\x41\x37\x26\x85\x42\xcc\x33\x8e\x89\x47\x70\xa7\xe6\x72\x2b\x2d\xfb\x87\x6d\x6c\x7e\xb9\x7c\xf9\xf2\xa7\xff\x1d\xdc\x2b\x2b\x2b\xe9\xe7\xfc\x67\x7e\x4e\xfa\x5e\xa9\x60\xc8\xa0\x96\x8b\x61\x98\x9b\x31\xc9\x24\x22\x44\x31\x22\xf0\xca\xab\xaf\xe0\x97\x2f\xbd\x04\x8a\xa2\xbe\x89\x97\x28\x50\xcb\x29\x3c\xbd\x86\xc2\xd3\x1b\x28\x50\x1b\x29\x3c\xf9\x31\x05\x8a\xc6\x27\xff\x00\x1f\x5b\xbe\x43\xfd\x81\x02\xb5\x9e\x02\xf5\x01\x05\x6a\x19\x05\xea\x45\xea\xef\x9f\x4d\x51\x78\x67\xc5\x32\xd8\xee\xb3\xc1\xd9\x52\x16\xc9\x03\xa5\x84\x6f\x52\x89\x87\x71\xa5\xf2\xcc\x45\x8a\xa2\x7e\xe7\xec\x7c\xe8\x67\x56\x8d\xfe\x2e\xdc\xe9\xba\xf2\x8c\xa7\x9b\xf3\x7a\xd1\x28\x47\x45\xfb\x7a\x61\x6e\xda\x28\x97\x89\xb1\x65\xf3\x9f\xc8\x38\x96\xfd\xf6\x6d\xbc\xf2\xeb\xd7\xf0\xea\xd2\x57\xb1\x74\xf9\xcb\x78\x73\xed\xaf\xf1\xce\xe7\xaf\x62\xed\xf1\xd7\xb1\x25\x6e\x05\x0e\x95\xaf\x85\xf7\x8d\x3f\x23\xa2\xe5\x4b\xc4\xb2\x77\x20\xa1\xcb\x06\xa9\xbd\xfb\x90\xd1\xbf\x17\x59\x9c\x7d\xc8\x1a\xdc\x8b\xf4\xbe\x7d\x48\xe9\xde\x83\xb8\x8e\x1d\x88\x6a\xdb\x8e\x80\x7b\x5b\xe1\x70\x7e\x03\xbe\x48\x5f\x89\x8d\x3e\x6f\xe3\xfd\xdd\x4b\xf1\xdb\x4d\xaf\xe0\xb5\x77\x5e\xc2\xcb\xbf\x79\x09\x2f\xff\xfa\x25\x2c\x59\xf2\xb3\x47\xbe\x48\x67\x46\x41\x29\x1a\x36\xcb\x85\x23\x66\x19\x6f\x00\xa5\xf9\x59\xe9\x14\x45\x2d\xf3\xb2\xb7\x7f\xf1\x5f\xd5\x43\x00\x4f\xa4\xa6\x92\x9a\xf2\x6a\x7f\x67\x5b\xc3\x94\x56\x81\xd9\xe9\x49\xc3\x98\x52\x8e\x5d\x3b\xb6\xff\xc3\x39\xf9\x3b\xbc\x45\x81\xfa\x88\x02\xb5\x85\x02\xf5\x25\x05\x6a\x27\x05\x6a\x37\x05\xca\x86\x02\xb5\xe7\x31\xd8\x58\x41\xff\x6e\x07\x05\x6a\x9b\x35\x26\x56\x52\xa0\x5e\xf8\x16\xef\xa1\x28\xe4\xa5\x27\x42\x23\x13\x98\x15\xa2\x61\xf4\xb3\x9b\x66\xb6\x6d\xd9\xec\x42\x51\xd4\x6f\x6c\x6c\x6c\x7e\xf4\xaf\x68\x41\x9d\x45\xef\x9e\x6f\x6e\xbc\x9b\x49\xeb\xdd\x94\x4e\x63\x9c\x9c\x18\x87\x8f\xb7\x27\x79\x5f\x68\x70\x00\x1a\xea\x6e\xa1\xbb\xbd\x05\x3d\x1d\x0f\x31\xd0\xd3\x01\x4e\x7f\x0f\xb8\x03\xbd\x18\xe6\xf4\x63\x84\x3b\x00\xde\x08\x17\x02\xde\x08\x44\xc2\x51\x88\x45\x02\x88\x25\x62\x88\xc4\x52\x48\x65\x32\xc8\x15\x72\x28\x94\x0a\x62\xe9\x9f\x45\x22\x21\x04\x82\x51\x08\x85\x7c\x08\xf8\x23\xe0\x8d\x70\xc0\x1f\xe5\x92\x67\x71\xfa\xbb\xd1\xdf\xcd\x46\x2f\xfd\xae\xf6\x66\x74\xb3\x9b\xd1\xd9\xd2\x80\xa6\x7b\x37\x90\x97\x95\x8a\x1f\x3f\xf7\x2c\x19\xd3\x57\x15\x85\x98\x50\xcb\x8c\x6a\x19\x1f\xec\x07\x77\x86\x28\x8a\xda\xba\x7a\xf5\xea\x97\x37\x6d\xda\xf4\x9f\xff\x17\xee\x74\x4f\x45\x51\xd4\xb3\x67\x2a\x8a\xed\x55\x52\x01\xb4\x2a\x19\x4c\x86\x79\x73\x45\x79\x29\x79\xcf\xe9\xb2\x22\x68\x55\x12\x68\x95\x12\x8c\xab\xa4\xa4\xfe\xe9\xd4\x0a\x4c\x6a\x55\x98\x1a\x1f\x83\x7e\x42\x83\x99\xc9\x71\xcc\x4d\x4f\x62\x61\x76\x1a\xc6\xf9\x59\xa3\xd9\xb8\x40\x17\xba\x6f\xd4\xbd\x6f\x5c\x66\xc0\x64\x58\x80\x71\x61\x1e\x0b\x73\x33\x98\xd3\x4f\x62\x56\x3f\x81\xa9\x71\x35\x26\x34\x4a\x68\x95\x62\xa8\xa5\x7c\xa8\xa4\xa3\x50\x8a\x47\xe9\x78\x87\x4c\xc0\x81\x52\x3c\x82\xfa\xdb\xd7\x1f\xc5\xc1\xdd\x9a\xcb\x18\x57\x8a\x8d\x6a\x19\x0f\x57\x2f\x9d\xbd\x4e\x51\xd4\x1a\x0f\x07\x87\x25\xdf\x56\x0b\xac\x39\xff\x5f\xb4\x86\x8c\x72\xfa\x04\xf4\xbb\xcd\x86\x05\x53\xfd\xbd\xbb\xe4\xf9\xc5\xac\x5c\x68\x15\x62\x5a\x6f\x30\xa6\x10\x43\xab\x92\x13\x8c\xab\x15\xd0\x69\x55\xa4\x4e\x4d\xe9\xb4\xd0\x4f\xea\x30\xad\x9f\xc0\xec\x34\xa9\xff\xe6\xf9\xb9\x19\x18\x16\xe6\x61\x34\x2c\xc0\x64\x34\xc2\x6c\x36\x3f\x82\xc9\x64\x24\x9f\x1b\x16\xe6\x40\x7f\x6f\x76\x46\x4f\x7a\x00\xfd\xe4\x38\x26\xc7\x35\x98\xd0\x8e\x61\x7c\x4c\x01\x8d\x52\x0a\xad\x42\x82\x31\xb9\x88\x80\x9e\x1b\xf1\xe8\x20\x14\xc2\x21\xdc\xad\xad\x22\xe3\xdb\xb4\xfe\x03\xf4\xb7\x37\x42\xab\x10\x99\x47\x07\x3a\xc1\x8c\x0a\x8b\xa6\xb5\xc0\xce\xce\xee\x85\x6f\xa3\x05\x95\x95\xa9\x74\xce\xff\xa2\xb7\xbd\xf5\xca\xdc\xa4\x06\xf3\xb3\xd3\xc6\x61\xee\x20\x79\x76\x54\x44\x28\x5d\x6b\x30\x26\x13\xd1\xf9\x80\xe9\x49\x0b\x3f\x7a\xbc\x8b\x76\xce\x8a\xd9\x99\x29\xc2\x81\x60\x6a\x82\xf8\x43\x4f\xf7\x34\x34\x74\x5a\xe2\xa7\x47\xd0\x8e\x61\x42\xab\x82\x4e\xa3\x22\xfd\x93\x4e\xbd\x08\x05\xe1\x6d\x81\x9c\xf4\x41\x5a\x95\x14\x1a\xa5\x04\x74\x1d\x52\x4a\x04\x50\xc9\x04\x64\x4c\x32\xde\x20\xbe\x3a\x55\x4c\xc6\xe9\xee\x74\x0c\x52\xde\xa0\x49\x37\x26\x41\xcf\xc3\x46\xb5\x75\x19\xf4\xda\x3f\xeb\x0b\xac\xb5\xee\x47\x17\xbe\x3a\xed\x39\x26\x13\x40\x3f\xa1\x35\xd1\xbd\x8c\xab\x8b\x33\x76\xed\xda\x01\x1e\xb7\x0f\x1a\x85\x18\x74\xdd\xa7\x79\xd1\x63\xa7\xe7\x66\x42\x63\x1d\xfb\x63\x63\xb6\xc4\x05\xdd\xb7\xc9\xa0\x56\x58\xc6\xbb\x38\x67\x34\xe8\xf8\xa1\xc7\x2d\x17\x8d\x5a\x20\x1c\x86\x54\xc0\x85\x94\xcf\x85\x84\xc7\x81\x78\x64\x00\xa2\xe1\x7e\x08\x87\x7a\x21\xe0\x76\x83\xc7\xe9\x02\x6f\xa0\x13\x23\x7d\x6c\x0c\xf7\x3e\x04\xb7\xab\x05\x83\x1d\x0f\x30\xdc\xdd\x0a\x7a\xac\xf4\x33\x85\xdc\x1e\xc4\x44\x84\x10\x1f\x14\x64\xd2\x7a\xc8\x33\xd2\x39\x53\x53\x55\x79\x97\xa2\xa8\x8f\x8e\xed\xdb\xf7\xd2\xff\x94\x07\x00\xe8\xd8\x78\x66\xff\xfe\x1d\x1b\x84\xc3\x03\x63\xfa\xf1\x31\x18\xe6\x67\x4d\xac\xbc\x5c\x3c\xfd\xcc\x73\xe8\xeb\x6c\x23\xb9\x4e\xcf\xe1\x8c\x7e\x82\xf0\x9e\xd4\x69\x48\x1c\xd0\x31\xba\xe8\x0b\xda\x0f\xe3\x1a\x25\xc6\xd5\x4a\x68\xe9\x98\x55\x59\xf9\x2b\xc4\x24\x5f\xc6\x64\x42\xa8\x64\x42\x8b\x95\x0a\xe8\x3e\xd2\xea\x07\x1e\x64\xc2\x11\xc8\x84\xc3\x16\x2b\x18\x86\x64\xd1\x17\xbc\x41\x88\x46\x68\x5f\xf4\x11\x08\xb8\x3d\xe0\x0d\x76\x61\xb4\xbf\x1d\x43\xdd\x2d\x18\x6c\x6f\xa4\x7b\x43\xe2\x53\xda\x47\x2e\x8e\xf6\x16\x2d\xa8\xbe\x04\xdd\x98\xd8\x2c\x1e\xe9\x47\x62\x4c\x44\x12\x45\x51\x2b\xfe\xa7\x3c\x48\x4d\x25\x71\xbf\xa4\xad\xb9\xe1\x92\x7e\x5c\x09\xe3\xc2\x9c\xb1\xbd\xad\x95\x3c\xe7\xde\xed\x1a\xe8\x54\x52\xc2\x6f\x76\x7a\xd2\x9a\xe3\x56\xee\x3a\xcd\xa3\x9f\x67\xa6\x74\x44\xf3\xe6\xe8\xbc\x27\xd0\x11\xcc\x4d\x59\x30\xa5\x1d\xfb\x7b\x68\x54\x16\xd0\x71\x44\xc7\x8d\x5c\x0c\xb5\x4c\x08\xb5\x54\x00\xb5\x4c\x40\x34\x6f\x8c\xd6\x3d\x9a\x9f\x68\x04\x92\xd1\x41\xc2\x9f\x4f\xe2\xa1\x03\x23\xbd\x6c\x12\x0b\x9c\x8e\x07\x44\x17\xe9\xfa\xd7\xdd\x5a\x8f\x9f\xfe\xe2\xe7\xf8\x78\xc3\x1a\x70\xba\x9b\x4d\x3a\xa5\x08\xec\xa6\x3a\x39\x45\x51\x07\x96\x2c\x59\xb2\xd4\x66\xdd\xba\x6f\xe4\x01\xbd\x96\xa7\xf5\xbe\xb4\x38\xef\x38\xed\xc3\x99\xa9\x71\xb3\x52\x26\xc5\xea\x0f\xd6\x22\x3b\x23\x15\x74\xcf\x4b\xe7\x25\x9d\xd7\xf4\x5c\xd3\xf9\x4b\x30\xa1\x25\x3f\xd3\xbc\x69\xfe\x03\x7d\x3d\x78\x50\x7f\x0f\x0d\xf5\xb7\x70\xff\x7e\x0d\x6e\xd6\x5e\xc5\x8d\x1b\x97\x71\xe3\xd6\x25\xdc\xbe\xf3\x35\xae\xd7\x9c\x43\xd5\xd5\x53\xa8\xba\x72\x1a\x57\xae\x9e\xf9\x26\xc8\x67\xa7\x71\xf5\xda\x19\x5c\xae\x2a\x43\x55\x55\x39\xbe\xbe\x58\x81\x2b\x97\xbe\x42\x6d\xcd\x05\xd4\x5e\xbf\x88\xbb\x37\xae\x81\xd3\xdd\x06\x99\x80\x6b\xf1\x01\x89\x81\x0e\x0c\xf7\xb6\x59\x72\xa1\x87\xce\x05\x7a\x8d\x34\x84\x2b\x17\xcf\x90\xb9\x8b\x09\xf5\x85\x4a\xcc\x35\xd2\x3e\xb8\x74\xae\xe2\x1a\x45\x51\xeb\x1c\x1c\xf6\x2f\xb1\xee\x5b\x90\x3e\xc7\xaa\x0b\xcb\xb8\xbd\x1d\xfd\x7a\x9d\x25\xee\x13\x99\xf1\xb0\x3f\x7a\x84\xc4\x26\x9d\xd3\x34\xf7\xc7\x79\xeb\xad\xdc\x17\xe6\xf4\xe0\x0c\xf4\x62\xdf\xde\x3d\x58\xb5\x76\x25\xde\x5b\xfb\x26\xfe\xb0\xf5\xb7\xf8\x74\xd7\x32\x7c\x69\xb7\x0a\x9f\x1f\x7e\x03\x9b\x0f\xfc\x04\x5b\x6c\x97\x60\xf3\xfe\x9f\xe3\x93\x3d\xcf\xe1\x93\xbd\xff\x0f\x9f\xee\x7d\x11\x9b\xf6\x3c\x87\x4d\x36\xcf\x60\xe3\xee\xa7\xb0\x61\x27\x85\x8f\x76\x52\xf8\xc4\xe6\x05\x7c\x66\xbb\x14\xdb\xec\xde\xc6\xf6\x63\xef\xe3\xb3\xbd\x2b\xb0\xe1\xf3\xa5\xf8\xe0\xe3\xdf\xe0\xad\xe5\xaf\x60\xe3\xa6\xb5\xa8\xba\x78\x16\x72\xc1\x10\xd1\x05\xda\x07\xb4\x26\x0c\xf5\x3c\x44\x7f\x5b\x3d\xf8\x03\x1d\x50\x2b\x44\xa4\x26\x64\xa7\x25\x12\x1f\x5c\xa9\x2c\x85\x56\x3e\x0a\x6e\xf7\x43\xa3\x9b\xf3\x51\x7f\x8a\xa2\xde\xde\xbc\x79\x33\x59\x27\xb2\xd9\x6c\xba\xd6\xff\xd7\xad\xeb\x55\x11\x93\x6a\x19\x8c\xf3\x33\xc6\xfa\xfb\x75\xe4\xbe\x2e\x76\x0b\x74\x6a\x39\xc9\xf7\xe9\xc9\x71\x4b\xcc\x4f\x8c\x13\xee\xb4\x1f\xe6\xa6\xa7\x20\x18\x1d\xc6\x96\xcf\xfe\x88\xa5\xef\x3f\x87\x3d\x47\xb6\xc2\xde\x73\x07\xdc\x82\xf7\xc0\x3b\xf2\x20\x3c\xc3\xf6\xc3\x3b\xfc\x10\x81\x47\xf0\x41\x78\x04\xdb\xc2\x2b\xe4\x30\xbc\x43\x8f\xc0\x33\xe4\x30\xdc\x03\x0f\xc0\xc5\x77\x0f\x9c\xbc\x76\xc2\xfe\xe4\x97\xb0\x3b\xf1\x17\x1c\x76\xfa\x1c\x47\xdd\xb6\xe1\xb8\xe7\x0e\x38\x79\xef\x84\x67\xe8\x7e\x78\x85\x1f\x80\xb3\xdf\x4e\xf2\xfb\x6d\x3b\x37\xe1\xb3\x2f\xd7\xe0\xc6\xf5\x0b\x24\x0e\x68\xfe\x74\xce\xd3\x31\x40\xe7\x41\x6f\x6b\x1d\x84\x43\xdd\x44\x13\xb9\xbd\x6d\xd8\xb2\xf9\x53\xbc\xfb\xd6\x6b\x18\xe8\xa8\x37\x4d\x8e\x89\xe9\xfe\xa0\x8d\xa2\xa8\x8d\x8e\xb6\xb6\xbf\x58\xdc\xbb\xda\xb2\x65\xcb\x5b\xdc\xbe\x0e\xfe\xfc\xb4\x0e\x6a\x95\xc2\xfc\xe1\x87\xeb\x70\xe1\xab\xd3\x98\x50\xcb\x49\x0d\x26\x5a\xaf\xd3\x10\xde\x7a\x6b\xfd\xa2\x6b\xc0\x84\x56\x8d\x80\x40\x1f\xac\xff\xe3\xfb\x70\xf5\xb3\x83\x47\xf8\x7e\xf8\xc5\xd8\xc2\x2f\xfa\x10\x02\x63\xec\x11\x10\x6d\x0f\xff\x48\x7b\x04\x46\x1f\x47\x60\xb4\x23\x02\xa3\x9c\x1e\x21\x20\xd2\x11\x3e\xe1\x76\xf0\x0c\x3e\x08\x17\xdf\xbd\x70\xf4\xdc\x05\x7b\xb7\x2f\x71\xc4\xe5\x2f\xb0\x75\xfc\x0c\xfb\xed\x37\x63\xff\xf1\xcd\x38\xec\xf2\x39\x8e\xb9\x6f\x83\x47\xe8\x3e\x78\x86\xef\x43\x40\xf4\x11\x1c\x77\xdd\x8d\x7d\xb6\x7f\x06\xbb\xe5\x16\xa4\x3c\x0e\x46\x69\x1d\xa0\xb5\xb0\xa7\x95\xe4\x41\x6f\xeb\x5d\x28\x04\x5c\x68\xe4\x42\x34\xd5\xd5\x5a\xf2\x20\xc4\xdb\x3c\x26\x1a\x04\xb7\xa7\x6d\xde\xcf\xdd\x99\x8e\x81\x57\x19\x0c\xb2\x9f\xf1\x54\x88\xbf\xd7\x2a\xa9\x60\xd8\x68\x9c\x9f\x41\x66\x46\x1a\x1c\x8e\xd9\x11\xcd\xa1\xeb\x32\x5d\xd3\x2d\xdc\xc7\xbf\x81\xf9\xd9\x69\x94\x94\xe4\x63\xf5\x27\x6f\xc0\x3f\xe2\x38\x02\xe3\x8e\x20\x98\x69\x8f\xf0\xc4\x13\x88\x4c\x3e\x09\x46\x12\x0d\x77\x30\x12\x3d\xc0\x48\xf4\x44\x64\xa2\x27\x18\x89\x5e\x60\x24\x78\x23\x32\xd1\x1b\x8c\x04\x2f\x84\xc6\xba\xc0\x3f\xc2\x01\x9e\x41\x87\xe1\xea\xbb\x1f\x8e\x1e\x36\xb0\x77\xdb\x89\xa3\x2e\xdb\x61\xe7\xf2\x25\x8e\x9c\xf8\x02\x87\x9d\xff\x42\x7c\x72\xd8\xe5\x33\x38\xfb\xec\x40\x40\xf4\x21\x04\xc5\xda\xe1\x90\xd3\x56\xb8\xba\x1f\x00\x77\xa0\x05\xe2\xe1\x7e\x8c\x58\x75\x80\xdb\xd5\x8c\xbe\xb6\xfb\x18\x60\xdf\x87\x4a\xca\x27\x7a\x98\x9b\x91\x44\x7c\x70\xfb\xca\x39\xe3\xac\x56\x8c\x0b\xa7\x4b\xf3\x28\x8a\x5a\x9a\x94\x94\x44\xe7\xc0\x93\x76\x07\x6d\xde\x99\xd4\x28\x66\x47\x86\x06\xf1\xe6\x1b\x6f\x98\xfb\x3a\x1f\x92\x9e\x93\xee\x69\x48\x2f\x67\x9d\x77\xd2\x8f\xe9\xe8\x9e\x48\x8f\xda\x1b\x55\x58\xb1\xfe\x27\xf0\x67\x38\x20\x34\xd1\x1e\x8c\x64\x57\xc4\xa4\x7b\x22\x2e\xc3\x07\x71\x19\xbe\x88\xcf\xf0\x47\x7c\x46\x00\xe2\x33\x02\xc1\xcc\x08\xb6\x20\x3d\x84\x20\x9e\x46\x5a\x08\xa2\x93\x7c\x10\x12\xed\x0a\xbf\x50\x07\x78\xf8\x1f\x81\x8b\xd7\x41\x38\xba\xef\xc3\xf1\x93\x7b\xe1\xe0\x46\xfb\x62\x37\x1c\x4e\xee\x86\xa3\xc7\x6e\x1c\x75\xd9\x86\xd0\x38\x27\x12\x2f\x27\x7c\x77\xc2\x3f\xea\x10\x6c\x8e\x6c\x40\x38\xe3\x24\x78\x43\xec\xbf\xe9\x40\x77\x2b\x38\x9d\x0f\xd0\xdd\x7c\x07\x43\xdd\x4d\x50\xcb\xf9\xa4\x56\xee\xd9\xb5\x03\xbb\xbf\xd8\x6c\x1c\xe3\xf7\xe0\xfa\xd7\x67\xe9\xf5\xe1\xaf\xac\xbd\x1e\x95\x16\x1f\xbf\x74\x7e\x7a\xd2\x14\x1b\x13\x8d\xa2\xfc\x6c\x6b\xdc\xeb\x30\x3d\x69\xd1\xf5\x45\xfe\x34\x77\xc3\xdc\x0c\x46\x47\x38\xd8\xba\xfb\x0f\xf0\x0a\x39\x8a\xf0\xe4\xe3\x88\x4e\x77\x07\x33\xcb\x17\x09\xd9\x01\x48\xcc\x09\x42\x52\x4e\x28\x92\x73\xc3\x90\x9a\x1b\x81\x94\x1c\x86\x05\xd9\x91\x48\xc9\x8a\xb4\x58\x82\x28\x30\xd3\x42\x10\x11\xe7\x85\x80\x30\x67\x78\xfa\x1f\x83\xab\xd7\x11\x38\xb9\xdb\xc2\xf1\xe4\x01\x38\xba\x1f\x80\xb3\xe7\x01\x9c\xf0\x3a\x00\x57\x9f\x83\x70\x3c\xb9\x0b\xd1\x29\x9e\xf0\x0a\x3e\x8c\x03\xc7\x3e\x81\x67\xf0\x5e\x84\x31\xed\xb0\x75\xf7\x07\x38\x7b\x2e\x0b\x32\x41\x3f\x46\xfb\xda\x31\xdc\xf3\x10\x9c\xce\x26\xf4\xb3\x1b\xd0\xd9\x78\x03\xa2\xe1\x6e\x68\x14\x42\xdc\xa9\xb9\x4c\xc7\x80\xe1\xde\xf5\xf3\x68\xb9\x7d\x35\x8a\xae\x77\xfd\x96\x7e\x8f\x62\x31\x99\xcf\x4f\x6a\xd5\x82\x4b\xe7\xcf\x81\xcf\xed\x33\xe9\x75\x6a\x6b\x7f\xf7\xcd\x9c\x9f\xd1\xd3\xfa\x20\xc7\x49\x0f\x67\x1c\x73\xdd\x01\x46\xca\x09\xc4\x66\x78\x22\x31\xc7\x1f\xc9\x79\xc1\x48\xcd\x0f\x47\x3a\x2b\x12\x19\xac\x68\x64\xb0\x62\x90\xc9\x8a\x45\x16\x2b\x1e\x59\x2c\x26\x41\x66\xbe\x15\x79\xf1\xc8\xc8\x8b\x47\x72\x66\x24\x22\xe3\x7d\x11\x10\xea\x0a\x4f\xbf\xe3\x70\xf5\x3c\x8a\x13\x1e\x76\x70\xf1\xb4\x83\x9b\x97\x1d\x4e\xfa\x1c\x85\xa7\xef\x51\x78\xf8\xda\xc1\x3f\xcc\x11\x05\xa7\x12\x90\x94\x15\x80\xf0\x78\x67\x24\x66\x7b\xc2\xc5\x67\x3b\xfc\x18\xb6\xd8\x7b\xf8\x13\xdc\xbd\x79\x09\xe2\xe1\x3e\x52\x07\xb8\xdd\x2d\x18\x68\x6f\x44\x4f\xcb\x5d\xe2\x03\xb9\x70\x00\x2a\xf1\x08\xe2\xa3\xc2\x4d\x8c\x80\x93\xa8\xbb\x76\xce\x7e\xb1\xee\x03\x20\x75\x50\xc2\x1b\xde\x43\xf7\x5b\x63\x72\x11\xd9\xdb\xb2\x68\xfd\x62\xad\xb3\xf0\x37\xcc\xcf\xa0\x80\x95\x87\x35\x7f\x7c\x15\x8c\x24\x37\xc4\x65\x79\x20\x31\xd7\x1f\xa9\xac\x50\x64\x14\x32\x90\x53\x12\x87\xdc\x92\x04\xe4\x95\x26\x21\xbf\x34\x19\xf9\x25\x29\x60\x95\xa6\x21\xaf\x38\x15\x79\x45\x34\xd2\x91\xc3\x4a\x41\x6e\x41\x2a\xf2\x0a\xd3\x90\x99\xcb\x44\x4c\x42\x30\x02\x82\xdd\xe0\xe6\x61\x0f\x17\x0f\x07\x9c\xf4\x72\x80\x87\xcf\x71\x78\xfb\x39\xc1\x27\xc0\x19\xfe\x41\x27\xe0\x17\xe8\x84\xb0\xa8\x93\x48\xcf\x8d\x44\x48\x84\x13\x72\x4b\x23\x11\x99\xe0\x02\xcf\x80\x7d\xf0\x09\xdb\x0f\x37\xbf\x5d\xd8\x6b\xfb\x19\x06\xba\x9a\xc1\x1f\xec\x24\xfc\x69\x1d\xa4\x75\xa0\xa3\xe1\x06\x06\xdb\xef\x41\xab\xe0\x1b\x39\xdd\x0f\x11\x17\xe1\x77\x87\x9e\x7b\xeb\x5e\xf6\x13\xd6\xde\x87\x12\x0b\x06\x77\xe9\xb5\x0a\x3a\xe6\x8d\x96\x58\x57\x3f\xe2\x4f\xea\xfc\xac\x1e\xec\x87\x2d\x44\x47\xbc\xfc\x1d\x90\x90\xeb\x85\x64\x56\x20\xd2\x8b\xc2\x90\x55\x12\x89\x9c\xd2\x38\xe4\x95\x25\xa2\xb0\x22\x0d\x45\x15\xe9\x28\x3e\x95\x89\xe2\x53\xd9\x28\xa9\xc8\x41\x71\x79\x2e\x8a\xca\x72\x91\x57\x90\x81\xbc\x82\x4c\xe4\xe4\xa5\xe2\xdc\xf9\x0a\x5c\xbe\x7a\x01\x97\xfe\x7a\x0e\x05\x45\x19\x08\x0d\xf7\x86\x97\xb7\x33\x7c\x7c\xdd\x10\x10\xe8\x8e\xa0\x60\x77\x84\x86\x7a\x22\x22\xc2\x0b\x11\x0c\x6f\xa4\x66\x45\x21\x22\xd2\x1d\x11\xd1\x27\x91\x9a\x1b\x8a\xa0\x70\x7b\x44\xc4\x3a\x23\x38\xf2\x28\x42\x63\x8f\xe2\x93\xad\xef\x23\x21\x36\x02\x42\x6e\x37\xb8\x44\x03\x9a\xd0\xdf\x76\x1f\x3d\xcd\x77\xf0\xb0\xee\x1a\x04\x83\xad\x46\xbd\x46\x0a\x4e\x57\x4b\x05\xe9\x7b\xac\xbc\x17\xe3\x40\x32\x3a\xd8\x3e\x3b\x49\xc7\xf8\x84\xe9\x6f\xfd\xad\x96\xe4\x3c\xbd\x7e\xd3\xaa\x95\xd8\xb9\x63\x87\x65\xef\x23\xde\x05\xa9\x45\x01\x48\x2f\x0a\x45\x76\x69\x24\x72\xcb\xe2\xc0\xaa\x48\x02\xab\x3c\x05\xc5\xa7\x33\x50\x7a\x26\x07\x65\xa7\xf3\x50\x76\x9a\x85\xf2\xd3\x05\x28\x3f\x5d\x88\xfc\x82\x2c\xa4\xa5\x27\xa2\xa4\xac\x00\x85\x45\x39\xc8\xce\x49\xc5\xe9\x33\xa5\x48\x4b\x8b\x47\x5e\x5e\x2a\xf2\xf3\xd3\xe1\xe3\xed\x00\x27\xc7\x83\x08\x0b\xf1\x45\x54\x64\x10\x62\xa2\x83\xc0\x8c\x0b\x45\x64\xa4\x1f\xf2\x8b\x92\xe0\x1f\xe8\x84\x9c\xa2\x78\xc4\x27\xfb\x21\x26\xc1\x13\x31\x89\x1e\x24\x0e\xc2\xe2\x1d\xe0\x15\x60\x4b\xc6\x56\x7b\xe5\x02\x44\x43\xdd\x64\xfe\xfb\xd9\xf5\xe8\x69\xb9\x83\xf6\x86\x5a\xb4\xdf\xbf\x66\x52\x89\x06\x68\x9d\xd4\xf6\xb7\xd4\x2f\x7b\x6c\xcd\x43\x8d\x8e\xb2\x9f\x97\x0b\x87\x0d\x74\xcf\xfe\x78\x3f\xbf\xb8\xb6\x99\x9b\x99\x42\x59\xa9\x65\x6d\xb9\xe6\xc3\xdf\x23\x3c\xc9\x19\x69\x45\x01\x48\x2b\x0c\x46\x66\x51\x04\xb2\x4b\x62\x90\x57\x96\xf0\x28\xe6\x4b\x4e\xe5\xa0\xfc\x0c\xcd\xbb\x08\xa7\xce\x96\x22\xbf\x30\x07\x31\x31\x11\x88\x67\xc6\x22\x23\x3d\x15\x61\xa1\x01\x48\x64\xc6\xe1\xcc\xe9\x0a\x24\xc4\xc7\x20\x91\x19\x8b\xb8\x98\x70\xd8\x1f\xd9\x05\x27\x87\x7d\x08\xf4\x73\x47\x0a\x33\x16\x29\x89\xb1\x48\x4d\x8e\x45\x5a\x5a\x2c\x8a\xcb\xd3\xc1\x2a\x49\x46\x66\x5e\x2c\xe2\x93\xfc\x91\x94\x1e\x88\xf8\x34\x1f\xc4\xa5\x79\x20\x2e\xdd\x0d\xbe\xa1\x07\xc8\xf8\xb6\x6f\xdb\x8a\x5e\x76\x23\xe9\x85\x2d\xfc\xef\xa2\xf3\xc1\x4d\x34\xdd\xfa\x2b\x06\xda\xee\x2e\xcc\xeb\x64\xe0\x74\x36\x1f\xb4\xf2\x27\x31\xd0\x52\x5d\xfd\x63\x8d\x52\x32\x3d\x3b\x3d\x81\xc9\xf1\x31\xf3\xe2\xba\x7c\x62\x5c\x4d\xf6\x61\x86\xb9\x03\xe4\xd9\x6f\xbe\xf1\x16\xde\x5b\xb5\x1c\x21\x4c\x7b\x24\xb3\x7c\x90\x94\xe7\x87\xe4\xdc\x20\xa4\xe6\x85\x21\x3d\x9f\x41\x34\x2f\x3d\x27\x1a\x69\xd9\xb1\xc8\x65\xa5\x22\xbf\x30\x93\xcc\x7b\x6c\x1c\x03\x69\x69\x49\x88\x8a\x0c\x43\x7e\x5e\x0e\xb2\xb3\x32\x51\x5e\x56\x86\xcb\x97\x2f\xa3\xac\xb4\x08\xc1\x81\x5e\x60\x84\xf9\x23\x91\x19\x8d\xf8\x38\x06\x18\xe1\x01\xc8\x4a\x4f\x45\x7e\x4e\x06\x32\xd3\x13\x91\x9b\x97\x8c\xaf\xab\xca\x50\x7e\x26\x1b\x49\xa9\xa1\xc8\xc8\x8d\x44\x6a\x76\x28\x92\xb3\x03\x91\x94\xed\x87\xe4\x1c\x1f\xf8\x84\xec\xc7\xca\xf7\x97\x93\x71\xe6\xa6\x27\x80\x37\xd0\xfe\x88\x7f\x47\x43\x2d\x1e\xd6\x5d\x45\xd3\xad\x4b\x0b\x3a\x29\x07\xfc\x81\xee\x7d\x16\xfe\x96\x1c\xd0\x6a\xb5\xcf\xeb\x34\xaa\x05\x7a\xbe\xc9\x7a\x5e\xfb\xb7\xbd\x09\x5a\xff\x43\x82\x03\xc9\x73\xdf\x7d\xe7\x5d\xbc\xbf\x6a\x39\xfc\xa3\xed\x10\x9b\xe9\x06\x66\x96\x17\x98\x99\x3e\x48\xc8\x0c\x44\x62\x66\x08\x52\xb2\xc3\x49\x8d\x4b\x48\x0b\x47\x72\x5a\x14\xb2\xf3\x92\x91\x57\x90\x8e\xf8\x84\x48\x30\x13\xa2\x10\x17\x17\x89\xb0\xf0\x20\x84\x47\x04\x13\xe4\xe7\x67\x21\x81\x19\x89\xd0\x60\x4f\x44\x32\x02\x70\xf6\x5c\x05\x2e\x5d\xfa\x0a\xe5\x15\x85\x28\x28\xcc\x41\x49\x59\x3e\xf2\x58\x19\xc8\x65\x25\xe0\xf4\x57\x39\x48\xc9\x60\x20\xb7\x90\x89\xec\xc2\x58\x64\xb0\x18\x48\xcf\x0f\x45\x1a\x2b\x08\x69\x05\x01\x70\xf2\xdc\x8e\x37\xde\x7e\x0d\x4b\x5f\xfb\x0d\x7e\xf4\xfc\xb3\x68\xba\x7b\xfd\x51\x1f\xb0\xc8\xff\xc1\xcd\x4b\x0b\x82\xde\x26\x88\xfb\x1f\x1e\x7c\x9c\xbf\x58\x2c\x7e\x46\xa7\x51\x2a\xe9\x75\xab\x4e\xa3\x32\x59\x7c\x30\x46\xe2\x5f\x25\x97\x62\xcf\xee\xdd\x84\xff\xca\x95\xef\x61\xd9\xbb\x6f\xc0\x37\xc4\x01\x31\x19\xae\x60\x66\x7b\x23\x25\x3f\x08\x69\xac\x30\x64\x16\x46\x21\xab\x30\x16\x39\xc5\x89\xc8\x2a\x48\x40\x6a\x56\x0c\x32\x72\x13\xc0\x2a\xce\x40\x0e\x2b\x0d\xfe\x81\xee\x38\xe9\xee\x80\x08\x46\x00\x7c\xfd\xdc\x10\x13\x1b\x86\xaf\x2a\x4f\xe1\xca\xb5\xaf\x51\x75\xf5\x12\xce\x9c\x2b\x25\xf6\xaf\x55\x95\x28\x2e\xcb\x47\x71\x59\x9e\x45\x37\xcb\xb3\x51\x5c\x9e\x8a\x82\xc5\x7a\x52\x96\x8c\xdc\xd2\x78\x64\x97\x44\x23\xb3\x38\x02\x19\x45\xa1\xc8\x28\x0e\xc2\xf6\xbd\x1b\xf1\x9b\xb7\x5e\xc1\xfb\x2b\x57\x92\xb1\x9e\x2f\x2f\x00\xb7\xf3\x01\xba\x9a\x6e\xa1\xa3\xbe\x06\xad\x77\xab\xd0\x74\xeb\x6b\x43\x7f\xcb\x4d\xb4\xde\xb9\xbc\xe3\xbf\xd7\x3f\xed\x98\x62\xdb\xcc\xe4\xf8\xe2\x1e\x94\x79\x42\xab\x22\x7b\x7a\x0b\xb3\xd3\x68\xa8\xbf\x47\x9e\xb9\x62\xc5\x3b\x78\x6b\xd9\xeb\xb0\x3d\xb6\x13\xf1\xd9\x9e\x88\xcb\xf2\x42\x5a\x61\x08\xb2\x8a\x19\xc8\x2e\x8e\x46\x76\x51\x1c\xb2\x8b\xe8\xf9\x61\x92\xfe\x26\x2e\x29\x04\x09\xa9\x11\x48\xcf\x61\x22\x39\x23\x16\xb1\x89\x11\x28\x2a\xcb\xc1\xe9\x73\xc5\xf8\xba\xea\x1c\x6e\xdc\xbe\x82\x6b\x35\x97\x50\x75\xed\x02\xce\x9c\x2b\xc6\xa9\xb3\x45\xe4\xf7\x45\xa5\x34\xe7\x6c\x14\x55\x64\xa1\xa8\x22\x03\x85\x15\xe9\x04\x05\x15\x29\xc8\x2f\x4f\x24\x7a\x9b\x5d\x1a\x85\xcc\x92\x08\x64\x97\x87\x93\x3e\x64\xf5\x86\xb7\xb1\x66\xdd\xef\xc8\x38\x7d\xdc\x4f\x80\xdb\xd5\x84\xde\x87\xf7\xd0\xf9\xe0\x16\xd8\xf7\xab\xd1\x7c\xfb\xf2\x42\xcf\x83\x1a\xd4\x57\x9f\xbf\xfe\xd8\xb6\xc7\x13\x8f\xeb\xe0\xb8\x42\x16\x6a\x9c\xd5\x43\xa7\x56\x1a\x75\x6a\xa5\x99\xec\xe5\xa8\x95\x30\x1b\xe7\x71\xb3\xb6\xda\x72\xee\xf2\xce\x0a\x7c\xb0\x7e\x25\xfc\x18\x0e\x88\xcb\x3a\x89\xb8\x4c\xda\x07\x74\xfd\x8f\x40\x46\x41\x24\xd2\x59\x51\x48\xcb\x8b\x42\x6a\x6e\x24\xa2\x93\x02\x11\x12\xe5\x85\x88\xf8\x00\x30\xd3\x23\x11\x93\x12\x81\x98\x54\x3a\x4e\xd2\x51\x58\x9e\x87\x33\xe7\x4b\x70\xee\x62\x09\xa9\x15\xf4\x3c\xb3\x4a\x32\x50\x58\x96\x69\x41\x79\x06\xa9\xa3\x45\x84\x7b\x1a\xe1\xce\x2a\x4f\x44\x5e\x59\x3c\xb2\x4b\xa3\x91\x59\xc2\x40\x46\x71\x18\xd2\x8a\x03\xb1\xc7\xee\x53\xac\xfa\x60\x05\x19\x9f\x8b\xe3\x51\x48\x86\x7b\x30\xdc\xdd\x6c\x99\xfb\x86\x5a\xb4\xd6\x5d\x35\x74\x36\x54\xa3\xa1\xba\x72\xb4\xbe\xba\xf2\xa7\xd4\xdf\xce\xb2\x1f\xf9\x01\x00\xf1\x85\x56\x25\xcd\x34\xcd\x4f\xd3\x73\x6f\x58\xdc\x7b\xd4\x8e\xc9\x01\xd3\x02\x6a\xab\xaf\x59\x74\xe0\xbd\x65\xf8\xf3\xb6\x0d\x08\x61\x1e\xb7\xf6\x80\x5e\x48\x2b\x08\x45\x6a\x7e\x28\x52\xf2\xc2\x48\xef\x9b\x94\x13\x06\x66\x66\x18\x42\x62\xbc\xe0\x13\x76\x02\xc1\xb1\xde\x88\xcf\x8a\x44\x52\x76\x1c\x52\x72\x13\x91\x53\x94\x8e\xb2\xb3\xf9\x38\x77\xa9\x18\xa7\x2b\x0b\x2c\xf3\x5c\x9e\x6e\xc1\x23\xce\xa9\x16\xde\xa4\xb6\x26\x20\xf7\x1b\xdc\x43\x91\x59\x1a\x82\x13\x7e\x36\x58\xb5\xce\xa2\x7b\xce\xf6\x47\x20\xe5\xf5\x81\xd7\xdf\x86\xae\xa6\xdb\x84\x7f\xdb\xbd\xeb\x86\xae\xc6\x1a\x34\xd4\x9c\x57\xde\xb8\x5c\xf2\x32\x89\x7b\x06\xe3\xef\xf6\x00\x1f\xf7\x87\x46\x21\x2d\x36\x2f\x4c\x43\xab\x92\x19\xb4\x64\xcf\xd5\x02\x18\x17\x50\x73\xfd\x8a\x25\x0e\xde\x7b\x1b\x5b\xb6\x7f\x04\xff\xe8\x23\x08\x61\x3a\x20\x26\xcd\x03\xc9\xf9\xc1\x48\xcc\x0d\x42\x62\x4e\x30\x12\xb2\x83\xc1\xcc\x0e\x41\x5c\x7a\x30\xfc\xa2\xdc\xe0\x11\xe6\x8c\xb0\x04\x7f\xa4\xb1\x98\xc8\x2e\xa1\x79\x65\xe2\xd4\x05\x16\x2a\xaf\x94\xe2\x7c\x55\x09\x4e\x55\xe6\x59\xea\x67\x59\xb2\x75\xae\x93\xc1\x2a\x4f\x42\x7e\x79\x02\xf2\xca\xe3\x91\x53\x1a\x8b\xec\x92\x28\xc2\x3d\xb3\x24\x1c\xe9\xc5\xc1\x70\x0b\xdc\x83\x55\x6b\x2d\xdc\x5d\x8e\x1f\x85\x94\xdf\x0f\xfe\x60\x3b\x3a\x1f\xdc\x46\x77\xf3\x6d\xb4\xd7\xd7\x18\xba\x1b\x6b\xd1\x58\x53\xa9\xbe\x51\x59\xf8\xda\x63\x7b\x5d\xff\xf0\x7a\xdc\x07\x6a\x99\xa8\xdc\x34\xa7\x87\x56\x29\x35\x68\x94\x52\xb2\xf7\xae\x56\x4a\x61\x36\xcc\x3d\x8a\x83\x15\xef\xbd\x89\x8f\x3f\x5b\x05\x67\xff\x9d\x08\x88\x3d\x8a\x98\x4c\x4f\x24\xe6\x07\x80\x99\x43\x23\x10\xf1\xd9\x41\x88\xcf\x09\x46\x6c\x66\x30\x02\x62\xdd\xe1\x1d\xe1\x8a\xc8\x94\x60\xe4\x94\xa5\xa0\xe4\x5c\x36\xca\x2b\x73\x51\x76\x3e\x0b\x05\x15\xc9\xc8\x29\x61\xa2\xf0\x14\xfd\x79\x3a\xd1\x37\x1a\x74\xac\x13\xde\xd6\x39\xcf\x2a\x8d\x40\x76\x59\x04\x98\x39\xde\xb0\x73\xfd\x1c\xab\x3f\xb4\x70\xf7\x70\x75\x84\x8c\x3f\x48\xb8\xd3\x73\x4e\x7a\x9e\xfa\x5a\x43\x77\xd3\x4d\x34\x56\x57\x8e\xdd\xbf\x52\x41\xb8\xb3\x59\xe4\x5c\xe7\x7f\xbd\x16\xb5\x80\xbe\x54\x12\x7e\xe9\xc2\xcc\x04\x34\x0a\x89\x41\xa3\x90\x98\x2d\x7b\xd8\x62\x98\x16\x66\x71\xb3\xd6\x72\xe6\xb2\x7c\xe5\xeb\x58\xbd\x7e\x05\x76\x1f\xfd\x18\xee\xe1\xfb\x10\x9b\xe3\x85\xa4\x82\x20\xc4\xe7\x06\x20\x3e\x37\x10\xf1\xb9\xc1\x48\x64\x85\x23\xb9\x20\x12\xe1\xc9\x7e\x08\x8a\xf3\x42\x5c\x66\x18\xd2\x0a\x62\x90\xc6\x8a\x44\x56\x71\x34\x58\xa7\x98\xa8\xb8\x98\x89\xaf\xaa\xf2\x71\xfe\x2a\x0b\xe5\x17\xd2\x08\xe7\xac\xe2\x48\xd2\x5f\xe6\x94\x45\x22\xef\x54\x14\x52\x0b\x03\x11\x18\x73\x14\x9b\xb7\xff\x0e\xbf\x5f\x63\xe1\xee\xef\xed\x0e\x39\x7f\x90\xd4\x7b\x3a\xe6\xe9\x7a\xd7\xde\x50\x6b\xe8\x6d\xbe\x45\xcf\xbb\xb2\xe6\x5c\xde\xab\xdf\x96\xfb\x3f\xf2\x81\x42\x38\xc2\x9a\x9b\xd2\x60\x4c\x26\x34\xa9\x65\x22\xf3\x98\x4c\x04\x95\x54\x08\xc3\x9c\x1e\x77\x6f\xdf\x24\x63\x78\xed\xad\x9f\xe3\xf7\x6b\x57\xe0\xc3\x3f\xfe\x16\x07\x9c\xff\x84\xf0\x94\x13\x48\x29\x0e\x42\x52\x61\x30\x52\x8a\xc3\x91\x54\x10\x8a\x98\xac\x00\x30\x52\x7c\x10\x18\xeb\x8e\x88\x44\x6f\xc4\xa4\xfa\x23\xbd\x90\x81\xd3\x7f\xcd\xc4\xf9\x6b\x79\x38\x7f\x35\xd7\x82\x6b\xb9\xb8\x50\x93\x8f\x73\x57\xb3\x51\x78\x2e\x1e\x59\xa5\xe1\xa4\xcf\xf2\x8d\x3c\x8c\xdd\x76\x1b\xf1\xee\xda\x5f\x63\xd5\xda\x77\xac\xe7\x31\xc1\x64\xde\x47\x7a\x1f\x7e\x93\x7b\xcb\x2d\x34\xd6\x5e\x10\xd6\x5d\x2a\xfc\xd5\xff\x95\xfb\x3f\xf2\x81\x8c\x3f\x9c\xa6\xd7\x2a\xa1\x94\x08\xcc\x2a\xa9\xd0\x44\xf6\xed\xc5\x3c\xcc\xe9\x75\x68\x69\x6a\xc0\x2f\x7e\xf6\x22\x19\xcf\xfa\x3f\xac\xc2\xb2\xf7\x7e\x8d\x4f\xb6\xbd\x07\x7b\xcf\x2f\x70\x22\xd0\x06\xae\xa1\x07\xe1\x1a\x72\x10\x27\x43\x0f\x21\x88\xe9\x86\xb8\xec\x20\xa4\x16\x46\x20\x3e\x2b\x00\x29\xac\x60\x94\x5d\x4c\xc2\x85\x1a\x9a\x73\x1e\xce\x57\xe7\xe0\xec\x95\x4c\x94\x5d\x4a\x46\xc9\x85\x04\xe4\x56\x44\xc0\x87\x61\x8b\x2f\xf6\xaf\xc7\x1b\xbf\x7b\x16\xef\xaf\x79\x13\xef\xae\x7a\x8b\xbc\x2b\x27\x33\x15\x32\x3e\x07\xdc\xce\x26\xc2\xbd\xa7\xf9\x8e\xb9\xa3\xa1\xd6\xd0\xd7\x72\x1b\x0f\x6e\x54\x0e\x54\x9d\x2d\x5c\xf2\xaf\x72\x5f\xbc\x1e\xd7\x03\x29\x7f\x30\x82\xfc\x0d\x8e\x94\x0f\xa5\x98\x67\x54\x8a\x79\xe4\xac\x42\xaf\x1b\x03\x77\xb0\x0f\x07\xf7\xed\x21\xe3\xfa\x68\xe3\x5a\xac\x5e\xf7\x2e\x56\xae\x7e\x13\xef\xad\x79\x1d\xeb\xff\xb4\x02\x7b\x8e\x7d\x8c\x13\x01\xbb\x11\xcc\x74\x42\x74\x86\x27\x62\xb3\xbc\x10\x96\x74\x02\xae\x81\x7b\x70\xdc\x7b\x3b\xbc\xc2\x0e\x91\x7d\x84\xa4\x7c\x5f\xc4\xa4\xbb\xc3\x2f\xea\x08\x5c\x03\x76\xc3\xd9\x7b\x1f\x4e\x78\x1e\xc6\x71\xb7\x03\xb0\xb5\xdb\x8d\xa5\x6f\xbf\x46\xde\x71\xf5\xeb\x4a\xc8\x85\x5c\xb2\xbe\xeb\x6a\xba\x43\x6b\x9d\x99\x5d\x5f\x63\xec\x6f\xbd\x43\xc7\x7c\x7d\x5d\x69\xda\x0b\xf4\x98\x59\xdf\x81\xfb\x63\x71\xf0\xa8\x36\x0a\x47\xfa\x9d\x24\x7c\x0e\xd9\x1b\xa4\xd7\x4b\x72\xe1\x08\x39\x9f\xd1\xa9\xe5\x18\x53\x48\x10\x16\x1c\xf0\xe8\x1c\xf6\xe9\x17\x29\x3c\xfb\x33\x0a\x9f\x6e\x5d\x07\x7b\x97\x7d\xb0\x3f\xb1\x1f\xc7\x5c\x76\xe1\x98\xdb\x76\xd8\x7b\x7c\x09\x27\xdf\xed\x70\xf0\xda\x86\xad\xfb\x3f\xc0\xeb\xab\x29\x3c\xf3\x06\x85\xf5\x9b\xdf\xc2\x9e\x23\x5b\x60\xe7\xb8\x17\xc7\x5d\x0f\xe0\xa8\xd3\x7e\x1c\x3a\xb6\x17\x07\x0e\xef\xc1\x87\x7f\xd8\x88\xcd\x9f\x7e\x8a\xb6\xc6\x3b\x50\x89\x86\x49\xac\xd3\x1a\xdf\xd5\x74\xd3\xd4\x5e\x5f\x6d\xea\x6f\xbd\x4d\xd7\xb8\xf3\xd5\x99\x27\x7f\x48\x11\x9d\xff\xfb\x1a\xf7\x1d\x7d\x40\x62\x41\x3c\xd2\xbf\x45\x3c\x3a\x30\xa3\x91\xf1\x21\xe1\x73\x17\xa4\x7c\x2e\x84\xc3\xfd\xe4\x3c\x4b\xa3\x94\xe0\x46\xf5\x15\xc4\x46\x85\xe3\xc8\x21\x5b\xec\xda\xb9\x1d\x9f\xfd\x79\x0b\x0e\x1c\xdc\x0b\x7b\xc7\x43\x38\xee\x64\x07\xfb\xe3\x87\x70\xd4\xde\x16\x76\xf6\xb6\x38\xea\x60\x0b\x07\xa7\xc3\xb0\x3d\xbc\x17\x3b\x76\x6c\xc3\xd6\xad\x5b\xb0\xed\x8b\xcf\x71\xc8\x6e\x2f\x8e\x1d\x3b\x04\x17\x67\x27\x04\xf8\x7a\x23\x2a\x3c\x04\xa7\x8a\xf3\x31\xd0\xd5\x4a\x7a\x9b\xce\xc6\x9b\x44\xe7\x3b\x1b\x6b\x4d\xec\xfb\xd7\xd1\xdb\x7c\x13\x0d\xd5\x17\x98\x8b\xe3\xfd\xbe\xfe\x1e\x72\xb1\x57\xe6\x71\xda\xdf\xe5\x73\xbb\x55\x5a\xb9\x00\xa2\xe1\xfe\x05\xd1\x48\xbf\x59\x38\xd4\x4b\xce\x2c\x75\x63\x52\x72\x56\xab\x94\x8a\xc8\xd9\x9e\x9c\xe4\x09\x0f\x52\xc1\x28\xa4\x82\x11\x48\xf8\xc3\x10\xf3\x86\x20\xe2\x71\x21\x1a\xe5\x40\x38\xc2\x81\x70\x94\x03\x31\x8f\x03\xf1\x28\xc7\xf2\xd9\xf0\x20\x01\xfd\x7f\x09\x7f\x88\xfc\xcd\x9b\x74\xb4\x1f\x9c\x8e\x46\xb2\x96\xef\x7c\x70\xcb\xcc\xbe\x5f\x6d\x68\x6f\xa8\x46\xfb\xfd\xab\xa8\xbf\xfa\x95\xdb\xe2\x18\xff\x5b\x5f\xf7\x6f\xbf\xac\xe7\x25\x14\x87\xd3\xf8\x12\x6f\xb0\xb3\x4d\x23\xe3\x59\xcf\x68\x7b\xe7\xf9\x9c\xee\x85\x91\xfe\x0e\xc3\xe8\x40\xa7\x81\x37\x68\xc5\x40\x87\x61\xb4\xbf\x9d\x60\xa4\x8f\x6d\x18\xe9\x6d\x33\x0c\xf7\x3c\x34\x0c\xf5\xb4\x1a\x86\xba\x5b\x0c\xdc\xae\x66\x03\xa7\xf3\x81\x61\xb0\xa3\xd1\x30\xd8\xde\x68\x18\x60\x37\x18\xfa\xd9\xf5\x86\xbe\x87\xf7\x0d\xbd\xad\x75\x86\x9e\xe6\x3b\x86\xce\x07\xb7\x0c\x1d\x0d\xb5\x0b\x16\xce\xb5\x0b\x6d\xf7\xaf\x99\xfa\x68\x8d\xbf\x71\x71\xfc\xfe\xb5\x53\x5f\x58\xe6\xa6\xf2\xa9\xc5\x3c\xfd\xbe\xaf\xc5\xbd\xa3\xca\xca\xca\xa7\x47\xfa\xdb\x13\x47\xfa\xda\x0d\xe3\xb2\x51\x68\x24\x23\xd0\x48\x86\x89\x55\x8b\x87\x30\x26\xe2\x42\x25\xe4\x40\x29\x18\x84\x82\x3f\x00\x05\xaf\x1f\xf2\xd1\x5e\xc8\x46\x7a\x20\x1d\xee\x86\x64\xa8\x0b\x12\x6e\x27\xc4\xdc\x0e\x88\x38\xed\x10\x0e\xb2\x21\x1c\x68\x83\xa0\xff\x21\xf8\x7d\xad\xe0\xf5\xb6\x60\xb4\xbb\x09\x23\x5d\x8d\x18\xea\xa8\x07\xa7\xfd\x1e\xb8\xec\x3a\xb0\xef\x5d\x41\x63\x6d\xe5\xb5\xda\xca\xa2\xd7\xa9\x7f\xd2\xd3\x7d\x5f\xd7\xe3\x39\xd6\xd3\xd2\xf0\xfb\xa1\xee\xa6\xfd\x9c\xce\xe6\x83\x9c\xae\x96\xa3\xdc\xce\x66\x07\x4e\x47\xa3\x33\xa7\xa3\xde\xb9\x9f\x6d\x41\x6f\x6b\x9d\x73\x4f\x6b\x9d\x1b\x41\xd3\x1d\xb7\x9e\xa6\x5b\x04\x5d\x8d\xb7\xdc\xda\xeb\x6b\xdd\xda\xeb\xab\xdd\xd8\xf5\xd5\x27\xd8\x75\xd7\x9d\xd9\x75\x57\x9d\x5b\x69\xdc\xa9\x72\x6e\xbe\x73\xd9\xa1\xe5\xd6\xd7\xc7\x9a\x6f\x7f\x7d\xe4\xc1\xcd\x8b\xb6\x4d\x35\x17\xf7\xdf\xab\x3a\xf5\xa7\xc5\x77\x7f\x57\x9d\xc3\x1c\xfd\xef\x46\x40\x47\xdb\xe7\x01\x01\x6d\x7f\x08\xdc\xa3\xed\x53\x00\x83\xb2\x2c\x8f\x16\xad\xf5\x36\xb3\xc5\x46\x18\x2d\x76\xe3\xa2\x9d\xb3\xd8\x57\x74\x16\xfb\xbc\xd5\xfe\x50\x60\xb5\xf7\x2c\xf6\x29\xab\x7d\x82\x61\xb5\xdf\x76\xbc\x8c\x6f\xda\x27\x37\x59\x7f\xb6\xda\x1f\x2c\x7e\xfe\xcf\xac\xf5\xfb\x4f\x97\x59\xef\x4b\xb7\xd8\x67\x39\x16\xbb\x44\x6d\xb1\x2b\x67\x2c\xf6\x88\xc1\x62\xeb\x4c\x16\x3f\x44\x98\x09\x81\x27\x01\xd2\x5d\xfe\x00\x20\x0f\xf8\x25\xa0\xa0\xed\x1a\x40\x4f\xdb\x2f\x81\x05\x72\x1b\x40\xdf\xf8\x54\x04\xfe\x7f\x00\x00\x00\xff\xff\x6d\x44\x9e\x8a\xae\x2f\x00\x00") - -func initWindowsApplicationIcoBytes() ([]byte, error) { - return bindataRead( - _initWindowsApplicationIco, - "init/windows/application.ico", - ) -} - -func initWindowsApplicationIco() (*asset, error) { - bytes, err := initWindowsApplicationIcoBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "init/windows/application.ico", size: 12206, mode: os.FileMode(420), modTime: time.Unix(1587356420, 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) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; 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) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; 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){ - "init/windows/application.ico": initWindowsApplicationIco, -} - -// 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("nonexistent") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - canonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(canonicalName, "/") - 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{ - "init": &bintree{nil, map[string]*bintree{ - "windows": &bintree{nil, map[string]*bintree{ - "application.ico": &bintree{initWindowsApplicationIco, 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 { - canonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) -} diff --git a/dnclient/init.go b/dnclient/init.go index 5a1977afa..f44f4c4ab 100644 --- a/dnclient/init.go +++ b/dnclient/init.go @@ -1,4 +1,4 @@ -//nolint:dupl +//nolint:dupl,golint package dnclient /* diff --git a/dnclient/lidarr.go b/dnclient/lidarr.go index cd5e2eb43..e00f9e3d7 100644 --- a/dnclient/lidarr.go +++ b/dnclient/lidarr.go @@ -15,11 +15,11 @@ mbid - music brainz is the source for lidarr (todo) // lidarrHandlers is called once on startup to register the web API paths. func (c *Client) lidarrHandlers() { - c.handleAPIpath(Lidarr, "/add/{id:[0-9]+}", c.lidarrAddAlbum, "POST") - c.handleAPIpath(Lidarr, "/check/{id:[0-9]+}/{albumid:[-a-z]+}", c.lidarrCheckAlbum, "GET") - c.handleAPIpath(Lidarr, "/qualityProfiles/{id:[0-9]+}", c.lidarrProfiles, "GET") - c.handleAPIpath(Lidarr, "/qualityDefinitions/{id:[0-9]+}", c.lidarrQualityDefs, "GET") - c.handleAPIpath(Lidarr, "/rootFolder/{id:[0-9]+}", c.lidarrRootFolders, "GET") + c.handleAPIpath(Lidarr, "/add", c.lidarrAddAlbum, "POST") + c.handleAPIpath(Lidarr, "/check/{albumid:[-a-z]+}", c.lidarrCheckAlbum, "GET") + c.handleAPIpath(Lidarr, "/qualityProfiles", c.lidarrProfiles, "GET") + c.handleAPIpath(Lidarr, "/qualityDefinitions", c.lidarrQualityDefs, "GET") + c.handleAPIpath(Lidarr, "/rootFolder", c.lidarrRootFolders, "GET") } func (c *Client) lidarrRootFolders(r *http.Request) (int, interface{}) { diff --git a/dnclient/radarr.go b/dnclient/radarr.go index 3aac2c290..70febf617 100644 --- a/dnclient/radarr.go +++ b/dnclient/radarr.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" "strconv" + "strings" "github.com/gorilla/mux" "golift.io/starr/radarr" @@ -12,10 +13,11 @@ import ( // radarrHandlers is called once on startup to register the web API paths. func (c *Client) radarrHandlers() { - c.handleAPIpath(Radarr, "/add/{id:[0-9]+}", c.radarrAddMovie, "POST") - c.handleAPIpath(Radarr, "/check/{id:[0-9]+}/{tmdbid:[0-9]+}", c.radarrCheckMovie, "GET") - c.handleAPIpath(Radarr, "/qualityProfiles/{id:[0-9]+}", c.radarrProfiles, "GET") - c.handleAPIpath(Radarr, "/rootFolder/{id:[0-9]+}", c.radarrRootFolders, "GET") + c.handleAPIpath(Radarr, "/add", c.radarrAddMovie, "POST") + c.handleAPIpath(Radarr, "/search/{query}", c.radarrSearchMovie, "GET") + c.handleAPIpath(Radarr, "/check/{tmdbid:[0-9]+}", c.radarrCheckMovie, "GET") + c.handleAPIpath(Radarr, "/qualityProfiles", c.radarrProfiles, "GET") + c.handleAPIpath(Radarr, "/rootFolder", c.radarrRootFolders, "GET") } func (c *Client) radarrRootFolders(r *http.Request) (int, interface{}) { @@ -62,6 +64,50 @@ func (c *Client) radarrCheckMovie(r *http.Request) (int, interface{}) { return http.StatusOK, http.StatusText(http.StatusNotFound) } +func (c *Client) radarrSearchMovie(r *http.Request) (int, interface{}) { + // Get all movies + movies, err := getRadarr(r).GetMovie(0) + if err != nil { + return http.StatusServiceUnavailable, fmt.Errorf("getting movies: %w", err) + } + + query := strings.TrimSpace(strings.ToLower(mux.Vars(r)["query"])) // in + returnMovies := make([]map[string]interface{}, 0) // out + + for _, movie := range movies { + if movieSearch(query, []string{movie.Title, movie.OriginalTitle}, movie.AlternateTitles) { + returnMovies = append(returnMovies, map[string]interface{}{ + "id": movie.ID, + "title": movie.Title, + "cinemas": movie.InCinemas, + "status": movie.Status, + "exists": movie.HasFile, + "added": movie.Added, + "year": movie.Year, + "path": movie.Path, + }) + } + } + + return http.StatusOK, returnMovies +} + +func movieSearch(query string, titles []string, alts []*radarr.AlternativeTitle) bool { + for _, t := range titles { + if t != "" && strings.Contains(strings.ToLower(t), query) { + return true + } + } + + for _, t := range alts { + if strings.Contains(strings.ToLower(t.Title), query) { + return true + } + } + + return false +} + func (c *Client) radarrAddMovie(r *http.Request) (int, interface{}) { payload := &radarr.AddMovieInput{} // Extract payload and check for TMDB ID. diff --git a/dnclient/readarr.go b/dnclient/readarr.go index 804d7fcce..a93d7bca9 100644 --- a/dnclient/readarr.go +++ b/dnclient/readarr.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "strconv" + "strings" "github.com/gorilla/mux" "golift.io/starr/readarr" @@ -13,11 +14,12 @@ import ( // readarrHandlers is called once on startup to register the web API paths. func (c *Client) readarrHandlers() { - c.handleAPIpath(Readarr, "/add/{id:[0-9]+}", c.readarrAddBook, "POST") - c.handleAPIpath(Readarr, "/check/{id:[0-9]+}/{grid:[0-9]+}", c.readarrCheckBook, "GET") - c.handleAPIpath(Readarr, "/metadataProfiles/{id:[0-9]+}", c.readarrMetaProfiles, "GET") - c.handleAPIpath(Readarr, "/qualityProfiles/{id:[0-9]+}", c.readarrProfiles, "GET") - c.handleAPIpath(Readarr, "/rootFolder/{id:[0-9]+}", c.readarrRootFolders, "GET") + c.handleAPIpath(Readarr, "/add", c.readarrAddBook, "POST") + c.handleAPIpath(Readarr, "/search/{query}", c.readarrSearchBook, "GET") + c.handleAPIpath(Readarr, "/check/{grid:[0-9]+}", c.readarrCheckBook, "GET") + c.handleAPIpath(Readarr, "/metadataProfiles", c.readarrMetaProfiles, "GET") + c.handleAPIpath(Readarr, "/qualityProfiles", c.readarrProfiles, "GET") + c.handleAPIpath(Readarr, "/rootFolder", c.readarrRootFolders, "GET") } func (c *Client) readarrRootFolders(r *http.Request) (int, interface{}) { @@ -80,6 +82,56 @@ func (c *Client) readarrCheckBook(r *http.Request) (int, interface{}) { return http.StatusOK, http.StatusText(http.StatusNotFound) } +func (c *Client) readarrSearchBook(r *http.Request) (int, interface{}) { + books, err := getReadarr(r).GetBook(0) + if err != nil { + return http.StatusServiceUnavailable, fmt.Errorf("getting books: %w", err) + } + + query := strings.TrimSpace(strings.ToLower(mux.Vars(r)["query"])) // in + returnBooks := make([]map[string]interface{}, 0) // out + + for _, book := range books { + if bookSearch(query, book.Title, book.Editions) { + b := map[string]interface{}{ + "id": book.ID, + "title": book.Title, + "release": book.ReleaseDate, + "author": book.Author.AuthorName, + "authorId": book.Author.Ended, + "overview": book.Overview, + "ratings": book.Ratings.Value, + "pages": book.PageCount, + "exists": false, + "files": 0, + } + + if book.Statistics != nil { + b["files"] = book.Statistics.BookFileCount + b["exists"] = book.Statistics.SizeOnDisk > 0 + } + + returnBooks = append(returnBooks, b) + } + } + + return http.StatusOK, returnBooks +} + +func bookSearch(query, title string, editions []*readarr.Edition) bool { + if strings.Contains(strings.ToLower(title), query) { + return true + } + + for _, t := range editions { + if strings.Contains(strings.ToLower(t.Title), query) { + return true + } + } + + return false +} + func (c *Client) readarrAddBook(r *http.Request) (int, interface{}) { payload := &readarr.AddBookInput{} // Extract payload and check for TMDB ID. diff --git a/dnclient/sonarr.go b/dnclient/sonarr.go index e5120482f..0f7e85a0a 100644 --- a/dnclient/sonarr.go +++ b/dnclient/sonarr.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "strconv" + "strings" "github.com/gorilla/mux" "golift.io/starr/sonarr" @@ -13,11 +14,12 @@ import ( // sonarrHandlers is called once on startup to register the web API paths. func (c *Client) sonarrHandlers() { - c.handleAPIpath(Sonarr, "/add/{id:[0-9]+}", c.sonarrAddSeries, "POST") - c.handleAPIpath(Sonarr, "/check/{id:[0-9]+}/{tvdbid:[0-9]+}", c.sonarrCheckSeries, "GET") - c.handleAPIpath(Sonarr, "/qualityProfiles/{id:[0-9]+}", c.sonarrProfiles, "GET") - c.handleAPIpath(Sonarr, "/languageProfiles/{id:[0-9]+}", c.sonarrLangProfiles, "GET") - c.handleAPIpath(Sonarr, "/rootFolder/{id:[0-9]+}", c.sonarrRootFolders, "GET") + c.handleAPIpath(Sonarr, "/add", c.sonarrAddSeries, "POST") + c.handleAPIpath(Sonarr, "/check/{tvdbid:[0-9]+}", c.sonarrCheckSeries, "GET") + c.handleAPIpath(Sonarr, "/search/{query}", c.sonarrSearchSeries, "GET") + c.handleAPIpath(Sonarr, "/qualityProfiles", c.sonarrProfiles, "GET") + c.handleAPIpath(Sonarr, "/languageProfiles", c.sonarrLangProfiles, "GET") + c.handleAPIpath(Sonarr, "/rootFolder", c.sonarrRootFolders, "GET") } func (c *Client) sonarrRootFolders(r *http.Request) (int, interface{}) { @@ -80,6 +82,55 @@ func (c *Client) sonarrCheckSeries(r *http.Request) (int, interface{}) { return http.StatusOK, http.StatusText(http.StatusNotFound) } +func (c *Client) sonarrSearchSeries(r *http.Request) (int, interface{}) { + // Get all movies + series, err := getSonarr(r).GetAllSeries() + if err != nil { + return http.StatusServiceUnavailable, fmt.Errorf("getting series: %w", err) + } + + query := strings.TrimSpace(strings.ToLower(mux.Vars(r)["query"])) // in + returnSeries := make([]map[string]interface{}, 0) // out + + for _, s := range series { + if seriesSearch(query, s.Title, s.AlternateTitles) { + b := map[string]interface{}{ + "id": s.ID, + "title": s.Title, + "first": s.FirstAired, + "next": s.NextAiring, + "prev": s.PreviousAiring, + "added": s.Added, + "status": s.Status, + "exists": false, + "path": s.Path, + } + + if s.Statistics != nil { + b["exists"] = s.Statistics.SizeOnDisk > 0 + } + + returnSeries = append(returnSeries, b) + } + } + + return http.StatusOK, returnSeries +} + +func seriesSearch(query, title string, alts []*sonarr.AlternateTitle) bool { + if strings.Contains(strings.ToLower(title), query) { + return true + } + + for _, t := range alts { + if strings.Contains(strings.ToLower(t.Title), query) { + return true + } + } + + return false +} + func (c *Client) sonarrAddSeries(r *http.Request) (int, interface{}) { payload := &sonarr.AddSeriesInput{} // Extract payload and check for TMDB ID. diff --git a/dnclient/webserver.go b/dnclient/webserver.go index bf485dae3..868f86b5b 100644 --- a/dnclient/webserver.go +++ b/dnclient/webserver.go @@ -9,8 +9,10 @@ import ( "os" "path" "strconv" + "strings" "time" + "github.com/Go-Lift-TV/discordnotifier-client/bindata" "github.com/gorilla/mux" "golift.io/version" ) @@ -85,7 +87,7 @@ func (c *Client) checkAPIKey(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Header.Get("X-API-Key") != c.Config.APIKey { c.Printf("HTTP [%s] %s %s: %d: Unauthorized: bad API key", - r.RemoteAddr, r.Method, r.RequestURI, http.StatusUnauthorized) + strings.Split(r.RemoteAddr, ":")[0], r.Method, r.RequestURI, http.StatusUnauthorized) w.WriteHeader(http.StatusUnauthorized) } else { next.ServeHTTP(w, r) @@ -110,9 +112,10 @@ func (c *Client) responseWrapper(next apiHandle) http.Handler { } if s, ok := msg.(string); ok { - c.Printf("HTTP [%s] %s %s: %s: %s", r.RemoteAddr, r.Method, r.RequestURI, statusTxt, s) + c.Printf("HTTP [%s] %s %s: %s: %s", + strings.Split(r.RemoteAddr, ":")[0], r.Method, r.RequestURI, statusTxt, strings.TrimSpace(s)) } else { - c.Printf("HTTP [%s] %s %s: %s", r.RemoteAddr, r.Method, r.RequestURI, statusTxt) + c.Printf("HTTP [%s] %s %s: %s", strings.Split(r.RemoteAddr, ":")[0], r.Method, r.RequestURI, statusTxt) } w.Header().Set("Content-Type", "application/json") @@ -131,22 +134,14 @@ func (c *Client) statusResponse(r *http.Request) (int, interface{}) { // versionResponse returns application run and build time data. func (c *Client) versionResponse(r *http.Request) (int, interface{}) { - return http.StatusOK, struct { - V string `json:"version"` - U string `json:"uptime"` - S float64 `json:"uptime_seconds"` - D string `json:"build_date"` - B string `json:"branch"` - G string `json:"go_version"` - R string `json:"revision"` - }{ - version.Version, - time.Since(version.Started).Round(time.Second).String(), - time.Since(version.Started).Round(time.Second).Seconds(), - version.BuildDate, - version.Branch, - version.GoVersion, - version.Revision, + return http.StatusOK, map[string]interface{}{ + "version": version.Version, + "uptime": time.Since(version.Started).Round(time.Second).String(), + "uptime_seconds": time.Since(version.Started).Round(time.Second).Seconds(), + "build_date": version.BuildDate, + "branch": version.Branch, + "go_version": version.GoVersion, + "revision": version.Revision, } } @@ -158,16 +153,19 @@ func (c *Client) notFound(r *http.Request) (int, interface{}) { // slash is the handler for /. func (c *Client) slash(w http.ResponseWriter, r *http.Request) { msg := "

" + c.Flags.Name() + ": working

\n" - c.Printf("HTTP [%s] %s %s: OK: %s", r.RemoteAddr, r.Method, r.RequestURI, msg) + c.Printf("HTTP [%s] %s %s: OK: %s", + strings.Split(r.RemoteAddr, ":")[0], r.Method, r.RequestURI, strings.TrimSpace(msg)) + _, _ = w.Write([]byte(msg)) } func (c *Client) favIcon(w http.ResponseWriter, r *http.Request) { - if b, err := Asset("init/windows/application.ico"); err != nil { - c.Printf("HTTP [%s] %s %s: 500: Internal Server Error: %v", r.RemoteAddr, r.Method, r.RequestURI, err) + if b, err := bindata.Asset("files/favicon.ico"); err != nil { + c.Printf("HTTP [%s] %s %s: 500: Internal Server Error: %v", + strings.Split(r.RemoteAddr, ":")[0], r.Method, r.RequestURI, err) w.WriteHeader(http.StatusInternalServerError) } else { - c.Printf("HTTP [%s] %s %s: 200 OK", r.RemoteAddr, r.Method, r.RequestURI) + c.Printf("HTTP [%s] %s %s: 200 OK", strings.Split(r.RemoteAddr, ":")[0], r.Method, strings.TrimSpace(r.RequestURI)) http.ServeContent(w, r, r.URL.Path, time.Now(), bytes.NewReader(b)) } } diff --git a/go.mod b/go.mod index 9a463cb5e..59b4098a8 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,6 @@ require ( github.com/spf13/pflag v1.0.6-0.20201009195203-85dd5c8bc61c golift.io/cnfg v0.0.7 golift.io/rotatorr v0.0.0-20201213130124-94efc0b9aff1 - golift.io/starr v0.9.5-0.20201222022736-eaadaabe9989 + golift.io/starr v0.9.5-0.20201223211915-58a134784642 golift.io/version v0.0.2 ) diff --git a/go.sum b/go.sum index a57152e99..dee42cbf7 100644 --- a/go.sum +++ b/go.sum @@ -22,12 +22,8 @@ golift.io/cnfg v0.0.7 h1:qkNpP5Bq+5Gtoc6HcI8kapMD5zFOVan6qguxqBQF3OY= golift.io/cnfg v0.0.7/go.mod h1:AsB0DJe7nv0bizKaoy3e3MjjOF7upTpMOMvsfv4CNNk= golift.io/rotatorr v0.0.0-20201213130124-94efc0b9aff1 h1:8SDkFT5QpXyN24BCPw5Yux7SiMExnbL8o2hK1yfW3pk= golift.io/rotatorr v0.0.0-20201213130124-94efc0b9aff1/go.mod h1:EZevRvIGRh8jDMwuYL0/tlPns0KynquPZzb0SerIC1s= -golift.io/starr v0.9.4 h1:lKs33b22mLOTwebqv1+Z5Vkv6BJ1oth8g16jlAZxHyk= -golift.io/starr v0.9.4/go.mod h1:vc04EcdpqkBG7jCySmehqtlQEJ1nrEYeqZmDV1Xpj3k= -golift.io/starr v0.9.5-0.20201221214402-b08bed538e3a h1://hGYlq5/vSfMAzyDS/fOsSoBku1++tAKBisHSm/uuQ= -golift.io/starr v0.9.5-0.20201221214402-b08bed538e3a/go.mod h1:EE8B7OlqZlE/EGmBP1bLsK1OHEgWwbNpyjDXX0B2f0Y= -golift.io/starr v0.9.5-0.20201222022736-eaadaabe9989 h1:tsjSnwtW1gxWmY3e50LqQacAE6uWNPmuLN8EZXD7h+c= -golift.io/starr v0.9.5-0.20201222022736-eaadaabe9989/go.mod h1:EE8B7OlqZlE/EGmBP1bLsK1OHEgWwbNpyjDXX0B2f0Y= +golift.io/starr v0.9.5-0.20201223211915-58a134784642 h1:ibv7D2vjklWJ9TKcBqV321ZRRALuKZIxhwvfhYczliQ= +golift.io/starr v0.9.5-0.20201223211915-58a134784642/go.mod h1:EE8B7OlqZlE/EGmBP1bLsK1OHEgWwbNpyjDXX0B2f0Y= golift.io/version v0.0.2 h1:i0gXRuSDHKs4O0sVDUg4+vNIuOxYoXhaxspftu2FRTE= golift.io/version v0.0.2/go.mod h1:76aHNz8/Pm7CbuxIsDi97jABL5Zui3f2uZxDm4vB6hU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/init/windows/application.ico b/init/windows/application.ico index f4d526ad9..6554a5212 100644 Binary files a/init/windows/application.ico and b/init/windows/application.ico differ diff --git a/main.go b/main.go index 796114e67..3ad8887be 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,5 @@ package main -//go:generate go-bindata -pkg dnclient -modtime 1587356420 -o dnclient/bindata.go init/windows/application.ico - import ( "log" "os"