1// Code generated by protoc-gen-go. DO NOT EDIT. 2// source: google/devtools/remoteworkers/v1test2/command.proto 3 4package remoteworkers 5 6import ( 7 fmt "fmt" 8 math "math" 9 10 proto "github.com/golang/protobuf/proto" 11 any "github.com/golang/protobuf/ptypes/any" 12 duration "github.com/golang/protobuf/ptypes/duration" 13 status "google.golang.org/genproto/googleapis/rpc/status" 14) 15 16// Reference imports to suppress errors if they are not otherwise used. 17var _ = proto.Marshal 18var _ = fmt.Errorf 19var _ = math.Inf 20 21// This is a compile-time assertion to ensure that this generated file 22// is compatible with the proto package it is being compiled against. 23// A compilation error at this line likely means your copy of the 24// proto package needs to be updated. 25const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 26 27// Describes a shell-style task to execute, suitable for providing as the Bots 28// interface's `Lease.payload` field. 29type CommandTask struct { 30 // The inputs to the task. 31 Inputs *CommandTask_Inputs `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` 32 // The expected outputs from the task. 33 ExpectedOutputs *CommandTask_Outputs `protobuf:"bytes,4,opt,name=expected_outputs,json=expectedOutputs,proto3" json:"expected_outputs,omitempty"` 34 // The timeouts of this task. 35 Timeouts *CommandTask_Timeouts `protobuf:"bytes,5,opt,name=timeouts,proto3" json:"timeouts,omitempty"` 36 XXX_NoUnkeyedLiteral struct{} `json:"-"` 37 XXX_unrecognized []byte `json:"-"` 38 XXX_sizecache int32 `json:"-"` 39} 40 41func (m *CommandTask) Reset() { *m = CommandTask{} } 42func (m *CommandTask) String() string { return proto.CompactTextString(m) } 43func (*CommandTask) ProtoMessage() {} 44func (*CommandTask) Descriptor() ([]byte, []int) { 45 return fileDescriptor_7b7f8597ab32e88e, []int{0} 46} 47 48func (m *CommandTask) XXX_Unmarshal(b []byte) error { 49 return xxx_messageInfo_CommandTask.Unmarshal(m, b) 50} 51func (m *CommandTask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 52 return xxx_messageInfo_CommandTask.Marshal(b, m, deterministic) 53} 54func (m *CommandTask) XXX_Merge(src proto.Message) { 55 xxx_messageInfo_CommandTask.Merge(m, src) 56} 57func (m *CommandTask) XXX_Size() int { 58 return xxx_messageInfo_CommandTask.Size(m) 59} 60func (m *CommandTask) XXX_DiscardUnknown() { 61 xxx_messageInfo_CommandTask.DiscardUnknown(m) 62} 63 64var xxx_messageInfo_CommandTask proto.InternalMessageInfo 65 66func (m *CommandTask) GetInputs() *CommandTask_Inputs { 67 if m != nil { 68 return m.Inputs 69 } 70 return nil 71} 72 73func (m *CommandTask) GetExpectedOutputs() *CommandTask_Outputs { 74 if m != nil { 75 return m.ExpectedOutputs 76 } 77 return nil 78} 79 80func (m *CommandTask) GetTimeouts() *CommandTask_Timeouts { 81 if m != nil { 82 return m.Timeouts 83 } 84 return nil 85} 86 87// Describes the inputs to a shell-style task. 88type CommandTask_Inputs struct { 89 // The command itself to run (e.g., argv). 90 // 91 // This field should be passed directly to the underlying operating system, 92 // and so it must be sensible to that operating system. For example, on 93 // Windows, the first argument might be "C:\Windows\System32\ping.exe" - 94 // that is, using drive letters and backslashes. A command for a *nix 95 // system, on the other hand, would use forward slashes. 96 // 97 // All other fields in the RWAPI must consistently use forward slashes, 98 // since those fields may be interpretted by both the service and the bot. 99 Arguments []string `protobuf:"bytes,1,rep,name=arguments,proto3" json:"arguments,omitempty"` 100 // The input filesystem to be set up prior to the task beginning. The 101 // contents should be a repeated set of FileMetadata messages though other 102 // formats are allowed if better for the implementation (eg, a LUCI-style 103 // .isolated file). 104 // 105 // This field is repeated since implementations might want to cache the 106 // metadata, in which case it may be useful to break up portions of the 107 // filesystem that change frequently (eg, specific input files) from those 108 // that don't (eg, standard header files). 109 Files []*Digest `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` 110 // Inline contents for blobs expected to be needed by the bot to execute the 111 // task. For example, contents of entries in `files` or blobs that are 112 // indirectly referenced by an entry there. 113 // 114 // The bot should check against this list before downloading required task 115 // inputs to reduce the number of communications between itself and the 116 // remote CAS server. 117 InlineBlobs []*Blob `protobuf:"bytes,4,rep,name=inline_blobs,json=inlineBlobs,proto3" json:"inline_blobs,omitempty"` 118 // All environment variables required by the task. 119 EnvironmentVariables []*CommandTask_Inputs_EnvironmentVariable `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"` 120 // Directory from which a command is executed. It is a relative directory 121 // with respect to the bot's working directory (i.e., "./"). If it is 122 // non-empty, then it must exist under "./". Otherwise, "./" will be used. 123 WorkingDirectory string `protobuf:"bytes,5,opt,name=working_directory,json=workingDirectory,proto3" json:"working_directory,omitempty"` 124 XXX_NoUnkeyedLiteral struct{} `json:"-"` 125 XXX_unrecognized []byte `json:"-"` 126 XXX_sizecache int32 `json:"-"` 127} 128 129func (m *CommandTask_Inputs) Reset() { *m = CommandTask_Inputs{} } 130func (m *CommandTask_Inputs) String() string { return proto.CompactTextString(m) } 131func (*CommandTask_Inputs) ProtoMessage() {} 132func (*CommandTask_Inputs) Descriptor() ([]byte, []int) { 133 return fileDescriptor_7b7f8597ab32e88e, []int{0, 0} 134} 135 136func (m *CommandTask_Inputs) XXX_Unmarshal(b []byte) error { 137 return xxx_messageInfo_CommandTask_Inputs.Unmarshal(m, b) 138} 139func (m *CommandTask_Inputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 140 return xxx_messageInfo_CommandTask_Inputs.Marshal(b, m, deterministic) 141} 142func (m *CommandTask_Inputs) XXX_Merge(src proto.Message) { 143 xxx_messageInfo_CommandTask_Inputs.Merge(m, src) 144} 145func (m *CommandTask_Inputs) XXX_Size() int { 146 return xxx_messageInfo_CommandTask_Inputs.Size(m) 147} 148func (m *CommandTask_Inputs) XXX_DiscardUnknown() { 149 xxx_messageInfo_CommandTask_Inputs.DiscardUnknown(m) 150} 151 152var xxx_messageInfo_CommandTask_Inputs proto.InternalMessageInfo 153 154func (m *CommandTask_Inputs) GetArguments() []string { 155 if m != nil { 156 return m.Arguments 157 } 158 return nil 159} 160 161func (m *CommandTask_Inputs) GetFiles() []*Digest { 162 if m != nil { 163 return m.Files 164 } 165 return nil 166} 167 168func (m *CommandTask_Inputs) GetInlineBlobs() []*Blob { 169 if m != nil { 170 return m.InlineBlobs 171 } 172 return nil 173} 174 175func (m *CommandTask_Inputs) GetEnvironmentVariables() []*CommandTask_Inputs_EnvironmentVariable { 176 if m != nil { 177 return m.EnvironmentVariables 178 } 179 return nil 180} 181 182func (m *CommandTask_Inputs) GetWorkingDirectory() string { 183 if m != nil { 184 return m.WorkingDirectory 185 } 186 return "" 187} 188 189// An environment variable required by this task. 190type CommandTask_Inputs_EnvironmentVariable struct { 191 // The envvar name. 192 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 193 // The envvar value. 194 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 195 XXX_NoUnkeyedLiteral struct{} `json:"-"` 196 XXX_unrecognized []byte `json:"-"` 197 XXX_sizecache int32 `json:"-"` 198} 199 200func (m *CommandTask_Inputs_EnvironmentVariable) Reset() { 201 *m = CommandTask_Inputs_EnvironmentVariable{} 202} 203func (m *CommandTask_Inputs_EnvironmentVariable) String() string { return proto.CompactTextString(m) } 204func (*CommandTask_Inputs_EnvironmentVariable) ProtoMessage() {} 205func (*CommandTask_Inputs_EnvironmentVariable) Descriptor() ([]byte, []int) { 206 return fileDescriptor_7b7f8597ab32e88e, []int{0, 0, 0} 207} 208 209func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Unmarshal(b []byte) error { 210 return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Unmarshal(m, b) 211} 212func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 213 return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Marshal(b, m, deterministic) 214} 215func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Merge(src proto.Message) { 216 xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Merge(m, src) 217} 218func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Size() int { 219 return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Size(m) 220} 221func (m *CommandTask_Inputs_EnvironmentVariable) XXX_DiscardUnknown() { 222 xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.DiscardUnknown(m) 223} 224 225var xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable proto.InternalMessageInfo 226 227func (m *CommandTask_Inputs_EnvironmentVariable) GetName() string { 228 if m != nil { 229 return m.Name 230 } 231 return "" 232} 233 234func (m *CommandTask_Inputs_EnvironmentVariable) GetValue() string { 235 if m != nil { 236 return m.Value 237 } 238 return "" 239} 240 241// Describes the expected outputs of the command. 242type CommandTask_Outputs struct { 243 // A list of expected files, relative to the execution root. All paths 244 // MUST be delimited by forward slashes. 245 Files []string `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` 246 // A list of expected directories, relative to the execution root. All paths 247 // MUST be delimited by forward slashes. 248 Directories []string `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"` 249 // The destination to which any stdout should be sent. The method by which 250 // the bot should send the stream contents to that destination is not 251 // defined in this API. As examples, the destination could be a file 252 // referenced in the `files` field in this message, or it could be a URI 253 // that must be written via the ByteStream API. 254 StdoutDestination string `protobuf:"bytes,3,opt,name=stdout_destination,json=stdoutDestination,proto3" json:"stdout_destination,omitempty"` 255 // The destination to which any stderr should be sent. The method by which 256 // the bot should send the stream contents to that destination is not 257 // defined in this API. As examples, the destination could be a file 258 // referenced in the `files` field in this message, or it could be a URI 259 // that must be written via the ByteStream API. 260 StderrDestination string `protobuf:"bytes,4,opt,name=stderr_destination,json=stderrDestination,proto3" json:"stderr_destination,omitempty"` 261 XXX_NoUnkeyedLiteral struct{} `json:"-"` 262 XXX_unrecognized []byte `json:"-"` 263 XXX_sizecache int32 `json:"-"` 264} 265 266func (m *CommandTask_Outputs) Reset() { *m = CommandTask_Outputs{} } 267func (m *CommandTask_Outputs) String() string { return proto.CompactTextString(m) } 268func (*CommandTask_Outputs) ProtoMessage() {} 269func (*CommandTask_Outputs) Descriptor() ([]byte, []int) { 270 return fileDescriptor_7b7f8597ab32e88e, []int{0, 1} 271} 272 273func (m *CommandTask_Outputs) XXX_Unmarshal(b []byte) error { 274 return xxx_messageInfo_CommandTask_Outputs.Unmarshal(m, b) 275} 276func (m *CommandTask_Outputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 277 return xxx_messageInfo_CommandTask_Outputs.Marshal(b, m, deterministic) 278} 279func (m *CommandTask_Outputs) XXX_Merge(src proto.Message) { 280 xxx_messageInfo_CommandTask_Outputs.Merge(m, src) 281} 282func (m *CommandTask_Outputs) XXX_Size() int { 283 return xxx_messageInfo_CommandTask_Outputs.Size(m) 284} 285func (m *CommandTask_Outputs) XXX_DiscardUnknown() { 286 xxx_messageInfo_CommandTask_Outputs.DiscardUnknown(m) 287} 288 289var xxx_messageInfo_CommandTask_Outputs proto.InternalMessageInfo 290 291func (m *CommandTask_Outputs) GetFiles() []string { 292 if m != nil { 293 return m.Files 294 } 295 return nil 296} 297 298func (m *CommandTask_Outputs) GetDirectories() []string { 299 if m != nil { 300 return m.Directories 301 } 302 return nil 303} 304 305func (m *CommandTask_Outputs) GetStdoutDestination() string { 306 if m != nil { 307 return m.StdoutDestination 308 } 309 return "" 310} 311 312func (m *CommandTask_Outputs) GetStderrDestination() string { 313 if m != nil { 314 return m.StderrDestination 315 } 316 return "" 317} 318 319// Describes the timeouts associated with this task. 320type CommandTask_Timeouts struct { 321 // This specifies the maximum time that the task can run, excluding the 322 // time required to download inputs or upload outputs. That is, the worker 323 // will terminate the task if it runs longer than this. 324 Execution *duration.Duration `protobuf:"bytes,1,opt,name=execution,proto3" json:"execution,omitempty"` 325 // This specifies the maximum amount of time the task can be idle - that is, 326 // go without generating some output in either stdout or stderr. If the 327 // process is silent for more than the specified time, the worker will 328 // terminate the task. 329 Idle *duration.Duration `protobuf:"bytes,2,opt,name=idle,proto3" json:"idle,omitempty"` 330 // If the execution or IO timeouts are exceeded, the worker will try to 331 // gracefully terminate the task and return any existing logs. However, 332 // tasks may be hard-frozen in which case this process will fail. This 333 // timeout specifies how long to wait for a terminated task to shut down 334 // gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g. 335 // SIGKILL on *nix, CTRL_BREAK_EVENT on Windows). 336 Shutdown *duration.Duration `protobuf:"bytes,3,opt,name=shutdown,proto3" json:"shutdown,omitempty"` 337 XXX_NoUnkeyedLiteral struct{} `json:"-"` 338 XXX_unrecognized []byte `json:"-"` 339 XXX_sizecache int32 `json:"-"` 340} 341 342func (m *CommandTask_Timeouts) Reset() { *m = CommandTask_Timeouts{} } 343func (m *CommandTask_Timeouts) String() string { return proto.CompactTextString(m) } 344func (*CommandTask_Timeouts) ProtoMessage() {} 345func (*CommandTask_Timeouts) Descriptor() ([]byte, []int) { 346 return fileDescriptor_7b7f8597ab32e88e, []int{0, 2} 347} 348 349func (m *CommandTask_Timeouts) XXX_Unmarshal(b []byte) error { 350 return xxx_messageInfo_CommandTask_Timeouts.Unmarshal(m, b) 351} 352func (m *CommandTask_Timeouts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 353 return xxx_messageInfo_CommandTask_Timeouts.Marshal(b, m, deterministic) 354} 355func (m *CommandTask_Timeouts) XXX_Merge(src proto.Message) { 356 xxx_messageInfo_CommandTask_Timeouts.Merge(m, src) 357} 358func (m *CommandTask_Timeouts) XXX_Size() int { 359 return xxx_messageInfo_CommandTask_Timeouts.Size(m) 360} 361func (m *CommandTask_Timeouts) XXX_DiscardUnknown() { 362 xxx_messageInfo_CommandTask_Timeouts.DiscardUnknown(m) 363} 364 365var xxx_messageInfo_CommandTask_Timeouts proto.InternalMessageInfo 366 367func (m *CommandTask_Timeouts) GetExecution() *duration.Duration { 368 if m != nil { 369 return m.Execution 370 } 371 return nil 372} 373 374func (m *CommandTask_Timeouts) GetIdle() *duration.Duration { 375 if m != nil { 376 return m.Idle 377 } 378 return nil 379} 380 381func (m *CommandTask_Timeouts) GetShutdown() *duration.Duration { 382 if m != nil { 383 return m.Shutdown 384 } 385 return nil 386} 387 388// DEPRECATED - use CommandResult instead. 389// Describes the actual outputs from the task. 390type CommandOutputs struct { 391 // exit_code is only fully reliable if the status' code is OK. If the task 392 // exceeded its deadline or was cancelled, the process may still produce an 393 // exit code as it is cancelled, and this will be populated, but a successful 394 // (zero) is unlikely to be correct unless the status code is OK. 395 ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` 396 // The output files. The blob referenced by the digest should contain 397 // one of the following (implementation-dependent): 398 // * A marshalled DirectoryMetadata of the returned filesystem 399 // * A LUCI-style .isolated file 400 Outputs *Digest `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` 401 XXX_NoUnkeyedLiteral struct{} `json:"-"` 402 XXX_unrecognized []byte `json:"-"` 403 XXX_sizecache int32 `json:"-"` 404} 405 406func (m *CommandOutputs) Reset() { *m = CommandOutputs{} } 407func (m *CommandOutputs) String() string { return proto.CompactTextString(m) } 408func (*CommandOutputs) ProtoMessage() {} 409func (*CommandOutputs) Descriptor() ([]byte, []int) { 410 return fileDescriptor_7b7f8597ab32e88e, []int{1} 411} 412 413func (m *CommandOutputs) XXX_Unmarshal(b []byte) error { 414 return xxx_messageInfo_CommandOutputs.Unmarshal(m, b) 415} 416func (m *CommandOutputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 417 return xxx_messageInfo_CommandOutputs.Marshal(b, m, deterministic) 418} 419func (m *CommandOutputs) XXX_Merge(src proto.Message) { 420 xxx_messageInfo_CommandOutputs.Merge(m, src) 421} 422func (m *CommandOutputs) XXX_Size() int { 423 return xxx_messageInfo_CommandOutputs.Size(m) 424} 425func (m *CommandOutputs) XXX_DiscardUnknown() { 426 xxx_messageInfo_CommandOutputs.DiscardUnknown(m) 427} 428 429var xxx_messageInfo_CommandOutputs proto.InternalMessageInfo 430 431func (m *CommandOutputs) GetExitCode() int32 { 432 if m != nil { 433 return m.ExitCode 434 } 435 return 0 436} 437 438func (m *CommandOutputs) GetOutputs() *Digest { 439 if m != nil { 440 return m.Outputs 441 } 442 return nil 443} 444 445// DEPRECATED - use CommandResult instead. 446// Can be used as part of CompleteRequest.metadata, or are part of a more 447// sophisticated message. 448type CommandOverhead struct { 449 // The elapsed time between calling Accept and Complete. The server will also 450 // have its own idea of what this should be, but this excludes the overhead of 451 // the RPCs and the bot response time. 452 Duration *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"` 453 // The amount of time *not* spent executing the command (ie 454 // uploading/downloading files). 455 Overhead *duration.Duration `protobuf:"bytes,2,opt,name=overhead,proto3" json:"overhead,omitempty"` 456 XXX_NoUnkeyedLiteral struct{} `json:"-"` 457 XXX_unrecognized []byte `json:"-"` 458 XXX_sizecache int32 `json:"-"` 459} 460 461func (m *CommandOverhead) Reset() { *m = CommandOverhead{} } 462func (m *CommandOverhead) String() string { return proto.CompactTextString(m) } 463func (*CommandOverhead) ProtoMessage() {} 464func (*CommandOverhead) Descriptor() ([]byte, []int) { 465 return fileDescriptor_7b7f8597ab32e88e, []int{2} 466} 467 468func (m *CommandOverhead) XXX_Unmarshal(b []byte) error { 469 return xxx_messageInfo_CommandOverhead.Unmarshal(m, b) 470} 471func (m *CommandOverhead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 472 return xxx_messageInfo_CommandOverhead.Marshal(b, m, deterministic) 473} 474func (m *CommandOverhead) XXX_Merge(src proto.Message) { 475 xxx_messageInfo_CommandOverhead.Merge(m, src) 476} 477func (m *CommandOverhead) XXX_Size() int { 478 return xxx_messageInfo_CommandOverhead.Size(m) 479} 480func (m *CommandOverhead) XXX_DiscardUnknown() { 481 xxx_messageInfo_CommandOverhead.DiscardUnknown(m) 482} 483 484var xxx_messageInfo_CommandOverhead proto.InternalMessageInfo 485 486func (m *CommandOverhead) GetDuration() *duration.Duration { 487 if m != nil { 488 return m.Duration 489 } 490 return nil 491} 492 493func (m *CommandOverhead) GetOverhead() *duration.Duration { 494 if m != nil { 495 return m.Overhead 496 } 497 return nil 498} 499 500// All information about the execution of a command, suitable for providing as 501// the Bots interface's `Lease.result` field. 502type CommandResult struct { 503 // An overall status for the command. For example, if the command timed out, 504 // this might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for 505 // memory exhaustion, it might have a code of RESOURCE_EXHAUSTED. 506 Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` 507 // The exit code of the process. An exit code of "0" should only be trusted if 508 // `status` has a code of OK (otherwise it may simply be unset). 509 ExitCode int32 `protobuf:"varint,2,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` 510 // The output files. The blob referenced by the digest should contain 511 // one of the following (implementation-dependent): 512 // * A marshalled DirectoryMetadata of the returned filesystem 513 // * A LUCI-style .isolated file 514 Outputs *Digest `protobuf:"bytes,3,opt,name=outputs,proto3" json:"outputs,omitempty"` 515 // The elapsed time between calling Accept and Complete. The server will also 516 // have its own idea of what this should be, but this excludes the overhead of 517 // the RPCs and the bot response time. 518 Duration *duration.Duration `protobuf:"bytes,4,opt,name=duration,proto3" json:"duration,omitempty"` // Deprecated: Do not use. 519 // The amount of time *not* spent executing the command (ie 520 // uploading/downloading files). 521 Overhead *duration.Duration `protobuf:"bytes,5,opt,name=overhead,proto3" json:"overhead,omitempty"` // Deprecated: Do not use. 522 // Implementation-dependent metadata about the task. Both servers and bots 523 // may define messages which can be encoded here; bots are free to provide 524 // metadata in multiple formats, and servers are free to choose one or more 525 // of the values to process and ignore others. In particular, it is *not* 526 // considered an error for the bot to provide the server with a field that it 527 // doesn't know about. 528 Metadata []*any.Any `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty"` 529 XXX_NoUnkeyedLiteral struct{} `json:"-"` 530 XXX_unrecognized []byte `json:"-"` 531 XXX_sizecache int32 `json:"-"` 532} 533 534func (m *CommandResult) Reset() { *m = CommandResult{} } 535func (m *CommandResult) String() string { return proto.CompactTextString(m) } 536func (*CommandResult) ProtoMessage() {} 537func (*CommandResult) Descriptor() ([]byte, []int) { 538 return fileDescriptor_7b7f8597ab32e88e, []int{3} 539} 540 541func (m *CommandResult) XXX_Unmarshal(b []byte) error { 542 return xxx_messageInfo_CommandResult.Unmarshal(m, b) 543} 544func (m *CommandResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 545 return xxx_messageInfo_CommandResult.Marshal(b, m, deterministic) 546} 547func (m *CommandResult) XXX_Merge(src proto.Message) { 548 xxx_messageInfo_CommandResult.Merge(m, src) 549} 550func (m *CommandResult) XXX_Size() int { 551 return xxx_messageInfo_CommandResult.Size(m) 552} 553func (m *CommandResult) XXX_DiscardUnknown() { 554 xxx_messageInfo_CommandResult.DiscardUnknown(m) 555} 556 557var xxx_messageInfo_CommandResult proto.InternalMessageInfo 558 559func (m *CommandResult) GetStatus() *status.Status { 560 if m != nil { 561 return m.Status 562 } 563 return nil 564} 565 566func (m *CommandResult) GetExitCode() int32 { 567 if m != nil { 568 return m.ExitCode 569 } 570 return 0 571} 572 573func (m *CommandResult) GetOutputs() *Digest { 574 if m != nil { 575 return m.Outputs 576 } 577 return nil 578} 579 580// Deprecated: Do not use. 581func (m *CommandResult) GetDuration() *duration.Duration { 582 if m != nil { 583 return m.Duration 584 } 585 return nil 586} 587 588// Deprecated: Do not use. 589func (m *CommandResult) GetOverhead() *duration.Duration { 590 if m != nil { 591 return m.Overhead 592 } 593 return nil 594} 595 596func (m *CommandResult) GetMetadata() []*any.Any { 597 if m != nil { 598 return m.Metadata 599 } 600 return nil 601} 602 603// The metadata for a file. Similar to the equivalent message in the Remote 604// Execution API. 605type FileMetadata struct { 606 // The path of this file. If this message is part of the 607 // CommandOutputs.outputs fields, the path is relative to the execution root 608 // and must correspond to an entry in CommandTask.outputs.files. If this 609 // message is part of a Directory message, then the path is relative to the 610 // root of that directory. All paths MUST be delimited by forward slashes. 611 Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` 612 // A pointer to the contents of the file. The method by which a client 613 // retrieves the contents from a CAS system is not defined here. 614 Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"` 615 // If the file is small enough, its contents may also or alternatively be 616 // listed here. 617 Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3" json:"contents,omitempty"` 618 // Properties of the file 619 IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"` 620 XXX_NoUnkeyedLiteral struct{} `json:"-"` 621 XXX_unrecognized []byte `json:"-"` 622 XXX_sizecache int32 `json:"-"` 623} 624 625func (m *FileMetadata) Reset() { *m = FileMetadata{} } 626func (m *FileMetadata) String() string { return proto.CompactTextString(m) } 627func (*FileMetadata) ProtoMessage() {} 628func (*FileMetadata) Descriptor() ([]byte, []int) { 629 return fileDescriptor_7b7f8597ab32e88e, []int{4} 630} 631 632func (m *FileMetadata) XXX_Unmarshal(b []byte) error { 633 return xxx_messageInfo_FileMetadata.Unmarshal(m, b) 634} 635func (m *FileMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 636 return xxx_messageInfo_FileMetadata.Marshal(b, m, deterministic) 637} 638func (m *FileMetadata) XXX_Merge(src proto.Message) { 639 xxx_messageInfo_FileMetadata.Merge(m, src) 640} 641func (m *FileMetadata) XXX_Size() int { 642 return xxx_messageInfo_FileMetadata.Size(m) 643} 644func (m *FileMetadata) XXX_DiscardUnknown() { 645 xxx_messageInfo_FileMetadata.DiscardUnknown(m) 646} 647 648var xxx_messageInfo_FileMetadata proto.InternalMessageInfo 649 650func (m *FileMetadata) GetPath() string { 651 if m != nil { 652 return m.Path 653 } 654 return "" 655} 656 657func (m *FileMetadata) GetDigest() *Digest { 658 if m != nil { 659 return m.Digest 660 } 661 return nil 662} 663 664func (m *FileMetadata) GetContents() []byte { 665 if m != nil { 666 return m.Contents 667 } 668 return nil 669} 670 671func (m *FileMetadata) GetIsExecutable() bool { 672 if m != nil { 673 return m.IsExecutable 674 } 675 return false 676} 677 678// The metadata for a directory. Similar to the equivalent message in the Remote 679// Execution API. 680type DirectoryMetadata struct { 681 // The path of the directory, as in [FileMetadata.path][google.devtools.remoteworkers.v1test2.FileMetadata.path]. 682 Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` 683 // A pointer to the contents of the directory, in the form of a marshalled 684 // Directory message. 685 Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"` 686 XXX_NoUnkeyedLiteral struct{} `json:"-"` 687 XXX_unrecognized []byte `json:"-"` 688 XXX_sizecache int32 `json:"-"` 689} 690 691func (m *DirectoryMetadata) Reset() { *m = DirectoryMetadata{} } 692func (m *DirectoryMetadata) String() string { return proto.CompactTextString(m) } 693func (*DirectoryMetadata) ProtoMessage() {} 694func (*DirectoryMetadata) Descriptor() ([]byte, []int) { 695 return fileDescriptor_7b7f8597ab32e88e, []int{5} 696} 697 698func (m *DirectoryMetadata) XXX_Unmarshal(b []byte) error { 699 return xxx_messageInfo_DirectoryMetadata.Unmarshal(m, b) 700} 701func (m *DirectoryMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 702 return xxx_messageInfo_DirectoryMetadata.Marshal(b, m, deterministic) 703} 704func (m *DirectoryMetadata) XXX_Merge(src proto.Message) { 705 xxx_messageInfo_DirectoryMetadata.Merge(m, src) 706} 707func (m *DirectoryMetadata) XXX_Size() int { 708 return xxx_messageInfo_DirectoryMetadata.Size(m) 709} 710func (m *DirectoryMetadata) XXX_DiscardUnknown() { 711 xxx_messageInfo_DirectoryMetadata.DiscardUnknown(m) 712} 713 714var xxx_messageInfo_DirectoryMetadata proto.InternalMessageInfo 715 716func (m *DirectoryMetadata) GetPath() string { 717 if m != nil { 718 return m.Path 719 } 720 return "" 721} 722 723func (m *DirectoryMetadata) GetDigest() *Digest { 724 if m != nil { 725 return m.Digest 726 } 727 return nil 728} 729 730// The CommandTask and CommandResult messages assume the existence of a service 731// that can serve blobs of content, identified by a hash and size known as a 732// "digest." The method by which these blobs may be retrieved is not specified 733// here, but a model implementation is in the Remote Execution API's 734// "ContentAddressibleStorage" interface. 735// 736// In the context of the RWAPI, a Digest will virtually always refer to the 737// contents of a file or a directory. The latter is represented by the 738// byte-encoded Directory message. 739type Digest struct { 740 // A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c]) 741 // using an implementation-defined hash algorithm (eg SHA-256). 742 Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` 743 // The size of the contents. While this is not strictly required as part of an 744 // identifier (after all, any given hash will have exactly one canonical 745 // size), it's useful in almost all cases when one might want to send or 746 // retrieve blobs of content and is included here for this reason. 747 SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` 748 XXX_NoUnkeyedLiteral struct{} `json:"-"` 749 XXX_unrecognized []byte `json:"-"` 750 XXX_sizecache int32 `json:"-"` 751} 752 753func (m *Digest) Reset() { *m = Digest{} } 754func (m *Digest) String() string { return proto.CompactTextString(m) } 755func (*Digest) ProtoMessage() {} 756func (*Digest) Descriptor() ([]byte, []int) { 757 return fileDescriptor_7b7f8597ab32e88e, []int{6} 758} 759 760func (m *Digest) XXX_Unmarshal(b []byte) error { 761 return xxx_messageInfo_Digest.Unmarshal(m, b) 762} 763func (m *Digest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 764 return xxx_messageInfo_Digest.Marshal(b, m, deterministic) 765} 766func (m *Digest) XXX_Merge(src proto.Message) { 767 xxx_messageInfo_Digest.Merge(m, src) 768} 769func (m *Digest) XXX_Size() int { 770 return xxx_messageInfo_Digest.Size(m) 771} 772func (m *Digest) XXX_DiscardUnknown() { 773 xxx_messageInfo_Digest.DiscardUnknown(m) 774} 775 776var xxx_messageInfo_Digest proto.InternalMessageInfo 777 778func (m *Digest) GetHash() string { 779 if m != nil { 780 return m.Hash 781 } 782 return "" 783} 784 785func (m *Digest) GetSizeBytes() int64 { 786 if m != nil { 787 return m.SizeBytes 788 } 789 return 0 790} 791 792// Describes a blob of binary content with its digest. 793type Blob struct { 794 // The digest of the blob. This should be verified by the receiver. 795 Digest *Digest `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"` 796 // The contents of the blob. 797 Contents []byte `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` 798 XXX_NoUnkeyedLiteral struct{} `json:"-"` 799 XXX_unrecognized []byte `json:"-"` 800 XXX_sizecache int32 `json:"-"` 801} 802 803func (m *Blob) Reset() { *m = Blob{} } 804func (m *Blob) String() string { return proto.CompactTextString(m) } 805func (*Blob) ProtoMessage() {} 806func (*Blob) Descriptor() ([]byte, []int) { 807 return fileDescriptor_7b7f8597ab32e88e, []int{7} 808} 809 810func (m *Blob) XXX_Unmarshal(b []byte) error { 811 return xxx_messageInfo_Blob.Unmarshal(m, b) 812} 813func (m *Blob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 814 return xxx_messageInfo_Blob.Marshal(b, m, deterministic) 815} 816func (m *Blob) XXX_Merge(src proto.Message) { 817 xxx_messageInfo_Blob.Merge(m, src) 818} 819func (m *Blob) XXX_Size() int { 820 return xxx_messageInfo_Blob.Size(m) 821} 822func (m *Blob) XXX_DiscardUnknown() { 823 xxx_messageInfo_Blob.DiscardUnknown(m) 824} 825 826var xxx_messageInfo_Blob proto.InternalMessageInfo 827 828func (m *Blob) GetDigest() *Digest { 829 if m != nil { 830 return m.Digest 831 } 832 return nil 833} 834 835func (m *Blob) GetContents() []byte { 836 if m != nil { 837 return m.Contents 838 } 839 return nil 840} 841 842// The contents of a directory. Similar to the equivalent message in the Remote 843// Execution API. 844type Directory struct { 845 // The files in this directory 846 Files []*FileMetadata `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` 847 // Any subdirectories 848 Directories []*DirectoryMetadata `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"` 849 XXX_NoUnkeyedLiteral struct{} `json:"-"` 850 XXX_unrecognized []byte `json:"-"` 851 XXX_sizecache int32 `json:"-"` 852} 853 854func (m *Directory) Reset() { *m = Directory{} } 855func (m *Directory) String() string { return proto.CompactTextString(m) } 856func (*Directory) ProtoMessage() {} 857func (*Directory) Descriptor() ([]byte, []int) { 858 return fileDescriptor_7b7f8597ab32e88e, []int{8} 859} 860 861func (m *Directory) XXX_Unmarshal(b []byte) error { 862 return xxx_messageInfo_Directory.Unmarshal(m, b) 863} 864func (m *Directory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 865 return xxx_messageInfo_Directory.Marshal(b, m, deterministic) 866} 867func (m *Directory) XXX_Merge(src proto.Message) { 868 xxx_messageInfo_Directory.Merge(m, src) 869} 870func (m *Directory) XXX_Size() int { 871 return xxx_messageInfo_Directory.Size(m) 872} 873func (m *Directory) XXX_DiscardUnknown() { 874 xxx_messageInfo_Directory.DiscardUnknown(m) 875} 876 877var xxx_messageInfo_Directory proto.InternalMessageInfo 878 879func (m *Directory) GetFiles() []*FileMetadata { 880 if m != nil { 881 return m.Files 882 } 883 return nil 884} 885 886func (m *Directory) GetDirectories() []*DirectoryMetadata { 887 if m != nil { 888 return m.Directories 889 } 890 return nil 891} 892 893func init() { 894 proto.RegisterType((*CommandTask)(nil), "google.devtools.remoteworkers.v1test2.CommandTask") 895 proto.RegisterType((*CommandTask_Inputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs") 896 proto.RegisterType((*CommandTask_Inputs_EnvironmentVariable)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable") 897 proto.RegisterType((*CommandTask_Outputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Outputs") 898 proto.RegisterType((*CommandTask_Timeouts)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Timeouts") 899 proto.RegisterType((*CommandOutputs)(nil), "google.devtools.remoteworkers.v1test2.CommandOutputs") 900 proto.RegisterType((*CommandOverhead)(nil), "google.devtools.remoteworkers.v1test2.CommandOverhead") 901 proto.RegisterType((*CommandResult)(nil), "google.devtools.remoteworkers.v1test2.CommandResult") 902 proto.RegisterType((*FileMetadata)(nil), "google.devtools.remoteworkers.v1test2.FileMetadata") 903 proto.RegisterType((*DirectoryMetadata)(nil), "google.devtools.remoteworkers.v1test2.DirectoryMetadata") 904 proto.RegisterType((*Digest)(nil), "google.devtools.remoteworkers.v1test2.Digest") 905 proto.RegisterType((*Blob)(nil), "google.devtools.remoteworkers.v1test2.Blob") 906 proto.RegisterType((*Directory)(nil), "google.devtools.remoteworkers.v1test2.Directory") 907} 908 909func init() { 910 proto.RegisterFile("google/devtools/remoteworkers/v1test2/command.proto", fileDescriptor_7b7f8597ab32e88e) 911} 912 913var fileDescriptor_7b7f8597ab32e88e = []byte{ 914 // 911 bytes of a gzipped FileDescriptorProto 915 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x5b, 0x6f, 0x1b, 0x45, 916 0x14, 0xd6, 0xae, 0x2f, 0xb5, 0x8f, 0x53, 0xda, 0x0c, 0xa9, 0x70, 0xcd, 0x45, 0xd1, 0xa2, 0x4a, 917 0x81, 0x2a, 0x6b, 0xea, 0x08, 0x41, 0xc8, 0x03, 0xc2, 0x71, 0xa8, 0xfa, 0x50, 0x2e, 0x43, 0xd4, 918 0x48, 0x7d, 0xb1, 0xc6, 0xbb, 0xd3, 0xcd, 0xa8, 0xeb, 0x1d, 0x6b, 0x66, 0xd6, 0x6d, 0x78, 0x41, 919 0xe2, 0x8f, 0x54, 0xe2, 0x8d, 0x3e, 0xf0, 0xc0, 0x7f, 0xe0, 0x81, 0x7f, 0x85, 0xe6, 0xb6, 0x59, 920 0x37, 0xd0, 0x98, 0x80, 0xfa, 0xb6, 0xfe, 0xce, 0xf9, 0xbe, 0x39, 0xf3, 0x9d, 0x39, 0x47, 0x86, 921 0xbd, 0x8c, 0xf3, 0x2c, 0xa7, 0xc3, 0x94, 0x2e, 0x15, 0xe7, 0xb9, 0x1c, 0x0a, 0x3a, 0xe7, 0x8a, 922 0x3e, 0xe3, 0xe2, 0x29, 0x15, 0x72, 0xb8, 0xbc, 0xa7, 0xa8, 0x54, 0xa3, 0x61, 0xc2, 0xe7, 0x73, 923 0x52, 0xa4, 0xf1, 0x42, 0x70, 0xc5, 0xd1, 0x1d, 0x4b, 0x8a, 0x3d, 0x29, 0x5e, 0x21, 0xc5, 0x8e, 924 0x34, 0xb8, 0xed, 0xb4, 0x0d, 0x69, 0x56, 0x3e, 0x19, 0x92, 0xe2, 0xcc, 0x2a, 0x0c, 0x3e, 0x78, 925 0x35, 0x94, 0x96, 0x82, 0x28, 0xc6, 0x0b, 0x17, 0x7f, 0xc7, 0xc5, 0xc5, 0x22, 0x19, 0x4a, 0x45, 926 0x54, 0x29, 0x6d, 0x20, 0x7a, 0xd1, 0x81, 0xde, 0xa1, 0x2d, 0xe6, 0x98, 0xc8, 0xa7, 0xe8, 0x7b, 927 0x68, 0xb3, 0x62, 0x51, 0x2a, 0xd9, 0x0f, 0xb6, 0x83, 0x9d, 0xde, 0x68, 0x3f, 0x5e, 0xab, 0xb6, 928 0xb8, 0xa6, 0x11, 0x3f, 0x30, 0x02, 0xd8, 0x09, 0x21, 0x0a, 0x37, 0xe9, 0xf3, 0x05, 0x4d, 0x14, 929 0x4d, 0xa7, 0xbc, 0x54, 0x46, 0xbc, 0x69, 0xc4, 0xbf, 0xb8, 0x82, 0xf8, 0xb7, 0x56, 0x01, 0xdf, 930 0xf0, 0x9a, 0x0e, 0x40, 0x27, 0xd0, 0x51, 0x6c, 0x4e, 0xb9, 0x96, 0x6f, 0x19, 0xf9, 0x83, 0x2b, 931 0xc8, 0x1f, 0x3b, 0x09, 0x5c, 0x89, 0x0d, 0x7e, 0x6b, 0x40, 0xdb, 0x5e, 0x09, 0xbd, 0x07, 0x5d, 932 0x22, 0xb2, 0x72, 0x4e, 0x0b, 0x63, 0x50, 0x63, 0xa7, 0x8b, 0xcf, 0x01, 0x74, 0x08, 0xad, 0x27, 933 0x2c, 0xa7, 0xb2, 0x1f, 0x6e, 0x37, 0x76, 0x7a, 0xa3, 0xdd, 0x35, 0x8f, 0x9f, 0xb0, 0x8c, 0x4a, 934 0x85, 0x2d, 0x17, 0x7d, 0x03, 0x1b, 0xac, 0xc8, 0x59, 0x41, 0xa7, 0xb3, 0x9c, 0xcf, 0xb4, 0x53, 935 0x5a, 0xeb, 0xee, 0x9a, 0x5a, 0xe3, 0x9c, 0xcf, 0x70, 0xcf, 0x0a, 0xe8, 0x6f, 0x89, 0x7e, 0x0e, 936 0xe0, 0x16, 0x2d, 0x96, 0x4c, 0xf0, 0x42, 0x57, 0x39, 0x5d, 0x12, 0xc1, 0xc8, 0x4c, 0x57, 0xd9, 937 0x30, 0xca, 0x0f, 0xaf, 0xdc, 0xe0, 0xf8, 0xe8, 0x5c, 0xf6, 0x91, 0x53, 0xc5, 0x5b, 0xf4, 0x22, 938 0x28, 0xd1, 0x5d, 0xd8, 0xd4, 0x7a, 0xac, 0xc8, 0xa6, 0x29, 0x13, 0x34, 0x51, 0x5c, 0x9c, 0x99, 939 0x26, 0x75, 0xf1, 0x4d, 0x17, 0x98, 0x78, 0x7c, 0xf0, 0x25, 0xbc, 0xfd, 0x37, 0xca, 0x08, 0x41, 940 0xb3, 0x20, 0x73, 0x6a, 0xde, 0x65, 0x17, 0x9b, 0x6f, 0xb4, 0x05, 0xad, 0x25, 0xc9, 0x4b, 0xda, 941 0x0f, 0x0d, 0x68, 0x7f, 0x0c, 0x5e, 0x04, 0x70, 0xcd, 0xbf, 0x8a, 0x2d, 0xdf, 0x13, 0xdb, 0x2d, 942 0x67, 0xf2, 0x36, 0xf4, 0x7c, 0x1d, 0xcc, 0xf5, 0xab, 0x8b, 0xeb, 0x10, 0xda, 0x05, 0x24, 0x55, 943 0xca, 0x4b, 0x35, 0x4d, 0xa9, 0x54, 0xac, 0x30, 0xc3, 0xd4, 0x6f, 0x98, 0x63, 0x36, 0x6d, 0x64, 944 0x72, 0x1e, 0x70, 0xe9, 0x54, 0x88, 0x95, 0xf4, 0x66, 0x95, 0x4e, 0x85, 0xa8, 0xa5, 0x0f, 0x7e, 945 0x0d, 0xa0, 0xe3, 0x5f, 0x1a, 0xfa, 0x0c, 0xba, 0xf4, 0x39, 0x4d, 0x4a, 0x43, 0xb1, 0x53, 0x77, 946 0xdb, 0x37, 0xc5, 0xcf, 0x73, 0x3c, 0x71, 0xf3, 0x8c, 0xcf, 0x73, 0xd1, 0x2e, 0x34, 0x59, 0x9a, 947 0xdb, 0xcb, 0xbf, 0x96, 0x63, 0xd2, 0xd0, 0xa7, 0xd0, 0x91, 0xa7, 0xa5, 0x4a, 0xf9, 0x33, 0x7b, 948 0x91, 0xd7, 0x52, 0xaa, 0xd4, 0x68, 0x09, 0x6f, 0xb9, 0xde, 0x7b, 0x4f, 0xdf, 0xd5, 0x05, 0x33, 949 0x35, 0x4d, 0x78, 0x6a, 0xdb, 0xd1, 0xc2, 0x1d, 0x0d, 0x1c, 0xf2, 0x94, 0xa2, 0xfb, 0x70, 0xcd, 950 0x0f, 0xb9, 0xad, 0xeb, 0x5f, 0x8e, 0x81, 0x67, 0x47, 0x3f, 0xc1, 0x0d, 0x7f, 0xee, 0x92, 0x8a, 951 0x53, 0x4a, 0x52, 0x7d, 0x03, 0xbf, 0xd7, 0x2e, 0x37, 0xaa, 0x4a, 0xd5, 0x34, 0xee, 0x24, 0x2e, 952 0xf7, 0xaa, 0x4a, 0x8d, 0xfe, 0x0c, 0xe1, 0xba, 0xab, 0x00, 0x53, 0x59, 0xe6, 0x0a, 0x7d, 0x0c, 953 0x6d, 0xbb, 0x3c, 0xdd, 0xe9, 0xc8, 0xcb, 0x88, 0x45, 0x12, 0xff, 0x60, 0x22, 0xd8, 0x65, 0xac, 954 0x9a, 0x14, 0xfe, 0xb3, 0x49, 0x8d, 0xff, 0x62, 0x12, 0xda, 0xaf, 0x39, 0xd2, 0xbc, 0xe4, 0x6a, 955 0xe3, 0xb0, 0x1f, 0xd4, 0x5c, 0xd9, 0xaf, 0xb9, 0xd2, 0x5a, 0x8b, 0xea, 0xd3, 0xd1, 0x27, 0xd0, 956 0x99, 0x53, 0x45, 0x52, 0xa2, 0x48, 0xbf, 0x6d, 0xb6, 0xc8, 0xd6, 0x05, 0xea, 0x57, 0xc5, 0x19, 957 0xae, 0xb2, 0xa2, 0x97, 0x01, 0x6c, 0x7c, 0xcd, 0x72, 0xfa, 0xd0, 0x01, 0x7a, 0x9a, 0x17, 0x44, 958 0x9d, 0xfa, 0x69, 0xd6, 0xdf, 0xe8, 0x08, 0xda, 0xa9, 0xb9, 0xdf, 0xd5, 0x5e, 0x8e, 0x23, 0xa3, 959 0x01, 0x74, 0x12, 0x5e, 0x28, 0xb3, 0xa3, 0xb5, 0xbb, 0x1b, 0xb8, 0xfa, 0x8d, 0x3e, 0x84, 0xeb, 960 0x4c, 0x4e, 0xed, 0x08, 0xe9, 0xad, 0x62, 0x4c, 0xeb, 0xe0, 0x0d, 0x26, 0x8f, 0x2a, 0x2c, 0x2a, 961 0x60, 0xb3, 0xda, 0x46, 0x6f, 0xa0, 0xe0, 0xe8, 0x00, 0xda, 0x16, 0xd1, 0x87, 0x9c, 0x12, 0x59, 962 0x1d, 0xa2, 0xbf, 0xd1, 0xfb, 0x00, 0x92, 0xfd, 0x48, 0xa7, 0xb3, 0x33, 0x45, 0xed, 0x4c, 0x35, 963 0x70, 0x57, 0x23, 0x63, 0x0d, 0x44, 0x0c, 0x9a, 0x7a, 0xd1, 0xd7, 0x6a, 0x09, 0xfe, 0x2f, 0xf3, 964 0xc2, 0x55, 0xf3, 0xa2, 0xdf, 0x03, 0xe8, 0x56, 0xc6, 0xa0, 0x07, 0xf5, 0xcd, 0xda, 0x1b, 0xed, 965 0xad, 0x79, 0x5e, 0xfd, 0x15, 0xf8, 0x75, 0xfc, 0xf8, 0xe2, 0x3a, 0xee, 0x8d, 0x3e, 0x5f, 0xfb, 966 0x02, 0xaf, 0xb4, 0x6a, 0x65, 0x91, 0x8f, 0xff, 0x08, 0xe0, 0xa3, 0x84, 0xcf, 0xd7, 0x13, 0x1b, 967 0xdf, 0xc2, 0x06, 0x3e, 0xb1, 0xb0, 0x9b, 0x7e, 0xf9, 0x5d, 0xf0, 0x18, 0x3b, 0x7e, 0xc6, 0x73, 968 0x52, 0x64, 0x31, 0x17, 0xd9, 0x30, 0xa3, 0x85, 0x79, 0xed, 0x43, 0x1b, 0x22, 0x0b, 0x26, 0x2f, 969 0xf9, 0xdb, 0x77, 0xb0, 0x82, 0xfe, 0x12, 0x86, 0xf8, 0xe4, 0x65, 0x78, 0xe7, 0xbe, 0x55, 0x9e, 970 0xd0, 0xe5, 0xb1, 0xa9, 0x6c, 0xa5, 0x84, 0xf8, 0xd1, 0xbd, 0x63, 0x4d, 0x9d, 0xb5, 0xcd, 0x59, 971 0x7b, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x79, 0x22, 0xd3, 0x61, 0x0a, 0x00, 0x00, 972} 973