github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/protos/peer/chaincode.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: peer/chaincode.proto 3 4 package peer 5 6 import proto "github.com/golang/protobuf/proto" 7 import fmt "fmt" 8 import math "math" 9 import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" 10 11 // Reference imports to suppress errors if they are not otherwise used. 12 var _ = proto.Marshal 13 var _ = fmt.Errorf 14 var _ = math.Inf 15 16 // Confidentiality Levels 17 type ConfidentialityLevel int32 18 19 const ( 20 ConfidentialityLevel_PUBLIC ConfidentialityLevel = 0 21 ConfidentialityLevel_CONFIDENTIAL ConfidentialityLevel = 1 22 ) 23 24 var ConfidentialityLevel_name = map[int32]string{ 25 0: "PUBLIC", 26 1: "CONFIDENTIAL", 27 } 28 var ConfidentialityLevel_value = map[string]int32{ 29 "PUBLIC": 0, 30 "CONFIDENTIAL": 1, 31 } 32 33 func (x ConfidentialityLevel) String() string { 34 return proto.EnumName(ConfidentialityLevel_name, int32(x)) 35 } 36 func (ConfidentialityLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 37 38 type ChaincodeSpec_Type int32 39 40 const ( 41 ChaincodeSpec_UNDEFINED ChaincodeSpec_Type = 0 42 ChaincodeSpec_GOLANG ChaincodeSpec_Type = 1 43 ChaincodeSpec_NODE ChaincodeSpec_Type = 2 44 ChaincodeSpec_CAR ChaincodeSpec_Type = 3 45 ChaincodeSpec_JAVA ChaincodeSpec_Type = 4 46 ) 47 48 var ChaincodeSpec_Type_name = map[int32]string{ 49 0: "UNDEFINED", 50 1: "GOLANG", 51 2: "NODE", 52 3: "CAR", 53 4: "JAVA", 54 } 55 var ChaincodeSpec_Type_value = map[string]int32{ 56 "UNDEFINED": 0, 57 "GOLANG": 1, 58 "NODE": 2, 59 "CAR": 3, 60 "JAVA": 4, 61 } 62 63 func (x ChaincodeSpec_Type) String() string { 64 return proto.EnumName(ChaincodeSpec_Type_name, int32(x)) 65 } 66 func (ChaincodeSpec_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} } 67 68 type ChaincodeDeploymentSpec_ExecutionEnvironment int32 69 70 const ( 71 ChaincodeDeploymentSpec_DOCKER ChaincodeDeploymentSpec_ExecutionEnvironment = 0 72 ChaincodeDeploymentSpec_SYSTEM ChaincodeDeploymentSpec_ExecutionEnvironment = 1 73 ) 74 75 var ChaincodeDeploymentSpec_ExecutionEnvironment_name = map[int32]string{ 76 0: "DOCKER", 77 1: "SYSTEM", 78 } 79 var ChaincodeDeploymentSpec_ExecutionEnvironment_value = map[string]int32{ 80 "DOCKER": 0, 81 "SYSTEM": 1, 82 } 83 84 func (x ChaincodeDeploymentSpec_ExecutionEnvironment) String() string { 85 return proto.EnumName(ChaincodeDeploymentSpec_ExecutionEnvironment_name, int32(x)) 86 } 87 func (ChaincodeDeploymentSpec_ExecutionEnvironment) EnumDescriptor() ([]byte, []int) { 88 return fileDescriptor1, []int{5, 0} 89 } 90 91 // ChaincodeID contains the path as specified by the deploy transaction 92 // that created it as well as the hashCode that is generated by the 93 // system for the path. From the user level (ie, CLI, REST API and so on) 94 // deploy transaction is expected to provide the path and other requests 95 // are expected to provide the hashCode. The other value will be ignored. 96 // Internally, the structure could contain both values. For instance, the 97 // hashCode will be set when first generated using the path 98 type ChaincodeID struct { 99 // deploy transaction will use the path 100 Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` 101 // all other requests will use the name (really a hashcode) generated by 102 // the deploy transaction 103 Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` 104 // user friendly version name for the chaincode 105 Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` 106 } 107 108 func (m *ChaincodeID) Reset() { *m = ChaincodeID{} } 109 func (m *ChaincodeID) String() string { return proto.CompactTextString(m) } 110 func (*ChaincodeID) ProtoMessage() {} 111 func (*ChaincodeID) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 112 113 func (m *ChaincodeID) GetPath() string { 114 if m != nil { 115 return m.Path 116 } 117 return "" 118 } 119 120 func (m *ChaincodeID) GetName() string { 121 if m != nil { 122 return m.Name 123 } 124 return "" 125 } 126 127 func (m *ChaincodeID) GetVersion() string { 128 if m != nil { 129 return m.Version 130 } 131 return "" 132 } 133 134 // Carries the chaincode function and its arguments. 135 // UnmarshalJSON in transaction.go converts the string-based REST/JSON input to 136 // the []byte-based current ChaincodeInput structure. 137 type ChaincodeInput struct { 138 Args [][]byte `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"` 139 } 140 141 func (m *ChaincodeInput) Reset() { *m = ChaincodeInput{} } 142 func (m *ChaincodeInput) String() string { return proto.CompactTextString(m) } 143 func (*ChaincodeInput) ProtoMessage() {} 144 func (*ChaincodeInput) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } 145 146 func (m *ChaincodeInput) GetArgs() [][]byte { 147 if m != nil { 148 return m.Args 149 } 150 return nil 151 } 152 153 // Carries the chaincode specification. This is the actual metadata required for 154 // defining a chaincode. 155 type ChaincodeSpec struct { 156 Type ChaincodeSpec_Type `protobuf:"varint,1,opt,name=type,enum=protos.ChaincodeSpec_Type" json:"type,omitempty"` 157 ChaincodeId *ChaincodeID `protobuf:"bytes,2,opt,name=chaincode_id,json=chaincodeId" json:"chaincode_id,omitempty"` 158 Input *ChaincodeInput `protobuf:"bytes,3,opt,name=input" json:"input,omitempty"` 159 Timeout int32 `protobuf:"varint,4,opt,name=timeout" json:"timeout,omitempty"` 160 } 161 162 func (m *ChaincodeSpec) Reset() { *m = ChaincodeSpec{} } 163 func (m *ChaincodeSpec) String() string { return proto.CompactTextString(m) } 164 func (*ChaincodeSpec) ProtoMessage() {} 165 func (*ChaincodeSpec) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } 166 167 func (m *ChaincodeSpec) GetType() ChaincodeSpec_Type { 168 if m != nil { 169 return m.Type 170 } 171 return ChaincodeSpec_UNDEFINED 172 } 173 174 func (m *ChaincodeSpec) GetChaincodeId() *ChaincodeID { 175 if m != nil { 176 return m.ChaincodeId 177 } 178 return nil 179 } 180 181 func (m *ChaincodeSpec) GetInput() *ChaincodeInput { 182 if m != nil { 183 return m.Input 184 } 185 return nil 186 } 187 188 func (m *ChaincodeSpec) GetTimeout() int32 { 189 if m != nil { 190 return m.Timeout 191 } 192 return 0 193 } 194 195 type SenderSpec struct { 196 Sender []byte `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` 197 Counter uint64 `protobuf:"varint,2,opt,name=counter" json:"counter,omitempty"` 198 FeeLimit []byte `protobuf:"bytes,3,opt,name=fee_limit,json=feeLimit,proto3" json:"fee_limit,omitempty"` 199 Msg []byte `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` 200 } 201 202 func (m *SenderSpec) Reset() { *m = SenderSpec{} } 203 func (m *SenderSpec) String() string { return proto.CompactTextString(m) } 204 func (*SenderSpec) ProtoMessage() {} 205 func (*SenderSpec) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } 206 207 func (m *SenderSpec) GetSender() []byte { 208 if m != nil { 209 return m.Sender 210 } 211 return nil 212 } 213 214 func (m *SenderSpec) GetCounter() uint64 { 215 if m != nil { 216 return m.Counter 217 } 218 return 0 219 } 220 221 func (m *SenderSpec) GetFeeLimit() []byte { 222 if m != nil { 223 return m.FeeLimit 224 } 225 return nil 226 } 227 228 func (m *SenderSpec) GetMsg() []byte { 229 if m != nil { 230 return m.Msg 231 } 232 return nil 233 } 234 235 type SignContent struct { 236 ChaincodeSpec *ChaincodeSpec `protobuf:"bytes,1,opt,name=chaincode_spec,json=chaincodeSpec" json:"chaincode_spec,omitempty"` 237 IdGenerationAlg string `protobuf:"bytes,2,opt,name=id_generation_alg,json=idGenerationAlg" json:"id_generation_alg,omitempty"` 238 SenderSpec *SenderSpec `protobuf:"bytes,3,opt,name=sender_spec,json=senderSpec" json:"sender_spec,omitempty"` 239 } 240 241 func (m *SignContent) Reset() { *m = SignContent{} } 242 func (m *SignContent) String() string { return proto.CompactTextString(m) } 243 func (*SignContent) ProtoMessage() {} 244 func (*SignContent) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } 245 246 func (m *SignContent) GetChaincodeSpec() *ChaincodeSpec { 247 if m != nil { 248 return m.ChaincodeSpec 249 } 250 return nil 251 } 252 253 func (m *SignContent) GetIdGenerationAlg() string { 254 if m != nil { 255 return m.IdGenerationAlg 256 } 257 return "" 258 } 259 260 func (m *SignContent) GetSenderSpec() *SenderSpec { 261 if m != nil { 262 return m.SenderSpec 263 } 264 return nil 265 } 266 267 // Specify the deployment of a chaincode. 268 // TODO: Define `codePackage`. 269 type ChaincodeDeploymentSpec struct { 270 ChaincodeSpec *ChaincodeSpec `protobuf:"bytes,1,opt,name=chaincode_spec,json=chaincodeSpec" json:"chaincode_spec,omitempty"` 271 // Controls when the chaincode becomes executable. 272 EffectiveDate *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=effective_date,json=effectiveDate" json:"effective_date,omitempty"` 273 CodePackage []byte `protobuf:"bytes,3,opt,name=code_package,json=codePackage,proto3" json:"code_package,omitempty"` 274 ExecEnv ChaincodeDeploymentSpec_ExecutionEnvironment `protobuf:"varint,4,opt,name=exec_env,json=execEnv,enum=protos.ChaincodeDeploymentSpec_ExecutionEnvironment" json:"exec_env,omitempty"` 275 } 276 277 func (m *ChaincodeDeploymentSpec) Reset() { *m = ChaincodeDeploymentSpec{} } 278 func (m *ChaincodeDeploymentSpec) String() string { return proto.CompactTextString(m) } 279 func (*ChaincodeDeploymentSpec) ProtoMessage() {} 280 func (*ChaincodeDeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } 281 282 func (m *ChaincodeDeploymentSpec) GetChaincodeSpec() *ChaincodeSpec { 283 if m != nil { 284 return m.ChaincodeSpec 285 } 286 return nil 287 } 288 289 func (m *ChaincodeDeploymentSpec) GetEffectiveDate() *google_protobuf1.Timestamp { 290 if m != nil { 291 return m.EffectiveDate 292 } 293 return nil 294 } 295 296 func (m *ChaincodeDeploymentSpec) GetCodePackage() []byte { 297 if m != nil { 298 return m.CodePackage 299 } 300 return nil 301 } 302 303 func (m *ChaincodeDeploymentSpec) GetExecEnv() ChaincodeDeploymentSpec_ExecutionEnvironment { 304 if m != nil { 305 return m.ExecEnv 306 } 307 return ChaincodeDeploymentSpec_DOCKER 308 } 309 310 // Carries the chaincode function and its arguments. 311 type ChaincodeInvocationSpec struct { 312 ChaincodeSpec *ChaincodeSpec `protobuf:"bytes,1,opt,name=chaincode_spec,json=chaincodeSpec" json:"chaincode_spec,omitempty"` 313 // This field can contain a user-specified ID generation algorithm 314 // If supplied, this will be used to generate a ID 315 // If not supplied (left empty), sha256base64 will be used 316 // The algorithm consists of two parts: 317 // 1, a hash function 318 // 2, a decoding used to decode user (string) input to bytes 319 // Currently, SHA256 with BASE64 is supported (e.g. idGenerationAlg='sha256base64') 320 IdGenerationAlg string `protobuf:"bytes,2,opt,name=id_generation_alg,json=idGenerationAlg" json:"id_generation_alg,omitempty"` 321 SenderSpec *SenderSpec `protobuf:"bytes,3,opt,name=sender_spec,json=senderSpec" json:"sender_spec,omitempty"` 322 Sig []byte `protobuf:"bytes,4,opt,name=sig,proto3" json:"sig,omitempty"` 323 } 324 325 func (m *ChaincodeInvocationSpec) Reset() { *m = ChaincodeInvocationSpec{} } 326 func (m *ChaincodeInvocationSpec) String() string { return proto.CompactTextString(m) } 327 func (*ChaincodeInvocationSpec) ProtoMessage() {} 328 func (*ChaincodeInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } 329 330 func (m *ChaincodeInvocationSpec) GetChaincodeSpec() *ChaincodeSpec { 331 if m != nil { 332 return m.ChaincodeSpec 333 } 334 return nil 335 } 336 337 func (m *ChaincodeInvocationSpec) GetIdGenerationAlg() string { 338 if m != nil { 339 return m.IdGenerationAlg 340 } 341 return "" 342 } 343 344 func (m *ChaincodeInvocationSpec) GetSenderSpec() *SenderSpec { 345 if m != nil { 346 return m.SenderSpec 347 } 348 return nil 349 } 350 351 func (m *ChaincodeInvocationSpec) GetSig() []byte { 352 if m != nil { 353 return m.Sig 354 } 355 return nil 356 } 357 358 func init() { 359 proto.RegisterType((*ChaincodeID)(nil), "protos.ChaincodeID") 360 proto.RegisterType((*ChaincodeInput)(nil), "protos.ChaincodeInput") 361 proto.RegisterType((*ChaincodeSpec)(nil), "protos.ChaincodeSpec") 362 proto.RegisterType((*SenderSpec)(nil), "protos.SenderSpec") 363 proto.RegisterType((*SignContent)(nil), "protos.SignContent") 364 proto.RegisterType((*ChaincodeDeploymentSpec)(nil), "protos.ChaincodeDeploymentSpec") 365 proto.RegisterType((*ChaincodeInvocationSpec)(nil), "protos.ChaincodeInvocationSpec") 366 proto.RegisterEnum("protos.ConfidentialityLevel", ConfidentialityLevel_name, ConfidentialityLevel_value) 367 proto.RegisterEnum("protos.ChaincodeSpec_Type", ChaincodeSpec_Type_name, ChaincodeSpec_Type_value) 368 proto.RegisterEnum("protos.ChaincodeDeploymentSpec_ExecutionEnvironment", ChaincodeDeploymentSpec_ExecutionEnvironment_name, ChaincodeDeploymentSpec_ExecutionEnvironment_value) 369 } 370 371 func init() { proto.RegisterFile("peer/chaincode.proto", fileDescriptor1) } 372 373 var fileDescriptor1 = []byte{ 374 // 699 bytes of a gzipped FileDescriptorProto 375 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xdd, 0x6e, 0xeb, 0x44, 376 0x10, 0xae, 0x9b, 0xf4, 0x6f, 0x9c, 0x04, 0xb3, 0x94, 0x12, 0x95, 0x0b, 0x8a, 0xc5, 0x45, 0x55, 377 0x21, 0x47, 0xa4, 0x15, 0x57, 0x08, 0x29, 0x8d, 0xdd, 0xca, 0x10, 0x92, 0x6a, 0x93, 0x22, 0xc1, 378 0x4d, 0xe4, 0xd8, 0x13, 0x77, 0x55, 0x7b, 0xd7, 0xb2, 0x37, 0x51, 0xf3, 0x4e, 0x3c, 0x03, 0x0f, 379 0xc0, 0x4b, 0x81, 0x76, 0x1d, 0xbb, 0x54, 0xe9, 0xdd, 0x39, 0xe7, 0xca, 0x33, 0xe3, 0x99, 0x9d, 380 0xef, 0xfb, 0x66, 0x76, 0xe1, 0x34, 0x43, 0xcc, 0x7b, 0xe1, 0x53, 0xc0, 0x78, 0x28, 0x22, 0x74, 381 0xb2, 0x5c, 0x48, 0x41, 0x0e, 0xf5, 0xa7, 0x38, 0xff, 0x26, 0x16, 0x22, 0x4e, 0xb0, 0xa7, 0xdd, 382 0xc5, 0x6a, 0xd9, 0x93, 0x2c, 0xc5, 0x42, 0x06, 0x69, 0x56, 0x26, 0xda, 0x13, 0x30, 0x87, 0x55, 383 0xad, 0xef, 0x12, 0x02, 0xcd, 0x2c, 0x90, 0x4f, 0x5d, 0xe3, 0xc2, 0xb8, 0x3c, 0xa1, 0xda, 0x56, 384 0x31, 0x1e, 0xa4, 0xd8, 0xdd, 0x2f, 0x63, 0xca, 0x26, 0x5d, 0x38, 0x5a, 0x63, 0x5e, 0x30, 0xc1, 385 0xbb, 0x0d, 0x1d, 0xae, 0x5c, 0xfb, 0x3b, 0xe8, 0xbc, 0x1e, 0xc8, 0xb3, 0x95, 0x54, 0xf5, 0x41, 386 0x1e, 0x17, 0x5d, 0xe3, 0xa2, 0x71, 0xd9, 0xa2, 0xda, 0xb6, 0xff, 0x35, 0xa0, 0x5d, 0xa7, 0x4d, 387 0x33, 0x0c, 0x89, 0x03, 0x4d, 0xb9, 0xc9, 0x50, 0x77, 0xee, 0xf4, 0xcf, 0x4b, 0x78, 0x85, 0xf3, 388 0x26, 0xc9, 0x99, 0x6d, 0x32, 0xa4, 0x3a, 0x8f, 0xfc, 0x08, 0xad, 0x9a, 0xf4, 0x9c, 0x45, 0x1a, 389 0x9d, 0xd9, 0xff, 0x62, 0xa7, 0xce, 0x77, 0xa9, 0x59, 0x27, 0xfa, 0x11, 0xf9, 0x1e, 0x0e, 0x98, 390 0x82, 0xa5, 0x71, 0x9b, 0xfd, 0xb3, 0xdd, 0x02, 0xf5, 0x97, 0x96, 0x49, 0x8a, 0xa7, 0x52, 0x4c, 391 0xac, 0x64, 0xb7, 0x79, 0x61, 0x5c, 0x1e, 0xd0, 0xca, 0xb5, 0x7f, 0x86, 0xa6, 0x42, 0x43, 0xda, 392 0x70, 0xf2, 0x38, 0x76, 0xbd, 0x3b, 0x7f, 0xec, 0xb9, 0xd6, 0x1e, 0x01, 0x38, 0xbc, 0x9f, 0x8c, 393 0x06, 0xe3, 0x7b, 0xcb, 0x20, 0xc7, 0xd0, 0x1c, 0x4f, 0x5c, 0xcf, 0xda, 0x27, 0x47, 0xd0, 0x18, 394 0x0e, 0xa8, 0xd5, 0x50, 0xa1, 0x5f, 0x06, 0xbf, 0x0f, 0xac, 0xa6, 0x9d, 0x02, 0x4c, 0x91, 0x47, 395 0x98, 0x6b, 0xf6, 0x67, 0x70, 0x58, 0x68, 0x4f, 0xf3, 0x6f, 0xd1, 0xad, 0xa7, 0xfa, 0x87, 0x62, 396 0xc5, 0x25, 0xe6, 0x9a, 0x60, 0x93, 0x56, 0x2e, 0xf9, 0x1a, 0x4e, 0x96, 0x88, 0xf3, 0x84, 0xa5, 397 0xac, 0xe4, 0xd2, 0xa2, 0xc7, 0x4b, 0xc4, 0x91, 0xf2, 0x89, 0x05, 0x8d, 0xb4, 0x88, 0x35, 0xe4, 398 0x16, 0x55, 0xa6, 0xfd, 0x97, 0x01, 0xe6, 0x94, 0xc5, 0x7c, 0x28, 0xb8, 0x44, 0x2e, 0xc9, 0x4f, 399 0xd0, 0x79, 0x95, 0xaf, 0xc8, 0x30, 0xd4, 0x8d, 0xcd, 0xfe, 0x97, 0xef, 0x0a, 0x4f, 0xdb, 0xe1, 400 0x9b, 0x61, 0x5d, 0xc1, 0xe7, 0x2c, 0x9a, 0xc7, 0xc8, 0x31, 0x0f, 0x24, 0x13, 0x7c, 0x1e, 0x24, 401 0xf1, 0x76, 0x3f, 0x3e, 0x63, 0xd1, 0x7d, 0x1d, 0x1f, 0x24, 0x31, 0xb9, 0x06, 0xb3, 0x24, 0x53, 402 0xb6, 0x29, 0x65, 0x27, 0x55, 0x9b, 0x57, 0x0d, 0x28, 0x14, 0xb5, 0x6d, 0xff, 0xbd, 0x0f, 0x5f, 403 0xd5, 0x08, 0x5c, 0xcc, 0x12, 0xb1, 0x49, 0x91, 0x4b, 0xdd, 0xfc, 0xc3, 0xa0, 0x0f, 0xa0, 0x83, 404 0xcb, 0x25, 0x86, 0x92, 0xad, 0x71, 0x1e, 0x05, 0x12, 0xb7, 0x9b, 0x73, 0xee, 0x94, 0x57, 0xc5, 405 0xa9, 0xae, 0x8a, 0x33, 0xab, 0xae, 0x0a, 0x6d, 0xd7, 0x15, 0x6e, 0x20, 0x91, 0x7c, 0x0b, 0x2d, 406 0xdd, 0x3b, 0x0b, 0xc2, 0xe7, 0x20, 0xc6, 0xad, 0xfa, 0xa6, 0x8a, 0x3d, 0x94, 0x21, 0x32, 0x81, 407 0x63, 0x7c, 0xc1, 0x70, 0x8e, 0x7c, 0xad, 0xa7, 0xd0, 0xe9, 0xdf, 0xec, 0xa0, 0x7b, 0x4b, 0xcb, 408 0xf1, 0x5e, 0x30, 0x5c, 0x29, 0xd1, 0x3c, 0xbe, 0x66, 0xb9, 0xe0, 0xea, 0x07, 0x3d, 0x52, 0xa7, 409 0x78, 0x7c, 0x6d, 0x3b, 0x70, 0xfa, 0x5e, 0x82, 0xda, 0x37, 0x77, 0x32, 0xfc, 0xd5, 0xa3, 0xe5, 410 0xee, 0x4d, 0xff, 0x98, 0xce, 0xbc, 0xdf, 0x2c, 0xc3, 0xfe, 0xc7, 0xf8, 0x9f, 0x80, 0x3e, 0x5f, 411 0x8b, 0x50, 0x0f, 0xe4, 0x23, 0x08, 0xf8, 0xa9, 0x67, 0xaf, 0x96, 0xb7, 0x60, 0xf5, 0xf2, 0x16, 412 0x2c, 0xbe, 0xba, 0x81, 0xd3, 0xa1, 0xe0, 0x4b, 0x16, 0x21, 0x97, 0x2c, 0x48, 0x98, 0xdc, 0x8c, 413 0x70, 0x8d, 0x89, 0x22, 0xfc, 0xf0, 0x78, 0x3b, 0xf2, 0x87, 0xd6, 0x1e, 0xb1, 0xa0, 0x35, 0x9c, 414 0x8c, 0xef, 0x7c, 0xd7, 0x1b, 0xcf, 0xfc, 0xc1, 0xc8, 0x32, 0x6e, 0xe7, 0x70, 0x25, 0xf2, 0xd8, 415 0x61, 0xfc, 0x39, 0x09, 0x16, 0xc5, 0x52, 0xac, 0x78, 0xa4, 0x81, 0xa9, 0x88, 0xa6, 0x54, 0xe1, 416 0x50, 0x2f, 0xe8, 0x9f, 0x3f, 0xc4, 0x4c, 0x3e, 0xad, 0x16, 0x4e, 0x28, 0xd2, 0xde, 0x4e, 0x49, 417 0xaf, 0x2a, 0x29, 0x1f, 0xd2, 0xa2, 0xa7, 0x4a, 0x16, 0xe5, 0x23, 0x7b, 0xfd, 0x5f, 0x00, 0x00, 418 0x00, 0xff, 0xff, 0xa3, 0xcd, 0x76, 0x7e, 0x83, 0x05, 0x00, 0x00, 419 }