blob: bc44734ef6bd002991d303bb158237907a110a55 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: test_platform/analytics/result.proto
package analytics
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
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.ProtoPackageIsVersion3 // please upgrade the proto package
// TestPlanRun represents the test request defined by users and its running
// status.
type TestPlanRun struct {
// A unique name to identify this test plan run, format
// "testPlanRuns/CTP_BUILD_ID/REQ_KEY", where REQ_KEY is the CTP
// request’s key in the multiple-request,
// e.g. "testPlanRuns/8879199769272202448/octopus_ampton"
// Required field.
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
// CTP build ID.
BuildId int64 `protobuf:"varint,2,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"`
// Suite name. If the test plan is running an autotest suite,
// this field is the autotest suite name, e.g. wifi_interop.
Suite string `protobuf:"bytes,3,opt,name=suite,proto3" json:"suite,omitempty"`
// Human friendly url to access this run.
ExecutionUrl string `protobuf:"bytes,4,opt,name=execution_url,json=executionUrl,proto3" json:"execution_url,omitempty"`
// The dut_pool in which the test plan ran, e.g. "DUT_POOL_QUOTA" or
// "wificell".
// It is case sensitive: "WIFICELL" and "wificell" represent different
// pools.
// Note that legacy pools "suites", "bvt" and "pcq" have been integrated
// into "DUT_POOL_QUOTA" and legacy pool "cts" has been renamed to
// "DUT_POOL_CTS".
DutPool string `protobuf:"bytes,5,opt,name=dut_pool,json=dutPool,proto3" json:"dut_pool,omitempty"`
// The build target, a.k.a board name, e.g. "hatch", "octopus".
BuildTarget string `protobuf:"bytes,6,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
// CrOS build version, e.g. "R84/13091.0.0".
ChromeosBuild string `protobuf:"bytes,7,opt,name=chromeos_build,json=chromeosBuild,proto3" json:"chromeos_build,omitempty"`
Status *Status `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
// Event timestamp of test plan run, e.g. start time, end time.
Timeline *Timeline `protobuf:"bytes,9,opt,name=timeline,proto3" json:"timeline,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestPlanRun) Reset() { *m = TestPlanRun{} }
func (m *TestPlanRun) String() string { return proto.CompactTextString(m) }
func (*TestPlanRun) ProtoMessage() {}
func (*TestPlanRun) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{0}
}
func (m *TestPlanRun) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestPlanRun.Unmarshal(m, b)
}
func (m *TestPlanRun) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestPlanRun.Marshal(b, m, deterministic)
}
func (m *TestPlanRun) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestPlanRun.Merge(m, src)
}
func (m *TestPlanRun) XXX_Size() int {
return xxx_messageInfo_TestPlanRun.Size(m)
}
func (m *TestPlanRun) XXX_DiscardUnknown() {
xxx_messageInfo_TestPlanRun.DiscardUnknown(m)
}
var xxx_messageInfo_TestPlanRun proto.InternalMessageInfo
func (m *TestPlanRun) GetUid() string {
if m != nil {
return m.Uid
}
return ""
}
func (m *TestPlanRun) GetBuildId() int64 {
if m != nil {
return m.BuildId
}
return 0
}
func (m *TestPlanRun) GetSuite() string {
if m != nil {
return m.Suite
}
return ""
}
func (m *TestPlanRun) GetExecutionUrl() string {
if m != nil {
return m.ExecutionUrl
}
return ""
}
func (m *TestPlanRun) GetDutPool() string {
if m != nil {
return m.DutPool
}
return ""
}
func (m *TestPlanRun) GetBuildTarget() string {
if m != nil {
return m.BuildTarget
}
return ""
}
func (m *TestPlanRun) GetChromeosBuild() string {
if m != nil {
return m.ChromeosBuild
}
return ""
}
func (m *TestPlanRun) GetStatus() *Status {
if m != nil {
return m.Status
}
return nil
}
func (m *TestPlanRun) GetTimeline() *Timeline {
if m != nil {
return m.Timeline
}
return nil
}
// TestRun contains Skylab task level information.
type TestRun struct {
// Test runner build ID.
BuildId int64 `protobuf:"varint,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"`
// The name of the Skylab task corresponding to the test run, e.g.
// "tast.critical-chrome".
//
// For tasks containing a single test case, will generally be the same as the
// name of that test case, e.g. "provision_AutoUpdate.double".
// Required field.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Human friendly url to access this run.
ExecutionUrl string `protobuf:"bytes,3,opt,name=execution_url,json=executionUrl,proto3" json:"execution_url,omitempty"`
// The TestPlanRun.uid of the parent test plan run.
ParentUid string `protobuf:"bytes,4,opt,name=parent_uid,json=parentUid,proto3" json:"parent_uid,omitempty"`
// Model name, e.g. "helios", "mimrock".
// Note that a single TestPlanRun may be spread across multiple models, if
// the test plan request did not specify a model to run.
Model string `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`
// Event timestamp of test run, e.g. start time, end time.
Timeline *Timeline `protobuf:"bytes,6,opt,name=timeline,proto3" json:"timeline,omitempty"`
Status *Status `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
Verdict *Verdict `protobuf:"bytes,8,opt,name=verdict,proto3" json:"verdict,omitempty"`
// The URL for the entire logs of this run.
FullLogUrl string `protobuf:"bytes,9,opt,name=full_log_url,json=fullLogUrl,proto3" json:"full_log_url,omitempty"`
Prejob *TestRun_Prejob `protobuf:"bytes,10,opt,name=prejob,proto3" json:"prejob,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestRun) Reset() { *m = TestRun{} }
func (m *TestRun) String() string { return proto.CompactTextString(m) }
func (*TestRun) ProtoMessage() {}
func (*TestRun) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{1}
}
func (m *TestRun) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestRun.Unmarshal(m, b)
}
func (m *TestRun) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestRun.Marshal(b, m, deterministic)
}
func (m *TestRun) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestRun.Merge(m, src)
}
func (m *TestRun) XXX_Size() int {
return xxx_messageInfo_TestRun.Size(m)
}
func (m *TestRun) XXX_DiscardUnknown() {
xxx_messageInfo_TestRun.DiscardUnknown(m)
}
var xxx_messageInfo_TestRun proto.InternalMessageInfo
func (m *TestRun) GetBuildId() int64 {
if m != nil {
return m.BuildId
}
return 0
}
func (m *TestRun) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *TestRun) GetExecutionUrl() string {
if m != nil {
return m.ExecutionUrl
}
return ""
}
func (m *TestRun) GetParentUid() string {
if m != nil {
return m.ParentUid
}
return ""
}
func (m *TestRun) GetModel() string {
if m != nil {
return m.Model
}
return ""
}
func (m *TestRun) GetTimeline() *Timeline {
if m != nil {
return m.Timeline
}
return nil
}
func (m *TestRun) GetStatus() *Status {
if m != nil {
return m.Status
}
return nil
}
func (m *TestRun) GetVerdict() *Verdict {
if m != nil {
return m.Verdict
}
return nil
}
func (m *TestRun) GetFullLogUrl() string {
if m != nil {
return m.FullLogUrl
}
return ""
}
func (m *TestRun) GetPrejob() *TestRun_Prejob {
if m != nil {
return m.Prejob
}
return nil
}
type TestRun_Prejob struct {
Verdict *Verdict `protobuf:"bytes,1,opt,name=verdict,proto3" json:"verdict,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestRun_Prejob) Reset() { *m = TestRun_Prejob{} }
func (m *TestRun_Prejob) String() string { return proto.CompactTextString(m) }
func (*TestRun_Prejob) ProtoMessage() {}
func (*TestRun_Prejob) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{1, 0}
}
func (m *TestRun_Prejob) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestRun_Prejob.Unmarshal(m, b)
}
func (m *TestRun_Prejob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestRun_Prejob.Marshal(b, m, deterministic)
}
func (m *TestRun_Prejob) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestRun_Prejob.Merge(m, src)
}
func (m *TestRun_Prejob) XXX_Size() int {
return xxx_messageInfo_TestRun_Prejob.Size(m)
}
func (m *TestRun_Prejob) XXX_DiscardUnknown() {
xxx_messageInfo_TestRun_Prejob.DiscardUnknown(m)
}
var xxx_messageInfo_TestRun_Prejob proto.InternalMessageInfo
func (m *TestRun_Prejob) GetVerdict() *Verdict {
if m != nil {
return m.Verdict
}
return nil
}
// TestCaseResult describes the result of an individual test case.
type TestCaseResult struct {
// A unique name for this test case run,
// format "testCaseResults/TEST_RUNNER_BUILD_ID/TEST_CASE_NAME", e.g.
// "testCaseResults/8879199769272202448/provision_AutoUpdate.double".
// Required field.
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
// Test case name as it appears in status.log,
// e.g. "provision_AutoUpdate.double".
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// The TestRun.build_id of the parent test run.
ParentBuildId int64 `protobuf:"varint,3,opt,name=parent_build_id,json=parentBuildId,proto3" json:"parent_build_id,omitempty"`
Verdict *Verdict `protobuf:"bytes,4,opt,name=verdict,proto3" json:"verdict,omitempty"`
// A one line human readable description of what happened during test
// case execution (e.g. error/warning message). Not intended to be machine
// parseable. There's no guarantee that a given root cause will always
// resolve to the same summary.
HumanReadableSummary string `protobuf:"bytes,5,opt,name=human_readable_summary,json=humanReadableSummary,proto3" json:"human_readable_summary,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestCaseResult) Reset() { *m = TestCaseResult{} }
func (m *TestCaseResult) String() string { return proto.CompactTextString(m) }
func (*TestCaseResult) ProtoMessage() {}
func (*TestCaseResult) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{2}
}
func (m *TestCaseResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestCaseResult.Unmarshal(m, b)
}
func (m *TestCaseResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestCaseResult.Marshal(b, m, deterministic)
}
func (m *TestCaseResult) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestCaseResult.Merge(m, src)
}
func (m *TestCaseResult) XXX_Size() int {
return xxx_messageInfo_TestCaseResult.Size(m)
}
func (m *TestCaseResult) XXX_DiscardUnknown() {
xxx_messageInfo_TestCaseResult.DiscardUnknown(m)
}
var xxx_messageInfo_TestCaseResult proto.InternalMessageInfo
func (m *TestCaseResult) GetUid() string {
if m != nil {
return m.Uid
}
return ""
}
func (m *TestCaseResult) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *TestCaseResult) GetParentBuildId() int64 {
if m != nil {
return m.ParentBuildId
}
return 0
}
func (m *TestCaseResult) GetVerdict() *Verdict {
if m != nil {
return m.Verdict
}
return nil
}
func (m *TestCaseResult) GetHumanReadableSummary() string {
if m != nil {
return m.HumanReadableSummary
}
return ""
}
// The timeline of a task.
type Timeline struct {
// Time the task was requested.
CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Time the task began to execute in a bot.
StartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Time the task completed, unset if the task was
// stopped unexpectedly before its completion.
EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
// Time the task was stopped unexpectedly, unset if
// task has run to its end.
AbandonTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=abandon_time,json=abandonTime,proto3" json:"abandon_time,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Timeline) Reset() { *m = Timeline{} }
func (m *Timeline) String() string { return proto.CompactTextString(m) }
func (*Timeline) ProtoMessage() {}
func (*Timeline) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{3}
}
func (m *Timeline) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Timeline.Unmarshal(m, b)
}
func (m *Timeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Timeline.Marshal(b, m, deterministic)
}
func (m *Timeline) XXX_Merge(src proto.Message) {
xxx_messageInfo_Timeline.Merge(m, src)
}
func (m *Timeline) XXX_Size() int {
return xxx_messageInfo_Timeline.Size(m)
}
func (m *Timeline) XXX_DiscardUnknown() {
xxx_messageInfo_Timeline.DiscardUnknown(m)
}
var xxx_messageInfo_Timeline proto.InternalMessageInfo
func (m *Timeline) GetCreateTime() *timestamp.Timestamp {
if m != nil {
return m.CreateTime
}
return nil
}
func (m *Timeline) GetStartTime() *timestamp.Timestamp {
if m != nil {
return m.StartTime
}
return nil
}
func (m *Timeline) GetEndTime() *timestamp.Timestamp {
if m != nil {
return m.EndTime
}
return nil
}
func (m *Timeline) GetAbandonTime() *timestamp.Timestamp {
if m != nil {
return m.AbandonTime
}
return nil
}
// The latest known status of a task, may change as the run progresses.
type Status struct {
// All the currently possible values (corresponding to
// testplatform.Taskstate.LifeCycle enum values):
// NORMAL STATUS:
//
// PENDING: task is pending somewhere and does not run.
// RUNNING: task is running.
// COMPLETED: ran to completion without being cancelled externally,
// regardless of whether it succeeded or failed. A task is completed
// only if all its sub-tasks have reached the end, either with a normal
// or abnormal status.
//
// ABNORMAL STATUS:
//
// CANCELLED: never got a chance to run, cancelled externally.
// REJECTED: never got a chance to run, rejected due to unsatisfiable
// depenedencies.
// ABORTED: started running but was cancelled externally while running.
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Status) Reset() { *m = Status{} }
func (m *Status) String() string { return proto.CompactTextString(m) }
func (*Status) ProtoMessage() {}
func (*Status) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{4}
}
func (m *Status) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Status.Unmarshal(m, b)
}
func (m *Status) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Status.Marshal(b, m, deterministic)
}
func (m *Status) XXX_Merge(src proto.Message) {
xxx_messageInfo_Status.Merge(m, src)
}
func (m *Status) XXX_Size() int {
return xxx_messageInfo_Status.Size(m)
}
func (m *Status) XXX_DiscardUnknown() {
xxx_messageInfo_Status.DiscardUnknown(m)
}
var xxx_messageInfo_Status proto.InternalMessageInfo
func (m *Status) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// The known tokens describe whether a task passed, failed, or had some other
// indefinite verdict.
type Verdict struct {
// All the currently possible values (corresponding to
// testplatform.Taskstate.Verdict enum values):
//
// UNSPECIFIED(default): the task produced no usable verdict (possibly
// because it never ran, or never finished, or the results were
// unparseable).
// Under most circumstances, this should be treated as a failure or
// an infrastructure failure.
// PASSED: test run definitively passed.
// FAILED: test run definitively failed.
// NO_VERDICT: the task definitively produced no verdict(for instance,
// the test is irrelevant in the given environment).
// Under most circumstances, this should be treated as a passing
// (but uninteresting).
// PASSED_ON_RETRY: the task failed, but passed after one or more retries.
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Verdict) Reset() { *m = Verdict{} }
func (m *Verdict) String() string { return proto.CompactTextString(m) }
func (*Verdict) ProtoMessage() {}
func (*Verdict) Descriptor() ([]byte, []int) {
return fileDescriptor_ea3c1349f87b947c, []int{5}
}
func (m *Verdict) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Verdict.Unmarshal(m, b)
}
func (m *Verdict) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Verdict.Marshal(b, m, deterministic)
}
func (m *Verdict) XXX_Merge(src proto.Message) {
xxx_messageInfo_Verdict.Merge(m, src)
}
func (m *Verdict) XXX_Size() int {
return xxx_messageInfo_Verdict.Size(m)
}
func (m *Verdict) XXX_DiscardUnknown() {
xxx_messageInfo_Verdict.DiscardUnknown(m)
}
var xxx_messageInfo_Verdict proto.InternalMessageInfo
func (m *Verdict) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
func init() {
proto.RegisterType((*TestPlanRun)(nil), "test_platform.analytics.TestPlanRun")
proto.RegisterType((*TestRun)(nil), "test_platform.analytics.TestRun")
proto.RegisterType((*TestRun_Prejob)(nil), "test_platform.analytics.TestRun.Prejob")
proto.RegisterType((*TestCaseResult)(nil), "test_platform.analytics.TestCaseResult")
proto.RegisterType((*Timeline)(nil), "test_platform.analytics.Timeline")
proto.RegisterType((*Status)(nil), "test_platform.analytics.Status")
proto.RegisterType((*Verdict)(nil), "test_platform.analytics.Verdict")
}
func init() {
proto.RegisterFile("test_platform/analytics/result.proto", fileDescriptor_ea3c1349f87b947c)
}
var fileDescriptor_ea3c1349f87b947c = []byte{
// 652 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x4d, 0x6f, 0xd3, 0x40,
0x10, 0x95, 0x9b, 0xd6, 0x4e, 0x26, 0x69, 0x41, 0x56, 0x05, 0xa6, 0x12, 0x34, 0x0d, 0x5f, 0x3d,
0xd9, 0x12, 0x1f, 0x42, 0x80, 0x2a, 0x44, 0xcb, 0x05, 0x09, 0xa1, 0xca, 0x6d, 0x39, 0x70, 0xb1,
0x36, 0xf1, 0xc6, 0x35, 0x5a, 0xef, 0x5a, 0xfb, 0x51, 0xd1, 0xbf, 0xc9, 0x1f, 0xe0, 0x6f, 0x70,
0x42, 0x68, 0x67, 0x37, 0x51, 0x2a, 0x25, 0x2a, 0xb9, 0x79, 0xde, 0xbc, 0xe7, 0xdd, 0x79, 0x33,
0x3b, 0xf0, 0x44, 0x53, 0xa5, 0x8b, 0x96, 0x11, 0x3d, 0x15, 0xb2, 0xc9, 0x08, 0x27, 0xec, 0x5a,
0xd7, 0x13, 0x95, 0x49, 0xaa, 0x0c, 0xd3, 0x69, 0x2b, 0x85, 0x16, 0xf1, 0xfd, 0x1b, 0xac, 0x74,
0xce, 0xda, 0xdb, 0xaf, 0x84, 0xa8, 0x18, 0xcd, 0x90, 0x36, 0x36, 0xd3, 0x4c, 0xd7, 0x0d, 0x55,
0x9a, 0x34, 0xad, 0x53, 0x8e, 0x7e, 0x6d, 0x40, 0xff, 0x9c, 0x2a, 0x7d, 0xca, 0x08, 0xcf, 0x0d,
0x8f, 0xef, 0x42, 0xc7, 0xd4, 0x65, 0x12, 0x0c, 0x83, 0xc3, 0x5e, 0x6e, 0x3f, 0xe3, 0x07, 0xd0,
0x1d, 0x9b, 0x9a, 0x95, 0x45, 0x5d, 0x26, 0x1b, 0xc3, 0xe0, 0xb0, 0x93, 0x47, 0x18, 0x7f, 0x2e,
0xe3, 0x5d, 0xd8, 0x52, 0xa6, 0xd6, 0x34, 0xe9, 0x20, 0xdd, 0x05, 0xf1, 0x63, 0xd8, 0xa6, 0x3f,
0xe9, 0xc4, 0xe8, 0x5a, 0xf0, 0xc2, 0x48, 0x96, 0x6c, 0x62, 0x76, 0x30, 0x07, 0x2f, 0x24, 0xb3,
0x7f, 0x2d, 0x8d, 0x2e, 0x5a, 0x21, 0x58, 0xb2, 0x85, 0xf9, 0xa8, 0x34, 0xfa, 0x54, 0x08, 0x16,
0x1f, 0xc0, 0xc0, 0x1d, 0xa8, 0x89, 0xac, 0xa8, 0x4e, 0x42, 0x4c, 0xf7, 0x11, 0x3b, 0x47, 0x28,
0x7e, 0x0a, 0x3b, 0x93, 0x4b, 0x29, 0x1a, 0x2a, 0x54, 0x81, 0x78, 0x12, 0x21, 0x69, 0x7b, 0x86,
0x1e, 0x5b, 0x30, 0x7e, 0x03, 0xa1, 0xd2, 0x44, 0x1b, 0x95, 0x74, 0x87, 0xc1, 0x61, 0xff, 0xc5,
0x7e, 0xba, 0xc2, 0xa7, 0xf4, 0x0c, 0x69, 0xb9, 0xa7, 0xc7, 0x47, 0xd0, 0xb5, 0x46, 0xb1, 0x9a,
0xd3, 0xa4, 0x87, 0xd2, 0x83, 0x95, 0xd2, 0x73, 0x4f, 0xcc, 0xe7, 0x92, 0xd1, 0xdf, 0x0e, 0x44,
0xd6, 0x54, 0x6b, 0xe8, 0xa2, 0x7d, 0xc1, 0x4d, 0xfb, 0x0e, 0x60, 0x50, 0xd6, 0xaa, 0x65, 0xe4,
0xba, 0xe0, 0xa4, 0xa1, 0xe8, 0x6e, 0x2f, 0xef, 0x7b, 0xec, 0x2b, 0x69, 0x96, 0x78, 0xd9, 0x59,
0xe2, 0xe5, 0x43, 0x80, 0x96, 0x48, 0xca, 0x75, 0x61, 0x5b, 0xe7, 0xdc, 0xee, 0x39, 0xe4, 0xa2,
0xc6, 0x2e, 0x35, 0xa2, 0xa4, 0x33, 0x9f, 0x5d, 0x70, 0xa3, 0xc4, 0x70, 0xed, 0x12, 0x17, 0xac,
0x8d, 0xd6, 0xb3, 0xf6, 0x1d, 0x44, 0x57, 0x54, 0x96, 0xf5, 0x44, 0xfb, 0xa6, 0x0c, 0x57, 0x2a,
0xbf, 0x39, 0x5e, 0x3e, 0x13, 0xc4, 0x43, 0x18, 0x4c, 0x0d, 0x63, 0x05, 0x13, 0x15, 0x9a, 0xd1,
0xc3, 0x82, 0xc0, 0x62, 0x5f, 0x44, 0x65, 0xad, 0xf8, 0x00, 0x61, 0x2b, 0xe9, 0x0f, 0x31, 0x4e,
0x00, 0x7f, 0xfe, 0x7c, 0x75, 0x4d, 0xae, 0x3f, 0xe9, 0x29, 0xd2, 0x73, 0x2f, 0xdb, 0xfb, 0x04,
0xa1, 0x43, 0x16, 0x2f, 0x1a, 0xac, 0x79, 0xd1, 0xd1, 0xef, 0x00, 0x76, 0xec, 0x01, 0x27, 0x44,
0xd1, 0x1c, 0x1f, 0xea, 0x92, 0x87, 0xf5, 0x1f, 0xed, 0x7f, 0x06, 0x77, 0x7c, 0x67, 0xe7, 0x33,
0xd4, 0xc1, 0x19, 0xda, 0x76, 0xf0, 0xb1, 0x9f, 0xa4, 0x85, 0xbb, 0x6e, 0xae, 0x6b, 0xea, 0x2b,
0xb8, 0x77, 0x69, 0x1a, 0xc2, 0x0b, 0x49, 0x49, 0x49, 0xc6, 0x8c, 0x16, 0xca, 0x34, 0x0d, 0x91,
0xd7, 0x7e, 0x5e, 0x76, 0x31, 0x9b, 0xfb, 0xe4, 0x99, 0xcb, 0x8d, 0xfe, 0x04, 0xd0, 0x9d, 0x8d,
0x45, 0xfc, 0x1e, 0xfa, 0x13, 0x49, 0x89, 0xa6, 0x85, 0x9d, 0x0f, 0x6f, 0xd7, 0x5e, 0xea, 0x76,
0x4f, 0x3a, 0xdb, 0x3d, 0x38, 0x46, 0xb8, 0x7b, 0x72, 0x70, 0x74, 0x0b, 0xc4, 0x6f, 0x01, 0x94,
0x26, 0x52, 0x3b, 0xed, 0xc6, 0xad, 0xda, 0x1e, 0xb2, 0x51, 0xfa, 0x1a, 0xba, 0x94, 0x97, 0x4e,
0xd8, 0xb9, 0x55, 0x18, 0x51, 0x5e, 0xa2, 0xec, 0x08, 0x06, 0x64, 0x4c, 0x78, 0x29, 0xb8, 0x93,
0x6e, 0xde, 0x2a, 0xed, 0x7b, 0xbe, 0x45, 0x46, 0x8f, 0x20, 0x74, 0x33, 0x6d, 0x5f, 0xd6, 0x15,
0x61, 0x86, 0xfa, 0xae, 0xba, 0x60, 0xb4, 0x0f, 0x91, 0x37, 0x79, 0x39, 0xe1, 0xf8, 0xe4, 0xfb,
0xc7, 0x4a, 0xa4, 0xb8, 0xaa, 0x6a, 0xd3, 0xa4, 0x42, 0x56, 0xd9, 0x2c, 0x10, 0x2a, 0xab, 0xf9,
0x54, 0x12, 0xb7, 0xb0, 0xb3, 0x4a, 0x64, 0x2b, 0xf6, 0xff, 0x38, 0x44, 0xc6, 0xcb, 0x7f, 0x01,
0x00, 0x00, 0xff, 0xff, 0x7e, 0xcb, 0x0b, 0xbf, 0x21, 0x06, 0x00, 0x00,
}