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

/*
Package pb is a generated protocol buffer package.

It is generated from these files:
	gleam.proto

It has these top-level messages:
	ComputeRequest
	ComputeResource
	DataResource
	Location
	Allocation
	AllocationResult
	Heartbeat
	Empty
	DataLocation
	FlowExecutionStatus
	FileResourceRequest
	FileResourceResponse
	ExecutionRequest
	ExecutionResponse
	ExecutionStat
	InstructionStat
	ControlMessage
	DeleteDatasetShardRequest
	DeleteDatasetShardResponse
	CleanupRequest
	CleanupResponse
	WriteRequest
	ReadRequest
	InstructionSet
	Instruction
	OrderBy
	DatasetShard
	DatasetShardLocation
*/
package pb

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

import (
	context "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 ComputeRequest struct {
	DataCenter       string             `protobuf:"bytes,1,opt,name=data_center,json=dataCenter" json:"data_center,omitempty"`
	ComputeResources []*ComputeResource `protobuf:"bytes,2,rep,name=compute_resources,json=computeResources" json:"compute_resources,omitempty"`
	Username         string             `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"`
	Hostname         string             `protobuf:"bytes,4,opt,name=hostname" json:"hostname,omitempty"`
	FlowHashCode     uint32             `protobuf:"varint,5,opt,name=flowHashCode" json:"flowHashCode,omitempty"`
}

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

func (m *ComputeRequest) GetDataCenter() string {
	if m != nil {
		return m.DataCenter
	}
	return ""
}

func (m *ComputeRequest) GetComputeResources() []*ComputeResource {
	if m != nil {
		return m.ComputeResources
	}
	return nil
}

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

func (m *ComputeRequest) GetHostname() string {
	if m != nil {
		return m.Hostname
	}
	return ""
}

func (m *ComputeRequest) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

type ComputeResource struct {
	CpuCount int32 `protobuf:"varint,1,opt,name=cpu_count,json=cpuCount" json:"cpu_count,omitempty"`
	CpuLevel int32 `protobuf:"varint,2,opt,name=cpu_level,json=cpuLevel" json:"cpu_level,omitempty"`
	GpuCount int32 `protobuf:"varint,3,opt,name=gpu_count,json=gpuCount" json:"gpu_count,omitempty"`
	GpuLevel int32 `protobuf:"varint,4,opt,name=gpu_level,json=gpuLevel" json:"gpu_level,omitempty"`
	MemoryMb int64 `protobuf:"varint,5,opt,name=memory_mb,json=memoryMb" json:"memory_mb,omitempty"`
	DiskMb   int64 `protobuf:"varint,6,opt,name=disk_mb,json=diskMb" json:"disk_mb,omitempty"`
}

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

func (m *ComputeResource) GetCpuCount() int32 {
	if m != nil {
		return m.CpuCount
	}
	return 0
}

func (m *ComputeResource) GetCpuLevel() int32 {
	if m != nil {
		return m.CpuLevel
	}
	return 0
}

func (m *ComputeResource) GetGpuCount() int32 {
	if m != nil {
		return m.GpuCount
	}
	return 0
}

func (m *ComputeResource) GetGpuLevel() int32 {
	if m != nil {
		return m.GpuLevel
	}
	return 0
}

func (m *ComputeResource) GetMemoryMb() int64 {
	if m != nil {
		return m.MemoryMb
	}
	return 0
}

func (m *ComputeResource) GetDiskMb() int64 {
	if m != nil {
		return m.DiskMb
	}
	return 0
}

type DataResource struct {
	Location *Location `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"`
	Size     int64     `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
}

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

func (m *DataResource) GetLocation() *Location {
	if m != nil {
		return m.Location
	}
	return nil
}

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

type Location struct {
	DataCenter string `protobuf:"bytes,1,opt,name=data_center,json=dataCenter" json:"data_center,omitempty"`
	Rack       string `protobuf:"bytes,2,opt,name=rack" json:"rack,omitempty"`
	Server     string `protobuf:"bytes,3,opt,name=server" json:"server,omitempty"`
	Port       int32  `protobuf:"varint,4,opt,name=port" json:"port,omitempty"`
}

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

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

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

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

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

type Allocation struct {
	Location  *Location        `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"`
	Allocated *ComputeResource `protobuf:"bytes,2,opt,name=allocated" json:"allocated,omitempty"`
}

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

func (m *Allocation) GetLocation() *Location {
	if m != nil {
		return m.Location
	}
	return nil
}

func (m *Allocation) GetAllocated() *ComputeResource {
	if m != nil {
		return m.Allocated
	}
	return nil
}

type AllocationResult struct {
	Allocations []*Allocation `protobuf:"bytes,1,rep,name=allocations" json:"allocations,omitempty"`
}

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

func (m *AllocationResult) GetAllocations() []*Allocation {
	if m != nil {
		return m.Allocations
	}
	return nil
}

// ////////////////////////////////////////////////
type Heartbeat struct {
	Location  *Location        `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"`
	Resource  *ComputeResource `protobuf:"bytes,2,opt,name=resource" json:"resource,omitempty"`
	Allocated *ComputeResource `protobuf:"bytes,3,opt,name=allocated" json:"allocated,omitempty"`
}

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

func (m *Heartbeat) GetLocation() *Location {
	if m != nil {
		return m.Location
	}
	return nil
}

func (m *Heartbeat) GetResource() *ComputeResource {
	if m != nil {
		return m.Resource
	}
	return nil
}

func (m *Heartbeat) GetAllocated() *ComputeResource {
	if m != nil {
		return m.Allocated
	}
	return nil
}

type Empty struct {
}

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

// ////////////////////////////////////////////////
type DataLocation struct {
	Name     string    `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Location *Location `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"`
	OnDisk   bool      `protobuf:"varint,3,opt,name=onDisk" json:"onDisk,omitempty"`
}

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

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

func (m *DataLocation) GetLocation() *Location {
	if m != nil {
		return m.Location
	}
	return nil
}

func (m *DataLocation) GetOnDisk() bool {
	if m != nil {
		return m.OnDisk
	}
	return false
}

// ////////////////////////////////////////////////
type FlowExecutionStatus struct {
	StepGroups    []*FlowExecutionStatus_StepGroup    `protobuf:"bytes,1,rep,name=stepGroups" json:"stepGroups,omitempty"`
	TaskGroups    []*FlowExecutionStatus_TaskGroup    `protobuf:"bytes,2,rep,name=taskGroups" json:"taskGroups,omitempty"`
	Datasets      []*FlowExecutionStatus_Dataset      `protobuf:"bytes,3,rep,name=datasets" json:"datasets,omitempty"`
	DatasetShards []*FlowExecutionStatus_DatasetShard `protobuf:"bytes,4,rep,name=datasetShards" json:"datasetShards,omitempty"`
	Tasks         []*FlowExecutionStatus_Task         `protobuf:"bytes,5,rep,name=tasks" json:"tasks,omitempty"`
	Steps         []*FlowExecutionStatus_Step         `protobuf:"bytes,6,rep,name=steps" json:"steps,omitempty"`
	Id            uint32                              `protobuf:"varint,7,opt,name=id" json:"id,omitempty"`
	Driver        *FlowExecutionStatus_DriverInfo     `protobuf:"bytes,8,opt,name=driver" json:"driver,omitempty"`
	Error         string                              `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"`
}

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

func (m *FlowExecutionStatus) GetStepGroups() []*FlowExecutionStatus_StepGroup {
	if m != nil {
		return m.StepGroups
	}
	return nil
}

func (m *FlowExecutionStatus) GetTaskGroups() []*FlowExecutionStatus_TaskGroup {
	if m != nil {
		return m.TaskGroups
	}
	return nil
}

func (m *FlowExecutionStatus) GetDatasets() []*FlowExecutionStatus_Dataset {
	if m != nil {
		return m.Datasets
	}
	return nil
}

func (m *FlowExecutionStatus) GetDatasetShards() []*FlowExecutionStatus_DatasetShard {
	if m != nil {
		return m.DatasetShards
	}
	return nil
}

func (m *FlowExecutionStatus) GetTasks() []*FlowExecutionStatus_Task {
	if m != nil {
		return m.Tasks
	}
	return nil
}

func (m *FlowExecutionStatus) GetSteps() []*FlowExecutionStatus_Step {
	if m != nil {
		return m.Steps
	}
	return nil
}

func (m *FlowExecutionStatus) GetId() uint32 {
	if m != nil {
		return m.Id
	}
	return 0
}

func (m *FlowExecutionStatus) GetDriver() *FlowExecutionStatus_DriverInfo {
	if m != nil {
		return m.Driver
	}
	return nil
}

func (m *FlowExecutionStatus) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type FlowExecutionStatus_Task struct {
	StepId int32 `protobuf:"varint,1,opt,name=stepId" json:"stepId,omitempty"`
	Id     int32 `protobuf:"varint,2,opt,name=id" json:"id,omitempty"`
}

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

func (m *FlowExecutionStatus_Task) GetStepId() int32 {
	if m != nil {
		return m.StepId
	}
	return 0
}

func (m *FlowExecutionStatus_Task) GetId() int32 {
	if m != nil {
		return m.Id
	}
	return 0
}

type FlowExecutionStatus_Step struct {
	Id              int32   `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	Name            string  `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
	ParentIds       []int32 `protobuf:"varint,3,rep,packed,name=parentIds" json:"parentIds,omitempty"`
	TaskIds         []int32 `protobuf:"varint,4,rep,packed,name=taskIds" json:"taskIds,omitempty"`
	InputDatasetId  []int32 `protobuf:"varint,5,rep,packed,name=inputDatasetId" json:"inputDatasetId,omitempty"`
	OutputDatasetId int32   `protobuf:"varint,6,opt,name=outputDatasetId" json:"outputDatasetId,omitempty"`
	Description     string  `protobuf:"bytes,7,opt,name=description" json:"description,omitempty"`
}

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

func (m *FlowExecutionStatus_Step) GetId() int32 {
	if m != nil {
		return m.Id
	}
	return 0
}

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

func (m *FlowExecutionStatus_Step) GetParentIds() []int32 {
	if m != nil {
		return m.ParentIds
	}
	return nil
}

func (m *FlowExecutionStatus_Step) GetTaskIds() []int32 {
	if m != nil {
		return m.TaskIds
	}
	return nil
}

func (m *FlowExecutionStatus_Step) GetInputDatasetId() []int32 {
	if m != nil {
		return m.InputDatasetId
	}
	return nil
}

func (m *FlowExecutionStatus_Step) GetOutputDatasetId() int32 {
	if m != nil {
		return m.OutputDatasetId
	}
	return 0
}

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

type FlowExecutionStatus_Dataset struct {
	Id             int32   `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	StepId         int32   `protobuf:"varint,2,opt,name=stepId" json:"stepId,omitempty"`
	ReadingStepIds []int32 `protobuf:"varint,3,rep,packed,name=readingStepIds" json:"readingStepIds,omitempty"`
}

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

func (m *FlowExecutionStatus_Dataset) GetId() int32 {
	if m != nil {
		return m.Id
	}
	return 0
}

func (m *FlowExecutionStatus_Dataset) GetStepId() int32 {
	if m != nil {
		return m.StepId
	}
	return 0
}

func (m *FlowExecutionStatus_Dataset) GetReadingStepIds() []int32 {
	if m != nil {
		return m.ReadingStepIds
	}
	return nil
}

type FlowExecutionStatus_DatasetShard struct {
	DatasetId int32 `protobuf:"varint,1,opt,name=datasetId" json:"datasetId,omitempty"`
	Id        int32 `protobuf:"varint,2,opt,name=id" json:"id,omitempty"`
}

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

func (m *FlowExecutionStatus_DatasetShard) GetDatasetId() int32 {
	if m != nil {
		return m.DatasetId
	}
	return 0
}

func (m *FlowExecutionStatus_DatasetShard) GetId() int32 {
	if m != nil {
		return m.Id
	}
	return 0
}

type FlowExecutionStatus_StepGroup struct {
	StepIds   []int32 `protobuf:"varint,1,rep,packed,name=stepIds" json:"stepIds,omitempty"`
	ParentIds []int32 `protobuf:"varint,2,rep,packed,name=parentIds" json:"parentIds,omitempty"`
}

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

func (m *FlowExecutionStatus_StepGroup) GetStepIds() []int32 {
	if m != nil {
		return m.StepIds
	}
	return nil
}

func (m *FlowExecutionStatus_StepGroup) GetParentIds() []int32 {
	if m != nil {
		return m.ParentIds
	}
	return nil
}

type FlowExecutionStatus_TaskGroup struct {
	StepIds    []int32                                    `protobuf:"varint,1,rep,packed,name=stepIds" json:"stepIds,omitempty"`
	TaskIds    []int32                                    `protobuf:"varint,2,rep,packed,name=taskIds" json:"taskIds,omitempty"`
	Request    *ExecutionRequest                          `protobuf:"bytes,3,opt,name=request" json:"request,omitempty"`
	Allocation *Allocation                                `protobuf:"bytes,4,opt,name=allocation" json:"allocation,omitempty"`
	Executions []*FlowExecutionStatus_TaskGroup_Execution `protobuf:"bytes,5,rep,name=executions" json:"executions,omitempty"`
}

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

func (m *FlowExecutionStatus_TaskGroup) GetStepIds() []int32 {
	if m != nil {
		return m.StepIds
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup) GetTaskIds() []int32 {
	if m != nil {
		return m.TaskIds
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup) GetRequest() *ExecutionRequest {
	if m != nil {
		return m.Request
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup) GetAllocation() *Allocation {
	if m != nil {
		return m.Allocation
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup) GetExecutions() []*FlowExecutionStatus_TaskGroup_Execution {
	if m != nil {
		return m.Executions
	}
	return nil
}

type FlowExecutionStatus_TaskGroup_Execution struct {
	StartTime     int64          `protobuf:"varint,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
	StopTime      int64          `protobuf:"varint,2,opt,name=stop_time,json=stopTime" json:"stop_time,omitempty"`
	SystemTime    float64        `protobuf:"fixed64,3,opt,name=system_time,json=systemTime" json:"system_time,omitempty"`
	UserTime      float64        `protobuf:"fixed64,4,opt,name=user_time,json=userTime" json:"user_time,omitempty"`
	Error         []byte         `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
	OutputHash    []byte         `protobuf:"bytes,6,opt,name=output_hash,json=outputHash,proto3" json:"output_hash,omitempty"`
	ExecutionStat *ExecutionStat `protobuf:"bytes,7,opt,name=executionStat" json:"executionStat,omitempty"`
}

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

func (m *FlowExecutionStatus_TaskGroup_Execution) GetStartTime() int64 {
	if m != nil {
		return m.StartTime
	}
	return 0
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetStopTime() int64 {
	if m != nil {
		return m.StopTime
	}
	return 0
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetSystemTime() float64 {
	if m != nil {
		return m.SystemTime
	}
	return 0
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetUserTime() float64 {
	if m != nil {
		return m.UserTime
	}
	return 0
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetError() []byte {
	if m != nil {
		return m.Error
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetOutputHash() []byte {
	if m != nil {
		return m.OutputHash
	}
	return nil
}

func (m *FlowExecutionStatus_TaskGroup_Execution) GetExecutionStat() *ExecutionStat {
	if m != nil {
		return m.ExecutionStat
	}
	return nil
}

type FlowExecutionStatus_DriverInfo struct {
	Username       string `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"`
	Hostname       string `protobuf:"bytes,2,opt,name=hostname" json:"hostname,omitempty"`
	Executable     string `protobuf:"bytes,3,opt,name=executable" json:"executable,omitempty"`
	ExecutableHash string `protobuf:"bytes,4,opt,name=executable_hash,json=executableHash" json:"executable_hash,omitempty"`
	StartTime      int64  `protobuf:"varint,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
	StopTime       int64  `protobuf:"varint,6,opt,name=stop_time,json=stopTime" json:"stop_time,omitempty"`
	Name           string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"`
}

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

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

func (m *FlowExecutionStatus_DriverInfo) GetHostname() string {
	if m != nil {
		return m.Hostname
	}
	return ""
}

func (m *FlowExecutionStatus_DriverInfo) GetExecutable() string {
	if m != nil {
		return m.Executable
	}
	return ""
}

func (m *FlowExecutionStatus_DriverInfo) GetExecutableHash() string {
	if m != nil {
		return m.ExecutableHash
	}
	return ""
}

func (m *FlowExecutionStatus_DriverInfo) GetStartTime() int64 {
	if m != nil {
		return m.StartTime
	}
	return 0
}

func (m *FlowExecutionStatus_DriverInfo) GetStopTime() int64 {
	if m != nil {
		return m.StopTime
	}
	return 0
}

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

type FileResourceRequest struct {
	Name         string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Dir          string `protobuf:"bytes,2,opt,name=dir" json:"dir,omitempty"`
	Hash         uint32 `protobuf:"varint,3,opt,name=hash" json:"hash,omitempty"`
	FlowHashCode uint32 `protobuf:"varint,4,opt,name=flowHashCode" json:"flowHashCode,omitempty"`
	Content      []byte `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"`
}

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

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

func (m *FileResourceRequest) GetDir() string {
	if m != nil {
		return m.Dir
	}
	return ""
}

func (m *FileResourceRequest) GetHash() uint32 {
	if m != nil {
		return m.Hash
	}
	return 0
}

func (m *FileResourceRequest) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

func (m *FileResourceRequest) GetContent() []byte {
	if m != nil {
		return m.Content
	}
	return nil
}

type FileResourceResponse struct {
	AlreadyExists bool `protobuf:"varint,1,opt,name=alreadyExists" json:"alreadyExists,omitempty"`
	Ok            bool `protobuf:"varint,2,opt,name=ok" json:"ok,omitempty"`
}

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

func (m *FileResourceResponse) GetAlreadyExists() bool {
	if m != nil {
		return m.AlreadyExists
	}
	return false
}

func (m *FileResourceResponse) GetOk() bool {
	if m != nil {
		return m.Ok
	}
	return false
}

type ExecutionRequest struct {
	InstructionSet *InstructionSet  `protobuf:"bytes,1,opt,name=instructionSet" json:"instructionSet,omitempty"`
	Dir            string           `protobuf:"bytes,2,opt,name=dir" json:"dir,omitempty"`
	Resource       *ComputeResource `protobuf:"bytes,3,opt,name=resource" json:"resource,omitempty"`
}

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

func (m *ExecutionRequest) GetInstructionSet() *InstructionSet {
	if m != nil {
		return m.InstructionSet
	}
	return nil
}

func (m *ExecutionRequest) GetDir() string {
	if m != nil {
		return m.Dir
	}
	return ""
}

func (m *ExecutionRequest) GetResource() *ComputeResource {
	if m != nil {
		return m.Resource
	}
	return nil
}

type ExecutionResponse struct {
	Output        []byte         `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"`
	Error         []byte         `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	SystemTime    float64        `protobuf:"fixed64,3,opt,name=systemTime" json:"systemTime,omitempty"`
	UserTime      float64        `protobuf:"fixed64,4,opt,name=userTime" json:"userTime,omitempty"`
	ExecutionStat *ExecutionStat `protobuf:"bytes,5,opt,name=executionStat" json:"executionStat,omitempty"`
}

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

func (m *ExecutionResponse) GetOutput() []byte {
	if m != nil {
		return m.Output
	}
	return nil
}

func (m *ExecutionResponse) GetError() []byte {
	if m != nil {
		return m.Error
	}
	return nil
}

func (m *ExecutionResponse) GetSystemTime() float64 {
	if m != nil {
		return m.SystemTime
	}
	return 0
}

func (m *ExecutionResponse) GetUserTime() float64 {
	if m != nil {
		return m.UserTime
	}
	return 0
}

func (m *ExecutionResponse) GetExecutionStat() *ExecutionStat {
	if m != nil {
		return m.ExecutionStat
	}
	return nil
}

type ExecutionStat struct {
	FlowHashCode uint32             `protobuf:"varint,1,opt,name=flowHashCode" json:"flowHashCode,omitempty"`
	Stats        []*InstructionStat `protobuf:"bytes,2,rep,name=stats" json:"stats,omitempty"`
}

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

func (m *ExecutionStat) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

func (m *ExecutionStat) GetStats() []*InstructionStat {
	if m != nil {
		return m.Stats
	}
	return nil
}

type InstructionStat struct {
	StepId        int32 `protobuf:"varint,1,opt,name=stepId" json:"stepId,omitempty"`
	TaskId        int32 `protobuf:"varint,2,opt,name=taskId" json:"taskId,omitempty"`
	InputCounter  int64 `protobuf:"varint,3,opt,name=inputCounter" json:"inputCounter,omitempty"`
	OutputCounter int64 `protobuf:"varint,4,opt,name=outputCounter" json:"outputCounter,omitempty"`
}

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

func (m *InstructionStat) GetStepId() int32 {
	if m != nil {
		return m.StepId
	}
	return 0
}

func (m *InstructionStat) GetTaskId() int32 {
	if m != nil {
		return m.TaskId
	}
	return 0
}

func (m *InstructionStat) GetInputCounter() int64 {
	if m != nil {
		return m.InputCounter
	}
	return 0
}

func (m *InstructionStat) GetOutputCounter() int64 {
	if m != nil {
		return m.OutputCounter
	}
	return 0
}

type ControlMessage struct {
	IsOnDiskIO   bool          `protobuf:"varint,1,opt,name=isOnDiskIO" json:"isOnDiskIO,omitempty"`
	ReadRequest  *ReadRequest  `protobuf:"bytes,2,opt,name=readRequest" json:"readRequest,omitempty"`
	WriteRequest *WriteRequest `protobuf:"bytes,3,opt,name=writeRequest" json:"writeRequest,omitempty"`
}

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

func (m *ControlMessage) GetIsOnDiskIO() bool {
	if m != nil {
		return m.IsOnDiskIO
	}
	return false
}

func (m *ControlMessage) GetReadRequest() *ReadRequest {
	if m != nil {
		return m.ReadRequest
	}
	return nil
}

func (m *ControlMessage) GetWriteRequest() *WriteRequest {
	if m != nil {
		return m.WriteRequest
	}
	return nil
}

type DeleteDatasetShardRequest struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

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

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

type DeleteDatasetShardResponse struct {
	Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
}

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

func (m *DeleteDatasetShardResponse) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type CleanupRequest struct {
	FlowHashCode uint32 `protobuf:"varint,1,opt,name=flowHashCode" json:"flowHashCode,omitempty"`
}

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

func (m *CleanupRequest) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

type CleanupResponse struct {
	Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
}

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

func (m *CleanupResponse) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type WriteRequest struct {
	ChannelName string `protobuf:"bytes,1,opt,name=channelName" json:"channelName,omitempty"`
	WriterName  string `protobuf:"bytes,2,opt,name=writerName" json:"writerName,omitempty"`
	ReaderCount int32  `protobuf:"varint,3,opt,name=readerCount" json:"readerCount,omitempty"`
}

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

func (m *WriteRequest) GetChannelName() string {
	if m != nil {
		return m.ChannelName
	}
	return ""
}

func (m *WriteRequest) GetWriterName() string {
	if m != nil {
		return m.WriterName
	}
	return ""
}

func (m *WriteRequest) GetReaderCount() int32 {
	if m != nil {
		return m.ReaderCount
	}
	return 0
}

type ReadRequest struct {
	ChannelName string `protobuf:"bytes,1,opt,name=channelName" json:"channelName,omitempty"`
	ReaderName  string `protobuf:"bytes,2,opt,name=readerName" json:"readerName,omitempty"`
}

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

func (m *ReadRequest) GetChannelName() string {
	if m != nil {
		return m.ChannelName
	}
	return ""
}

func (m *ReadRequest) GetReaderName() string {
	if m != nil {
		return m.ReaderName
	}
	return ""
}

type InstructionSet struct {
	Instructions []*Instruction `protobuf:"bytes,1,rep,name=instructions" json:"instructions,omitempty"`
	ReaderCount  int32          `protobuf:"varint,2,opt,name=readerCount" json:"readerCount,omitempty"`
	FlowHashCode uint32         `protobuf:"varint,3,opt,name=flowHashCode" json:"flowHashCode,omitempty"`
	IsProfiling  bool           `protobuf:"varint,4,opt,name=isProfiling" json:"isProfiling,omitempty"`
	AgentAddress string         `protobuf:"bytes,5,opt,name=agentAddress" json:"agentAddress,omitempty"`
	Name         string         `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
}

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

func (m *InstructionSet) GetInstructions() []*Instruction {
	if m != nil {
		return m.Instructions
	}
	return nil
}

func (m *InstructionSet) GetReaderCount() int32 {
	if m != nil {
		return m.ReaderCount
	}
	return 0
}

func (m *InstructionSet) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

func (m *InstructionSet) GetIsProfiling() bool {
	if m != nil {
		return m.IsProfiling
	}
	return false
}

func (m *InstructionSet) GetAgentAddress() string {
	if m != nil {
		return m.AgentAddress
	}
	return ""
}

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

type Instruction struct {
	StepId                   int32                                 `protobuf:"varint,1,opt,name=stepId" json:"stepId,omitempty"`
	TaskId                   int32                                 `protobuf:"varint,2,opt,name=taskId" json:"taskId,omitempty"`
	MemoryInMB               int32                                 `protobuf:"varint,3,opt,name=memoryInMB" json:"memoryInMB,omitempty"`
	InputShardLocations      []*DatasetShardLocation               `protobuf:"bytes,4,rep,name=inputShardLocations" json:"inputShardLocations,omitempty"`
	OutputShardLocations     []*DatasetShardLocation               `protobuf:"bytes,5,rep,name=OutputShardLocations" json:"OutputShardLocations,omitempty"`
	Select                   *Instruction_Select                   `protobuf:"bytes,6,opt,name=select" json:"select,omitempty"`
	JoinPartitionedSorted    *Instruction_JoinPartitionedSorted    `protobuf:"bytes,7,opt,name=joinPartitionedSorted" json:"joinPartitionedSorted,omitempty"`
	CoGroupPartitionedSorted *Instruction_CoGroupPartitionedSorted `protobuf:"bytes,8,opt,name=coGroupPartitionedSorted" json:"coGroupPartitionedSorted,omitempty"`
	PipeAsArgs               *Instruction_PipeAsArgs               `protobuf:"bytes,9,opt,name=pipeAsArgs" json:"pipeAsArgs,omitempty"`
	ScatterPartitions        *Instruction_ScatterPartitions        `protobuf:"bytes,10,opt,name=scatterPartitions" json:"scatterPartitions,omitempty"`
	CollectPartitions        *Instruction_CollectPartitions        `protobuf:"bytes,11,opt,name=collectPartitions" json:"collectPartitions,omitempty"`
	InputSplitReader         *Instruction_InputSplitReader         `protobuf:"bytes,12,opt,name=inputSplitReader" json:"inputSplitReader,omitempty"`
	RoundRobin               *Instruction_RoundRobin               `protobuf:"bytes,13,opt,name=roundRobin" json:"roundRobin,omitempty"`
	LocalTop                 *Instruction_LocalTop                 `protobuf:"bytes,14,opt,name=localTop" json:"localTop,omitempty"`
	Broadcast                *Instruction_Broadcast                `protobuf:"bytes,15,opt,name=broadcast" json:"broadcast,omitempty"`
	LocalHashAndJoinWith     *Instruction_LocalHashAndJoinWith     `protobuf:"bytes,16,opt,name=localHashAndJoinWith" json:"localHashAndJoinWith,omitempty"`
	Script                   *Instruction_Script                   `protobuf:"bytes,17,opt,name=script" json:"script,omitempty"`
	LocalSort                *Instruction_LocalSort                `protobuf:"bytes,18,opt,name=localSort" json:"localSort,omitempty"`
	MergeSortedTo            *Instruction_MergeSortedTo            `protobuf:"bytes,19,opt,name=mergeSortedTo" json:"mergeSortedTo,omitempty"`
	MergeTo                  *Instruction_MergeTo                  `protobuf:"bytes,20,opt,name=mergeTo" json:"mergeTo,omitempty"`
	LocalDistinct            *Instruction_LocalDistinct            `protobuf:"bytes,21,opt,name=localDistinct" json:"localDistinct,omitempty"`
	LocalLimit               *Instruction_LocalLimit               `protobuf:"bytes,22,opt,name=localLimit" json:"localLimit,omitempty"`
	LocalGroupBySorted       *Instruction_LocalGroupBySorted       `protobuf:"bytes,23,opt,name=localGroupBySorted" json:"localGroupBySorted,omitempty"`
	Union                    *Instruction_Union                    `protobuf:"bytes,24,opt,name=union" json:"union,omitempty"`
}

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

func (m *Instruction) GetStepId() int32 {
	if m != nil {
		return m.StepId
	}
	return 0
}

func (m *Instruction) GetTaskId() int32 {
	if m != nil {
		return m.TaskId
	}
	return 0
}

func (m *Instruction) GetMemoryInMB() int32 {
	if m != nil {
		return m.MemoryInMB
	}
	return 0
}

func (m *Instruction) GetInputShardLocations() []*DatasetShardLocation {
	if m != nil {
		return m.InputShardLocations
	}
	return nil
}

func (m *Instruction) GetOutputShardLocations() []*DatasetShardLocation {
	if m != nil {
		return m.OutputShardLocations
	}
	return nil
}

func (m *Instruction) GetSelect() *Instruction_Select {
	if m != nil {
		return m.Select
	}
	return nil
}

func (m *Instruction) GetJoinPartitionedSorted() *Instruction_JoinPartitionedSorted {
	if m != nil {
		return m.JoinPartitionedSorted
	}
	return nil
}

func (m *Instruction) GetCoGroupPartitionedSorted() *Instruction_CoGroupPartitionedSorted {
	if m != nil {
		return m.CoGroupPartitionedSorted
	}
	return nil
}

func (m *Instruction) GetPipeAsArgs() *Instruction_PipeAsArgs {
	if m != nil {
		return m.PipeAsArgs
	}
	return nil
}

func (m *Instruction) GetScatterPartitions() *Instruction_ScatterPartitions {
	if m != nil {
		return m.ScatterPartitions
	}
	return nil
}

func (m *Instruction) GetCollectPartitions() *Instruction_CollectPartitions {
	if m != nil {
		return m.CollectPartitions
	}
	return nil
}

func (m *Instruction) GetInputSplitReader() *Instruction_InputSplitReader {
	if m != nil {
		return m.InputSplitReader
	}
	return nil
}

func (m *Instruction) GetRoundRobin() *Instruction_RoundRobin {
	if m != nil {
		return m.RoundRobin
	}
	return nil
}

func (m *Instruction) GetLocalTop() *Instruction_LocalTop {
	if m != nil {
		return m.LocalTop
	}
	return nil
}

func (m *Instruction) GetBroadcast() *Instruction_Broadcast {
	if m != nil {
		return m.Broadcast
	}
	return nil
}

func (m *Instruction) GetLocalHashAndJoinWith() *Instruction_LocalHashAndJoinWith {
	if m != nil {
		return m.LocalHashAndJoinWith
	}
	return nil
}

func (m *Instruction) GetScript() *Instruction_Script {
	if m != nil {
		return m.Script
	}
	return nil
}

func (m *Instruction) GetLocalSort() *Instruction_LocalSort {
	if m != nil {
		return m.LocalSort
	}
	return nil
}

func (m *Instruction) GetMergeSortedTo() *Instruction_MergeSortedTo {
	if m != nil {
		return m.MergeSortedTo
	}
	return nil
}

func (m *Instruction) GetMergeTo() *Instruction_MergeTo {
	if m != nil {
		return m.MergeTo
	}
	return nil
}

func (m *Instruction) GetLocalDistinct() *Instruction_LocalDistinct {
	if m != nil {
		return m.LocalDistinct
	}
	return nil
}

func (m *Instruction) GetLocalLimit() *Instruction_LocalLimit {
	if m != nil {
		return m.LocalLimit
	}
	return nil
}

func (m *Instruction) GetLocalGroupBySorted() *Instruction_LocalGroupBySorted {
	if m != nil {
		return m.LocalGroupBySorted
	}
	return nil
}

func (m *Instruction) GetUnion() *Instruction_Union {
	if m != nil {
		return m.Union
	}
	return nil
}

type Instruction_Select struct {
	KeyIndexes   []int32 `protobuf:"varint,1,rep,packed,name=keyIndexes" json:"keyIndexes,omitempty"`
	ValueIndexes []int32 `protobuf:"varint,2,rep,packed,name=valueIndexes" json:"valueIndexes,omitempty"`
}

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

func (m *Instruction_Select) GetKeyIndexes() []int32 {
	if m != nil {
		return m.KeyIndexes
	}
	return nil
}

func (m *Instruction_Select) GetValueIndexes() []int32 {
	if m != nil {
		return m.ValueIndexes
	}
	return nil
}

type Instruction_JoinPartitionedSorted struct {
	Indexes          []int32 `protobuf:"varint,1,rep,packed,name=indexes" json:"indexes,omitempty"`
	IsLeftOuterJoin  bool    `protobuf:"varint,2,opt,name=isLeftOuterJoin" json:"isLeftOuterJoin,omitempty"`
	IsRightOuterJoin bool    `protobuf:"varint,3,opt,name=isRightOuterJoin" json:"isRightOuterJoin,omitempty"`
}

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

func (m *Instruction_JoinPartitionedSorted) GetIndexes() []int32 {
	if m != nil {
		return m.Indexes
	}
	return nil
}

func (m *Instruction_JoinPartitionedSorted) GetIsLeftOuterJoin() bool {
	if m != nil {
		return m.IsLeftOuterJoin
	}
	return false
}

func (m *Instruction_JoinPartitionedSorted) GetIsRightOuterJoin() bool {
	if m != nil {
		return m.IsRightOuterJoin
	}
	return false
}

type Instruction_CoGroupPartitionedSorted struct {
	Indexes []int32 `protobuf:"varint,1,rep,packed,name=indexes" json:"indexes,omitempty"`
}

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

func (m *Instruction_CoGroupPartitionedSorted) GetIndexes() []int32 {
	if m != nil {
		return m.Indexes
	}
	return nil
}

type Instruction_PipeAsArgs struct {
	Code string `protobuf:"bytes,1,opt,name=code" json:"code,omitempty"`
}

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

func (m *Instruction_PipeAsArgs) GetCode() string {
	if m != nil {
		return m.Code
	}
	return ""
}

type Instruction_ScatterPartitions struct {
	Indexes []int32 `protobuf:"varint,1,rep,packed,name=indexes" json:"indexes,omitempty"`
}

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

func (m *Instruction_ScatterPartitions) GetIndexes() []int32 {
	if m != nil {
		return m.Indexes
	}
	return nil
}

type Instruction_CollectPartitions struct {
}

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

type Instruction_InputSplitReader struct {
	InputType string `protobuf:"bytes,1,opt,name=inputType" json:"inputType,omitempty"`
}

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

func (m *Instruction_InputSplitReader) GetInputType() string {
	if m != nil {
		return m.InputType
	}
	return ""
}

type Instruction_RoundRobin struct {
}

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

type Instruction_LocalTop struct {
	N        int32      `protobuf:"varint,1,opt,name=n" json:"n,omitempty"`
	OrderBys []*OrderBy `protobuf:"bytes,2,rep,name=orderBys" json:"orderBys,omitempty"`
}

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

func (m *Instruction_LocalTop) GetN() int32 {
	if m != nil {
		return m.N
	}
	return 0
}

func (m *Instruction_LocalTop) GetOrderBys() []*OrderBy {
	if m != nil {
		return m.OrderBys
	}
	return nil
}

type Instruction_Broadcast struct {
}

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

type Instruction_LocalHashAndJoinWith struct {
	Indexes []int32 `protobuf:"varint,1,rep,packed,name=indexes" json:"indexes,omitempty"`
}

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

func (m *Instruction_LocalHashAndJoinWith) GetIndexes() []int32 {
	if m != nil {
		return m.Indexes
	}
	return nil
}

type Instruction_Script struct {
	IsPipe bool     `protobuf:"varint,1,opt,name=isPipe" json:"isPipe,omitempty"`
	Path   string   `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"`
	Args   []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"`
	Env    []string `protobuf:"bytes,4,rep,name=env" json:"env,omitempty"`
}

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

func (m *Instruction_Script) GetIsPipe() bool {
	if m != nil {
		return m.IsPipe
	}
	return false
}

func (m *Instruction_Script) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

func (m *Instruction_Script) GetArgs() []string {
	if m != nil {
		return m.Args
	}
	return nil
}

func (m *Instruction_Script) GetEnv() []string {
	if m != nil {
		return m.Env
	}
	return nil
}

type Instruction_LocalSort struct {
	OrderBys []*OrderBy `protobuf:"bytes,1,rep,name=orderBys" json:"orderBys,omitempty"`
}

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

func (m *Instruction_LocalSort) GetOrderBys() []*OrderBy {
	if m != nil {
		return m.OrderBys
	}
	return nil
}

type Instruction_MergeSortedTo struct {
	OrderBys []*OrderBy `protobuf:"bytes,1,rep,name=orderBys" json:"orderBys,omitempty"`
}

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

func (m *Instruction_MergeSortedTo) GetOrderBys() []*OrderBy {
	if m != nil {
		return m.OrderBys
	}
	return nil
}

type Instruction_MergeTo struct {
}

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

type Instruction_LocalDistinct struct {
	OrderBys []*OrderBy `protobuf:"bytes,1,rep,name=orderBys" json:"orderBys,omitempty"`
}

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

func (m *Instruction_LocalDistinct) GetOrderBys() []*OrderBy {
	if m != nil {
		return m.OrderBys
	}
	return nil
}

type Instruction_LocalLimit struct {
	N      int32 `protobuf:"varint,1,opt,name=n" json:"n,omitempty"`
	Offset int32 `protobuf:"varint,2,opt,name=offset" json:"offset,omitempty"`
}

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

func (m *Instruction_LocalLimit) GetN() int32 {
	if m != nil {
		return m.N
	}
	return 0
}

func (m *Instruction_LocalLimit) GetOffset() int32 {
	if m != nil {
		return m.Offset
	}
	return 0
}

type Instruction_LocalGroupBySorted struct {
	Indexes []int32 `protobuf:"varint,1,rep,packed,name=indexes" json:"indexes,omitempty"`
}

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

func (m *Instruction_LocalGroupBySorted) GetIndexes() []int32 {
	if m != nil {
		return m.Indexes
	}
	return nil
}

type Instruction_Union struct {
	IsParallel bool `protobuf:"varint,1,opt,name=isParallel" json:"isParallel,omitempty"`
}

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

func (m *Instruction_Union) GetIsParallel() bool {
	if m != nil {
		return m.IsParallel
	}
	return false
}

type OrderBy struct {
	Index int32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"`
	Order int32 `protobuf:"varint,2,opt,name=order" json:"order,omitempty"`
}

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

func (m *OrderBy) GetIndex() int32 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *OrderBy) GetOrder() int32 {
	if m != nil {
		return m.Order
	}
	return 0
}

type DatasetShard struct {
	FlowName       string `protobuf:"bytes,1,opt,name=FlowName" json:"FlowName,omitempty"`
	DatasetId      int32  `protobuf:"varint,2,opt,name=DatasetId" json:"DatasetId,omitempty"`
	DatasetShardId int32  `protobuf:"varint,3,opt,name=DatasetShardId" json:"DatasetShardId,omitempty"`
	FlowHashCode   uint32 `protobuf:"varint,4,opt,name=FlowHashCode" json:"FlowHashCode,omitempty"`
}

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

func (m *DatasetShard) GetFlowName() string {
	if m != nil {
		return m.FlowName
	}
	return ""
}

func (m *DatasetShard) GetDatasetId() int32 {
	if m != nil {
		return m.DatasetId
	}
	return 0
}

func (m *DatasetShard) GetDatasetShardId() int32 {
	if m != nil {
		return m.DatasetShardId
	}
	return 0
}

func (m *DatasetShard) GetFlowHashCode() uint32 {
	if m != nil {
		return m.FlowHashCode
	}
	return 0
}

type DatasetShardLocation struct {
	Name   string `protobuf:"bytes,1,opt,name=Name" json:"Name,omitempty"`
	Host   string `protobuf:"bytes,2,opt,name=Host" json:"Host,omitempty"`
	Port   int32  `protobuf:"varint,3,opt,name=Port" json:"Port,omitempty"`
	OnDisk bool   `protobuf:"varint,4,opt,name=onDisk" json:"onDisk,omitempty"`
}

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

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

func (m *DatasetShardLocation) GetHost() string {
	if m != nil {
		return m.Host
	}
	return ""
}

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

func (m *DatasetShardLocation) GetOnDisk() bool {
	if m != nil {
		return m.OnDisk
	}
	return false
}

func init() {
	proto.RegisterType((*ComputeRequest)(nil), "pb.ComputeRequest")
	proto.RegisterType((*ComputeResource)(nil), "pb.ComputeResource")
	proto.RegisterType((*DataResource)(nil), "pb.DataResource")
	proto.RegisterType((*Location)(nil), "pb.Location")
	proto.RegisterType((*Allocation)(nil), "pb.Allocation")
	proto.RegisterType((*AllocationResult)(nil), "pb.AllocationResult")
	proto.RegisterType((*Heartbeat)(nil), "pb.Heartbeat")
	proto.RegisterType((*Empty)(nil), "pb.Empty")
	proto.RegisterType((*DataLocation)(nil), "pb.DataLocation")
	proto.RegisterType((*FlowExecutionStatus)(nil), "pb.FlowExecutionStatus")
	proto.RegisterType((*FlowExecutionStatus_Task)(nil), "pb.FlowExecutionStatus.Task")
	proto.RegisterType((*FlowExecutionStatus_Step)(nil), "pb.FlowExecutionStatus.Step")
	proto.RegisterType((*FlowExecutionStatus_Dataset)(nil), "pb.FlowExecutionStatus.Dataset")
	proto.RegisterType((*FlowExecutionStatus_DatasetShard)(nil), "pb.FlowExecutionStatus.DatasetShard")
	proto.RegisterType((*FlowExecutionStatus_StepGroup)(nil), "pb.FlowExecutionStatus.StepGroup")
	proto.RegisterType((*FlowExecutionStatus_TaskGroup)(nil), "pb.FlowExecutionStatus.TaskGroup")
	proto.RegisterType((*FlowExecutionStatus_TaskGroup_Execution)(nil), "pb.FlowExecutionStatus.TaskGroup.Execution")
	proto.RegisterType((*FlowExecutionStatus_DriverInfo)(nil), "pb.FlowExecutionStatus.DriverInfo")
	proto.RegisterType((*FileResourceRequest)(nil), "pb.FileResourceRequest")
	proto.RegisterType((*FileResourceResponse)(nil), "pb.FileResourceResponse")
	proto.RegisterType((*ExecutionRequest)(nil), "pb.ExecutionRequest")
	proto.RegisterType((*ExecutionResponse)(nil), "pb.ExecutionResponse")
	proto.RegisterType((*ExecutionStat)(nil), "pb.ExecutionStat")
	proto.RegisterType((*InstructionStat)(nil), "pb.InstructionStat")
	proto.RegisterType((*ControlMessage)(nil), "pb.ControlMessage")
	proto.RegisterType((*DeleteDatasetShardRequest)(nil), "pb.DeleteDatasetShardRequest")
	proto.RegisterType((*DeleteDatasetShardResponse)(nil), "pb.DeleteDatasetShardResponse")
	proto.RegisterType((*CleanupRequest)(nil), "pb.CleanupRequest")
	proto.RegisterType((*CleanupResponse)(nil), "pb.CleanupResponse")
	proto.RegisterType((*WriteRequest)(nil), "pb.WriteRequest")
	proto.RegisterType((*ReadRequest)(nil), "pb.ReadRequest")
	proto.RegisterType((*InstructionSet)(nil), "pb.InstructionSet")
	proto.RegisterType((*Instruction)(nil), "pb.Instruction")
	proto.RegisterType((*Instruction_Select)(nil), "pb.Instruction.Select")
	proto.RegisterType((*Instruction_JoinPartitionedSorted)(nil), "pb.Instruction.JoinPartitionedSorted")
	proto.RegisterType((*Instruction_CoGroupPartitionedSorted)(nil), "pb.Instruction.CoGroupPartitionedSorted")
	proto.RegisterType((*Instruction_PipeAsArgs)(nil), "pb.Instruction.PipeAsArgs")
	proto.RegisterType((*Instruction_ScatterPartitions)(nil), "pb.Instruction.ScatterPartitions")
	proto.RegisterType((*Instruction_CollectPartitions)(nil), "pb.Instruction.CollectPartitions")
	proto.RegisterType((*Instruction_InputSplitReader)(nil), "pb.Instruction.InputSplitReader")
	proto.RegisterType((*Instruction_RoundRobin)(nil), "pb.Instruction.RoundRobin")
	proto.RegisterType((*Instruction_LocalTop)(nil), "pb.Instruction.LocalTop")
	proto.RegisterType((*Instruction_Broadcast)(nil), "pb.Instruction.Broadcast")
	proto.RegisterType((*Instruction_LocalHashAndJoinWith)(nil), "pb.Instruction.LocalHashAndJoinWith")
	proto.RegisterType((*Instruction_Script)(nil), "pb.Instruction.Script")
	proto.RegisterType((*Instruction_LocalSort)(nil), "pb.Instruction.LocalSort")
	proto.RegisterType((*Instruction_MergeSortedTo)(nil), "pb.Instruction.MergeSortedTo")
	proto.RegisterType((*Instruction_MergeTo)(nil), "pb.Instruction.MergeTo")
	proto.RegisterType((*Instruction_LocalDistinct)(nil), "pb.Instruction.LocalDistinct")
	proto.RegisterType((*Instruction_LocalLimit)(nil), "pb.Instruction.LocalLimit")
	proto.RegisterType((*Instruction_LocalGroupBySorted)(nil), "pb.Instruction.LocalGroupBySorted")
	proto.RegisterType((*Instruction_Union)(nil), "pb.Instruction.Union")
	proto.RegisterType((*OrderBy)(nil), "pb.OrderBy")
	proto.RegisterType((*DatasetShard)(nil), "pb.DatasetShard")
	proto.RegisterType((*DatasetShardLocation)(nil), "pb.DatasetShardLocation")
}

// 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 GleamMaster service

type GleamMasterClient interface {
	GetResources(ctx context.Context, in *ComputeRequest, opts ...grpc.CallOption) (*AllocationResult, error)
	SendHeartbeat(ctx context.Context, opts ...grpc.CallOption) (GleamMaster_SendHeartbeatClient, error)
	SendFlowExecutionStatus(ctx context.Context, opts ...grpc.CallOption) (GleamMaster_SendFlowExecutionStatusClient, error)
}

type gleamMasterClient struct {
	cc *grpc.ClientConn
}

func NewGleamMasterClient(cc *grpc.ClientConn) GleamMasterClient {
	return &gleamMasterClient{cc}
}

func (c *gleamMasterClient) GetResources(ctx context.Context, in *ComputeRequest, opts ...grpc.CallOption) (*AllocationResult, error) {
	out := new(AllocationResult)
	err := grpc.Invoke(ctx, "/pb.GleamMaster/GetResources", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gleamMasterClient) SendHeartbeat(ctx context.Context, opts ...grpc.CallOption) (GleamMaster_SendHeartbeatClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamMaster_serviceDesc.Streams[0], c.cc, "/pb.GleamMaster/SendHeartbeat", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamMasterSendHeartbeatClient{stream}
	return x, nil
}

type GleamMaster_SendHeartbeatClient interface {
	Send(*Heartbeat) error
	CloseAndRecv() (*Empty, error)
	grpc.ClientStream
}

type gleamMasterSendHeartbeatClient struct {
	grpc.ClientStream
}

func (x *gleamMasterSendHeartbeatClient) Send(m *Heartbeat) error {
	return x.ClientStream.SendMsg(m)
}

func (x *gleamMasterSendHeartbeatClient) CloseAndRecv() (*Empty, error) {
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	m := new(Empty)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *gleamMasterClient) SendFlowExecutionStatus(ctx context.Context, opts ...grpc.CallOption) (GleamMaster_SendFlowExecutionStatusClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamMaster_serviceDesc.Streams[1], c.cc, "/pb.GleamMaster/SendFlowExecutionStatus", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamMasterSendFlowExecutionStatusClient{stream}
	return x, nil
}

type GleamMaster_SendFlowExecutionStatusClient interface {
	Send(*FlowExecutionStatus) error
	CloseAndRecv() (*Empty, error)
	grpc.ClientStream
}

type gleamMasterSendFlowExecutionStatusClient struct {
	grpc.ClientStream
}

func (x *gleamMasterSendFlowExecutionStatusClient) Send(m *FlowExecutionStatus) error {
	return x.ClientStream.SendMsg(m)
}

func (x *gleamMasterSendFlowExecutionStatusClient) CloseAndRecv() (*Empty, error) {
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	m := new(Empty)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

// Server API for GleamMaster service

type GleamMasterServer interface {
	GetResources(context.Context, *ComputeRequest) (*AllocationResult, error)
	SendHeartbeat(GleamMaster_SendHeartbeatServer) error
	SendFlowExecutionStatus(GleamMaster_SendFlowExecutionStatusServer) error
}

func RegisterGleamMasterServer(s *grpc.Server, srv GleamMasterServer) {
	s.RegisterService(&_GleamMaster_serviceDesc, srv)
}

func _GleamMaster_GetResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ComputeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GleamMasterServer).GetResources(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/pb.GleamMaster/GetResources",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GleamMasterServer).GetResources(ctx, req.(*ComputeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GleamMaster_SendHeartbeat_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(GleamMasterServer).SendHeartbeat(&gleamMasterSendHeartbeatServer{stream})
}

type GleamMaster_SendHeartbeatServer interface {
	SendAndClose(*Empty) error
	Recv() (*Heartbeat, error)
	grpc.ServerStream
}

type gleamMasterSendHeartbeatServer struct {
	grpc.ServerStream
}

func (x *gleamMasterSendHeartbeatServer) SendAndClose(m *Empty) error {
	return x.ServerStream.SendMsg(m)
}

func (x *gleamMasterSendHeartbeatServer) Recv() (*Heartbeat, error) {
	m := new(Heartbeat)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _GleamMaster_SendFlowExecutionStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(GleamMasterServer).SendFlowExecutionStatus(&gleamMasterSendFlowExecutionStatusServer{stream})
}

type GleamMaster_SendFlowExecutionStatusServer interface {
	SendAndClose(*Empty) error
	Recv() (*FlowExecutionStatus, error)
	grpc.ServerStream
}

type gleamMasterSendFlowExecutionStatusServer struct {
	grpc.ServerStream
}

func (x *gleamMasterSendFlowExecutionStatusServer) SendAndClose(m *Empty) error {
	return x.ServerStream.SendMsg(m)
}

func (x *gleamMasterSendFlowExecutionStatusServer) Recv() (*FlowExecutionStatus, error) {
	m := new(FlowExecutionStatus)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

var _GleamMaster_serviceDesc = grpc.ServiceDesc{
	ServiceName: "pb.GleamMaster",
	HandlerType: (*GleamMasterServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetResources",
			Handler:    _GleamMaster_GetResources_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "SendHeartbeat",
			Handler:       _GleamMaster_SendHeartbeat_Handler,
			ClientStreams: true,
		},
		{
			StreamName:    "SendFlowExecutionStatus",
			Handler:       _GleamMaster_SendFlowExecutionStatus_Handler,
			ClientStreams: true,
		},
	},
	Metadata: "gleam.proto",
}

// Client API for GleamExecutor service

type GleamExecutorClient interface {
	CollectExecutionStatistics(ctx context.Context, opts ...grpc.CallOption) (GleamExecutor_CollectExecutionStatisticsClient, error)
}

type gleamExecutorClient struct {
	cc *grpc.ClientConn
}

func NewGleamExecutorClient(cc *grpc.ClientConn) GleamExecutorClient {
	return &gleamExecutorClient{cc}
}

func (c *gleamExecutorClient) CollectExecutionStatistics(ctx context.Context, opts ...grpc.CallOption) (GleamExecutor_CollectExecutionStatisticsClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamExecutor_serviceDesc.Streams[0], c.cc, "/pb.GleamExecutor/CollectExecutionStatistics", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamExecutorCollectExecutionStatisticsClient{stream}
	return x, nil
}

type GleamExecutor_CollectExecutionStatisticsClient interface {
	Send(*ExecutionStat) error
	CloseAndRecv() (*Empty, error)
	grpc.ClientStream
}

type gleamExecutorCollectExecutionStatisticsClient struct {
	grpc.ClientStream
}

func (x *gleamExecutorCollectExecutionStatisticsClient) Send(m *ExecutionStat) error {
	return x.ClientStream.SendMsg(m)
}

func (x *gleamExecutorCollectExecutionStatisticsClient) CloseAndRecv() (*Empty, error) {
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	m := new(Empty)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

// Server API for GleamExecutor service

type GleamExecutorServer interface {
	CollectExecutionStatistics(GleamExecutor_CollectExecutionStatisticsServer) error
}

func RegisterGleamExecutorServer(s *grpc.Server, srv GleamExecutorServer) {
	s.RegisterService(&_GleamExecutor_serviceDesc, srv)
}

func _GleamExecutor_CollectExecutionStatistics_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(GleamExecutorServer).CollectExecutionStatistics(&gleamExecutorCollectExecutionStatisticsServer{stream})
}

type GleamExecutor_CollectExecutionStatisticsServer interface {
	SendAndClose(*Empty) error
	Recv() (*ExecutionStat, error)
	grpc.ServerStream
}

type gleamExecutorCollectExecutionStatisticsServer struct {
	grpc.ServerStream
}

func (x *gleamExecutorCollectExecutionStatisticsServer) SendAndClose(m *Empty) error {
	return x.ServerStream.SendMsg(m)
}

func (x *gleamExecutorCollectExecutionStatisticsServer) Recv() (*ExecutionStat, error) {
	m := new(ExecutionStat)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

var _GleamExecutor_serviceDesc = grpc.ServiceDesc{
	ServiceName: "pb.GleamExecutor",
	HandlerType: (*GleamExecutorServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "CollectExecutionStatistics",
			Handler:       _GleamExecutor_CollectExecutionStatistics_Handler,
			ClientStreams: true,
		},
	},
	Metadata: "gleam.proto",
}

// Client API for GleamAgent service

type GleamAgentClient interface {
	SendFileResource(ctx context.Context, opts ...grpc.CallOption) (GleamAgent_SendFileResourceClient, error)
	Execute(ctx context.Context, in *ExecutionRequest, opts ...grpc.CallOption) (GleamAgent_ExecuteClient, error)
	// collect execution stats from "gleam execute" processes
	CollectExecutionStatistics(ctx context.Context, opts ...grpc.CallOption) (GleamAgent_CollectExecutionStatisticsClient, error)
	Delete(ctx context.Context, in *DeleteDatasetShardRequest, opts ...grpc.CallOption) (*DeleteDatasetShardResponse, error)
	Cleanup(ctx context.Context, in *CleanupRequest, opts ...grpc.CallOption) (*CleanupResponse, error)
}

type gleamAgentClient struct {
	cc *grpc.ClientConn
}

func NewGleamAgentClient(cc *grpc.ClientConn) GleamAgentClient {
	return &gleamAgentClient{cc}
}

func (c *gleamAgentClient) SendFileResource(ctx context.Context, opts ...grpc.CallOption) (GleamAgent_SendFileResourceClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamAgent_serviceDesc.Streams[0], c.cc, "/pb.GleamAgent/SendFileResource", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamAgentSendFileResourceClient{stream}
	return x, nil
}

type GleamAgent_SendFileResourceClient interface {
	Send(*FileResourceRequest) error
	Recv() (*FileResourceResponse, error)
	grpc.ClientStream
}

type gleamAgentSendFileResourceClient struct {
	grpc.ClientStream
}

func (x *gleamAgentSendFileResourceClient) Send(m *FileResourceRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *gleamAgentSendFileResourceClient) Recv() (*FileResourceResponse, error) {
	m := new(FileResourceResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *gleamAgentClient) Execute(ctx context.Context, in *ExecutionRequest, opts ...grpc.CallOption) (GleamAgent_ExecuteClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamAgent_serviceDesc.Streams[1], c.cc, "/pb.GleamAgent/Execute", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamAgentExecuteClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type GleamAgent_ExecuteClient interface {
	Recv() (*ExecutionResponse, error)
	grpc.ClientStream
}

type gleamAgentExecuteClient struct {
	grpc.ClientStream
}

func (x *gleamAgentExecuteClient) Recv() (*ExecutionResponse, error) {
	m := new(ExecutionResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *gleamAgentClient) CollectExecutionStatistics(ctx context.Context, opts ...grpc.CallOption) (GleamAgent_CollectExecutionStatisticsClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_GleamAgent_serviceDesc.Streams[2], c.cc, "/pb.GleamAgent/CollectExecutionStatistics", opts...)
	if err != nil {
		return nil, err
	}
	x := &gleamAgentCollectExecutionStatisticsClient{stream}
	return x, nil
}

type GleamAgent_CollectExecutionStatisticsClient interface {
	Send(*ExecutionStat) error
	CloseAndRecv() (*Empty, error)
	grpc.ClientStream
}

type gleamAgentCollectExecutionStatisticsClient struct {
	grpc.ClientStream
}

func (x *gleamAgentCollectExecutionStatisticsClient) Send(m *ExecutionStat) error {
	return x.ClientStream.SendMsg(m)
}

func (x *gleamAgentCollectExecutionStatisticsClient) CloseAndRecv() (*Empty, error) {
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	m := new(Empty)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *gleamAgentClient) Delete(ctx context.Context, in *DeleteDatasetShardRequest, opts ...grpc.CallOption) (*DeleteDatasetShardResponse, error) {
	out := new(DeleteDatasetShardResponse)
	err := grpc.Invoke(ctx, "/pb.GleamAgent/Delete", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gleamAgentClient) Cleanup(ctx context.Context, in *CleanupRequest, opts ...grpc.CallOption) (*CleanupResponse, error) {
	out := new(CleanupResponse)
	err := grpc.Invoke(ctx, "/pb.GleamAgent/Cleanup", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for GleamAgent service

type GleamAgentServer interface {
	SendFileResource(GleamAgent_SendFileResourceServer) error
	Execute(*ExecutionRequest, GleamAgent_ExecuteServer) error
	// collect execution stats from "gleam execute" processes
	CollectExecutionStatistics(GleamAgent_CollectExecutionStatisticsServer) error
	Delete(context.Context, *DeleteDatasetShardRequest) (*DeleteDatasetShardResponse, error)
	Cleanup(context.Context, *CleanupRequest) (*CleanupResponse, error)
}

func RegisterGleamAgentServer(s *grpc.Server, srv GleamAgentServer) {
	s.RegisterService(&_GleamAgent_serviceDesc, srv)
}

func _GleamAgent_SendFileResource_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(GleamAgentServer).SendFileResource(&gleamAgentSendFileResourceServer{stream})
}

type GleamAgent_SendFileResourceServer interface {
	Send(*FileResourceResponse) error
	Recv() (*FileResourceRequest, error)
	grpc.ServerStream
}

type gleamAgentSendFileResourceServer struct {
	grpc.ServerStream
}

func (x *gleamAgentSendFileResourceServer) Send(m *FileResourceResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *gleamAgentSendFileResourceServer) Recv() (*FileResourceRequest, error) {
	m := new(FileResourceRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _GleamAgent_Execute_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(ExecutionRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(GleamAgentServer).Execute(m, &gleamAgentExecuteServer{stream})
}

type GleamAgent_ExecuteServer interface {
	Send(*ExecutionResponse) error
	grpc.ServerStream
}

type gleamAgentExecuteServer struct {
	grpc.ServerStream
}

func (x *gleamAgentExecuteServer) Send(m *ExecutionResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _GleamAgent_CollectExecutionStatistics_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(GleamAgentServer).CollectExecutionStatistics(&gleamAgentCollectExecutionStatisticsServer{stream})
}

type GleamAgent_CollectExecutionStatisticsServer interface {
	SendAndClose(*Empty) error
	Recv() (*ExecutionStat, error)
	grpc.ServerStream
}

type gleamAgentCollectExecutionStatisticsServer struct {
	grpc.ServerStream
}

func (x *gleamAgentCollectExecutionStatisticsServer) SendAndClose(m *Empty) error {
	return x.ServerStream.SendMsg(m)
}

func (x *gleamAgentCollectExecutionStatisticsServer) Recv() (*ExecutionStat, error) {
	m := new(ExecutionStat)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _GleamAgent_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteDatasetShardRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GleamAgentServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/pb.GleamAgent/Delete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GleamAgentServer).Delete(ctx, req.(*DeleteDatasetShardRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GleamAgent_Cleanup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CleanupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GleamAgentServer).Cleanup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/pb.GleamAgent/Cleanup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GleamAgentServer).Cleanup(ctx, req.(*CleanupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _GleamAgent_serviceDesc = grpc.ServiceDesc{
	ServiceName: "pb.GleamAgent",
	HandlerType: (*GleamAgentServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Delete",
			Handler:    _GleamAgent_Delete_Handler,
		},
		{
			MethodName: "Cleanup",
			Handler:    _GleamAgent_Cleanup_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "SendFileResource",
			Handler:       _GleamAgent_SendFileResource_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
		{
			StreamName:    "Execute",
			Handler:       _GleamAgent_Execute_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "CollectExecutionStatistics",
			Handler:       _GleamAgent_CollectExecutionStatistics_Handler,
			ClientStreams: true,
		},
	},
	Metadata: "gleam.proto",
}

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

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