// Code generated by protoc-gen-go. DO NOT EDIT.
// source: api/api.proto

/*
Package api is a generated protocol buffer package.

It is generated from these files:
	api/api.proto

It has these top-level messages:
	Account
	AccountCustom
	AccountDevice
	AccountEmail
	AccountFacebook
	AccountGameCenter
	AccountGoogle
	AccountSteam
	AddFriendsRequest
	AuthenticateCustomRequest
	AuthenticateDeviceRequest
	AuthenticateEmailRequest
	AuthenticateFacebookRequest
	AuthenticateGameCenterRequest
	AuthenticateGoogleRequest
	AuthenticateSteamRequest
	BlockFriendsRequest
	ChannelId
	CreateGroupsRequest
	DeleteFriendsRequest
	DeleteNotificationsRequest
	DeleteStorageObjectId
	DeleteStorageObjectsRequest
	Friend
	Friends
	GetUsersRequest
	Group
	Groups
	ImportFacebookFriendsRequest
	LinkFacebookRequest
	ListMatchesRequest
	ListNotificationsRequest
	ListStorageObjectsRequest
	Match
	MatchList
	Notification
	NotificationList
	ReadStorageObjectId
	ReadStorageObjectsRequest
	Rpc
	Session
	StorageObject
	StorageObjectAck
	StorageObjectAcks
	StorageObjects
	StorageObjectList
	UpdateAccountRequest
	User
	Users
	WriteStorageObject
	WriteStorageObjectsRequest
*/
package api

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers"
import _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// The read access permissions for a storage object.
type StoragePermissionRead int32

const (
	// Default case. Assumed as OWNER_READ permission.
	StoragePermissionRead_STORAGE_PERMISSION_READ_UNSPECIFIED StoragePermissionRead = 0
	// The object does not have client read permissions.
	StoragePermissionRead_NO_READ StoragePermissionRead = 1
	// The object may be read by the user owner.
	StoragePermissionRead_OWNER_READ StoragePermissionRead = 2
	// The object may be read by any user.
	StoragePermissionRead_PUBLIC_READ StoragePermissionRead = 3
)

var StoragePermissionRead_name = map[int32]string{
	0: "STORAGE_PERMISSION_READ_UNSPECIFIED",
	1: "NO_READ",
	2: "OWNER_READ",
	3: "PUBLIC_READ",
}
var StoragePermissionRead_value = map[string]int32{
	"STORAGE_PERMISSION_READ_UNSPECIFIED": 0,
	"NO_READ":     1,
	"OWNER_READ":  2,
	"PUBLIC_READ": 3,
}

func (x StoragePermissionRead) String() string {
	return proto.EnumName(StoragePermissionRead_name, int32(x))
}
func (StoragePermissionRead) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

// The write access permission for a storage object.
type StoragePermissionWrite int32

const (
	// Default case. Assumed as OWNER_WRITE permission.
	StoragePermissionWrite_STORAGE_PERMISSION_WRITE_UNSPECIFIED StoragePermissionWrite = 0
	// The object does not have client write permissions.
	StoragePermissionWrite_NO_WRITE StoragePermissionWrite = 1
	// The object may be written by the user owner.
	StoragePermissionWrite_OWNER_WRITE StoragePermissionWrite = 2
)

var StoragePermissionWrite_name = map[int32]string{
	0: "STORAGE_PERMISSION_WRITE_UNSPECIFIED",
	1: "NO_WRITE",
	2: "OWNER_WRITE",
}
var StoragePermissionWrite_value = map[string]int32{
	"STORAGE_PERMISSION_WRITE_UNSPECIFIED": 0,
	"NO_WRITE":                             1,
	"OWNER_WRITE":                          2,
}

func (x StoragePermissionWrite) String() string {
	return proto.EnumName(StoragePermissionWrite_name, int32(x))
}
func (StoragePermissionWrite) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

// The type of chat channel.
type ChannelId_Type int32

const (
	// Default case. Assumed as ROOM type.
	ChannelId_TYPE_UNSPECIFIED ChannelId_Type = 0
	// A room which anyone can join to chat.
	ChannelId_ROOM ChannelId_Type = 1
	// A private channel for 1-on-1 chat.
	ChannelId_DIRECT_MESSAGE ChannelId_Type = 2
	// A channel for group chat.
	ChannelId_GROUP ChannelId_Type = 3
)

var ChannelId_Type_name = map[int32]string{
	0: "TYPE_UNSPECIFIED",
	1: "ROOM",
	2: "DIRECT_MESSAGE",
	3: "GROUP",
}
var ChannelId_Type_value = map[string]int32{
	"TYPE_UNSPECIFIED": 0,
	"ROOM":             1,
	"DIRECT_MESSAGE":   2,
	"GROUP":            3,
}

func (x ChannelId_Type) String() string {
	return proto.EnumName(ChannelId_Type_name, int32(x))
}
func (ChannelId_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 0} }

// The friendship status.
type Friend_State int32

const (
	// Default case. Assumed as FRIEND state.
	Friend_STATE_UNSPECIFIED Friend_State = 0
	// The user is a friend of the current user.
	Friend_FRIEND Friend_State = 1
	// The user has sent an invite to the current user.
	Friend_INVITE_SENT Friend_State = 2
	// The current user has sent an invite to this user.
	Friend_INVITE_RECEIVED Friend_State = 3
	// The current user has blocked this user.
	Friend_BLOCKED Friend_State = 4
)

var Friend_State_name = map[int32]string{
	0: "STATE_UNSPECIFIED",
	1: "FRIEND",
	2: "INVITE_SENT",
	3: "INVITE_RECEIVED",
	4: "BLOCKED",
}
var Friend_State_value = map[string]int32{
	"STATE_UNSPECIFIED": 0,
	"FRIEND":            1,
	"INVITE_SENT":       2,
	"INVITE_RECEIVED":   3,
	"BLOCKED":           4,
}

func (x Friend_State) String() string {
	return proto.EnumName(Friend_State_name, int32(x))
}
func (Friend_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{23, 0} }

// A user with additional account details. Always the current user.
type Account struct {
	// The user object.
	User *User `protobuf:"bytes,1,opt,name=user" json:"user,omitempty"`
	// The user's wallet data.
	Wallet string `protobuf:"bytes,2,opt,name=wallet" json:"wallet,omitempty"`
	// The email address of the user.
	Email string `protobuf:"bytes,3,opt,name=email" json:"email,omitempty"`
	// The devices which belong to the user's account.
	Devices []*AccountDevice `protobuf:"bytes,4,rep,name=devices" json:"devices,omitempty"`
	// The custom id in the user's account.
	CustomId string `protobuf:"bytes,5,opt,name=custom_id,json=customId" json:"custom_id,omitempty"`
	// The UNIX time when the user's email was verified.
	VerifyTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=verify_time,json=verifyTime" json:"verify_time,omitempty"`
}

func (m *Account) Reset()                    { *m = Account{} }
func (m *Account) String() string            { return proto.CompactTextString(m) }
func (*Account) ProtoMessage()               {}
func (*Account) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

func (m *Account) GetUser() *User {
	if m != nil {
		return m.User
	}
	return nil
}

func (m *Account) GetWallet() string {
	if m != nil {
		return m.Wallet
	}
	return ""
}

func (m *Account) GetEmail() string {
	if m != nil {
		return m.Email
	}
	return ""
}

func (m *Account) GetDevices() []*AccountDevice {
	if m != nil {
		return m.Devices
	}
	return nil
}

func (m *Account) GetCustomId() string {
	if m != nil {
		return m.CustomId
	}
	return ""
}

func (m *Account) GetVerifyTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.VerifyTime
	}
	return nil
}

// Send a custom ID to the server. Used with authenticate/link/unlink.
type AccountCustom struct {
	// A custom identifier.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
}

func (m *AccountCustom) Reset()                    { *m = AccountCustom{} }
func (m *AccountCustom) String() string            { return proto.CompactTextString(m) }
func (*AccountCustom) ProtoMessage()               {}
func (*AccountCustom) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *AccountCustom) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

// Send a device to the server. Used with authenticate/link/unlink and user.
type AccountDevice struct {
	// A device identifier. Should be obtained by a platform-specific device API.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
}

func (m *AccountDevice) Reset()                    { *m = AccountDevice{} }
func (m *AccountDevice) String() string            { return proto.CompactTextString(m) }
func (*AccountDevice) ProtoMessage()               {}
func (*AccountDevice) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *AccountDevice) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

// Send an email with password to the server. Used with authenticate/link/unlink.
type AccountEmail struct {
	// A valid RFC-5322 email address.
	Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"`
	// A password for the user account.
	Password string `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"`
}

func (m *AccountEmail) Reset()                    { *m = AccountEmail{} }
func (m *AccountEmail) String() string            { return proto.CompactTextString(m) }
func (*AccountEmail) ProtoMessage()               {}
func (*AccountEmail) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *AccountEmail) GetEmail() string {
	if m != nil {
		return m.Email
	}
	return ""
}

func (m *AccountEmail) GetPassword() string {
	if m != nil {
		return m.Password
	}
	return ""
}

// Send a Facebook token to the server. Used with authenticate/link/unlink.
type AccountFacebook struct {
	// The OAuth token received from Facebook to access their profile API.
	Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
}

func (m *AccountFacebook) Reset()                    { *m = AccountFacebook{} }
func (m *AccountFacebook) String() string            { return proto.CompactTextString(m) }
func (*AccountFacebook) ProtoMessage()               {}
func (*AccountFacebook) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

func (m *AccountFacebook) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

// Send Apple's Game Center account credentials to the server. Used with authenticate/link/unlink.
type AccountGameCenter struct {
	// Player ID (generated by GameCenter).
	PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"`
	// Bundle ID (generated by GameCenter).
	BundleId string `protobuf:"bytes,2,opt,name=bundle_id,json=bundleId" json:"bundle_id,omitempty"`
	// Time since UNIX epoch when the signature was created.
	TimestampSeconds int64 `protobuf:"varint,3,opt,name=timestamp_seconds,json=timestampSeconds" json:"timestamp_seconds,omitempty"`
	// A random "NSString" used to compute the hash and keep it randomized.
	Salt string `protobuf:"bytes,4,opt,name=salt" json:"salt,omitempty"`
	// The verification signature data generated.
	Signature string `protobuf:"bytes,5,opt,name=signature" json:"signature,omitempty"`
	// The URL for the public encryption key.
	PublicKeyUrl string `protobuf:"bytes,6,opt,name=public_key_url,json=publicKeyUrl" json:"public_key_url,omitempty"`
}

func (m *AccountGameCenter) Reset()                    { *m = AccountGameCenter{} }
func (m *AccountGameCenter) String() string            { return proto.CompactTextString(m) }
func (*AccountGameCenter) ProtoMessage()               {}
func (*AccountGameCenter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

func (m *AccountGameCenter) GetPlayerId() string {
	if m != nil {
		return m.PlayerId
	}
	return ""
}

func (m *AccountGameCenter) GetBundleId() string {
	if m != nil {
		return m.BundleId
	}
	return ""
}

func (m *AccountGameCenter) GetTimestampSeconds() int64 {
	if m != nil {
		return m.TimestampSeconds
	}
	return 0
}

func (m *AccountGameCenter) GetSalt() string {
	if m != nil {
		return m.Salt
	}
	return ""
}

func (m *AccountGameCenter) GetSignature() string {
	if m != nil {
		return m.Signature
	}
	return ""
}

func (m *AccountGameCenter) GetPublicKeyUrl() string {
	if m != nil {
		return m.PublicKeyUrl
	}
	return ""
}

// Send a Google token to the server. Used with authenticate/link/unlink.
type AccountGoogle struct {
	// The OAuth token received from Google to access their profile API.
	Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
}

func (m *AccountGoogle) Reset()                    { *m = AccountGoogle{} }
func (m *AccountGoogle) String() string            { return proto.CompactTextString(m) }
func (*AccountGoogle) ProtoMessage()               {}
func (*AccountGoogle) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

func (m *AccountGoogle) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

// Send a Steam token to the server. Used with authenticate/link/unlink.
type AccountSteam struct {
	// The account token received from Steam to access their profile API.
	Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
}

func (m *AccountSteam) Reset()                    { *m = AccountSteam{} }
func (m *AccountSteam) String() string            { return proto.CompactTextString(m) }
func (*AccountSteam) ProtoMessage()               {}
func (*AccountSteam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

func (m *AccountSteam) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

// Add one or more friends to the current user.
type AddFriendsRequest struct {
	// The account id of a user.
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
	// The account username of a user.
	Usernames []string `protobuf:"bytes,2,rep,name=usernames" json:"usernames,omitempty"`
}

func (m *AddFriendsRequest) Reset()                    { *m = AddFriendsRequest{} }
func (m *AddFriendsRequest) String() string            { return proto.CompactTextString(m) }
func (*AddFriendsRequest) ProtoMessage()               {}
func (*AddFriendsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *AddFriendsRequest) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

func (m *AddFriendsRequest) GetUsernames() []string {
	if m != nil {
		return m.Usernames
	}
	return nil
}

// Authenticate against the server with a custom ID.
type AuthenticateCustomRequest struct {
	// The custom account details.
	Account *AccountCustom `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateCustomRequest) Reset()                    { *m = AuthenticateCustomRequest{} }
func (m *AuthenticateCustomRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateCustomRequest) ProtoMessage()               {}
func (*AuthenticateCustomRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *AuthenticateCustomRequest) GetAccount() *AccountCustom {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateCustomRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateCustomRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Authenticate against the server with a device ID.
type AuthenticateDeviceRequest struct {
	// The device account details.
	Account *AccountDevice `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateDeviceRequest) Reset()                    { *m = AuthenticateDeviceRequest{} }
func (m *AuthenticateDeviceRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateDeviceRequest) ProtoMessage()               {}
func (*AuthenticateDeviceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

func (m *AuthenticateDeviceRequest) GetAccount() *AccountDevice {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateDeviceRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateDeviceRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Authenticate against the server with email+password.
type AuthenticateEmailRequest struct {
	// The email account details.
	Account *AccountEmail `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateEmailRequest) Reset()                    { *m = AuthenticateEmailRequest{} }
func (m *AuthenticateEmailRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateEmailRequest) ProtoMessage()               {}
func (*AuthenticateEmailRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

func (m *AuthenticateEmailRequest) GetAccount() *AccountEmail {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateEmailRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateEmailRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Authenticate against the server with Facebook.
type AuthenticateFacebookRequest struct {
	// The Facebook account details.
	Account *AccountFacebook `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
	// Import Facebook friends for the user.
	Import *google_protobuf3.BoolValue `protobuf:"bytes,4,opt,name=import" json:"import,omitempty"`
}

func (m *AuthenticateFacebookRequest) Reset()                    { *m = AuthenticateFacebookRequest{} }
func (m *AuthenticateFacebookRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateFacebookRequest) ProtoMessage()               {}
func (*AuthenticateFacebookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

func (m *AuthenticateFacebookRequest) GetAccount() *AccountFacebook {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateFacebookRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateFacebookRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

func (m *AuthenticateFacebookRequest) GetImport() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Import
	}
	return nil
}

// Authenticate against the server with Apple's Game Center.
type AuthenticateGameCenterRequest struct {
	// The Game Center account details.
	Account *AccountGameCenter `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateGameCenterRequest) Reset()                    { *m = AuthenticateGameCenterRequest{} }
func (m *AuthenticateGameCenterRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateGameCenterRequest) ProtoMessage()               {}
func (*AuthenticateGameCenterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

func (m *AuthenticateGameCenterRequest) GetAccount() *AccountGameCenter {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateGameCenterRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateGameCenterRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Authenticate against the server with Google.
type AuthenticateGoogleRequest struct {
	// The Google account details.
	Account *AccountGoogle `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateGoogleRequest) Reset()                    { *m = AuthenticateGoogleRequest{} }
func (m *AuthenticateGoogleRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateGoogleRequest) ProtoMessage()               {}
func (*AuthenticateGoogleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }

func (m *AuthenticateGoogleRequest) GetAccount() *AccountGoogle {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateGoogleRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateGoogleRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Authenticate against the server with Steam.
type AuthenticateSteamRequest struct {
	// The Steam account details.
	Account *AccountSteam `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Register the account if the user does not already exist.
	Create *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=create" json:"create,omitempty"`
	// Set the username on the account at register. Must be unique.
	Username string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
}

func (m *AuthenticateSteamRequest) Reset()                    { *m = AuthenticateSteamRequest{} }
func (m *AuthenticateSteamRequest) String() string            { return proto.CompactTextString(m) }
func (*AuthenticateSteamRequest) ProtoMessage()               {}
func (*AuthenticateSteamRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }

func (m *AuthenticateSteamRequest) GetAccount() *AccountSteam {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *AuthenticateSteamRequest) GetCreate() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Create
	}
	return nil
}

func (m *AuthenticateSteamRequest) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

// Block one or more friends for the current user.
type BlockFriendsRequest struct {
	// The account id of a user.
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
	// The account username of a user.
	Usernames []string `protobuf:"bytes,2,rep,name=usernames" json:"usernames,omitempty"`
}

func (m *BlockFriendsRequest) Reset()                    { *m = BlockFriendsRequest{} }
func (m *BlockFriendsRequest) String() string            { return proto.CompactTextString(m) }
func (*BlockFriendsRequest) ProtoMessage()               {}
func (*BlockFriendsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }

func (m *BlockFriendsRequest) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

func (m *BlockFriendsRequest) GetUsernames() []string {
	if m != nil {
		return m.Usernames
	}
	return nil
}

// An identifier for a realtime chat channel.
type ChannelId struct {
	// The identifier for the realtime channel.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// The type of the chat channel.
	Type int32 `protobuf:"varint,2,opt,name=type" json:"type,omitempty"`
}

func (m *ChannelId) Reset()                    { *m = ChannelId{} }
func (m *ChannelId) String() string            { return proto.CompactTextString(m) }
func (*ChannelId) ProtoMessage()               {}
func (*ChannelId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }

func (m *ChannelId) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *ChannelId) GetType() int32 {
	if m != nil {
		return m.Type
	}
	return 0
}

// Create one or more groups with the current user as owner.
type CreateGroupsRequest struct {
	// The Group objects to create.
	Groups []*CreateGroupsRequest_NewGroup `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty"`
}

func (m *CreateGroupsRequest) Reset()                    { *m = CreateGroupsRequest{} }
func (m *CreateGroupsRequest) String() string            { return proto.CompactTextString(m) }
func (*CreateGroupsRequest) ProtoMessage()               {}
func (*CreateGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }

func (m *CreateGroupsRequest) GetGroups() []*CreateGroupsRequest_NewGroup {
	if m != nil {
		return m.Groups
	}
	return nil
}

// A group to create.
type CreateGroupsRequest_NewGroup struct {
	// A unique name for the group.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// A description for the group.
	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
	// The language expected to be a tag which follows the BCP-47 spec.
	LangTag string `protobuf:"bytes,3,opt,name=lang_tag,json=langTag" json:"lang_tag,omitempty"`
	// Additional information stored as a JSON object.
	Metadata string `protobuf:"bytes,4,opt,name=metadata" json:"metadata,omitempty"`
	// A URL for an avatar image.
	AvatarUrl string `protobuf:"bytes,5,opt,name=avatar_url,json=avatarUrl" json:"avatar_url,omitempty"`
	// Mark a group as private where only admins can accept members.
	Private bool `protobuf:"varint,6,opt,name=private" json:"private,omitempty"`
}

func (m *CreateGroupsRequest_NewGroup) Reset()         { *m = CreateGroupsRequest_NewGroup{} }
func (m *CreateGroupsRequest_NewGroup) String() string { return proto.CompactTextString(m) }
func (*CreateGroupsRequest_NewGroup) ProtoMessage()    {}
func (*CreateGroupsRequest_NewGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{18, 0}
}

func (m *CreateGroupsRequest_NewGroup) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *CreateGroupsRequest_NewGroup) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *CreateGroupsRequest_NewGroup) GetLangTag() string {
	if m != nil {
		return m.LangTag
	}
	return ""
}

func (m *CreateGroupsRequest_NewGroup) GetMetadata() string {
	if m != nil {
		return m.Metadata
	}
	return ""
}

func (m *CreateGroupsRequest_NewGroup) GetAvatarUrl() string {
	if m != nil {
		return m.AvatarUrl
	}
	return ""
}

func (m *CreateGroupsRequest_NewGroup) GetPrivate() bool {
	if m != nil {
		return m.Private
	}
	return false
}

// Delete one or more friends for the current user.
type DeleteFriendsRequest struct {
	// The account id of a user.
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
	// The account username of a user.
	Usernames []string `protobuf:"bytes,2,rep,name=usernames" json:"usernames,omitempty"`
}

func (m *DeleteFriendsRequest) Reset()                    { *m = DeleteFriendsRequest{} }
func (m *DeleteFriendsRequest) String() string            { return proto.CompactTextString(m) }
func (*DeleteFriendsRequest) ProtoMessage()               {}
func (*DeleteFriendsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

func (m *DeleteFriendsRequest) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

func (m *DeleteFriendsRequest) GetUsernames() []string {
	if m != nil {
		return m.Usernames
	}
	return nil
}

// Delete one or more notifications for the current user.
type DeleteNotificationsRequest struct {
	// The id of notifications.
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
}

func (m *DeleteNotificationsRequest) Reset()                    { *m = DeleteNotificationsRequest{} }
func (m *DeleteNotificationsRequest) String() string            { return proto.CompactTextString(m) }
func (*DeleteNotificationsRequest) ProtoMessage()               {}
func (*DeleteNotificationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }

func (m *DeleteNotificationsRequest) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

// Storage objects to delete.
type DeleteStorageObjectId struct {
	// The collection which stores the object.
	Collection string `protobuf:"bytes,1,opt,name=collection" json:"collection,omitempty"`
	// The key of the object within the collection.
	Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	// The version hash of the object.
	Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
}

func (m *DeleteStorageObjectId) Reset()                    { *m = DeleteStorageObjectId{} }
func (m *DeleteStorageObjectId) String() string            { return proto.CompactTextString(m) }
func (*DeleteStorageObjectId) ProtoMessage()               {}
func (*DeleteStorageObjectId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

func (m *DeleteStorageObjectId) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *DeleteStorageObjectId) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *DeleteStorageObjectId) GetVersion() string {
	if m != nil {
		return m.Version
	}
	return ""
}

// Batch delete storage objects.
type DeleteStorageObjectsRequest struct {
	// Batch of storage objects.
	ObjectIds []*DeleteStorageObjectId `protobuf:"bytes,1,rep,name=objectIds" json:"objectIds,omitempty"`
}

func (m *DeleteStorageObjectsRequest) Reset()                    { *m = DeleteStorageObjectsRequest{} }
func (m *DeleteStorageObjectsRequest) String() string            { return proto.CompactTextString(m) }
func (*DeleteStorageObjectsRequest) ProtoMessage()               {}
func (*DeleteStorageObjectsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

func (m *DeleteStorageObjectsRequest) GetObjectIds() []*DeleteStorageObjectId {
	if m != nil {
		return m.ObjectIds
	}
	return nil
}

// A friend of a user.
type Friend struct {
	// The user object.
	User *User `protobuf:"bytes,1,opt,name=user" json:"user,omitempty"`
	// The friend status.
	State int32 `protobuf:"varint,2,opt,name=state" json:"state,omitempty"`
}

func (m *Friend) Reset()                    { *m = Friend{} }
func (m *Friend) String() string            { return proto.CompactTextString(m) }
func (*Friend) ProtoMessage()               {}
func (*Friend) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

func (m *Friend) GetUser() *User {
	if m != nil {
		return m.User
	}
	return nil
}

func (m *Friend) GetState() int32 {
	if m != nil {
		return m.State
	}
	return 0
}

// A collection of zero or more friends of the user.
type Friends struct {
	// The Friend objects.
	Friends []*Friend `protobuf:"bytes,1,rep,name=friends" json:"friends,omitempty"`
}

func (m *Friends) Reset()                    { *m = Friends{} }
func (m *Friends) String() string            { return proto.CompactTextString(m) }
func (*Friends) ProtoMessage()               {}
func (*Friends) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

func (m *Friends) GetFriends() []*Friend {
	if m != nil {
		return m.Friends
	}
	return nil
}

// Fetch a batch of zero or more users from the server.
type GetUsersRequest struct {
	// The account id of a user.
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
	// The account username of a user.
	Usernames []string `protobuf:"bytes,2,rep,name=usernames" json:"usernames,omitempty"`
	// The Facebook ID of a user.
	FacebookIds []string `protobuf:"bytes,3,rep,name=facebook_ids,json=facebookIds" json:"facebook_ids,omitempty"`
}

func (m *GetUsersRequest) Reset()                    { *m = GetUsersRequest{} }
func (m *GetUsersRequest) String() string            { return proto.CompactTextString(m) }
func (*GetUsersRequest) ProtoMessage()               {}
func (*GetUsersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

func (m *GetUsersRequest) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

func (m *GetUsersRequest) GetUsernames() []string {
	if m != nil {
		return m.Usernames
	}
	return nil
}

func (m *GetUsersRequest) GetFacebookIds() []string {
	if m != nil {
		return m.FacebookIds
	}
	return nil
}

// A group in the server.
type Group struct {
	// The id of a group.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// The id of the user who created the group.
	CreatorId string `protobuf:"bytes,2,opt,name=creator_id,json=creatorId" json:"creator_id,omitempty"`
	// The unique name of the group.
	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
	// A description for the group.
	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
	// The language expected to be a tag which follows the BCP-47 spec.
	LangTag string `protobuf:"bytes,5,opt,name=lang_tag,json=langTag" json:"lang_tag,omitempty"`
	// Additional information stored as a JSON object.
	Metadata string `protobuf:"bytes,6,opt,name=metadata" json:"metadata,omitempty"`
	// A URL for an avatar image.
	AvatarUrl string `protobuf:"bytes,7,opt,name=avatar_url,json=avatarUrl" json:"avatar_url,omitempty"`
	// Mark a group as private where only admins can accept members.
	Private bool `protobuf:"varint,8,opt,name=private" json:"private,omitempty"`
	// The current count of all members in the group.
	Count int32 `protobuf:"varint,9,opt,name=count" json:"count,omitempty"`
	// The UNIX time when the group was created.
	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
	// The UNIX time when the group was last updated.
	UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,11,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
}

func (m *Group) Reset()                    { *m = Group{} }
func (m *Group) String() string            { return proto.CompactTextString(m) }
func (*Group) ProtoMessage()               {}
func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

func (m *Group) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Group) GetCreatorId() string {
	if m != nil {
		return m.CreatorId
	}
	return ""
}

func (m *Group) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Group) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *Group) GetLangTag() string {
	if m != nil {
		return m.LangTag
	}
	return ""
}

func (m *Group) GetMetadata() string {
	if m != nil {
		return m.Metadata
	}
	return ""
}

func (m *Group) GetAvatarUrl() string {
	if m != nil {
		return m.AvatarUrl
	}
	return ""
}

func (m *Group) GetPrivate() bool {
	if m != nil {
		return m.Private
	}
	return false
}

func (m *Group) GetCount() int32 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *Group) GetCreateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.CreateTime
	}
	return nil
}

func (m *Group) GetUpdateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.UpdateTime
	}
	return nil
}

// A collection of zero or more groups.
type Groups struct {
	// The Group objects.
	Groups []*Group `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty"`
}

func (m *Groups) Reset()                    { *m = Groups{} }
func (m *Groups) String() string            { return proto.CompactTextString(m) }
func (*Groups) ProtoMessage()               {}
func (*Groups) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

func (m *Groups) GetGroups() []*Group {
	if m != nil {
		return m.Groups
	}
	return nil
}

// Import Facebook friends into the current user's account.
type ImportFacebookFriendsRequest struct {
	// The Facebook account details.
	Account *AccountFacebook `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Reset the current user's friends list.
	Reset_ *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=reset" json:"reset,omitempty"`
}

func (m *ImportFacebookFriendsRequest) Reset()                    { *m = ImportFacebookFriendsRequest{} }
func (m *ImportFacebookFriendsRequest) String() string            { return proto.CompactTextString(m) }
func (*ImportFacebookFriendsRequest) ProtoMessage()               {}
func (*ImportFacebookFriendsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

func (m *ImportFacebookFriendsRequest) GetAccount() *AccountFacebook {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *ImportFacebookFriendsRequest) GetReset_() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Reset_
	}
	return nil
}

// Link Facebook to the current user's account.
type LinkFacebookRequest struct {
	// The Facebook account details.
	Account *AccountFacebook `protobuf:"bytes,1,opt,name=account" json:"account,omitempty"`
	// Import Facebook friends for the user.
	Import *google_protobuf3.BoolValue `protobuf:"bytes,4,opt,name=import" json:"import,omitempty"`
}

func (m *LinkFacebookRequest) Reset()                    { *m = LinkFacebookRequest{} }
func (m *LinkFacebookRequest) String() string            { return proto.CompactTextString(m) }
func (*LinkFacebookRequest) ProtoMessage()               {}
func (*LinkFacebookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

func (m *LinkFacebookRequest) GetAccount() *AccountFacebook {
	if m != nil {
		return m.Account
	}
	return nil
}

func (m *LinkFacebookRequest) GetImport() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Import
	}
	return nil
}

type ListMatchesRequest struct {
	// Limit the number of returned matches.
	Limit *google_protobuf3.Int32Value `protobuf:"bytes,1,opt,name=limit" json:"limit,omitempty"`
	// Authoritative or relayed matches.
	Authoritative *google_protobuf3.BoolValue `protobuf:"bytes,2,opt,name=authoritative" json:"authoritative,omitempty"`
	// Label filter.
	Label *google_protobuf3.StringValue `protobuf:"bytes,3,opt,name=label" json:"label,omitempty"`
	// Minimum user count.
	MinSize *google_protobuf3.Int32Value `protobuf:"bytes,4,opt,name=min_size,json=minSize" json:"min_size,omitempty"`
	// Maximum user count.
	MaxSize *google_protobuf3.Int32Value `protobuf:"bytes,5,opt,name=max_size,json=maxSize" json:"max_size,omitempty"`
}

func (m *ListMatchesRequest) Reset()                    { *m = ListMatchesRequest{} }
func (m *ListMatchesRequest) String() string            { return proto.CompactTextString(m) }
func (*ListMatchesRequest) ProtoMessage()               {}
func (*ListMatchesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

func (m *ListMatchesRequest) GetLimit() *google_protobuf3.Int32Value {
	if m != nil {
		return m.Limit
	}
	return nil
}

func (m *ListMatchesRequest) GetAuthoritative() *google_protobuf3.BoolValue {
	if m != nil {
		return m.Authoritative
	}
	return nil
}

func (m *ListMatchesRequest) GetLabel() *google_protobuf3.StringValue {
	if m != nil {
		return m.Label
	}
	return nil
}

func (m *ListMatchesRequest) GetMinSize() *google_protobuf3.Int32Value {
	if m != nil {
		return m.MinSize
	}
	return nil
}

func (m *ListMatchesRequest) GetMaxSize() *google_protobuf3.Int32Value {
	if m != nil {
		return m.MaxSize
	}
	return nil
}

// Get a list of unexpired notifications.
type ListNotificationsRequest struct {
	// The number of notifications to get. Between 1 and 100.
	Limit *google_protobuf3.Int32Value `protobuf:"bytes,1,opt,name=limit" json:"limit,omitempty"`
	// A cursor to page through notifications. May be cached by clients to get from point in time forwards.
	CacheableCursor string `protobuf:"bytes,2,opt,name=cacheable_cursor,json=cacheableCursor" json:"cacheable_cursor,omitempty"`
}

func (m *ListNotificationsRequest) Reset()                    { *m = ListNotificationsRequest{} }
func (m *ListNotificationsRequest) String() string            { return proto.CompactTextString(m) }
func (*ListNotificationsRequest) ProtoMessage()               {}
func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

func (m *ListNotificationsRequest) GetLimit() *google_protobuf3.Int32Value {
	if m != nil {
		return m.Limit
	}
	return nil
}

func (m *ListNotificationsRequest) GetCacheableCursor() string {
	if m != nil {
		return m.CacheableCursor
	}
	return ""
}

// List storage objects by user ID or collection or both.
type ListStorageObjectsRequest struct {
	// ID of the user.
	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"`
	// The collection which stores the object.
	Collection string `protobuf:"bytes,2,opt,name=collection" json:"collection,omitempty"`
	// The number of storage objects to list. Between 1 and 100.
	Limit *google_protobuf3.Int32Value `protobuf:"bytes,3,opt,name=limit" json:"limit,omitempty"`
	// The cursor to page through results from.
	Cursor string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"`
}

func (m *ListStorageObjectsRequest) Reset()                    { *m = ListStorageObjectsRequest{} }
func (m *ListStorageObjectsRequest) String() string            { return proto.CompactTextString(m) }
func (*ListStorageObjectsRequest) ProtoMessage()               {}
func (*ListStorageObjectsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

func (m *ListStorageObjectsRequest) GetUserId() string {
	if m != nil {
		return m.UserId
	}
	return ""
}

func (m *ListStorageObjectsRequest) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *ListStorageObjectsRequest) GetLimit() *google_protobuf3.Int32Value {
	if m != nil {
		return m.Limit
	}
	return nil
}

func (m *ListStorageObjectsRequest) GetCursor() string {
	if m != nil {
		return m.Cursor
	}
	return ""
}

// Represents a realtime match.
type Match struct {
	// The ID of the match, can be used to join.
	MatchId string `protobuf:"bytes,1,opt,name=match_id,json=matchId" json:"match_id,omitempty"`
	// True if it's an server-managed authoritative match, false otherwise.
	Authoritative bool `protobuf:"varint,2,opt,name=authoritative" json:"authoritative,omitempty"`
	// Match label, if any.
	Label *google_protobuf3.StringValue `protobuf:"bytes,3,opt,name=label" json:"label,omitempty"`
	// Current number of users in the match.
	Size int32 `protobuf:"varint,4,opt,name=size" json:"size,omitempty"`
}

func (m *Match) Reset()                    { *m = Match{} }
func (m *Match) String() string            { return proto.CompactTextString(m) }
func (*Match) ProtoMessage()               {}
func (*Match) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

func (m *Match) GetMatchId() string {
	if m != nil {
		return m.MatchId
	}
	return ""
}

func (m *Match) GetAuthoritative() bool {
	if m != nil {
		return m.Authoritative
	}
	return false
}

func (m *Match) GetLabel() *google_protobuf3.StringValue {
	if m != nil {
		return m.Label
	}
	return nil
}

func (m *Match) GetSize() int32 {
	if m != nil {
		return m.Size
	}
	return 0
}

// A list of realtime matches.
type MatchList struct {
	// A number of matches corresponding to a list operation.
	Matches []*Match `protobuf:"bytes,1,rep,name=matches" json:"matches,omitempty"`
}

func (m *MatchList) Reset()                    { *m = MatchList{} }
func (m *MatchList) String() string            { return proto.CompactTextString(m) }
func (*MatchList) ProtoMessage()               {}
func (*MatchList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

func (m *MatchList) GetMatches() []*Match {
	if m != nil {
		return m.Matches
	}
	return nil
}

// A notification in the server.
type Notification struct {
	// ID of the Notification.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// Subject of the notification.
	Subject string `protobuf:"bytes,2,opt,name=subject" json:"subject,omitempty"`
	// Content of the notification in JSON.
	Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"`
	// Category code for this notification.
	Code int32 `protobuf:"varint,4,opt,name=code" json:"code,omitempty"`
	// ID of the sender, if a user. Otherwise 'null'.
	SenderId string `protobuf:"bytes,5,opt,name=sender_id,json=senderId" json:"sender_id,omitempty"`
	// The UNIX time when the notification was created.
	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
	// True if this notification was persisted to the database.
	Persistent bool `protobuf:"varint,7,opt,name=persistent" json:"persistent,omitempty"`
}

func (m *Notification) Reset()                    { *m = Notification{} }
func (m *Notification) String() string            { return proto.CompactTextString(m) }
func (*Notification) ProtoMessage()               {}
func (*Notification) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

func (m *Notification) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Notification) GetSubject() string {
	if m != nil {
		return m.Subject
	}
	return ""
}

func (m *Notification) GetContent() string {
	if m != nil {
		return m.Content
	}
	return ""
}

func (m *Notification) GetCode() int32 {
	if m != nil {
		return m.Code
	}
	return 0
}

func (m *Notification) GetSenderId() string {
	if m != nil {
		return m.SenderId
	}
	return ""
}

func (m *Notification) GetCreateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.CreateTime
	}
	return nil
}

func (m *Notification) GetPersistent() bool {
	if m != nil {
		return m.Persistent
	}
	return false
}

// A collection of zero or more notifications.
type NotificationList struct {
	// Collection of notifications.
	Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications" json:"notifications,omitempty"`
	// Use this cursor to paginate notifications. Cache this to catch up to new notifications.
	CacheableCursor string `protobuf:"bytes,2,opt,name=cacheable_cursor,json=cacheableCursor" json:"cacheable_cursor,omitempty"`
}

func (m *NotificationList) Reset()                    { *m = NotificationList{} }
func (m *NotificationList) String() string            { return proto.CompactTextString(m) }
func (*NotificationList) ProtoMessage()               {}
func (*NotificationList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

func (m *NotificationList) GetNotifications() []*Notification {
	if m != nil {
		return m.Notifications
	}
	return nil
}

func (m *NotificationList) GetCacheableCursor() string {
	if m != nil {
		return m.CacheableCursor
	}
	return ""
}

// Storage objects to get.
type ReadStorageObjectId struct {
	// The collection which stores the object.
	Collection string `protobuf:"bytes,1,opt,name=collection" json:"collection,omitempty"`
	// The key of the object within the collection.
	Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	// The user owner of the object.
	UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId" json:"user_id,omitempty"`
}

func (m *ReadStorageObjectId) Reset()                    { *m = ReadStorageObjectId{} }
func (m *ReadStorageObjectId) String() string            { return proto.CompactTextString(m) }
func (*ReadStorageObjectId) ProtoMessage()               {}
func (*ReadStorageObjectId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

func (m *ReadStorageObjectId) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *ReadStorageObjectId) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *ReadStorageObjectId) GetUserId() string {
	if m != nil {
		return m.UserId
	}
	return ""
}

// Batch get storage objects.
type ReadStorageObjectsRequest struct {
	// Batch of storage objects.
	ObjectIds []*ReadStorageObjectId `protobuf:"bytes,1,rep,name=objectIds" json:"objectIds,omitempty"`
}

func (m *ReadStorageObjectsRequest) Reset()                    { *m = ReadStorageObjectsRequest{} }
func (m *ReadStorageObjectsRequest) String() string            { return proto.CompactTextString(m) }
func (*ReadStorageObjectsRequest) ProtoMessage()               {}
func (*ReadStorageObjectsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

func (m *ReadStorageObjectsRequest) GetObjectIds() []*ReadStorageObjectId {
	if m != nil {
		return m.ObjectIds
	}
	return nil
}

// Execute an Lua function on the server.
type Rpc struct {
	// The identifier of the function.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// The payload of the function which must be a JSON object.
	Payload string `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"`
	// The authentication key used when executed as a non-client HTTP request.
	HttpKey string `protobuf:"bytes,3,opt,name=http_key,json=httpKey" json:"http_key,omitempty"`
}

func (m *Rpc) Reset()                    { *m = Rpc{} }
func (m *Rpc) String() string            { return proto.CompactTextString(m) }
func (*Rpc) ProtoMessage()               {}
func (*Rpc) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

func (m *Rpc) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Rpc) GetPayload() string {
	if m != nil {
		return m.Payload
	}
	return ""
}

func (m *Rpc) GetHttpKey() string {
	if m != nil {
		return m.HttpKey
	}
	return ""
}

// A user's session used to authenticate messages.
type Session struct {
	// True if the corresponding account was just created, false otherwise.
	Created bool `protobuf:"varint,1,opt,name=created" json:"created,omitempty"`
	// Authentication credentials.
	Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
	// rUDP specific authentication credentials.
	UdpToken string `protobuf:"bytes,3,opt,name=udp_token,json=udpToken" json:"udp_token,omitempty"`
}

func (m *Session) Reset()                    { *m = Session{} }
func (m *Session) String() string            { return proto.CompactTextString(m) }
func (*Session) ProtoMessage()               {}
func (*Session) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }

func (m *Session) GetCreated() bool {
	if m != nil {
		return m.Created
	}
	return false
}

func (m *Session) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

func (m *Session) GetUdpToken() string {
	if m != nil {
		return m.UdpToken
	}
	return ""
}

// An object within the storage engine.
type StorageObject struct {
	// The collection which stores the object.
	Collection string `protobuf:"bytes,1,opt,name=collection" json:"collection,omitempty"`
	// The key of the object within the collection.
	Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	// The user owner of the object.
	UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId" json:"user_id,omitempty"`
	// The value of the object.
	Value string `protobuf:"bytes,4,opt,name=value" json:"value,omitempty"`
	// The version hash of the object.
	Version string `protobuf:"bytes,5,opt,name=version" json:"version,omitempty"`
	// The read access permissions for the object.
	PermissionRead int32 `protobuf:"varint,6,opt,name=permission_read,json=permissionRead" json:"permission_read,omitempty"`
	// The write access permissions for the object.
	PermissionWrite int32 `protobuf:"varint,7,opt,name=permission_write,json=permissionWrite" json:"permission_write,omitempty"`
	// The UNIX time when the object was created.
	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,8,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
	// The UNIX time when the object was last updated.
	UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,9,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
}

func (m *StorageObject) Reset()                    { *m = StorageObject{} }
func (m *StorageObject) String() string            { return proto.CompactTextString(m) }
func (*StorageObject) ProtoMessage()               {}
func (*StorageObject) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }

func (m *StorageObject) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *StorageObject) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *StorageObject) GetUserId() string {
	if m != nil {
		return m.UserId
	}
	return ""
}

func (m *StorageObject) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

func (m *StorageObject) GetVersion() string {
	if m != nil {
		return m.Version
	}
	return ""
}

func (m *StorageObject) GetPermissionRead() int32 {
	if m != nil {
		return m.PermissionRead
	}
	return 0
}

func (m *StorageObject) GetPermissionWrite() int32 {
	if m != nil {
		return m.PermissionWrite
	}
	return 0
}

func (m *StorageObject) GetCreateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.CreateTime
	}
	return nil
}

func (m *StorageObject) GetUpdateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.UpdateTime
	}
	return nil
}

// A storage acknowledgement.
type StorageObjectAck struct {
	// The collection which stores the object.
	Collection string `protobuf:"bytes,1,opt,name=collection" json:"collection,omitempty"`
	// The key of the object within the collection.
	Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	// The version hash of the object.
	Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
}

func (m *StorageObjectAck) Reset()                    { *m = StorageObjectAck{} }
func (m *StorageObjectAck) String() string            { return proto.CompactTextString(m) }
func (*StorageObjectAck) ProtoMessage()               {}
func (*StorageObjectAck) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }

func (m *StorageObjectAck) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *StorageObjectAck) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *StorageObjectAck) GetVersion() string {
	if m != nil {
		return m.Version
	}
	return ""
}

// Batch of acknowledgements for the storage object write.
type StorageObjectAcks struct {
	// Batch of storage write acknowledgements.
	Acks []*StorageObjectAck `protobuf:"bytes,1,rep,name=acks" json:"acks,omitempty"`
}

func (m *StorageObjectAcks) Reset()                    { *m = StorageObjectAcks{} }
func (m *StorageObjectAcks) String() string            { return proto.CompactTextString(m) }
func (*StorageObjectAcks) ProtoMessage()               {}
func (*StorageObjectAcks) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }

func (m *StorageObjectAcks) GetAcks() []*StorageObjectAck {
	if m != nil {
		return m.Acks
	}
	return nil
}

// Batch of storage objects.
type StorageObjects struct {
	// The batch of storage objects.
	Objects []*StorageObject `protobuf:"bytes,1,rep,name=objects" json:"objects,omitempty"`
}

func (m *StorageObjects) Reset()                    { *m = StorageObjects{} }
func (m *StorageObjects) String() string            { return proto.CompactTextString(m) }
func (*StorageObjects) ProtoMessage()               {}
func (*StorageObjects) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }

func (m *StorageObjects) GetObjects() []*StorageObject {
	if m != nil {
		return m.Objects
	}
	return nil
}

// List of storage objects.
type StorageObjectList struct {
	// The list of storage objects.
	Objects []*StorageObject `protobuf:"bytes,1,rep,name=objects" json:"objects,omitempty"`
	// The cursor associated with the query a page of results.
	Cursor string `protobuf:"bytes,2,opt,name=cursor" json:"cursor,omitempty"`
}

func (m *StorageObjectList) Reset()                    { *m = StorageObjectList{} }
func (m *StorageObjectList) String() string            { return proto.CompactTextString(m) }
func (*StorageObjectList) ProtoMessage()               {}
func (*StorageObjectList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }

func (m *StorageObjectList) GetObjects() []*StorageObject {
	if m != nil {
		return m.Objects
	}
	return nil
}

func (m *StorageObjectList) GetCursor() string {
	if m != nil {
		return m.Cursor
	}
	return ""
}

// Update a user's account details.
type UpdateAccountRequest struct {
	// The username of the user's account.
	Username *google_protobuf3.StringValue `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"`
	// The display name of the user.
	DisplayName *google_protobuf3.StringValue `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
	// A URL for an avatar image.
	AvatarUrl *google_protobuf3.StringValue `protobuf:"bytes,3,opt,name=avatar_url,json=avatarUrl" json:"avatar_url,omitempty"`
	// The language expected to be a tag which follows the BCP-47 spec.
	LangTag *google_protobuf3.StringValue `protobuf:"bytes,4,opt,name=lang_tag,json=langTag" json:"lang_tag,omitempty"`
	// The location set by the user.
	Location *google_protobuf3.StringValue `protobuf:"bytes,5,opt,name=location" json:"location,omitempty"`
	// The timezone set by the user.
	Timezone *google_protobuf3.StringValue `protobuf:"bytes,6,opt,name=timezone" json:"timezone,omitempty"`
}

func (m *UpdateAccountRequest) Reset()                    { *m = UpdateAccountRequest{} }
func (m *UpdateAccountRequest) String() string            { return proto.CompactTextString(m) }
func (*UpdateAccountRequest) ProtoMessage()               {}
func (*UpdateAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }

func (m *UpdateAccountRequest) GetUsername() *google_protobuf3.StringValue {
	if m != nil {
		return m.Username
	}
	return nil
}

func (m *UpdateAccountRequest) GetDisplayName() *google_protobuf3.StringValue {
	if m != nil {
		return m.DisplayName
	}
	return nil
}

func (m *UpdateAccountRequest) GetAvatarUrl() *google_protobuf3.StringValue {
	if m != nil {
		return m.AvatarUrl
	}
	return nil
}

func (m *UpdateAccountRequest) GetLangTag() *google_protobuf3.StringValue {
	if m != nil {
		return m.LangTag
	}
	return nil
}

func (m *UpdateAccountRequest) GetLocation() *google_protobuf3.StringValue {
	if m != nil {
		return m.Location
	}
	return nil
}

func (m *UpdateAccountRequest) GetTimezone() *google_protobuf3.StringValue {
	if m != nil {
		return m.Timezone
	}
	return nil
}

// A user in the server.
type User struct {
	// The id of the user's account.
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// The username of the user's account.
	Username string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"`
	// The display name of the user.
	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
	// A URL for an avatar image.
	AvatarUrl string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl" json:"avatar_url,omitempty"`
	// The language expected to be a tag which follows the BCP-47 spec.
	LangTag string `protobuf:"bytes,5,opt,name=lang_tag,json=langTag" json:"lang_tag,omitempty"`
	// The location set by the user.
	Location string `protobuf:"bytes,6,opt,name=location" json:"location,omitempty"`
	// The timezone set by the user.
	Timezone string `protobuf:"bytes,7,opt,name=timezone" json:"timezone,omitempty"`
	// Additional information stored as a JSON object.
	Metadata string `protobuf:"bytes,8,opt,name=metadata" json:"metadata,omitempty"`
	// The Facebook id in the user's account.
	FacebookId string `protobuf:"bytes,9,opt,name=facebook_id,json=facebookId" json:"facebook_id,omitempty"`
	// The Google id in the user's account.
	GoogleId string `protobuf:"bytes,10,opt,name=google_id,json=googleId" json:"google_id,omitempty"`
	// The Apple Game Center in of the user's account.
	GamecenterId string `protobuf:"bytes,11,opt,name=gamecenter_id,json=gamecenterId" json:"gamecenter_id,omitempty"`
	// The Steam id in the user's account.
	SteamId string `protobuf:"bytes,12,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"`
	// Indicates whether the user is currently online.
	Online bool `protobuf:"varint,13,opt,name=online" json:"online,omitempty"`
	// Number of related edges to this user.
	EdgeCount int32 `protobuf:"varint,14,opt,name=edge_count,json=edgeCount" json:"edge_count,omitempty"`
	// The UNIX time when the user was created.
	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,15,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
	// The UNIX time when the user was last updated.
	UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,16,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
}

func (m *User) Reset()                    { *m = User{} }
func (m *User) String() string            { return proto.CompactTextString(m) }
func (*User) ProtoMessage()               {}
func (*User) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }

func (m *User) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *User) GetUsername() string {
	if m != nil {
		return m.Username
	}
	return ""
}

func (m *User) GetDisplayName() string {
	if m != nil {
		return m.DisplayName
	}
	return ""
}

func (m *User) GetAvatarUrl() string {
	if m != nil {
		return m.AvatarUrl
	}
	return ""
}

func (m *User) GetLangTag() string {
	if m != nil {
		return m.LangTag
	}
	return ""
}

func (m *User) GetLocation() string {
	if m != nil {
		return m.Location
	}
	return ""
}

func (m *User) GetTimezone() string {
	if m != nil {
		return m.Timezone
	}
	return ""
}

func (m *User) GetMetadata() string {
	if m != nil {
		return m.Metadata
	}
	return ""
}

func (m *User) GetFacebookId() string {
	if m != nil {
		return m.FacebookId
	}
	return ""
}

func (m *User) GetGoogleId() string {
	if m != nil {
		return m.GoogleId
	}
	return ""
}

func (m *User) GetGamecenterId() string {
	if m != nil {
		return m.GamecenterId
	}
	return ""
}

func (m *User) GetSteamId() string {
	if m != nil {
		return m.SteamId
	}
	return ""
}

func (m *User) GetOnline() bool {
	if m != nil {
		return m.Online
	}
	return false
}

func (m *User) GetEdgeCount() int32 {
	if m != nil {
		return m.EdgeCount
	}
	return 0
}

func (m *User) GetCreateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.CreateTime
	}
	return nil
}

func (m *User) GetUpdateTime() *google_protobuf2.Timestamp {
	if m != nil {
		return m.UpdateTime
	}
	return nil
}

// A collection of zero or more users.
type Users struct {
	// The User objects.
	Users []*User `protobuf:"bytes,1,rep,name=users" json:"users,omitempty"`
}

func (m *Users) Reset()                    { *m = Users{} }
func (m *Users) String() string            { return proto.CompactTextString(m) }
func (*Users) ProtoMessage()               {}
func (*Users) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }

func (m *Users) GetUsers() []*User {
	if m != nil {
		return m.Users
	}
	return nil
}

// The object to store.
type WriteStorageObject struct {
	// The collection to store the object.
	Collection string `protobuf:"bytes,1,opt,name=collection" json:"collection,omitempty"`
	// The key for the object within the collection.
	Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	// The value of the object.
	Value string `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
	// The version hash of the object to check. Possible values are: ["", "*", "#hash#"].
	Version string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
	// The read access permissions for the object.
	PermissionRead int32 `protobuf:"varint,5,opt,name=permission_read,json=permissionRead" json:"permission_read,omitempty"`
	// The write access permissions for the object.
	PermissionWrite int32 `protobuf:"varint,6,opt,name=permission_write,json=permissionWrite" json:"permission_write,omitempty"`
}

func (m *WriteStorageObject) Reset()                    { *m = WriteStorageObject{} }
func (m *WriteStorageObject) String() string            { return proto.CompactTextString(m) }
func (*WriteStorageObject) ProtoMessage()               {}
func (*WriteStorageObject) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }

func (m *WriteStorageObject) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *WriteStorageObject) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *WriteStorageObject) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

func (m *WriteStorageObject) GetVersion() string {
	if m != nil {
		return m.Version
	}
	return ""
}

func (m *WriteStorageObject) GetPermissionRead() int32 {
	if m != nil {
		return m.PermissionRead
	}
	return 0
}

func (m *WriteStorageObject) GetPermissionWrite() int32 {
	if m != nil {
		return m.PermissionWrite
	}
	return 0
}

// Write objects to the storage engine.
type WriteStorageObjectsRequest struct {
	// The objects to store on the server.
	Objects []*WriteStorageObject `protobuf:"bytes,1,rep,name=objects" json:"objects,omitempty"`
}

func (m *WriteStorageObjectsRequest) Reset()                    { *m = WriteStorageObjectsRequest{} }
func (m *WriteStorageObjectsRequest) String() string            { return proto.CompactTextString(m) }
func (*WriteStorageObjectsRequest) ProtoMessage()               {}
func (*WriteStorageObjectsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }

func (m *WriteStorageObjectsRequest) GetObjects() []*WriteStorageObject {
	if m != nil {
		return m.Objects
	}
	return nil
}

func init() {
	proto.RegisterType((*Account)(nil), "nakama.api.Account")
	proto.RegisterType((*AccountCustom)(nil), "nakama.api.AccountCustom")
	proto.RegisterType((*AccountDevice)(nil), "nakama.api.AccountDevice")
	proto.RegisterType((*AccountEmail)(nil), "nakama.api.AccountEmail")
	proto.RegisterType((*AccountFacebook)(nil), "nakama.api.AccountFacebook")
	proto.RegisterType((*AccountGameCenter)(nil), "nakama.api.AccountGameCenter")
	proto.RegisterType((*AccountGoogle)(nil), "nakama.api.AccountGoogle")
	proto.RegisterType((*AccountSteam)(nil), "nakama.api.AccountSteam")
	proto.RegisterType((*AddFriendsRequest)(nil), "nakama.api.AddFriendsRequest")
	proto.RegisterType((*AuthenticateCustomRequest)(nil), "nakama.api.AuthenticateCustomRequest")
	proto.RegisterType((*AuthenticateDeviceRequest)(nil), "nakama.api.AuthenticateDeviceRequest")
	proto.RegisterType((*AuthenticateEmailRequest)(nil), "nakama.api.AuthenticateEmailRequest")
	proto.RegisterType((*AuthenticateFacebookRequest)(nil), "nakama.api.AuthenticateFacebookRequest")
	proto.RegisterType((*AuthenticateGameCenterRequest)(nil), "nakama.api.AuthenticateGameCenterRequest")
	proto.RegisterType((*AuthenticateGoogleRequest)(nil), "nakama.api.AuthenticateGoogleRequest")
	proto.RegisterType((*AuthenticateSteamRequest)(nil), "nakama.api.AuthenticateSteamRequest")
	proto.RegisterType((*BlockFriendsRequest)(nil), "nakama.api.BlockFriendsRequest")
	proto.RegisterType((*ChannelId)(nil), "nakama.api.ChannelId")
	proto.RegisterType((*CreateGroupsRequest)(nil), "nakama.api.CreateGroupsRequest")
	proto.RegisterType((*CreateGroupsRequest_NewGroup)(nil), "nakama.api.CreateGroupsRequest.NewGroup")
	proto.RegisterType((*DeleteFriendsRequest)(nil), "nakama.api.DeleteFriendsRequest")
	proto.RegisterType((*DeleteNotificationsRequest)(nil), "nakama.api.DeleteNotificationsRequest")
	proto.RegisterType((*DeleteStorageObjectId)(nil), "nakama.api.DeleteStorageObjectId")
	proto.RegisterType((*DeleteStorageObjectsRequest)(nil), "nakama.api.DeleteStorageObjectsRequest")
	proto.RegisterType((*Friend)(nil), "nakama.api.Friend")
	proto.RegisterType((*Friends)(nil), "nakama.api.Friends")
	proto.RegisterType((*GetUsersRequest)(nil), "nakama.api.GetUsersRequest")
	proto.RegisterType((*Group)(nil), "nakama.api.Group")
	proto.RegisterType((*Groups)(nil), "nakama.api.Groups")
	proto.RegisterType((*ImportFacebookFriendsRequest)(nil), "nakama.api.ImportFacebookFriendsRequest")
	proto.RegisterType((*LinkFacebookRequest)(nil), "nakama.api.LinkFacebookRequest")
	proto.RegisterType((*ListMatchesRequest)(nil), "nakama.api.ListMatchesRequest")
	proto.RegisterType((*ListNotificationsRequest)(nil), "nakama.api.ListNotificationsRequest")
	proto.RegisterType((*ListStorageObjectsRequest)(nil), "nakama.api.ListStorageObjectsRequest")
	proto.RegisterType((*Match)(nil), "nakama.api.Match")
	proto.RegisterType((*MatchList)(nil), "nakama.api.MatchList")
	proto.RegisterType((*Notification)(nil), "nakama.api.Notification")
	proto.RegisterType((*NotificationList)(nil), "nakama.api.NotificationList")
	proto.RegisterType((*ReadStorageObjectId)(nil), "nakama.api.ReadStorageObjectId")
	proto.RegisterType((*ReadStorageObjectsRequest)(nil), "nakama.api.ReadStorageObjectsRequest")
	proto.RegisterType((*Rpc)(nil), "nakama.api.Rpc")
	proto.RegisterType((*Session)(nil), "nakama.api.Session")
	proto.RegisterType((*StorageObject)(nil), "nakama.api.StorageObject")
	proto.RegisterType((*StorageObjectAck)(nil), "nakama.api.StorageObjectAck")
	proto.RegisterType((*StorageObjectAcks)(nil), "nakama.api.StorageObjectAcks")
	proto.RegisterType((*StorageObjects)(nil), "nakama.api.StorageObjects")
	proto.RegisterType((*StorageObjectList)(nil), "nakama.api.StorageObjectList")
	proto.RegisterType((*UpdateAccountRequest)(nil), "nakama.api.UpdateAccountRequest")
	proto.RegisterType((*User)(nil), "nakama.api.User")
	proto.RegisterType((*Users)(nil), "nakama.api.Users")
	proto.RegisterType((*WriteStorageObject)(nil), "nakama.api.WriteStorageObject")
	proto.RegisterType((*WriteStorageObjectsRequest)(nil), "nakama.api.WriteStorageObjectsRequest")
	proto.RegisterEnum("nakama.api.StoragePermissionRead", StoragePermissionRead_name, StoragePermissionRead_value)
	proto.RegisterEnum("nakama.api.StoragePermissionWrite", StoragePermissionWrite_name, StoragePermissionWrite_value)
	proto.RegisterEnum("nakama.api.ChannelId_Type", ChannelId_Type_name, ChannelId_Type_value)
	proto.RegisterEnum("nakama.api.Friend_State", Friend_State_name, Friend_State_value)
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// Client API for Nakama service

type NakamaClient interface {
	// Add friends by ID or username to a user's account.
	AddFriends(ctx context.Context, in *AddFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Authenticate a user with a custom id against the server.
	AuthenticateCustom(ctx context.Context, in *AuthenticateCustomRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with a device id against the server.
	AuthenticateDevice(ctx context.Context, in *AuthenticateDeviceRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with an email+password against the server.
	AuthenticateEmail(ctx context.Context, in *AuthenticateEmailRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with a Facebook OAuth token against the server.
	AuthenticateFacebook(ctx context.Context, in *AuthenticateFacebookRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with Apple's GameCenter against the server.
	AuthenticateGameCenter(ctx context.Context, in *AuthenticateGameCenterRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with Google against the server.
	AuthenticateGoogle(ctx context.Context, in *AuthenticateGoogleRequest, opts ...grpc.CallOption) (*Session, error)
	// Authenticate a user with Steam against the server.
	AuthenticateSteam(ctx context.Context, in *AuthenticateSteamRequest, opts ...grpc.CallOption) (*Session, error)
	// Block one or more users by ID or username.
	BlockFriends(ctx context.Context, in *BlockFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Create one or more new groups with the current user as the owner.
	CreateGroup(ctx context.Context, in *CreateGroupsRequest, opts ...grpc.CallOption) (*Groups, error)
	// Delete one or more users by ID or username.
	DeleteFriends(ctx context.Context, in *DeleteFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Delete one or more users by ID or username.
	DeleteNotifications(ctx context.Context, in *DeleteNotificationsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(ctx context.Context, in *DeleteStorageObjectsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Fetch the current user's account.
	GetAccount(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*Account, error)
	// Fetch zero or more users by ID and/or username.
	GetUsers(ctx context.Context, in *GetUsersRequest, opts ...grpc.CallOption) (*Users, error)
	// A healthcheck which load balancers can use to check the service.
	Healthcheck(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(ctx context.Context, in *ImportFacebookFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add a custom ID to the social profiles on the current user's account.
	LinkCustom(ctx context.Context, in *AccountCustom, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add a device ID to the social profiles on the current user's account.
	LinkDevice(ctx context.Context, in *AccountDevice, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add an email+password to the social profiles on the current user's account.
	LinkEmail(ctx context.Context, in *AccountEmail, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(ctx context.Context, in *LinkFacebookRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add Apple's GameCenter to the social profiles on the current user's account.
	LinkGameCenter(ctx context.Context, in *AccountGameCenter, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(ctx context.Context, in *AccountGoogle, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(ctx context.Context, in *AccountSteam, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// List all friends for the current user.
	ListFriends(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*Friends, error)
	// Fetch list of running matches.
	ListMatches(ctx context.Context, in *ListMatchesRequest, opts ...grpc.CallOption) (*MatchList, error)
	// Fetch list of notifications.
	ListNotifications(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*NotificationList, error)
	// List collections of storage objects.
	ListStorageObjects(ctx context.Context, in *ListStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjectList, error)
	// Get storage objects.
	ReadStorageObjects(ctx context.Context, in *ReadStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjects, error)
	// Execute a Lua function on the server.
	RpcFunc(ctx context.Context, in *Rpc, opts ...grpc.CallOption) (*Rpc, error)
	// Remove the custom ID from the social profiles on the current user's account.
	UnlinkCustom(ctx context.Context, in *AccountCustom, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove the device ID from the social profiles on the current user's account.
	UnlinkDevice(ctx context.Context, in *AccountDevice, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove the email+password from the social profiles on the current user's account.
	UnlinkEmail(ctx context.Context, in *AccountEmail, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(ctx context.Context, in *AccountFacebook, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove Apple's GameCenter from the social profiles on the current user's account.
	UnlinkGameCenter(ctx context.Context, in *AccountGameCenter, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(ctx context.Context, in *AccountGoogle, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(ctx context.Context, in *AccountSteam, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// Write objects into the storage engine.
	WriteStorageObjects(ctx context.Context, in *WriteStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjectAcks, error)
}

type nakamaClient struct {
	cc *grpc.ClientConn
}

func NewNakamaClient(cc *grpc.ClientConn) NakamaClient {
	return &nakamaClient{cc}
}

func (c *nakamaClient) AddFriends(ctx context.Context, in *AddFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AddFriends", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateCustom(ctx context.Context, in *AuthenticateCustomRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateCustom", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateDevice(ctx context.Context, in *AuthenticateDeviceRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateDevice", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateEmail(ctx context.Context, in *AuthenticateEmailRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateEmail", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateFacebook(ctx context.Context, in *AuthenticateFacebookRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateFacebook", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateGameCenter(ctx context.Context, in *AuthenticateGameCenterRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateGameCenter", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateGoogle(ctx context.Context, in *AuthenticateGoogleRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateGoogle", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateSteam(ctx context.Context, in *AuthenticateSteamRequest, opts ...grpc.CallOption) (*Session, error) {
	out := new(Session)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateSteam", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) BlockFriends(ctx context.Context, in *BlockFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/BlockFriends", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) CreateGroup(ctx context.Context, in *CreateGroupsRequest, opts ...grpc.CallOption) (*Groups, error) {
	out := new(Groups)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/CreateGroup", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteFriends(ctx context.Context, in *DeleteFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/DeleteFriends", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteNotifications(ctx context.Context, in *DeleteNotificationsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/DeleteNotifications", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteStorageObjects(ctx context.Context, in *DeleteStorageObjectsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/DeleteStorageObjects", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) GetAccount(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*Account, error) {
	out := new(Account)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/GetAccount", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) GetUsers(ctx context.Context, in *GetUsersRequest, opts ...grpc.CallOption) (*Users, error) {
	out := new(Users)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/GetUsers", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) Healthcheck(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/Healthcheck", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ImportFacebookFriends(ctx context.Context, in *ImportFacebookFriendsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ImportFacebookFriends", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkCustom(ctx context.Context, in *AccountCustom, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkCustom", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkDevice(ctx context.Context, in *AccountDevice, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkDevice", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkEmail(ctx context.Context, in *AccountEmail, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkEmail", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkFacebook(ctx context.Context, in *LinkFacebookRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkFacebook", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkGameCenter(ctx context.Context, in *AccountGameCenter, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkGameCenter", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkGoogle(ctx context.Context, in *AccountGoogle, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkGoogle", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkSteam(ctx context.Context, in *AccountSteam, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/LinkSteam", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListFriends(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*Friends, error) {
	out := new(Friends)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ListFriends", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListMatches(ctx context.Context, in *ListMatchesRequest, opts ...grpc.CallOption) (*MatchList, error) {
	out := new(MatchList)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ListMatches", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListNotifications(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*NotificationList, error) {
	out := new(NotificationList)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ListNotifications", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListStorageObjects(ctx context.Context, in *ListStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjectList, error) {
	out := new(StorageObjectList)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ListStorageObjects", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ReadStorageObjects(ctx context.Context, in *ReadStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjects, error) {
	out := new(StorageObjects)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/ReadStorageObjects", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) RpcFunc(ctx context.Context, in *Rpc, opts ...grpc.CallOption) (*Rpc, error) {
	out := new(Rpc)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/RpcFunc", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkCustom(ctx context.Context, in *AccountCustom, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkCustom", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkDevice(ctx context.Context, in *AccountDevice, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkDevice", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkEmail(ctx context.Context, in *AccountEmail, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkEmail", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkFacebook(ctx context.Context, in *AccountFacebook, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkFacebook", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkGameCenter(ctx context.Context, in *AccountGameCenter, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkGameCenter", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkGoogle(ctx context.Context, in *AccountGoogle, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkGoogle", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkSteam(ctx context.Context, in *AccountSteam, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UnlinkSteam", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
	out := new(google_protobuf1.Empty)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/UpdateAccount", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) WriteStorageObjects(ctx context.Context, in *WriteStorageObjectsRequest, opts ...grpc.CallOption) (*StorageObjectAcks, error) {
	out := new(StorageObjectAcks)
	err := grpc.Invoke(ctx, "/nakama.api.Nakama/WriteStorageObjects", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Nakama service

type NakamaServer interface {
	// Add friends by ID or username to a user's account.
	AddFriends(context.Context, *AddFriendsRequest) (*google_protobuf1.Empty, error)
	// Authenticate a user with a custom id against the server.
	AuthenticateCustom(context.Context, *AuthenticateCustomRequest) (*Session, error)
	// Authenticate a user with a device id against the server.
	AuthenticateDevice(context.Context, *AuthenticateDeviceRequest) (*Session, error)
	// Authenticate a user with an email+password against the server.
	AuthenticateEmail(context.Context, *AuthenticateEmailRequest) (*Session, error)
	// Authenticate a user with a Facebook OAuth token against the server.
	AuthenticateFacebook(context.Context, *AuthenticateFacebookRequest) (*Session, error)
	// Authenticate a user with Apple's GameCenter against the server.
	AuthenticateGameCenter(context.Context, *AuthenticateGameCenterRequest) (*Session, error)
	// Authenticate a user with Google against the server.
	AuthenticateGoogle(context.Context, *AuthenticateGoogleRequest) (*Session, error)
	// Authenticate a user with Steam against the server.
	AuthenticateSteam(context.Context, *AuthenticateSteamRequest) (*Session, error)
	// Block one or more users by ID or username.
	BlockFriends(context.Context, *BlockFriendsRequest) (*google_protobuf1.Empty, error)
	// Create one or more new groups with the current user as the owner.
	CreateGroup(context.Context, *CreateGroupsRequest) (*Groups, error)
	// Delete one or more users by ID or username.
	DeleteFriends(context.Context, *DeleteFriendsRequest) (*google_protobuf1.Empty, error)
	// Delete one or more users by ID or username.
	DeleteNotifications(context.Context, *DeleteNotificationsRequest) (*google_protobuf1.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(context.Context, *DeleteStorageObjectsRequest) (*google_protobuf1.Empty, error)
	// Fetch the current user's account.
	GetAccount(context.Context, *google_protobuf1.Empty) (*Account, error)
	// Fetch zero or more users by ID and/or username.
	GetUsers(context.Context, *GetUsersRequest) (*Users, error)
	// A healthcheck which load balancers can use to check the service.
	Healthcheck(context.Context, *google_protobuf1.Empty) (*google_protobuf1.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(context.Context, *ImportFacebookFriendsRequest) (*google_protobuf1.Empty, error)
	// Add a custom ID to the social profiles on the current user's account.
	LinkCustom(context.Context, *AccountCustom) (*google_protobuf1.Empty, error)
	// Add a device ID to the social profiles on the current user's account.
	LinkDevice(context.Context, *AccountDevice) (*google_protobuf1.Empty, error)
	// Add an email+password to the social profiles on the current user's account.
	LinkEmail(context.Context, *AccountEmail) (*google_protobuf1.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(context.Context, *LinkFacebookRequest) (*google_protobuf1.Empty, error)
	// Add Apple's GameCenter to the social profiles on the current user's account.
	LinkGameCenter(context.Context, *AccountGameCenter) (*google_protobuf1.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(context.Context, *AccountGoogle) (*google_protobuf1.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(context.Context, *AccountSteam) (*google_protobuf1.Empty, error)
	// List all friends for the current user.
	ListFriends(context.Context, *google_protobuf1.Empty) (*Friends, error)
	// Fetch list of running matches.
	ListMatches(context.Context, *ListMatchesRequest) (*MatchList, error)
	// Fetch list of notifications.
	ListNotifications(context.Context, *ListNotificationsRequest) (*NotificationList, error)
	// List collections of storage objects.
	ListStorageObjects(context.Context, *ListStorageObjectsRequest) (*StorageObjectList, error)
	// Get storage objects.
	ReadStorageObjects(context.Context, *ReadStorageObjectsRequest) (*StorageObjects, error)
	// Execute a Lua function on the server.
	RpcFunc(context.Context, *Rpc) (*Rpc, error)
	// Remove the custom ID from the social profiles on the current user's account.
	UnlinkCustom(context.Context, *AccountCustom) (*google_protobuf1.Empty, error)
	// Remove the device ID from the social profiles on the current user's account.
	UnlinkDevice(context.Context, *AccountDevice) (*google_protobuf1.Empty, error)
	// Remove the email+password from the social profiles on the current user's account.
	UnlinkEmail(context.Context, *AccountEmail) (*google_protobuf1.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(context.Context, *AccountFacebook) (*google_protobuf1.Empty, error)
	// Remove Apple's GameCenter from the social profiles on the current user's account.
	UnlinkGameCenter(context.Context, *AccountGameCenter) (*google_protobuf1.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(context.Context, *AccountGoogle) (*google_protobuf1.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(context.Context, *AccountSteam) (*google_protobuf1.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(context.Context, *UpdateAccountRequest) (*google_protobuf1.Empty, error)
	// Write objects into the storage engine.
	WriteStorageObjects(context.Context, *WriteStorageObjectsRequest) (*StorageObjectAcks, error)
}

func RegisterNakamaServer(s *grpc.Server, srv NakamaServer) {
	s.RegisterService(&_Nakama_serviceDesc, srv)
}

func _Nakama_AddFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AddFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AddFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AddFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AddFriends(ctx, req.(*AddFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateCustomRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateCustom(ctx, req.(*AuthenticateCustomRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateDevice(ctx, req.(*AuthenticateDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateEmailRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateEmail(ctx, req.(*AuthenticateEmailRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateFacebookRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateFacebook(ctx, req.(*AuthenticateFacebookRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateGameCenterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateGameCenter(ctx, req.(*AuthenticateGameCenterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateGoogleRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateGoogle(ctx, req.(*AuthenticateGoogleRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticateSteamRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateSteam(ctx, req.(*AuthenticateSteamRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_BlockFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BlockFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).BlockFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/BlockFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).BlockFriends(ctx, req.(*BlockFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateGroupsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).CreateGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/CreateGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).CreateGroup(ctx, req.(*CreateGroupsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteFriends(ctx, req.(*DeleteFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteNotifications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteNotificationsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteNotifications(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteNotifications",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteNotifications(ctx, req.(*DeleteNotificationsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteStorageObjects(ctx, req.(*DeleteStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_GetAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(google_protobuf1.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).GetAccount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/GetAccount",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).GetAccount(ctx, req.(*google_protobuf1.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_GetUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).GetUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/GetUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).GetUsers(ctx, req.(*GetUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_Healthcheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(google_protobuf1.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).Healthcheck(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/Healthcheck",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).Healthcheck(ctx, req.(*google_protobuf1.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ImportFacebookFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ImportFacebookFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ImportFacebookFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ImportFacebookFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ImportFacebookFriends(ctx, req.(*ImportFacebookFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountCustom)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkCustom(ctx, req.(*AccountCustom))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountDevice)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkDevice(ctx, req.(*AccountDevice))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountEmail)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkEmail(ctx, req.(*AccountEmail))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(LinkFacebookRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkFacebook(ctx, req.(*LinkFacebookRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountGameCenter)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkGameCenter(ctx, req.(*AccountGameCenter))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountGoogle)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkGoogle(ctx, req.(*AccountGoogle))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountSteam)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkSteam(ctx, req.(*AccountSteam))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(google_protobuf1.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListFriends(ctx, req.(*google_protobuf1.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListMatches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListMatchesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListMatches(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListMatches",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListMatches(ctx, req.(*ListMatchesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListNotifications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListNotificationsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListNotifications(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListNotifications",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListNotifications(ctx, req.(*ListNotificationsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListStorageObjects(ctx, req.(*ListStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ReadStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReadStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ReadStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ReadStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ReadStorageObjects(ctx, req.(*ReadStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_RpcFunc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Rpc)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).RpcFunc(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/RpcFunc",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).RpcFunc(ctx, req.(*Rpc))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountCustom)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkCustom(ctx, req.(*AccountCustom))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountDevice)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkDevice(ctx, req.(*AccountDevice))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountEmail)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkEmail(ctx, req.(*AccountEmail))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountFacebook)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkFacebook(ctx, req.(*AccountFacebook))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountGameCenter)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkGameCenter(ctx, req.(*AccountGameCenter))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountGoogle)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkGoogle(ctx, req.(*AccountGoogle))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AccountSteam)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkSteam(ctx, req.(*AccountSteam))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UpdateAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateAccountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UpdateAccount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UpdateAccount",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UpdateAccount(ctx, req.(*UpdateAccountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_WriteStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(WriteStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).WriteStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/WriteStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).WriteStorageObjects(ctx, req.(*WriteStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Nakama_serviceDesc = grpc.ServiceDesc{
	ServiceName: "nakama.api.Nakama",
	HandlerType: (*NakamaServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "AddFriends",
			Handler:    _Nakama_AddFriends_Handler,
		},
		{
			MethodName: "AuthenticateCustom",
			Handler:    _Nakama_AuthenticateCustom_Handler,
		},
		{
			MethodName: "AuthenticateDevice",
			Handler:    _Nakama_AuthenticateDevice_Handler,
		},
		{
			MethodName: "AuthenticateEmail",
			Handler:    _Nakama_AuthenticateEmail_Handler,
		},
		{
			MethodName: "AuthenticateFacebook",
			Handler:    _Nakama_AuthenticateFacebook_Handler,
		},
		{
			MethodName: "AuthenticateGameCenter",
			Handler:    _Nakama_AuthenticateGameCenter_Handler,
		},
		{
			MethodName: "AuthenticateGoogle",
			Handler:    _Nakama_AuthenticateGoogle_Handler,
		},
		{
			MethodName: "AuthenticateSteam",
			Handler:    _Nakama_AuthenticateSteam_Handler,
		},
		{
			MethodName: "BlockFriends",
			Handler:    _Nakama_BlockFriends_Handler,
		},
		{
			MethodName: "CreateGroup",
			Handler:    _Nakama_CreateGroup_Handler,
		},
		{
			MethodName: "DeleteFriends",
			Handler:    _Nakama_DeleteFriends_Handler,
		},
		{
			MethodName: "DeleteNotifications",
			Handler:    _Nakama_DeleteNotifications_Handler,
		},
		{
			MethodName: "DeleteStorageObjects",
			Handler:    _Nakama_DeleteStorageObjects_Handler,
		},
		{
			MethodName: "GetAccount",
			Handler:    _Nakama_GetAccount_Handler,
		},
		{
			MethodName: "GetUsers",
			Handler:    _Nakama_GetUsers_Handler,
		},
		{
			MethodName: "Healthcheck",
			Handler:    _Nakama_Healthcheck_Handler,
		},
		{
			MethodName: "ImportFacebookFriends",
			Handler:    _Nakama_ImportFacebookFriends_Handler,
		},
		{
			MethodName: "LinkCustom",
			Handler:    _Nakama_LinkCustom_Handler,
		},
		{
			MethodName: "LinkDevice",
			Handler:    _Nakama_LinkDevice_Handler,
		},
		{
			MethodName: "LinkEmail",
			Handler:    _Nakama_LinkEmail_Handler,
		},
		{
			MethodName: "LinkFacebook",
			Handler:    _Nakama_LinkFacebook_Handler,
		},
		{
			MethodName: "LinkGameCenter",
			Handler:    _Nakama_LinkGameCenter_Handler,
		},
		{
			MethodName: "LinkGoogle",
			Handler:    _Nakama_LinkGoogle_Handler,
		},
		{
			MethodName: "LinkSteam",
			Handler:    _Nakama_LinkSteam_Handler,
		},
		{
			MethodName: "ListFriends",
			Handler:    _Nakama_ListFriends_Handler,
		},
		{
			MethodName: "ListMatches",
			Handler:    _Nakama_ListMatches_Handler,
		},
		{
			MethodName: "ListNotifications",
			Handler:    _Nakama_ListNotifications_Handler,
		},
		{
			MethodName: "ListStorageObjects",
			Handler:    _Nakama_ListStorageObjects_Handler,
		},
		{
			MethodName: "ReadStorageObjects",
			Handler:    _Nakama_ReadStorageObjects_Handler,
		},
		{
			MethodName: "RpcFunc",
			Handler:    _Nakama_RpcFunc_Handler,
		},
		{
			MethodName: "UnlinkCustom",
			Handler:    _Nakama_UnlinkCustom_Handler,
		},
		{
			MethodName: "UnlinkDevice",
			Handler:    _Nakama_UnlinkDevice_Handler,
		},
		{
			MethodName: "UnlinkEmail",
			Handler:    _Nakama_UnlinkEmail_Handler,
		},
		{
			MethodName: "UnlinkFacebook",
			Handler:    _Nakama_UnlinkFacebook_Handler,
		},
		{
			MethodName: "UnlinkGameCenter",
			Handler:    _Nakama_UnlinkGameCenter_Handler,
		},
		{
			MethodName: "UnlinkGoogle",
			Handler:    _Nakama_UnlinkGoogle_Handler,
		},
		{
			MethodName: "UnlinkSteam",
			Handler:    _Nakama_UnlinkSteam_Handler,
		},
		{
			MethodName: "UpdateAccount",
			Handler:    _Nakama_UpdateAccount_Handler,
		},
		{
			MethodName: "WriteStorageObjects",
			Handler:    _Nakama_WriteStorageObjects_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api/api.proto",
}

func init() { proto.RegisterFile("api/api.proto", fileDescriptor0) }

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