vtrpc.pb.go 20.8 KB
Newer Older
martianzhang's avatar
martianzhang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: vtrpc.proto

package vtrpc // import "vitess.io/vitess/go/vt/proto/vtrpc"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import 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

// Code represents canonical error codes. The names, numbers and comments
// must match the ones defined by grpc:
// https://godoc.org/google.golang.org/grpc/codes.
type Code int32

const (
	// OK is returned on success.
	Code_OK Code = 0
	// CANCELED indicates the operation was cancelled (typically by the caller).
	Code_CANCELED Code = 1
	// UNKNOWN error. An example of where this error may be returned is
	// if a Status value received from another address space belongs to
	// an error-space that is not known in this address space. Also
	// errors raised by APIs that do not return enough error information
	// may be converted to this error.
	Code_UNKNOWN Code = 2
	// INVALID_ARGUMENT indicates client specified an invalid argument.
	// Note that this differs from FAILED_PRECONDITION. It indicates arguments
	// that are problematic regardless of the state of the system
	// (e.g., a malformed file name).
	Code_INVALID_ARGUMENT Code = 3
	// DEADLINE_EXCEEDED means operation expired before completion.
	// For operations that change the state of the system, this error may be
	// returned even if the operation has completed successfully. For
	// example, a successful response from a server could have been delayed
	// long enough for the deadline to expire.
	Code_DEADLINE_EXCEEDED Code = 4
	// NOT_FOUND means some requested entity (e.g., file or directory) was
	// not found.
	Code_NOT_FOUND Code = 5
	// ALREADY_EXISTS means an attempt to create an entity failed because one
	// already exists.
	Code_ALREADY_EXISTS Code = 6
	// PERMISSION_DENIED indicates the caller does not have permission to
	// execute the specified operation. It must not be used for rejections
	// caused by exhausting some resource (use RESOURCE_EXHAUSTED
	// instead for those errors).  It must not be
	// used if the caller cannot be identified (use Unauthenticated
	// instead for those errors).
	Code_PERMISSION_DENIED Code = 7
	// UNAUTHENTICATED indicates the request does not have valid
	// authentication credentials for the operation.
	Code_UNAUTHENTICATED Code = 16
	// RESOURCE_EXHAUSTED indicates some resource has been exhausted, perhaps
	// a per-user quota, or perhaps the entire file system is out of space.
	Code_RESOURCE_EXHAUSTED Code = 8
	// FAILED_PRECONDITION indicates operation was rejected because the
	// system is not in a state required for the operation's execution.
	// For example, directory to be deleted may be non-empty, an rmdir
	// operation is applied to a non-directory, etc.
	//
	// A litmus test that may help a service implementor in deciding
	// between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
	//  (a) Use UNAVAILABLE if the client can retry just the failing call.
	//  (b) Use ABORTED if the client should retry at a higher-level
	//      (e.g., restarting a read-modify-write sequence).
	//  (c) Use FAILED_PRECONDITION if the client should not retry until
	//      the system state has been explicitly fixed.  E.g., if an "rmdir"
	//      fails because the directory is non-empty, FAILED_PRECONDITION
	//      should be returned since the client should not retry unless
	//      they have first fixed up the directory by deleting files from it.
	//  (d) Use FAILED_PRECONDITION if the client performs conditional
	//      REST Get/Update/Delete on a resource and the resource on the
	//      server does not match the condition. E.g., conflicting
	//      read-modify-write on the same resource.
	Code_FAILED_PRECONDITION Code = 9
	// ABORTED indicates the operation was aborted, typically due to a
	// concurrency issue like sequencer check failures, transaction aborts,
	// etc.
	//
	// See litmus test above for deciding between FAILED_PRECONDITION,
	// ABORTED, and UNAVAILABLE.
	Code_ABORTED Code = 10
	// OUT_OF_RANGE means operation was attempted past the valid range.
	// E.g., seeking or reading past end of file.
	//
	// Unlike INVALID_ARGUMENT, this error indicates a problem that may
	// be fixed if the system state changes. For example, a 32-bit file
	// system will generate INVALID_ARGUMENT if asked to read at an
	// offset that is not in the range [0,2^32-1], but it will generate
	// OUT_OF_RANGE if asked to read from an offset past the current
	// file size.
	//
	// There is a fair bit of overlap between FAILED_PRECONDITION and
	// OUT_OF_RANGE.  We recommend using OUT_OF_RANGE (the more specific
	// error) when it applies so that callers who are iterating through
	// a space can easily look for an OUT_OF_RANGE error to detect when
	// they are done.
	Code_OUT_OF_RANGE Code = 11
	// UNIMPLEMENTED indicates operation is not implemented or not
	// supported/enabled in this service.
	Code_UNIMPLEMENTED Code = 12
	// INTERNAL errors. Means some invariants expected by underlying
	// system has been broken.  If you see one of these errors,
	// something is very broken.
	Code_INTERNAL Code = 13
	// UNAVAILABLE indicates the service is currently unavailable.
	// This is a most likely a transient condition and may be corrected
	// by retrying with a backoff.
	//
	// See litmus test above for deciding between FAILED_PRECONDITION,
	// ABORTED, and UNAVAILABLE.
	Code_UNAVAILABLE Code = 14
	// DATA_LOSS indicates unrecoverable data loss or corruption.
	Code_DATA_LOSS Code = 15
)

var Code_name = map[int32]string{
	0:  "OK",
	1:  "CANCELED",
	2:  "UNKNOWN",
	3:  "INVALID_ARGUMENT",
	4:  "DEADLINE_EXCEEDED",
	5:  "NOT_FOUND",
	6:  "ALREADY_EXISTS",
	7:  "PERMISSION_DENIED",
	16: "UNAUTHENTICATED",
	8:  "RESOURCE_EXHAUSTED",
	9:  "FAILED_PRECONDITION",
	10: "ABORTED",
	11: "OUT_OF_RANGE",
	12: "UNIMPLEMENTED",
	13: "INTERNAL",
	14: "UNAVAILABLE",
	15: "DATA_LOSS",
}
var Code_value = map[string]int32{
	"OK":                  0,
	"CANCELED":            1,
	"UNKNOWN":             2,
	"INVALID_ARGUMENT":    3,
	"DEADLINE_EXCEEDED":   4,
	"NOT_FOUND":           5,
	"ALREADY_EXISTS":      6,
	"PERMISSION_DENIED":   7,
	"UNAUTHENTICATED":     16,
	"RESOURCE_EXHAUSTED":  8,
	"FAILED_PRECONDITION": 9,
	"ABORTED":             10,
	"OUT_OF_RANGE":        11,
	"UNIMPLEMENTED":       12,
	"INTERNAL":            13,
	"UNAVAILABLE":         14,
	"DATA_LOSS":           15,
}

func (x Code) String() string {
	return proto.EnumName(Code_name, int32(x))
}
func (Code) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_vtrpc_63266364cf161411, []int{0}
}

// LegacyErrorCode is the enum values for Errors. This type is deprecated.
// Use Code instead. Background: In the initial design, we thought
// that we may end up with a different list of canonical error codes
// than the ones defined by grpc. In hindisght, we realize that
// the grpc error codes are fairly generic and mostly sufficient.
// In order to avoid confusion, this type will be deprecated in
// favor of the new Code that matches exactly what grpc defines.
// Some names below have a _LEGACY suffix. This is to prevent
// name collisions with Code.
type LegacyErrorCode int32

const (
	// SUCCESS_LEGACY is returned from a successful call.
	LegacyErrorCode_SUCCESS_LEGACY LegacyErrorCode = 0
	// CANCELLED_LEGACY means that the context was cancelled (and noticed in the app layer,
	// as opposed to the RPC layer).
	LegacyErrorCode_CANCELLED_LEGACY LegacyErrorCode = 1
	// UNKNOWN_ERROR_LEGACY includes:
	// 1. MySQL error codes that we don't explicitly handle.
	// 2. MySQL response that wasn't as expected. For example, we might expect a MySQL
	//  timestamp to be returned in a particular way, but it wasn't.
	// 3. Anything else that doesn't fall into a different bucket.
	LegacyErrorCode_UNKNOWN_ERROR_LEGACY LegacyErrorCode = 2
	// BAD_INPUT_LEGACY is returned when an end-user either sends SQL that couldn't be parsed correctly,
	// or tries a query that isn't supported by Vitess.
	LegacyErrorCode_BAD_INPUT_LEGACY LegacyErrorCode = 3
	// DEADLINE_EXCEEDED_LEGACY is returned when an action is taking longer than a given timeout.
	LegacyErrorCode_DEADLINE_EXCEEDED_LEGACY LegacyErrorCode = 4
	// INTEGRITY_ERROR_LEGACY is returned on integrity error from MySQL, usually due to
	// duplicate primary keys.
	LegacyErrorCode_INTEGRITY_ERROR_LEGACY LegacyErrorCode = 5
	// PERMISSION_DENIED_LEGACY errors are returned when a user requests access to something
	// that they don't have permissions for.
	LegacyErrorCode_PERMISSION_DENIED_LEGACY LegacyErrorCode = 6
	// RESOURCE_EXHAUSTED_LEGACY is returned when a query exceeds its quota in some dimension
	// and can't be completed due to that. Queries that return RESOURCE_EXHAUSTED
	// should not be retried, as it could be detrimental to the server's health.
	// Examples of errors that will cause the RESOURCE_EXHAUSTED code:
	// 1. TxPoolFull: this is retried server-side, and is only returned as an error
	//  if the server-side retries failed.
	// 2. Query is killed due to it taking too long.
	LegacyErrorCode_RESOURCE_EXHAUSTED_LEGACY LegacyErrorCode = 7
	// QUERY_NOT_SERVED_LEGACY means that a query could not be served right now.
	// Client can interpret it as: "the tablet that you sent this query to cannot
	// serve the query right now, try a different tablet or try again later."
	// This could be due to various reasons: QueryService is not serving, should
	// not be serving, wrong shard, wrong tablet type, blacklisted table, etc.
	// Clients that receive this error should usually retry the query, but after taking
	// the appropriate steps to make sure that the query will get sent to the correct
	// tablet.
	LegacyErrorCode_QUERY_NOT_SERVED_LEGACY LegacyErrorCode = 8
	// NOT_IN_TX_LEGACY means that we're not currently in a transaction, but we should be.
	LegacyErrorCode_NOT_IN_TX_LEGACY LegacyErrorCode = 9
	// INTERNAL_ERROR_LEGACY means some invariants expected by underlying
	// system has been broken.  If you see one of these errors,
	// something is very broken.
	LegacyErrorCode_INTERNAL_ERROR_LEGACY LegacyErrorCode = 10
	// TRANSIENT_ERROR_LEGACY is used for when there is some error that we expect we can
	// recover from automatically - often due to a resource limit temporarily being
	// reached. Retrying this error, with an exponential backoff, should succeed.
	// Clients should be able to successfully retry the query on the same backends.
	// Examples of things that can trigger this error:
	// 1. Query has been throttled
	// 2. VtGate could have request backlog
	LegacyErrorCode_TRANSIENT_ERROR_LEGACY LegacyErrorCode = 11
	// UNAUTHENTICATED_LEGACY errors are returned when a user requests access to something,
	// and we're unable to verify the user's authentication.
	LegacyErrorCode_UNAUTHENTICATED_LEGACY LegacyErrorCode = 12
)

var LegacyErrorCode_name = map[int32]string{
	0:  "SUCCESS_LEGACY",
	1:  "CANCELLED_LEGACY",
	2:  "UNKNOWN_ERROR_LEGACY",
	3:  "BAD_INPUT_LEGACY",
	4:  "DEADLINE_EXCEEDED_LEGACY",
	5:  "INTEGRITY_ERROR_LEGACY",
	6:  "PERMISSION_DENIED_LEGACY",
	7:  "RESOURCE_EXHAUSTED_LEGACY",
	8:  "QUERY_NOT_SERVED_LEGACY",
	9:  "NOT_IN_TX_LEGACY",
	10: "INTERNAL_ERROR_LEGACY",
	11: "TRANSIENT_ERROR_LEGACY",
	12: "UNAUTHENTICATED_LEGACY",
}
var LegacyErrorCode_value = map[string]int32{
	"SUCCESS_LEGACY":            0,
	"CANCELLED_LEGACY":          1,
	"UNKNOWN_ERROR_LEGACY":      2,
	"BAD_INPUT_LEGACY":          3,
	"DEADLINE_EXCEEDED_LEGACY":  4,
	"INTEGRITY_ERROR_LEGACY":    5,
	"PERMISSION_DENIED_LEGACY":  6,
	"RESOURCE_EXHAUSTED_LEGACY": 7,
	"QUERY_NOT_SERVED_LEGACY":   8,
	"NOT_IN_TX_LEGACY":          9,
	"INTERNAL_ERROR_LEGACY":     10,
	"TRANSIENT_ERROR_LEGACY":    11,
	"UNAUTHENTICATED_LEGACY":    12,
}

func (x LegacyErrorCode) String() string {
	return proto.EnumName(LegacyErrorCode_name, int32(x))
}
func (LegacyErrorCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_vtrpc_63266364cf161411, []int{1}
}

// CallerID is passed along RPCs to identify the originating client
// for a request. It is not meant to be secure, but only
// informational.  The client can put whatever info they want in these
// fields, and they will be trusted by the servers. The fields will
// just be used for logging purposes, and to easily find a client.
// VtGate propagates it to VtTablet, and VtTablet may use this
// information for monitoring purposes, to display on dashboards, or
// for blacklisting purposes.
type CallerID struct {
	// principal is the effective user identifier. It is usually filled in
	// with whoever made the request to the appserver, if the request
	// came from an automated job or another system component.
	// If the request comes directly from the Internet, or if the Vitess client
	// takes action on its own accord, it is okay for this field to be absent.
martianzhang's avatar
martianzhang 已提交
296
	Principal string `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"`
martianzhang's avatar
martianzhang 已提交
297 298 299
	// component describes the running process of the effective caller.
	// It can for instance be the hostname:port of the servlet initiating the
	// database call, or the container engine ID used by the servlet.
martianzhang's avatar
martianzhang 已提交
300
	Component string `protobuf:"bytes,2,opt,name=component,proto3" json:"component,omitempty"`
martianzhang's avatar
martianzhang 已提交
301 302 303
	// subcomponent describes a component inisde the immediate caller which
	// is responsible for generating is request. Suggested values are a
	// servlet name or an API endpoint name.
martianzhang's avatar
martianzhang 已提交
304
	Subcomponent         string   `protobuf:"bytes,3,opt,name=subcomponent,proto3" json:"subcomponent,omitempty"`
martianzhang's avatar
martianzhang 已提交
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CallerID) Reset()         { *m = CallerID{} }
func (m *CallerID) String() string { return proto.CompactTextString(m) }
func (*CallerID) ProtoMessage()    {}
func (*CallerID) Descriptor() ([]byte, []int) {
	return fileDescriptor_vtrpc_63266364cf161411, []int{0}
}
func (m *CallerID) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CallerID.Unmarshal(m, b)
}
func (m *CallerID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CallerID.Marshal(b, m, deterministic)
}
func (dst *CallerID) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CallerID.Merge(dst, src)
}
func (m *CallerID) XXX_Size() int {
	return xxx_messageInfo_CallerID.Size(m)
}
func (m *CallerID) XXX_DiscardUnknown() {
	xxx_messageInfo_CallerID.DiscardUnknown(m)
}

var xxx_messageInfo_CallerID proto.InternalMessageInfo

func (m *CallerID) GetPrincipal() string {
	if m != nil {
		return m.Principal
	}
	return ""
}

func (m *CallerID) GetComponent() string {
	if m != nil {
		return m.Component
	}
	return ""
}

func (m *CallerID) GetSubcomponent() string {
	if m != nil {
		return m.Subcomponent
	}
	return ""
}

// RPCError is an application-level error structure returned by
// VtTablet (and passed along by VtGate if appropriate).
// We use this so the clients don't have to parse the error messages,
// but instead can depend on the value of the code.
type RPCError struct {
martianzhang's avatar
martianzhang 已提交
360 361 362
	LegacyCode           LegacyErrorCode `protobuf:"varint,1,opt,name=legacy_code,json=legacyCode,proto3,enum=vtrpc.LegacyErrorCode" json:"legacy_code,omitempty"`
	Message              string          `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Code                 Code            `protobuf:"varint,3,opt,name=code,proto3,enum=vtrpc.Code" json:"code,omitempty"`
martianzhang's avatar
martianzhang 已提交
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *RPCError) Reset()         { *m = RPCError{} }
func (m *RPCError) String() string { return proto.CompactTextString(m) }
func (*RPCError) ProtoMessage()    {}
func (*RPCError) Descriptor() ([]byte, []int) {
	return fileDescriptor_vtrpc_63266364cf161411, []int{1}
}
func (m *RPCError) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RPCError.Unmarshal(m, b)
}
func (m *RPCError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RPCError.Marshal(b, m, deterministic)
}
func (dst *RPCError) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RPCError.Merge(dst, src)
}
func (m *RPCError) XXX_Size() int {
	return xxx_messageInfo_RPCError.Size(m)
}
func (m *RPCError) XXX_DiscardUnknown() {
	xxx_messageInfo_RPCError.DiscardUnknown(m)
}

var xxx_messageInfo_RPCError proto.InternalMessageInfo

func (m *RPCError) GetLegacyCode() LegacyErrorCode {
	if m != nil {
		return m.LegacyCode
	}
	return LegacyErrorCode_SUCCESS_LEGACY
}

func (m *RPCError) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

func (m *RPCError) GetCode() Code {
	if m != nil {
		return m.Code
	}
	return Code_OK
}

func init() {
	proto.RegisterType((*CallerID)(nil), "vtrpc.CallerID")
	proto.RegisterType((*RPCError)(nil), "vtrpc.RPCError")
	proto.RegisterEnum("vtrpc.Code", Code_name, Code_value)
	proto.RegisterEnum("vtrpc.LegacyErrorCode", LegacyErrorCode_name, LegacyErrorCode_value)
}

func init() { proto.RegisterFile("vtrpc.proto", fileDescriptor_vtrpc_63266364cf161411) }

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