package pkg

import (
	context "context"
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	grpc "google.golang.org/grpc"
	math "math"
)

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

const _ = proto.ProtoPackageIsVersion2 

type Value_Kind int32

const (
	Value_EMPTY      Value_Kind = 0
	Value_is_null    Value_Kind = 1
	Value_is_str     Value_Kind = 2
	Value_is_number  Value_Kind = 3
	Value_is_list    Value_Kind = 4
	Value_is_hashmap Value_Kind = 5
	Value_is_url     Value_Kind = 6
	Value_is_bool    Value_Kind = 7
)

var Value_Kind_name = map[int32]string{
	0: "EMPTY",
	1: "is_null",
	2: "is_str",
	3: "is_number",
	4: "is_list",
	5: "is_hashmap",
	6: "is_url",
	7: "is_bool",
}

var Value_Kind_value = map[string]int32{
	"EMPTY":      0,
	"is_null":    1,
	"is_str":     2,
	"is_number":  3,
	"is_list":    4,
	"is_hashmap": 5,
	"is_url":     6,
	"is_bool":    7,
}

func (x Value_Kind) String() string {
	return proto.EnumName(Value_Kind_name, int32(x))
}

func (Value_Kind) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_c16ddaca6537879b, []int{1, 0}
}

type Object struct {
	Value                *Value   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	Ptr                  uint64   `protobuf:"varint,2,opt,name=ptr,proto3" json:"ptr,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *Object) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Object.Unmarshal(m, b)
}
func (m *Object) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Object.Marshal(b, m, deterministic)
}
func (m *Object) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Object.Merge(m, src)
}
func (m *Object) XXX_Size() int {
	return xxx_messageInfo_Object.Size(m)
}
func (m *Object) XXX_DiscardUnknown() {
	xxx_messageInfo_Object.DiscardUnknown(m)
}

var xxx_messageInfo_Object proto.InternalMessageInfo

func (m *Object) GetValue() *Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *Object) GetPtr() uint64 {
	if m != nil {
		return m.Ptr
	}
	return 0
}

type Value struct {
	Kind                 Value_Kind         `protobuf:"varint,1,opt,name=kind,proto3,enum=Value_Kind" json:"kind,omitempty"`
	Str                  string             `protobuf:"bytes,2,opt,name=str,proto3" json:"str,omitempty"`
	Number               float64            `protobuf:"fixed64,3,opt,name=number,proto3" json:"number,omitempty"`
	List                 []*Object          `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`
	Hashmap              map[string]*Object `protobuf:"bytes,5,rep,name=hashmap,proto3" json:"hashmap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Url                  string             `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"`
	Boolean              bool               `protobuf:"varint,7,opt,name=boolean,proto3" json:"boolean,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

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

func (m *Value) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Value.Unmarshal(m, b)
}
func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
}
func (m *Value) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Value.Merge(m, src)
}
func (m *Value) XXX_Size() int {
	return xxx_messageInfo_Value.Size(m)
}
func (m *Value) XXX_DiscardUnknown() {
	xxx_messageInfo_Value.DiscardUnknown(m)
}

var xxx_messageInfo_Value proto.InternalMessageInfo

func (m *Value) GetKind() Value_Kind {
	if m != nil {
		return m.Kind
	}
	return Value_EMPTY
}

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

func (m *Value) GetNumber() float64 {
	if m != nil {
		return m.Number
	}
	return 0
}

func (m *Value) GetList() []*Object {
	if m != nil {
		return m.List
	}
	return nil
}

func (m *Value) GetHashmap() map[string]*Object {
	if m != nil {
		return m.Hashmap
	}
	return nil
}

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

func (m *Value) GetBoolean() bool {
	if m != nil {
		return m.Boolean
	}
	return false
}

type EvalReq struct {
	Language             string   `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"`
	Code                 string   `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *EvalReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvalReq.Unmarshal(m, b)
}
func (m *EvalReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvalReq.Marshal(b, m, deterministic)
}
func (m *EvalReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvalReq.Merge(m, src)
}
func (m *EvalReq) XXX_Size() int {
	return xxx_messageInfo_EvalReq.Size(m)
}
func (m *EvalReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EvalReq.DiscardUnknown(m)
}

var xxx_messageInfo_EvalReq proto.InternalMessageInfo

func (m *EvalReq) GetLanguage() string {
	if m != nil {
		return m.Language
	}
	return ""
}

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

type EvalRep struct {
	Stderr               string   `protobuf:"bytes,1,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Result               *Object  `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *EvalRep) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvalRep.Unmarshal(m, b)
}
func (m *EvalRep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvalRep.Marshal(b, m, deterministic)
}
func (m *EvalRep) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvalRep.Merge(m, src)
}
func (m *EvalRep) XXX_Size() int {
	return xxx_messageInfo_EvalRep.Size(m)
}
func (m *EvalRep) XXX_DiscardUnknown() {
	xxx_messageInfo_EvalRep.DiscardUnknown(m)
}

var xxx_messageInfo_EvalRep proto.InternalMessageInfo

func (m *EvalRep) GetStderr() string {
	if m != nil {
		return m.Stderr
	}
	return ""
}

func (m *EvalRep) GetResult() *Object {
	if m != nil {
		return m.Result
	}
	return nil
}

type PrintReq struct {
	Ptr                  uint64   `protobuf:"varint,1,opt,name=ptr,proto3" json:"ptr,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *PrintReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PrintReq.Unmarshal(m, b)
}
func (m *PrintReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PrintReq.Marshal(b, m, deterministic)
}
func (m *PrintReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PrintReq.Merge(m, src)
}
func (m *PrintReq) XXX_Size() int {
	return xxx_messageInfo_PrintReq.Size(m)
}
func (m *PrintReq) XXX_DiscardUnknown() {
	xxx_messageInfo_PrintReq.DiscardUnknown(m)
}

var xxx_messageInfo_PrintReq proto.InternalMessageInfo

func (m *PrintReq) GetPtr() uint64 {
	if m != nil {
		return m.Ptr
	}
	return 0
}

type PrintRep struct {
	Object               *Object  `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *PrintRep) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PrintRep.Unmarshal(m, b)
}
func (m *PrintRep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PrintRep.Marshal(b, m, deterministic)
}
func (m *PrintRep) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PrintRep.Merge(m, src)
}
func (m *PrintRep) XXX_Size() int {
	return xxx_messageInfo_PrintRep.Size(m)
}
func (m *PrintRep) XXX_DiscardUnknown() {
	xxx_messageInfo_PrintRep.DiscardUnknown(m)
}

var xxx_messageInfo_PrintRep proto.InternalMessageInfo

func (m *PrintRep) GetObject() *Object {
	if m != nil {
		return m.Object
	}
	return nil
}

func init() {
	proto.RegisterEnum("Value_Kind", Value_Kind_name, Value_Kind_value)
	proto.RegisterType((*Object)(nil), "Object")
	proto.RegisterType((*Value)(nil), "Value")
	proto.RegisterMapType((map[string]*Object)(nil), "Value.HashmapEntry")
	proto.RegisterType((*EvalReq)(nil), "EvalReq")
	proto.RegisterType((*EvalRep)(nil), "EvalRep")
	proto.RegisterType((*PrintReq)(nil), "PrintReq")
	proto.RegisterType((*PrintRep)(nil), "PrintRep")
}

func init() { proto.RegisterFile("noterepl.proto", fileDescriptor_c16ddaca6537879b) }

var fileDescriptor_c16ddaca6537879b = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x52, 0x4d, 0x8b, 0xdb, 0x30,
	0x10, 0x8d, 0xe3, 0xef, 0x49, 0x1b, 0xcc, 0x14, 0x8a, 0x49, 0x53, 0x62, 0x7c, 0x32, 0x94, 0xfa,
	0x90, 0x5e, 0xb6, 0x3d, 0x6e, 0x09, 0xb4, 0xf4, 0x2b, 0x88, 0x52, 0x68, 0x2f, 0xc1, 0xd9, 0x88,
	0xac, 0x1b, 0xad, 0xa5, 0x4a, 0xf2, 0xc2, 0xde, 0xfa, 0xd3, 0x8b, 0x64, 0x39, 0x29, 0x7b, 0x7b,
	0xf3, 0x66, 0xde, 0xcc, 0x3c, 0x69, 0x60, 0xde, 0x71, 0x4d, 0x25, 0x15, 0xac, 0x16, 0x92, 0x6b,
	0x5e, 0x5e, 0x41, 0xf4, 0x6d, 0xff, 0x9b, 0xde, 0x68, 0x5c, 0x42, 0x78, 0xdf, 0xb0, 0x9e, 0xe6,
	0x5e, 0xe1, 0x55, 0xb3, 0x75, 0x54, 0xff, 0x30, 0x11, 0x19, 0x48, 0xcc, 0xc0, 0x17, 0x5a, 0xe6,
	0xd3, 0xc2, 0xab, 0x02, 0x62, 0x60, 0xf9, 0xd7, 0x87, 0xd0, 0x96, 0xe0, 0x0a, 0x82, 0x53, 0xdb,
	0x1d, 0xac, 0x70, 0xbe, 0x9e, 0x0d, 0xc2, 0xfa, 0x53, 0xdb, 0x1d, 0x88, 0x4d, 0x18, 0xb1, 0x72,
	0xe2, 0x94, 0x18, 0x88, 0xcf, 0x21, 0xea, 0xfa, 0xbb, 0x3d, 0x95, 0xb9, 0x5f, 0x78, 0x95, 0x47,
	0x5c, 0x84, 0x2f, 0x20, 0x60, 0xad, 0xd2, 0x79, 0x50, 0xf8, 0xd5, 0x6c, 0x1d, 0xd7, 0xc3, 0x6e,
	0xc4, 0x92, 0xf8, 0x1a, 0xe2, 0xdb, 0x46, 0xdd, 0xde, 0x35, 0x22, 0x0f, 0x6d, 0xfe, 0x99, 0x1b,
	0xf5, 0x61, 0x60, 0x37, 0x9d, 0x96, 0x0f, 0x64, 0xac, 0x31, 0x53, 0x7b, 0xc9, 0xf2, 0x68, 0x98,
	0xda, 0x4b, 0x86, 0x39, 0xc4, 0x7b, 0xce, 0x19, 0x6d, 0xba, 0x3c, 0x2e, 0xbc, 0x2a, 0x21, 0x63,
	0xb8, 0x78, 0x0f, 0x4f, 0xfe, 0x6f, 0x62, 0xb4, 0x27, 0xfa, 0x60, 0x1d, 0xa5, 0xc4, 0x40, 0x7c,
	0x39, 0x3e, 0xcf, 0xd4, 0x3e, 0xcf, 0x79, 0xb5, 0x81, 0x7d, 0x37, 0xbd, 0xf2, 0x4a, 0x0e, 0x81,
	0x31, 0x8d, 0x29, 0x84, 0x9b, 0x2f, 0xdb, 0xef, 0x3f, 0xb3, 0x09, 0xce, 0x20, 0x6e, 0xd5, 0xae,
	0xeb, 0x19, 0xcb, 0x3c, 0x04, 0x88, 0x5a, 0xb5, 0x53, 0x5a, 0x66, 0x53, 0x7c, 0x0a, 0xa9, 0x4d,
	0x18, 0xd7, 0x99, 0xef, 0xea, 0x8c, 0xcb, 0x2c, 0xc0, 0x39, 0x40, 0xab, 0x76, 0xce, 0x46, 0x16,
	0x3a, 0x5d, 0x2f, 0x59, 0x16, 0xb9, 0x42, 0xb3, 0x76, 0x16, 0x97, 0x6f, 0x21, 0xde, 0xdc, 0x37,
	0x8c, 0xd0, 0x3f, 0xb8, 0x80, 0x84, 0x35, 0xdd, 0xb1, 0x6f, 0x8e, 0xd4, 0x6d, 0x7d, 0x8e, 0x11,
	0x21, 0xb8, 0xe1, 0x07, 0xea, 0xde, 0xdf, 0xe2, 0xf2, 0x7a, 0x94, 0x0a, 0xf3, 0x17, 0x4a, 0x1f,
	0xa8, 0x94, 0x4e, 0xe8, 0x22, 0x5c, 0x41, 0x24, 0xa9, 0xea, 0x99, 0x7e, 0x6c, 0xd9, 0xd1, 0xe5,
	0x12, 0x92, 0xad, 0x6c, 0x3b, 0x6d, 0xe6, 0xbb, 0xfb, 0xf0, 0x2e, 0xf7, 0xf1, 0xea, 0x9c, 0x15,
	0xa6, 0x15, 0xb7, 0x5a, 0x77, 0x5c, 0x97, 0x56, 0x03, 0xbd, 0xfe, 0x08, 0xc9, 0x57, 0xae, 0x29,
	0xd9, 0x6c, 0x3f, 0xe3, 0x12, 0x02, 0xb3, 0x1a, 0x26, 0xb5, 0x33, 0xb7, 0x18, 0x91, 0x28, 0x27,
	0xb8, 0x82, 0xd0, 0xb6, 0xc5, 0xb4, 0x1e, 0x87, 0x2f, 0xce, 0x50, 0x94, 0x93, 0xeb, 0xf0, 0x97,
	0x2f, 0x4e, 0xc7, 0x7d, 0x64, 0xef, 0xfb, 0xcd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0xec,
	0xf3, 0x5a, 0xf1, 0x02, 0x00, 0x00,
}

var _ context.Context
var _ grpc.ClientConn

const _ = grpc.SupportPackageIsVersion4

type NoteREPLClient interface {
	Eval(ctx context.Context, in *EvalReq, opts ...grpc.CallOption) (*EvalRep, error)
	Print(ctx context.Context, in *PrintReq, opts ...grpc.CallOption) (*PrintRep, error)
}

type noteREPLClient struct {
	cc *grpc.ClientConn
}

func NewNoteREPLClient(cc *grpc.ClientConn) NoteREPLClient {
	return &noteREPLClient{cc}
}

func (c *noteREPLClient) Eval(ctx context.Context, in *EvalReq, opts ...grpc.CallOption) (*EvalRep, error) {
	out := new(EvalRep)
	err := c.cc.Invoke(ctx, "/NoteREPL/Eval", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *noteREPLClient) Print(ctx context.Context, in *PrintReq, opts ...grpc.CallOption) (*PrintRep, error) {
	out := new(PrintRep)
	err := c.cc.Invoke(ctx, "/NoteREPL/Print", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

type NoteREPLServer interface {
	Eval(context.Context, *EvalReq) (*EvalRep, error)
	Print(context.Context, *PrintReq) (*PrintRep, error)
}

func RegisterNoteREPLServer(s *grpc.Server, srv NoteREPLServer) {
	s.RegisterService(&_NoteREPL_serviceDesc, srv)
}

func _NoteREPL_Eval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(EvalReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NoteREPLServer).Eval(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/NoteREPL/Eval",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NoteREPLServer).Eval(ctx, req.(*EvalReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _NoteREPL_Print_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PrintReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NoteREPLServer).Print(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/NoteREPL/Print",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NoteREPLServer).Print(ctx, req.(*PrintReq))
	}
	return interceptor(ctx, in, info, handler)
}

var _NoteREPL_serviceDesc = grpc.ServiceDesc{
	ServiceName: "NoteREPL",
	HandlerType: (*NoteREPLServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Eval",
			Handler:    _NoteREPL_Eval_Handler,
		},
		{
			MethodName: "Print",
			Handler:    _NoteREPL_Print_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "noterepl.proto",
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: noterepl.proto

package pkg

import (
	context "context"
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	grpc "google.golang.org/grpc"
	math "math"
)

// 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 Value_Kind int32

const (
	Value_EMPTY      Value_Kind = 0
	Value_is_null    Value_Kind = 1
	Value_is_str     Value_Kind = 2
	Value_is_number  Value_Kind = 3
	Value_is_list    Value_Kind = 4
	Value_is_hashmap Value_Kind = 5
	Value_is_url     Value_Kind = 6
	Value_is_bool    Value_Kind = 7
)

var Value_Kind_name = map[int32]string{
	0: "EMPTY",
	1: "is_null",
	2: "is_str",
	3: "is_number",
	4: "is_list",
	5: "is_hashmap",
	6: "is_url",
	7: "is_bool",
}

var Value_Kind_value = map[string]int32{
	"EMPTY":      0,
	"is_null":    1,
	"is_str":     2,
	"is_number":  3,
	"is_list":    4,
	"is_hashmap": 5,
	"is_url":     6,
	"is_bool":    7,
}

func (x Value_Kind) String() string {
	return proto.EnumName(Value_Kind_name, int32(x))
}

func (Value_Kind) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_c16ddaca6537879b, []int{1, 0}
}

type Object struct {
	Value                *Value   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	Ptr                  uint64   `protobuf:"varint,2,opt,name=ptr,proto3" json:"ptr,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *Object) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Object.Unmarshal(m, b)
}
func (m *Object) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Object.Marshal(b, m, deterministic)
}
func (m *Object) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Object.Merge(m, src)
}
func (m *Object) XXX_Size() int {
	return xxx_messageInfo_Object.Size(m)
}
func (m *Object) XXX_DiscardUnknown() {
	xxx_messageInfo_Object.DiscardUnknown(m)
}

var xxx_messageInfo_Object proto.InternalMessageInfo

func (m *Object) GetValue() *Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *Object) GetPtr() uint64 {
	if m != nil {
		return m.Ptr
	}
	return 0
}

// Only one of these fields are ever set at once
// Not using `oneof` here as types gets less weird this way.
type Value struct {
	Kind                 Value_Kind         `protobuf:"varint,1,opt,name=kind,proto3,enum=Value_Kind" json:"kind,omitempty"`
	Str                  string             `protobuf:"bytes,2,opt,name=str,proto3" json:"str,omitempty"`
	Number               float64            `protobuf:"fixed64,3,opt,name=number,proto3" json:"number,omitempty"`
	List                 []*Object          `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`
	Hashmap              map[string]*Object `protobuf:"bytes,5,rep,name=hashmap,proto3" json:"hashmap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Url                  string             `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"`
	Boolean              bool               `protobuf:"varint,7,opt,name=boolean,proto3" json:"boolean,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

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

func (m *Value) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Value.Unmarshal(m, b)
}
func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
}
func (m *Value) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Value.Merge(m, src)
}
func (m *Value) XXX_Size() int {
	return xxx_messageInfo_Value.Size(m)
}
func (m *Value) XXX_DiscardUnknown() {
	xxx_messageInfo_Value.DiscardUnknown(m)
}

var xxx_messageInfo_Value proto.InternalMessageInfo

func (m *Value) GetKind() Value_Kind {
	if m != nil {
		return m.Kind
	}
	return Value_EMPTY
}

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

func (m *Value) GetNumber() float64 {
	if m != nil {
		return m.Number
	}
	return 0
}

func (m *Value) GetList() []*Object {
	if m != nil {
		return m.List
	}
	return nil
}

func (m *Value) GetHashmap() map[string]*Object {
	if m != nil {
		return m.Hashmap
	}
	return nil
}

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

func (m *Value) GetBoolean() bool {
	if m != nil {
		return m.Boolean
	}
	return false
}

type EvalReq struct {
	Language             string   `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"`
	Code                 string   `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *EvalReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvalReq.Unmarshal(m, b)
}
func (m *EvalReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvalReq.Marshal(b, m, deterministic)
}
func (m *EvalReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvalReq.Merge(m, src)
}
func (m *EvalReq) XXX_Size() int {
	return xxx_messageInfo_EvalReq.Size(m)
}
func (m *EvalReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EvalReq.DiscardUnknown(m)
}

var xxx_messageInfo_EvalReq proto.InternalMessageInfo

func (m *EvalReq) GetLanguage() string {
	if m != nil {
		return m.Language
	}
	return ""
}

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

type EvalRep struct {
	Stderr               string   `protobuf:"bytes,1,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Result               *Object  `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *EvalRep) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvalRep.Unmarshal(m, b)
}
func (m *EvalRep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvalRep.Marshal(b, m, deterministic)
}
func (m *EvalRep) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvalRep.Merge(m, src)
}
func (m *EvalRep) XXX_Size() int {
	return xxx_messageInfo_EvalRep.Size(m)
}
func (m *EvalRep) XXX_DiscardUnknown() {
	xxx_messageInfo_EvalRep.DiscardUnknown(m)
}

var xxx_messageInfo_EvalRep proto.InternalMessageInfo

func (m *EvalRep) GetStderr() string {
	if m != nil {
		return m.Stderr
	}
	return ""
}

func (m *EvalRep) GetResult() *Object {
	if m != nil {
		return m.Result
	}
	return nil
}

type PrintReq struct {
	Ptr                  uint64   `protobuf:"varint,1,opt,name=ptr,proto3" json:"ptr,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *PrintReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PrintReq.Unmarshal(m, b)
}
func (m *PrintReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PrintReq.Marshal(b, m, deterministic)
}
func (m *PrintReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PrintReq.Merge(m, src)
}
func (m *PrintReq) XXX_Size() int {
	return xxx_messageInfo_PrintReq.Size(m)
}
func (m *PrintReq) XXX_DiscardUnknown() {
	xxx_messageInfo_PrintReq.DiscardUnknown(m)
}

var xxx_messageInfo_PrintReq proto.InternalMessageInfo

func (m *PrintReq) GetPtr() uint64 {
	if m != nil {
		return m.Ptr
	}
	return 0
}

type PrintRep struct {
	Object               *Object  `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *PrintRep) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PrintRep.Unmarshal(m, b)
}
func (m *PrintRep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PrintRep.Marshal(b, m, deterministic)
}
func (m *PrintRep) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PrintRep.Merge(m, src)
}
func (m *PrintRep) XXX_Size() int {
	return xxx_messageInfo_PrintRep.Size(m)
}
func (m *PrintRep) XXX_DiscardUnknown() {
	xxx_messageInfo_PrintRep.DiscardUnknown(m)
}

var xxx_messageInfo_PrintRep proto.InternalMessageInfo

func (m *PrintRep) GetObject() *Object {
	if m != nil {
		return m.Object
	}
	return nil
}

func init() {
	proto.RegisterEnum("Value_Kind", Value_Kind_name, Value_Kind_value)
	proto.RegisterType((*Object)(nil), "Object")
	proto.RegisterType((*Value)(nil), "Value")
	proto.RegisterMapType((map[string]*Object)(nil), "Value.HashmapEntry")
	proto.RegisterType((*EvalReq)(nil), "EvalReq")
	proto.RegisterType((*EvalRep)(nil), "EvalRep")
	proto.RegisterType((*PrintReq)(nil), "PrintReq")
	proto.RegisterType((*PrintRep)(nil), "PrintRep")
}

func init() { proto.RegisterFile("noterepl.proto", fileDescriptor_c16ddaca6537879b) }

var fileDescriptor_c16ddaca6537879b = []byte{
	// 454 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x52, 0x4d, 0x8b, 0xdb, 0x30,
	0x10, 0x8d, 0xe3, 0xef, 0x49, 0x1b, 0xcc, 0x14, 0x8a, 0x49, 0x53, 0x62, 0x7c, 0x32, 0x94, 0xfa,
	0x90, 0x5e, 0xb6, 0x3d, 0x6e, 0x09, 0xb4, 0xf4, 0x2b, 0x88, 0x52, 0x68, 0x2f, 0xc1, 0xd9, 0x88,
	0xac, 0x1b, 0xad, 0xa5, 0x4a, 0xf2, 0xc2, 0xde, 0xfa, 0xd3, 0x8b, 0x64, 0x39, 0x29, 0x7b, 0x7b,
	0xf3, 0x66, 0xde, 0xcc, 0x3c, 0x69, 0x60, 0xde, 0x71, 0x4d, 0x25, 0x15, 0xac, 0x16, 0x92, 0x6b,
	0x5e, 0x5e, 0x41, 0xf4, 0x6d, 0xff, 0x9b, 0xde, 0x68, 0x5c, 0x42, 0x78, 0xdf, 0xb0, 0x9e, 0xe6,
	0x5e, 0xe1, 0x55, 0xb3, 0x75, 0x54, 0xff, 0x30, 0x11, 0x19, 0x48, 0xcc, 0xc0, 0x17, 0x5a, 0xe6,
	0xd3, 0xc2, 0xab, 0x02, 0x62, 0x60, 0xf9, 0xd7, 0x87, 0xd0, 0x96, 0xe0, 0x0a, 0x82, 0x53, 0xdb,
	0x1d, 0xac, 0x70, 0xbe, 0x9e, 0x0d, 0xc2, 0xfa, 0x53, 0xdb, 0x1d, 0x88, 0x4d, 0x18, 0xb1, 0x72,
	0xe2, 0x94, 0x18, 0x88, 0xcf, 0x21, 0xea, 0xfa, 0xbb, 0x3d, 0x95, 0xb9, 0x5f, 0x78, 0x95, 0x47,
	0x5c, 0x84, 0x2f, 0x20, 0x60, 0xad, 0xd2, 0x79, 0x50, 0xf8, 0xd5, 0x6c, 0x1d, 0xd7, 0xc3, 0x6e,
	0xc4, 0x92, 0xf8, 0x1a, 0xe2, 0xdb, 0x46, 0xdd, 0xde, 0x35, 0x22, 0x0f, 0x6d, 0xfe, 0x99, 0x1b,
	0xf5, 0x61, 0x60, 0x37, 0x9d, 0x96, 0x0f, 0x64, 0xac, 0x31, 0x53, 0x7b, 0xc9, 0xf2, 0x68, 0x98,
	0xda, 0x4b, 0x86, 0x39, 0xc4, 0x7b, 0xce, 0x19, 0x6d, 0xba, 0x3c, 0x2e, 0xbc, 0x2a, 0x21, 0x63,
	0xb8, 0x78, 0x0f, 0x4f, 0xfe, 0x6f, 0x62, 0xb4, 0x27, 0xfa, 0x60, 0x1d, 0xa5, 0xc4, 0x40, 0x7c,
	0x39, 0x3e, 0xcf, 0xd4, 0x3e, 0xcf, 0x79, 0xb5, 0x81, 0x7d, 0x37, 0xbd, 0xf2, 0x4a, 0x0e, 0x81,
	0x31, 0x8d, 0x29, 0x84, 0x9b, 0x2f, 0xdb, 0xef, 0x3f, 0xb3, 0x09, 0xce, 0x20, 0x6e, 0xd5, 0xae,
	0xeb, 0x19, 0xcb, 0x3c, 0x04, 0x88, 0x5a, 0xb5, 0x53, 0x5a, 0x66, 0x53, 0x7c, 0x0a, 0xa9, 0x4d,
	0x18, 0xd7, 0x99, 0xef, 0xea, 0x8c, 0xcb, 0x2c, 0xc0, 0x39, 0x40, 0xab, 0x76, 0xce, 0x46, 0x16,
	0x3a, 0x5d, 0x2f, 0x59, 0x16, 0xb9, 0x42, 0xb3, 0x76, 0x16, 0x97, 0x6f, 0x21, 0xde, 0xdc, 0x37,
	0x8c, 0xd0, 0x3f, 0xb8, 0x80, 0x84, 0x35, 0xdd, 0xb1, 0x6f, 0x8e, 0xd4, 0x6d, 0x7d, 0x8e, 0x11,
	0x21, 0xb8, 0xe1, 0x07, 0xea, 0xde, 0xdf, 0xe2, 0xf2, 0x7a, 0x94, 0x0a, 0xf3, 0x17, 0x4a, 0x1f,
	0xa8, 0x94, 0x4e, 0xe8, 0x22, 0x5c, 0x41, 0x24, 0xa9, 0xea, 0x99, 0x7e, 0x6c, 0xd9, 0xd1, 0xe5,
	0x12, 0x92, 0xad, 0x6c, 0x3b, 0x6d, 0xe6, 0xbb, 0xfb, 0xf0, 0x2e, 0xf7, 0xf1, 0xea, 0x9c, 0x15,
	0xa6, 0x15, 0xb7, 0x5a, 0x77, 0x5c, 0x97, 0x56, 0x03, 0xbd, 0xfe, 0x08, 0xc9, 0x57, 0xae, 0x29,
	0xd9, 0x6c, 0x3f, 0xe3, 0x12, 0x02, 0xb3, 0x1a, 0x26, 0xb5, 0x33, 0xb7, 0x18, 0x91, 0x28, 0x27,
	0xb8, 0x82, 0xd0, 0xb6, 0xc5, 0xb4, 0x1e, 0x87, 0x2f, 0xce, 0x50, 0x94, 0x93, 0xeb, 0xf0, 0x97,
	0x2f, 0x4e, 0xc7, 0x7d, 0x64, 0xef, 0xfb, 0xcd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0xec,
	0xf3, 0x5a, 0xf1, 0x02, 0x00, 0x00,
}

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

// NoteREPLClient is the client API for NoteREPL service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type NoteREPLClient interface {
	Eval(ctx context.Context, in *EvalReq, opts ...grpc.CallOption) (*EvalRep, error)
	Print(ctx context.Context, in *PrintReq, opts ...grpc.CallOption) (*PrintRep, error)
}

type noteREPLClient struct {
	cc *grpc.ClientConn
}

func NewNoteREPLClient(cc *grpc.ClientConn) NoteREPLClient {
	return &noteREPLClient{cc}
}

func (c *noteREPLClient) Eval(ctx context.Context, in *EvalReq, opts ...grpc.CallOption) (*EvalRep, error) {
	out := new(EvalRep)
	err := c.cc.Invoke(ctx, "/NoteREPL/Eval", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *noteREPLClient) Print(ctx context.Context, in *PrintReq, opts ...grpc.CallOption) (*PrintRep, error) {
	out := new(PrintRep)
	err := c.cc.Invoke(ctx, "/NoteREPL/Print", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// NoteREPLServer is the server API for NoteREPL service.
type NoteREPLServer interface {
	Eval(context.Context, *EvalReq) (*EvalRep, error)
	Print(context.Context, *PrintReq) (*PrintRep, error)
}

func RegisterNoteREPLServer(s *grpc.Server, srv NoteREPLServer) {
	s.RegisterService(&_NoteREPL_serviceDesc, srv)
}

func _NoteREPL_Eval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(EvalReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NoteREPLServer).Eval(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/NoteREPL/Eval",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NoteREPLServer).Eval(ctx, req.(*EvalReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _NoteREPL_Print_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PrintReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NoteREPLServer).Print(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/NoteREPL/Print",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NoteREPLServer).Print(ctx, req.(*PrintReq))
	}
	return interceptor(ctx, in, info, handler)
}

var _NoteREPL_serviceDesc = grpc.ServiceDesc{
	ServiceName: "NoteREPL",
	HandlerType: (*NoteREPLServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Eval",
			Handler:    _NoteREPL_Eval_Handler,
		},
		{
			MethodName: "Print",
			Handler:    _NoteREPL_Print_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "noterepl.proto",
}
