diff --git a/other/java/client/src/main/proto/filer.proto b/other/java/client/src/main/proto/filer.proto index 40316f58b..fd2b8ebe3 100644 --- a/other/java/client/src/main/proto/filer.proto +++ b/other/java/client/src/main/proto/filer.proto @@ -42,7 +42,7 @@ service SeaweedFiler { rpc GetFilerConfiguration (GetFilerConfigurationRequest) returns (GetFilerConfigurationResponse) { } - rpc ListenForEvents (ListenForEventsRequest) returns (stream FullEventNotification) { + rpc SubscribeMetadata (SubscribeMetadataRequest) returns (stream SubscribeMetadataResponse) { } } @@ -234,12 +234,12 @@ message GetFilerConfigurationResponse { bool cipher = 7; } -message ListenForEventsRequest { +message SubscribeMetadataRequest { string client_name = 1; string path_prefix = 2; int64 since_ns = 3; } -message FullEventNotification { +message SubscribeMetadataResponse { string directory = 1; EventNotification event_notification = 2; } diff --git a/unmaintained/see_log_entry/see_log_entry.go b/unmaintained/see_log_entry/see_log_entry.go index 69503b65d..34965f6be 100644 --- a/unmaintained/see_log_entry/see_log_entry.go +++ b/unmaintained/see_log_entry/see_log_entry.go @@ -61,10 +61,10 @@ func walkLogEntryFile(dst *os.File) error { return nil } - event := &filer_pb.FullEventNotification{} + event := &filer_pb.SubscribeMetadataResponse{} err = proto.Unmarshal(logEntry.Data, event) if err != nil { - log.Printf("unexpected unmarshal filer_pb.FullEventNotification: %v", err) + log.Printf("unexpected unmarshal filer_pb.SubscribeMetadataResponse: %v", err) return nil } diff --git a/weed/command/watch.go b/weed/command/watch.go index 2dd6ec211..966040fbb 100644 --- a/weed/command/watch.go +++ b/weed/command/watch.go @@ -34,7 +34,7 @@ func runWatch(cmd *Command, args []string) bool { watchErr := pb.WithFilerClient(*watchFiler, grpcDialOption, func(client filer_pb.SeaweedFilerClient) error { - stream, err := client.ListenForEvents(context.Background(), &filer_pb.ListenForEventsRequest{ + stream, err := client.SubscribeMetadata(context.Background(), &filer_pb.SubscribeMetadataRequest{ ClientName: "watch", PathPrefix: *watchTarget, SinceNs: 0, diff --git a/weed/filer2/filer_notify.go b/weed/filer2/filer_notify.go index 18f96658b..c4fcefd54 100644 --- a/weed/filer2/filer_notify.go +++ b/weed/filer2/filer_notify.go @@ -53,13 +53,13 @@ func (f *Filer) logMetaEvent(fullpath string, eventNotification *filer_pb.EventN dir, _ := util.FullPath(fullpath).DirAndName() - event := &filer_pb.FullEventNotification{ + event := &filer_pb.SubscribeMetadataResponse{ Directory: dir, EventNotification: eventNotification, } data, err := proto.Marshal(event) if err != nil { - glog.Errorf("failed to marshal filer_pb.FullEventNotification %+v: %v", event, err) + glog.Errorf("failed to marshal filer_pb.SubscribeMetadataResponse %+v: %v", event, err) return } @@ -97,11 +97,11 @@ func (f *Filer) ReadLogBuffer(lastReadTime time.Time, eachEventFn func(fullpath return lastReadTime, fmt.Errorf("unexpected unmarshal filer_pb.LogEntry: %v", err) } - event := &filer_pb.FullEventNotification{} + event := &filer_pb.SubscribeMetadataResponse{} err = proto.Unmarshal(logEntry.Data, event) if err != nil { - glog.Errorf("unexpected unmarshal filer_pb.FullEventNotification: %v", err) - return lastReadTime, fmt.Errorf("unexpected unmarshal filer_pb.FullEventNotification: %v", err) + glog.Errorf("unexpected unmarshal filer_pb.SubscribeMetadataResponse: %v", err) + return lastReadTime, fmt.Errorf("unexpected unmarshal filer_pb.SubscribeMetadataResponse: %v", err) } err = eachEventFn(event.Directory, event.EventNotification) diff --git a/weed/filer2/topics.go b/weed/filer2/topics.go index 8ab409774..9c6e5c88d 100644 --- a/weed/filer2/topics.go +++ b/weed/filer2/topics.go @@ -1,6 +1,6 @@ package filer2 -const( - TopicsDir = "/topics" +const ( + TopicsDir = "/topics" SystemLogDir = TopicsDir + "/.system/log" ) diff --git a/weed/filesys/fscache.go b/weed/filesys/fscache.go index 831f3808c..b146f0615 100644 --- a/weed/filesys/fscache.go +++ b/weed/filesys/fscache.go @@ -62,7 +62,6 @@ func (c *FsCache) doSetFsNode(path util.FullPath, node fs.Node) { t.node = node } - func (c *FsCache) EnsureFsNode(path util.FullPath, genNodeFn func() fs.Node) fs.Node { c.Lock() diff --git a/weed/pb/filer.proto b/weed/pb/filer.proto index 40316f58b..fd2b8ebe3 100644 --- a/weed/pb/filer.proto +++ b/weed/pb/filer.proto @@ -42,7 +42,7 @@ service SeaweedFiler { rpc GetFilerConfiguration (GetFilerConfigurationRequest) returns (GetFilerConfigurationResponse) { } - rpc ListenForEvents (ListenForEventsRequest) returns (stream FullEventNotification) { + rpc SubscribeMetadata (SubscribeMetadataRequest) returns (stream SubscribeMetadataResponse) { } } @@ -234,12 +234,12 @@ message GetFilerConfigurationResponse { bool cipher = 7; } -message ListenForEventsRequest { +message SubscribeMetadataRequest { string client_name = 1; string path_prefix = 2; int64 since_ns = 3; } -message FullEventNotification { +message SubscribeMetadataResponse { string directory = 1; EventNotification event_notification = 2; } diff --git a/weed/pb/filer_pb/filer.pb.go b/weed/pb/filer_pb/filer.pb.go index e428bb23a..2454395b4 100644 --- a/weed/pb/filer_pb/filer.pb.go +++ b/weed/pb/filer_pb/filer.pb.go @@ -39,8 +39,8 @@ It has these top-level messages: StatisticsResponse GetFilerConfigurationRequest GetFilerConfigurationResponse - ListenForEventsRequest - FullEventNotification + SubscribeMetadataRequest + SubscribeMetadataResponse LogEntry */ package filer_pb @@ -1090,56 +1090,56 @@ func (m *GetFilerConfigurationResponse) GetCipher() bool { return false } -type ListenForEventsRequest struct { +type SubscribeMetadataRequest struct { ClientName string `protobuf:"bytes,1,opt,name=client_name,json=clientName" json:"client_name,omitempty"` PathPrefix string `protobuf:"bytes,2,opt,name=path_prefix,json=pathPrefix" json:"path_prefix,omitempty"` SinceNs int64 `protobuf:"varint,3,opt,name=since_ns,json=sinceNs" json:"since_ns,omitempty"` } -func (m *ListenForEventsRequest) Reset() { *m = ListenForEventsRequest{} } -func (m *ListenForEventsRequest) String() string { return proto.CompactTextString(m) } -func (*ListenForEventsRequest) ProtoMessage() {} -func (*ListenForEventsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } +func (m *SubscribeMetadataRequest) Reset() { *m = SubscribeMetadataRequest{} } +func (m *SubscribeMetadataRequest) String() string { return proto.CompactTextString(m) } +func (*SubscribeMetadataRequest) ProtoMessage() {} +func (*SubscribeMetadataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } -func (m *ListenForEventsRequest) GetClientName() string { +func (m *SubscribeMetadataRequest) GetClientName() string { if m != nil { return m.ClientName } return "" } -func (m *ListenForEventsRequest) GetPathPrefix() string { +func (m *SubscribeMetadataRequest) GetPathPrefix() string { if m != nil { return m.PathPrefix } return "" } -func (m *ListenForEventsRequest) GetSinceNs() int64 { +func (m *SubscribeMetadataRequest) GetSinceNs() int64 { if m != nil { return m.SinceNs } return 0 } -type FullEventNotification struct { +type SubscribeMetadataResponse struct { Directory string `protobuf:"bytes,1,opt,name=directory" json:"directory,omitempty"` EventNotification *EventNotification `protobuf:"bytes,2,opt,name=event_notification,json=eventNotification" json:"event_notification,omitempty"` } -func (m *FullEventNotification) Reset() { *m = FullEventNotification{} } -func (m *FullEventNotification) String() string { return proto.CompactTextString(m) } -func (*FullEventNotification) ProtoMessage() {} -func (*FullEventNotification) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } +func (m *SubscribeMetadataResponse) Reset() { *m = SubscribeMetadataResponse{} } +func (m *SubscribeMetadataResponse) String() string { return proto.CompactTextString(m) } +func (*SubscribeMetadataResponse) ProtoMessage() {} +func (*SubscribeMetadataResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } -func (m *FullEventNotification) GetDirectory() string { +func (m *SubscribeMetadataResponse) GetDirectory() string { if m != nil { return m.Directory } return "" } -func (m *FullEventNotification) GetEventNotification() *EventNotification { +func (m *SubscribeMetadataResponse) GetEventNotification() *EventNotification { if m != nil { return m.EventNotification } @@ -1209,8 +1209,8 @@ func init() { proto.RegisterType((*StatisticsResponse)(nil), "filer_pb.StatisticsResponse") proto.RegisterType((*GetFilerConfigurationRequest)(nil), "filer_pb.GetFilerConfigurationRequest") proto.RegisterType((*GetFilerConfigurationResponse)(nil), "filer_pb.GetFilerConfigurationResponse") - proto.RegisterType((*ListenForEventsRequest)(nil), "filer_pb.ListenForEventsRequest") - proto.RegisterType((*FullEventNotification)(nil), "filer_pb.FullEventNotification") + proto.RegisterType((*SubscribeMetadataRequest)(nil), "filer_pb.SubscribeMetadataRequest") + proto.RegisterType((*SubscribeMetadataResponse)(nil), "filer_pb.SubscribeMetadataResponse") proto.RegisterType((*LogEntry)(nil), "filer_pb.LogEntry") } @@ -1236,7 +1236,7 @@ type SeaweedFilerClient interface { DeleteCollection(ctx context.Context, in *DeleteCollectionRequest, opts ...grpc.CallOption) (*DeleteCollectionResponse, error) Statistics(ctx context.Context, in *StatisticsRequest, opts ...grpc.CallOption) (*StatisticsResponse, error) GetFilerConfiguration(ctx context.Context, in *GetFilerConfigurationRequest, opts ...grpc.CallOption) (*GetFilerConfigurationResponse, error) - ListenForEvents(ctx context.Context, in *ListenForEventsRequest, opts ...grpc.CallOption) (SeaweedFiler_ListenForEventsClient, error) + SubscribeMetadata(ctx context.Context, in *SubscribeMetadataRequest, opts ...grpc.CallOption) (SeaweedFiler_SubscribeMetadataClient, error) } type seaweedFilerClient struct { @@ -1369,12 +1369,12 @@ func (c *seaweedFilerClient) GetFilerConfiguration(ctx context.Context, in *GetF return out, nil } -func (c *seaweedFilerClient) ListenForEvents(ctx context.Context, in *ListenForEventsRequest, opts ...grpc.CallOption) (SeaweedFiler_ListenForEventsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_SeaweedFiler_serviceDesc.Streams[1], c.cc, "/filer_pb.SeaweedFiler/ListenForEvents", opts...) +func (c *seaweedFilerClient) SubscribeMetadata(ctx context.Context, in *SubscribeMetadataRequest, opts ...grpc.CallOption) (SeaweedFiler_SubscribeMetadataClient, error) { + stream, err := grpc.NewClientStream(ctx, &_SeaweedFiler_serviceDesc.Streams[1], c.cc, "/filer_pb.SeaweedFiler/SubscribeMetadata", opts...) if err != nil { return nil, err } - x := &seaweedFilerListenForEventsClient{stream} + x := &seaweedFilerSubscribeMetadataClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1384,17 +1384,17 @@ func (c *seaweedFilerClient) ListenForEvents(ctx context.Context, in *ListenForE return x, nil } -type SeaweedFiler_ListenForEventsClient interface { - Recv() (*FullEventNotification, error) +type SeaweedFiler_SubscribeMetadataClient interface { + Recv() (*SubscribeMetadataResponse, error) grpc.ClientStream } -type seaweedFilerListenForEventsClient struct { +type seaweedFilerSubscribeMetadataClient struct { grpc.ClientStream } -func (x *seaweedFilerListenForEventsClient) Recv() (*FullEventNotification, error) { - m := new(FullEventNotification) +func (x *seaweedFilerSubscribeMetadataClient) Recv() (*SubscribeMetadataResponse, error) { + m := new(SubscribeMetadataResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -1415,7 +1415,7 @@ type SeaweedFilerServer interface { DeleteCollection(context.Context, *DeleteCollectionRequest) (*DeleteCollectionResponse, error) Statistics(context.Context, *StatisticsRequest) (*StatisticsResponse, error) GetFilerConfiguration(context.Context, *GetFilerConfigurationRequest) (*GetFilerConfigurationResponse, error) - ListenForEvents(*ListenForEventsRequest, SeaweedFiler_ListenForEventsServer) error + SubscribeMetadata(*SubscribeMetadataRequest, SeaweedFiler_SubscribeMetadataServer) error } func RegisterSeaweedFilerServer(s *grpc.Server, srv SeaweedFilerServer) { @@ -1623,24 +1623,24 @@ func _SeaweedFiler_GetFilerConfiguration_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } -func _SeaweedFiler_ListenForEvents_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ListenForEventsRequest) +func _SeaweedFiler_SubscribeMetadata_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SubscribeMetadataRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(SeaweedFilerServer).ListenForEvents(m, &seaweedFilerListenForEventsServer{stream}) + return srv.(SeaweedFilerServer).SubscribeMetadata(m, &seaweedFilerSubscribeMetadataServer{stream}) } -type SeaweedFiler_ListenForEventsServer interface { - Send(*FullEventNotification) error +type SeaweedFiler_SubscribeMetadataServer interface { + Send(*SubscribeMetadataResponse) error grpc.ServerStream } -type seaweedFilerListenForEventsServer struct { +type seaweedFilerSubscribeMetadataServer struct { grpc.ServerStream } -func (x *seaweedFilerListenForEventsServer) Send(m *FullEventNotification) error { +func (x *seaweedFilerSubscribeMetadataServer) Send(m *SubscribeMetadataResponse) error { return x.ServerStream.SendMsg(m) } @@ -1696,8 +1696,8 @@ var _SeaweedFiler_serviceDesc = grpc.ServiceDesc{ ServerStreams: true, }, { - StreamName: "ListenForEvents", - Handler: _SeaweedFiler_ListenForEvents_Handler, + StreamName: "SubscribeMetadata", + Handler: _SeaweedFiler_SubscribeMetadata_Handler, ServerStreams: true, }, }, @@ -1709,122 +1709,122 @@ func init() { proto.RegisterFile("filer.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ // 1903 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0x5f, 0x6f, 0xdc, 0xc6, - 0x11, 0x37, 0xef, 0x74, 0x7f, 0x38, 0x77, 0xe7, 0x48, 0x7b, 0x92, 0x73, 0x3e, 0x4b, 0xb6, 0x42, - 0xd7, 0xa9, 0x0b, 0x1b, 0xaa, 0xa1, 0xa6, 0x40, 0xd2, 0xb4, 0x0f, 0xb6, 0x2c, 0xa5, 0x6e, 0x6c, - 0xc5, 0xa0, 0xec, 0x22, 0x45, 0x81, 0x12, 0x14, 0xb9, 0xba, 0xdb, 0x8a, 0x47, 0xb2, 0xbb, 0x4b, - 0xfd, 0xc9, 0x53, 0xfb, 0x35, 0x0a, 0xf4, 0xa1, 0xdf, 0xa1, 0x8f, 0x45, 0x5f, 0x8a, 0x02, 0x05, - 0xfa, 0x2d, 0xfa, 0x49, 0x8a, 0x9d, 0x25, 0x79, 0xcb, 0xe3, 0x49, 0x4a, 0x50, 0xe4, 0x6d, 0x77, - 0x66, 0x76, 0x76, 0x76, 0xfe, 0xfc, 0x66, 0x48, 0xe8, 0x9d, 0xb0, 0x88, 0xf2, 0x9d, 0x94, 0x27, - 0x32, 0x21, 0x5d, 0xdc, 0x78, 0xe9, 0xb1, 0xf3, 0x15, 0xdc, 0x7b, 0x9d, 0x24, 0xa7, 0x59, 0xfa, - 0x92, 0x71, 0x1a, 0xc8, 0x84, 0x5f, 0xee, 0xc7, 0x92, 0x5f, 0xba, 0xf4, 0x0f, 0x19, 0x15, 0x92, - 0x6c, 0x82, 0x1d, 0x16, 0x8c, 0x91, 0xb5, 0x6d, 0x3d, 0xb6, 0xdd, 0x39, 0x81, 0x10, 0x58, 0x89, - 0xfd, 0x19, 0x1d, 0x35, 0x90, 0x81, 0x6b, 0x67, 0x1f, 0x36, 0x97, 0x2b, 0x14, 0x69, 0x12, 0x0b, - 0x4a, 0x1e, 0x41, 0x8b, 0x2a, 0x02, 0x6a, 0xeb, 0xed, 0x7e, 0xb0, 0x53, 0x98, 0xb2, 0xa3, 0xe5, - 0x34, 0xd7, 0xf9, 0x87, 0x05, 0xe4, 0x35, 0x13, 0x52, 0x11, 0x19, 0x15, 0xdf, 0xce, 0x9e, 0x3b, - 0xd0, 0x4e, 0x39, 0x3d, 0x61, 0x17, 0xb9, 0x45, 0xf9, 0x8e, 0x3c, 0x85, 0x35, 0x21, 0x7d, 0x2e, - 0x0f, 0x78, 0x32, 0x3b, 0x60, 0x11, 0x3d, 0x54, 0x46, 0x37, 0x51, 0xa4, 0xce, 0x20, 0x3b, 0x40, - 0x58, 0x1c, 0x44, 0x99, 0x60, 0x67, 0xf4, 0xa8, 0xe0, 0x8e, 0x56, 0xb6, 0xad, 0xc7, 0x5d, 0x77, - 0x09, 0x87, 0xac, 0x43, 0x2b, 0x62, 0x33, 0x26, 0x47, 0xad, 0x6d, 0xeb, 0xf1, 0xc0, 0xd5, 0x1b, - 0xe7, 0xe7, 0x30, 0xac, 0xd8, 0xff, 0xdd, 0x9e, 0xff, 0x97, 0x06, 0xb4, 0x90, 0x50, 0xfa, 0xd8, - 0x9a, 0xfb, 0x98, 0x7c, 0x04, 0x7d, 0x26, 0xbc, 0xb9, 0x23, 0x1a, 0x68, 0x5b, 0x8f, 0x89, 0xd2, - 0xe7, 0xe4, 0x09, 0xb4, 0x83, 0x69, 0x16, 0x9f, 0x8a, 0x51, 0x73, 0xbb, 0xf9, 0xb8, 0xb7, 0x3b, - 0x9c, 0x5f, 0xa4, 0x1e, 0xba, 0xa7, 0x78, 0x6e, 0x2e, 0x42, 0x3e, 0x05, 0xf0, 0xa5, 0xe4, 0xec, - 0x38, 0x93, 0x54, 0xe0, 0x4b, 0x7b, 0xbb, 0x23, 0xe3, 0x40, 0x26, 0xe8, 0xf3, 0x92, 0xef, 0x1a, - 0xb2, 0xe4, 0x33, 0xe8, 0xd2, 0x0b, 0x49, 0xe3, 0x90, 0x86, 0xa3, 0x16, 0x5e, 0xb4, 0xb5, 0xf0, - 0xa2, 0x9d, 0xfd, 0x9c, 0xaf, 0xdf, 0x57, 0x8a, 0x8f, 0x3f, 0x87, 0x41, 0x85, 0x45, 0x56, 0xa1, - 0x79, 0x4a, 0x8b, 0xa8, 0xaa, 0xa5, 0xf2, 0xec, 0x99, 0x1f, 0x65, 0x3a, 0xc1, 0xfa, 0xae, 0xde, - 0xfc, 0xac, 0xf1, 0xa9, 0xe5, 0xbc, 0x04, 0xfb, 0x20, 0x8b, 0xa2, 0xf2, 0x60, 0xc8, 0x78, 0x71, - 0x30, 0x64, 0x7c, 0xee, 0xe5, 0xc6, 0xb5, 0x5e, 0xfe, 0xbb, 0x05, 0x6b, 0xfb, 0x67, 0x34, 0x96, - 0x87, 0x89, 0x64, 0x27, 0x2c, 0xf0, 0x25, 0x4b, 0x62, 0xf2, 0x14, 0xec, 0x24, 0x0a, 0xbd, 0x6b, - 0xc3, 0xd4, 0x4d, 0xa2, 0xdc, 0xea, 0xa7, 0x60, 0xc7, 0xf4, 0xdc, 0xbb, 0xf6, 0xba, 0x6e, 0x4c, - 0xcf, 0xb5, 0xf4, 0x43, 0x18, 0x84, 0x34, 0xa2, 0x92, 0x7a, 0x65, 0x74, 0x54, 0xe8, 0xfa, 0x9a, - 0xb8, 0xa7, 0xc3, 0xf1, 0x31, 0x7c, 0xa0, 0x54, 0xa6, 0x3e, 0xa7, 0xb1, 0xf4, 0x52, 0x5f, 0x4e, - 0x31, 0x26, 0xb6, 0x3b, 0x88, 0xe9, 0xf9, 0x5b, 0xa4, 0xbe, 0xf5, 0xe5, 0xd4, 0xf9, 0x5b, 0x03, - 0xec, 0x32, 0x98, 0xe4, 0x43, 0xe8, 0xa8, 0x6b, 0x3d, 0x16, 0xe6, 0x9e, 0x68, 0xab, 0xed, 0xab, - 0x50, 0x55, 0x45, 0x72, 0x72, 0x22, 0xa8, 0x44, 0xf3, 0x9a, 0x6e, 0xbe, 0x53, 0x99, 0x25, 0xd8, - 0x37, 0xba, 0x10, 0x56, 0x5c, 0x5c, 0x2b, 0x8f, 0xcf, 0x24, 0x9b, 0x51, 0xbc, 0xb0, 0xe9, 0xea, - 0x0d, 0x19, 0x42, 0x8b, 0x7a, 0xd2, 0x9f, 0x60, 0x86, 0xdb, 0xee, 0x0a, 0x7d, 0xe7, 0x4f, 0xc8, - 0x0f, 0xe0, 0xb6, 0x48, 0x32, 0x1e, 0x50, 0xaf, 0xb8, 0xb6, 0x8d, 0xdc, 0xbe, 0xa6, 0x1e, 0xe8, - 0xcb, 0x1d, 0x68, 0x9e, 0xb0, 0x70, 0xd4, 0x41, 0xc7, 0xac, 0x56, 0x93, 0xf0, 0x55, 0xe8, 0x2a, - 0x26, 0xf9, 0x31, 0x40, 0xa9, 0x29, 0x1c, 0x75, 0xaf, 0x10, 0xb5, 0x0b, 0xbd, 0x21, 0xd9, 0x02, - 0x08, 0x58, 0x3a, 0xa5, 0xdc, 0x53, 0x09, 0x63, 0x63, 0x72, 0xd8, 0x9a, 0xf2, 0x25, 0xbd, 0x54, - 0x6c, 0x26, 0xbc, 0xc9, 0x37, 0x2c, 0x4d, 0x69, 0x38, 0x02, 0xf4, 0xb0, 0xcd, 0xc4, 0x17, 0x9a, - 0xe0, 0x7c, 0x0d, 0xed, 0xdc, 0xb8, 0x7b, 0x60, 0x9f, 0x25, 0x51, 0x36, 0x2b, 0x9d, 0x36, 0x70, - 0xbb, 0x9a, 0xf0, 0x2a, 0x24, 0x77, 0x01, 0x51, 0x12, 0xaf, 0x68, 0xa0, 0x8b, 0xd0, 0xbf, 0xea, - 0x82, 0x3b, 0xd0, 0x0e, 0x92, 0xe4, 0x94, 0x69, 0xdf, 0x75, 0xdc, 0x7c, 0xe7, 0xfc, 0xb1, 0x09, - 0xb7, 0xab, 0xc5, 0xa2, 0xae, 0x40, 0x2d, 0xe8, 0x69, 0x0b, 0xd5, 0xa0, 0xda, 0xa3, 0x8a, 0xb7, - 0x1b, 0xa6, 0xb7, 0x8b, 0x23, 0xb3, 0x24, 0xd4, 0x17, 0x0c, 0xf4, 0x91, 0x37, 0x49, 0x48, 0x55, - 0xae, 0x67, 0x2c, 0xc4, 0xf0, 0x0c, 0x5c, 0xb5, 0x54, 0x94, 0x09, 0x0b, 0x73, 0xf0, 0x51, 0x4b, - 0x34, 0x8f, 0xa3, 0xde, 0xb6, 0x0e, 0xb8, 0xde, 0xa9, 0x80, 0xcf, 0x14, 0xb5, 0xa3, 0xa3, 0xa8, - 0xd6, 0x64, 0x1b, 0x7a, 0x9c, 0xa6, 0x51, 0x9e, 0xfb, 0xe8, 0x7c, 0xdb, 0x35, 0x49, 0xe4, 0x3e, - 0x40, 0x90, 0x44, 0x11, 0x0d, 0x50, 0xc0, 0x46, 0x01, 0x83, 0xa2, 0xf2, 0x4e, 0xca, 0xc8, 0x13, - 0x34, 0x40, 0x57, 0xb7, 0xdc, 0xb6, 0x94, 0xd1, 0x11, 0x0d, 0xd4, 0x3b, 0x32, 0x41, 0xb9, 0x87, - 0xf0, 0xd5, 0xc3, 0x73, 0x5d, 0x45, 0x40, 0x90, 0xdd, 0x02, 0x98, 0xf0, 0x24, 0x4b, 0x35, 0xb7, - 0xbf, 0xdd, 0x54, 0x48, 0x8e, 0x14, 0x64, 0x3f, 0x82, 0xdb, 0xe2, 0x72, 0x16, 0xb1, 0xf8, 0xd4, - 0x93, 0x3e, 0x9f, 0x50, 0x39, 0x1a, 0xe8, 0x0a, 0xc8, 0xa9, 0xef, 0x90, 0xa8, 0xde, 0x3e, 0x0b, - 0x7f, 0x3a, 0xba, 0x8d, 0x19, 0xa0, 0x96, 0x4e, 0x0a, 0x64, 0x8f, 0x53, 0x5f, 0xd2, 0xef, 0xd0, - 0xc6, 0xbe, 0x1d, 0x5a, 0x90, 0x0d, 0x68, 0x27, 0x1e, 0xbd, 0x08, 0xa2, 0xbc, 0x68, 0x5b, 0xc9, - 0xfe, 0x45, 0x10, 0x39, 0x4f, 0x60, 0x58, 0xb9, 0x31, 0x07, 0xfa, 0x75, 0x68, 0x51, 0xce, 0x93, - 0x02, 0x96, 0xf4, 0xc6, 0xf9, 0x0d, 0x90, 0xf7, 0x69, 0xf8, 0x7d, 0x98, 0xe7, 0x6c, 0xc0, 0xb0, - 0xa2, 0x5a, 0xdb, 0xe1, 0xfc, 0xcb, 0x02, 0xf2, 0x12, 0xd1, 0xe5, 0xff, 0x6b, 0xec, 0xaa, 0xde, - 0x55, 0xd3, 0xd1, 0xe8, 0x15, 0xfa, 0xd2, 0xcf, 0x5b, 0x62, 0x9f, 0x09, 0xad, 0xff, 0xa5, 0x2f, - 0xfd, 0xbc, 0x35, 0x71, 0x1a, 0x64, 0x5c, 0x75, 0x49, 0x4c, 0x4b, 0x6c, 0x4d, 0x6e, 0x41, 0x22, - 0x9f, 0xc0, 0x1d, 0x36, 0x89, 0x13, 0x4e, 0xe7, 0x62, 0x9e, 0x76, 0x55, 0x1b, 0x85, 0xd7, 0x35, - 0xb7, 0x3c, 0xb0, 0x8f, 0x9e, 0x7b, 0x02, 0xc3, 0xca, 0x33, 0xae, 0x75, 0xf3, 0x9f, 0x2d, 0x18, - 0x3d, 0x97, 0xc9, 0x8c, 0x05, 0x2e, 0x55, 0xc6, 0x57, 0x9e, 0xfe, 0x10, 0x06, 0x0a, 0xdf, 0x17, - 0x9f, 0xdf, 0x4f, 0xa2, 0x70, 0xde, 0x3f, 0xef, 0x82, 0x82, 0x78, 0xcf, 0xf0, 0x42, 0x27, 0x89, - 0x42, 0xcc, 0xcd, 0x87, 0xa0, 0x70, 0xd8, 0x38, 0xaf, 0x27, 0x89, 0x7e, 0x4c, 0xcf, 0x2b, 0xe7, - 0x95, 0x10, 0x9e, 0xd7, 0xe0, 0xdd, 0x89, 0xe9, 0xb9, 0x3a, 0xef, 0xdc, 0x83, 0xbb, 0x4b, 0x6c, - 0xcb, 0xc3, 0xf5, 0x6f, 0x0b, 0x86, 0xcf, 0x85, 0x60, 0x93, 0xf8, 0xd7, 0x08, 0x44, 0x85, 0xd1, - 0xeb, 0xd0, 0x0a, 0x92, 0x2c, 0x96, 0x68, 0x6c, 0xcb, 0xd5, 0x9b, 0x85, 0xda, 0x6c, 0xd4, 0x6a, - 0x73, 0xa1, 0xba, 0x9b, 0xf5, 0xea, 0x36, 0xaa, 0x77, 0xa5, 0x52, 0xbd, 0x0f, 0xa0, 0xa7, 0x82, - 0xec, 0x05, 0x34, 0x96, 0x94, 0xe7, 0xc8, 0x0f, 0x8a, 0xb4, 0x87, 0x14, 0x25, 0x60, 0x76, 0x28, - 0x0d, 0xfe, 0x90, 0xce, 0xdb, 0xd3, 0x7f, 0x2d, 0x58, 0xaf, 0x3e, 0x25, 0x8f, 0xd9, 0x95, 0x9d, - 0x4a, 0x81, 0x1b, 0x8f, 0xf2, 0x77, 0xa8, 0xa5, 0x82, 0x89, 0x34, 0x3b, 0x8e, 0x58, 0xe0, 0x29, - 0x86, 0xb6, 0xdf, 0xd6, 0x94, 0xf7, 0x3c, 0x9a, 0x7b, 0x65, 0xc5, 0xf4, 0x0a, 0x81, 0x15, 0x3f, - 0x93, 0xd3, 0xa2, 0x5b, 0xa9, 0xf5, 0x82, 0xa7, 0xda, 0x37, 0x79, 0xaa, 0x53, 0xf7, 0x54, 0x99, - 0x69, 0x5d, 0x33, 0xd3, 0x3e, 0x81, 0xa1, 0x1e, 0x77, 0xab, 0xe1, 0xda, 0x02, 0x28, 0x3b, 0x8b, - 0x18, 0x59, 0x1a, 0xde, 0x8a, 0xd6, 0x22, 0x9c, 0x5f, 0x80, 0xfd, 0x3a, 0xd1, 0x7a, 0x05, 0x79, - 0x06, 0x76, 0x54, 0x6c, 0x50, 0xb4, 0xb7, 0x4b, 0xe6, 0x35, 0x5e, 0xc8, 0xb9, 0x73, 0x21, 0xe7, - 0x73, 0xe8, 0x16, 0xe4, 0xc2, 0x67, 0xd6, 0x55, 0x3e, 0x6b, 0x2c, 0xf8, 0xcc, 0xf9, 0xa7, 0x05, - 0xeb, 0x55, 0x93, 0xf3, 0xb0, 0xbc, 0x87, 0x41, 0x79, 0x85, 0x37, 0xf3, 0xd3, 0xdc, 0x96, 0x67, - 0xa6, 0x2d, 0xf5, 0x63, 0xa5, 0x81, 0xe2, 0x8d, 0x9f, 0xea, 0x5c, 0xee, 0x47, 0x06, 0x69, 0xfc, - 0x0e, 0xd6, 0x6a, 0x22, 0x4b, 0x66, 0xbd, 0x1f, 0x99, 0xb3, 0x5e, 0x65, 0x5e, 0x2d, 0x4f, 0x9b, - 0x03, 0xe0, 0x67, 0xf0, 0xa1, 0x86, 0x83, 0xbd, 0x32, 0x86, 0x85, 0xef, 0xab, 0xa1, 0xb6, 0x16, - 0x43, 0xed, 0x8c, 0x61, 0x54, 0x3f, 0x9a, 0x97, 0xdf, 0x04, 0xd6, 0x8e, 0xa4, 0x2f, 0x99, 0x90, - 0x2c, 0x28, 0x3f, 0x3a, 0x16, 0x72, 0xc3, 0xba, 0xa9, 0x47, 0xd6, 0xeb, 0x70, 0x15, 0x9a, 0x52, - 0x16, 0xf9, 0xab, 0x96, 0x2a, 0x0a, 0xc4, 0xbc, 0x29, 0x8f, 0xc1, 0xf7, 0x70, 0x95, 0xca, 0x07, - 0x99, 0x48, 0x3f, 0xd2, 0x33, 0xc8, 0x0a, 0xce, 0x20, 0x36, 0x52, 0x70, 0x08, 0xd1, 0x6d, 0x3a, - 0xd4, 0xdc, 0x96, 0x9e, 0x50, 0x14, 0x01, 0x99, 0x5b, 0x00, 0x58, 0xaa, 0xba, 0xca, 0xda, 0xfa, - 0xac, 0xa2, 0xec, 0x29, 0x82, 0x73, 0x1f, 0x36, 0xbf, 0xa0, 0x52, 0x4d, 0x53, 0x7c, 0x2f, 0x89, - 0x4f, 0xd8, 0x24, 0xe3, 0xbe, 0x11, 0x0a, 0xe7, 0x3f, 0x16, 0x6c, 0x5d, 0x21, 0x90, 0x3f, 0x78, - 0x04, 0x9d, 0x99, 0x2f, 0x24, 0xe5, 0x45, 0x95, 0x14, 0xdb, 0x45, 0x57, 0x34, 0x6e, 0x72, 0x45, - 0xb3, 0xe6, 0x8a, 0x0d, 0x68, 0xcf, 0xfc, 0x0b, 0x6f, 0x76, 0x9c, 0x8f, 0x4b, 0xad, 0x99, 0x7f, - 0xf1, 0xe6, 0x18, 0x91, 0x8d, 0x71, 0xef, 0x38, 0x0b, 0x4e, 0xa9, 0x14, 0x25, 0xb2, 0x31, 0xfe, - 0x42, 0x53, 0x70, 0x7e, 0xc2, 0x61, 0x12, 0x61, 0xa0, 0xeb, 0xe6, 0x3b, 0x27, 0x83, 0x3b, 0xea, - 0x93, 0x8e, 0xc6, 0x07, 0x09, 0xc7, 0xcf, 0x86, 0x32, 0x43, 0x1e, 0x40, 0x2f, 0x88, 0x98, 0xc2, - 0x42, 0xe3, 0x5b, 0x0d, 0x34, 0x09, 0x7b, 0x06, 0x82, 0xa5, 0x9c, 0x7a, 0x95, 0xcf, 0x53, 0x50, - 0xa4, 0xb7, 0xfa, 0x13, 0xf5, 0x2e, 0x74, 0x05, 0x8b, 0x03, 0xea, 0xc5, 0xfa, 0x9b, 0xa0, 0xe9, - 0x76, 0x70, 0x7f, 0x28, 0x9c, 0x3f, 0x59, 0xb0, 0x81, 0x1f, 0x3b, 0xb5, 0x2f, 0x95, 0xeb, 0x9b, - 0xf8, 0xaf, 0x80, 0xd0, 0x33, 0xb4, 0xc9, 0x38, 0x93, 0x97, 0xd7, 0x3d, 0x63, 0x88, 0x58, 0x54, - 0xeb, 0xae, 0xd1, 0x45, 0x92, 0xe3, 0x2b, 0xc4, 0x99, 0xe8, 0xda, 0x1d, 0x42, 0x4b, 0x0a, 0x0f, - 0xb1, 0x4a, 0xd9, 0xb9, 0x22, 0xc5, 0xa1, 0x20, 0x4f, 0x81, 0xa4, 0x3e, 0x97, 0x4c, 0x49, 0xab, - 0x91, 0xd9, 0x9b, 0xfa, 0x62, 0x8a, 0x97, 0xb5, 0xdc, 0xd5, 0x92, 0xf3, 0x25, 0xbd, 0xfc, 0xa5, - 0x2f, 0xa6, 0x0a, 0xa1, 0x71, 0x82, 0x68, 0xe2, 0xe0, 0x86, 0xeb, 0xdd, 0xbf, 0x76, 0xa1, 0x7f, - 0x44, 0xfd, 0x73, 0x4a, 0x43, 0xcc, 0x17, 0x32, 0x29, 0x70, 0xaa, 0xfa, 0x27, 0x81, 0x3c, 0x5a, - 0x04, 0xa4, 0xa5, 0xbf, 0x2e, 0xc6, 0x1f, 0xdf, 0x24, 0x96, 0x97, 0xfc, 0x2d, 0x72, 0x08, 0x3d, - 0xe3, 0x53, 0x9d, 0x6c, 0x1a, 0x07, 0x6b, 0x7f, 0x20, 0xc6, 0x5b, 0x57, 0x70, 0x0b, 0x6d, 0xcf, - 0x2c, 0xf2, 0x1a, 0x7a, 0xc6, 0x44, 0x68, 0xea, 0xab, 0x8f, 0xa6, 0xa6, 0xbe, 0x25, 0x63, 0xa4, - 0x73, 0x4b, 0x69, 0x33, 0xe6, 0x3a, 0x53, 0x5b, 0x7d, 0x92, 0x34, 0xb5, 0x2d, 0x1b, 0x06, 0x51, - 0x9b, 0x31, 0x46, 0x99, 0xda, 0xea, 0x43, 0xa2, 0xa9, 0x6d, 0xc9, 0xec, 0xe5, 0xdc, 0x22, 0xbf, - 0x83, 0xb5, 0xda, 0x28, 0x43, 0x9c, 0xf9, 0xa9, 0xab, 0x66, 0xb0, 0xf1, 0xc3, 0x6b, 0x65, 0x4a, - 0xfd, 0x5f, 0x41, 0xdf, 0x9c, 0x20, 0x88, 0x61, 0xd0, 0x92, 0x21, 0x69, 0x7c, 0xff, 0x2a, 0xb6, - 0xa9, 0xd0, 0x6c, 0x62, 0xa6, 0xc2, 0x25, 0x6d, 0xdc, 0x54, 0xb8, 0xac, 0xf7, 0x39, 0xb7, 0xc8, - 0x6f, 0x61, 0x75, 0xb1, 0x99, 0x90, 0x8f, 0x16, 0xdd, 0x56, 0xeb, 0x51, 0x63, 0xe7, 0x3a, 0x91, - 0x52, 0xf9, 0x2b, 0x80, 0x79, 0x8f, 0x20, 0x46, 0xcd, 0xd6, 0x7a, 0xd4, 0x78, 0x73, 0x39, 0xb3, - 0x54, 0xf5, 0x7b, 0xd8, 0x58, 0x0a, 0xc4, 0xc4, 0x28, 0x93, 0xeb, 0xa0, 0x7c, 0xfc, 0xc3, 0x1b, - 0xe5, 0xca, 0xbb, 0xbe, 0x86, 0x0f, 0x16, 0x70, 0x92, 0x6c, 0x57, 0xab, 0xa6, 0x0e, 0xa1, 0xe3, - 0x07, 0xe6, 0xff, 0xa6, 0x25, 0x60, 0xa7, 0x2a, 0xeb, 0xc5, 0x7d, 0x58, 0x15, 0x1a, 0x22, 0x4e, - 0xc4, 0x8e, 0x86, 0xd7, 0x17, 0x80, 0xb6, 0xbc, 0xe5, 0x89, 0x4c, 0x8e, 0xdb, 0xf8, 0x7b, 0xf3, - 0x27, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x0d, 0xae, 0xfb, 0x80, 0xed, 0x14, 0x00, 0x00, + 0x11, 0x37, 0xef, 0x3f, 0xe7, 0xee, 0x1c, 0x69, 0x4f, 0x4e, 0x4e, 0x67, 0xc9, 0x51, 0xe8, 0x3a, + 0x75, 0x61, 0x43, 0x35, 0xd4, 0x14, 0x48, 0x9a, 0xf6, 0xc1, 0x96, 0xe5, 0xd4, 0x8d, 0xad, 0x18, + 0x94, 0x5d, 0xb4, 0x28, 0x50, 0x96, 0x47, 0xae, 0xee, 0xb6, 0xe2, 0x91, 0xec, 0xee, 0x52, 0x7f, + 0xf2, 0xd4, 0x97, 0x7e, 0x89, 0x02, 0xfd, 0x00, 0x7d, 0xef, 0x63, 0xd1, 0x97, 0xa2, 0x40, 0x81, + 0x7e, 0x8b, 0x7e, 0x92, 0x62, 0x67, 0x49, 0xde, 0xf2, 0xfe, 0x48, 0x09, 0x8a, 0xbc, 0xed, 0xce, + 0xcc, 0xce, 0xce, 0xce, 0x9f, 0xdf, 0x0c, 0x09, 0xdd, 0x53, 0x16, 0x51, 0xbe, 0x9f, 0xf2, 0x44, + 0x26, 0xa4, 0x83, 0x1b, 0x2f, 0x1d, 0x3b, 0x5f, 0xc1, 0xdd, 0x57, 0x49, 0x72, 0x96, 0xa5, 0xcf, + 0x19, 0xa7, 0x81, 0x4c, 0xf8, 0xd5, 0x51, 0x2c, 0xf9, 0x95, 0x4b, 0xff, 0x90, 0x51, 0x21, 0xc9, + 0x0e, 0xd8, 0x61, 0xc1, 0x18, 0x5a, 0x7b, 0xd6, 0x43, 0xdb, 0x9d, 0x13, 0x08, 0x81, 0x46, 0xec, + 0xcf, 0xe8, 0xb0, 0x86, 0x0c, 0x5c, 0x3b, 0x47, 0xb0, 0xb3, 0x5a, 0xa1, 0x48, 0x93, 0x58, 0x50, + 0xf2, 0x00, 0x9a, 0x54, 0x11, 0x50, 0x5b, 0xf7, 0xe0, 0xbd, 0xfd, 0xc2, 0x94, 0x7d, 0x2d, 0xa7, + 0xb9, 0xce, 0x3f, 0x2c, 0x20, 0xaf, 0x98, 0x90, 0x8a, 0xc8, 0xa8, 0xf8, 0x66, 0xf6, 0xbc, 0x0f, + 0xad, 0x94, 0xd3, 0x53, 0x76, 0x99, 0x5b, 0x94, 0xef, 0xc8, 0x63, 0xd8, 0x14, 0xd2, 0xe7, 0xf2, + 0x05, 0x4f, 0x66, 0x2f, 0x58, 0x44, 0x8f, 0x95, 0xd1, 0x75, 0x14, 0x59, 0x66, 0x90, 0x7d, 0x20, + 0x2c, 0x0e, 0xa2, 0x4c, 0xb0, 0x73, 0x7a, 0x52, 0x70, 0x87, 0x8d, 0x3d, 0xeb, 0x61, 0xc7, 0x5d, + 0xc1, 0x21, 0x5b, 0xd0, 0x8c, 0xd8, 0x8c, 0xc9, 0x61, 0x73, 0xcf, 0x7a, 0xd8, 0x77, 0xf5, 0xc6, + 0xf9, 0x29, 0x0c, 0x2a, 0xf6, 0x7f, 0xbb, 0xe7, 0xff, 0xa5, 0x06, 0x4d, 0x24, 0x94, 0x3e, 0xb6, + 0xe6, 0x3e, 0x26, 0x1f, 0x41, 0x8f, 0x09, 0x6f, 0xee, 0x88, 0x1a, 0xda, 0xd6, 0x65, 0xa2, 0xf4, + 0x39, 0x79, 0x04, 0xad, 0x60, 0x9a, 0xc5, 0x67, 0x62, 0x58, 0xdf, 0xab, 0x3f, 0xec, 0x1e, 0x0c, + 0xe6, 0x17, 0xa9, 0x87, 0x1e, 0x2a, 0x9e, 0x9b, 0x8b, 0x90, 0x4f, 0x01, 0x7c, 0x29, 0x39, 0x1b, + 0x67, 0x92, 0x0a, 0x7c, 0x69, 0xf7, 0x60, 0x68, 0x1c, 0xc8, 0x04, 0x7d, 0x5a, 0xf2, 0x5d, 0x43, + 0x96, 0x7c, 0x06, 0x1d, 0x7a, 0x29, 0x69, 0x1c, 0xd2, 0x70, 0xd8, 0xc4, 0x8b, 0x76, 0x17, 0x5e, + 0xb4, 0x7f, 0x94, 0xf3, 0xf5, 0xfb, 0x4a, 0xf1, 0xd1, 0xe7, 0xd0, 0xaf, 0xb0, 0xc8, 0x06, 0xd4, + 0xcf, 0x68, 0x11, 0x55, 0xb5, 0x54, 0x9e, 0x3d, 0xf7, 0xa3, 0x4c, 0x27, 0x58, 0xcf, 0xd5, 0x9b, + 0x9f, 0xd4, 0x3e, 0xb5, 0x9c, 0xe7, 0x60, 0xbf, 0xc8, 0xa2, 0xa8, 0x3c, 0x18, 0x32, 0x5e, 0x1c, + 0x0c, 0x19, 0x9f, 0x7b, 0xb9, 0x76, 0xad, 0x97, 0xff, 0x6e, 0xc1, 0xe6, 0xd1, 0x39, 0x8d, 0xe5, + 0x71, 0x22, 0xd9, 0x29, 0x0b, 0x7c, 0xc9, 0x92, 0x98, 0x3c, 0x06, 0x3b, 0x89, 0x42, 0xef, 0xda, + 0x30, 0x75, 0x92, 0x28, 0xb7, 0xfa, 0x31, 0xd8, 0x31, 0xbd, 0xf0, 0xae, 0xbd, 0xae, 0x13, 0xd3, + 0x0b, 0x2d, 0x7d, 0x1f, 0xfa, 0x21, 0x8d, 0xa8, 0xa4, 0x5e, 0x19, 0x1d, 0x15, 0xba, 0x9e, 0x26, + 0x1e, 0xea, 0x70, 0x7c, 0x0c, 0xef, 0x29, 0x95, 0xa9, 0xcf, 0x69, 0x2c, 0xbd, 0xd4, 0x97, 0x53, + 0x8c, 0x89, 0xed, 0xf6, 0x63, 0x7a, 0xf1, 0x06, 0xa9, 0x6f, 0x7c, 0x39, 0x75, 0xfe, 0x56, 0x03, + 0xbb, 0x0c, 0x26, 0xf9, 0x00, 0xda, 0xea, 0x5a, 0x8f, 0x85, 0xb9, 0x27, 0x5a, 0x6a, 0xfb, 0x32, + 0x54, 0x55, 0x91, 0x9c, 0x9e, 0x0a, 0x2a, 0xd1, 0xbc, 0xba, 0x9b, 0xef, 0x54, 0x66, 0x09, 0xf6, + 0xb5, 0x2e, 0x84, 0x86, 0x8b, 0x6b, 0xe5, 0xf1, 0x99, 0x64, 0x33, 0x8a, 0x17, 0xd6, 0x5d, 0xbd, + 0x21, 0x03, 0x68, 0x52, 0x4f, 0xfa, 0x13, 0xcc, 0x70, 0xdb, 0x6d, 0xd0, 0xb7, 0xfe, 0x84, 0x7c, + 0x0f, 0x6e, 0x8b, 0x24, 0xe3, 0x01, 0xf5, 0x8a, 0x6b, 0x5b, 0xc8, 0xed, 0x69, 0xea, 0x0b, 0x7d, + 0xb9, 0x03, 0xf5, 0x53, 0x16, 0x0e, 0xdb, 0xe8, 0x98, 0x8d, 0x6a, 0x12, 0xbe, 0x0c, 0x5d, 0xc5, + 0x24, 0x3f, 0x04, 0x28, 0x35, 0x85, 0xc3, 0xce, 0x1a, 0x51, 0xbb, 0xd0, 0x1b, 0x92, 0x5d, 0x80, + 0x80, 0xa5, 0x53, 0xca, 0x3d, 0x95, 0x30, 0x36, 0x26, 0x87, 0xad, 0x29, 0x5f, 0xd2, 0x2b, 0xc5, + 0x66, 0xc2, 0x9b, 0x7c, 0xcd, 0xd2, 0x94, 0x86, 0x43, 0x40, 0x0f, 0xdb, 0x4c, 0x7c, 0xa1, 0x09, + 0xce, 0xaf, 0xa0, 0x95, 0x1b, 0x77, 0x17, 0xec, 0xf3, 0x24, 0xca, 0x66, 0xa5, 0xd3, 0xfa, 0x6e, + 0x47, 0x13, 0x5e, 0x86, 0x64, 0x1b, 0x10, 0x25, 0xf1, 0x8a, 0x1a, 0xba, 0x08, 0xfd, 0xab, 0x2e, + 0x78, 0x1f, 0x5a, 0x41, 0x92, 0x9c, 0x31, 0xed, 0xbb, 0xb6, 0x9b, 0xef, 0x9c, 0x3f, 0xd6, 0xe1, + 0x76, 0xb5, 0x58, 0xd4, 0x15, 0xa8, 0x05, 0x3d, 0x6d, 0xa1, 0x1a, 0x54, 0x7b, 0x52, 0xf1, 0x76, + 0xcd, 0xf4, 0x76, 0x71, 0x64, 0x96, 0x84, 0xfa, 0x82, 0xbe, 0x3e, 0xf2, 0x3a, 0x09, 0xa9, 0xca, + 0xf5, 0x8c, 0x85, 0x18, 0x9e, 0xbe, 0xab, 0x96, 0x8a, 0x32, 0x61, 0x61, 0x0e, 0x3e, 0x6a, 0x89, + 0xe6, 0x71, 0xd4, 0xdb, 0xd2, 0x01, 0xd7, 0x3b, 0x15, 0xf0, 0x99, 0xa2, 0xb6, 0x75, 0x14, 0xd5, + 0x9a, 0xec, 0x41, 0x97, 0xd3, 0x34, 0xca, 0x73, 0x1f, 0x9d, 0x6f, 0xbb, 0x26, 0x89, 0xdc, 0x03, + 0x08, 0x92, 0x28, 0xa2, 0x01, 0x0a, 0xd8, 0x28, 0x60, 0x50, 0x54, 0xde, 0x49, 0x19, 0x79, 0x82, + 0x06, 0xe8, 0xea, 0xa6, 0xdb, 0x92, 0x32, 0x3a, 0xa1, 0x81, 0x7a, 0x47, 0x26, 0x28, 0xf7, 0x10, + 0xbe, 0xba, 0x78, 0xae, 0xa3, 0x08, 0x08, 0xb2, 0xbb, 0x00, 0x13, 0x9e, 0x64, 0xa9, 0xe6, 0xf6, + 0xf6, 0xea, 0x0a, 0xc9, 0x91, 0x82, 0xec, 0x07, 0x70, 0x5b, 0x5c, 0xcd, 0x22, 0x16, 0x9f, 0x79, + 0xd2, 0xe7, 0x13, 0x2a, 0x87, 0x7d, 0x5d, 0x01, 0x39, 0xf5, 0x2d, 0x12, 0xd5, 0xdb, 0x67, 0xe1, + 0x8f, 0x87, 0xb7, 0x31, 0x03, 0xd4, 0xd2, 0x49, 0x81, 0x1c, 0x72, 0xea, 0x4b, 0xfa, 0x2d, 0xda, + 0xd8, 0x37, 0x43, 0x0b, 0x72, 0x07, 0x5a, 0x89, 0x47, 0x2f, 0x83, 0x28, 0x2f, 0xda, 0x66, 0x72, + 0x74, 0x19, 0x44, 0xce, 0x23, 0x18, 0x54, 0x6e, 0xcc, 0x81, 0x7e, 0x0b, 0x9a, 0x94, 0xf3, 0xa4, + 0x80, 0x25, 0xbd, 0x71, 0x7e, 0x0d, 0xe4, 0x5d, 0x1a, 0x7e, 0x17, 0xe6, 0x39, 0x77, 0x60, 0x50, + 0x51, 0xad, 0xed, 0x70, 0xfe, 0x65, 0x01, 0x79, 0x8e, 0xe8, 0xf2, 0xff, 0x35, 0x76, 0x55, 0xef, + 0xaa, 0xe9, 0x68, 0xf4, 0x0a, 0x7d, 0xe9, 0xe7, 0x2d, 0xb1, 0xc7, 0x84, 0xd6, 0xff, 0xdc, 0x97, + 0x7e, 0xde, 0x9a, 0x38, 0x0d, 0x32, 0xae, 0xba, 0x24, 0xa6, 0x25, 0xb6, 0x26, 0xb7, 0x20, 0x91, + 0x4f, 0xe0, 0x7d, 0x36, 0x89, 0x13, 0x4e, 0xe7, 0x62, 0x9e, 0x76, 0x55, 0x0b, 0x85, 0xb7, 0x34, + 0xb7, 0x3c, 0x70, 0x84, 0x9e, 0x7b, 0x04, 0x83, 0xca, 0x33, 0xae, 0x75, 0xf3, 0x9f, 0x2d, 0x18, + 0x3e, 0x95, 0xc9, 0x8c, 0x05, 0x2e, 0x55, 0xc6, 0x57, 0x9e, 0x7e, 0x1f, 0xfa, 0x0a, 0xdf, 0x17, + 0x9f, 0xdf, 0x4b, 0xa2, 0x70, 0xde, 0x3f, 0xb7, 0x41, 0x41, 0xbc, 0x67, 0x78, 0xa1, 0x9d, 0x44, + 0x21, 0xe6, 0xe6, 0x7d, 0x50, 0x38, 0x6c, 0x9c, 0xd7, 0x93, 0x44, 0x2f, 0xa6, 0x17, 0x95, 0xf3, + 0x4a, 0x08, 0xcf, 0x6b, 0xf0, 0x6e, 0xc7, 0xf4, 0x42, 0x9d, 0x77, 0xee, 0xc2, 0xf6, 0x0a, 0xdb, + 0xf2, 0x70, 0xfd, 0xdb, 0x82, 0xc1, 0x53, 0x21, 0xd8, 0x24, 0xfe, 0x25, 0x02, 0x51, 0x61, 0xf4, + 0x16, 0x34, 0x83, 0x24, 0x8b, 0x25, 0x1a, 0xdb, 0x74, 0xf5, 0x66, 0xa1, 0x36, 0x6b, 0x4b, 0xb5, + 0xb9, 0x50, 0xdd, 0xf5, 0xe5, 0xea, 0x36, 0xaa, 0xb7, 0x51, 0xa9, 0xde, 0x0f, 0xa1, 0xab, 0x82, + 0xec, 0x05, 0x34, 0x96, 0x94, 0xe7, 0xc8, 0x0f, 0x8a, 0x74, 0x88, 0x14, 0x25, 0x60, 0x76, 0x28, + 0x0d, 0xfe, 0x90, 0xce, 0xdb, 0xd3, 0x7f, 0x2d, 0xd8, 0xaa, 0x3e, 0x25, 0x8f, 0xd9, 0xda, 0x4e, + 0xa5, 0xc0, 0x8d, 0x47, 0xf9, 0x3b, 0xd4, 0x52, 0xc1, 0x44, 0x9a, 0x8d, 0x23, 0x16, 0x78, 0x8a, + 0xa1, 0xed, 0xb7, 0x35, 0xe5, 0x1d, 0x8f, 0xe6, 0x5e, 0x69, 0x98, 0x5e, 0x21, 0xd0, 0xf0, 0x33, + 0x39, 0x2d, 0xba, 0x95, 0x5a, 0x2f, 0x78, 0xaa, 0x75, 0x93, 0xa7, 0xda, 0xcb, 0x9e, 0x2a, 0x33, + 0xad, 0x63, 0x66, 0xda, 0x27, 0x30, 0xd0, 0xe3, 0x6e, 0x35, 0x5c, 0xbb, 0x00, 0x65, 0x67, 0x11, + 0x43, 0x4b, 0xc3, 0x5b, 0xd1, 0x5a, 0x84, 0xf3, 0x33, 0xb0, 0x5f, 0x25, 0x5a, 0xaf, 0x20, 0x4f, + 0xc0, 0x8e, 0x8a, 0x0d, 0x8a, 0x76, 0x0f, 0xc8, 0xbc, 0xc6, 0x0b, 0x39, 0x77, 0x2e, 0xe4, 0x7c, + 0x0e, 0x9d, 0x82, 0x5c, 0xf8, 0xcc, 0x5a, 0xe7, 0xb3, 0xda, 0x82, 0xcf, 0x9c, 0x7f, 0x5a, 0xb0, + 0x55, 0x35, 0x39, 0x0f, 0xcb, 0x3b, 0xe8, 0x97, 0x57, 0x78, 0x33, 0x3f, 0xcd, 0x6d, 0x79, 0x62, + 0xda, 0xb2, 0x7c, 0xac, 0x34, 0x50, 0xbc, 0xf6, 0x53, 0x9d, 0xcb, 0xbd, 0xc8, 0x20, 0x8d, 0xde, + 0xc2, 0xe6, 0x92, 0xc8, 0x8a, 0x59, 0xef, 0x07, 0xe6, 0xac, 0x57, 0x99, 0x57, 0xcb, 0xd3, 0xe6, + 0x00, 0xf8, 0x19, 0x7c, 0xa0, 0xe1, 0xe0, 0xb0, 0x8c, 0x61, 0xe1, 0xfb, 0x6a, 0xa8, 0xad, 0xc5, + 0x50, 0x3b, 0x23, 0x18, 0x2e, 0x1f, 0xcd, 0xcb, 0x6f, 0x02, 0x9b, 0x27, 0xd2, 0x97, 0x4c, 0x48, + 0x16, 0x94, 0x1f, 0x1d, 0x0b, 0xb9, 0x61, 0xdd, 0xd4, 0x23, 0x97, 0xeb, 0x70, 0x03, 0xea, 0x52, + 0x16, 0xf9, 0xab, 0x96, 0x2a, 0x0a, 0xc4, 0xbc, 0x29, 0x8f, 0xc1, 0x77, 0x70, 0x95, 0xca, 0x07, + 0x99, 0x48, 0x3f, 0xd2, 0x33, 0x48, 0x03, 0x67, 0x10, 0x1b, 0x29, 0x38, 0x84, 0xe8, 0x36, 0x1d, + 0x6a, 0x6e, 0x53, 0x4f, 0x28, 0x8a, 0x80, 0xcc, 0x5d, 0x00, 0x2c, 0x55, 0x5d, 0x65, 0x2d, 0x7d, + 0x56, 0x51, 0x0e, 0x15, 0xc1, 0xb9, 0x07, 0x3b, 0x5f, 0x50, 0xa9, 0xa6, 0x29, 0x7e, 0x98, 0xc4, + 0xa7, 0x6c, 0x92, 0x71, 0xdf, 0x08, 0x85, 0xf3, 0x1f, 0x0b, 0x76, 0xd7, 0x08, 0xe4, 0x0f, 0x1e, + 0x42, 0x7b, 0xe6, 0x0b, 0x49, 0x79, 0x51, 0x25, 0xc5, 0x76, 0xd1, 0x15, 0xb5, 0x9b, 0x5c, 0x51, + 0x5f, 0x72, 0xc5, 0x1d, 0x68, 0xcd, 0xfc, 0x4b, 0x6f, 0x36, 0xce, 0xc7, 0xa5, 0xe6, 0xcc, 0xbf, + 0x7c, 0x3d, 0x46, 0x64, 0x63, 0xdc, 0x1b, 0x67, 0xc1, 0x19, 0x95, 0xa2, 0x44, 0x36, 0xc6, 0x9f, + 0x69, 0x0a, 0xce, 0x4f, 0x38, 0x4c, 0x22, 0x0c, 0x74, 0xdc, 0x7c, 0xe7, 0x5c, 0xc0, 0xf0, 0x24, + 0x1b, 0x8b, 0x80, 0xb3, 0x31, 0x7d, 0x4d, 0xa5, 0xaf, 0xc0, 0xb0, 0xc8, 0x91, 0x0f, 0xa1, 0x1b, + 0x44, 0x4c, 0xa1, 0xa1, 0xf1, 0xb5, 0x06, 0x9a, 0x84, 0x5d, 0x03, 0xe1, 0x52, 0x4e, 0xbd, 0xca, + 0x07, 0x2a, 0x28, 0xd2, 0x1b, 0xfd, 0x91, 0xba, 0x0d, 0x1d, 0xc1, 0xe2, 0x80, 0x7a, 0xb1, 0xfe, + 0x2a, 0xa8, 0xbb, 0x6d, 0xdc, 0x1f, 0x0b, 0xe7, 0x4f, 0x16, 0x6c, 0xaf, 0xb8, 0x39, 0x77, 0xe1, + 0xf5, 0xad, 0xfc, 0x17, 0x40, 0xe8, 0x39, 0xda, 0x65, 0x7c, 0xe3, 0xe4, 0x45, 0x76, 0xd7, 0x18, + 0x25, 0x16, 0x3f, 0x83, 0xdc, 0x4d, 0xba, 0x48, 0x72, 0x7c, 0x85, 0x3b, 0x13, 0x5d, 0xc1, 0x03, + 0x68, 0x4a, 0xe1, 0x21, 0x62, 0x29, 0x5b, 0x1b, 0x52, 0x1c, 0x0b, 0xf2, 0x18, 0x48, 0xea, 0x73, + 0xc9, 0x94, 0xb4, 0x1a, 0x9c, 0xbd, 0xa9, 0x2f, 0xa6, 0x78, 0x59, 0xd3, 0xdd, 0x28, 0x39, 0x5f, + 0xd2, 0xab, 0x9f, 0xfb, 0x62, 0xaa, 0x70, 0x1a, 0xe7, 0x88, 0x3a, 0x8e, 0x6f, 0xb8, 0x3e, 0xf8, + 0x6b, 0x07, 0x7a, 0x27, 0xd4, 0xbf, 0xa0, 0x34, 0xc4, 0xac, 0x21, 0x93, 0x02, 0xad, 0xaa, 0xff, + 0x13, 0xc8, 0x83, 0x45, 0x58, 0x5a, 0xf9, 0x03, 0x63, 0xf4, 0xf1, 0x4d, 0x62, 0x79, 0xe1, 0xdf, + 0x22, 0xc7, 0xd0, 0x35, 0x3e, 0xd8, 0xc9, 0x8e, 0x71, 0x70, 0xe9, 0x3f, 0xc4, 0x68, 0x77, 0x0d, + 0xb7, 0xd0, 0xf6, 0xc4, 0x22, 0xaf, 0xa0, 0x6b, 0xcc, 0x85, 0xa6, 0xbe, 0xe5, 0x01, 0xd5, 0xd4, + 0xb7, 0x62, 0x98, 0x74, 0x6e, 0x29, 0x6d, 0xc6, 0x74, 0x67, 0x6a, 0x5b, 0x9e, 0x27, 0x4d, 0x6d, + 0xab, 0x46, 0x42, 0xd4, 0x66, 0x0c, 0x53, 0xa6, 0xb6, 0xe5, 0x51, 0xd1, 0xd4, 0xb6, 0x62, 0x02, + 0x73, 0x6e, 0x91, 0xdf, 0xc2, 0xe6, 0xd2, 0x40, 0x43, 0x9c, 0xf9, 0xa9, 0x75, 0x93, 0xd8, 0xe8, + 0xfe, 0xb5, 0x32, 0xa5, 0xfe, 0xaf, 0xa0, 0x67, 0xce, 0x11, 0xc4, 0x30, 0x68, 0xc5, 0xa8, 0x34, + 0xba, 0xb7, 0x8e, 0x6d, 0x2a, 0x34, 0x5b, 0x99, 0xa9, 0x70, 0x45, 0x33, 0x37, 0x15, 0xae, 0xea, + 0x80, 0xce, 0x2d, 0xf2, 0x1b, 0xd8, 0x58, 0x6c, 0x29, 0xe4, 0xa3, 0x45, 0xb7, 0x2d, 0x75, 0xaa, + 0x91, 0x73, 0x9d, 0x48, 0xa9, 0xfc, 0x25, 0xc0, 0xbc, 0x53, 0x10, 0xa3, 0x66, 0x97, 0x3a, 0xd5, + 0x68, 0x67, 0x35, 0xb3, 0x54, 0xf5, 0x7b, 0xb8, 0xb3, 0x12, 0x8e, 0x89, 0x51, 0x26, 0xd7, 0x01, + 0xfa, 0xe8, 0xfb, 0x37, 0xca, 0x95, 0x77, 0xfd, 0x0e, 0x36, 0x97, 0x30, 0xcb, 0xcc, 0x8a, 0x75, + 0x50, 0x6a, 0x66, 0xc5, 0x5a, 0xd0, 0x53, 0x15, 0xf6, 0xec, 0x1e, 0x6c, 0x08, 0x0d, 0x15, 0xa7, + 0x62, 0x5f, 0x43, 0xed, 0x33, 0x40, 0x9b, 0xde, 0xf0, 0x44, 0x26, 0xe3, 0x16, 0xfe, 0xec, 0xfc, + 0xd1, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x37, 0x58, 0xa5, 0x1f, 0xfb, 0x14, 0x00, 0x00, } diff --git a/weed/pb/shared_values.go b/weed/pb/shared_values.go index cac253ebb..acc3bb56d 100644 --- a/weed/pb/shared_values.go +++ b/weed/pb/shared_values.go @@ -2,4 +2,4 @@ package pb const ( AdminShellClient = "shell" -) \ No newline at end of file +) diff --git a/weed/server/filer_grpc_server_listen.go b/weed/server/filer_grpc_server_listen.go index e2d932a99..76bf834ea 100644 --- a/weed/server/filer_grpc_server_listen.go +++ b/weed/server/filer_grpc_server_listen.go @@ -10,7 +10,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/util" ) -func (fs *FilerServer) ListenForEvents(req *filer_pb.ListenForEventsRequest, stream filer_pb.SeaweedFiler_ListenForEventsServer) error { +func (fs *FilerServer) SubscribeMetadata(req *filer_pb.SubscribeMetadataRequest, stream filer_pb.SeaweedFiler_SubscribeMetadataServer) error { peerAddress := findClientAddress(stream.Context(), 0) @@ -46,7 +46,7 @@ func (fs *FilerServer) ListenForEvents(req *filer_pb.ListenForEventsRequest, str return nil } - message := &filer_pb.FullEventNotification{ + message := &filer_pb.SubscribeMetadataResponse{ Directory: dirPath, EventNotification: eventNotification, } diff --git a/weed/server/filer_grpc_server_rename.go b/weed/server/filer_grpc_server_rename.go index c18587b45..71e2c7d17 100644 --- a/weed/server/filer_grpc_server_rename.go +++ b/weed/server/filer_grpc_server_rename.go @@ -117,7 +117,7 @@ func (fs *FilerServer) moveSelfEntry(ctx context.Context, oldParent util.FullPat events.newEntries = append(events.newEntries, newEntry) - if moveFolderSubEntries!=nil { + if moveFolderSubEntries != nil { if moveChildrenErr := moveFolderSubEntries(); moveChildrenErr != nil { return moveChildrenErr } diff --git a/weed/server/volume_server_handlers_write.go b/weed/server/volume_server_handlers_write.go index 968ece11f..227cb0b28 100644 --- a/weed/server/volume_server_handlers_write.go +++ b/weed/server/volume_server_handlers_write.go @@ -167,10 +167,10 @@ func setEtag(w http.ResponseWriter, etag string) { } } -func getEtag(resp *http.Response) (etag string){ +func getEtag(resp *http.Response) (etag string) { etag = resp.Header.Get("ETag") - if strings.HasPrefix(etag, "\"") && strings.HasSuffix(etag, "\""){ - return etag[1:len(etag)-1] + if strings.HasPrefix(etag, "\"") && strings.HasSuffix(etag, "\"") { + return etag[1 : len(etag)-1] } return } diff --git a/weed/storage/backend/memory_map/memory_map_backend.go b/weed/storage/backend/memory_map/memory_map_backend.go index 7fc2b4920..8ff03d9af 100644 --- a/weed/storage/backend/memory_map/memory_map_backend.go +++ b/weed/storage/backend/memory_map/memory_map_backend.go @@ -6,7 +6,7 @@ import ( ) var ( - // _ backend.BackendStorageFile = &MemoryMappedFile{} // remove this to break import cycle +// _ backend.BackendStorageFile = &MemoryMappedFile{} // remove this to break import cycle ) type MemoryMappedFile struct { diff --git a/weed/util/chunk_cache/chunk_cache.go b/weed/util/chunk_cache/chunk_cache.go index 9f2a0518f..7c4a77304 100644 --- a/weed/util/chunk_cache/chunk_cache.go +++ b/weed/util/chunk_cache/chunk_cache.go @@ -131,4 +131,4 @@ func (c *ChunkCache) Shutdown() { for _, diskCache := range c.diskCaches { diskCache.Shutdown() } -} \ No newline at end of file +} diff --git a/weed/util/chunk_cache/chunk_cache_on_disk_test.go b/weed/util/chunk_cache/chunk_cache_on_disk_test.go index 256b10139..f93daf5a7 100644 --- a/weed/util/chunk_cache/chunk_cache_on_disk_test.go +++ b/weed/util/chunk_cache/chunk_cache_on_disk_test.go @@ -21,11 +21,11 @@ func TestOnDisk(t *testing.T) { writeCount := 5 type test_data struct { - data []byte + data []byte fileId string } testData := make([]*test_data, writeCount) - for i:=0;i