blob: 2a1857de835291fd41acdea68a558d2938fc9b07 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: client/profile.proto
package client
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
duration "github.com/golang/protobuf/ptypes/duration"
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
// ManagedPool enumerates the different lab platform-managed pools.
// Devices in these pools are automatically managed by lab platform
// systems and can not be arbitrarily assigned to pools by users.
//
// Managed pool implementations are specific to test platform's scheduling
// backends.
// For Skylab, see
// https://chromium.googlesource.com/infra/infra/+/5566668428c6b286702bf440d9dfd0be7bca1d84/go/src/infra/libs/skylab/inventory/device.proto#173
// For autotest, see
// https://chromium.googlesource.com/chromiumos/third_party/autotest/+/7436c2b6e6bd32ed1f1bd08cf8e0feb40cfe7b89/server/constants.py#18
type SchedulerProfile_ManagedPool int32
const (
SchedulerProfile_MANAGED_POOL_UNSPECIFIED SchedulerProfile_ManagedPool = 0
SchedulerProfile_MANAGED_POOL_CQ SchedulerProfile_ManagedPool = 1
SchedulerProfile_MANAGED_POOL_BVT SchedulerProfile_ManagedPool = 2
SchedulerProfile_MANAGED_POOL_SUITES SchedulerProfile_ManagedPool = 3
SchedulerProfile_MANAGED_POOL_CTS SchedulerProfile_ManagedPool = 4
SchedulerProfile_MANAGED_POOL_CTS_PERBUILD SchedulerProfile_ManagedPool = 5
SchedulerProfile_MANAGED_POOL_CONTINUOUS SchedulerProfile_ManagedPool = 6
SchedulerProfile_MANAGED_POOL_ARC_PRESUBMIT SchedulerProfile_ManagedPool = 7
SchedulerProfile_MANAGED_POOL_QUOTA SchedulerProfile_ManagedPool = 8
)
var SchedulerProfile_ManagedPool_name = map[int32]string{
0: "MANAGED_POOL_UNSPECIFIED",
1: "MANAGED_POOL_CQ",
2: "MANAGED_POOL_BVT",
3: "MANAGED_POOL_SUITES",
4: "MANAGED_POOL_CTS",
5: "MANAGED_POOL_CTS_PERBUILD",
6: "MANAGED_POOL_CONTINUOUS",
7: "MANAGED_POOL_ARC_PRESUBMIT",
8: "MANAGED_POOL_QUOTA",
}
var SchedulerProfile_ManagedPool_value = map[string]int32{
"MANAGED_POOL_UNSPECIFIED": 0,
"MANAGED_POOL_CQ": 1,
"MANAGED_POOL_BVT": 2,
"MANAGED_POOL_SUITES": 3,
"MANAGED_POOL_CTS": 4,
"MANAGED_POOL_CTS_PERBUILD": 5,
"MANAGED_POOL_CONTINUOUS": 6,
"MANAGED_POOL_ARC_PRESUBMIT": 7,
"MANAGED_POOL_QUOTA": 8,
}
func (x SchedulerProfile_ManagedPool) String() string {
return proto.EnumName(SchedulerProfile_ManagedPool_name, int32(x))
}
func (SchedulerProfile_ManagedPool) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{2, 0}
}
// Profile to coordinate behavioral configs of internal sub services e.g. test platform
// Next Tag: 4
type Profile struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Id *ProfileId `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
TestPlatformProfile *TestPlatformProfile `protobuf:"bytes,3,opt,name=test_platform_profile,json=testPlatformProfile,proto3" json:"test_platform_profile,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Profile) Reset() { *m = Profile{} }
func (m *Profile) String() string { return proto.CompactTextString(m) }
func (*Profile) ProtoMessage() {}
func (*Profile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{0}
}
func (m *Profile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Profile.Unmarshal(m, b)
}
func (m *Profile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Profile.Marshal(b, m, deterministic)
}
func (m *Profile) XXX_Merge(src proto.Message) {
xxx_messageInfo_Profile.Merge(m, src)
}
func (m *Profile) XXX_Size() int {
return xxx_messageInfo_Profile.Size(m)
}
func (m *Profile) XXX_DiscardUnknown() {
xxx_messageInfo_Profile.DiscardUnknown(m)
}
var xxx_messageInfo_Profile proto.InternalMessageInfo
func (m *Profile) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Profile) GetId() *ProfileId {
if m != nil {
return m.Id
}
return nil
}
func (m *Profile) GetTestPlatformProfile() *TestPlatformProfile {
if m != nil {
return m.TestPlatformProfile
}
return nil
}
// TestPlatformProfile configures aspects of the test platform behaviour per-request.
// Configure the scheduling priorities in the test platform, retry behavior, timeout characteristics
// and alerting thresholds throughout the test platform stack.
// Next Tag: 5
type TestPlatformProfile struct {
Scheduler *SchedulerProfile `protobuf:"bytes,1,opt,name=scheduler,proto3" json:"scheduler,omitempty"`
Retry *RetryProfile `protobuf:"bytes,2,opt,name=retry,proto3" json:"retry,omitempty"`
Timeout *TimeoutProfile `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
Monitoring *MonitoringProfile `protobuf:"bytes,4,opt,name=monitoring,proto3" json:"monitoring,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestPlatformProfile) Reset() { *m = TestPlatformProfile{} }
func (m *TestPlatformProfile) String() string { return proto.CompactTextString(m) }
func (*TestPlatformProfile) ProtoMessage() {}
func (*TestPlatformProfile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{1}
}
func (m *TestPlatformProfile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestPlatformProfile.Unmarshal(m, b)
}
func (m *TestPlatformProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestPlatformProfile.Marshal(b, m, deterministic)
}
func (m *TestPlatformProfile) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestPlatformProfile.Merge(m, src)
}
func (m *TestPlatformProfile) XXX_Size() int {
return xxx_messageInfo_TestPlatformProfile.Size(m)
}
func (m *TestPlatformProfile) XXX_DiscardUnknown() {
xxx_messageInfo_TestPlatformProfile.DiscardUnknown(m)
}
var xxx_messageInfo_TestPlatformProfile proto.InternalMessageInfo
func (m *TestPlatformProfile) GetScheduler() *SchedulerProfile {
if m != nil {
return m.Scheduler
}
return nil
}
func (m *TestPlatformProfile) GetRetry() *RetryProfile {
if m != nil {
return m.Retry
}
return nil
}
func (m *TestPlatformProfile) GetTimeout() *TimeoutProfile {
if m != nil {
return m.Timeout
}
return nil
}
func (m *TestPlatformProfile) GetMonitoring() *MonitoringProfile {
if m != nil {
return m.Monitoring
}
return nil
}
// SchedulerProfile controls the test platform scheduling behaviour.
// Next Tag: 5
type SchedulerProfile struct {
// Types that are valid to be assigned to Pool:
// *SchedulerProfile_ManagedPool_
// *SchedulerProfile_UnmanagedPool
Pool isSchedulerProfile_Pool `protobuf_oneof:"pool"`
// Priority corresponding to a swarming task priority.
// If specified, it should be in the range [50,255].
// It will be used for any swarming tasks created by this run.
//
// Note that the scheduler behavior with a given priority depends on
// other factors, such as pool. In particular, if requests are run in
// a quotascheduler-controlled pool, then this priority will be ignored,
// as priority will be determined by quota account balances.
Priority uint32 `protobuf:"varint,3,opt,name=priority,proto3" json:"priority,omitempty"`
// Quota account for both managed and unamanged pools.
// It should be used if the request is scheduled on a pool
// managed by QuotaScheduler. See go/qs-enabled-pools for details.
// If set for requests on no QuotaScheduler pools,
// it will be ignored and the request will default to running at
// the lowest priority.
QuotaAccount string `protobuf:"bytes,4,opt,name=quota_account,json=quotaAccount,proto3" json:"quota_account,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SchedulerProfile) Reset() { *m = SchedulerProfile{} }
func (m *SchedulerProfile) String() string { return proto.CompactTextString(m) }
func (*SchedulerProfile) ProtoMessage() {}
func (*SchedulerProfile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{2}
}
func (m *SchedulerProfile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SchedulerProfile.Unmarshal(m, b)
}
func (m *SchedulerProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SchedulerProfile.Marshal(b, m, deterministic)
}
func (m *SchedulerProfile) XXX_Merge(src proto.Message) {
xxx_messageInfo_SchedulerProfile.Merge(m, src)
}
func (m *SchedulerProfile) XXX_Size() int {
return xxx_messageInfo_SchedulerProfile.Size(m)
}
func (m *SchedulerProfile) XXX_DiscardUnknown() {
xxx_messageInfo_SchedulerProfile.DiscardUnknown(m)
}
var xxx_messageInfo_SchedulerProfile proto.InternalMessageInfo
type isSchedulerProfile_Pool interface {
isSchedulerProfile_Pool()
}
type SchedulerProfile_ManagedPool_ struct {
ManagedPool SchedulerProfile_ManagedPool `protobuf:"varint,1,opt,name=managed_pool,json=managedPool,proto3,enum=client.SchedulerProfile_ManagedPool,oneof"`
}
type SchedulerProfile_UnmanagedPool struct {
UnmanagedPool string `protobuf:"bytes,2,opt,name=unmanaged_pool,json=unmanagedPool,proto3,oneof"`
}
func (*SchedulerProfile_ManagedPool_) isSchedulerProfile_Pool() {}
func (*SchedulerProfile_UnmanagedPool) isSchedulerProfile_Pool() {}
func (m *SchedulerProfile) GetPool() isSchedulerProfile_Pool {
if m != nil {
return m.Pool
}
return nil
}
func (m *SchedulerProfile) GetManagedPool() SchedulerProfile_ManagedPool {
if x, ok := m.GetPool().(*SchedulerProfile_ManagedPool_); ok {
return x.ManagedPool
}
return SchedulerProfile_MANAGED_POOL_UNSPECIFIED
}
func (m *SchedulerProfile) GetUnmanagedPool() string {
if x, ok := m.GetPool().(*SchedulerProfile_UnmanagedPool); ok {
return x.UnmanagedPool
}
return ""
}
func (m *SchedulerProfile) GetPriority() uint32 {
if m != nil {
return m.Priority
}
return 0
}
func (m *SchedulerProfile) GetQuotaAccount() string {
if m != nil {
return m.QuotaAccount
}
return ""
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*SchedulerProfile) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*SchedulerProfile_ManagedPool_)(nil),
(*SchedulerProfile_UnmanagedPool)(nil),
}
}
// RetryPrfoile defines parameters that affect how failed tests within
// a request are retried.
type RetryProfile struct {
// Whether to allow test retries.
Allow bool `protobuf:"varint,1,opt,name=allow,proto3" json:"allow,omitempty"`
// Maximum number of retries of tests within this invocation to allow.
// 0 = unlimited.
Max uint32 `protobuf:"varint,2,opt,name=max,proto3" json:"max,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RetryProfile) Reset() { *m = RetryProfile{} }
func (m *RetryProfile) String() string { return proto.CompactTextString(m) }
func (*RetryProfile) ProtoMessage() {}
func (*RetryProfile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{3}
}
func (m *RetryProfile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RetryProfile.Unmarshal(m, b)
}
func (m *RetryProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RetryProfile.Marshal(b, m, deterministic)
}
func (m *RetryProfile) XXX_Merge(src proto.Message) {
xxx_messageInfo_RetryProfile.Merge(m, src)
}
func (m *RetryProfile) XXX_Size() int {
return xxx_messageInfo_RetryProfile.Size(m)
}
func (m *RetryProfile) XXX_DiscardUnknown() {
xxx_messageInfo_RetryProfile.DiscardUnknown(m)
}
var xxx_messageInfo_RetryProfile proto.InternalMessageInfo
func (m *RetryProfile) GetAllow() bool {
if m != nil {
return m.Allow
}
return false
}
func (m *RetryProfile) GetMax() uint32 {
if m != nil {
return m.Max
}
return 0
}
// TimeoutProfile defines parameters related to timeouts.
type TimeoutProfile struct {
// Maximum duration for the entire request to be handled.
MaximumDuration *duration.Duration `protobuf:"bytes,1,opt,name=maximum_duration,json=maximumDuration,proto3" json:"maximum_duration,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TimeoutProfile) Reset() { *m = TimeoutProfile{} }
func (m *TimeoutProfile) String() string { return proto.CompactTextString(m) }
func (*TimeoutProfile) ProtoMessage() {}
func (*TimeoutProfile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{4}
}
func (m *TimeoutProfile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TimeoutProfile.Unmarshal(m, b)
}
func (m *TimeoutProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TimeoutProfile.Marshal(b, m, deterministic)
}
func (m *TimeoutProfile) XXX_Merge(src proto.Message) {
xxx_messageInfo_TimeoutProfile.Merge(m, src)
}
func (m *TimeoutProfile) XXX_Size() int {
return xxx_messageInfo_TimeoutProfile.Size(m)
}
func (m *TimeoutProfile) XXX_DiscardUnknown() {
xxx_messageInfo_TimeoutProfile.DiscardUnknown(m)
}
var xxx_messageInfo_TimeoutProfile proto.InternalMessageInfo
func (m *TimeoutProfile) GetMaximumDuration() *duration.Duration {
if m != nil {
return m.MaximumDuration
}
return nil
}
// MonitoringProfile controls the alerting and monitoring of requests
// associated with the profile throughout the test infrastructure
// stack.
type MonitoringProfile struct {
TestPlatformAlertingThresholds *TestPlatformAlertingThresholds `protobuf:"bytes,1,opt,name=test_platform_alerting_thresholds,json=testPlatformAlertingThresholds,proto3" json:"test_platform_alerting_thresholds,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *MonitoringProfile) Reset() { *m = MonitoringProfile{} }
func (m *MonitoringProfile) String() string { return proto.CompactTextString(m) }
func (*MonitoringProfile) ProtoMessage() {}
func (*MonitoringProfile) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{5}
}
func (m *MonitoringProfile) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MonitoringProfile.Unmarshal(m, b)
}
func (m *MonitoringProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MonitoringProfile.Marshal(b, m, deterministic)
}
func (m *MonitoringProfile) XXX_Merge(src proto.Message) {
xxx_messageInfo_MonitoringProfile.Merge(m, src)
}
func (m *MonitoringProfile) XXX_Size() int {
return xxx_messageInfo_MonitoringProfile.Size(m)
}
func (m *MonitoringProfile) XXX_DiscardUnknown() {
xxx_messageInfo_MonitoringProfile.DiscardUnknown(m)
}
var xxx_messageInfo_MonitoringProfile proto.InternalMessageInfo
func (m *MonitoringProfile) GetTestPlatformAlertingThresholds() *TestPlatformAlertingThresholds {
if m != nil {
return m.TestPlatformAlertingThresholds
}
return nil
}
// TestPlatformAlertingThresholds capture alerting thresholds for test platform.
type TestPlatformAlertingThresholds struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TestPlatformAlertingThresholds) Reset() { *m = TestPlatformAlertingThresholds{} }
func (m *TestPlatformAlertingThresholds) String() string { return proto.CompactTextString(m) }
func (*TestPlatformAlertingThresholds) ProtoMessage() {}
func (*TestPlatformAlertingThresholds) Descriptor() ([]byte, []int) {
return fileDescriptor_61f7e96cabbf2e25, []int{6}
}
func (m *TestPlatformAlertingThresholds) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestPlatformAlertingThresholds.Unmarshal(m, b)
}
func (m *TestPlatformAlertingThresholds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TestPlatformAlertingThresholds.Marshal(b, m, deterministic)
}
func (m *TestPlatformAlertingThresholds) XXX_Merge(src proto.Message) {
xxx_messageInfo_TestPlatformAlertingThresholds.Merge(m, src)
}
func (m *TestPlatformAlertingThresholds) XXX_Size() int {
return xxx_messageInfo_TestPlatformAlertingThresholds.Size(m)
}
func (m *TestPlatformAlertingThresholds) XXX_DiscardUnknown() {
xxx_messageInfo_TestPlatformAlertingThresholds.DiscardUnknown(m)
}
var xxx_messageInfo_TestPlatformAlertingThresholds proto.InternalMessageInfo
func init() {
proto.RegisterEnum("client.SchedulerProfile_ManagedPool", SchedulerProfile_ManagedPool_name, SchedulerProfile_ManagedPool_value)
proto.RegisterType((*Profile)(nil), "client.Profile")
proto.RegisterType((*TestPlatformProfile)(nil), "client.TestPlatformProfile")
proto.RegisterType((*SchedulerProfile)(nil), "client.SchedulerProfile")
proto.RegisterType((*RetryProfile)(nil), "client.RetryProfile")
proto.RegisterType((*TimeoutProfile)(nil), "client.TimeoutProfile")
proto.RegisterType((*MonitoringProfile)(nil), "client.MonitoringProfile")
proto.RegisterType((*TestPlatformAlertingThresholds)(nil), "client.TestPlatformAlertingThresholds")
}
func init() { proto.RegisterFile("client/profile.proto", fileDescriptor_61f7e96cabbf2e25) }
var fileDescriptor_61f7e96cabbf2e25 = []byte{
// 659 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xcd, 0x4e, 0xdb, 0x4a,
0x14, 0xc6, 0x49, 0x08, 0xe4, 0x84, 0x80, 0x99, 0xe4, 0x42, 0x08, 0xf7, 0x46, 0xe0, 0x7b, 0x75,
0x8b, 0xba, 0x70, 0x50, 0x2a, 0x21, 0x75, 0x99, 0xbf, 0x16, 0x4b, 0xe4, 0x87, 0xb1, 0xcd, 0xa2,
0x1b, 0xcb, 0xc4, 0x8e, 0x33, 0x92, 0xed, 0x09, 0x93, 0xb1, 0x0a, 0x2f, 0xd0, 0x7d, 0x9f, 0xab,
0xef, 0xd1, 0x77, 0xe8, 0xae, 0x8a, 0xed, 0x09, 0x18, 0x28, 0x3b, 0x9f, 0xef, 0xe7, 0xcc, 0x39,
0x33, 0xe7, 0x18, 0x6a, 0x53, 0x9f, 0xb8, 0x21, 0x6f, 0x2d, 0x18, 0x9d, 0x11, 0xdf, 0x55, 0x17,
0x8c, 0x72, 0x8a, 0x8a, 0x09, 0xda, 0x38, 0xcc, 0xb2, 0x16, 0x71, 0x12, 0x41, 0xa3, 0xe9, 0x51,
0xea, 0xf9, 0x6e, 0x2b, 0x8e, 0x6e, 0xa3, 0x59, 0xcb, 0x89, 0x98, 0xcd, 0x09, 0x0d, 0x13, 0x5e,
0xf9, 0x2e, 0xc1, 0xd6, 0x24, 0x31, 0x21, 0x04, 0x85, 0xd0, 0x0e, 0xdc, 0xba, 0x74, 0x22, 0x9d,
0x95, 0x70, 0xfc, 0x8d, 0x4e, 0x21, 0x47, 0x9c, 0x7a, 0xee, 0x44, 0x3a, 0x2b, 0xb7, 0xf7, 0xd5,
0xe4, 0x14, 0x35, 0x35, 0x68, 0x0e, 0xce, 0x11, 0x07, 0x8d, 0xe1, 0x2f, 0xee, 0x2e, 0xb9, 0xb5,
0xf0, 0x6d, 0x3e, 0xa3, 0x2c, 0xb0, 0xd2, 0x22, 0xea, 0xf9, 0xd8, 0x75, 0x2c, 0x5c, 0x86, 0xbb,
0xe4, 0x93, 0x54, 0x93, 0x66, 0xc0, 0x55, 0xfe, 0x12, 0x54, 0x7e, 0x4a, 0x50, 0x7d, 0x45, 0x8c,
0x2e, 0xa0, 0xb4, 0x9c, 0xce, 0x5d, 0x27, 0xf2, 0x5d, 0x16, 0x17, 0x59, 0x6e, 0xd7, 0x45, 0x72,
0x5d, 0x10, 0x22, 0xf3, 0xa3, 0x14, 0xbd, 0x87, 0x4d, 0xe6, 0x72, 0xf6, 0x90, 0xb6, 0x51, 0x13,
0x1e, 0xbc, 0x02, 0x85, 0x3e, 0x91, 0xa0, 0x73, 0xd8, 0xe2, 0x24, 0x70, 0x69, 0xc4, 0xd3, 0xf2,
0x0f, 0xd6, 0xe5, 0x27, 0xb0, 0xd0, 0x0b, 0x19, 0xfa, 0x08, 0x10, 0xd0, 0x90, 0x70, 0xca, 0x48,
0xe8, 0xd5, 0x0b, 0xb1, 0xe9, 0x48, 0x98, 0x86, 0x6b, 0x46, 0xf8, 0x9e, 0x88, 0x95, 0x1f, 0x79,
0x90, 0x9f, 0x17, 0x8e, 0x34, 0xd8, 0x09, 0xec, 0xd0, 0xf6, 0x5c, 0xc7, 0x5a, 0x50, 0xea, 0xc7,
0x8d, 0xee, 0xb6, 0xff, 0xfb, 0x53, 0xa3, 0xea, 0x30, 0x11, 0x4f, 0x28, 0xf5, 0x2f, 0x37, 0x70,
0x39, 0x78, 0x0c, 0xd1, 0x3b, 0xd8, 0x8d, 0xc2, 0x4c, 0xb2, 0xd5, 0x0d, 0x94, 0x2e, 0x37, 0x70,
0x65, 0x8d, 0xc7, 0xc2, 0x06, 0x6c, 0x2f, 0x18, 0xa1, 0x8c, 0xf0, 0x87, 0xb8, 0xed, 0x0a, 0x5e,
0xc7, 0xe8, 0x5f, 0xa8, 0xdc, 0x45, 0x94, 0xdb, 0x96, 0x3d, 0x9d, 0xd2, 0x28, 0xe4, 0x71, 0x8b,
0x25, 0xbc, 0x13, 0x83, 0x9d, 0x04, 0x53, 0x7e, 0x49, 0x50, 0x7e, 0x52, 0x08, 0xfa, 0x1b, 0xea,
0xc3, 0xce, 0xa8, 0xf3, 0x79, 0xd0, 0xb7, 0x26, 0xe3, 0xf1, 0x95, 0x65, 0x8e, 0xf4, 0xc9, 0xa0,
0xa7, 0x7d, 0xd2, 0x06, 0x7d, 0x79, 0x03, 0x55, 0x61, 0x2f, 0xc3, 0xf6, 0xae, 0x65, 0x09, 0xd5,
0x40, 0xce, 0x80, 0xdd, 0x1b, 0x43, 0xce, 0xa1, 0x43, 0xa8, 0x66, 0x50, 0xdd, 0xd4, 0x8c, 0x81,
0x2e, 0xe7, 0x5f, 0xc8, 0x7b, 0x86, 0x2e, 0x17, 0xd0, 0x3f, 0x70, 0xf4, 0x1c, 0xb5, 0x26, 0x03,
0xdc, 0x35, 0xb5, 0xab, 0xbe, 0xbc, 0x89, 0x8e, 0xe1, 0x30, 0x4b, 0x8f, 0x47, 0x86, 0x36, 0x32,
0xc7, 0xa6, 0x2e, 0x17, 0x51, 0x13, 0x1a, 0x19, 0xb2, 0x83, 0x7b, 0xd6, 0x04, 0x0f, 0x74, 0xb3,
0x3b, 0xd4, 0x0c, 0x79, 0x0b, 0x1d, 0x00, 0xca, 0xf0, 0xd7, 0xe6, 0xd8, 0xe8, 0xc8, 0xdb, 0xdd,
0x22, 0x14, 0x56, 0x77, 0xab, 0x5c, 0xc0, 0xce, 0xd3, 0x89, 0x42, 0x35, 0xd8, 0xb4, 0x7d, 0x9f,
0x7e, 0x8d, 0x5f, 0x70, 0x1b, 0x27, 0x01, 0x92, 0x21, 0x1f, 0xd8, 0xf7, 0xf1, 0x43, 0x54, 0xf0,
0xea, 0x53, 0xb9, 0x81, 0xdd, 0xec, 0x6c, 0xa1, 0x3e, 0xc8, 0x81, 0x7d, 0x4f, 0x82, 0x28, 0xb0,
0xc4, 0xba, 0xa6, 0xf3, 0x7e, 0xa4, 0x26, 0xfb, 0xac, 0x8a, 0x7d, 0x56, 0xfb, 0xa9, 0x00, 0xef,
0xa5, 0x16, 0x01, 0x28, 0xdf, 0x24, 0xd8, 0x7f, 0x31, 0x7f, 0xe8, 0x0e, 0x4e, 0xb3, 0xdb, 0x6a,
0xfb, 0x2e, 0xe3, 0x24, 0xf4, 0x2c, 0x3e, 0x67, 0xee, 0x72, 0x4e, 0x7d, 0x67, 0x99, 0x1e, 0xf6,
0xff, 0x6b, 0x9b, 0xdb, 0x49, 0xe5, 0xc6, 0x5a, 0x8d, 0x9b, 0xfc, 0x4d, 0x5e, 0x39, 0x81, 0xe6,
0xdb, 0x19, 0xba, 0xed, 0x2f, 0xe7, 0x1e, 0x55, 0xa7, 0x73, 0x46, 0x03, 0x12, 0x05, 0x2a, 0x65,
0x5e, 0x4b, 0x04, 0x74, 0xd9, 0x22, 0xe1, 0x8c, 0xd9, 0xc9, 0x1f, 0xac, 0xe5, 0xd1, 0x56, 0x52,
0xd4, 0x6d, 0x31, 0x06, 0x3e, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb4, 0x24, 0x52, 0x56, 0x19,
0x05, 0x00, 0x00,
}