plugin/drivers: plumb in stdout/stderr paths

This commit is contained in:
Nick Ethier 2018-09-26 15:32:26 -04:00 committed by Michael Schurter
parent 1f6873806e
commit 352c05cdf4
6 changed files with 268 additions and 232 deletions

View file

@ -67,7 +67,9 @@ func (l *logmonImpl) Start(cfg *LogConfig) error {
}
func (l *logmonImpl) Stop() error {
l.tl.Close()
if l.tl != nil {
l.tl.Close()
}
return nil
}

View file

@ -102,6 +102,8 @@ type TaskConfig struct {
User string
AllocDir string
rawDriverConfig []byte
StdoutPath string
StderrPath string
}
func (tc *TaskConfig) EnvList() []string {

View file

@ -49,7 +49,7 @@ func (x TaskState) String() string {
return proto.EnumName(TaskState_name, int32(x))
}
func (TaskState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{0}
return fileDescriptor_driver_16b159caa26c45f9, []int{0}
}
type FingerprintResponse_HealthState int32
@ -75,7 +75,7 @@ func (x FingerprintResponse_HealthState) String() string {
return proto.EnumName(FingerprintResponse_HealthState_name, int32(x))
}
func (FingerprintResponse_HealthState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{5, 0}
return fileDescriptor_driver_16b159caa26c45f9, []int{5, 0}
}
type StartTaskResponse_Result int32
@ -101,7 +101,7 @@ func (x StartTaskResponse_Result) String() string {
return proto.EnumName(StartTaskResponse_Result_name, int32(x))
}
func (StartTaskResponse_Result) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{9, 0}
return fileDescriptor_driver_16b159caa26c45f9, []int{9, 0}
}
type DriverCapabilities_FSIsolation int32
@ -127,7 +127,7 @@ func (x DriverCapabilities_FSIsolation) String() string {
return proto.EnumName(DriverCapabilities_FSIsolation_name, int32(x))
}
func (DriverCapabilities_FSIsolation) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{25, 0}
return fileDescriptor_driver_16b159caa26c45f9, []int{25, 0}
}
type CPUUsage_Fields int32
@ -162,7 +162,7 @@ func (x CPUUsage_Fields) String() string {
return proto.EnumName(CPUUsage_Fields_name, int32(x))
}
func (CPUUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{41, 0}
return fileDescriptor_driver_16b159caa26c45f9, []int{41, 0}
}
type MemoryUsage_Fields int32
@ -194,7 +194,7 @@ func (x MemoryUsage_Fields) String() string {
return proto.EnumName(MemoryUsage_Fields_name, int32(x))
}
func (MemoryUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{42, 0}
return fileDescriptor_driver_16b159caa26c45f9, []int{42, 0}
}
type TaskConfigSchemaRequest struct {
@ -207,7 +207,7 @@ func (m *TaskConfigSchemaRequest) Reset() { *m = TaskConfigSchemaRequest
func (m *TaskConfigSchemaRequest) String() string { return proto.CompactTextString(m) }
func (*TaskConfigSchemaRequest) ProtoMessage() {}
func (*TaskConfigSchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{0}
return fileDescriptor_driver_16b159caa26c45f9, []int{0}
}
func (m *TaskConfigSchemaRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaRequest.Unmarshal(m, b)
@ -239,7 +239,7 @@ func (m *TaskConfigSchemaResponse) Reset() { *m = TaskConfigSchemaRespon
func (m *TaskConfigSchemaResponse) String() string { return proto.CompactTextString(m) }
func (*TaskConfigSchemaResponse) ProtoMessage() {}
func (*TaskConfigSchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{1}
return fileDescriptor_driver_16b159caa26c45f9, []int{1}
}
func (m *TaskConfigSchemaResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaResponse.Unmarshal(m, b)
@ -276,7 +276,7 @@ func (m *CapabilitiesRequest) Reset() { *m = CapabilitiesRequest{} }
func (m *CapabilitiesRequest) String() string { return proto.CompactTextString(m) }
func (*CapabilitiesRequest) ProtoMessage() {}
func (*CapabilitiesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{2}
return fileDescriptor_driver_16b159caa26c45f9, []int{2}
}
func (m *CapabilitiesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesRequest.Unmarshal(m, b)
@ -311,7 +311,7 @@ func (m *CapabilitiesResponse) Reset() { *m = CapabilitiesResponse{} }
func (m *CapabilitiesResponse) String() string { return proto.CompactTextString(m) }
func (*CapabilitiesResponse) ProtoMessage() {}
func (*CapabilitiesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{3}
return fileDescriptor_driver_16b159caa26c45f9, []int{3}
}
func (m *CapabilitiesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesResponse.Unmarshal(m, b)
@ -348,7 +348,7 @@ func (m *FingerprintRequest) Reset() { *m = FingerprintRequest{} }
func (m *FingerprintRequest) String() string { return proto.CompactTextString(m) }
func (*FingerprintRequest) ProtoMessage() {}
func (*FingerprintRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{4}
return fileDescriptor_driver_16b159caa26c45f9, []int{4}
}
func (m *FingerprintRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintRequest.Unmarshal(m, b)
@ -391,7 +391,7 @@ func (m *FingerprintResponse) Reset() { *m = FingerprintResponse{} }
func (m *FingerprintResponse) String() string { return proto.CompactTextString(m) }
func (*FingerprintResponse) ProtoMessage() {}
func (*FingerprintResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{5}
return fileDescriptor_driver_16b159caa26c45f9, []int{5}
}
func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b)
@ -446,7 +446,7 @@ func (m *RecoverTaskRequest) Reset() { *m = RecoverTaskRequest{} }
func (m *RecoverTaskRequest) String() string { return proto.CompactTextString(m) }
func (*RecoverTaskRequest) ProtoMessage() {}
func (*RecoverTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{6}
return fileDescriptor_driver_16b159caa26c45f9, []int{6}
}
func (m *RecoverTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskRequest.Unmarshal(m, b)
@ -490,7 +490,7 @@ func (m *RecoverTaskResponse) Reset() { *m = RecoverTaskResponse{} }
func (m *RecoverTaskResponse) String() string { return proto.CompactTextString(m) }
func (*RecoverTaskResponse) ProtoMessage() {}
func (*RecoverTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{7}
return fileDescriptor_driver_16b159caa26c45f9, []int{7}
}
func (m *RecoverTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskResponse.Unmarshal(m, b)
@ -522,7 +522,7 @@ func (m *StartTaskRequest) Reset() { *m = StartTaskRequest{} }
func (m *StartTaskRequest) String() string { return proto.CompactTextString(m) }
func (*StartTaskRequest) ProtoMessage() {}
func (*StartTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{8}
return fileDescriptor_driver_16b159caa26c45f9, []int{8}
}
func (m *StartTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskRequest.Unmarshal(m, b)
@ -576,7 +576,7 @@ func (m *StartTaskResponse) Reset() { *m = StartTaskResponse{} }
func (m *StartTaskResponse) String() string { return proto.CompactTextString(m) }
func (*StartTaskResponse) ProtoMessage() {}
func (*StartTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{9}
return fileDescriptor_driver_16b159caa26c45f9, []int{9}
}
func (m *StartTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskResponse.Unmarshal(m, b)
@ -636,7 +636,7 @@ func (m *WaitTaskRequest) Reset() { *m = WaitTaskRequest{} }
func (m *WaitTaskRequest) String() string { return proto.CompactTextString(m) }
func (*WaitTaskRequest) ProtoMessage() {}
func (*WaitTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{10}
return fileDescriptor_driver_16b159caa26c45f9, []int{10}
}
func (m *WaitTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskRequest.Unmarshal(m, b)
@ -677,7 +677,7 @@ func (m *WaitTaskResponse) Reset() { *m = WaitTaskResponse{} }
func (m *WaitTaskResponse) String() string { return proto.CompactTextString(m) }
func (*WaitTaskResponse) ProtoMessage() {}
func (*WaitTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{11}
return fileDescriptor_driver_16b159caa26c45f9, []int{11}
}
func (m *WaitTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskResponse.Unmarshal(m, b)
@ -729,7 +729,7 @@ func (m *StopTaskRequest) Reset() { *m = StopTaskRequest{} }
func (m *StopTaskRequest) String() string { return proto.CompactTextString(m) }
func (*StopTaskRequest) ProtoMessage() {}
func (*StopTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{12}
return fileDescriptor_driver_16b159caa26c45f9, []int{12}
}
func (m *StopTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskRequest.Unmarshal(m, b)
@ -780,7 +780,7 @@ func (m *StopTaskResponse) Reset() { *m = StopTaskResponse{} }
func (m *StopTaskResponse) String() string { return proto.CompactTextString(m) }
func (*StopTaskResponse) ProtoMessage() {}
func (*StopTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{13}
return fileDescriptor_driver_16b159caa26c45f9, []int{13}
}
func (m *StopTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskResponse.Unmarshal(m, b)
@ -814,7 +814,7 @@ func (m *DestroyTaskRequest) Reset() { *m = DestroyTaskRequest{} }
func (m *DestroyTaskRequest) String() string { return proto.CompactTextString(m) }
func (*DestroyTaskRequest) ProtoMessage() {}
func (*DestroyTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{14}
return fileDescriptor_driver_16b159caa26c45f9, []int{14}
}
func (m *DestroyTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskRequest.Unmarshal(m, b)
@ -858,7 +858,7 @@ func (m *DestroyTaskResponse) Reset() { *m = DestroyTaskResponse{} }
func (m *DestroyTaskResponse) String() string { return proto.CompactTextString(m) }
func (*DestroyTaskResponse) ProtoMessage() {}
func (*DestroyTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{15}
return fileDescriptor_driver_16b159caa26c45f9, []int{15}
}
func (m *DestroyTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskResponse.Unmarshal(m, b)
@ -890,7 +890,7 @@ func (m *InspectTaskRequest) Reset() { *m = InspectTaskRequest{} }
func (m *InspectTaskRequest) String() string { return proto.CompactTextString(m) }
func (*InspectTaskRequest) ProtoMessage() {}
func (*InspectTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{16}
return fileDescriptor_driver_16b159caa26c45f9, []int{16}
}
func (m *InspectTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskRequest.Unmarshal(m, b)
@ -933,7 +933,7 @@ func (m *InspectTaskResponse) Reset() { *m = InspectTaskResponse{} }
func (m *InspectTaskResponse) String() string { return proto.CompactTextString(m) }
func (*InspectTaskResponse) ProtoMessage() {}
func (*InspectTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{17}
return fileDescriptor_driver_16b159caa26c45f9, []int{17}
}
func (m *InspectTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskResponse.Unmarshal(m, b)
@ -986,7 +986,7 @@ func (m *TaskStatsRequest) Reset() { *m = TaskStatsRequest{} }
func (m *TaskStatsRequest) String() string { return proto.CompactTextString(m) }
func (*TaskStatsRequest) ProtoMessage() {}
func (*TaskStatsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{18}
return fileDescriptor_driver_16b159caa26c45f9, []int{18}
}
func (m *TaskStatsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsRequest.Unmarshal(m, b)
@ -1025,7 +1025,7 @@ func (m *TaskStatsResponse) Reset() { *m = TaskStatsResponse{} }
func (m *TaskStatsResponse) String() string { return proto.CompactTextString(m) }
func (*TaskStatsResponse) ProtoMessage() {}
func (*TaskStatsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{19}
return fileDescriptor_driver_16b159caa26c45f9, []int{19}
}
func (m *TaskStatsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsResponse.Unmarshal(m, b)
@ -1062,7 +1062,7 @@ func (m *TaskEventsRequest) Reset() { *m = TaskEventsRequest{} }
func (m *TaskEventsRequest) String() string { return proto.CompactTextString(m) }
func (*TaskEventsRequest) ProtoMessage() {}
func (*TaskEventsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{20}
return fileDescriptor_driver_16b159caa26c45f9, []int{20}
}
func (m *TaskEventsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskEventsRequest.Unmarshal(m, b)
@ -1096,7 +1096,7 @@ func (m *SignalTaskRequest) Reset() { *m = SignalTaskRequest{} }
func (m *SignalTaskRequest) String() string { return proto.CompactTextString(m) }
func (*SignalTaskRequest) ProtoMessage() {}
func (*SignalTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{21}
return fileDescriptor_driver_16b159caa26c45f9, []int{21}
}
func (m *SignalTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskRequest.Unmarshal(m, b)
@ -1140,7 +1140,7 @@ func (m *SignalTaskResponse) Reset() { *m = SignalTaskResponse{} }
func (m *SignalTaskResponse) String() string { return proto.CompactTextString(m) }
func (*SignalTaskResponse) ProtoMessage() {}
func (*SignalTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{22}
return fileDescriptor_driver_16b159caa26c45f9, []int{22}
}
func (m *SignalTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskResponse.Unmarshal(m, b)
@ -1177,7 +1177,7 @@ func (m *ExecTaskRequest) Reset() { *m = ExecTaskRequest{} }
func (m *ExecTaskRequest) String() string { return proto.CompactTextString(m) }
func (*ExecTaskRequest) ProtoMessage() {}
func (*ExecTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{23}
return fileDescriptor_driver_16b159caa26c45f9, []int{23}
}
func (m *ExecTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskRequest.Unmarshal(m, b)
@ -1234,7 +1234,7 @@ func (m *ExecTaskResponse) Reset() { *m = ExecTaskResponse{} }
func (m *ExecTaskResponse) String() string { return proto.CompactTextString(m) }
func (*ExecTaskResponse) ProtoMessage() {}
func (*ExecTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{24}
return fileDescriptor_driver_16b159caa26c45f9, []int{24}
}
func (m *ExecTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskResponse.Unmarshal(m, b)
@ -1293,7 +1293,7 @@ func (m *DriverCapabilities) Reset() { *m = DriverCapabilities{} }
func (m *DriverCapabilities) String() string { return proto.CompactTextString(m) }
func (*DriverCapabilities) ProtoMessage() {}
func (*DriverCapabilities) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{25}
return fileDescriptor_driver_16b159caa26c45f9, []int{25}
}
func (m *DriverCapabilities) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverCapabilities.Unmarshal(m, b)
@ -1354,7 +1354,11 @@ type TaskConfig struct {
User string `protobuf:"bytes,8,opt,name=user,proto3" json:"user,omitempty"`
// AllocDir is the directory on the host where the allocation directory
// exists.
AllocDir string `protobuf:"bytes,9,opt,name=alloc_dir,json=allocDir,proto3" json:"alloc_dir,omitempty"`
AllocDir string `protobuf:"bytes,9,opt,name=alloc_dir,json=allocDir,proto3" json:"alloc_dir,omitempty"`
// StdoutPath is the path to the file to open and write task stdout to
StdoutPath string `protobuf:"bytes,10,opt,name=stdout_path,json=stdoutPath,proto3" json:"stdout_path,omitempty"`
// StderrPath is the path to the file to open and write task stderr to
StderrPath string `protobuf:"bytes,11,opt,name=stderr_path,json=stderrPath,proto3" json:"stderr_path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1364,7 +1368,7 @@ func (m *TaskConfig) Reset() { *m = TaskConfig{} }
func (m *TaskConfig) String() string { return proto.CompactTextString(m) }
func (*TaskConfig) ProtoMessage() {}
func (*TaskConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{26}
return fileDescriptor_driver_16b159caa26c45f9, []int{26}
}
func (m *TaskConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfig.Unmarshal(m, b)
@ -1447,6 +1451,20 @@ func (m *TaskConfig) GetAllocDir() string {
return ""
}
func (m *TaskConfig) GetStdoutPath() string {
if m != nil {
return m.StdoutPath
}
return ""
}
func (m *TaskConfig) GetStderrPath() string {
if m != nil {
return m.StderrPath
}
return ""
}
type Resources struct {
// RawResources are the resources set for the task
RawResources *RawResources `protobuf:"bytes,1,opt,name=raw_resources,json=rawResources,proto3" json:"raw_resources,omitempty"`
@ -1461,7 +1479,7 @@ func (m *Resources) Reset() { *m = Resources{} }
func (m *Resources) String() string { return proto.CompactTextString(m) }
func (*Resources) ProtoMessage() {}
func (*Resources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{27}
return fileDescriptor_driver_16b159caa26c45f9, []int{27}
}
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
@ -1510,7 +1528,7 @@ func (m *RawResources) Reset() { *m = RawResources{} }
func (m *RawResources) String() string { return proto.CompactTextString(m) }
func (*RawResources) ProtoMessage() {}
func (*RawResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{28}
return fileDescriptor_driver_16b159caa26c45f9, []int{28}
}
func (m *RawResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RawResources.Unmarshal(m, b)
@ -1581,7 +1599,7 @@ func (m *NetworkResource) Reset() { *m = NetworkResource{} }
func (m *NetworkResource) String() string { return proto.CompactTextString(m) }
func (*NetworkResource) ProtoMessage() {}
func (*NetworkResource) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{29}
return fileDescriptor_driver_16b159caa26c45f9, []int{29}
}
func (m *NetworkResource) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkResource.Unmarshal(m, b)
@ -1655,7 +1673,7 @@ func (m *NetworkPort) Reset() { *m = NetworkPort{} }
func (m *NetworkPort) String() string { return proto.CompactTextString(m) }
func (*NetworkPort) ProtoMessage() {}
func (*NetworkPort) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{30}
return fileDescriptor_driver_16b159caa26c45f9, []int{30}
}
func (m *NetworkPort) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkPort.Unmarshal(m, b)
@ -1713,7 +1731,7 @@ func (m *LinuxResources) Reset() { *m = LinuxResources{} }
func (m *LinuxResources) String() string { return proto.CompactTextString(m) }
func (*LinuxResources) ProtoMessage() {}
func (*LinuxResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{31}
return fileDescriptor_driver_16b159caa26c45f9, []int{31}
}
func (m *LinuxResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LinuxResources.Unmarshal(m, b)
@ -1798,7 +1816,7 @@ func (m *Mount) Reset() { *m = Mount{} }
func (m *Mount) String() string { return proto.CompactTextString(m) }
func (*Mount) ProtoMessage() {}
func (*Mount) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{32}
return fileDescriptor_driver_16b159caa26c45f9, []int{32}
}
func (m *Mount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Mount.Unmarshal(m, b)
@ -1861,7 +1879,7 @@ func (m *Device) Reset() { *m = Device{} }
func (m *Device) String() string { return proto.CompactTextString(m) }
func (*Device) ProtoMessage() {}
func (*Device) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{33}
return fileDescriptor_driver_16b159caa26c45f9, []int{33}
}
func (m *Device) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Device.Unmarshal(m, b)
@ -1919,7 +1937,7 @@ func (m *TaskHandle) Reset() { *m = TaskHandle{} }
func (m *TaskHandle) String() string { return proto.CompactTextString(m) }
func (*TaskHandle) ProtoMessage() {}
func (*TaskHandle) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{34}
return fileDescriptor_driver_16b159caa26c45f9, []int{34}
}
func (m *TaskHandle) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskHandle.Unmarshal(m, b)
@ -1979,7 +1997,7 @@ func (m *NetworkOverride) Reset() { *m = NetworkOverride{} }
func (m *NetworkOverride) String() string { return proto.CompactTextString(m) }
func (*NetworkOverride) ProtoMessage() {}
func (*NetworkOverride) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{35}
return fileDescriptor_driver_16b159caa26c45f9, []int{35}
}
func (m *NetworkOverride) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkOverride.Unmarshal(m, b)
@ -2037,7 +2055,7 @@ func (m *ExitResult) Reset() { *m = ExitResult{} }
func (m *ExitResult) String() string { return proto.CompactTextString(m) }
func (*ExitResult) ProtoMessage() {}
func (*ExitResult) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{36}
return fileDescriptor_driver_16b159caa26c45f9, []int{36}
}
func (m *ExitResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExitResult.Unmarshal(m, b)
@ -2100,7 +2118,7 @@ func (m *TaskStatus) Reset() { *m = TaskStatus{} }
func (m *TaskStatus) String() string { return proto.CompactTextString(m) }
func (*TaskStatus) ProtoMessage() {}
func (*TaskStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{37}
return fileDescriptor_driver_16b159caa26c45f9, []int{37}
}
func (m *TaskStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatus.Unmarshal(m, b)
@ -2175,7 +2193,7 @@ func (m *TaskDriverStatus) Reset() { *m = TaskDriverStatus{} }
func (m *TaskDriverStatus) String() string { return proto.CompactTextString(m) }
func (*TaskDriverStatus) ProtoMessage() {}
func (*TaskDriverStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{38}
return fileDescriptor_driver_16b159caa26c45f9, []int{38}
}
func (m *TaskDriverStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskDriverStatus.Unmarshal(m, b)
@ -2220,7 +2238,7 @@ func (m *TaskStats) Reset() { *m = TaskStats{} }
func (m *TaskStats) String() string { return proto.CompactTextString(m) }
func (*TaskStats) ProtoMessage() {}
func (*TaskStats) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{39}
return fileDescriptor_driver_16b159caa26c45f9, []int{39}
}
func (m *TaskStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStats.Unmarshal(m, b)
@ -2282,7 +2300,7 @@ func (m *TaskResourceUsage) Reset() { *m = TaskResourceUsage{} }
func (m *TaskResourceUsage) String() string { return proto.CompactTextString(m) }
func (*TaskResourceUsage) ProtoMessage() {}
func (*TaskResourceUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{40}
return fileDescriptor_driver_16b159caa26c45f9, []int{40}
}
func (m *TaskResourceUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskResourceUsage.Unmarshal(m, b)
@ -2334,7 +2352,7 @@ func (m *CPUUsage) Reset() { *m = CPUUsage{} }
func (m *CPUUsage) String() string { return proto.CompactTextString(m) }
func (*CPUUsage) ProtoMessage() {}
func (*CPUUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{41}
return fileDescriptor_driver_16b159caa26c45f9, []int{41}
}
func (m *CPUUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CPUUsage.Unmarshal(m, b)
@ -2420,7 +2438,7 @@ func (m *MemoryUsage) Reset() { *m = MemoryUsage{} }
func (m *MemoryUsage) String() string { return proto.CompactTextString(m) }
func (*MemoryUsage) ProtoMessage() {}
func (*MemoryUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{42}
return fileDescriptor_driver_16b159caa26c45f9, []int{42}
}
func (m *MemoryUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemoryUsage.Unmarshal(m, b)
@ -2500,7 +2518,7 @@ func (m *DriverTaskEvent) Reset() { *m = DriverTaskEvent{} }
func (m *DriverTaskEvent) String() string { return proto.CompactTextString(m) }
func (*DriverTaskEvent) ProtoMessage() {}
func (*DriverTaskEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c5fa1f582257ecd9, []int{43}
return fileDescriptor_driver_16b159caa26c45f9, []int{43}
}
func (m *DriverTaskEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverTaskEvent.Unmarshal(m, b)
@ -3190,179 +3208,181 @@ var _Driver_serviceDesc = grpc.ServiceDesc{
Metadata: "driver.proto",
}
func init() { proto.RegisterFile("driver.proto", fileDescriptor_driver_c5fa1f582257ecd9) }
func init() { proto.RegisterFile("driver.proto", fileDescriptor_driver_16b159caa26c45f9) }
var fileDescriptor_driver_c5fa1f582257ecd9 = []byte{
// 2732 bytes of a gzipped FileDescriptorProto
var fileDescriptor_driver_16b159caa26c45f9 = []byte{
// 2757 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcb, 0x6f, 0x23, 0xc7,
0xd1, 0x17, 0x49, 0x91, 0x22, 0x8b, 0x14, 0x35, 0xdb, 0xbb, 0xfb, 0x99, 0xa6, 0xf1, 0x7d, 0x5e,
0x0f, 0x60, 0x40, 0xb0, 0xbd, 0x94, 0x2d, 0xe3, 0xf3, 0x3e, 0x02, 0x3f, 0x68, 0x6a, 0x76, 0x25,
0xaf, 0x44, 0x29, 0x4d, 0x0a, 0xeb, 0x4d, 0x62, 0x4f, 0x46, 0x33, 0x2d, 0x72, 0x2c, 0xce, 0xc3,
0xd3, 0x3d, 0x5a, 0x09, 0x41, 0x90, 0x20, 0x09, 0x82, 0x24, 0x40, 0x80, 0x5c, 0x82, 0xdc, 0x73,
0x0b, 0x72, 0xcd, 0x29, 0x41, 0x2e, 0x01, 0xf2, 0x3f, 0xe4, 0x98, 0x4b, 0x80, 0x5c, 0x73, 0xcd,
0x29, 0xe8, 0xc7, 0x0c, 0x87, 0x92, 0xd6, 0x1e, 0x52, 0x39, 0x4d, 0x77, 0x55, 0xf7, 0xaf, 0x6b,
0xaa, 0xaa, 0xbb, 0xaa, 0xbb, 0xa0, 0xe1, 0x44, 0xee, 0x29, 0x89, 0x3a, 0x61, 0x14, 0xb0, 0x00,
0xbd, 0x3e, 0xb6, 0xe8, 0xd8, 0xb5, 0x83, 0x28, 0xec, 0xf8, 0x81, 0x67, 0x39, 0x9d, 0x70, 0x12,
0x8f, 0x5c, 0x9f, 0x76, 0xe4, 0x28, 0x2a, 0x87, 0xb5, 0xff, 0x6f, 0x14, 0x04, 0xa3, 0x09, 0xd9,
0x10, 0xbd, 0xa3, 0xf8, 0x78, 0xc3, 0x89, 0x23, 0x8b, 0xb9, 0x81, 0xaf, 0xf8, 0xaf, 0x5e, 0xe4,
0x33, 0xd7, 0x23, 0x94, 0x59, 0x5e, 0xa8, 0x06, 0x7c, 0x34, 0x72, 0xd9, 0x38, 0x3e, 0xea, 0xd8,
0x81, 0xb7, 0x91, 0x2e, 0xb9, 0x21, 0x96, 0xdc, 0x50, 0x4b, 0x6e, 0xd0, 0xb1, 0x15, 0x11, 0x67,
0x63, 0x6c, 0x4f, 0x68, 0x48, 0x6c, 0xfe, 0x35, 0x79, 0x43, 0x22, 0xe8, 0x2f, 0xc3, 0x4b, 0x43,
0x8b, 0x9e, 0xf4, 0x02, 0xff, 0xd8, 0x1d, 0x0d, 0xec, 0x31, 0xf1, 0x2c, 0x4c, 0xbe, 0x8c, 0x09,
0x65, 0xfa, 0x77, 0xa0, 0x75, 0x99, 0x45, 0xc3, 0xc0, 0xa7, 0x04, 0x7d, 0x04, 0xcb, 0x1c, 0xa4,
0x55, 0xb8, 0x53, 0x58, 0xaf, 0x6f, 0xbe, 0xd5, 0x79, 0xd1, 0xff, 0xca, 0xc5, 0x3b, 0x6a, 0xf1,
0xce, 0x20, 0x24, 0x36, 0x16, 0x33, 0xf5, 0xdb, 0x70, 0xb3, 0x67, 0x85, 0xd6, 0x91, 0x3b, 0x71,
0x99, 0x4b, 0x68, 0xb2, 0x68, 0x0c, 0xb7, 0x66, 0xc9, 0x6a, 0xc1, 0xcf, 0xa0, 0x61, 0x67, 0xe8,
0x6a, 0xe1, 0x07, 0x9d, 0x5c, 0x8a, 0xee, 0x6c, 0x89, 0xde, 0x0c, 0xf0, 0x0c, 0x9c, 0x7e, 0x0b,
0xd0, 0x23, 0xd7, 0x1f, 0x91, 0x28, 0x8c, 0x5c, 0x9f, 0x25, 0xc2, 0xfc, 0xa2, 0x04, 0x37, 0x67,
0xc8, 0x4a, 0x98, 0x2f, 0x00, 0x2c, 0xc6, 0x22, 0xf7, 0x28, 0x66, 0x42, 0x94, 0xd2, 0x7a, 0x7d,
0xf3, 0x93, 0x9c, 0xa2, 0x5c, 0x81, 0xd7, 0xe9, 0xa6, 0x60, 0x86, 0xcf, 0xa2, 0x73, 0x9c, 0x41,
0x47, 0x9f, 0x43, 0x65, 0x4c, 0xac, 0x09, 0x1b, 0xb7, 0x8a, 0x77, 0x0a, 0xeb, 0xcd, 0xcd, 0x47,
0xd7, 0x58, 0x67, 0x5b, 0x00, 0x0d, 0x98, 0xc5, 0x08, 0x56, 0xa8, 0xe8, 0x2e, 0x20, 0xd9, 0x32,
0x1d, 0x42, 0xed, 0xc8, 0x0d, 0xb9, 0xff, 0xb5, 0x4a, 0x77, 0x0a, 0xeb, 0x35, 0x7c, 0x43, 0x72,
0xb6, 0xa6, 0x8c, 0xf6, 0xfb, 0xb0, 0x76, 0x41, 0x5a, 0xa4, 0x41, 0xe9, 0x84, 0x9c, 0x0b, 0x8b,
0xd4, 0x30, 0x6f, 0xa2, 0x5b, 0x50, 0x3e, 0xb5, 0x26, 0x31, 0x11, 0x22, 0xd7, 0xb0, 0xec, 0x3c,
0x2c, 0xde, 0x2f, 0xe8, 0x0f, 0xa0, 0x9e, 0x11, 0x02, 0x35, 0x01, 0x0e, 0xfb, 0x5b, 0xc6, 0xd0,
0xe8, 0x0d, 0x8d, 0x2d, 0x6d, 0x09, 0xad, 0x42, 0xed, 0xb0, 0xbf, 0x6d, 0x74, 0x77, 0x87, 0xdb,
0xcf, 0xb4, 0x02, 0xaa, 0xc3, 0x4a, 0xd2, 0x29, 0xea, 0x67, 0x80, 0x30, 0xb1, 0x83, 0x53, 0x12,
0x71, 0xaf, 0x54, 0x26, 0x42, 0x2f, 0xc1, 0x0a, 0xb3, 0xe8, 0x89, 0xe9, 0x3a, 0x4a, 0x80, 0x0a,
0xef, 0xee, 0x38, 0x68, 0x07, 0x2a, 0x63, 0xcb, 0x77, 0x26, 0x52, 0x88, 0xfa, 0xe6, 0x3b, 0x39,
0xf5, 0xc6, 0xc1, 0xb7, 0xc5, 0x44, 0xac, 0x00, 0xb8, 0xab, 0xce, 0xac, 0x2c, 0xb5, 0xa9, 0x3f,
0x03, 0x6d, 0xc0, 0xac, 0x88, 0x65, 0xc5, 0x31, 0x60, 0x99, 0xaf, 0xaf, 0xdc, 0x73, 0x9e, 0x35,
0xe5, 0x36, 0xc3, 0x62, 0xba, 0xfe, 0xaf, 0x22, 0xdc, 0xc8, 0x60, 0x2b, 0xb7, 0x7b, 0x0a, 0x95,
0x88, 0xd0, 0x78, 0xc2, 0x04, 0x7c, 0x73, 0xf3, 0xc3, 0x9c, 0xf0, 0x97, 0x90, 0x3a, 0x58, 0xc0,
0x60, 0x05, 0x87, 0xd6, 0x41, 0x93, 0x33, 0x4c, 0x12, 0x45, 0x41, 0x64, 0x7a, 0x74, 0xa4, 0x4c,
0xd7, 0x94, 0x74, 0x83, 0x93, 0xf7, 0xe8, 0x28, 0xa3, 0xd5, 0xd2, 0x35, 0xb5, 0x8a, 0x2c, 0xd0,
0x7c, 0xc2, 0x9e, 0x07, 0xd1, 0x89, 0xc9, 0x55, 0x1b, 0xb9, 0x0e, 0x69, 0x2d, 0x0b, 0xd0, 0xf7,
0x72, 0x82, 0xf6, 0xe5, 0xf4, 0x7d, 0x35, 0x1b, 0xaf, 0xf9, 0xb3, 0x04, 0xfd, 0x4d, 0xa8, 0xc8,
0x3f, 0xe5, 0x9e, 0x34, 0x38, 0xec, 0xf5, 0x8c, 0xc1, 0x40, 0x5b, 0x42, 0x35, 0x28, 0x63, 0x63,
0x88, 0xb9, 0x87, 0xd5, 0xa0, 0xfc, 0xa8, 0x3b, 0xec, 0xee, 0x6a, 0x45, 0xfd, 0x0d, 0x58, 0x7b,
0x6a, 0xb9, 0x2c, 0x8f, 0x73, 0xe9, 0x01, 0x68, 0xd3, 0xb1, 0xca, 0x3a, 0x3b, 0x33, 0xd6, 0xc9,
0xaf, 0x1a, 0xe3, 0xcc, 0x65, 0x17, 0xec, 0xa1, 0x41, 0x89, 0x44, 0x91, 0x32, 0x01, 0x6f, 0xea,
0xcf, 0x61, 0x6d, 0xc0, 0x82, 0x30, 0x97, 0xe7, 0xbf, 0x0b, 0x2b, 0x3c, 0x4e, 0x04, 0x31, 0x53,
0xae, 0xff, 0x72, 0x47, 0xc6, 0x91, 0x4e, 0x12, 0x47, 0x3a, 0x5b, 0x2a, 0xce, 0xe0, 0x64, 0x24,
0xfa, 0x1f, 0xa8, 0x50, 0x77, 0xe4, 0x5b, 0x13, 0xb5, 0xf5, 0x55, 0x4f, 0x47, 0xdc, 0xc9, 0x93,
0x85, 0x95, 0xe3, 0xf7, 0x00, 0x6d, 0x11, 0xca, 0xa2, 0xe0, 0x3c, 0x97, 0x3c, 0xb7, 0xa0, 0x7c,
0x1c, 0x44, 0xb6, 0xdc, 0x88, 0x55, 0x2c, 0x3b, 0x7c, 0x53, 0xcd, 0x80, 0x28, 0xec, 0xbb, 0x80,
0x76, 0x7c, 0x1e, 0x20, 0xf2, 0x19, 0xe2, 0x57, 0x45, 0xb8, 0x39, 0x33, 0x5e, 0x19, 0x63, 0xf1,
0x7d, 0xc8, 0x0f, 0xa6, 0x98, 0xca, 0x7d, 0x88, 0xf6, 0xa1, 0x22, 0x47, 0x28, 0x4d, 0xde, 0x9b,
0x03, 0x48, 0xc6, 0x1c, 0x05, 0xa7, 0x60, 0xae, 0x74, 0xfa, 0xd2, 0x7f, 0xdb, 0xe9, 0xb5, 0xe4,
0x3f, 0xe8, 0xd7, 0xea, 0xef, 0xdb, 0x70, 0x23, 0x33, 0x58, 0x29, 0xef, 0x11, 0x94, 0x29, 0x27,
0x28, 0xed, 0xbd, 0x3d, 0xa7, 0xf6, 0x28, 0x96, 0xd3, 0xf5, 0x9b, 0x12, 0xdc, 0x38, 0x25, 0x7e,
0x2a, 0x8a, 0xbe, 0x05, 0x37, 0x06, 0xc2, 0xb5, 0x72, 0xf9, 0xce, 0xd4, 0x2d, 0x8b, 0x33, 0x6e,
0x79, 0x0b, 0x50, 0x16, 0x45, 0x39, 0xcf, 0x39, 0xac, 0x19, 0x67, 0xc4, 0xce, 0x85, 0xdc, 0x82,
0x15, 0x3b, 0xf0, 0x3c, 0xcb, 0x77, 0x5a, 0xc5, 0x3b, 0xa5, 0xf5, 0x1a, 0x4e, 0xba, 0xd9, 0xfd,
0x53, 0xca, 0xbb, 0x7f, 0xf4, 0x5f, 0x16, 0x40, 0x9b, 0xae, 0xad, 0x14, 0xc9, 0xa5, 0x67, 0x0e,
0x07, 0xe2, 0x6b, 0x37, 0xb0, 0xea, 0x29, 0x7a, 0xb2, 0xc5, 0x25, 0x9d, 0x44, 0x51, 0xe6, 0x08,
0x29, 0x5d, 0xf3, 0x08, 0xd1, 0xff, 0x51, 0x00, 0x74, 0x39, 0xeb, 0x41, 0xaf, 0x41, 0x83, 0x12,
0xdf, 0x31, 0xa5, 0x1a, 0xa5, 0x85, 0xab, 0xb8, 0xce, 0x69, 0x52, 0x9f, 0x14, 0x21, 0x58, 0x26,
0x67, 0xc4, 0x56, 0xbb, 0x55, 0xb4, 0xd1, 0x18, 0x1a, 0xc7, 0xd4, 0x74, 0x69, 0x30, 0xb1, 0xd2,
0xf4, 0xa0, 0xb9, 0x69, 0x2c, 0x9c, 0x7d, 0x75, 0x1e, 0x0d, 0x76, 0x12, 0x30, 0x5c, 0x3f, 0xa6,
0x69, 0x47, 0xef, 0x40, 0x3d, 0xc3, 0x43, 0x55, 0x58, 0xee, 0xef, 0xf7, 0x0d, 0x6d, 0x09, 0x01,
0x54, 0x7a, 0xdb, 0x78, 0x7f, 0x7f, 0x28, 0x4f, 0xed, 0x9d, 0xbd, 0xee, 0x63, 0x43, 0x2b, 0xea,
0xff, 0x2e, 0x01, 0x4c, 0xc3, 0x27, 0x6a, 0x42, 0x31, 0xb5, 0x74, 0xd1, 0x75, 0xf8, 0xcf, 0xf8,
0x96, 0x97, 0x24, 0x22, 0xa2, 0x8d, 0x36, 0xe1, 0xb6, 0x47, 0x47, 0xa1, 0x65, 0x9f, 0x98, 0x2a,
0xea, 0xd9, 0x62, 0xb2, 0xf8, 0xab, 0x06, 0xbe, 0xa9, 0x98, 0x4a, 0x6a, 0x89, 0xbb, 0x0b, 0x25,
0xe2, 0x9f, 0xb6, 0x96, 0x45, 0xaa, 0xf7, 0x70, 0xee, 0xb0, 0xde, 0x31, 0xfc, 0x53, 0x99, 0xda,
0x71, 0x18, 0xd4, 0x87, 0x5a, 0x44, 0x68, 0x10, 0x47, 0x36, 0xa1, 0xad, 0xf2, 0x5c, 0x9b, 0x0c,
0x27, 0xf3, 0xf0, 0x14, 0x02, 0x6d, 0x41, 0xc5, 0x0b, 0x62, 0x9f, 0xd1, 0x56, 0x45, 0x08, 0xf8,
0x56, 0x4e, 0xb0, 0x3d, 0x3e, 0x09, 0xab, 0xb9, 0xe8, 0x31, 0xac, 0x38, 0xe4, 0xd4, 0xe5, 0x32,
0xad, 0x08, 0x98, 0xbb, 0x79, 0xed, 0x2b, 0x66, 0xe1, 0x64, 0x36, 0x57, 0x7a, 0x4c, 0x49, 0xd4,
0xaa, 0x4a, 0xa5, 0xf3, 0x36, 0x7a, 0x05, 0x6a, 0xd6, 0x64, 0x12, 0xd8, 0xa6, 0xe3, 0x46, 0xad,
0x9a, 0x60, 0x54, 0x05, 0x61, 0xcb, 0x8d, 0xda, 0xef, 0x41, 0x35, 0x51, 0xd0, 0x5c, 0xd9, 0xe4,
0x5f, 0x0b, 0x50, 0x4b, 0x15, 0x82, 0x3e, 0x85, 0xd5, 0xc8, 0x7a, 0x6e, 0x4e, 0x35, 0x2b, 0x8f,
0xaf, 0x77, 0xf3, 0x6a, 0xd6, 0x7a, 0x3e, 0x55, 0x6e, 0x23, 0xca, 0xf4, 0xd0, 0xe7, 0xb0, 0x36,
0x71, 0xfd, 0xf8, 0x2c, 0x83, 0x2d, 0xe3, 0xc1, 0xff, 0xe7, 0xc4, 0xde, 0xe5, 0xb3, 0xa7, 0xe8,
0xcd, 0xc9, 0x4c, 0x5f, 0xff, 0x43, 0x01, 0x1a, 0xd9, 0xe5, 0xb9, 0x12, 0xec, 0x30, 0x16, 0x3f,
0x50, 0xc2, 0xbc, 0xc9, 0x8f, 0x0c, 0x8f, 0x78, 0x41, 0x74, 0x2e, 0x56, 0x2e, 0x61, 0xd5, 0xe3,
0xba, 0x76, 0x5c, 0x7a, 0x22, 0x7c, 0xb7, 0x84, 0x45, 0x9b, 0xd3, 0xdc, 0x20, 0xa4, 0x22, 0x9b,
0x2a, 0x61, 0xd1, 0x46, 0x18, 0xaa, 0x2a, 0x50, 0x70, 0x8f, 0x2b, 0xcd, 0x1f, 0x70, 0x12, 0xe1,
0x70, 0x8a, 0xa3, 0xff, 0xa6, 0x08, 0x6b, 0x17, 0xb8, 0x5c, 0x4e, 0xe9, 0x06, 0xc9, 0x71, 0x2b,
0x7b, 0x5c, 0x26, 0xdb, 0x75, 0x92, 0x9c, 0x46, 0xb4, 0xc5, 0x66, 0x0d, 0x55, 0xbe, 0x51, 0x74,
0x43, 0x6e, 0x68, 0xef, 0xc8, 0x65, 0x52, 0xf0, 0x32, 0x96, 0x1d, 0xf4, 0x0c, 0x9a, 0x11, 0xa1,
0x24, 0x3a, 0x25, 0x8e, 0x19, 0x06, 0x11, 0x4b, 0xe4, 0xdf, 0x9c, 0x4f, 0xfe, 0x83, 0x20, 0x62,
0x78, 0x35, 0x41, 0xe2, 0x3d, 0x8a, 0x9e, 0xc2, 0xaa, 0x73, 0xee, 0x5b, 0x9e, 0x6b, 0x2b, 0xe4,
0xca, 0xc2, 0xc8, 0x0d, 0x05, 0x24, 0x80, 0xf9, 0x35, 0x27, 0xc3, 0xe4, 0x3f, 0x36, 0xb1, 0x8e,
0xc8, 0x44, 0xe9, 0x44, 0x76, 0x66, 0xfd, 0xba, 0xac, 0xfc, 0x5a, 0xff, 0x49, 0x11, 0x9a, 0xb3,
0xee, 0x82, 0xfe, 0x17, 0xc0, 0x0e, 0x63, 0x33, 0x24, 0x91, 0x1b, 0x38, 0xca, 0x29, 0x6a, 0x76,
0x18, 0x1f, 0x08, 0x02, 0xdf, 0x5a, 0x9c, 0xfd, 0x65, 0x1c, 0x30, 0x4b, 0x79, 0x47, 0xd5, 0x0e,
0xe3, 0x6f, 0xf2, 0x7e, 0x32, 0x57, 0xdc, 0xc3, 0xa9, 0xf2, 0x12, 0x3e, 0x7c, 0x20, 0x08, 0xe8,
0x1d, 0xb8, 0x2d, 0x1d, 0xc9, 0x9c, 0xb8, 0x9e, 0xcb, 0x4c, 0xd7, 0x37, 0x8f, 0xce, 0xf9, 0xa5,
0x56, 0xfa, 0x0e, 0x92, 0xcc, 0x5d, 0xce, 0xdb, 0xf1, 0x3f, 0xe6, 0x1c, 0xa4, 0xc3, 0x6a, 0x10,
0x78, 0x26, 0xb5, 0x83, 0x88, 0x98, 0x96, 0xf3, 0x85, 0x38, 0xc0, 0x4a, 0xb8, 0x1e, 0x04, 0xde,
0x80, 0xd3, 0xba, 0xce, 0x17, 0xe8, 0x55, 0xa8, 0xdb, 0x61, 0x4c, 0x09, 0x33, 0xf9, 0xa7, 0x55,
0x11, 0xbf, 0x0d, 0x92, 0xd4, 0x0b, 0x63, 0x9a, 0x19, 0xe0, 0x11, 0x8f, 0x9f, 0x37, 0x99, 0x01,
0x7b, 0xc4, 0xa3, 0xfa, 0x67, 0x50, 0x16, 0xa7, 0x13, 0xff, 0x3b, 0x11, 0xc0, 0x43, 0x8b, 0x8d,
0x95, 0xfe, 0xaa, 0x9c, 0x70, 0x60, 0xb1, 0x31, 0x67, 0x8e, 0x03, 0xca, 0x24, 0x53, 0xba, 0x56,
0x95, 0x13, 0x04, 0xb3, 0x0d, 0xd5, 0x88, 0x58, 0x4e, 0xe0, 0x4f, 0xce, 0xc5, 0x8f, 0x57, 0x71,
0xda, 0xd7, 0xbf, 0x84, 0x8a, 0x3c, 0xb5, 0xae, 0x81, 0x7f, 0x17, 0x90, 0x3d, 0x8a, 0x82, 0x38,
0xe4, 0x96, 0xf1, 0x5c, 0x4a, 0xdd, 0xc0, 0xa7, 0xc9, 0xcd, 0x59, 0x72, 0x0e, 0xa6, 0x0c, 0xfd,
0x2f, 0x05, 0x19, 0xa9, 0xe4, 0x35, 0x88, 0xc7, 0x7a, 0x15, 0x76, 0x16, 0xbe, 0x2b, 0x2a, 0x80,
0x24, 0x5f, 0x23, 0xea, 0x85, 0x60, 0xde, 0x7c, 0x8d, 0xc8, 0x7c, 0x8d, 0xf0, 0xe4, 0x40, 0x05,
0x44, 0x09, 0x27, 0xe3, 0x61, 0xdd, 0x49, 0x13, 0x59, 0xa2, 0xff, 0xb3, 0x90, 0x6e, 0xf9, 0x24,
0xe1, 0x44, 0x9f, 0x43, 0x95, 0xef, 0x1e, 0xd3, 0xb3, 0x42, 0xf5, 0x16, 0xd2, 0x5b, 0x2c, 0x97,
0xed, 0xf0, 0xcd, 0xb2, 0x67, 0x85, 0x32, 0x52, 0xae, 0x84, 0xb2, 0xc7, 0x8f, 0x0e, 0xcb, 0x99,
0x1e, 0x1d, 0xbc, 0x8d, 0x5e, 0x87, 0xa6, 0x15, 0xb3, 0xc0, 0xb4, 0x9c, 0x53, 0x12, 0x31, 0x97,
0x12, 0x65, 0xe1, 0x55, 0x4e, 0xed, 0x26, 0xc4, 0xf6, 0x43, 0x68, 0x64, 0x31, 0xbf, 0x2e, 0xb8,
0x94, 0xb3, 0xc1, 0xe5, 0xbb, 0x00, 0xd3, 0xbc, 0x8a, 0x7b, 0x02, 0x39, 0x73, 0x99, 0x69, 0x07,
0x8e, 0x3c, 0xda, 0xca, 0xb8, 0xca, 0x09, 0xbd, 0xc0, 0x21, 0x17, 0xb2, 0xd4, 0x72, 0x92, 0xa5,
0xf2, 0xcd, 0xc7, 0xb7, 0xca, 0x89, 0x3b, 0x99, 0x10, 0x47, 0x49, 0x58, 0x0b, 0x02, 0xef, 0x89,
0x20, 0xe8, 0x7f, 0x2e, 0x4a, 0x8f, 0x90, 0x77, 0x84, 0x5c, 0xb9, 0x4b, 0x6a, 0xea, 0xd2, 0xf5,
0x4c, 0xfd, 0x00, 0x80, 0x32, 0x2b, 0x62, 0xc4, 0x31, 0x2d, 0xa6, 0xae, 0xdd, 0xed, 0x4b, 0x69,
0xee, 0x30, 0x79, 0x6e, 0xc4, 0x35, 0x35, 0xba, 0xcb, 0xd0, 0xfb, 0xd0, 0xb0, 0x03, 0x2f, 0x9c,
0x10, 0x35, 0xb9, 0xfc, 0xb5, 0x93, 0xeb, 0xe9, 0xf8, 0x2e, 0xcb, 0xe4, 0xb8, 0x95, 0xeb, 0xe6,
0xb8, 0x7f, 0x2c, 0xc8, 0xab, 0x4e, 0xf6, 0xa6, 0x85, 0x46, 0x57, 0xbc, 0xcd, 0x3d, 0x5e, 0xf0,
0xda, 0xf6, 0x55, 0x0f, 0x73, 0xd7, 0x7d, 0x09, 0xfb, 0x53, 0x09, 0x6a, 0xe9, 0x8d, 0xe9, 0x92,
0xed, 0xef, 0x43, 0x2d, 0x7d, 0xeb, 0x55, 0xb9, 0xc6, 0x57, 0x9a, 0x27, 0x1d, 0x8c, 0x8e, 0x01,
0x59, 0xa3, 0x51, 0x9a, 0xa9, 0x98, 0x31, 0xb5, 0x46, 0xc9, 0x1d, 0xf3, 0xfe, 0x1c, 0x7a, 0x48,
0xc2, 0xcf, 0x21, 0x9f, 0x8f, 0x35, 0x6b, 0x34, 0x9a, 0xa1, 0xa0, 0xef, 0xc1, 0xed, 0xd9, 0x35,
0xcc, 0xa3, 0x73, 0x33, 0x74, 0x1d, 0x95, 0x23, 0x6f, 0xcf, 0x7b, 0x69, 0xec, 0xcc, 0xc0, 0x7f,
0x7c, 0x7e, 0xe0, 0x3a, 0x52, 0xe7, 0x28, 0xba, 0xc4, 0x68, 0xff, 0x00, 0x5e, 0x7a, 0xc1, 0xf0,
0x2b, 0x6c, 0xd0, 0xcf, 0xda, 0xe0, 0x3a, 0x4a, 0xc8, 0x58, 0xef, 0xb7, 0x05, 0x79, 0xb7, 0x9d,
0xd5, 0x49, 0x77, 0x9a, 0xb6, 0xd5, 0x37, 0x37, 0x72, 0xae, 0xd3, 0x3b, 0x38, 0x94, 0xf0, 0x22,
0xcf, 0xfb, 0x64, 0x26, 0xcf, 0xcb, 0x9f, 0x8b, 0xec, 0x89, 0x49, 0x12, 0x48, 0x21, 0xe8, 0xbf,
0x2f, 0x41, 0x35, 0x41, 0xe7, 0x11, 0x97, 0x9e, 0x53, 0x46, 0x3c, 0xd3, 0x4b, 0x8e, 0xb0, 0x02,
0x06, 0x49, 0xda, 0xe3, 0x87, 0xd8, 0x2b, 0x50, 0xe3, 0x99, 0xba, 0x64, 0x17, 0x05, 0xbb, 0xca,
0x09, 0x82, 0xf9, 0x2a, 0xd4, 0x59, 0xc0, 0xac, 0x89, 0xc9, 0x5c, 0xfb, 0x44, 0x06, 0xb9, 0x02,
0x06, 0x41, 0x1a, 0x72, 0x0a, 0x7a, 0x13, 0x6e, 0xb0, 0x71, 0x14, 0x30, 0x36, 0xe1, 0x69, 0x9a,
0x48, 0x4c, 0x64, 0x12, 0xb1, 0x8c, 0xb5, 0x94, 0x21, 0x13, 0x16, 0xca, 0x4f, 0xef, 0xe9, 0x60,
0xee, 0xba, 0xe2, 0x10, 0x59, 0xc6, 0xab, 0x29, 0x95, 0xbb, 0x36, 0xbf, 0xa2, 0x87, 0x24, 0xb2,
0x89, 0x2f, 0xcf, 0x8a, 0x02, 0x4e, 0xba, 0xc8, 0x84, 0x35, 0x8f, 0x58, 0x34, 0x8e, 0x88, 0x63,
0x1e, 0xbb, 0x64, 0xe2, 0xc8, 0x2b, 0x4b, 0x33, 0x77, 0x52, 0x9b, 0xa8, 0xa5, 0xf3, 0x48, 0xcc,
0xc6, 0xcd, 0x04, 0x4e, 0xf6, 0x79, 0x7e, 0x20, 0x5b, 0x68, 0x0d, 0xea, 0x83, 0x67, 0x83, 0xa1,
0xb1, 0x67, 0xee, 0xed, 0x6f, 0x19, 0xea, 0x8d, 0x7a, 0x60, 0x60, 0xd9, 0x2d, 0x70, 0xfe, 0x70,
0x7f, 0xd8, 0xdd, 0x35, 0x87, 0x3b, 0xbd, 0x27, 0x03, 0xad, 0x88, 0x6e, 0xc3, 0x8d, 0xe1, 0x36,
0xde, 0x1f, 0x0e, 0x77, 0x8d, 0x2d, 0xf3, 0xc0, 0xc0, 0x3b, 0xfb, 0x5b, 0x03, 0xad, 0x84, 0x10,
0x34, 0xa7, 0xe4, 0xe1, 0xce, 0x9e, 0xa1, 0x2d, 0xa3, 0x3a, 0xac, 0x1c, 0x18, 0xb8, 0x67, 0xf4,
0x87, 0x5a, 0x59, 0xff, 0x5b, 0x11, 0xea, 0x19, 0x2b, 0x72, 0x47, 0x8e, 0xa8, 0xbc, 0xc4, 0x2c,
0x63, 0xde, 0xe4, 0x87, 0x89, 0x6d, 0xd9, 0x63, 0x69, 0x9d, 0x65, 0x2c, 0x3b, 0xdc, 0x6e, 0x9e,
0x75, 0x96, 0xd9, 0xe7, 0xcb, 0xb8, 0xea, 0x59, 0x67, 0x12, 0xe4, 0x35, 0x68, 0x9c, 0x90, 0xc8,
0x27, 0x13, 0xc5, 0x97, 0x16, 0xa9, 0x4b, 0x9a, 0x1c, 0xb2, 0x0e, 0x9a, 0x1a, 0x32, 0x85, 0x91,
0xe6, 0x68, 0x4a, 0xfa, 0x5e, 0x02, 0x76, 0x74, 0x59, 0xeb, 0x15, 0xa1, 0xf5, 0x07, 0xf3, 0x3b,
0xe9, 0x8b, 0x14, 0x3f, 0x48, 0x15, 0xbf, 0x02, 0x25, 0x9c, 0x3c, 0xd7, 0xf6, 0xba, 0xbd, 0x6d,
0xae, 0xec, 0x55, 0xa8, 0xed, 0x75, 0x3f, 0x35, 0x0f, 0x07, 0xe2, 0xf2, 0x8f, 0x34, 0x68, 0x3c,
0x31, 0x70, 0xdf, 0xd8, 0x55, 0x94, 0x12, 0xba, 0x05, 0x9a, 0xa2, 0x4c, 0xc7, 0x2d, 0xeb, 0xbf,
0x2b, 0xc2, 0x9a, 0x3c, 0xd7, 0xd3, 0xf7, 0xa8, 0x17, 0x3f, 0x0c, 0x2d, 0x7e, 0xf4, 0xb6, 0x60,
0xc5, 0x23, 0x34, 0xb5, 0x43, 0x0d, 0x27, 0x5d, 0xe4, 0x42, 0xdd, 0xf2, 0xfd, 0x80, 0x89, 0x47,
0x0d, 0xaa, 0x8e, 0xc8, 0xc7, 0x73, 0x3d, 0x9f, 0xa4, 0x92, 0x77, 0xba, 0x53, 0x24, 0x79, 0x42,
0x66, 0xb1, 0xdb, 0x1f, 0x80, 0x76, 0x71, 0xc0, 0x3c, 0x71, 0xe9, 0x8d, 0x77, 0xa6, 0x61, 0x89,
0x70, 0x07, 0x3d, 0xec, 0x3f, 0xe9, 0xef, 0x3f, 0xed, 0x6b, 0x4b, 0xbc, 0x83, 0x0f, 0xfb, 0xfd,
0x9d, 0xfe, 0x63, 0xad, 0x80, 0x00, 0x2a, 0xc6, 0xa7, 0x3b, 0x43, 0x63, 0x4b, 0x2b, 0x6e, 0xfe,
0x7d, 0x15, 0x2a, 0x52, 0x48, 0xf4, 0x6b, 0x15, 0x92, 0xb3, 0x45, 0x43, 0xf4, 0xc1, 0xdc, 0xa9,
0xed, 0x4c, 0x21, 0xb2, 0xfd, 0xe1, 0xc2, 0xf3, 0xd5, 0xbb, 0xe0, 0x12, 0xfa, 0x79, 0x01, 0x1a,
0x33, 0x0f, 0x61, 0x79, 0xdf, 0x70, 0xae, 0xa8, 0x51, 0xb6, 0xbf, 0xb1, 0xd0, 0xdc, 0x54, 0x96,
0x9f, 0x15, 0xa0, 0x9e, 0xa9, 0xce, 0xa1, 0x07, 0x8b, 0x54, 0xf4, 0xa4, 0x24, 0x0f, 0x17, 0x2f,
0x06, 0xea, 0x4b, 0x6f, 0x17, 0xd0, 0x4f, 0x0b, 0x50, 0xcf, 0x94, 0xb6, 0x72, 0x8b, 0x72, 0xb9,
0x10, 0x97, 0x5b, 0x94, 0xab, 0x2a, 0x69, 0x4b, 0xe8, 0x87, 0x05, 0xa8, 0xa5, 0x65, 0x2a, 0x74,
0x6f, 0xfe, 0xc2, 0x96, 0x14, 0xe2, 0xfe, 0xa2, 0x15, 0x31, 0x7d, 0x09, 0x7d, 0x1f, 0xaa, 0x49,
0x4d, 0x07, 0xe5, 0x0d, 0x23, 0x17, 0x0a, 0x46, 0xed, 0x7b, 0x73, 0xcf, 0xcb, 0x2e, 0x9f, 0x14,
0x5a, 0x72, 0x2f, 0x7f, 0xa1, 0x24, 0xd4, 0xbe, 0x37, 0xf7, 0xbc, 0x74, 0x79, 0xee, 0x09, 0x99,
0x7a, 0x4c, 0x6e, 0x4f, 0xb8, 0x5c, 0x08, 0xca, 0xed, 0x09, 0x57, 0x95, 0x7f, 0xa4, 0x20, 0x99,
0x8a, 0x4e, 0x6e, 0x41, 0x2e, 0x57, 0x8d, 0x72, 0x0b, 0x72, 0x45, 0x01, 0x49, 0xb9, 0xe4, 0x34,
0x41, 0xbf, 0x37, 0x77, 0x11, 0x64, 0x4e, 0x97, 0xbc, 0x54, 0x86, 0xd1, 0x97, 0xd0, 0x8f, 0xd4,
0x93, 0x81, 0xac, 0xa0, 0xa0, 0x79, 0xa0, 0x66, 0x8a, 0x2e, 0xed, 0xf7, 0x16, 0x0b, 0x35, 0xe2,
0x8c, 0xf8, 0x71, 0x01, 0x60, 0x5a, 0x6b, 0xc9, 0x2d, 0xc4, 0xa5, 0x22, 0x4f, 0xfb, 0xc1, 0x02,
0x33, 0xb3, 0xdb, 0x23, 0x29, 0xaf, 0xe4, 0xde, 0x1e, 0x17, 0x6a, 0x41, 0xb9, 0xb7, 0xc7, 0xc5,
0x3a, 0x8e, 0xbe, 0xf4, 0xf1, 0xca, 0xb7, 0xca, 0x32, 0xf6, 0x57, 0xc4, 0xe7, 0xdd, 0xff, 0x04,
0x00, 0x00, 0xff, 0xff, 0x96, 0x01, 0xe4, 0xc4, 0xf0, 0x23, 0x00, 0x00,
0xd1, 0x17, 0x9f, 0x22, 0x8b, 0x14, 0x35, 0xdb, 0xbb, 0xfb, 0x99, 0xa6, 0xf1, 0x7d, 0x5e, 0x0f,
0x60, 0x40, 0xb0, 0xbd, 0x94, 0x2d, 0xe3, 0xf3, 0x3e, 0x02, 0x3f, 0x68, 0x72, 0x76, 0x25, 0xaf,
0x44, 0x29, 0x4d, 0x0a, 0xeb, 0x4d, 0x62, 0x4f, 0x46, 0x33, 0x2d, 0x72, 0x2c, 0xce, 0xc3, 0xdd,
0x43, 0xad, 0x84, 0x20, 0x48, 0x90, 0x04, 0x41, 0x12, 0x20, 0x40, 0x2e, 0x41, 0xee, 0xb9, 0x05,
0xb9, 0xe6, 0x94, 0xc7, 0x25, 0x40, 0xfe, 0x87, 0x1c, 0x73, 0x09, 0x90, 0x6b, 0xfe, 0x83, 0xa0,
0x1f, 0x33, 0x1c, 0x4a, 0x5a, 0x7b, 0x48, 0xe5, 0xc4, 0xa9, 0xea, 0xee, 0x5f, 0x17, 0xab, 0xaa,
0xab, 0xaa, 0xbb, 0xa0, 0xee, 0x50, 0xf7, 0x94, 0xd0, 0x76, 0x48, 0x83, 0x28, 0x40, 0xaf, 0x8f,
0x2d, 0x36, 0x76, 0xed, 0x80, 0x86, 0x6d, 0x3f, 0xf0, 0x2c, 0xa7, 0x1d, 0x4e, 0xa6, 0x23, 0xd7,
0x67, 0x6d, 0x39, 0x8b, 0xc9, 0x69, 0xad, 0xff, 0x1b, 0x05, 0xc1, 0x68, 0x42, 0x36, 0x05, 0x75,
0x34, 0x3d, 0xde, 0x74, 0xa6, 0xd4, 0x8a, 0xdc, 0xc0, 0x57, 0xe3, 0xaf, 0x5e, 0x1c, 0x8f, 0x5c,
0x8f, 0xb0, 0xc8, 0xf2, 0x42, 0x35, 0xe1, 0xa3, 0x91, 0x1b, 0x8d, 0xa7, 0x47, 0x6d, 0x3b, 0xf0,
0x36, 0x93, 0x2d, 0x37, 0xc5, 0x96, 0x9b, 0x6a, 0xcb, 0x4d, 0x36, 0xb6, 0x28, 0x71, 0x36, 0xc7,
0xf6, 0x84, 0x85, 0xc4, 0xe6, 0xbf, 0x26, 0xff, 0x90, 0x08, 0xfa, 0xcb, 0xf0, 0xd2, 0xd0, 0x62,
0x27, 0xdd, 0xc0, 0x3f, 0x76, 0x47, 0x03, 0x7b, 0x4c, 0x3c, 0x0b, 0x93, 0x2f, 0xa7, 0x84, 0x45,
0xfa, 0x77, 0xa0, 0x79, 0x79, 0x88, 0x85, 0x81, 0xcf, 0x08, 0xfa, 0x08, 0x8a, 0x1c, 0xa4, 0x99,
0xbb, 0x93, 0xdb, 0xa8, 0x6d, 0xbd, 0xd5, 0x7e, 0xd1, 0xff, 0x95, 0x9b, 0xb7, 0xd5, 0xe6, 0xed,
0x41, 0x48, 0x6c, 0x2c, 0x56, 0xea, 0xb7, 0xe1, 0x66, 0xd7, 0x0a, 0xad, 0x23, 0x77, 0xe2, 0x46,
0x2e, 0x61, 0xf1, 0xa6, 0x53, 0xb8, 0x35, 0xcf, 0x56, 0x1b, 0x7e, 0x06, 0x75, 0x3b, 0xc5, 0x57,
0x1b, 0x3f, 0x68, 0x67, 0x52, 0x74, 0xbb, 0x27, 0xa8, 0x39, 0xe0, 0x39, 0x38, 0xfd, 0x16, 0xa0,
0x47, 0xae, 0x3f, 0x22, 0x34, 0xa4, 0xae, 0x1f, 0xc5, 0xc2, 0xfc, 0xa2, 0x00, 0x37, 0xe7, 0xd8,
0x4a, 0x98, 0x2f, 0x00, 0xac, 0x28, 0xa2, 0xee, 0xd1, 0x34, 0x12, 0xa2, 0x14, 0x36, 0x6a, 0x5b,
0x9f, 0x64, 0x14, 0xe5, 0x0a, 0xbc, 0x76, 0x27, 0x01, 0x33, 0xfc, 0x88, 0x9e, 0xe3, 0x14, 0x3a,
0xfa, 0x1c, 0xca, 0x63, 0x62, 0x4d, 0xa2, 0x71, 0x33, 0x7f, 0x27, 0xb7, 0xd1, 0xd8, 0x7a, 0x74,
0x8d, 0x7d, 0xb6, 0x05, 0xd0, 0x20, 0xb2, 0x22, 0x82, 0x15, 0x2a, 0xba, 0x0b, 0x48, 0x7e, 0x99,
0x0e, 0x61, 0x36, 0x75, 0x43, 0xee, 0x7f, 0xcd, 0xc2, 0x9d, 0xdc, 0x46, 0x15, 0xdf, 0x90, 0x23,
0xbd, 0xd9, 0x40, 0xeb, 0x7d, 0x58, 0xbf, 0x20, 0x2d, 0xd2, 0xa0, 0x70, 0x42, 0xce, 0x85, 0x45,
0xaa, 0x98, 0x7f, 0xa2, 0x5b, 0x50, 0x3a, 0xb5, 0x26, 0x53, 0x22, 0x44, 0xae, 0x62, 0x49, 0x3c,
0xcc, 0xdf, 0xcf, 0xe9, 0x0f, 0xa0, 0x96, 0x12, 0x02, 0x35, 0x00, 0x0e, 0xfb, 0x3d, 0x63, 0x68,
0x74, 0x87, 0x46, 0x4f, 0x5b, 0x41, 0x6b, 0x50, 0x3d, 0xec, 0x6f, 0x1b, 0x9d, 0xdd, 0xe1, 0xf6,
0x33, 0x2d, 0x87, 0x6a, 0xb0, 0x1a, 0x13, 0x79, 0xfd, 0x0c, 0x10, 0x26, 0x76, 0x70, 0x4a, 0x28,
0xf7, 0x4a, 0x65, 0x22, 0xf4, 0x12, 0xac, 0x46, 0x16, 0x3b, 0x31, 0x5d, 0x47, 0x09, 0x50, 0xe6,
0xe4, 0x8e, 0x83, 0x76, 0xa0, 0x3c, 0xb6, 0x7c, 0x67, 0x22, 0x85, 0xa8, 0x6d, 0xbd, 0x93, 0x51,
0x6f, 0x1c, 0x7c, 0x5b, 0x2c, 0xc4, 0x0a, 0x80, 0xbb, 0xea, 0xdc, 0xce, 0x52, 0x9b, 0xfa, 0x33,
0xd0, 0x06, 0x91, 0x45, 0xa3, 0xb4, 0x38, 0x06, 0x14, 0xf9, 0xfe, 0xca, 0x3d, 0x17, 0xd9, 0x53,
0x1e, 0x33, 0x2c, 0x96, 0xeb, 0xff, 0xce, 0xc3, 0x8d, 0x14, 0xb6, 0x72, 0xbb, 0xa7, 0x50, 0xa6,
0x84, 0x4d, 0x27, 0x91, 0x80, 0x6f, 0x6c, 0x7d, 0x98, 0x11, 0xfe, 0x12, 0x52, 0x1b, 0x0b, 0x18,
0xac, 0xe0, 0xd0, 0x06, 0x68, 0x72, 0x85, 0x49, 0x28, 0x0d, 0xa8, 0xe9, 0xb1, 0x91, 0x32, 0x5d,
0x43, 0xf2, 0x0d, 0xce, 0xde, 0x63, 0xa3, 0x94, 0x56, 0x0b, 0xd7, 0xd4, 0x2a, 0xb2, 0x40, 0xf3,
0x49, 0xf4, 0x3c, 0xa0, 0x27, 0x26, 0x57, 0x2d, 0x75, 0x1d, 0xd2, 0x2c, 0x0a, 0xd0, 0xf7, 0x32,
0x82, 0xf6, 0xe5, 0xf2, 0x7d, 0xb5, 0x1a, 0xaf, 0xfb, 0xf3, 0x0c, 0xfd, 0x4d, 0x28, 0xcb, 0x7f,
0xca, 0x3d, 0x69, 0x70, 0xd8, 0xed, 0x1a, 0x83, 0x81, 0xb6, 0x82, 0xaa, 0x50, 0xc2, 0xc6, 0x10,
0x73, 0x0f, 0xab, 0x42, 0xe9, 0x51, 0x67, 0xd8, 0xd9, 0xd5, 0xf2, 0xfa, 0x1b, 0xb0, 0xfe, 0xd4,
0x72, 0xa3, 0x2c, 0xce, 0xa5, 0x07, 0xa0, 0xcd, 0xe6, 0x2a, 0xeb, 0xec, 0xcc, 0x59, 0x27, 0xbb,
0x6a, 0x8c, 0x33, 0x37, 0xba, 0x60, 0x0f, 0x0d, 0x0a, 0x84, 0x52, 0x65, 0x02, 0xfe, 0xa9, 0x3f,
0x87, 0xf5, 0x41, 0x14, 0x84, 0x99, 0x3c, 0xff, 0x5d, 0x58, 0xe5, 0x79, 0x22, 0x98, 0x46, 0xca,
0xf5, 0x5f, 0x6e, 0xcb, 0x3c, 0xd2, 0x8e, 0xf3, 0x48, 0xbb, 0xa7, 0xf2, 0x0c, 0x8e, 0x67, 0xa2,
0xff, 0x81, 0x32, 0x73, 0x47, 0xbe, 0x35, 0x51, 0x47, 0x5f, 0x51, 0x3a, 0xe2, 0x4e, 0x1e, 0x6f,
0xac, 0x1c, 0xbf, 0x0b, 0xa8, 0x47, 0x58, 0x44, 0x83, 0xf3, 0x4c, 0xf2, 0xdc, 0x82, 0xd2, 0x71,
0x40, 0x6d, 0x79, 0x10, 0x2b, 0x58, 0x12, 0xfc, 0x50, 0xcd, 0x81, 0x28, 0xec, 0xbb, 0x80, 0x76,
0x7c, 0x9e, 0x20, 0xb2, 0x19, 0xe2, 0x57, 0x79, 0xb8, 0x39, 0x37, 0x5f, 0x19, 0x63, 0xf9, 0x73,
0xc8, 0x03, 0xd3, 0x94, 0xc9, 0x73, 0x88, 0xf6, 0xa1, 0x2c, 0x67, 0x28, 0x4d, 0xde, 0x5b, 0x00,
0x48, 0xe6, 0x1c, 0x05, 0xa7, 0x60, 0xae, 0x74, 0xfa, 0xc2, 0x7f, 0xdb, 0xe9, 0xb5, 0xf8, 0x7f,
0xb0, 0xaf, 0xd5, 0xdf, 0xb7, 0xe1, 0x46, 0x6a, 0xb2, 0x52, 0xde, 0x23, 0x28, 0x31, 0xce, 0x50,
0xda, 0x7b, 0x7b, 0x41, 0xed, 0x31, 0x2c, 0x97, 0xeb, 0x37, 0x25, 0xb8, 0x71, 0x4a, 0xfc, 0x44,
0x14, 0xbd, 0x07, 0x37, 0x06, 0xc2, 0xb5, 0x32, 0xf9, 0xce, 0xcc, 0x2d, 0xf3, 0x73, 0x6e, 0x79,
0x0b, 0x50, 0x1a, 0x45, 0x39, 0xcf, 0x39, 0xac, 0x1b, 0x67, 0xc4, 0xce, 0x84, 0xdc, 0x84, 0x55,
0x3b, 0xf0, 0x3c, 0xcb, 0x77, 0x9a, 0xf9, 0x3b, 0x85, 0x8d, 0x2a, 0x8e, 0xc9, 0xf4, 0xf9, 0x29,
0x64, 0x3d, 0x3f, 0xfa, 0x2f, 0x73, 0xa0, 0xcd, 0xf6, 0x56, 0x8a, 0xe4, 0xd2, 0x47, 0x0e, 0x07,
0xe2, 0x7b, 0xd7, 0xb1, 0xa2, 0x14, 0x3f, 0x3e, 0xe2, 0x92, 0x4f, 0x28, 0x4d, 0x85, 0x90, 0xc2,
0x35, 0x43, 0x88, 0xfe, 0xcf, 0x1c, 0xa0, 0xcb, 0x55, 0x0f, 0x7a, 0x0d, 0xea, 0x8c, 0xf8, 0x8e,
0x29, 0xd5, 0x28, 0x2d, 0x5c, 0xc1, 0x35, 0xce, 0x93, 0xfa, 0x64, 0x08, 0x41, 0x91, 0x9c, 0x11,
0x5b, 0x9d, 0x56, 0xf1, 0x8d, 0xc6, 0x50, 0x3f, 0x66, 0xa6, 0xcb, 0x82, 0x89, 0x95, 0x94, 0x07,
0x8d, 0x2d, 0x63, 0xe9, 0xea, 0xab, 0xfd, 0x68, 0xb0, 0x13, 0x83, 0xe1, 0xda, 0x31, 0x4b, 0x08,
0xbd, 0x0d, 0xb5, 0xd4, 0x18, 0xaa, 0x40, 0xb1, 0xbf, 0xdf, 0x37, 0xb4, 0x15, 0x04, 0x50, 0xee,
0x6e, 0xe3, 0xfd, 0xfd, 0xa1, 0x8c, 0xda, 0x3b, 0x7b, 0x9d, 0xc7, 0x86, 0x96, 0xd7, 0xff, 0x5c,
0x04, 0x98, 0xa5, 0x4f, 0xd4, 0x80, 0x7c, 0x62, 0xe9, 0xbc, 0xeb, 0xf0, 0x3f, 0xe3, 0x5b, 0x5e,
0x5c, 0x88, 0x88, 0x6f, 0xb4, 0x05, 0xb7, 0x3d, 0x36, 0x0a, 0x2d, 0xfb, 0xc4, 0x54, 0x59, 0xcf,
0x16, 0x8b, 0xc5, 0xbf, 0xaa, 0xe3, 0x9b, 0x6a, 0x50, 0x49, 0x2d, 0x71, 0x77, 0xa1, 0x40, 0xfc,
0xd3, 0x66, 0x51, 0x94, 0x7a, 0x0f, 0x17, 0x4e, 0xeb, 0x6d, 0xc3, 0x3f, 0x95, 0xa5, 0x1d, 0x87,
0x41, 0x7d, 0xa8, 0x52, 0xc2, 0x82, 0x29, 0xb5, 0x09, 0x6b, 0x96, 0x16, 0x3a, 0x64, 0x38, 0x5e,
0x87, 0x67, 0x10, 0xa8, 0x07, 0x65, 0x2f, 0x98, 0xfa, 0x11, 0x6b, 0x96, 0x85, 0x80, 0x6f, 0x65,
0x04, 0xdb, 0xe3, 0x8b, 0xb0, 0x5a, 0x8b, 0x1e, 0xc3, 0xaa, 0x43, 0x4e, 0x5d, 0x2e, 0xd3, 0xaa,
0x80, 0xb9, 0x9b, 0xd5, 0xbe, 0x62, 0x15, 0x8e, 0x57, 0x73, 0xa5, 0x4f, 0x19, 0xa1, 0xcd, 0x8a,
0x54, 0x3a, 0xff, 0x46, 0xaf, 0x40, 0xd5, 0x9a, 0x4c, 0x02, 0xdb, 0x74, 0x5c, 0xda, 0xac, 0x8a,
0x81, 0x8a, 0x60, 0xf4, 0x5c, 0x8a, 0x5e, 0x85, 0x9a, 0x3c, 0x19, 0x66, 0x68, 0x45, 0xe3, 0x26,
0x88, 0x61, 0x90, 0xac, 0x03, 0x2b, 0x1a, 0xab, 0x09, 0x84, 0x52, 0x39, 0xa1, 0x96, 0x4c, 0x20,
0x94, 0xf2, 0x09, 0xad, 0xf7, 0xa0, 0x12, 0xab, 0x78, 0xa1, 0x7a, 0xf4, 0x6f, 0x39, 0xa8, 0x26,
0x2a, 0x45, 0x9f, 0xc2, 0x1a, 0xb5, 0x9e, 0x9b, 0x33, 0xdb, 0xc8, 0x00, 0xf8, 0x6e, 0x56, 0xdb,
0x58, 0xcf, 0x67, 0xe6, 0xa9, 0xd3, 0x14, 0x85, 0x3e, 0x87, 0xf5, 0x89, 0xeb, 0x4f, 0xcf, 0x52,
0xd8, 0x32, 0xa3, 0xfc, 0x7f, 0x46, 0xec, 0x5d, 0xbe, 0x7a, 0x86, 0xde, 0x98, 0xcc, 0xd1, 0xfa,
0x1f, 0x72, 0x50, 0x4f, 0x6f, 0xcf, 0x95, 0x60, 0x87, 0x53, 0xf1, 0x07, 0x0a, 0x98, 0x7f, 0xf2,
0xa0, 0xe3, 0x11, 0x2f, 0xa0, 0xe7, 0x62, 0xe7, 0x02, 0x56, 0x14, 0xb7, 0x96, 0xe3, 0xb2, 0x13,
0xe1, 0xfd, 0x05, 0x2c, 0xbe, 0x39, 0xcf, 0x0d, 0x42, 0x26, 0xea, 0xb1, 0x02, 0x16, 0xdf, 0x08,
0x43, 0x45, 0xa5, 0x1a, 0xee, 0xb3, 0x85, 0xc5, 0x53, 0x56, 0x2c, 0x1c, 0x4e, 0x70, 0xf4, 0xdf,
0xe4, 0x61, 0xfd, 0xc2, 0x28, 0x97, 0x53, 0x3a, 0x52, 0x1c, 0xb0, 0x25, 0xc5, 0x65, 0xb2, 0x5d,
0x27, 0xae, 0x8a, 0xc4, 0xb7, 0x38, 0xee, 0xa1, 0xaa, 0x58, 0xf2, 0x6e, 0xc8, 0x0d, 0xed, 0x1d,
0xb9, 0x91, 0x14, 0xbc, 0x84, 0x25, 0x81, 0x9e, 0x41, 0x83, 0x12, 0x46, 0xe8, 0x29, 0x71, 0xcc,
0x30, 0xa0, 0x51, 0x2c, 0xff, 0xd6, 0x62, 0xf2, 0x1f, 0x04, 0x34, 0xc2, 0x6b, 0x31, 0x12, 0xa7,
0x18, 0x7a, 0x0a, 0x6b, 0xce, 0xb9, 0x6f, 0x79, 0xae, 0xad, 0x90, 0xcb, 0x4b, 0x23, 0xd7, 0x15,
0x90, 0x00, 0xe6, 0x17, 0xa5, 0xd4, 0x20, 0xff, 0x63, 0x13, 0xeb, 0x88, 0x4c, 0x94, 0x4e, 0x24,
0x31, 0xef, 0xd7, 0x25, 0xe5, 0xd7, 0xfa, 0x4f, 0xf2, 0xd0, 0x98, 0x77, 0x17, 0xf4, 0xbf, 0x00,
0x76, 0x38, 0x35, 0x43, 0x42, 0xdd, 0xc0, 0x51, 0x4e, 0x51, 0xb5, 0xc3, 0xe9, 0x81, 0x60, 0xf0,
0xc3, 0xc9, 0x87, 0xbf, 0x9c, 0x06, 0x91, 0xa5, 0xbc, 0xa3, 0x62, 0x87, 0xd3, 0x6f, 0x72, 0x3a,
0x5e, 0x2b, 0x6e, 0xf2, 0x4c, 0x79, 0x09, 0x9f, 0x3e, 0x10, 0x0c, 0xf4, 0x0e, 0xdc, 0x96, 0x8e,
0x64, 0x4e, 0x5c, 0xcf, 0x8d, 0x4c, 0xd7, 0x37, 0x8f, 0xce, 0xf9, 0xb5, 0x58, 0xfa, 0x0e, 0x92,
0x83, 0xbb, 0x7c, 0x6c, 0xc7, 0xff, 0x98, 0x8f, 0x20, 0x1d, 0xd6, 0x82, 0xc0, 0x33, 0x99, 0x1d,
0x50, 0x62, 0x5a, 0xce, 0x17, 0x22, 0x04, 0x16, 0x70, 0x2d, 0x08, 0xbc, 0x01, 0xe7, 0x75, 0x9c,
0x2f, 0xf8, 0x89, 0xb7, 0xc3, 0x29, 0x23, 0x91, 0xc9, 0x7f, 0x9a, 0x65, 0x79, 0xe2, 0x25, 0xab,
0x1b, 0x4e, 0x59, 0x6a, 0x82, 0x47, 0x3c, 0x1e, 0xb1, 0x52, 0x13, 0xf6, 0x88, 0xc7, 0xf4, 0xcf,
0xa0, 0x24, 0xe2, 0x1b, 0xff, 0x77, 0xa2, 0x04, 0x10, 0xa1, 0x43, 0xea, 0xaf, 0xc2, 0x19, 0x22,
0xb2, 0xbc, 0x02, 0xd5, 0x71, 0xc0, 0x54, 0xe0, 0x91, 0xae, 0x55, 0xe1, 0x0c, 0x31, 0xd8, 0x82,
0x0a, 0x25, 0x96, 0x13, 0xf8, 0x93, 0x73, 0xf1, 0xc7, 0x2b, 0x38, 0xa1, 0xf5, 0x2f, 0xa1, 0x2c,
0xe3, 0xde, 0x35, 0xf0, 0xef, 0x02, 0xb2, 0x47, 0x34, 0x98, 0x86, 0xdc, 0x32, 0x9e, 0xcb, 0x98,
0x1b, 0xf8, 0x2c, 0xbe, 0x7b, 0xcb, 0x91, 0x83, 0xd9, 0x80, 0xfe, 0xd7, 0x9c, 0xcc, 0x75, 0xf2,
0x22, 0xc5, 0xab, 0x05, 0x95, 0xb8, 0x96, 0xbe, 0x6d, 0x2a, 0x80, 0xb8, 0xe2, 0x23, 0xea, 0x8d,
0x61, 0xd1, 0x8a, 0x8f, 0xc8, 0x8a, 0x8f, 0xf0, 0xf2, 0x42, 0xa5, 0x54, 0x09, 0x27, 0x33, 0x6a,
0xcd, 0x49, 0x4a, 0x61, 0xa2, 0xff, 0x2b, 0x97, 0x1c, 0xf9, 0xb8, 0x64, 0x45, 0x9f, 0x43, 0x85,
0x9f, 0x1e, 0xd3, 0xb3, 0x42, 0xf5, 0x9a, 0xd2, 0x5d, 0xae, 0x1a, 0x6e, 0xf3, 0xc3, 0xb2, 0x67,
0x85, 0x32, 0xd7, 0xae, 0x86, 0x92, 0xe2, 0xa1, 0xc3, 0x72, 0x66, 0xa1, 0x83, 0x7f, 0xa3, 0xd7,
0xa1, 0x61, 0x4d, 0xa3, 0xc0, 0xb4, 0x9c, 0x53, 0x42, 0x23, 0x97, 0x11, 0x65, 0xe1, 0x35, 0xce,
0xed, 0xc4, 0xcc, 0xd6, 0x43, 0xa8, 0xa7, 0x31, 0xbf, 0x2e, 0xb9, 0x94, 0xd2, 0xc9, 0xe5, 0xbb,
0x00, 0xb3, 0xca, 0x8c, 0x7b, 0x02, 0x39, 0x73, 0x23, 0xd3, 0x0e, 0x1c, 0x19, 0xda, 0x4a, 0xb8,
0xc2, 0x19, 0xdd, 0xc0, 0x21, 0x17, 0xea, 0xdc, 0x52, 0x5c, 0xe7, 0xf2, 0xc3, 0xc7, 0x8f, 0xca,
0x89, 0x3b, 0x99, 0x10, 0x47, 0x49, 0x58, 0x0d, 0x02, 0xef, 0x89, 0x60, 0xe8, 0x7f, 0xc9, 0x4b,
0x8f, 0x90, 0xb7, 0x8c, 0x4c, 0xd5, 0x4f, 0x62, 0xea, 0xc2, 0xf5, 0x4c, 0xfd, 0x00, 0x80, 0x45,
0x16, 0x8d, 0x88, 0x63, 0x5a, 0x91, 0xba, 0xb8, 0xb7, 0x2e, 0x15, 0xca, 0xc3, 0xf8, 0xc1, 0x12,
0x57, 0xd5, 0xec, 0x4e, 0x84, 0xde, 0x87, 0xba, 0x1d, 0x78, 0xe1, 0x84, 0xa8, 0xc5, 0xa5, 0xaf,
0x5d, 0x5c, 0x4b, 0xe6, 0x77, 0xa2, 0x54, 0x95, 0x5c, 0xbe, 0x6e, 0x95, 0xfc, 0xc7, 0x9c, 0xbc,
0x2c, 0xa5, 0xef, 0x6a, 0x68, 0x74, 0xc5, 0xeb, 0xde, 0xe3, 0x25, 0x2f, 0x7e, 0x5f, 0xf5, 0xb4,
0x77, 0xdd, 0xb7, 0xb4, 0x3f, 0x15, 0xa0, 0x9a, 0xdc, 0xb9, 0x2e, 0xd9, 0xfe, 0x3e, 0x54, 0x93,
0xd7, 0x62, 0x55, 0x6b, 0x7c, 0xa5, 0x79, 0x92, 0xc9, 0xe8, 0x18, 0x90, 0x35, 0x1a, 0x25, 0x95,
0x8a, 0x39, 0x65, 0xd6, 0x28, 0xbe, 0xa5, 0xde, 0x5f, 0x40, 0x0f, 0x71, 0xfa, 0x39, 0xe4, 0xeb,
0xb1, 0x66, 0x8d, 0x46, 0x73, 0x1c, 0xf4, 0x3d, 0xb8, 0x3d, 0xbf, 0x87, 0x79, 0x74, 0x6e, 0x86,
0xae, 0xa3, 0xaa, 0xec, 0xed, 0x45, 0xaf, 0x9d, 0xed, 0x39, 0xf8, 0x8f, 0xcf, 0x0f, 0x5c, 0x47,
0xea, 0x1c, 0xd1, 0x4b, 0x03, 0xad, 0x1f, 0xc0, 0x4b, 0x2f, 0x98, 0x7e, 0x85, 0x0d, 0xfa, 0x69,
0x1b, 0x5c, 0x47, 0x09, 0x29, 0xeb, 0xfd, 0x36, 0x27, 0x6f, 0xc7, 0xf3, 0x3a, 0xe9, 0xcc, 0xca,
0xb6, 0xda, 0xd6, 0x66, 0xc6, 0x7d, 0xba, 0x07, 0x87, 0x12, 0x5e, 0xd4, 0x79, 0x9f, 0xcc, 0xd5,
0x79, 0xd9, 0x6b, 0x91, 0x3d, 0xb1, 0x48, 0x02, 0x29, 0x04, 0xfd, 0xf7, 0x05, 0xa8, 0xc4, 0xe8,
0xa2, 0x08, 0x3f, 0x67, 0x11, 0xf1, 0x4c, 0x2f, 0x0e, 0x61, 0x39, 0x0c, 0x92, 0xb5, 0xc7, 0x83,
0xd8, 0x2b, 0x50, 0xe5, 0xb5, 0xbe, 0x1c, 0xce, 0x8b, 0xe1, 0x0a, 0x67, 0x88, 0xc1, 0x57, 0xa1,
0x16, 0x05, 0x91, 0x35, 0x31, 0x23, 0xd7, 0x3e, 0x91, 0x49, 0x2e, 0x87, 0x41, 0xb0, 0x86, 0x9c,
0x83, 0xde, 0x84, 0x1b, 0xd1, 0x98, 0x06, 0x51, 0x34, 0xe1, 0x65, 0x9a, 0x28, 0x4c, 0x64, 0x11,
0x51, 0xc4, 0x5a, 0x32, 0x20, 0x0b, 0x16, 0xc6, 0xa3, 0xf7, 0x6c, 0x32, 0x77, 0x5d, 0x11, 0x44,
0x8a, 0x78, 0x2d, 0xe1, 0x72, 0xd7, 0xe6, 0x97, 0xfc, 0x90, 0x50, 0x9b, 0xf8, 0x32, 0x56, 0xe4,
0x70, 0x4c, 0x22, 0x13, 0xd6, 0x3d, 0x62, 0xb1, 0x29, 0x25, 0x8e, 0x79, 0xec, 0x92, 0x89, 0x23,
0x2f, 0x3d, 0x8d, 0xcc, 0x45, 0x6d, 0xac, 0x96, 0xf6, 0x23, 0xb1, 0x1a, 0x37, 0x62, 0x38, 0x49,
0xf3, 0xfa, 0x40, 0x7e, 0xa1, 0x75, 0xa8, 0x0d, 0x9e, 0x0d, 0x86, 0xc6, 0x9e, 0xb9, 0xb7, 0xdf,
0x33, 0xd4, 0x2b, 0xf7, 0xc0, 0xc0, 0x92, 0xcc, 0xf1, 0xf1, 0xe1, 0xfe, 0xb0, 0xb3, 0x6b, 0x0e,
0x77, 0xba, 0x4f, 0x06, 0x5a, 0x1e, 0xdd, 0x86, 0x1b, 0xc3, 0x6d, 0xbc, 0x3f, 0x1c, 0xee, 0x1a,
0x3d, 0xf3, 0xc0, 0xc0, 0x3b, 0xfb, 0xbd, 0x81, 0x56, 0x40, 0x08, 0x1a, 0x33, 0xf6, 0x70, 0x67,
0xcf, 0xd0, 0x8a, 0xa8, 0x06, 0xab, 0x07, 0x06, 0xee, 0x1a, 0xfd, 0xa1, 0x56, 0xd2, 0xff, 0x9e,
0x87, 0x5a, 0xca, 0x8a, 0xdc, 0x91, 0x29, 0x93, 0x97, 0x98, 0x22, 0xe6, 0x9f, 0x3c, 0x98, 0xd8,
0x96, 0x3d, 0x96, 0xd6, 0x29, 0x62, 0x49, 0x70, 0xbb, 0x79, 0xd6, 0x59, 0xea, 0x9c, 0x17, 0x71,
0xc5, 0xb3, 0xce, 0x24, 0xc8, 0x6b, 0x50, 0x3f, 0x21, 0xd4, 0x27, 0x13, 0x35, 0x2e, 0x2d, 0x52,
0x93, 0x3c, 0x39, 0x65, 0x03, 0x34, 0x35, 0x65, 0x06, 0x23, 0xcd, 0xd1, 0x90, 0xfc, 0xbd, 0x18,
0xec, 0xe8, 0xb2, 0xd6, 0xcb, 0x42, 0xeb, 0x0f, 0x16, 0x77, 0xd2, 0x17, 0x29, 0x7e, 0x90, 0x28,
0x7e, 0x15, 0x0a, 0x38, 0x7e, 0xf0, 0xed, 0x76, 0xba, 0xdb, 0x5c, 0xd9, 0x6b, 0x50, 0xdd, 0xeb,
0x7c, 0x6a, 0x1e, 0x0e, 0xc4, 0xf3, 0x01, 0xd2, 0xa0, 0xfe, 0xc4, 0xc0, 0x7d, 0x63, 0x57, 0x71,
0x0a, 0xe8, 0x16, 0x68, 0x8a, 0x33, 0x9b, 0x57, 0xd4, 0x7f, 0x97, 0x87, 0x75, 0x19, 0xd7, 0x93,
0x17, 0xad, 0x17, 0x3f, 0x2d, 0x2d, 0x1f, 0x7a, 0x9b, 0xb0, 0xea, 0x11, 0x96, 0xd8, 0xa1, 0x8a,
0x63, 0x12, 0xb9, 0x50, 0xb3, 0x7c, 0x3f, 0x88, 0xc4, 0xb3, 0x08, 0x53, 0x21, 0xf2, 0xf1, 0x42,
0x0f, 0x30, 0x89, 0xe4, 0xed, 0xce, 0x0c, 0x49, 0x46, 0xc8, 0x34, 0x76, 0xeb, 0x03, 0xd0, 0x2e,
0x4e, 0x58, 0x24, 0x2f, 0xbd, 0xf1, 0xce, 0x2c, 0x2d, 0x11, 0xee, 0xa0, 0x87, 0xfd, 0x27, 0xfd,
0xfd, 0xa7, 0x7d, 0x6d, 0x85, 0x13, 0xf8, 0xb0, 0xdf, 0xdf, 0xe9, 0x3f, 0xd6, 0x72, 0x08, 0xa0,
0x6c, 0x7c, 0xba, 0x33, 0x34, 0x7a, 0x5a, 0x7e, 0xeb, 0x1f, 0x6b, 0x50, 0x96, 0x42, 0xa2, 0x5f,
0xab, 0x94, 0x9c, 0x6e, 0x3b, 0xa2, 0x0f, 0x16, 0x2e, 0x6d, 0xe7, 0x5a, 0x99, 0xad, 0x0f, 0x97,
0x5e, 0xaf, 0x5e, 0x16, 0x57, 0xd0, 0xcf, 0x73, 0x50, 0x9f, 0x7b, 0x4a, 0xcb, 0xfa, 0x0a, 0x74,
0x45, 0x97, 0xb3, 0xf5, 0x8d, 0xa5, 0xd6, 0x26, 0xb2, 0xfc, 0x2c, 0x07, 0xb5, 0x54, 0x7f, 0x0f,
0x3d, 0x58, 0xa6, 0x27, 0x28, 0x25, 0x79, 0xb8, 0x7c, 0x3b, 0x51, 0x5f, 0x79, 0x3b, 0x87, 0x7e,
0x9a, 0x83, 0x5a, 0xaa, 0x39, 0x96, 0x59, 0x94, 0xcb, 0xad, 0xbc, 0xcc, 0xa2, 0x5c, 0xd5, 0x8b,
0x5b, 0x41, 0x3f, 0xcc, 0x41, 0x35, 0x69, 0x74, 0xa1, 0x7b, 0x8b, 0xb7, 0xc6, 0xa4, 0x10, 0xf7,
0x97, 0xed, 0xa9, 0xe9, 0x2b, 0xe8, 0xfb, 0x50, 0x89, 0xbb, 0x42, 0x28, 0x6b, 0x1a, 0xb9, 0xd0,
0x72, 0x6a, 0xdd, 0x5b, 0x78, 0x5d, 0x7a, 0xfb, 0xb8, 0x55, 0x93, 0x79, 0xfb, 0x0b, 0x4d, 0xa5,
0xd6, 0xbd, 0x85, 0xd7, 0x25, 0xdb, 0x73, 0x4f, 0x48, 0x75, 0x74, 0x32, 0x7b, 0xc2, 0xe5, 0x56,
0x52, 0x66, 0x4f, 0xb8, 0xaa, 0x81, 0x24, 0x05, 0x49, 0xf5, 0x84, 0x32, 0x0b, 0x72, 0xb9, 0xef,
0x94, 0x59, 0x90, 0x2b, 0x5a, 0x50, 0xca, 0x25, 0x67, 0x05, 0xfa, 0xbd, 0x85, 0xdb, 0x28, 0x0b,
0xba, 0xe4, 0xa5, 0x46, 0x8e, 0xbe, 0x82, 0x7e, 0xa4, 0x9e, 0x0c, 0x64, 0x0f, 0x06, 0x2d, 0x02,
0x35, 0xd7, 0xb6, 0x69, 0xbd, 0xb7, 0x5c, 0xaa, 0x11, 0x31, 0xe2, 0xc7, 0x39, 0x80, 0x59, 0xb7,
0x26, 0xb3, 0x10, 0x97, 0xda, 0x44, 0xad, 0x07, 0x4b, 0xac, 0x4c, 0x1f, 0x8f, 0xb8, 0x41, 0x93,
0xf9, 0x78, 0x5c, 0xe8, 0x26, 0x65, 0x3e, 0x1e, 0x17, 0x3b, 0x41, 0xfa, 0xca, 0xc7, 0xab, 0xdf,
0x2a, 0xc9, 0xdc, 0x5f, 0x16, 0x3f, 0xef, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x44, 0x47, 0xcf,
0xbe, 0x32, 0x24, 0x00, 0x00,
}

View file

@ -325,6 +325,12 @@ message TaskConfig {
// AllocDir is the directory on the host where the allocation directory
// exists.
string alloc_dir = 9;
// StdoutPath is the path to the file to open and write task stdout to
string stdout_path = 10;
// StderrPath is the path to the file to open and write task stderr to
string stderr_path = 11;
}
message Resources {

View file

@ -87,21 +87,20 @@ func (h *DriverHarness) MkAllocDir(t *TaskConfig, enableLogs bool) func() {
//logmon
if enableLogs {
var stdoutFifo, stderrFifo string
if runtime.GOOS == "windows" {
id := uuid.Generate()[:8]
stdoutFifo = fmt.Sprintf("//./pipe/%s-%s.stdout", t.Name, id)
stderrFifo = fmt.Sprintf("//./pipe/%s-%s.stderr", t.Name, id)
t.StdoutPath = fmt.Sprintf("//./pipe/%s-%s.stdout", t.Name, id)
t.StderrPath = fmt.Sprintf("//./pipe/%s-%s.stderr", t.Name, id)
} else {
stdoutFifo = filepath.Join(taskDir.LogDir, fmt.Sprintf(".%s.stdout.fifo", t.Name))
stderrFifo = filepath.Join(taskDir.LogDir, fmt.Sprintf(".%s.stderr.fifo", t.Name))
t.StdoutPath = filepath.Join(taskDir.LogDir, fmt.Sprintf(".%s.stdout.fifo", t.Name))
t.StderrPath = filepath.Join(taskDir.LogDir, fmt.Sprintf(".%s.stderr.fifo", t.Name))
}
err = h.lm.Start(&logmon.LogConfig{
LogDir: taskDir.LogDir,
StdoutLogFile: fmt.Sprintf("%s.stdout", t.Name),
StderrLogFile: fmt.Sprintf("%s.stderr", t.Name),
StdoutFifo: stdoutFifo,
StderrFifo: stderrFifo,
StdoutFifo: t.StdoutPath,
StderrFifo: t.StderrPath,
MaxFiles: 10,
MaxFileSizeMB: 10,
})
@ -114,6 +113,9 @@ func (h *DriverHarness) MkAllocDir(t *TaskConfig, enableLogs bool) func() {
}
return func() {
if h.lm != nil {
h.lm.Stop()
}
allocDir.Destroy()
}
}

View file

@ -58,6 +58,8 @@ func taskConfigFromProto(pb *proto.TaskConfig) *TaskConfig {
Mounts: []MountConfig{}, //TODO
User: pb.User,
AllocDir: pb.AllocDir,
StdoutPath: pb.StdoutPath,
StderrPath: pb.StderrPath,
}
}
@ -75,6 +77,8 @@ func taskConfigToProto(cfg *TaskConfig) *proto.TaskConfig {
User: cfg.User,
AllocDir: cfg.AllocDir,
MsgpackDriverConfig: cfg.rawDriverConfig,
StdoutPath: cfg.StdoutPath,
StderrPath: cfg.StderrPath,
}
return pb
}