// Code generated by protoc-gen-go. DO NOT EDIT.
// source: aether-core/backend/metrics/proto/metrics.proto

/*
Package metrics is a generated protocol buffer package.

It is generated from these files:
	aether-core/backend/metrics/proto/metrics.proto

It has these top-level messages:
	MetricsDeliveryResponse
	Machine
	Client
	Protocol
	Entity
	Connection
	NodeEntity
	Metrics
	Persistence
	Network
	Node
	Validation
	Frontend
	ConnState
	Objects
	OrchestrateConn
	DbState
*/
package metrics

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

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

type Entity_EntityType int32

const (
	Entity_UNKNOWN    Entity_EntityType = 0
	Entity_BOARD      Entity_EntityType = 1
	Entity_THREAD     Entity_EntityType = 2
	Entity_POST       Entity_EntityType = 3
	Entity_VOTE       Entity_EntityType = 4
	Entity_KEY        Entity_EntityType = 5
	Entity_TRUSTSTATE Entity_EntityType = 6
	Entity_ADDRESS    Entity_EntityType = 7
)

var Entity_EntityType_name = map[int32]string{
	0: "UNKNOWN",
	1: "BOARD",
	2: "THREAD",
	3: "POST",
	4: "VOTE",
	5: "KEY",
	6: "TRUSTSTATE",
	7: "ADDRESS",
}
var Entity_EntityType_value = map[string]int32{
	"UNKNOWN":    0,
	"BOARD":      1,
	"THREAD":     2,
	"POST":       3,
	"VOTE":       4,
	"KEY":        5,
	"TRUSTSTATE": 6,
	"ADDRESS":    7,
}

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

type Connection_Direction int32

const (
	Connection_INBOUND  Connection_Direction = 0
	Connection_OUTBOUND Connection_Direction = 1
)

var Connection_Direction_name = map[int32]string{
	0: "INBOUND",
	1: "OUTBOUND",
}
var Connection_Direction_value = map[string]int32{
	"INBOUND":  0,
	"OUTBOUND": 1,
}

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

// Empty responses
type MetricsDeliveryResponse struct {
}

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

// Machines refer to specific backends or frontends that are parts of the network. (Frontends connect to their backends only, but they can still send frontend metrics). The list of these machines are public and available on the network, so this message does not contain any information that is not available publicly. Frontends are not connected to backends and they send their metrics completely separately with a different identifier, so that no backend can be matched to the frontend(s) it serves.
type Machine struct {
	NodeId       string                `protobuf:"bytes,1,opt,name=nodeId" json:"nodeId,omitempty"`
	MetricsToken *Machine_MetricsToken `protobuf:"bytes,2,opt,name=metricsToken" json:"metricsToken,omitempty"`
	Protocols    []*Protocol           `protobuf:"bytes,3,rep,name=protocols" json:"protocols,omitempty"`
	Client       *Client               `protobuf:"bytes,4,opt,name=client" json:"client,omitempty"`
	Address      string                `protobuf:"bytes,5,opt,name=address" json:"address,omitempty"`
	Port         int32                 `protobuf:"varint,6,opt,name=port" json:"port,omitempty"`
}

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

func (m *Machine) GetNodeId() string {
	if m != nil {
		return m.NodeId
	}
	return ""
}

func (m *Machine) GetMetricsToken() *Machine_MetricsToken {
	if m != nil {
		return m.MetricsToken
	}
	return nil
}

func (m *Machine) GetProtocols() []*Protocol {
	if m != nil {
		return m.Protocols
	}
	return nil
}

func (m *Machine) GetClient() *Client {
	if m != nil {
		return m.Client
	}
	return nil
}

func (m *Machine) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *Machine) GetPort() int32 {
	if m != nil {
		return m.Port
	}
	return 0
}

type Machine_MetricsToken struct {
	Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
}

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

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

type Client struct {
	Name         string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	VersionMajor int32  `protobuf:"varint,2,opt,name=versionMajor" json:"versionMajor,omitempty"`
	VersionMinor int32  `protobuf:"varint,3,opt,name=versionMinor" json:"versionMinor,omitempty"`
	VersionPatch int32  `protobuf:"varint,4,opt,name=versionPatch" json:"versionPatch,omitempty"`
}

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

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

func (m *Client) GetVersionMajor() int32 {
	if m != nil {
		return m.VersionMajor
	}
	return 0
}

func (m *Client) GetVersionMinor() int32 {
	if m != nil {
		return m.VersionMinor
	}
	return 0
}

func (m *Client) GetVersionPatch() int32 {
	if m != nil {
		return m.VersionPatch
	}
	return 0
}

type Protocol struct {
	Name              string   `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	VersionMajor      int32    `protobuf:"varint,2,opt,name=versionMajor" json:"versionMajor,omitempty"`
	VersionMinor      int32    `protobuf:"varint,3,opt,name=versionMinor" json:"versionMinor,omitempty"`
	SupportedEntities []string `protobuf:"bytes,4,rep,name=supportedEntities" json:"supportedEntities,omitempty"`
}

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

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

func (m *Protocol) GetVersionMajor() int32 {
	if m != nil {
		return m.VersionMajor
	}
	return 0
}

func (m *Protocol) GetVersionMinor() int32 {
	if m != nil {
		return m.VersionMinor
	}
	return 0
}

func (m *Protocol) GetSupportedEntities() []string {
	if m != nil {
		return m.SupportedEntities
	}
	return nil
}

type Entity struct {
	EntityType         Entity_EntityType `protobuf:"varint,1,opt,name=entityType,enum=metrics.Entity_EntityType" json:"entityType,omitempty"`
	Fingerprint        string            `protobuf:"bytes,2,opt,name=fingerprint" json:"fingerprint,omitempty"`
	AddressLocation    string            `protobuf:"bytes,3,opt,name=addressLocation" json:"addressLocation,omitempty"`
	AddressSublocation string            `protobuf:"bytes,4,opt,name=addressSublocation" json:"addressSublocation,omitempty"`
	AddressPort        int32             `protobuf:"varint,5,opt,name=addressPort" json:"addressPort,omitempty"`
	LastUpdate         int64             `protobuf:"varint,6,opt,name=lastUpdate" json:"lastUpdate,omitempty"`
}

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

func (m *Entity) GetEntityType() Entity_EntityType {
	if m != nil {
		return m.EntityType
	}
	return Entity_UNKNOWN
}

func (m *Entity) GetFingerprint() string {
	if m != nil {
		return m.Fingerprint
	}
	return ""
}

func (m *Entity) GetAddressLocation() string {
	if m != nil {
		return m.AddressLocation
	}
	return ""
}

func (m *Entity) GetAddressSublocation() string {
	if m != nil {
		return m.AddressSublocation
	}
	return ""
}

func (m *Entity) GetAddressPort() int32 {
	if m != nil {
		return m.AddressPort
	}
	return 0
}

func (m *Entity) GetLastUpdate() int64 {
	if m != nil {
		return m.LastUpdate
	}
	return 0
}

type Connection struct {
	Timestamp  int64                `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"`
	Successful bool                 `protobuf:"varint,2,opt,name=successful" json:"successful,omitempty"`
	Direction  Connection_Direction `protobuf:"varint,3,opt,name=direction,enum=metrics.Connection_Direction" json:"direction,omitempty"`
	Address    string               `protobuf:"bytes,4,opt,name=address" json:"address,omitempty"`
	Port       int32                `protobuf:"varint,5,opt,name=port" json:"port,omitempty"`
}

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

func (m *Connection) GetTimestamp() int64 {
	if m != nil {
		return m.Timestamp
	}
	return 0
}

func (m *Connection) GetSuccessful() bool {
	if m != nil {
		return m.Successful
	}
	return false
}

func (m *Connection) GetDirection() Connection_Direction {
	if m != nil {
		return m.Direction
	}
	return Connection_INBOUND
}

func (m *Connection) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *Connection) GetPort() int32 {
	if m != nil {
		return m.Port
	}
	return 0
}

type NodeEntity struct {
	Fingerprint            string `protobuf:"bytes,1,opt,name=fingerprint" json:"fingerprint,omitempty"`
	BoardsLastCheckin      int64  `protobuf:"varint,2,opt,name=boardsLastCheckin" json:"boardsLastCheckin,omitempty"`
	ThreadsLastCheckin     int64  `protobuf:"varint,3,opt,name=threadsLastCheckin" json:"threadsLastCheckin,omitempty"`
	PostsLastCheckin       int64  `protobuf:"varint,4,opt,name=postsLastCheckin" json:"postsLastCheckin,omitempty"`
	VotesLastCheckin       int64  `protobuf:"varint,5,opt,name=votesLastCheckin" json:"votesLastCheckin,omitempty"`
	KeysLastCheckin        int64  `protobuf:"varint,6,opt,name=keysLastCheckin" json:"keysLastCheckin,omitempty"`
	TruststatesLastCheckin int64  `protobuf:"varint,7,opt,name=truststatesLastCheckin" json:"truststatesLastCheckin,omitempty"`
	AddressesLastCheckin   int64  `protobuf:"varint,8,opt,name=addressesLastCheckin" json:"addressesLastCheckin,omitempty"`
}

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

func (m *NodeEntity) GetFingerprint() string {
	if m != nil {
		return m.Fingerprint
	}
	return ""
}

func (m *NodeEntity) GetBoardsLastCheckin() int64 {
	if m != nil {
		return m.BoardsLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetThreadsLastCheckin() int64 {
	if m != nil {
		return m.ThreadsLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetPostsLastCheckin() int64 {
	if m != nil {
		return m.PostsLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetVotesLastCheckin() int64 {
	if m != nil {
		return m.VotesLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetKeysLastCheckin() int64 {
	if m != nil {
		return m.KeysLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetTruststatesLastCheckin() int64 {
	if m != nil {
		return m.TruststatesLastCheckin
	}
	return 0
}

func (m *NodeEntity) GetAddressesLastCheckin() int64 {
	if m != nil {
		return m.AddressesLastCheckin
	}
	return 0
}

type Metrics struct {
	Machine     *Machine     `protobuf:"bytes,1,opt,name=machine" json:"machine,omitempty"`
	Persistence *Persistence `protobuf:"bytes,2,opt,name=persistence" json:"persistence,omitempty"`
	Network     *Network     `protobuf:"bytes,3,opt,name=network" json:"network,omitempty"`
	Node        *Node        `protobuf:"bytes,4,opt,name=node" json:"node,omitempty"`
	Validation  *Validation  `protobuf:"bytes,5,opt,name=validation" json:"validation,omitempty"`
	Frontend    *Frontend    `protobuf:"bytes,6,opt,name=frontend" json:"frontend,omitempty"`
}

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

func (m *Metrics) GetMachine() *Machine {
	if m != nil {
		return m.Machine
	}
	return nil
}

func (m *Metrics) GetPersistence() *Persistence {
	if m != nil {
		return m.Persistence
	}
	return nil
}

func (m *Metrics) GetNetwork() *Network {
	if m != nil {
		return m.Network
	}
	return nil
}

func (m *Metrics) GetNode() *Node {
	if m != nil {
		return m.Node
	}
	return nil
}

func (m *Metrics) GetValidation() *Validation {
	if m != nil {
		return m.Validation
	}
	return nil
}

func (m *Metrics) GetFrontend() *Frontend {
	if m != nil {
		return m.Frontend
	}
	return nil
}

// Metrics related to the database state and caching.
type Persistence struct {
	CurrentDatabaseSize                int64         `protobuf:"varint,1,opt,name=currentDatabaseSize" json:"currentDatabaseSize,omitempty"`
	CurrentCachesSize                  int64         `protobuf:"varint,2,opt,name=currentCachesSize" json:"currentCachesSize,omitempty"`
	ArrivedEntitiesSinceLastMetricsDbg []*Entity     `protobuf:"bytes,3,rep,name=arrivedEntitiesSinceLastMetricsDbg" json:"arrivedEntitiesSinceLastMetricsDbg,omitempty"`
	Orphans                            []*Entity     `protobuf:"bytes,4,rep,name=orphans" json:"orphans,omitempty"`
	NodeInsertionsSinceLastMetricsDbg  []*NodeEntity `protobuf:"bytes,5,rep,name=nodeInsertionsSinceLastMetricsDbg" json:"nodeInsertionsSinceLastMetricsDbg,omitempty"`
}

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

func (m *Persistence) GetCurrentDatabaseSize() int64 {
	if m != nil {
		return m.CurrentDatabaseSize
	}
	return 0
}

func (m *Persistence) GetCurrentCachesSize() int64 {
	if m != nil {
		return m.CurrentCachesSize
	}
	return 0
}

func (m *Persistence) GetArrivedEntitiesSinceLastMetricsDbg() []*Entity {
	if m != nil {
		return m.ArrivedEntitiesSinceLastMetricsDbg
	}
	return nil
}

func (m *Persistence) GetOrphans() []*Entity {
	if m != nil {
		return m.Orphans
	}
	return nil
}

func (m *Persistence) GetNodeInsertionsSinceLastMetricsDbg() []*NodeEntity {
	if m != nil {
		return m.NodeInsertionsSinceLastMetricsDbg
	}
	return nil
}

// Metrics related to the network state.
type Network struct {
	InboundBandwidthConsumptionLast24H      int64         `protobuf:"varint,1,opt,name=inboundBandwidthConsumptionLast24h" json:"inboundBandwidthConsumptionLast24h,omitempty"`
	OutboundBandwidthConsumptionLast24H     int64         `protobuf:"varint,2,opt,name=outboundBandwidthConsumptionLast24h" json:"outboundBandwidthConsumptionLast24h,omitempty"`
	InboundBandwidthConsumptionLast7D       int64         `protobuf:"varint,3,opt,name=inboundBandwidthConsumptionLast7d" json:"inboundBandwidthConsumptionLast7d,omitempty"`
	OutboundBandwidthConsumptionLast7D      int64         `protobuf:"varint,4,opt,name=outboundBandwidthConsumptionLast7d" json:"outboundBandwidthConsumptionLast7d,omitempty"`
	InboundBandwidthConsumptionLast30D      int64         `protobuf:"varint,5,opt,name=inboundBandwidthConsumptionLast30d" json:"inboundBandwidthConsumptionLast30d,omitempty"`
	OutboundBandwidthConsumptionLast30D     int64         `protobuf:"varint,6,opt,name=outboundBandwidthConsumptionLast30d" json:"outboundBandwidthConsumptionLast30d,omitempty"`
	CurrentOnlineNodesCount                 int32         `protobuf:"varint,7,opt,name=currentOnlineNodesCount" json:"currentOnlineNodesCount,omitempty"`
	Last10InboundConnections                []*Connection `protobuf:"bytes,8,rep,name=last10InboundConnections" json:"last10InboundConnections,omitempty"`
	Last10OutboundConnections               []*Connection `protobuf:"bytes,9,rep,name=last10OutboundConnections" json:"last10OutboundConnections,omitempty"`
	Last10SuccessfulInboundConnections      []*Connection `protobuf:"bytes,10,rep,name=last10SuccessfulInboundConnections" json:"last10SuccessfulInboundConnections,omitempty"`
	Last10SuccessfulOutboundConnections     []*Connection `protobuf:"bytes,11,rep,name=last10SuccessfulOutboundConnections" json:"last10SuccessfulOutboundConnections,omitempty"`
	CurrentOnlineNodesDbg                   []*Machine    `protobuf:"bytes,12,rep,name=currentOnlineNodesDbg" json:"currentOnlineNodesDbg,omitempty"`
	Last100InboundConnectionsDbg            []*Connection `protobuf:"bytes,13,rep,name=last100InboundConnectionsDbg" json:"last100InboundConnectionsDbg,omitempty"`
	Last100OutboundConnectionsDbg           []*Connection `protobuf:"bytes,14,rep,name=last100OutboundConnectionsDbg" json:"last100OutboundConnectionsDbg,omitempty"`
	Last100SuccessfulInboundConnectionsDbg  []*Connection `protobuf:"bytes,15,rep,name=last100SuccessfulInboundConnectionsDbg" json:"last100SuccessfulInboundConnectionsDbg,omitempty"`
	Last100SuccessfulOutboundConnectionsDbg []*Connection `protobuf:"bytes,16,rep,name=last100SuccessfulOutboundConnectionsDbg" json:"last100SuccessfulOutboundConnectionsDbg,omitempty"`
}

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

func (m *Network) GetInboundBandwidthConsumptionLast24H() int64 {
	if m != nil {
		return m.InboundBandwidthConsumptionLast24H
	}
	return 0
}

func (m *Network) GetOutboundBandwidthConsumptionLast24H() int64 {
	if m != nil {
		return m.OutboundBandwidthConsumptionLast24H
	}
	return 0
}

func (m *Network) GetInboundBandwidthConsumptionLast7D() int64 {
	if m != nil {
		return m.InboundBandwidthConsumptionLast7D
	}
	return 0
}

func (m *Network) GetOutboundBandwidthConsumptionLast7D() int64 {
	if m != nil {
		return m.OutboundBandwidthConsumptionLast7D
	}
	return 0
}

func (m *Network) GetInboundBandwidthConsumptionLast30D() int64 {
	if m != nil {
		return m.InboundBandwidthConsumptionLast30D
	}
	return 0
}

func (m *Network) GetOutboundBandwidthConsumptionLast30D() int64 {
	if m != nil {
		return m.OutboundBandwidthConsumptionLast30D
	}
	return 0
}

func (m *Network) GetCurrentOnlineNodesCount() int32 {
	if m != nil {
		return m.CurrentOnlineNodesCount
	}
	return 0
}

func (m *Network) GetLast10InboundConnections() []*Connection {
	if m != nil {
		return m.Last10InboundConnections
	}
	return nil
}

func (m *Network) GetLast10OutboundConnections() []*Connection {
	if m != nil {
		return m.Last10OutboundConnections
	}
	return nil
}

func (m *Network) GetLast10SuccessfulInboundConnections() []*Connection {
	if m != nil {
		return m.Last10SuccessfulInboundConnections
	}
	return nil
}

func (m *Network) GetLast10SuccessfulOutboundConnections() []*Connection {
	if m != nil {
		return m.Last10SuccessfulOutboundConnections
	}
	return nil
}

func (m *Network) GetCurrentOnlineNodesDbg() []*Machine {
	if m != nil {
		return m.CurrentOnlineNodesDbg
	}
	return nil
}

func (m *Network) GetLast100InboundConnectionsDbg() []*Connection {
	if m != nil {
		return m.Last100InboundConnectionsDbg
	}
	return nil
}

func (m *Network) GetLast100OutboundConnectionsDbg() []*Connection {
	if m != nil {
		return m.Last100OutboundConnectionsDbg
	}
	return nil
}

func (m *Network) GetLast100SuccessfulInboundConnectionsDbg() []*Connection {
	if m != nil {
		return m.Last100SuccessfulInboundConnectionsDbg
	}
	return nil
}

func (m *Network) GetLast100SuccessfulOutboundConnectionsDbg() []*Connection {
	if m != nil {
		return m.Last100SuccessfulOutboundConnectionsDbg
	}
	return nil
}

// Metrics related to local node health.
type Node struct {
	SystemUptime        int64 `protobuf:"varint,1,opt,name=systemUptime" json:"systemUptime,omitempty"`
	NodeIsShuttingDown  bool  `protobuf:"varint,2,opt,name=nodeIsShuttingDown" json:"nodeIsShuttingDown,omitempty"`
	NodeIsStartingUp    bool  `protobuf:"varint,3,opt,name=nodeIsStartingUp" json:"nodeIsStartingUp,omitempty"`
	NodeIsTrackingHead  bool  `protobuf:"varint,4,opt,name=nodeIsTrackingHead" json:"nodeIsTrackingHead,omitempty"`
	NodeIsBehindARouter bool  `protobuf:"varint,5,opt,name=nodeIsBehindARouter" json:"nodeIsBehindARouter,omitempty"`
	LoadAvg1            int32 `protobuf:"varint,6,opt,name=loadAvg1" json:"loadAvg1,omitempty"`
	LoadAvg5            int32 `protobuf:"varint,7,opt,name=loadAvg5" json:"loadAvg5,omitempty"`
	LoadAvg15           int32 `protobuf:"varint,8,opt,name=loadAvg15" json:"loadAvg15,omitempty"`
}

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

func (m *Node) GetSystemUptime() int64 {
	if m != nil {
		return m.SystemUptime
	}
	return 0
}

func (m *Node) GetNodeIsShuttingDown() bool {
	if m != nil {
		return m.NodeIsShuttingDown
	}
	return false
}

func (m *Node) GetNodeIsStartingUp() bool {
	if m != nil {
		return m.NodeIsStartingUp
	}
	return false
}

func (m *Node) GetNodeIsTrackingHead() bool {
	if m != nil {
		return m.NodeIsTrackingHead
	}
	return false
}

func (m *Node) GetNodeIsBehindARouter() bool {
	if m != nil {
		return m.NodeIsBehindARouter
	}
	return false
}

func (m *Node) GetLoadAvg1() int32 {
	if m != nil {
		return m.LoadAvg1
	}
	return 0
}

func (m *Node) GetLoadAvg5() int32 {
	if m != nil {
		return m.LoadAvg5
	}
	return 0
}

func (m *Node) GetLoadAvg15() int32 {
	if m != nil {
		return m.LoadAvg15
	}
	return 0
}

type Validation struct {
	Failures []*Entity `protobuf:"bytes,1,rep,name=failures" json:"failures,omitempty"`
}

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

func (m *Validation) GetFailures() []*Entity {
	if m != nil {
		return m.Failures
	}
	return nil
}

// Product metrics. TBD.
type Frontend struct {
}

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

type ConnState struct {
	Machine    *Machine         `protobuf:"bytes,1,opt,name=machine" json:"machine,omitempty"`
	Node       *Node            `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"`
	Connection *OrchestrateConn `protobuf:"bytes,3,opt,name=connection" json:"connection,omitempty"`
}

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

func (m *ConnState) GetMachine() *Machine {
	if m != nil {
		return m.Machine
	}
	return nil
}

func (m *ConnState) GetNode() *Node {
	if m != nil {
		return m.Node
	}
	return nil
}

func (m *ConnState) GetConnection() *OrchestrateConn {
	if m != nil {
		return m.Connection
	}
	return nil
}

type Objects struct {
	Boards      int64 `protobuf:"varint,1,opt,name=Boards" json:"Boards,omitempty"`
	Threads     int64 `protobuf:"varint,2,opt,name=Threads" json:"Threads,omitempty"`
	Posts       int64 `protobuf:"varint,3,opt,name=Posts" json:"Posts,omitempty"`
	Votes       int64 `protobuf:"varint,4,opt,name=Votes" json:"Votes,omitempty"`
	Keys        int64 `protobuf:"varint,5,opt,name=Keys" json:"Keys,omitempty"`
	Truststates int64 `protobuf:"varint,6,opt,name=Truststates" json:"Truststates,omitempty"`
	Addresses   int64 `protobuf:"varint,7,opt,name=Addresses" json:"Addresses,omitempty"`
}

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

func (m *Objects) GetBoards() int64 {
	if m != nil {
		return m.Boards
	}
	return 0
}

func (m *Objects) GetThreads() int64 {
	if m != nil {
		return m.Threads
	}
	return 0
}

func (m *Objects) GetPosts() int64 {
	if m != nil {
		return m.Posts
	}
	return 0
}

func (m *Objects) GetVotes() int64 {
	if m != nil {
		return m.Votes
	}
	return 0
}

func (m *Objects) GetKeys() int64 {
	if m != nil {
		return m.Keys
	}
	return 0
}

func (m *Objects) GetTruststates() int64 {
	if m != nil {
		return m.Truststates
	}
	return 0
}

func (m *Objects) GetAddresses() int64 {
	if m != nil {
		return m.Addresses
	}
	return 0
}

type OrchestrateConn struct {
	State           bool     `protobuf:"varint,1,opt,name=State" json:"State,omitempty"`
	ToIp            string   `protobuf:"bytes,2,opt,name=ToIp" json:"ToIp,omitempty"`
	ToPort          int32    `protobuf:"varint,3,opt,name=ToPort" json:"ToPort,omitempty"`
	ToNodeName      string   `protobuf:"bytes,4,opt,name=ToNodeName" json:"ToNodeName,omitempty"`
	Timestamp       int64    `protobuf:"varint,5,opt,name=Timestamp" json:"Timestamp,omitempty"`
	Objects         *Objects `protobuf:"bytes,6,opt,name=objects" json:"objects,omitempty"`
	FirstSync       bool     `protobuf:"varint,7,opt,name=FirstSync" json:"FirstSync,omitempty"`
	CurrentDbSizeMb int32    `protobuf:"varint,8,opt,name=CurrentDbSizeMb" json:"CurrentDbSizeMb,omitempty"`
}

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

func (m *OrchestrateConn) GetState() bool {
	if m != nil {
		return m.State
	}
	return false
}

func (m *OrchestrateConn) GetToIp() string {
	if m != nil {
		return m.ToIp
	}
	return ""
}

func (m *OrchestrateConn) GetToPort() int32 {
	if m != nil {
		return m.ToPort
	}
	return 0
}

func (m *OrchestrateConn) GetToNodeName() string {
	if m != nil {
		return m.ToNodeName
	}
	return ""
}

func (m *OrchestrateConn) GetTimestamp() int64 {
	if m != nil {
		return m.Timestamp
	}
	return 0
}

func (m *OrchestrateConn) GetObjects() *Objects {
	if m != nil {
		return m.Objects
	}
	return nil
}

func (m *OrchestrateConn) GetFirstSync() bool {
	if m != nil {
		return m.FirstSync
	}
	return false
}

func (m *OrchestrateConn) GetCurrentDbSizeMb() int32 {
	if m != nil {
		return m.CurrentDbSizeMb
	}
	return 0
}

type DbState struct {
	SwarmNodeName    string `protobuf:"bytes,1,opt,name=SwarmNodeName" json:"SwarmNodeName,omitempty"`
	Timestamp        int64  `protobuf:"varint,2,opt,name=Timestamp" json:"Timestamp,omitempty"`
	Time             string `protobuf:"bytes,10,opt,name=Time" json:"Time,omitempty"`
	BoardsCount      int32  `protobuf:"varint,3,opt,name=BoardsCount" json:"BoardsCount,omitempty"`
	ThreadsCount     int32  `protobuf:"varint,4,opt,name=ThreadsCount" json:"ThreadsCount,omitempty"`
	PostsCount       int32  `protobuf:"varint,5,opt,name=PostsCount" json:"PostsCount,omitempty"`
	VotesCount       int32  `protobuf:"varint,6,opt,name=VotesCount" json:"VotesCount,omitempty"`
	KeysCount        int32  `protobuf:"varint,7,opt,name=KeysCount" json:"KeysCount,omitempty"`
	TruststatesCount int32  `protobuf:"varint,8,opt,name=TruststatesCount" json:"TruststatesCount,omitempty"`
	AddressesCount   int32  `protobuf:"varint,9,opt,name=AddressesCount" json:"AddressesCount,omitempty"`
}

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

func (m *DbState) GetSwarmNodeName() string {
	if m != nil {
		return m.SwarmNodeName
	}
	return ""
}

func (m *DbState) GetTimestamp() int64 {
	if m != nil {
		return m.Timestamp
	}
	return 0
}

func (m *DbState) GetTime() string {
	if m != nil {
		return m.Time
	}
	return ""
}

func (m *DbState) GetBoardsCount() int32 {
	if m != nil {
		return m.BoardsCount
	}
	return 0
}

func (m *DbState) GetThreadsCount() int32 {
	if m != nil {
		return m.ThreadsCount
	}
	return 0
}

func (m *DbState) GetPostsCount() int32 {
	if m != nil {
		return m.PostsCount
	}
	return 0
}

func (m *DbState) GetVotesCount() int32 {
	if m != nil {
		return m.VotesCount
	}
	return 0
}

func (m *DbState) GetKeysCount() int32 {
	if m != nil {
		return m.KeysCount
	}
	return 0
}

func (m *DbState) GetTruststatesCount() int32 {
	if m != nil {
		return m.TruststatesCount
	}
	return 0
}

func (m *DbState) GetAddressesCount() int32 {
	if m != nil {
		return m.AddressesCount
	}
	return 0
}

func init() {
	proto.RegisterType((*MetricsDeliveryResponse)(nil), "metrics.MetricsDeliveryResponse")
	proto.RegisterType((*Machine)(nil), "metrics.Machine")
	proto.RegisterType((*Machine_MetricsToken)(nil), "metrics.Machine.MetricsToken")
	proto.RegisterType((*Client)(nil), "metrics.Client")
	proto.RegisterType((*Protocol)(nil), "metrics.Protocol")
	proto.RegisterType((*Entity)(nil), "metrics.Entity")
	proto.RegisterType((*Connection)(nil), "metrics.Connection")
	proto.RegisterType((*NodeEntity)(nil), "metrics.NodeEntity")
	proto.RegisterType((*Metrics)(nil), "metrics.Metrics")
	proto.RegisterType((*Persistence)(nil), "metrics.Persistence")
	proto.RegisterType((*Network)(nil), "metrics.Network")
	proto.RegisterType((*Node)(nil), "metrics.Node")
	proto.RegisterType((*Validation)(nil), "metrics.Validation")
	proto.RegisterType((*Frontend)(nil), "metrics.Frontend")
	proto.RegisterType((*ConnState)(nil), "metrics.ConnState")
	proto.RegisterType((*Objects)(nil), "metrics.Objects")
	proto.RegisterType((*OrchestrateConn)(nil), "metrics.OrchestrateConn")
	proto.RegisterType((*DbState)(nil), "metrics.DbState")
	proto.RegisterEnum("metrics.Entity_EntityType", Entity_EntityType_name, Entity_EntityType_value)
	proto.RegisterEnum("metrics.Connection_Direction", Connection_Direction_name, Connection_Direction_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 MetricsService service

type MetricsServiceClient interface {
	RequestMetricsToken(ctx context.Context, in *Machine, opts ...grpc.CallOption) (*Machine_MetricsToken, error)
	UploadMetrics(ctx context.Context, in *Metrics, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error)
	SendConnectionState(ctx context.Context, in *ConnState, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error)
	SendDbState(ctx context.Context, in *DbState, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error)
}

type metricsServiceClient struct {
	cc *grpc.ClientConn
}

func NewMetricsServiceClient(cc *grpc.ClientConn) MetricsServiceClient {
	return &metricsServiceClient{cc}
}

func (c *metricsServiceClient) RequestMetricsToken(ctx context.Context, in *Machine, opts ...grpc.CallOption) (*Machine_MetricsToken, error) {
	out := new(Machine_MetricsToken)
	err := grpc.Invoke(ctx, "/metrics.MetricsService/RequestMetricsToken", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *metricsServiceClient) UploadMetrics(ctx context.Context, in *Metrics, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error) {
	out := new(MetricsDeliveryResponse)
	err := grpc.Invoke(ctx, "/metrics.MetricsService/UploadMetrics", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *metricsServiceClient) SendConnectionState(ctx context.Context, in *ConnState, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error) {
	out := new(MetricsDeliveryResponse)
	err := grpc.Invoke(ctx, "/metrics.MetricsService/SendConnectionState", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *metricsServiceClient) SendDbState(ctx context.Context, in *DbState, opts ...grpc.CallOption) (*MetricsDeliveryResponse, error) {
	out := new(MetricsDeliveryResponse)
	err := grpc.Invoke(ctx, "/metrics.MetricsService/SendDbState", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for MetricsService service

type MetricsServiceServer interface {
	RequestMetricsToken(context.Context, *Machine) (*Machine_MetricsToken, error)
	UploadMetrics(context.Context, *Metrics) (*MetricsDeliveryResponse, error)
	SendConnectionState(context.Context, *ConnState) (*MetricsDeliveryResponse, error)
	SendDbState(context.Context, *DbState) (*MetricsDeliveryResponse, error)
}

func RegisterMetricsServiceServer(s *grpc.Server, srv MetricsServiceServer) {
	s.RegisterService(&_MetricsService_serviceDesc, srv)
}

func _MetricsService_RequestMetricsToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Machine)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MetricsServiceServer).RequestMetricsToken(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/metrics.MetricsService/RequestMetricsToken",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MetricsServiceServer).RequestMetricsToken(ctx, req.(*Machine))
	}
	return interceptor(ctx, in, info, handler)
}

func _MetricsService_UploadMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Metrics)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MetricsServiceServer).UploadMetrics(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/metrics.MetricsService/UploadMetrics",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MetricsServiceServer).UploadMetrics(ctx, req.(*Metrics))
	}
	return interceptor(ctx, in, info, handler)
}

func _MetricsService_SendConnectionState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ConnState)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MetricsServiceServer).SendConnectionState(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/metrics.MetricsService/SendConnectionState",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MetricsServiceServer).SendConnectionState(ctx, req.(*ConnState))
	}
	return interceptor(ctx, in, info, handler)
}

func _MetricsService_SendDbState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DbState)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MetricsServiceServer).SendDbState(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/metrics.MetricsService/SendDbState",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MetricsServiceServer).SendDbState(ctx, req.(*DbState))
	}
	return interceptor(ctx, in, info, handler)
}

var _MetricsService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "metrics.MetricsService",
	HandlerType: (*MetricsServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "RequestMetricsToken",
			Handler:    _MetricsService_RequestMetricsToken_Handler,
		},
		{
			MethodName: "UploadMetrics",
			Handler:    _MetricsService_UploadMetrics_Handler,
		},
		{
			MethodName: "SendConnectionState",
			Handler:    _MetricsService_SendConnectionState_Handler,
		},
		{
			MethodName: "SendDbState",
			Handler:    _MetricsService_SendDbState_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "aether-core/aether/backend/metrics/proto/metrics.proto",
}

func init() {
	proto.RegisterFile("aether-core/aether/backend/metrics/proto/metrics.proto", fileDescriptor0)
}

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