1 // Code generated by protoc-gen-go. DO NOT EDIT.
2 // source: google/api/servicecontrol/v1/service_controller.proto
6 import proto "github.com/golang/protobuf/proto"
9 import _ "google.golang.org/genproto/googleapis/api/annotations"
10 import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
13 context "golang.org/x/net/context"
14 grpc "google.golang.org/grpc"
17 // Reference imports to suppress errors if they are not otherwise used.
22 // Request message for the Check method.
23 type CheckRequest struct {
24 // The service name as specified in its service configuration. For example,
25 // `"pubsub.googleapis.com"`.
27 // See [google.api.Service][google.api.Service] for the definition of a service name.
28 ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"`
29 // The operation to be checked.
30 Operation *Operation `protobuf:"bytes,2,opt,name=operation" json:"operation,omitempty"`
31 // Specifies which version of service configuration should be used to process
34 // If unspecified or no matching version can be found, the
35 // latest one will be used.
36 ServiceConfigId string `protobuf:"bytes,4,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"`
39 func (m *CheckRequest) Reset() { *m = CheckRequest{} }
40 func (m *CheckRequest) String() string { return proto.CompactTextString(m) }
41 func (*CheckRequest) ProtoMessage() {}
42 func (*CheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
44 func (m *CheckRequest) GetServiceName() string {
51 func (m *CheckRequest) GetOperation() *Operation {
58 func (m *CheckRequest) GetServiceConfigId() string {
60 return m.ServiceConfigId
65 // Response message for the Check method.
66 type CheckResponse struct {
67 // The same operation_id value used in the CheckRequest.
68 // Used for logging and diagnostics purposes.
69 OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"`
70 // Indicate the decision of the check.
72 // If no check errors are present, the service should process the operation.
73 // Otherwise the service should use the list of errors to determine the
74 // appropriate action.
75 CheckErrors []*CheckError `protobuf:"bytes,2,rep,name=check_errors,json=checkErrors" json:"check_errors,omitempty"`
76 // The actual config id used to process the request.
77 ServiceConfigId string `protobuf:"bytes,5,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"`
78 // Feedback data returned from the server during processing a Check request.
79 CheckInfo *CheckResponse_CheckInfo `protobuf:"bytes,6,opt,name=check_info,json=checkInfo" json:"check_info,omitempty"`
82 func (m *CheckResponse) Reset() { *m = CheckResponse{} }
83 func (m *CheckResponse) String() string { return proto.CompactTextString(m) }
84 func (*CheckResponse) ProtoMessage() {}
85 func (*CheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
87 func (m *CheckResponse) GetOperationId() string {
94 func (m *CheckResponse) GetCheckErrors() []*CheckError {
101 func (m *CheckResponse) GetServiceConfigId() string {
103 return m.ServiceConfigId
108 func (m *CheckResponse) GetCheckInfo() *CheckResponse_CheckInfo {
115 type CheckResponse_CheckInfo struct {
116 // Consumer info of this check.
117 ConsumerInfo *CheckResponse_ConsumerInfo `protobuf:"bytes,2,opt,name=consumer_info,json=consumerInfo" json:"consumer_info,omitempty"`
120 func (m *CheckResponse_CheckInfo) Reset() { *m = CheckResponse_CheckInfo{} }
121 func (m *CheckResponse_CheckInfo) String() string { return proto.CompactTextString(m) }
122 func (*CheckResponse_CheckInfo) ProtoMessage() {}
123 func (*CheckResponse_CheckInfo) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1, 0} }
125 func (m *CheckResponse_CheckInfo) GetConsumerInfo() *CheckResponse_ConsumerInfo {
127 return m.ConsumerInfo
132 // `ConsumerInfo` provides information about the consumer project.
133 type CheckResponse_ConsumerInfo struct {
134 // The Google cloud project number, e.g. 1234567890. A value of 0 indicates
135 // no project number is found.
136 ProjectNumber int64 `protobuf:"varint,1,opt,name=project_number,json=projectNumber" json:"project_number,omitempty"`
139 func (m *CheckResponse_ConsumerInfo) Reset() { *m = CheckResponse_ConsumerInfo{} }
140 func (m *CheckResponse_ConsumerInfo) String() string { return proto.CompactTextString(m) }
141 func (*CheckResponse_ConsumerInfo) ProtoMessage() {}
142 func (*CheckResponse_ConsumerInfo) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1, 1} }
144 func (m *CheckResponse_ConsumerInfo) GetProjectNumber() int64 {
146 return m.ProjectNumber
151 // Request message for the Report method.
152 type ReportRequest struct {
153 // The service name as specified in its service configuration. For example,
154 // `"pubsub.googleapis.com"`.
156 // See [google.api.Service][google.api.Service] for the definition of a service name.
157 ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"`
158 // Operations to be reported.
160 // Typically the service should report one operation per request.
161 // Putting multiple operations into a single request is allowed, but should
162 // be used only when multiple operations are natually available at the time
165 // If multiple operations are in a single request, the total request size
166 // should be no larger than 1MB. See [ReportResponse.report_errors][google.api.servicecontrol.v1.ReportResponse.report_errors] for
167 // partial failure behavior.
168 Operations []*Operation `protobuf:"bytes,2,rep,name=operations" json:"operations,omitempty"`
169 // Specifies which version of service config should be used to process the
172 // If unspecified or no matching version can be found, the
173 // latest one will be used.
174 ServiceConfigId string `protobuf:"bytes,3,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"`
177 func (m *ReportRequest) Reset() { *m = ReportRequest{} }
178 func (m *ReportRequest) String() string { return proto.CompactTextString(m) }
179 func (*ReportRequest) ProtoMessage() {}
180 func (*ReportRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} }
182 func (m *ReportRequest) GetServiceName() string {
189 func (m *ReportRequest) GetOperations() []*Operation {
196 func (m *ReportRequest) GetServiceConfigId() string {
198 return m.ServiceConfigId
203 // Response message for the Report method.
204 type ReportResponse struct {
205 // Partial failures, one for each `Operation` in the request that failed
206 // processing. There are three possible combinations of the RPC status:
208 // 1. The combination of a successful RPC status and an empty `report_errors`
209 // list indicates a complete success where all `Operations` in the
210 // request are processed successfully.
211 // 2. The combination of a successful RPC status and a non-empty
212 // `report_errors` list indicates a partial success where some
213 // `Operations` in the request succeeded. Each
214 // `Operation` that failed processing has a corresponding item
216 // 3. A failed RPC status indicates a general non-deterministic failure.
217 // When this happens, it's impossible to know which of the
218 // 'Operations' in the request succeeded or failed.
219 ReportErrors []*ReportResponse_ReportError `protobuf:"bytes,1,rep,name=report_errors,json=reportErrors" json:"report_errors,omitempty"`
220 // The actual config id used to process the request.
221 ServiceConfigId string `protobuf:"bytes,2,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"`
224 func (m *ReportResponse) Reset() { *m = ReportResponse{} }
225 func (m *ReportResponse) String() string { return proto.CompactTextString(m) }
226 func (*ReportResponse) ProtoMessage() {}
227 func (*ReportResponse) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} }
229 func (m *ReportResponse) GetReportErrors() []*ReportResponse_ReportError {
231 return m.ReportErrors
236 func (m *ReportResponse) GetServiceConfigId() string {
238 return m.ServiceConfigId
243 // Represents the processing error of one `Operation` in the request.
244 type ReportResponse_ReportError struct {
245 // The [Operation.operation_id][google.api.servicecontrol.v1.Operation.operation_id] value from the request.
246 OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"`
247 // Details of the error when processing the `Operation`.
248 Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"`
251 func (m *ReportResponse_ReportError) Reset() { *m = ReportResponse_ReportError{} }
252 func (m *ReportResponse_ReportError) String() string { return proto.CompactTextString(m) }
253 func (*ReportResponse_ReportError) ProtoMessage() {}
254 func (*ReportResponse_ReportError) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3, 0} }
256 func (m *ReportResponse_ReportError) GetOperationId() string {
263 func (m *ReportResponse_ReportError) GetStatus() *google_rpc.Status {
271 proto.RegisterType((*CheckRequest)(nil), "google.api.servicecontrol.v1.CheckRequest")
272 proto.RegisterType((*CheckResponse)(nil), "google.api.servicecontrol.v1.CheckResponse")
273 proto.RegisterType((*CheckResponse_CheckInfo)(nil), "google.api.servicecontrol.v1.CheckResponse.CheckInfo")
274 proto.RegisterType((*CheckResponse_ConsumerInfo)(nil), "google.api.servicecontrol.v1.CheckResponse.ConsumerInfo")
275 proto.RegisterType((*ReportRequest)(nil), "google.api.servicecontrol.v1.ReportRequest")
276 proto.RegisterType((*ReportResponse)(nil), "google.api.servicecontrol.v1.ReportResponse")
277 proto.RegisterType((*ReportResponse_ReportError)(nil), "google.api.servicecontrol.v1.ReportResponse.ReportError")
280 // Reference imports to suppress errors if they are not otherwise used.
281 var _ context.Context
282 var _ grpc.ClientConn
284 // This is a compile-time assertion to ensure that this generated file
285 // is compatible with the grpc package it is being compiled against.
286 const _ = grpc.SupportPackageIsVersion4
288 // Client API for ServiceController service
290 type ServiceControllerClient interface {
291 // Checks an operation with Google Service Control to decide whether
292 // the given operation should proceed. It should be called before the
293 // operation is executed.
295 // If feasible, the client should cache the check results and reuse them for
296 // 60 seconds. In case of server errors, the client can rely on the cached
297 // results for longer time.
299 // NOTE: the `CheckRequest` has the size limit of 64KB.
301 // This method requires the `servicemanagement.services.check` permission
302 // on the specified service. For more information, see
303 // [Google Cloud IAM](https://cloud.google.com/iam).
304 Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error)
305 // Reports operation results to Google Service Control, such as logs and
306 // metrics. It should be called after an operation is completed.
308 // If feasible, the client should aggregate reporting data for up to 5
309 // seconds to reduce API traffic. Limiting aggregation to 5 seconds is to
310 // reduce data loss during client crashes. Clients should carefully choose
311 // the aggregation time window to avoid data loss risk more than 0.01%
312 // for business and compliance reasons.
314 // NOTE: the `ReportRequest` has the size limit of 1MB.
316 // This method requires the `servicemanagement.services.report` permission
317 // on the specified service. For more information, see
318 // [Google Cloud IAM](https://cloud.google.com/iam).
319 Report(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportResponse, error)
322 type serviceControllerClient struct {
326 func NewServiceControllerClient(cc *grpc.ClientConn) ServiceControllerClient {
327 return &serviceControllerClient{cc}
330 func (c *serviceControllerClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) {
331 out := new(CheckResponse)
332 err := grpc.Invoke(ctx, "/google.api.servicecontrol.v1.ServiceController/Check", in, out, c.cc, opts...)
339 func (c *serviceControllerClient) Report(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportResponse, error) {
340 out := new(ReportResponse)
341 err := grpc.Invoke(ctx, "/google.api.servicecontrol.v1.ServiceController/Report", in, out, c.cc, opts...)
348 // Server API for ServiceController service
350 type ServiceControllerServer interface {
351 // Checks an operation with Google Service Control to decide whether
352 // the given operation should proceed. It should be called before the
353 // operation is executed.
355 // If feasible, the client should cache the check results and reuse them for
356 // 60 seconds. In case of server errors, the client can rely on the cached
357 // results for longer time.
359 // NOTE: the `CheckRequest` has the size limit of 64KB.
361 // This method requires the `servicemanagement.services.check` permission
362 // on the specified service. For more information, see
363 // [Google Cloud IAM](https://cloud.google.com/iam).
364 Check(context.Context, *CheckRequest) (*CheckResponse, error)
365 // Reports operation results to Google Service Control, such as logs and
366 // metrics. It should be called after an operation is completed.
368 // If feasible, the client should aggregate reporting data for up to 5
369 // seconds to reduce API traffic. Limiting aggregation to 5 seconds is to
370 // reduce data loss during client crashes. Clients should carefully choose
371 // the aggregation time window to avoid data loss risk more than 0.01%
372 // for business and compliance reasons.
374 // NOTE: the `ReportRequest` has the size limit of 1MB.
376 // This method requires the `servicemanagement.services.report` permission
377 // on the specified service. For more information, see
378 // [Google Cloud IAM](https://cloud.google.com/iam).
379 Report(context.Context, *ReportRequest) (*ReportResponse, error)
382 func RegisterServiceControllerServer(s *grpc.Server, srv ServiceControllerServer) {
383 s.RegisterService(&_ServiceController_serviceDesc, srv)
386 func _ServiceController_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
387 in := new(CheckRequest)
388 if err := dec(in); err != nil {
391 if interceptor == nil {
392 return srv.(ServiceControllerServer).Check(ctx, in)
394 info := &grpc.UnaryServerInfo{
396 FullMethod: "/google.api.servicecontrol.v1.ServiceController/Check",
398 handler := func(ctx context.Context, req interface{}) (interface{}, error) {
399 return srv.(ServiceControllerServer).Check(ctx, req.(*CheckRequest))
401 return interceptor(ctx, in, info, handler)
404 func _ServiceController_Report_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
405 in := new(ReportRequest)
406 if err := dec(in); err != nil {
409 if interceptor == nil {
410 return srv.(ServiceControllerServer).Report(ctx, in)
412 info := &grpc.UnaryServerInfo{
414 FullMethod: "/google.api.servicecontrol.v1.ServiceController/Report",
416 handler := func(ctx context.Context, req interface{}) (interface{}, error) {
417 return srv.(ServiceControllerServer).Report(ctx, req.(*ReportRequest))
419 return interceptor(ctx, in, info, handler)
422 var _ServiceController_serviceDesc = grpc.ServiceDesc{
423 ServiceName: "google.api.servicecontrol.v1.ServiceController",
424 HandlerType: (*ServiceControllerServer)(nil),
425 Methods: []grpc.MethodDesc{
428 Handler: _ServiceController_Check_Handler,
431 MethodName: "Report",
432 Handler: _ServiceController_Report_Handler,
435 Streams: []grpc.StreamDesc{},
436 Metadata: "google/api/servicecontrol/v1/service_controller.proto",
440 proto.RegisterFile("google/api/servicecontrol/v1/service_controller.proto", fileDescriptor5)
443 var fileDescriptor5 = []byte{
444 // 619 bytes of a gzipped FileDescriptorProto
445 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xc1, 0x6e, 0xd3, 0x4c,
446 0x10, 0xd6, 0x3a, 0x6d, 0xa4, 0x4c, 0x9c, 0xfe, 0xea, 0x1e, 0x7e, 0x22, 0xab, 0x87, 0xd4, 0x12,
447 0x34, 0x4a, 0x8b, 0xad, 0x16, 0x55, 0x42, 0xe1, 0x44, 0xa3, 0xaa, 0x0a, 0x48, 0xa5, 0x72, 0x38,
448 0x21, 0xaa, 0xc8, 0xdd, 0x6c, 0x8c, 0x4b, 0xb2, 0x6b, 0xd6, 0x4e, 0x2e, 0x88, 0x0b, 0x0f, 0xc0,
449 0xa1, 0xbc, 0x01, 0xaa, 0xc4, 0x33, 0xf0, 0x1c, 0xbc, 0x02, 0x0f, 0x01, 0x37, 0x94, 0xdd, 0xb5,
450 0xeb, 0x08, 0x63, 0x92, 0x9b, 0xf7, 0xdb, 0x99, 0xf9, 0xbe, 0x9d, 0xf9, 0x3c, 0x70, 0x1c, 0x70,
451 0x1e, 0x4c, 0xa8, 0xeb, 0x47, 0xa1, 0x1b, 0x53, 0x31, 0x0f, 0x09, 0x25, 0x9c, 0x25, 0x82, 0x4f,
452 0xdc, 0xf9, 0x61, 0x8a, 0x0c, 0x35, 0x34, 0xa1, 0xc2, 0x89, 0x04, 0x4f, 0x38, 0xde, 0x51, 0x69,
453 0x8e, 0x1f, 0x85, 0xce, 0x72, 0x9a, 0x33, 0x3f, 0xb4, 0x76, 0x72, 0x45, 0x7d, 0xc6, 0x78, 0xe2,
454 0x27, 0x21, 0x67, 0xb1, 0xca, 0xb5, 0x9c, 0x52, 0x4a, 0xf2, 0x86, 0x92, 0xb7, 0x43, 0x2a, 0x04,
455 0xd7, 0x5c, 0xd6, 0x41, 0x69, 0x3c, 0x8f, 0xa8, 0x90, 0xe5, 0x75, 0xf4, 0x3d, 0x1d, 0x2d, 0x22,
456 0xe2, 0xc6, 0x89, 0x9f, 0xcc, 0x34, 0xad, 0x7d, 0x8b, 0xc0, 0xec, 0x2d, 0x8a, 0x7b, 0xf4, 0xdd,
457 0x8c, 0xc6, 0x09, 0xde, 0x05, 0x33, 0x7d, 0x1f, 0xf3, 0xa7, 0xb4, 0x89, 0x5a, 0xa8, 0x5d, 0xf3,
458 0xea, 0x1a, 0x3b, 0xf7, 0xa7, 0x14, 0x9f, 0x42, 0x2d, 0xab, 0xdf, 0x34, 0x5a, 0xa8, 0x5d, 0x3f,
459 0xda, 0x73, 0xca, 0x9e, 0xee, 0xbc, 0x48, 0xc3, 0xbd, 0xbb, 0x4c, 0xdc, 0x81, 0xed, 0x5c, 0x27,
460 0xc7, 0x61, 0x30, 0x0c, 0x47, 0xcd, 0x0d, 0x49, 0xf7, 0x9f, 0xbe, 0xe8, 0x49, 0xbc, 0x3f, 0xb2,
461 0x6f, 0x2b, 0xd0, 0xd0, 0x32, 0xe3, 0x88, 0xb3, 0x98, 0x2e, 0x74, 0x66, 0xa5, 0x16, 0x89, 0x5a,
462 0x67, 0x86, 0xf5, 0x47, 0xf8, 0x39, 0x98, 0xb9, 0xbe, 0xc5, 0x4d, 0xa3, 0x55, 0x69, 0xd7, 0x8f,
463 0xda, 0xe5, 0x52, 0x25, 0xcb, 0xe9, 0x22, 0xc1, 0xab, 0x93, 0xec, 0x3b, 0x2e, 0x56, 0xbb, 0x59,
464 0xa8, 0x16, 0xbf, 0x04, 0x50, 0xc4, 0x21, 0x1b, 0xf3, 0x66, 0x55, 0x76, 0xe8, 0x78, 0x05, 0xda,
465 0xf4, 0x71, 0xea, 0xd4, 0x67, 0x63, 0xee, 0xd5, 0x48, 0xfa, 0x69, 0x5d, 0x43, 0x2d, 0xc3, 0xf1,
466 0x25, 0x34, 0x08, 0x67, 0xf1, 0x6c, 0x4a, 0x85, 0x62, 0x51, 0x73, 0x78, 0xbc, 0x16, 0x8b, 0x2e,
467 0x20, 0x89, 0x4c, 0x92, 0x3b, 0x59, 0xc7, 0x60, 0xe6, 0x6f, 0xf1, 0x7d, 0xd8, 0x8a, 0x04, 0xbf,
468 0xa6, 0x24, 0x19, 0xb2, 0xd9, 0xf4, 0x8a, 0x0a, 0xd9, 0xef, 0x8a, 0xd7, 0xd0, 0xe8, 0xb9, 0x04,
469 0xed, 0xaf, 0x08, 0x1a, 0x1e, 0x8d, 0xb8, 0x48, 0xd6, 0xb0, 0xd3, 0x19, 0x40, 0x36, 0xb5, 0x74,
470 0x48, 0x2b, 0xfb, 0x29, 0x97, 0x5a, 0x3c, 0xa2, 0x4a, 0xb1, 0xa1, 0x7e, 0x21, 0xd8, 0x4a, 0x95,
471 0x6a, 0x47, 0x5d, 0x42, 0x43, 0x48, 0x24, 0xf5, 0x0b, 0x92, 0x52, 0xfe, 0xd1, 0xd2, 0xe5, 0x22,
472 0xfa, 0xa8, 0xfc, 0x63, 0x8a, 0xbb, 0xc3, 0x5f, 0xd4, 0x19, 0x85, 0xea, 0xac, 0xd7, 0x50, 0xcf,
473 0x15, 0x5a, 0xc5, 0xeb, 0x1d, 0xa8, 0xaa, 0xff, 0x5a, 0x1b, 0x01, 0xa7, 0xaa, 0x45, 0x44, 0x9c,
474 0x81, 0xbc, 0xf1, 0x74, 0xc4, 0xd1, 0x37, 0x03, 0xb6, 0x07, 0x19, 0xa3, 0x5e, 0x61, 0xf8, 0x13,
475 0x82, 0x4d, 0xe9, 0x0f, 0xdc, 0x59, 0xc9, 0x44, 0x72, 0xbe, 0xd6, 0xfe, 0x1a, 0x86, 0xb3, 0x0f,
476 0x3e, 0x7e, 0xff, 0xf1, 0xd9, 0x78, 0x60, 0xef, 0xe6, 0xb6, 0x68, 0xec, 0xbe, 0xcf, 0x1b, 0xe4,
477 0x43, 0x57, 0x1a, 0xbe, 0x8b, 0x3a, 0xf8, 0x06, 0x41, 0x55, 0x75, 0x01, 0xef, 0xaf, 0x36, 0x03,
478 0x25, 0xe9, 0x60, 0x9d, 0x81, 0xd9, 0x0f, 0xa5, 0xa6, 0x3d, 0xdb, 0x2e, 0xd3, 0xa4, 0x06, 0xd9,
479 0x45, 0x9d, 0x93, 0x1b, 0x04, 0x2d, 0xc2, 0xa7, 0xa5, 0x14, 0x27, 0xff, 0xff, 0xd1, 0xdd, 0x8b,
480 0xc5, 0xb2, 0xbd, 0x40, 0xaf, 0x9e, 0xe9, 0xbc, 0x80, 0x4f, 0x7c, 0x16, 0x38, 0x5c, 0x04, 0x6e,
481 0x40, 0x99, 0x5c, 0xc5, 0xae, 0xba, 0xf2, 0xa3, 0x30, 0x2e, 0x5e, 0xea, 0x4f, 0x96, 0x91, 0x9f,
482 0x08, 0x7d, 0x31, 0x36, 0xce, 0x9e, 0x0e, 0x7a, 0x57, 0x55, 0x59, 0xe0, 0xd1, 0xef, 0x00, 0x00,
483 0x00, 0xff, 0xff, 0x5e, 0x28, 0x7b, 0xe6, 0xb7, 0x06, 0x00, 0x00,