summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--api/gobgp.pb.go713
-rw-r--r--api/gobgp.proto1
-rw-r--r--docs/sources/lib.md4
-rw-r--r--gobgp/cmd/monitor.go83
-rw-r--r--openswitch/openswitch.go8
-rw-r--r--server/grpc_server.go24
-rw-r--r--server/monitor.go124
-rw-r--r--server/server.go54
-rw-r--r--server/watcher.go3
-rw-r--r--server/zclient.go2
-rw-r--r--server/zclient_test.go85
11 files changed, 505 insertions, 596 deletions
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go
index 238f4ac6..96a9a764 100644
--- a/api/gobgp.pb.go
+++ b/api/gobgp.pb.go
@@ -2441,7 +2441,6 @@ type GobgpApiClient interface {
AddPath(ctx context.Context, in *AddPathRequest, opts ...grpc.CallOption) (*AddPathResponse, error)
DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*DeletePathResponse, error)
MonitorRib(ctx context.Context, in *Table, opts ...grpc.CallOption) (GobgpApi_MonitorRibClient, error)
- MonitorBestChanged(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorBestChangedClient, error)
MonitorPeerState(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorPeerStateClient, error)
EnableMrt(ctx context.Context, in *EnableMrtRequest, opts ...grpc.CallOption) (*EnableMrtResponse, error)
DisableMrt(ctx context.Context, in *DisableMrtRequest, opts ...grpc.CallOption) (*DisableMrtResponse, error)
@@ -2652,40 +2651,8 @@ func (x *gobgpApiMonitorRibClient) Recv() (*Destination, error) {
return m, nil
}
-func (c *gobgpApiClient) MonitorBestChanged(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorBestChangedClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[1], c.cc, "/gobgpapi.GobgpApi/MonitorBestChanged", opts...)
- if err != nil {
- return nil, err
- }
- x := &gobgpApiMonitorBestChangedClient{stream}
- if err := x.ClientStream.SendMsg(in); err != nil {
- return nil, err
- }
- if err := x.ClientStream.CloseSend(); err != nil {
- return nil, err
- }
- return x, nil
-}
-
-type GobgpApi_MonitorBestChangedClient interface {
- Recv() (*Destination, error)
- grpc.ClientStream
-}
-
-type gobgpApiMonitorBestChangedClient struct {
- grpc.ClientStream
-}
-
-func (x *gobgpApiMonitorBestChangedClient) Recv() (*Destination, error) {
- m := new(Destination)
- if err := x.ClientStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
-}
-
func (c *gobgpApiClient) MonitorPeerState(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorPeerStateClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[2], c.cc, "/gobgpapi.GobgpApi/MonitorPeerState", opts...)
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[1], c.cc, "/gobgpapi.GobgpApi/MonitorPeerState", opts...)
if err != nil {
return nil, err
}
@@ -2735,7 +2702,7 @@ func (c *gobgpApiClient) DisableMrt(ctx context.Context, in *DisableMrtRequest,
}
func (c *gobgpApiClient) InjectMrt(ctx context.Context, opts ...grpc.CallOption) (GobgpApi_InjectMrtClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[3], c.cc, "/gobgpapi.GobgpApi/InjectMrt", opts...)
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[2], c.cc, "/gobgpapi.GobgpApi/InjectMrt", opts...)
if err != nil {
return nil, err
}
@@ -3048,7 +3015,6 @@ type GobgpApiServer interface {
AddPath(context.Context, *AddPathRequest) (*AddPathResponse, error)
DeletePath(context.Context, *DeletePathRequest) (*DeletePathResponse, error)
MonitorRib(*Table, GobgpApi_MonitorRibServer) error
- MonitorBestChanged(*Arguments, GobgpApi_MonitorBestChangedServer) error
MonitorPeerState(*Arguments, GobgpApi_MonitorPeerStateServer) error
EnableMrt(context.Context, *EnableMrtRequest) (*EnableMrtResponse, error)
DisableMrt(context.Context, *DisableMrtRequest) (*DisableMrtResponse, error)
@@ -3379,27 +3345,6 @@ func (x *gobgpApiMonitorRibServer) Send(m *Destination) error {
return x.ServerStream.SendMsg(m)
}
-func _GobgpApi_MonitorBestChanged_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(Arguments)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(GobgpApiServer).MonitorBestChanged(m, &gobgpApiMonitorBestChangedServer{stream})
-}
-
-type GobgpApi_MonitorBestChangedServer interface {
- Send(*Destination) error
- grpc.ServerStream
-}
-
-type gobgpApiMonitorBestChangedServer struct {
- grpc.ServerStream
-}
-
-func (x *gobgpApiMonitorBestChangedServer) Send(m *Destination) error {
- return x.ServerStream.SendMsg(m)
-}
-
func _GobgpApi_MonitorPeerState_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(Arguments)
if err := stream.RecvMsg(m); err != nil {
@@ -4201,11 +4146,6 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
ServerStreams: true,
},
{
- StreamName: "MonitorBestChanged",
- Handler: _GobgpApi_MonitorBestChanged_Handler,
- ServerStreams: true,
- },
- {
StreamName: "MonitorPeerState",
Handler: _GobgpApi_MonitorPeerState_Handler,
ServerStreams: true,
@@ -4219,331 +4159,330 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
- // 5205 bytes of a gzipped FileDescriptorProto
+ // 5189 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x3c, 0x5d, 0x73, 0x1b, 0x47,
0x72, 0x04, 0x01, 0x92, 0x40, 0x03, 0x20, 0xc1, 0x11, 0x29, 0x41, 0x90, 0x25, 0x5b, 0x7b, 0x67,
- 0x5b, 0xd6, 0xd9, 0xf2, 0x59, 0xb6, 0xe5, 0xcb, 0xf9, 0x7c, 0x39, 0x88, 0x84, 0x24, 0x9c, 0xf9,
- 0xe5, 0x25, 0xad, 0xd8, 0xf9, 0x42, 0x56, 0xc0, 0x82, 0xdc, 0x18, 0xc0, 0xee, 0xed, 0x2e, 0x64,
- 0xa9, 0x52, 0x95, 0x54, 0x5d, 0xf2, 0x94, 0x54, 0xfe, 0xc1, 0xfd, 0x82, 0xab, 0xe4, 0x39, 0x55,
- 0x79, 0x4e, 0xaa, 0xf2, 0x2f, 0xf2, 0x94, 0x87, 0xfc, 0x80, 0x54, 0xe5, 0x31, 0xdd, 0x3d, 0xb3,
- 0xbb, 0xb3, 0x1f, 0xa0, 0x28, 0x45, 0x49, 0x2a, 0x4f, 0xc4, 0x76, 0xf7, 0xf4, 0xf4, 0x4c, 0xf7,
- 0x74, 0xf7, 0xf4, 0xcc, 0x10, 0xea, 0xa7, 0xee, 0x93, 0x53, 0xef, 0x8e, 0xe7, 0xbb, 0xa1, 0x2b,
- 0xaa, 0xfc, 0x61, 0x79, 0x8e, 0xb1, 0x05, 0xe2, 0xa1, 0x1d, 0x1e, 0xd8, 0xce, 0xe9, 0xd9, 0x13,
- 0xd7, 0x37, 0xed, 0x5f, 0xcd, 0xed, 0x20, 0x34, 0x3e, 0x87, 0x4b, 0x29, 0x68, 0xe0, 0xb9, 0xb3,
- 0xc0, 0x16, 0x3f, 0x84, 0x15, 0xcf, 0xb6, 0xfd, 0xa0, 0x5d, 0x7a, 0xab, 0x7c, 0xab, 0x7e, 0x77,
- 0xfd, 0x4e, 0xc4, 0xe6, 0xce, 0x11, 0x82, 0x4d, 0x89, 0x34, 0x4e, 0xa1, 0xd6, 0xf5, 0x4f, 0xe7,
- 0x53, 0x7b, 0x16, 0x06, 0xe2, 0x0e, 0x54, 0x7d, 0x3b, 0x70, 0xe7, 0xfe, 0xd0, 0xc6, 0x56, 0xa5,
- 0x5b, 0xeb, 0x77, 0x45, 0xd2, 0xca, 0x54, 0x18, 0x33, 0xa6, 0x11, 0x97, 0x61, 0x75, 0x6c, 0x4d,
- 0x9d, 0xc9, 0xf3, 0xf6, 0x32, 0x52, 0x37, 0x4d, 0xf5, 0x25, 0x04, 0x54, 0x66, 0xd6, 0xd4, 0x6e,
- 0x97, 0x11, 0x5a, 0x33, 0xf9, 0xb7, 0xf1, 0x67, 0xb0, 0xde, 0x1d, 0x8d, 0x8e, 0xac, 0xf0, 0x4c,
- 0xc9, 0xfd, 0xd2, 0xbd, 0x6d, 0xc3, 0xea, 0x53, 0x7f, 0x3c, 0x70, 0x46, 0xdc, 0x5b, 0xcd, 0x5c,
- 0xc1, 0xaf, 0xfe, 0x48, 0x18, 0x50, 0xf1, 0x90, 0x2b, 0x77, 0x96, 0x1e, 0x26, 0xf5, 0xc5, 0x38,
- 0xe3, 0x6d, 0xd8, 0x88, 0x3b, 0x57, 0xd3, 0x83, 0x32, 0xce, 0xe7, 0xc8, 0x8b, 0x7a, 0x6e, 0x98,
- 0xfc, 0xdb, 0xf8, 0x6d, 0x09, 0x36, 0x77, 0xed, 0x89, 0x1d, 0xda, 0xff, 0x03, 0x72, 0x26, 0x93,
- 0x55, 0x4e, 0x4d, 0x56, 0x24, 0x7f, 0x65, 0xb1, 0xfc, 0xb1, 0xb0, 0x2b, 0x9a, 0xb0, 0x68, 0x0c,
- 0xba, 0xac, 0x72, 0x58, 0xc6, 0x4f, 0x40, 0xe0, 0x48, 0x33, 0x26, 0xc2, 0x7d, 0xa0, 0xba, 0x59,
- 0xfc, 0xbc, 0x29, 0x30, 0xce, 0xd8, 0x86, 0x4b, 0xa9, 0x96, 0x8a, 0xe1, 0xe7, 0xb0, 0x2d, 0xbb,
- 0x79, 0x15, 0x9e, 0x6d, 0xb8, 0x9c, 0x6d, 0xac, 0xd8, 0xfe, 0x18, 0xb6, 0xf0, 0x77, 0xce, 0x98,
- 0x45, 0x1b, 0xd6, 0xac, 0xd1, 0x08, 0xe7, 0x32, 0x60, 0xc6, 0x35, 0x33, 0xfa, 0x34, 0xae, 0xc0,
- 0x76, 0xa6, 0x85, 0x62, 0xf5, 0x8f, 0x25, 0x68, 0x1f, 0xbb, 0xe3, 0xf0, 0xe5, 0xf8, 0x89, 0x63,
- 0xa8, 0x8d, 0x1c, 0xdf, 0x1e, 0x86, 0x8e, 0x3b, 0x63, 0x4d, 0xad, 0xdf, 0xfd, 0x34, 0x19, 0xc4,
- 0x22, 0x86, 0x09, 0x62, 0x37, 0x6a, 0x6c, 0x26, 0x7c, 0x8c, 0x0f, 0x41, 0xe4, 0x09, 0xc4, 0x2a,
- 0x2c, 0xf7, 0x0f, 0x5a, 0x4b, 0x62, 0x0d, 0xca, 0x87, 0x5f, 0x9f, 0xb4, 0x4a, 0xa2, 0x0a, 0x95,
- 0xfb, 0x87, 0x27, 0x8f, 0x5a, 0xcb, 0xc6, 0x35, 0xb8, 0x5a, 0xd0, 0x95, 0x1a, 0xd9, 0xc7, 0x70,
- 0xe5, 0xf8, 0x6c, 0x1e, 0x8e, 0xdc, 0xef, 0x67, 0x17, 0x9f, 0xa7, 0x0e, 0xce, 0x46, 0xae, 0x91,
- 0x62, 0xf8, 0x11, 0x6c, 0xf7, 0x66, 0xd6, 0x93, 0x89, 0x7d, 0x71, 0x76, 0xa8, 0xc2, 0x6c, 0x13,
- 0xc5, 0xec, 0x2e, 0x2a, 0xd7, 0x09, 0x5e, 0x8e, 0xdb, 0x55, 0xb8, 0x92, 0x6b, 0xa3, 0xd8, 0x9d,
- 0x42, 0x4b, 0x76, 0xb4, 0xef, 0x87, 0x11, 0xa3, 0x6b, 0xa8, 0xa3, 0xf9, 0xd4, 0x1b, 0x84, 0xcf,
- 0x3d, 0xb9, 0xf6, 0x56, 0xcc, 0x2a, 0x01, 0x4e, 0xf0, 0x5b, 0x74, 0xa0, 0x3a, 0x76, 0x26, 0x36,
- 0x7b, 0x1a, 0xb9, 0xd2, 0xe2, 0x6f, 0xc2, 0x39, 0xb3, 0xd0, 0xf6, 0x9f, 0x5a, 0x13, 0x5e, 0x6e,
- 0x15, 0x33, 0xfe, 0x36, 0x2e, 0xc1, 0xa6, 0xd6, 0x91, 0xea, 0x1d, 0x81, 0x4a, 0xb0, 0xa4, 0x7b,
- 0x5e, 0x62, 0x1a, 0x50, 0x91, 0xfe, 0x05, 0xb4, 0xfa, 0xb3, 0x3f, 0x45, 0xd5, 0x6a, 0x82, 0xbe,
- 0x26, 0x1f, 0x41, 0x3e, 0x1b, 0x57, 0x73, 0x80, 0x32, 0x97, 0x0b, 0x9c, 0x81, 0x44, 0x92, 0xac,
- 0x9a, 0x00, 0x4a, 0xaa, 0xbf, 0x2b, 0x41, 0x13, 0xd7, 0xef, 0xfd, 0xa9, 0xf7, 0x62, 0xd3, 0x47,
- 0x77, 0xe2, 0xb9, 0x7e, 0xa8, 0xbc, 0x36, 0xff, 0x16, 0x3f, 0x83, 0x0a, 0xcf, 0x72, 0x99, 0xa5,
- 0xbf, 0x95, 0xf4, 0x9c, 0x62, 0x7a, 0x67, 0xdf, 0x9d, 0x39, 0xa1, 0xeb, 0x3b, 0xb3, 0xd3, 0x23,
- 0x77, 0xe2, 0x0c, 0x9f, 0x9b, 0xdc, 0x0a, 0xed, 0xbe, 0x95, 0xc5, 0x90, 0xb5, 0x1f, 0x99, 0x3d,
- 0x34, 0x7b, 0xb4, 0xf6, 0xa3, 0xc3, 0xe3, 0xb4, 0xdd, 0xb7, 0x38, 0x1c, 0x30, 0x63, 0x35, 0x80,
- 0x5f, 0x40, 0x4b, 0xfa, 0x8a, 0x57, 0x1d, 0x02, 0xeb, 0x30, 0xe1, 0xa0, 0xd8, 0xf6, 0xa0, 0x6a,
- 0x1e, 0x7d, 0xd9, 0xdf, 0x71, 0x67, 0xe3, 0x73, 0xd8, 0xbd, 0x09, 0x75, 0xdf, 0x9e, 0xba, 0xa1,
- 0x3d, 0x88, 0xb9, 0xd6, 0x4c, 0x90, 0xa0, 0x23, 0xe2, 0xfd, 0x9b, 0x0a, 0xd4, 0x88, 0xcf, 0x71,
- 0x68, 0x85, 0x1c, 0xf8, 0xe6, 0x5e, 0xe8, 0x4c, 0xa5, 0xb2, 0xcb, 0xa6, 0xfa, 0x22, 0xb3, 0xa3,
- 0x75, 0xc7, 0x98, 0x65, 0xc6, 0xc4, 0xdf, 0x62, 0x1d, 0x96, 0xe7, 0x1e, 0x4f, 0x6f, 0xd5, 0xc4,
- 0x5f, 0xb2, 0xcb, 0xa1, 0xeb, 0x8f, 0x06, 0x8e, 0xf7, 0xf4, 0x13, 0x76, 0xff, 0x4d, 0xea, 0x92,
- 0x40, 0x7d, 0x84, 0xa4, 0x09, 0xee, 0xb1, 0xef, 0xd7, 0x09, 0xee, 0x11, 0x81, 0xe7, 0xdb, 0x63,
- 0xe7, 0x99, 0xe4, 0xb0, 0x2a, 0x09, 0x24, 0x28, 0xe2, 0x90, 0x10, 0xdc, 0x6b, 0xaf, 0x65, 0x08,
- 0xee, 0xd1, 0x38, 0x02, 0xdb, 0x77, 0x70, 0x91, 0x54, 0x65, 0x4c, 0x92, 0x5f, 0xe2, 0x07, 0xd0,
- 0xc4, 0x7e, 0x6c, 0xe7, 0xa9, 0xad, 0xa4, 0xab, 0xf1, 0x60, 0x1a, 0x11, 0x90, 0xb9, 0x67, 0x88,
- 0xee, 0xb5, 0x21, 0x47, 0x74, 0x8f, 0x88, 0x24, 0xcf, 0xc1, 0xcc, 0x0d, 0x9d, 0xf1, 0xf3, 0x76,
- 0x5d, 0x12, 0x49, 0xe0, 0x01, 0xc3, 0x48, 0xce, 0xa1, 0x35, 0x3c, 0xb3, 0x07, 0x3e, 0xb9, 0xc1,
- 0x76, 0x83, 0x49, 0x80, 0x41, 0xec, 0x18, 0xc5, 0xdb, 0xb0, 0x1e, 0x13, 0xb0, 0x5a, 0xdb, 0x4d,
- 0xa6, 0x69, 0x46, 0x34, 0x32, 0xa6, 0xdf, 0x80, 0xba, 0x3d, 0x1b, 0x0d, 0xdc, 0xf1, 0x60, 0x64,
- 0x85, 0x56, 0x7b, 0x9d, 0x69, 0x6a, 0x08, 0x3a, 0x1c, 0xef, 0x22, 0x40, 0x6c, 0xc1, 0x8a, 0xed,
- 0xfb, 0xae, 0xdf, 0xde, 0x60, 0x8c, 0xfc, 0x10, 0x37, 0x41, 0x49, 0x33, 0x40, 0xa3, 0xf3, 0x9f,
- 0xb7, 0x5b, 0x8c, 0xac, 0x4b, 0xd8, 0x57, 0x04, 0x92, 0xaa, 0x40, 0x41, 0x14, 0xc5, 0xa6, 0x14,
- 0x90, 0x41, 0x4c, 0x60, 0x7c, 0x0b, 0x15, 0xd3, 0xfb, 0xce, 0x11, 0xef, 0x40, 0x65, 0x88, 0x96,
- 0xa6, 0x82, 0xa2, 0xee, 0x03, 0x94, 0x0d, 0x9a, 0x8c, 0x17, 0xef, 0xc1, 0x4a, 0x40, 0x96, 0xc4,
- 0x56, 0x52, 0xbf, 0x7b, 0x29, 0x4d, 0xc8, 0x46, 0x66, 0x4a, 0x0a, 0xe3, 0x16, 0xac, 0x63, 0x7a,
- 0x47, 0xdc, 0xa3, 0x55, 0x91, 0x64, 0x12, 0x25, 0x3d, 0x93, 0xc0, 0x50, 0xbd, 0x11, 0x53, 0xaa,
- 0x19, 0xb9, 0x05, 0x6b, 0x38, 0x8e, 0xa7, 0x85, 0x69, 0x20, 0x13, 0x46, 0x68, 0xe3, 0xf7, 0x79,
- 0x41, 0xea, 0xdd, 0xbc, 0x9c, 0xff, 0x40, 0xd3, 0x9f, 0x38, 0x63, 0x9b, 0x4d, 0xbf, 0x2c, 0x4d,
- 0x3f, 0xfa, 0x36, 0x36, 0x39, 0xfd, 0xd2, 0x05, 0x33, 0xba, 0xd1, 0x5a, 0x7d, 0xe5, 0x1e, 0x93,
- 0x04, 0x28, 0xc5, 0xf8, 0x83, 0xc8, 0xbb, 0x5f, 0x88, 0x31, 0x31, 0xd1, 0xc9, 0x15, 0x93, 0x3b,
- 0xb1, 0xe3, 0xbf, 0x18, 0x17, 0xcc, 0x9d, 0x52, 0xf4, 0x8a, 0xcd, 0xfb, 0xd0, 0x62, 0xfb, 0xbd,
- 0x18, 0x13, 0x74, 0x5f, 0x1a, 0x75, 0x92, 0x27, 0xc5, 0xf9, 0xc1, 0xc5, 0xd8, 0x60, 0x9e, 0x94,
- 0x69, 0xa1, 0x58, 0x6d, 0x40, 0x13, 0xcd, 0xe3, 0xb1, 0x3f, 0x8e, 0xc2, 0xdb, 0xc7, 0x6c, 0x59,
- 0x0c, 0x50, 0xe6, 0x72, 0x13, 0x2a, 0x18, 0x88, 0x22, 0x5b, 0x69, 0x26, 0xb6, 0x42, 0x44, 0x8c,
- 0x42, 0x81, 0x28, 0xcc, 0x24, 0x5c, 0x70, 0x6d, 0x94, 0x11, 0xa1, 0x2c, 0x3e, 0xd3, 0x84, 0x30,
- 0xca, 0xd5, 0x6b, 0xdd, 0x60, 0xc7, 0xca, 0xd5, 0xbf, 0x0c, 0x9b, 0xd8, 0xbb, 0xeb, 0x9c, 0xba,
- 0xb0, 0x85, 0x43, 0xd8, 0x45, 0x87, 0x36, 0xb3, 0x47, 0xc7, 0x76, 0x1c, 0x8f, 0xdf, 0x53, 0xd1,
- 0x4c, 0xc6, 0xe2, 0xed, 0x84, 0x9d, 0x22, 0xa5, 0x04, 0x42, 0x85, 0xae, 0x2e, 0x6c, 0x67, 0x58,
- 0xc4, 0x6b, 0xa7, 0x82, 0x53, 0x18, 0x4d, 0xc6, 0x56, 0x8e, 0x07, 0xd1, 0x32, 0x85, 0xf1, 0x73,
- 0xd8, 0xc2, 0x11, 0xe6, 0xa5, 0x78, 0x07, 0xca, 0xe4, 0xcf, 0xe4, 0x98, 0x8a, 0x19, 0x10, 0x01,
- 0xa9, 0x2c, 0xd3, 0x5e, 0x0d, 0xef, 0x18, 0xd3, 0x25, 0x1e, 0xf3, 0x2b, 0xf3, 0x16, 0x2d, 0x28,
- 0x5b, 0x93, 0x09, 0x2f, 0x9c, 0xaa, 0x49, 0x3f, 0x29, 0x41, 0xcc, 0x33, 0x55, 0x1d, 0xde, 0x87,
- 0xb6, 0x69, 0x7b, 0x13, 0x6b, 0xf8, 0xea, 0x3d, 0x52, 0x4a, 0x5b, 0xc0, 0x43, 0x75, 0xb0, 0xcd,
- 0x9b, 0x55, 0x76, 0x70, 0xb4, 0xe7, 0x8c, 0x4c, 0xf1, 0x4b, 0xd6, 0xa3, 0x06, 0x56, 0x3a, 0xf8,
- 0x18, 0x20, 0x88, 0x80, 0x91, 0x26, 0x34, 0x67, 0x99, 0x34, 0xd0, 0xc8, 0x8c, 0x47, 0xbc, 0x93,
- 0xc9, 0xf6, 0x21, 0x3e, 0x82, 0x5a, 0x4c, 0xa4, 0x46, 0x51, 0xc8, 0x2a, 0xa1, 0x32, 0x2e, 0xb3,
- 0x62, 0x73, 0x62, 0x19, 0x7f, 0x14, 0xed, 0x6b, 0x5e, 0x43, 0x27, 0x05, 0x1a, 0xba, 0x1a, 0xa9,
- 0x3d, 0xdf, 0xf3, 0x1e, 0x5c, 0x51, 0x93, 0xfb, 0x3a, 0xc6, 0xd7, 0x89, 0xd5, 0x9d, 0xef, 0x49,
- 0x40, 0x0b, 0x55, 0xa2, 0xb2, 0x3c, 0xa5, 0x26, 0xf4, 0xda, 0x1a, 0x4c, 0xe9, 0xe8, 0x7d, 0xa8,
- 0x7a, 0x04, 0x71, 0xec, 0x48, 0x43, 0x2d, 0x2d, 0x6f, 0x95, 0xb4, 0x31, 0x85, 0xf1, 0x0c, 0x5a,
- 0xb4, 0x15, 0xd7, 0xd9, 0xe2, 0x4a, 0x5b, 0x65, 0xfc, 0x73, 0x25, 0x76, 0xbe, 0xbd, 0xc2, 0x8b,
- 0x9f, 0xc2, 0x55, 0xcc, 0x5e, 0x6c, 0x7f, 0x60, 0x3f, 0x73, 0x82, 0x10, 0x73, 0xcd, 0x81, 0x66,
- 0x1e, 0x72, 0x06, 0xaf, 0x30, 0x41, 0x4f, 0xe1, 0x8f, 0x13, 0xb3, 0x40, 0x07, 0xa2, 0xf5, 0xac,
- 0x46, 0xf9, 0xeb, 0x12, 0xba, 0x6e, 0xb9, 0x8d, 0x7e, 0x45, 0x91, 0x3e, 0x84, 0x4b, 0x1e, 0x65,
- 0x02, 0x18, 0x46, 0xf3, 0xc2, 0x88, 0x08, 0x95, 0xc8, 0x11, 0xe9, 0xbb, 0x9c, 0xe8, 0x1b, 0xcd,
- 0x2c, 0x2d, 0x83, 0x12, 0xee, 0xef, 0x4b, 0xb4, 0x4b, 0x66, 0xfd, 0xfc, 0x1f, 0x4c, 0xd8, 0xa2,
- 0x91, 0x95, 0x17, 0x8d, 0x4c, 0x6e, 0xd1, 0x53, 0xe2, 0xaa, 0x81, 0x7c, 0x03, 0x9d, 0xd8, 0x6e,
- 0xba, 0x41, 0xe0, 0x9c, 0xce, 0x74, 0xc3, 0xfd, 0x29, 0x80, 0x15, 0x03, 0xd5, 0x88, 0x3a, 0xd9,
- 0x11, 0x69, 0xcd, 0x34, 0x6a, 0x4c, 0xbc, 0xae, 0x15, 0x72, 0x56, 0xb6, 0xf9, 0xdf, 0x61, 0x8d,
- 0x42, 0xc7, 0xf6, 0xf2, 0x7a, 0x85, 0xbe, 0x0e, 0xd7, 0x0a, 0x39, 0xab, 0xd9, 0x9a, 0xc2, 0x75,
- 0xdd, 0x1c, 0x5e, 0x6b, 0xdf, 0x05, 0xde, 0xe6, 0x2d, 0xb8, 0xb1, 0xa8, 0x3b, 0x25, 0xd0, 0x1f,
- 0xc2, 0x8d, 0x94, 0x5e, 0x5f, 0xef, 0x6c, 0xdc, 0x84, 0x37, 0x17, 0x72, 0x4f, 0xf9, 0xa2, 0x63,
- 0x4e, 0x55, 0x23, 0x5f, 0xf4, 0x05, 0xfb, 0xa2, 0x08, 0x16, 0xc7, 0xec, 0xd5, 0xd3, 0x89, 0xfb,
- 0x04, 0x37, 0x34, 0xb9, 0x85, 0xf1, 0x90, 0xe1, 0xa6, 0xc2, 0x63, 0xcc, 0x16, 0x68, 0xb9, 0x7e,
- 0x9a, 0xe9, 0x4b, 0xb4, 0xc7, 0x40, 0x96, 0x6a, 0x9f, 0xd4, 0x11, 0x8e, 0x43, 0xd7, 0x4b, 0x8b,
- 0xba, 0x45, 0x7d, 0x25, 0x40, 0x45, 0xfa, 0x9b, 0x32, 0xee, 0x8b, 0x55, 0x75, 0x6f, 0x36, 0xf1,
- 0x9d, 0xa8, 0x14, 0x49, 0xbf, 0x29, 0xc7, 0xc7, 0xcd, 0x7e, 0xe8, 0xd3, 0x22, 0x2d, 0x23, 0x54,
- 0x7d, 0xb1, 0xfa, 0x4e, 0xa3, 0x0c, 0x9b, 0x7e, 0x52, 0xeb, 0x27, 0xd8, 0x09, 0x6f, 0x20, 0xab,
- 0x26, 0xff, 0xa6, 0xfd, 0x8a, 0x13, 0x0c, 0xbe, 0x77, 0xc2, 0xb3, 0x91, 0x6f, 0x7d, 0xcf, 0x5b,
- 0xc7, 0xaa, 0x09, 0x4e, 0xf0, 0x7b, 0x0a, 0x82, 0x3b, 0x25, 0x78, 0x6a, 0x4d, 0x1c, 0xdc, 0x26,
- 0x51, 0xf5, 0x6b, 0x95, 0x2b, 0x2b, 0x1a, 0x44, 0x60, 0xda, 0x39, 0x73, 0x07, 0xce, 0xd4, 0x23,
- 0xaf, 0x1d, 0x26, 0x9c, 0xd6, 0xe4, 0xda, 0x9f, 0xb9, 0x7d, 0x85, 0x8a, 0x39, 0x26, 0x9b, 0x92,
- 0x6a, 0xaa, 0xbc, 0x79, 0x1d, 0x23, 0x38, 0xd7, 0x3c, 0x06, 0x56, 0x30, 0xe3, 0x7d, 0x64, 0x13,
- 0x23, 0x10, 0x43, 0xba, 0xc1, 0x8c, 0x2a, 0x3c, 0x0a, 0xed, 0x8c, 0x78, 0x03, 0x59, 0x33, 0xab,
- 0x12, 0xd0, 0x1f, 0xa9, 0x0a, 0x4f, 0x68, 0xfb, 0xf6, 0x88, 0xf7, 0x8d, 0x55, 0x33, 0xfe, 0xa6,
- 0xbd, 0x1c, 0xfa, 0xa4, 0x89, 0xcd, 0xbb, 0xc5, 0xaa, 0x29, 0x3f, 0x50, 0x7f, 0x2d, 0x1c, 0xf8,
- 0xd8, 0x77, 0xa7, 0xe8, 0xf0, 0x90, 0x70, 0x86, 0x9a, 0x6c, 0x32, 0xc1, 0xba, 0x13, 0x3c, 0x40,
- 0x70, 0x4f, 0x41, 0x69, 0x8a, 0x66, 0xaa, 0x04, 0x85, 0xbb, 0x57, 0xde, 0x2b, 0xe2, 0x8e, 0x3f,
- 0x02, 0xf5, 0x3d, 0x23, 0x84, 0xfa, 0xae, 0x4d, 0x2e, 0x51, 0xce, 0x08, 0x29, 0x84, 0x37, 0xce,
- 0x2a, 0xdf, 0x56, 0x5f, 0x49, 0xc9, 0x66, 0xf9, 0x9c, 0x92, 0x8d, 0x78, 0x17, 0x36, 0x26, 0xee,
- 0xec, 0x14, 0xfd, 0xb0, 0x6c, 0x66, 0x47, 0x6e, 0x74, 0x5d, 0x82, 0x8f, 0x14, 0xd4, 0xf8, 0x87,
- 0x12, 0xac, 0x9c, 0xd0, 0x46, 0x82, 0xb6, 0x92, 0x5a, 0x0a, 0x5b, 0x54, 0x4e, 0x62, 0x7c, 0x5c,
- 0x6c, 0x5f, 0x4e, 0x8a, 0xed, 0x0b, 0x6b, 0xcd, 0xbf, 0x03, 0x8d, 0x51, 0x32, 0xa6, 0x00, 0x6d,
- 0x86, 0x64, 0x4e, 0xa5, 0xc7, 0x31, 0xd6, 0x4c, 0x91, 0x72, 0x2d, 0xc1, 0x0d, 0xc2, 0x81, 0x8a,
- 0x3b, 0xca, 0xa4, 0x08, 0x24, 0x57, 0xad, 0x71, 0x8f, 0xb7, 0x17, 0xa6, 0xf3, 0x24, 0x5a, 0x4b,
- 0x6f, 0xc3, 0x4a, 0x48, 0x23, 0x51, 0x4b, 0x69, 0x23, 0xe9, 0x85, 0x07, 0x68, 0x4a, 0xac, 0xf1,
- 0x99, 0xdc, 0xdf, 0x52, 0x3b, 0xb5, 0x88, 0x2f, 0xd8, 0x70, 0x02, 0xe2, 0xb1, 0xb4, 0x58, 0x5b,
- 0xeb, 0xf5, 0xa2, 0xd3, 0xb6, 0xe8, 0xec, 0x22, 0xd1, 0x73, 0x59, 0xd7, 0x33, 0xad, 0xf7, 0x54,
- 0x6f, 0x6a, 0x11, 0xff, 0x13, 0x2d, 0x62, 0xdb, 0xf6, 0xd9, 0x56, 0x89, 0x43, 0x94, 0x05, 0x35,
- 0xcd, 0xf8, 0x5b, 0xfc, 0x04, 0x1a, 0x96, 0xe7, 0x4d, 0x9e, 0x47, 0x93, 0x27, 0x37, 0xfd, 0xda,
- 0xb4, 0x77, 0x09, 0xab, 0x62, 0x66, 0xdd, 0x4a, 0x3e, 0xe2, 0x7a, 0x42, 0x39, 0x5b, 0x4f, 0xa0,
- 0x3e, 0xb5, 0x7a, 0xc2, 0xe7, 0xd0, 0xb4, 0x11, 0x33, 0x98, 0xce, 0x27, 0xa1, 0x73, 0xe6, 0x7a,
- 0xea, 0x34, 0xe1, 0x72, 0xd2, 0xa0, 0x87, 0x7f, 0xf7, 0x15, 0xd6, 0x6c, 0xd8, 0xda, 0x97, 0xe8,
- 0xc2, 0x86, 0xef, 0xce, 0x43, 0xaa, 0xae, 0x8c, 0x27, 0xf6, 0x30, 0x74, 0x7d, 0x56, 0x6f, 0xfd,
- 0x6e, 0x5b, 0x9b, 0x3d, 0x22, 0x30, 0x23, 0xbc, 0xb9, 0xee, 0xa7, 0xbe, 0xd1, 0xbe, 0x2b, 0xce,
- 0x6c, 0xec, 0xb2, 0x27, 0x49, 0xa5, 0x9d, 0x24, 0xa7, 0x2c, 0x67, 0x30, 0x01, 0x39, 0x58, 0x2a,
- 0x09, 0xa0, 0x5f, 0x5b, 0xcb, 0x3a, 0xd8, 0x13, 0x86, 0x9b, 0x0a, 0x4f, 0xe9, 0x6c, 0xe8, 0x5b,
- 0xb3, 0x80, 0xf7, 0xfd, 0xd5, 0x2c, 0xdf, 0x93, 0x08, 0x65, 0x26, 0x54, 0x34, 0xcf, 0x72, 0x20,
- 0xb2, 0xa8, 0xc1, 0xde, 0x26, 0x35, 0xcf, 0x3c, 0x0a, 0xe5, 0x86, 0xeb, 0x7e, 0xf2, 0x61, 0xfc,
- 0x4b, 0x09, 0xea, 0x9a, 0x12, 0xc4, 0x67, 0x50, 0x73, 0x66, 0x83, 0x54, 0x8e, 0x75, 0x5e, 0x38,
- 0xab, 0x3a, 0x33, 0xd5, 0xf0, 0x77, 0x51, 0x11, 0xcf, 0x48, 0x98, 0xb4, 0xae, 0xcf, 0x6b, 0xdc,
- 0x90, 0x0d, 0x12, 0x06, 0xe8, 0x76, 0x35, 0x06, 0xe5, 0x17, 0x33, 0x90, 0x0d, 0xd4, 0x3a, 0xfc,
- 0x73, 0xa8, 0x4b, 0x6f, 0xb2, 0xe7, 0x4c, 0x9d, 0x85, 0xc5, 0x22, 0xaa, 0x7a, 0x4d, 0xad, 0x67,
- 0x89, 0x3b, 0x92, 0xab, 0xa0, 0x8e, 0xb0, 0xc8, 0x17, 0x89, 0x4f, 0xe0, 0x72, 0xa0, 0x4e, 0x12,
- 0x06, 0xe1, 0x19, 0xa6, 0x7b, 0x67, 0xee, 0x64, 0x34, 0xf0, 0x86, 0xa1, 0xf2, 0x2a, 0x5b, 0x11,
- 0xf6, 0x24, 0x42, 0x1e, 0x0d, 0x43, 0xe3, 0x3f, 0xca, 0x50, 0x8d, 0xac, 0x93, 0xca, 0x7f, 0xd6,
- 0x3c, 0x3c, 0x1b, 0x78, 0x18, 0xef, 0xbf, 0x77, 0xfd, 0x91, 0x72, 0x9e, 0x0d, 0x02, 0x1e, 0x29,
- 0x98, 0x78, 0x0b, 0xea, 0xe8, 0x6a, 0x86, 0xbe, 0xe3, 0xc5, 0x67, 0x31, 0x35, 0x53, 0x07, 0x89,
- 0xab, 0x50, 0x9d, 0xb8, 0x43, 0x6b, 0x82, 0x31, 0x44, 0xf5, 0xbd, 0xc6, 0xdf, 0xdd, 0x00, 0x77,
- 0xfa, 0xad, 0xd8, 0x8f, 0x47, 0x15, 0x91, 0x0a, 0x73, 0xd8, 0x88, 0xe0, 0x5d, 0x55, 0x44, 0xba,
- 0x02, 0x6b, 0x74, 0x2a, 0x45, 0x4c, 0x64, 0x31, 0x75, 0x95, 0x3e, 0x91, 0x07, 0xc6, 0x28, 0x46,
- 0x9c, 0xa2, 0x49, 0x78, 0x6c, 0xc3, 0x35, 0xb3, 0x46, 0x90, 0x87, 0x04, 0xa0, 0x18, 0xc5, 0x68,
- 0xf6, 0x2b, 0xb2, 0x88, 0x5a, 0x25, 0x00, 0x9f, 0x42, 0xdc, 0x86, 0x4d, 0x2a, 0x13, 0x63, 0x8a,
- 0xec, 0xf9, 0xce, 0x53, 0x34, 0x74, 0x62, 0x2f, 0x43, 0xe0, 0x86, 0x44, 0x1c, 0x49, 0x38, 0xf6,
- 0xf3, 0x3e, 0x08, 0x69, 0x9f, 0xe3, 0x89, 0xe5, 0x0d, 0x46, 0xd6, 0xd4, 0xc3, 0x84, 0x9b, 0xad,
- 0xb4, 0x6a, 0xb6, 0x18, 0xf3, 0x00, 0x11, 0xbb, 0x12, 0x4e, 0x45, 0xcf, 0x80, 0xca, 0x99, 0x43,
- 0x77, 0x3a, 0x9d, 0xcf, 0x9c, 0xf0, 0x39, 0xc7, 0xc7, 0xa6, 0xd9, 0x24, 0xe8, 0x4e, 0x04, 0x24,
- 0xe1, 0x55, 0xe9, 0x7a, 0x68, 0x79, 0x18, 0x26, 0x29, 0x5b, 0xa8, 0x49, 0xc8, 0x8e, 0xc5, 0xc2,
- 0xcb, 0xa9, 0x23, 0x6c, 0x83, 0xb1, 0x72, 0x2e, 0x09, 0xb9, 0x0e, 0xcb, 0x18, 0x76, 0x9b, 0x3c,
- 0x60, 0xfc, 0x85, 0x69, 0x5c, 0x53, 0x15, 0x8c, 0x27, 0x64, 0x3c, 0x01, 0x86, 0xc5, 0x4c, 0x80,
- 0xd0, 0x4c, 0xcb, 0x6c, 0x78, 0xc9, 0x47, 0x80, 0x5b, 0xf8, 0x86, 0xee, 0x63, 0xa8, 0x42, 0x65,
- 0x73, 0x65, 0x4d, 0x2a, 0xbd, 0x6a, 0x46, 0x9f, 0x6c, 0x7a, 0x8a, 0x6a, 0x10, 0x86, 0x93, 0xd8,
- 0xf4, 0x14, 0xec, 0x24, 0x9c, 0x18, 0x7f, 0x59, 0x82, 0xf5, 0xb4, 0xcb, 0x21, 0x6b, 0xcc, 0x78,
- 0xa9, 0xc1, 0x10, 0xbd, 0xab, 0x4a, 0x37, 0xab, 0xe6, 0x56, 0xda, 0x25, 0xed, 0x30, 0x0e, 0x1d,
- 0x63, 0x27, 0xdf, 0x6a, 0x1e, 0x60, 0x12, 0x90, 0x1c, 0xbe, 0x5c, 0xc9, 0xb6, 0x64, 0x7c, 0x7f,
- 0x64, 0xfc, 0xdb, 0x0a, 0xd4, 0x62, 0x07, 0xf6, 0xbf, 0x60, 0xcb, 0x77, 0xa0, 0x3a, 0x45, 0x43,
- 0xc5, 0xac, 0x2e, 0x50, 0x0e, 0x5c, 0xf3, 0xf8, 0xfb, 0x0a, 0x63, 0xc6, 0x34, 0x85, 0xb6, 0xbf,
- 0xf2, 0x42, 0xdb, 0x5f, 0x3d, 0xc7, 0xf6, 0xd7, 0xce, 0xb5, 0xfd, 0x6a, 0xc6, 0xf6, 0xd1, 0x99,
- 0x63, 0xd0, 0xc5, 0xb0, 0xab, 0x3c, 0xad, 0xe6, 0xcc, 0xbf, 0x62, 0xb8, 0xa9, 0xf0, 0xc5, 0xab,
- 0x04, 0x5e, 0x66, 0x95, 0xd4, 0x2f, 0xbc, 0x4a, 0x1a, 0x45, 0xab, 0x84, 0xcf, 0x21, 0xd0, 0x65,
- 0xba, 0x33, 0xb9, 0x95, 0x65, 0xa3, 0x6f, 0xd2, 0x39, 0x04, 0x03, 0xa5, 0x86, 0x3f, 0x45, 0x87,
- 0x37, 0xf7, 0xc8, 0x97, 0xda, 0x23, 0x5a, 0x2f, 0xd6, 0x13, 0x8c, 0xdf, 0x21, 0x45, 0x74, 0x5a,
- 0x07, 0x35, 0x73, 0x3b, 0xc6, 0xee, 0x68, 0x48, 0x9a, 0x23, 0x8a, 0xbd, 0x92, 0xef, 0x86, 0xcc,
- 0x61, 0x11, 0x20, 0x79, 0x62, 0xde, 0x64, 0x8d, 0xa6, 0x4e, 0xd4, 0x6d, 0x4b, 0xe6, 0x99, 0x0c,
- 0x92, 0x04, 0x1d, 0x3a, 0x3a, 0x94, 0x27, 0x26, 0x7c, 0xb0, 0xd0, 0x34, 0xe3, 0x6f, 0xc2, 0x59,
- 0xc3, 0xa1, 0xed, 0x61, 0x8f, 0x6d, 0x21, 0x71, 0xd1, 0x37, 0xa5, 0xf0, 0xd6, 0x08, 0x63, 0x57,
- 0xe8, 0x04, 0x88, 0xbd, 0x24, 0xcf, 0x76, 0x12, 0x88, 0xb8, 0x04, 0x2b, 0x38, 0x57, 0x83, 0x5f,
- 0xb5, 0xb7, 0x64, 0xcd, 0x1c, 0x3f, 0xbe, 0xa2, 0xac, 0x79, 0x3c, 0x71, 0xbd, 0xa0, 0xbd, 0xcd,
- 0x40, 0xf9, 0x61, 0xfc, 0x09, 0x54, 0x23, 0xeb, 0x12, 0x1f, 0x68, 0xe2, 0xc8, 0xc0, 0xb7, 0x99,
- 0xb3, 0x41, 0x4d, 0xc2, 0xb7, 0xa9, 0x48, 0x3a, 0x0b, 0x55, 0x98, 0x2b, 0x20, 0x65, 0xb4, 0xf1,
- 0xcf, 0x25, 0x58, 0x53, 0x10, 0x61, 0x40, 0xe3, 0xe0, 0xf0, 0xa4, 0xff, 0xa0, 0xbf, 0xd3, 0x3d,
- 0xe9, 0x1f, 0x1e, 0x70, 0x2f, 0x15, 0xb3, 0x31, 0xd3, 0x60, 0x14, 0xb5, 0xbe, 0x3e, 0xda, 0xed,
- 0x9e, 0xf4, 0x98, 0x71, 0xc5, 0x5c, 0x9d, 0xf3, 0x17, 0x25, 0xbb, 0x87, 0x47, 0xbd, 0x03, 0x75,
- 0xa6, 0x5b, 0x71, 0xf1, 0xb7, 0x78, 0x03, 0x6a, 0x5f, 0xf6, 0x7a, 0x47, 0xdd, 0xbd, 0xfe, 0xe3,
- 0x1e, 0x2f, 0x9b, 0x8a, 0x59, 0xfb, 0x2e, 0x02, 0x90, 0x1b, 0x32, 0x7b, 0x0f, 0xcc, 0xde, 0xf1,
- 0x23, 0x5e, 0x1a, 0x15, 0x73, 0xcd, 0x97, 0x9f, 0xd4, 0x6e, 0xb7, 0x7f, 0xbc, 0xd3, 0x35, 0x77,
- 0x7b, 0xbb, 0xbc, 0x28, 0xb0, 0xdd, 0x28, 0x02, 0xd0, 0x4c, 0x9d, 0x1c, 0x9e, 0x74, 0xf7, 0x78,
- 0x49, 0x54, 0x30, 0xe7, 0xa4, 0x0f, 0x4c, 0x72, 0x57, 0xa5, 0x65, 0x13, 0xde, 0x99, 0x79, 0xf3,
- 0x50, 0x85, 0x55, 0xf9, 0x41, 0x72, 0xe3, 0x3c, 0x13, 0x58, 0x65, 0x95, 0xf2, 0xcb, 0xb0, 0x61,
- 0x55, 0xa6, 0x37, 0xb8, 0xc6, 0x57, 0x29, 0x63, 0x73, 0x4e, 0xd5, 0xec, 0x5e, 0xce, 0x26, 0x40,
- 0x3b, 0x8c, 0x35, 0x15, 0x95, 0xf8, 0x51, 0xfa, 0xa4, 0x68, 0x3b, 0x4b, 0x9e, 0x3a, 0x2b, 0xc2,
- 0x69, 0x6e, 0xe8, 0x5c, 0xc8, 0xec, 0x91, 0xcf, 0x0c, 0xfd, 0x1a, 0x3a, 0xc0, 0xd0, 0x7f, 0x1e,
- 0x4d, 0xb6, 0x02, 0x9a, 0x04, 0x23, 0xfb, 0xe5, 0xc8, 0x1e, 0x1f, 0x5b, 0x56, 0xcc, 0x2a, 0x01,
- 0x88, 0x13, 0xda, 0x83, 0xf8, 0xce, 0xb6, 0x3d, 0x4c, 0x7d, 0x71, 0xf1, 0x66, 0xce, 0xd4, 0x37,
- 0x63, 0x4c, 0x5f, 0x21, 0xc4, 0x2e, 0xdc, 0x40, 0xcb, 0x76, 0xa6, 0xf3, 0xe9, 0x20, 0xb6, 0x45,
- 0x4a, 0x52, 0x92, 0xa6, 0x52, 0x43, 0x6f, 0x28, 0xaa, 0xae, 0x4e, 0x14, 0x71, 0x31, 0x7e, 0xbb,
- 0x0c, 0x75, 0x6d, 0x78, 0xff, 0x4f, 0x87, 0xc1, 0xbb, 0x68, 0xfb, 0xd4, 0x0d, 0x1d, 0x8b, 0x1c,
- 0x4a, 0x22, 0x9c, 0x34, 0x44, 0x91, 0xe0, 0x1e, 0x45, 0x62, 0x26, 0x07, 0xcb, 0xab, 0xca, 0xee,
- 0xf3, 0x07, 0xcb, 0xd2, 0x20, 0xe3, 0x6f, 0xe3, 0x3f, 0x4b, 0x50, 0x8b, 0xd3, 0x61, 0x9a, 0x2a,
- 0x15, 0x5e, 0x52, 0xc7, 0x43, 0x0d, 0x19, 0x63, 0x54, 0x34, 0x40, 0xa7, 0x2f, 0x89, 0xb4, 0x43,
- 0x35, 0x99, 0x26, 0x1c, 0x29, 0x1e, 0xd3, 0x70, 0x3e, 0x18, 0x39, 0xc1, 0x10, 0x3d, 0xb3, 0xff,
- 0x5c, 0xed, 0x55, 0x1b, 0x08, 0xdc, 0x8d, 0x60, 0x14, 0xc5, 0x29, 0x12, 0xd2, 0x7c, 0x4e, 0xdd,
- 0x91, 0xad, 0xea, 0x0f, 0x75, 0x05, 0xdb, 0x47, 0x10, 0xf9, 0x66, 0x95, 0x9a, 0xa4, 0xa3, 0x53,
- 0x53, 0x42, 0xbb, 0xc5, 0x87, 0xef, 0xab, 0xd1, 0x41, 0x77, 0x74, 0xf8, 0x4e, 0xc1, 0x2b, 0x1c,
- 0xe2, 0xe6, 0x26, 0x08, 0x54, 0xfa, 0xb5, 0x8a, 0x9f, 0xfb, 0x41, 0x60, 0x7c, 0x01, 0x75, 0x2d,
- 0xa5, 0xc7, 0xb5, 0x75, 0x49, 0xcf, 0xff, 0xd3, 0xf9, 0xc1, 0xa6, 0x96, 0xef, 0xcb, 0xe4, 0xc0,
- 0x98, 0xc3, 0xaa, 0xcc, 0x67, 0xc8, 0x76, 0x1c, 0x6f, 0x90, 0xda, 0xe0, 0x57, 0x1d, 0x4f, 0x21,
- 0xdf, 0x81, 0x8d, 0xa9, 0x15, 0x7c, 0x37, 0x98, 0xd8, 0xb3, 0x53, 0x8c, 0xff, 0xa8, 0x72, 0x35,
- 0x65, 0x4d, 0x02, 0xef, 0x31, 0x74, 0xdf, 0x99, 0xe5, 0xe8, 0xac, 0x67, 0x2a, 0xc0, 0xeb, 0x74,
- 0xd6, 0x33, 0xe3, 0x6f, 0x4b, 0x00, 0xc9, 0xd1, 0xc8, 0x4b, 0x9c, 0x55, 0x15, 0xee, 0xf5, 0x11,
- 0x36, 0x71, 0x82, 0x90, 0xaf, 0x8c, 0x20, 0x8c, 0x7e, 0x73, 0x49, 0x3e, 0x4a, 0xec, 0x2b, 0xb9,
- 0x92, 0x3c, 0x63, 0xcc, 0x98, 0xc2, 0x78, 0x88, 0xee, 0xdf, 0x0a, 0x87, 0x67, 0x24, 0xcc, 0xbb,
- 0x29, 0x61, 0xb4, 0x0d, 0x17, 0x53, 0x9c, 0x2f, 0x8a, 0xf1, 0x18, 0x1a, 0xdd, 0x80, 0xca, 0x1e,
- 0x72, 0xac, 0xa8, 0x0f, 0x9d, 0x99, 0xb6, 0x85, 0xd1, 0xa9, 0x34, 0x9e, 0x68, 0xfd, 0x72, 0xee,
- 0x22, 0xef, 0x29, 0xbf, 0x8c, 0x5f, 0x97, 0x01, 0xd0, 0xa1, 0x8d, 0x1c, 0x59, 0x8a, 0xf8, 0x08,
- 0xd4, 0x1d, 0x86, 0x41, 0x72, 0x1e, 0x25, 0x32, 0x92, 0xd2, 0x99, 0x53, 0x4d, 0x52, 0xd1, 0xb0,
- 0x3e, 0x85, 0x46, 0x9c, 0x29, 0x51, 0xa3, 0xe5, 0x85, 0x8d, 0xe2, 0xaa, 0x10, 0x35, 0xfb, 0x19,
- 0xac, 0x5b, 0xc1, 0x80, 0x4a, 0x38, 0x4a, 0xa9, 0x6a, 0x37, 0x76, 0xb9, 0x78, 0x28, 0x98, 0x0b,
- 0xea, 0xc3, 0xbf, 0x8b, 0xa1, 0x5f, 0xb5, 0xa6, 0x3e, 0x2b, 0x8b, 0x05, 0x95, 0xcd, 0xa8, 0xc7,
- 0xcf, 0xc8, 0xd3, 0xa9, 0xa4, 0x85, 0x5b, 0xad, 0x2c, 0x6c, 0xd5, 0x88, 0x09, 0xa9, 0xe1, 0xcf,
- 0x61, 0xd3, 0x7e, 0x16, 0x0e, 0xd2, 0x8d, 0x57, 0x17, 0x36, 0xde, 0x40, 0xe2, 0x1d, 0xbd, 0x3d,
- 0x2d, 0x42, 0xef, 0x3b, 0x87, 0x6e, 0x58, 0x60, 0x1e, 0xce, 0xeb, 0x6c, 0x05, 0x17, 0xa1, 0x3c,
- 0x40, 0x46, 0x88, 0x31, 0x86, 0x8d, 0xb8, 0x41, 0x57, 0xde, 0x6b, 0xfb, 0x28, 0xa5, 0xdf, 0xeb,
- 0x49, 0x37, 0x19, 0x42, 0x4d, 0xc5, 0x98, 0x1f, 0x47, 0x22, 0x3a, 0xb6, 0x2c, 0x9a, 0x61, 0x7e,
- 0xac, 0x81, 0x8c, 0x03, 0xa8, 0xed, 0xdb, 0x23, 0xd5, 0xc3, 0x8f, 0x52, 0x3d, 0x5c, 0xd1, 0xd3,
- 0x8b, 0x51, 0x8e, 0x37, 0x86, 0x64, 0xf4, 0xba, 0xf3, 0xe8, 0xea, 0x8d, 0xfc, 0x30, 0x06, 0xb0,
- 0x81, 0x3a, 0xf2, 0x6d, 0x0f, 0xf3, 0x41, 0xc5, 0x95, 0x8a, 0xa8, 0xc1, 0x4c, 0x45, 0x6e, 0xfa,
- 0x49, 0x96, 0x47, 0x14, 0x56, 0x1c, 0xb7, 0xe5, 0x17, 0xe6, 0x2a, 0xcd, 0x79, 0x60, 0xa3, 0xf2,
- 0xc7, 0x21, 0x7a, 0xb9, 0x20, 0x54, 0x9e, 0xb0, 0x8e, 0xc0, 0x3d, 0x84, 0xed, 0xbb, 0x5c, 0x88,
- 0x6e, 0x1e, 0xe0, 0x6c, 0xe2, 0xce, 0x45, 0xb1, 0x3f, 0xf7, 0x1a, 0x43, 0x60, 0x4f, 0xc6, 0xaa,
- 0xfa, 0xce, 0xbf, 0x8d, 0x77, 0x61, 0x63, 0x8f, 0x3d, 0x2f, 0x1a, 0xab, 0x62, 0x10, 0x0f, 0x44,
- 0xe5, 0x16, 0x72, 0x20, 0x7f, 0x5d, 0x86, 0x35, 0x49, 0x10, 0x24, 0x95, 0x0e, 0x4b, 0xde, 0x5f,
- 0xcc, 0xf9, 0x0e, 0x76, 0x8b, 0x92, 0x5a, 0x55, 0x3a, 0x14, 0xef, 0xcf, 0xa0, 0x96, 0xa4, 0xca,
- 0x72, 0x19, 0x5c, 0x5d, 0xa8, 0x38, 0x33, 0xa1, 0x45, 0x67, 0x5e, 0x9e, 0x62, 0x4e, 0x58, 0xce,
- 0x56, 0x62, 0x62, 0x4d, 0x98, 0x84, 0x47, 0xc9, 0x80, 0x8c, 0x5e, 0xce, 0xb7, 0xb2, 0xf9, 0xab,
- 0xa9, 0xe5, 0xa2, 0xab, 0x82, 0x4d, 0x5f, 0x02, 0xd0, 0x82, 0x9b, 0x29, 0x0b, 0x56, 0xa6, 0x7f,
- 0x8e, 0x74, 0x0d, 0xdd, 0x88, 0xd1, 0x1a, 0xd7, 0x66, 0x52, 0x0f, 0xca, 0xee, 0x35, 0x73, 0x49,
- 0x29, 0xc8, 0x8c, 0xe8, 0x48, 0x58, 0x15, 0x07, 0x71, 0xf2, 0x55, 0x45, 0x4a, 0xeb, 0x2f, 0xa3,
- 0x97, 0x28, 0x44, 0x22, 0x80, 0xce, 0x0d, 0x6b, 0xf1, 0xc9, 0x57, 0xec, 0x0c, 0x4b, 0x9a, 0x5f,
- 0xfe, 0x04, 0x60, 0x18, 0xfb, 0x2c, 0x35, 0xd3, 0x5b, 0xfa, 0x58, 0x22, 0x9c, 0xa9, 0xd1, 0xa1,
- 0xc1, 0xaf, 0x49, 0x95, 0x06, 0x6a, 0xa6, 0xb5, 0x94, 0x5a, 0x29, 0xdf, 0x8c, 0x28, 0x8c, 0xaf,
- 0x30, 0x7e, 0xc9, 0xaa, 0x51, 0x91, 0x00, 0xe9, 0xb3, 0xf3, 0xe5, 0x8b, 0x9d, 0x9d, 0xff, 0x6b,
- 0x09, 0x5a, 0xd9, 0x02, 0x13, 0xdd, 0x84, 0xd0, 0x56, 0xe1, 0x56, 0xb6, 0x14, 0xa5, 0x2d, 0x41,
- 0xfd, 0x1e, 0xe4, 0xf2, 0x05, 0xee, 0x41, 0x16, 0xdc, 0x14, 0x4f, 0x9d, 0x27, 0x57, 0x5e, 0x74,
- 0x9e, 0x2c, 0x3e, 0x84, 0xb5, 0x91, 0x3d, 0xb6, 0xc8, 0x67, 0xad, 0x9c, 0xb7, 0x08, 0x22, 0x2a,
- 0xe3, 0x6f, 0x4a, 0x50, 0x36, 0x5d, 0x8b, 0x6a, 0x1f, 0x56, 0xa0, 0x56, 0x18, 0xfe, 0xa2, 0xed,
- 0x80, 0x8c, 0x17, 0xe8, 0xe9, 0xa3, 0x94, 0x28, 0x06, 0x90, 0x83, 0xc0, 0x78, 0x4e, 0x28, 0x55,
- 0x51, 0x97, 0x5f, 0x5a, 0xb9, 0xb8, 0x92, 0x3a, 0x16, 0x88, 0x0a, 0xb7, 0x2b, 0xe7, 0x5f, 0x04,
- 0xc3, 0xd5, 0xcf, 0x55, 0x73, 0xd7, 0x7a, 0xd1, 0xe5, 0x2e, 0x79, 0x59, 0x87, 0x09, 0x93, 0xcb,
- 0x3a, 0xbe, 0x6b, 0x15, 0x5c, 0xd6, 0x21, 0x22, 0x46, 0x19, 0x43, 0x28, 0x3f, 0xf6, 0xc7, 0x85,
- 0xd6, 0x81, 0xc3, 0xf7, 0x65, 0x01, 0xa4, 0x61, 0xe2, 0x2f, 0xce, 0x80, 0x64, 0xdd, 0xd1, 0x97,
- 0xb9, 0x44, 0x03, 0x33, 0x20, 0x06, 0x98, 0x7c, 0x0f, 0x57, 0x55, 0x35, 0xfd, 0x90, 0x75, 0x82,
- 0x48, 0x09, 0x30, 0x43, 0xe3, 0xdf, 0x4b, 0xb0, 0x2a, 0x0f, 0xc7, 0x72, 0x73, 0x8a, 0xed, 0xd8,
- 0xf7, 0x68, 0xc5, 0x96, 0xaa, 0x04, 0xf4, 0x47, 0x14, 0x71, 0x28, 0x59, 0xb1, 0x67, 0x32, 0xed,
- 0x2b, 0xcb, 0x88, 0x23, 0x41, 0x9c, 0xf6, 0xbd, 0x07, 0x2d, 0x45, 0xa0, 0xfc, 0xa7, 0x32, 0x88,
- 0x9a, 0xb9, 0x21, 0xe1, 0xdd, 0x08, 0x9c, 0xaa, 0xbe, 0xaf, 0x64, 0xaa, 0xef, 0x3f, 0x84, 0xf5,
- 0xa9, 0x37, 0x09, 0x06, 0x13, 0xeb, 0x89, 0x3d, 0xe1, 0xec, 0x4d, 0x66, 0x98, 0x0d, 0x82, 0xee,
- 0x11, 0x90, 0x92, 0xb7, 0x0c, 0x15, 0xe6, 0x6e, 0x6b, 0x59, 0x2a, 0xeb, 0xd9, 0xed, 0x1d, 0xa8,
- 0x46, 0x56, 0x2c, 0x00, 0x87, 0xbd, 0x77, 0x78, 0xbf, 0xbb, 0xd7, 0x5a, 0x12, 0x35, 0x58, 0xd9,
- 0x3b, 0xdc, 0xc1, 0x9f, 0x25, 0x02, 0x77, 0x77, 0x7f, 0x39, 0xe8, 0x1f, 0xb4, 0x96, 0x45, 0x1d,
- 0x3d, 0x36, 0xfe, 0xa6, 0x4b, 0xdf, 0x65, 0xba, 0x0f, 0xfb, 0xd8, 0x7c, 0xd0, 0xaa, 0xdc, 0x1e,
- 0xd0, 0xc9, 0x52, 0x9c, 0xda, 0x51, 0x83, 0x23, 0xdc, 0xa2, 0xf6, 0xbf, 0x41, 0x3e, 0x0d, 0xa8,
- 0x1e, 0xf4, 0xfa, 0x0f, 0x1f, 0xdd, 0x3f, 0x34, 0x91, 0x15, 0xb6, 0x38, 0xe9, 0x3e, 0x54, 0x7c,
- 0x8e, 0x07, 0x47, 0xdd, 0x93, 0x47, 0xc8, 0xa7, 0x09, 0xb5, 0x9d, 0xc3, 0xfd, 0xfd, 0xaf, 0x0f,
- 0xfa, 0x27, 0xdf, 0xb6, 0x2a, 0x62, 0x13, 0x9a, 0xbd, 0x6f, 0x4e, 0x06, 0x09, 0x68, 0xe5, 0xf6,
- 0x7b, 0x18, 0x42, 0xa3, 0x74, 0x8d, 0x98, 0x74, 0x0f, 0xbe, 0x95, 0xb7, 0xcf, 0xbb, 0x7b, 0x4a,
- 0xc2, 0xfe, 0xc1, 0xe3, 0x9e, 0x79, 0xd2, 0x5a, 0xbe, 0x7d, 0x1b, 0x5a, 0xd9, 0x64, 0x8c, 0xae,
- 0xab, 0xf7, 0xbe, 0xc2, 0x06, 0xf8, 0xf7, 0x61, 0x0f, 0xe9, 0xf1, 0xef, 0x5e, 0x0f, 0x69, 0x3f,
- 0x54, 0xd9, 0xb6, 0x8a, 0x24, 0x55, 0xa8, 0x1c, 0x1c, 0x1e, 0xd0, 0x05, 0x5f, 0x1a, 0xf2, 0xce,
- 0x4e, 0xef, 0xe8, 0x44, 0x32, 0x37, 0x7b, 0xbf, 0xec, 0xed, 0x10, 0xf3, 0xaf, 0xe1, 0x52, 0x41,
- 0x26, 0x40, 0x12, 0xc7, 0xd2, 0x0e, 0xba, 0xbb, 0xbb, 0xc8, 0x61, 0x0b, 0x5a, 0x09, 0xc8, 0xec,
- 0xed, 0x1f, 0x3e, 0xa6, 0x8e, 0xb7, 0x61, 0x53, 0x87, 0x1e, 0xed, 0x75, 0x77, 0x48, 0x8e, 0x0f,
- 0xa0, 0x99, 0x0a, 0xff, 0x34, 0x3d, 0xfb, 0xbd, 0xdd, 0xc1, 0xfe, 0x21, 0xb1, 0xda, 0x80, 0x3a,
- 0x7d, 0x44, 0xe4, 0xa5, 0xdb, 0xef, 0x03, 0x24, 0x7e, 0x2a, 0xbe, 0x8b, 0x4f, 0x93, 0xb0, 0x7f,
- 0x74, 0x68, 0x2a, 0x99, 0x7b, 0xdf, 0xf0, 0xef, 0xe5, 0xbb, 0x7f, 0xf5, 0x26, 0x54, 0x1f, 0xd2,
- 0x4a, 0xea, 0x7a, 0x8e, 0xd8, 0x83, 0xba, 0x76, 0xc8, 0x2b, 0xde, 0x48, 0x79, 0xcf, 0xcc, 0xd9,
- 0x71, 0xe7, 0xfa, 0x02, 0xac, 0x3a, 0x29, 0x5a, 0x12, 0x7d, 0x80, 0xe4, 0x18, 0x58, 0x5c, 0xd3,
- 0xc9, 0x33, 0x27, 0xc6, 0x9d, 0x37, 0x8a, 0x91, 0x31, 0xab, 0x07, 0x50, 0x8b, 0x0f, 0xbf, 0x85,
- 0x96, 0x58, 0x67, 0x4f, 0xc9, 0x3b, 0xd7, 0x0a, 0x71, 0x31, 0x1f, 0x1c, 0xa0, 0xf6, 0xe8, 0x43,
- 0x1f, 0x60, 0xfe, 0x15, 0x89, 0x3e, 0xc0, 0xa2, 0x97, 0x22, 0x4b, 0xe2, 0x6b, 0x58, 0x4f, 0x3f,
- 0xf7, 0x10, 0x6f, 0xea, 0xbb, 0x99, 0x82, 0x57, 0x24, 0x9d, 0xb7, 0x16, 0x13, 0xe8, 0x42, 0x6a,
- 0x0f, 0x9c, 0x74, 0x21, 0xf3, 0xaf, 0xa1, 0x74, 0x21, 0x0b, 0x5e, 0x45, 0x21, 0x37, 0x13, 0x9a,
- 0xa9, 0xd7, 0x16, 0xe2, 0x46, 0x2a, 0x42, 0xe5, 0x39, 0xbe, 0xb9, 0x10, 0x1f, 0xf3, 0xfc, 0x63,
- 0xd8, 0xcc, 0xbd, 0xe2, 0x10, 0xc6, 0x8b, 0x5f, 0x93, 0x74, 0x7e, 0x70, 0x2e, 0x4d, 0xcc, 0xff,
- 0x0f, 0xa0, 0x95, 0x7d, 0xd3, 0x21, 0x6e, 0x6a, 0x4d, 0x8b, 0x1f, 0x89, 0x74, 0x8c, 0xf3, 0x48,
- 0x74, 0xad, 0xa5, 0x5f, 0x78, 0xe8, 0x5a, 0x2b, 0x7c, 0x2e, 0xa2, 0x6b, 0x6d, 0xc1, 0xe3, 0x90,
- 0x25, 0xf1, 0x0d, 0x6c, 0x64, 0x9e, 0x7a, 0x08, 0x5d, 0xd9, 0x85, 0x2f, 0x47, 0x3a, 0x37, 0xcf,
- 0xa1, 0x88, 0x39, 0x7f, 0x81, 0x8e, 0x97, 0x4f, 0x8c, 0xc5, 0x95, 0x94, 0xb2, 0x93, 0x53, 0xe0,
- 0x4e, 0x3b, 0x8f, 0xd0, 0xcd, 0x49, 0x3b, 0xc9, 0xd5, 0xcd, 0x29, 0x7f, 0x9c, 0xac, 0x9b, 0x53,
- 0xd1, 0xf1, 0xef, 0x92, 0xf8, 0x05, 0xba, 0x66, 0xf9, 0xb4, 0x4c, 0xb4, 0x53, 0xeb, 0x43, 0x7b,
- 0x42, 0xd6, 0xb9, 0x5a, 0x80, 0xd1, 0xdd, 0x42, 0xf2, 0x90, 0x4b, 0x77, 0x0b, 0xb9, 0xa7, 0x68,
- 0xba, 0x5b, 0x28, 0x78, 0xfb, 0xb5, 0x44, 0xf9, 0xac, 0x7a, 0x86, 0x41, 0x23, 0xcb, 0x1e, 0x9c,
- 0x77, 0x8a, 0x0f, 0xfa, 0x8d, 0xa5, 0x1f, 0x97, 0xc4, 0x2e, 0x08, 0xd5, 0xf2, 0x3e, 0x62, 0x76,
- 0xce, 0xac, 0xd9, 0x29, 0xd5, 0x90, 0x35, 0xb9, 0xa3, 0x57, 0x82, 0xe7, 0x71, 0xf9, 0x3c, 0x7e,
- 0x06, 0x92, 0x1c, 0x9b, 0x14, 0xf2, 0xc8, 0x3c, 0x17, 0xe3, 0xc6, 0xe8, 0xd3, 0xe2, 0x77, 0x39,
- 0xba, 0x4f, 0xcb, 0xbe, 0x0a, 0xd2, 0x7d, 0x5a, 0xfe, 0x21, 0x8f, 0x9c, 0xcf, 0xf8, 0xd5, 0x4e,
- 0x6a, 0x3e, 0xb3, 0x0f, 0x7c, 0x52, 0xf3, 0x99, 0x7f, 0xe8, 0xb3, 0x24, 0x1e, 0x41, 0x2d, 0x7e,
- 0x69, 0xa3, 0x8b, 0x94, 0x7d, 0xff, 0xa3, 0x8b, 0x94, 0x7f, 0x9a, 0xb3, 0x74, 0xab, 0x44, 0x36,
- 0x2b, 0xdf, 0xbb, 0xe8, 0x36, 0x9b, 0x7a, 0x5a, 0xd3, 0x69, 0xe7, 0x11, 0xba, 0xbf, 0x8f, 0x9f,
- 0xb6, 0xe8, 0x82, 0x64, 0x5f, 0xcc, 0x74, 0xae, 0x15, 0xe2, 0x74, 0x6b, 0x55, 0x4f, 0x04, 0x44,
- 0x66, 0x89, 0x24, 0x77, 0xcb, 0x75, 0x6b, 0xcd, 0xbc, 0x27, 0x88, 0xed, 0x3d, 0xcb, 0x21, 0xfd,
- 0x74, 0x20, 0x63, 0xef, 0x19, 0x0e, 0xb1, 0xbd, 0x33, 0x93, 0x9c, 0xc0, 0x3a, 0x9f, 0x37, 0x8a,
- 0x91, 0x3a, 0xab, 0xe4, 0xf6, 0xbe, 0xc8, 0xd9, 0xc5, 0x02, 0x56, 0x05, 0x17, 0xfe, 0xd9, 0x2b,
- 0x68, 0x57, 0xf8, 0x45, 0xde, 0x32, 0x74, 0x66, 0xd7, 0x17, 0x60, 0x75, 0x7d, 0xc5, 0x17, 0xf0,
- 0x75, 0x7d, 0x65, 0xef, 0xf1, 0xeb, 0xfa, 0xca, 0xdf, 0xd8, 0xe7, 0x60, 0x95, 0xba, 0xcc, 0xaf,
- 0x07, 0xab, 0xa2, 0x77, 0x01, 0x7a, 0xb0, 0x2a, 0x7e, 0x05, 0x10, 0xbb, 0x4f, 0xdc, 0x02, 0x65,
- 0xdc, 0x67, 0xbc, 0x09, 0xc9, 0xba, 0xcf, 0x64, 0xd3, 0x21, 0x9b, 0xcb, 0xeb, 0xfc, 0x19, 0x4b,
- 0x4e, 0xee, 0xf2, 0x67, 0x2c, 0x59, 0xbf, 0xaf, 0xaf, 0x59, 0x32, 0x71, 0xc8, 0x59, 0xb2, 0xc6,
- 0xe4, 0x5a, 0x21, 0x2e, 0x33, 0x8a, 0x8c, 0x18, 0xa9, 0xf7, 0x0d, 0x99, 0x51, 0xa4, 0x9b, 0x9b,
- 0xbc, 0xef, 0xd2, 0xaa, 0xb0, 0x37, 0x52, 0xc4, 0xb9, 0xdb, 0xef, 0xfa, 0xc4, 0x16, 0x3e, 0x17,
- 0x90, 0x3c, 0x53, 0xd7, 0xf8, 0x75, 0x9e, 0x45, 0xef, 0x03, 0x74, 0x9e, 0xc5, 0xf7, 0xff, 0x39,
- 0xf2, 0x67, 0x2f, 0xeb, 0xeb, 0x91, 0x7f, 0xc1, 0xeb, 0x00, 0x3d, 0xf2, 0x2f, 0xbc, 0xeb, 0xcf,
- 0x69, 0x4b, 0xee, 0xa6, 0xbe, 0x9e, 0xb6, 0x2c, 0x7a, 0x0a, 0xa0, 0xa7, 0x2d, 0x8b, 0xaf, 0xfa,
- 0x2f, 0x89, 0x43, 0x68, 0xe8, 0xb7, 0xfa, 0x45, 0x3a, 0x37, 0xcb, 0x5e, 0x60, 0xef, 0xdc, 0x58,
- 0x84, 0xd6, 0x19, 0xea, 0xf7, 0xf1, 0x45, 0x3a, 0x23, 0x3d, 0x8f, 0x61, 0xe1, 0x35, 0x7e, 0x99,
- 0xa4, 0xa4, 0x6f, 0xda, 0x8b, 0x5c, 0x46, 0x9a, 0x63, 0x7b, 0xf3, 0x1c, 0x0a, 0x5d, 0x71, 0xd9,
- 0xab, 0xf5, 0xba, 0xe2, 0x16, 0x5c, 0xe2, 0xef, 0x18, 0xe7, 0x91, 0x64, 0xd2, 0x7f, 0x55, 0xfb,
- 0x49, 0xa7, 0xff, 0xa9, 0x8b, 0xe2, 0x99, 0xf4, 0x3f, 0x73, 0x2b, 0x9b, 0xf9, 0xc4, 0x17, 0x91,
- 0x75, 0x3e, 0xd9, 0x1b, 0xfa, 0x3a, 0x9f, 0xfc, 0x1d, 0x7a, 0xd6, 0x8b, 0x7e, 0x85, 0x58, 0xd7,
- 0x4b, 0xc1, 0xe5, 0x7a, 0x5d, 0x2f, 0x85, 0xf7, 0xde, 0x55, 0x92, 0xae, 0xdd, 0x09, 0x4e, 0x27,
- 0xe9, 0xf9, 0x1b, 0xf1, 0xe9, 0x24, 0xbd, 0xe8, 0x0a, 0xfa, 0x92, 0x18, 0xf1, 0xd3, 0x93, 0x5c,
- 0x71, 0xeb, 0x87, 0x05, 0x53, 0x94, 0xbb, 0xe0, 0xdc, 0x79, 0xfb, 0x05, 0x54, 0x7a, 0x2f, 0x05,
- 0x77, 0xbb, 0xf5, 0x5e, 0x16, 0x5f, 0x2a, 0xd7, 0x7b, 0x39, 0xef, 0x82, 0xf8, 0x92, 0x98, 0x46,
- 0x0f, 0x50, 0x72, 0x1d, 0xbd, 0x5b, 0x3c, 0xb7, 0xf9, 0xbe, 0x6e, 0xbd, 0x98, 0x30, 0xee, 0xce,
- 0x8b, 0x5f, 0x9d, 0xe4, 0x6b, 0x83, 0x0b, 0x26, 0x3e, 0xdf, 0xe1, 0x7b, 0x17, 0xa0, 0x8c, 0x7a,
- 0x7c, 0xb2, 0xca, 0xff, 0xfb, 0xe2, 0xe3, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x00, 0xaa, 0xb5,
- 0x86, 0x0a, 0x43, 0x00, 0x00,
+ 0x5b, 0xd6, 0xd9, 0xf2, 0x59, 0xb6, 0xe5, 0xcb, 0xf9, 0x7c, 0x39, 0x98, 0x84, 0x24, 0x9c, 0xf9,
+ 0xe5, 0x25, 0xad, 0xd8, 0xf9, 0x42, 0x56, 0xc0, 0x82, 0xda, 0x08, 0xc0, 0xee, 0xed, 0x2e, 0x64,
+ 0xb1, 0x52, 0x95, 0x54, 0x5d, 0xde, 0x92, 0xca, 0x3f, 0xb8, 0x5f, 0x70, 0x95, 0x3c, 0xa7, 0x2a,
+ 0x0f, 0x79, 0x4a, 0xaa, 0xf2, 0x2f, 0xf2, 0x94, 0x87, 0xfc, 0x80, 0x54, 0xe5, 0x31, 0xdd, 0x3d,
+ 0xb3, 0xbb, 0xb3, 0x1f, 0xa0, 0x28, 0x45, 0x49, 0x2a, 0x4f, 0xc4, 0x76, 0xf7, 0xf4, 0xf4, 0xcc,
+ 0xf4, 0x74, 0xf7, 0xf4, 0xf4, 0x10, 0xea, 0xa7, 0xee, 0xe3, 0x53, 0xef, 0x8e, 0xe7, 0xbb, 0xa1,
+ 0x2b, 0xaa, 0xfc, 0x61, 0x79, 0x8e, 0xb1, 0x05, 0xe2, 0x81, 0x1d, 0x1e, 0xd8, 0xce, 0xe9, 0x93,
+ 0xc7, 0xae, 0x6f, 0xda, 0xbf, 0x9a, 0xdb, 0x41, 0x68, 0x7c, 0x0e, 0x97, 0x52, 0xd0, 0xc0, 0x73,
+ 0x67, 0x81, 0x2d, 0x7e, 0x08, 0x2b, 0x9e, 0x6d, 0xfb, 0x41, 0xbb, 0xf4, 0x56, 0xf9, 0x56, 0xfd,
+ 0xee, 0xfa, 0x9d, 0x88, 0xcd, 0x9d, 0x23, 0x04, 0x9b, 0x12, 0x69, 0x9c, 0x42, 0xad, 0xeb, 0x9f,
+ 0xce, 0xa7, 0xf6, 0x2c, 0x0c, 0xc4, 0x1d, 0xa8, 0xfa, 0x76, 0xe0, 0xce, 0xfd, 0xa1, 0x8d, 0xad,
+ 0x4a, 0xb7, 0xd6, 0xef, 0x8a, 0xa4, 0x95, 0xa9, 0x30, 0x66, 0x4c, 0x23, 0x2e, 0xc3, 0xea, 0xd8,
+ 0x9a, 0x3a, 0x93, 0xb3, 0xf6, 0x32, 0x52, 0x37, 0x4d, 0xf5, 0x25, 0x04, 0x54, 0x66, 0xd6, 0xd4,
+ 0x6e, 0x97, 0x11, 0x5a, 0x33, 0xf9, 0xb7, 0xf1, 0x67, 0xb0, 0xde, 0x1d, 0x8d, 0x8e, 0xac, 0xf0,
+ 0x89, 0x92, 0xfb, 0xa5, 0x7b, 0xdb, 0x86, 0xd5, 0x67, 0xfe, 0x78, 0xe0, 0x8c, 0xb8, 0xb7, 0x9a,
+ 0xb9, 0x82, 0x5f, 0xfd, 0x91, 0x30, 0xa0, 0xe2, 0x21, 0x57, 0xee, 0x2c, 0x3d, 0x4c, 0xea, 0x8b,
+ 0x71, 0xc6, 0xdb, 0xb0, 0x11, 0x77, 0xae, 0xa6, 0x07, 0x65, 0x9c, 0xcf, 0x91, 0x17, 0xf5, 0xdc,
+ 0x30, 0xf9, 0xb7, 0xf1, 0xdb, 0x12, 0x6c, 0xee, 0xda, 0x13, 0x3b, 0xb4, 0xff, 0x07, 0xe4, 0x4c,
+ 0x26, 0xab, 0x9c, 0x9a, 0xac, 0x48, 0xfe, 0xca, 0x62, 0xf9, 0x63, 0x61, 0x57, 0x34, 0x61, 0x51,
+ 0x19, 0x74, 0x59, 0xe5, 0xb0, 0x8c, 0x9f, 0x80, 0xc0, 0x91, 0x66, 0x54, 0x84, 0xfb, 0xc0, 0xe5,
+ 0x66, 0xf1, 0xf3, 0xaa, 0xc0, 0x38, 0x63, 0x1b, 0x2e, 0xa5, 0x5a, 0x2a, 0x86, 0x9f, 0xc3, 0xb6,
+ 0xec, 0xe6, 0x55, 0x78, 0xb6, 0xe1, 0x72, 0xb6, 0xb1, 0x62, 0xfb, 0x63, 0xd8, 0xc2, 0xdf, 0x39,
+ 0x65, 0x16, 0x6d, 0x58, 0xb3, 0x46, 0x23, 0x9c, 0xcb, 0x80, 0x19, 0xd7, 0xcc, 0xe8, 0xd3, 0xb8,
+ 0x02, 0xdb, 0x99, 0x16, 0x8a, 0xd5, 0x3f, 0x94, 0xa0, 0x7d, 0xec, 0x8e, 0xc3, 0x97, 0xe3, 0x27,
+ 0x8e, 0xa1, 0x36, 0x72, 0x7c, 0x7b, 0x18, 0x3a, 0xee, 0x8c, 0x57, 0x6a, 0xfd, 0xee, 0xa7, 0xc9,
+ 0x20, 0x16, 0x31, 0x4c, 0x10, 0xbb, 0x51, 0x63, 0x33, 0xe1, 0x63, 0x7c, 0x08, 0x22, 0x4f, 0x20,
+ 0x56, 0x61, 0xb9, 0x7f, 0xd0, 0x5a, 0x12, 0x6b, 0x50, 0x3e, 0xfc, 0xe6, 0xa4, 0x55, 0x12, 0x55,
+ 0xa8, 0x7c, 0x79, 0x78, 0xf2, 0xb0, 0xb5, 0x6c, 0x5c, 0x83, 0xab, 0x05, 0x5d, 0xa9, 0x91, 0x7d,
+ 0x0c, 0x57, 0x8e, 0x9f, 0xcc, 0xc3, 0x91, 0xfb, 0xfd, 0xec, 0xe2, 0xf3, 0xd4, 0xc1, 0xd9, 0xc8,
+ 0x35, 0x52, 0x0c, 0x3f, 0x82, 0xed, 0xde, 0xcc, 0x7a, 0x3c, 0xb1, 0x2f, 0xce, 0x0e, 0x97, 0x30,
+ 0xdb, 0x44, 0x31, 0xbb, 0x8b, 0x8b, 0xeb, 0x04, 0x2f, 0xc7, 0xed, 0x2a, 0x5c, 0xc9, 0xb5, 0x51,
+ 0xec, 0x4e, 0xa1, 0x25, 0x3b, 0xda, 0xf7, 0xc3, 0x88, 0xd1, 0x35, 0x5c, 0xa3, 0xf9, 0xd4, 0x1b,
+ 0x84, 0x67, 0x9e, 0xdc, 0x7b, 0x2b, 0x66, 0x95, 0x00, 0x27, 0xf8, 0x2d, 0x3a, 0x50, 0x1d, 0x3b,
+ 0x13, 0x9b, 0x2d, 0x8d, 0xdc, 0x69, 0xf1, 0x37, 0xe1, 0x9c, 0x59, 0x68, 0xfb, 0xcf, 0xac, 0x09,
+ 0x6f, 0xb7, 0x8a, 0x19, 0x7f, 0x1b, 0x97, 0x60, 0x53, 0xeb, 0x48, 0xf5, 0x8e, 0x40, 0x25, 0x58,
+ 0xd2, 0x3d, 0x6f, 0x31, 0x0d, 0xa8, 0x48, 0xff, 0x02, 0x5a, 0xfd, 0xd9, 0x9f, 0xe2, 0xd2, 0x6a,
+ 0x82, 0xbe, 0x26, 0x1b, 0x41, 0x36, 0x1b, 0x77, 0x73, 0x80, 0x32, 0x97, 0x0b, 0x8c, 0x81, 0x44,
+ 0x92, 0xac, 0x9a, 0x00, 0x4a, 0xaa, 0xbf, 0x2d, 0x41, 0x13, 0xf7, 0xef, 0x97, 0x53, 0xef, 0xc5,
+ 0xaa, 0x8f, 0xe6, 0xc4, 0x73, 0xfd, 0x50, 0x59, 0x6d, 0xfe, 0x2d, 0x7e, 0x06, 0x15, 0x9e, 0xe5,
+ 0x32, 0x4b, 0x7f, 0x2b, 0xe9, 0x39, 0xc5, 0xf4, 0xce, 0xbe, 0x3b, 0x73, 0x42, 0xd7, 0x77, 0x66,
+ 0xa7, 0x47, 0xee, 0xc4, 0x19, 0x9e, 0x99, 0xdc, 0x0a, 0xf5, 0xbe, 0x95, 0xc5, 0x90, 0xb6, 0x1f,
+ 0x99, 0x3d, 0x54, 0x7b, 0xd4, 0xf6, 0xa3, 0xc3, 0xe3, 0xb4, 0xde, 0xb7, 0xd8, 0x1d, 0x30, 0x63,
+ 0x35, 0x80, 0x5f, 0x40, 0x4b, 0xda, 0x8a, 0x57, 0x1d, 0x02, 0xaf, 0x61, 0xc2, 0x41, 0xb1, 0xed,
+ 0x41, 0xd5, 0x3c, 0xfa, 0xaa, 0xbf, 0xe3, 0xce, 0xc6, 0xe7, 0xb0, 0x7b, 0x13, 0xea, 0xbe, 0x3d,
+ 0x75, 0x43, 0x7b, 0x10, 0x73, 0xad, 0x99, 0x20, 0x41, 0x47, 0xc4, 0xfb, 0x37, 0x15, 0xa8, 0x11,
+ 0x9f, 0xe3, 0xd0, 0x0a, 0xd9, 0xf1, 0xcd, 0xbd, 0xd0, 0x99, 0xca, 0xc5, 0x2e, 0x9b, 0xea, 0x8b,
+ 0xd4, 0x8e, 0xf6, 0x1d, 0x63, 0x96, 0x19, 0x13, 0x7f, 0x8b, 0x75, 0x58, 0x9e, 0x7b, 0x3c, 0xbd,
+ 0x55, 0x13, 0x7f, 0xc9, 0x2e, 0x87, 0xae, 0x3f, 0x1a, 0x38, 0xde, 0xb3, 0x4f, 0xd8, 0xfc, 0x37,
+ 0xa9, 0x4b, 0x02, 0xf5, 0x11, 0x92, 0x26, 0xb8, 0xc7, 0xb6, 0x5f, 0x27, 0xb8, 0x47, 0x04, 0x9e,
+ 0x6f, 0x8f, 0x9d, 0xe7, 0x92, 0xc3, 0xaa, 0x24, 0x90, 0xa0, 0x88, 0x43, 0x42, 0x70, 0xaf, 0xbd,
+ 0x96, 0x21, 0xb8, 0x47, 0xe3, 0x08, 0x6c, 0xdf, 0xc1, 0x4d, 0x52, 0x95, 0x3e, 0x49, 0x7e, 0x89,
+ 0x1f, 0x40, 0x13, 0xfb, 0xb1, 0x9d, 0x67, 0xb6, 0x92, 0xae, 0xc6, 0x83, 0x69, 0x44, 0x40, 0xe6,
+ 0x9e, 0x21, 0xba, 0xd7, 0x86, 0x1c, 0xd1, 0x3d, 0x22, 0x92, 0x3c, 0x07, 0x33, 0x37, 0x74, 0xc6,
+ 0x67, 0xed, 0xba, 0x24, 0x92, 0xc0, 0x03, 0x86, 0x91, 0x9c, 0x43, 0x6b, 0xf8, 0xc4, 0x1e, 0xf8,
+ 0x64, 0x06, 0xdb, 0x0d, 0x26, 0x01, 0x06, 0xb1, 0x61, 0x14, 0x6f, 0xc3, 0x7a, 0x4c, 0xc0, 0xcb,
+ 0xda, 0x6e, 0x32, 0x4d, 0x33, 0xa2, 0x91, 0x3e, 0xfd, 0x06, 0xd4, 0xed, 0xd9, 0x68, 0xe0, 0x8e,
+ 0x07, 0x23, 0x2b, 0xb4, 0xda, 0xeb, 0x4c, 0x53, 0x43, 0xd0, 0xe1, 0x78, 0x17, 0x01, 0x62, 0x0b,
+ 0x56, 0x6c, 0xdf, 0x77, 0xfd, 0xf6, 0x06, 0x63, 0xe4, 0x87, 0xb8, 0x09, 0x4a, 0x9a, 0x01, 0x2a,
+ 0x9d, 0x7f, 0xd6, 0x6e, 0x31, 0xb2, 0x2e, 0x61, 0x5f, 0x13, 0x48, 0x2e, 0x05, 0x0a, 0xa2, 0x28,
+ 0x36, 0xa5, 0x80, 0x0c, 0x62, 0x02, 0xe3, 0x3b, 0xa8, 0x98, 0xde, 0x53, 0x47, 0xbc, 0x03, 0x95,
+ 0x21, 0x6a, 0x9a, 0x72, 0x8a, 0xba, 0x0d, 0x50, 0x3a, 0x68, 0x32, 0x5e, 0xbc, 0x07, 0x2b, 0x01,
+ 0x69, 0x12, 0x6b, 0x49, 0xfd, 0xee, 0xa5, 0x34, 0x21, 0x2b, 0x99, 0x29, 0x29, 0x8c, 0x5b, 0xb0,
+ 0x8e, 0xe1, 0x1d, 0x71, 0x8f, 0x76, 0x45, 0x12, 0x49, 0x94, 0xf4, 0x48, 0x02, 0x5d, 0xf5, 0x46,
+ 0x4c, 0xa9, 0x66, 0xe4, 0x16, 0xac, 0xe1, 0x38, 0x9e, 0x15, 0x86, 0x81, 0x4c, 0x18, 0xa1, 0x8d,
+ 0xdf, 0xe7, 0x0d, 0xa9, 0x77, 0xf3, 0x72, 0xf6, 0x03, 0x55, 0x7f, 0xe2, 0x8c, 0x6d, 0x56, 0xfd,
+ 0xb2, 0x54, 0xfd, 0xe8, 0xdb, 0xd8, 0xe4, 0xf0, 0x4b, 0x17, 0xcc, 0xe8, 0x46, 0x7b, 0xf5, 0x95,
+ 0x7b, 0x4c, 0x02, 0xa0, 0x14, 0xe3, 0x0f, 0x22, 0xeb, 0x7e, 0x21, 0xc6, 0xc4, 0x44, 0x27, 0x57,
+ 0x4c, 0xee, 0xc4, 0x86, 0xff, 0x62, 0x5c, 0x30, 0x76, 0x4a, 0xd1, 0x2b, 0x36, 0xef, 0x43, 0x8b,
+ 0xf5, 0xf7, 0x62, 0x4c, 0xd0, 0x7c, 0x69, 0xd4, 0x49, 0x9c, 0x14, 0xc7, 0x07, 0x17, 0x63, 0x83,
+ 0x71, 0x52, 0xa6, 0x85, 0x62, 0xb5, 0x01, 0x4d, 0x54, 0x8f, 0x47, 0xfe, 0x38, 0x72, 0x6f, 0x1f,
+ 0xb3, 0x66, 0x31, 0x40, 0xa9, 0xcb, 0x4d, 0xa8, 0xa0, 0x23, 0x8a, 0x74, 0xa5, 0x99, 0xe8, 0x0a,
+ 0x11, 0x31, 0x0a, 0x05, 0x22, 0x37, 0x93, 0x70, 0xc1, 0xbd, 0x51, 0x46, 0x84, 0xd2, 0xf8, 0x4c,
+ 0x13, 0xc2, 0x28, 0x53, 0xaf, 0x75, 0x83, 0x1d, 0x2b, 0x53, 0xff, 0x32, 0x6c, 0x62, 0xeb, 0xae,
+ 0x73, 0xea, 0xc2, 0x16, 0x0e, 0x61, 0x17, 0x0d, 0xda, 0xcc, 0x1e, 0x1d, 0xdb, 0xb1, 0x3f, 0x7e,
+ 0x4f, 0x79, 0x33, 0xe9, 0x8b, 0xb7, 0x13, 0x76, 0x8a, 0x94, 0x02, 0x08, 0xe5, 0xba, 0xba, 0xb0,
+ 0x9d, 0x61, 0x11, 0xef, 0x9d, 0x0a, 0x4e, 0x61, 0x34, 0x19, 0x5b, 0x39, 0x1e, 0x44, 0xcb, 0x14,
+ 0xc6, 0xcf, 0x61, 0x0b, 0x47, 0x98, 0x97, 0xe2, 0x1d, 0x28, 0x93, 0x3d, 0x93, 0x63, 0x2a, 0x66,
+ 0x40, 0x04, 0xb4, 0x64, 0x99, 0xf6, 0x6a, 0x78, 0xc7, 0x18, 0x2e, 0xf1, 0x98, 0x5f, 0x99, 0xb7,
+ 0x68, 0x41, 0xd9, 0x9a, 0x4c, 0x78, 0xe3, 0x54, 0x4d, 0xfa, 0x49, 0x01, 0x62, 0x9e, 0xa9, 0xea,
+ 0xf0, 0x4b, 0x68, 0x9b, 0xb6, 0x37, 0xb1, 0x86, 0xaf, 0xde, 0x23, 0x85, 0xb4, 0x05, 0x3c, 0x54,
+ 0x07, 0xdb, 0x7c, 0x58, 0x65, 0x03, 0x47, 0x67, 0xce, 0x48, 0x15, 0xbf, 0xe2, 0x75, 0xd4, 0xc0,
+ 0x6a, 0x0d, 0x3e, 0x06, 0x08, 0x22, 0x60, 0xb4, 0x12, 0x9a, 0xb1, 0x4c, 0x1a, 0x68, 0x64, 0xc6,
+ 0x43, 0x3e, 0xc9, 0x64, 0xfb, 0x10, 0x1f, 0x41, 0x2d, 0x26, 0x52, 0xa3, 0x28, 0x64, 0x95, 0x50,
+ 0x19, 0x97, 0x79, 0x61, 0x73, 0x62, 0x19, 0x7f, 0x14, 0x9d, 0x6b, 0x5e, 0x43, 0x27, 0x05, 0x2b,
+ 0x74, 0x35, 0x5a, 0xf6, 0x7c, 0xcf, 0x7b, 0x70, 0x45, 0x4d, 0xee, 0xeb, 0x18, 0x5f, 0x27, 0x5e,
+ 0xee, 0x7c, 0x4f, 0x02, 0x5a, 0xb8, 0x24, 0x2a, 0xca, 0x53, 0xcb, 0x84, 0x56, 0x5b, 0x83, 0xa9,
+ 0x35, 0x7a, 0x1f, 0xaa, 0x1e, 0x41, 0x1c, 0x3b, 0x5a, 0xa1, 0x96, 0x16, 0xb7, 0x4a, 0xda, 0x98,
+ 0xc2, 0x78, 0x0e, 0x2d, 0x3a, 0x8a, 0xeb, 0x6c, 0x71, 0xa7, 0xad, 0x32, 0xfe, 0x4c, 0x89, 0x9d,
+ 0x6f, 0xaf, 0xf0, 0xe2, 0xa7, 0x70, 0x15, 0xa3, 0x17, 0xdb, 0x1f, 0xd8, 0xcf, 0x9d, 0x20, 0xc4,
+ 0x58, 0x73, 0xa0, 0xa9, 0x87, 0x9c, 0xc1, 0x2b, 0x4c, 0xd0, 0x53, 0xf8, 0xe3, 0x44, 0x2d, 0xd0,
+ 0x80, 0x68, 0x3d, 0xab, 0x51, 0xfe, 0xba, 0x84, 0xa6, 0x5b, 0x1e, 0xa3, 0x5f, 0x51, 0xa4, 0x0f,
+ 0xe1, 0x92, 0x47, 0x91, 0x00, 0xba, 0xd1, 0xbc, 0x30, 0x22, 0x42, 0x25, 0x72, 0x44, 0xeb, 0x5d,
+ 0x4e, 0xd6, 0x1b, 0xd5, 0x2c, 0x2d, 0x83, 0x12, 0xee, 0xef, 0x4a, 0x74, 0x4a, 0xe6, 0xf5, 0xf9,
+ 0x3f, 0x98, 0xb0, 0x45, 0x23, 0x2b, 0x2f, 0x1a, 0x99, 0x3c, 0xa2, 0xa7, 0xc4, 0x55, 0x03, 0xf9,
+ 0x16, 0x3a, 0xb1, 0xde, 0x74, 0x83, 0xc0, 0x39, 0x9d, 0xe9, 0x8a, 0xfb, 0x53, 0x00, 0x2b, 0x06,
+ 0xaa, 0x11, 0x75, 0xb2, 0x23, 0xd2, 0x9a, 0x69, 0xd4, 0x18, 0x78, 0x5d, 0x2b, 0xe4, 0xac, 0x74,
+ 0xf3, 0xbf, 0xc3, 0x1a, 0x85, 0x8e, 0xf5, 0xe5, 0xf5, 0x0a, 0x7d, 0x1d, 0xae, 0x15, 0x72, 0x56,
+ 0xb3, 0x35, 0x85, 0xeb, 0xba, 0x3a, 0xbc, 0xd6, 0xbe, 0x0b, 0xac, 0xcd, 0x5b, 0x70, 0x63, 0x51,
+ 0x77, 0x4a, 0xa0, 0x3f, 0x84, 0x1b, 0xa9, 0x75, 0x7d, 0xbd, 0xb3, 0x71, 0x13, 0xde, 0x5c, 0xc8,
+ 0x3d, 0x65, 0x8b, 0x8e, 0x39, 0x54, 0x8d, 0x6c, 0xd1, 0x17, 0x6c, 0x8b, 0x22, 0x58, 0xec, 0xb3,
+ 0x57, 0x4f, 0x27, 0xee, 0x63, 0x3c, 0xd0, 0xe4, 0x36, 0xc6, 0x03, 0x86, 0x9b, 0x0a, 0x8f, 0x3e,
+ 0x5b, 0xa0, 0xe6, 0xfa, 0x69, 0xa6, 0x2f, 0xd1, 0x1e, 0x1d, 0x59, 0xaa, 0x7d, 0x92, 0x47, 0x38,
+ 0x0e, 0x5d, 0x2f, 0x2d, 0xea, 0x16, 0xf5, 0x95, 0x00, 0x15, 0xe9, 0x6f, 0xca, 0x78, 0x2e, 0x56,
+ 0xd9, 0xbd, 0xd9, 0xc4, 0x77, 0xa2, 0x54, 0x24, 0xfd, 0xa6, 0x18, 0x1f, 0x0f, 0xfb, 0xa1, 0x4f,
+ 0x9b, 0xb4, 0x8c, 0x50, 0xf5, 0xc5, 0xcb, 0x77, 0x1a, 0x45, 0xd8, 0xf4, 0x93, 0x5a, 0x3f, 0xc6,
+ 0x4e, 0xf8, 0x00, 0x59, 0x35, 0xf9, 0x37, 0x9d, 0x57, 0x9c, 0x60, 0xf0, 0xbd, 0x13, 0x3e, 0x19,
+ 0xf9, 0xd6, 0xf7, 0x7c, 0x74, 0xac, 0x9a, 0xe0, 0x04, 0xbf, 0xa7, 0x20, 0x78, 0x52, 0x82, 0x67,
+ 0xd6, 0xc4, 0xc1, 0x63, 0x12, 0x65, 0xbf, 0x56, 0x39, 0xb3, 0xa2, 0x41, 0x04, 0x86, 0x9d, 0x33,
+ 0x77, 0xe0, 0x4c, 0x3d, 0xb2, 0xda, 0x61, 0xc2, 0x69, 0x4d, 0xee, 0xfd, 0x99, 0xdb, 0x57, 0xa8,
+ 0x98, 0x63, 0x72, 0x28, 0xa9, 0xa6, 0xd2, 0x9b, 0xd7, 0xd1, 0x83, 0x73, 0xce, 0x63, 0x60, 0x05,
+ 0x33, 0x3e, 0x47, 0x36, 0xd1, 0x03, 0x31, 0xa4, 0x1b, 0xcc, 0x28, 0xc3, 0xa3, 0xd0, 0xce, 0x88,
+ 0x0f, 0x90, 0x35, 0xb3, 0x2a, 0x01, 0xfd, 0x91, 0xca, 0xf0, 0x84, 0xb6, 0x6f, 0x8f, 0xf8, 0xdc,
+ 0x58, 0x35, 0xe3, 0x6f, 0x3a, 0xcb, 0xa1, 0x4d, 0x9a, 0xd8, 0x7c, 0x5a, 0xac, 0x9a, 0xf2, 0x03,
+ 0xd7, 0xaf, 0x85, 0x03, 0x1f, 0xfb, 0xee, 0x14, 0x0d, 0x1e, 0x12, 0xce, 0x70, 0x25, 0x9b, 0x4c,
+ 0xb0, 0xee, 0x04, 0xf7, 0x11, 0xdc, 0x53, 0x50, 0x9a, 0xa2, 0x99, 0x4a, 0x41, 0xe1, 0xe9, 0x95,
+ 0xcf, 0x8a, 0x78, 0xe2, 0x8f, 0x40, 0x7d, 0xcf, 0x08, 0xa1, 0xbe, 0x6b, 0x93, 0x49, 0x94, 0x33,
+ 0x42, 0x0b, 0xc2, 0x07, 0x67, 0x15, 0x6f, 0xab, 0xaf, 0x24, 0x65, 0xb3, 0x7c, 0x4e, 0xca, 0x46,
+ 0xbc, 0x0b, 0x1b, 0x13, 0x77, 0x76, 0x8a, 0x76, 0x58, 0x36, 0xb3, 0x23, 0x33, 0xba, 0x2e, 0xc1,
+ 0x47, 0x0a, 0x6a, 0xfc, 0x7d, 0x09, 0x56, 0x4e, 0xe8, 0x20, 0x41, 0x47, 0x49, 0x2d, 0x84, 0x2d,
+ 0x4a, 0x27, 0x31, 0x3e, 0x4e, 0xb6, 0x2f, 0x27, 0xc9, 0xf6, 0x85, 0xb9, 0xe6, 0xdf, 0x81, 0xc6,
+ 0x28, 0x19, 0x53, 0x80, 0x3a, 0x43, 0x32, 0xa7, 0xc2, 0xe3, 0x18, 0x6b, 0xa6, 0x48, 0x39, 0x97,
+ 0xe0, 0x06, 0xe1, 0x40, 0xf9, 0x1d, 0xa5, 0x52, 0x04, 0x92, 0xbb, 0xd6, 0xb8, 0xc7, 0xc7, 0x0b,
+ 0xd3, 0x79, 0x1c, 0xed, 0xa5, 0xb7, 0x61, 0x25, 0xa4, 0x91, 0xa8, 0xad, 0xb4, 0x91, 0xf4, 0xc2,
+ 0x03, 0x34, 0x25, 0xd6, 0xf8, 0x4c, 0x9e, 0x6f, 0xa9, 0x9d, 0xda, 0xc4, 0x17, 0x6c, 0x38, 0x01,
+ 0xf1, 0x48, 0x6a, 0xac, 0xad, 0xf5, 0x7a, 0xd1, 0x69, 0x5b, 0x74, 0x77, 0x91, 0xac, 0x73, 0x59,
+ 0x5f, 0x67, 0xda, 0xef, 0xa9, 0xde, 0xd4, 0x26, 0xfe, 0x27, 0xda, 0xc4, 0xb6, 0xed, 0xb3, 0xae,
+ 0x12, 0x87, 0x28, 0x0a, 0x6a, 0x9a, 0xf1, 0xb7, 0xf8, 0x09, 0x34, 0x2c, 0xcf, 0x9b, 0x9c, 0x45,
+ 0x93, 0x27, 0x0f, 0xfd, 0xda, 0xb4, 0x77, 0x09, 0xab, 0x7c, 0x66, 0xdd, 0x4a, 0x3e, 0xe2, 0x7c,
+ 0x42, 0x39, 0x9b, 0x4f, 0xa0, 0x3e, 0xb5, 0x7c, 0xc2, 0xe7, 0xd0, 0xb4, 0x11, 0x33, 0x98, 0xce,
+ 0x27, 0xa1, 0xf3, 0xc4, 0xf5, 0xd4, 0x6d, 0xc2, 0xe5, 0xa4, 0x41, 0x0f, 0xff, 0xee, 0x2b, 0xac,
+ 0xd9, 0xb0, 0xb5, 0x2f, 0xd1, 0x85, 0x0d, 0xdf, 0x9d, 0x87, 0x94, 0x5d, 0x19, 0x4f, 0xec, 0x61,
+ 0xe8, 0xfa, 0xbc, 0xbc, 0xf5, 0xbb, 0x6d, 0x6d, 0xf6, 0x88, 0xc0, 0x8c, 0xf0, 0xe6, 0xba, 0x9f,
+ 0xfa, 0x46, 0xfd, 0xae, 0x38, 0xb3, 0xb1, 0xcb, 0x96, 0x24, 0x15, 0x76, 0x92, 0x9c, 0x32, 0x9d,
+ 0xc1, 0x04, 0x64, 0x60, 0x29, 0x25, 0x80, 0x76, 0x6d, 0x2d, 0x6b, 0x60, 0x4f, 0x18, 0x6e, 0x2a,
+ 0x3c, 0x85, 0xb3, 0xa1, 0x6f, 0xcd, 0x02, 0x3e, 0xf7, 0x57, 0xb3, 0x7c, 0x4f, 0x22, 0x94, 0x99,
+ 0x50, 0xd1, 0x3c, 0xcb, 0x81, 0xc8, 0xa4, 0x06, 0x5b, 0x9b, 0xd4, 0x3c, 0xf3, 0x28, 0x94, 0x19,
+ 0xae, 0xfb, 0xc9, 0x87, 0xf1, 0x2f, 0x25, 0xa8, 0x6b, 0x8b, 0x20, 0x3e, 0x83, 0x9a, 0x33, 0x1b,
+ 0xa4, 0x62, 0xac, 0xf3, 0xdc, 0x59, 0xd5, 0x99, 0xa9, 0x86, 0xbf, 0x8b, 0x0b, 0xf1, 0x9c, 0x84,
+ 0x49, 0xaf, 0xf5, 0x79, 0x8d, 0x1b, 0xb2, 0x41, 0xc2, 0x00, 0xcd, 0xae, 0xc6, 0xa0, 0xfc, 0x62,
+ 0x06, 0xb2, 0x81, 0xda, 0x87, 0x7f, 0x0e, 0x75, 0x69, 0x4d, 0xf6, 0x9c, 0xa9, 0xb3, 0x30, 0x59,
+ 0x44, 0x59, 0xaf, 0xa9, 0xf5, 0x3c, 0x31, 0x47, 0x72, 0x17, 0xd4, 0x11, 0x16, 0xd9, 0x22, 0xf1,
+ 0x09, 0x5c, 0x0e, 0xd4, 0x4d, 0xc2, 0x20, 0x7c, 0x82, 0xe1, 0xde, 0x13, 0x77, 0x32, 0x1a, 0x78,
+ 0xc3, 0x50, 0x59, 0x95, 0xad, 0x08, 0x7b, 0x12, 0x21, 0x8f, 0x86, 0xa1, 0xf1, 0x1f, 0x65, 0xa8,
+ 0x46, 0xda, 0x49, 0xe9, 0x3f, 0x6b, 0x1e, 0x3e, 0x19, 0x78, 0xe8, 0xef, 0xbf, 0x77, 0xfd, 0x91,
+ 0x32, 0x9e, 0x0d, 0x02, 0x1e, 0x29, 0x98, 0x78, 0x0b, 0xea, 0x68, 0x6a, 0x86, 0xbe, 0xe3, 0xc5,
+ 0x77, 0x31, 0x35, 0x53, 0x07, 0x89, 0xab, 0x50, 0x9d, 0xb8, 0x43, 0x6b, 0x82, 0x3e, 0x44, 0xf5,
+ 0xbd, 0xc6, 0xdf, 0xdd, 0x00, 0x4f, 0xfa, 0xad, 0xd8, 0x8e, 0x47, 0x19, 0x91, 0x0a, 0x73, 0xd8,
+ 0x88, 0xe0, 0x5d, 0x95, 0x44, 0xba, 0x02, 0x6b, 0x74, 0x2b, 0x45, 0x4c, 0x64, 0x32, 0x75, 0x95,
+ 0x3e, 0x91, 0x07, 0xfa, 0x28, 0x46, 0x9c, 0xa2, 0x4a, 0x78, 0xac, 0xc3, 0x35, 0xb3, 0x46, 0x90,
+ 0x07, 0x04, 0x20, 0x1f, 0xc5, 0x68, 0xb6, 0x2b, 0x32, 0x89, 0x5a, 0x25, 0x00, 0xdf, 0x42, 0xdc,
+ 0x86, 0x4d, 0x4a, 0x13, 0x63, 0x88, 0xec, 0xf9, 0xce, 0x33, 0x54, 0x74, 0x62, 0x2f, 0x5d, 0xe0,
+ 0x86, 0x44, 0x1c, 0x49, 0x38, 0xf6, 0xf3, 0x3e, 0x08, 0xa9, 0x9f, 0xe3, 0x89, 0xe5, 0x0d, 0x46,
+ 0xd6, 0xd4, 0xc3, 0x80, 0x9b, 0xb5, 0xb4, 0x6a, 0xb6, 0x18, 0x73, 0x1f, 0x11, 0xbb, 0x12, 0x4e,
+ 0x49, 0xcf, 0x80, 0xd2, 0x99, 0x43, 0x77, 0x3a, 0x9d, 0xcf, 0x9c, 0xf0, 0x8c, 0xfd, 0x63, 0xd3,
+ 0x6c, 0x12, 0x74, 0x27, 0x02, 0x92, 0xf0, 0x2a, 0x75, 0x3d, 0xb4, 0x3c, 0x74, 0x93, 0x14, 0x2d,
+ 0xd4, 0x24, 0x64, 0xc7, 0x62, 0xe1, 0xe5, 0xd4, 0x11, 0xb6, 0xc1, 0x58, 0x39, 0x97, 0x84, 0x5c,
+ 0x87, 0x65, 0x74, 0xbb, 0x4d, 0x1e, 0x30, 0xfe, 0xc2, 0x30, 0xae, 0xa9, 0x12, 0xc6, 0x13, 0x52,
+ 0x9e, 0x00, 0xdd, 0x62, 0xc6, 0x41, 0x68, 0xaa, 0x65, 0x36, 0xbc, 0xe4, 0x23, 0xc0, 0x23, 0x7c,
+ 0x43, 0xb7, 0x31, 0x94, 0xa1, 0xb2, 0x39, 0xb3, 0x26, 0x17, 0xbd, 0x6a, 0x46, 0x9f, 0xac, 0x7a,
+ 0x8a, 0x6a, 0x10, 0x86, 0x93, 0x58, 0xf5, 0x14, 0xec, 0x24, 0x9c, 0x18, 0x7f, 0x59, 0x82, 0xf5,
+ 0xb4, 0xc9, 0x21, 0x6d, 0xcc, 0x58, 0xa9, 0xc1, 0x10, 0xad, 0xab, 0x0a, 0x37, 0xab, 0xe6, 0x56,
+ 0xda, 0x24, 0xed, 0x30, 0x0e, 0x0d, 0x63, 0x27, 0xdf, 0x6a, 0x1e, 0x60, 0x10, 0x90, 0x5c, 0xbe,
+ 0x5c, 0xc9, 0xb6, 0x64, 0x7c, 0x7f, 0x64, 0xfc, 0xdb, 0x0a, 0xd4, 0x62, 0x03, 0xf6, 0xbf, 0xa0,
+ 0xcb, 0x77, 0xa0, 0x3a, 0x45, 0x45, 0xc5, 0xa8, 0x2e, 0x50, 0x06, 0x5c, 0xb3, 0xf8, 0xfb, 0x0a,
+ 0x63, 0xc6, 0x34, 0x85, 0xba, 0xbf, 0xf2, 0x42, 0xdd, 0x5f, 0x3d, 0x47, 0xf7, 0xd7, 0xce, 0xd5,
+ 0xfd, 0x6a, 0x46, 0xf7, 0xd1, 0x98, 0xa3, 0xd3, 0x45, 0xb7, 0xab, 0x2c, 0xad, 0x66, 0xcc, 0xbf,
+ 0x66, 0xb8, 0xa9, 0xf0, 0xc5, 0xbb, 0x04, 0x5e, 0x66, 0x97, 0xd4, 0x2f, 0xbc, 0x4b, 0x1a, 0x45,
+ 0xbb, 0x84, 0xef, 0x21, 0xd0, 0x64, 0xba, 0x33, 0x79, 0x94, 0x65, 0xa5, 0x6f, 0xd2, 0x3d, 0x04,
+ 0x03, 0xe5, 0x0a, 0x7f, 0x8a, 0x06, 0x6f, 0xee, 0x91, 0x2d, 0xb5, 0x47, 0xb4, 0x5f, 0xac, 0xc7,
+ 0xe8, 0xbf, 0x43, 0xf2, 0xe8, 0xb4, 0x0f, 0x6a, 0xe6, 0x76, 0x8c, 0xdd, 0xd1, 0x90, 0x34, 0x47,
+ 0xe4, 0x7b, 0x25, 0xdf, 0x0d, 0x19, 0xc3, 0x22, 0x40, 0xf2, 0xc4, 0xb8, 0xc9, 0x1a, 0x4d, 0x9d,
+ 0xa8, 0xdb, 0x96, 0x8c, 0x33, 0x19, 0x24, 0x09, 0x3a, 0x74, 0x75, 0x28, 0x6f, 0x4c, 0xf8, 0x62,
+ 0xa1, 0x69, 0xc6, 0xdf, 0x84, 0xb3, 0x86, 0x43, 0xdb, 0xc3, 0x1e, 0xdb, 0x42, 0xe2, 0xa2, 0x6f,
+ 0x0a, 0xe1, 0xad, 0x11, 0xfa, 0xae, 0xd0, 0x09, 0x10, 0x7b, 0x49, 0xde, 0xed, 0x24, 0x10, 0x71,
+ 0x09, 0x56, 0x70, 0xae, 0x06, 0xbf, 0x6a, 0x6f, 0xc9, 0x9c, 0x39, 0x7e, 0x7c, 0x4d, 0x51, 0xf3,
+ 0x78, 0xe2, 0x7a, 0x41, 0x7b, 0x9b, 0x81, 0xf2, 0xc3, 0xf8, 0x13, 0xa8, 0x46, 0xda, 0x25, 0x3e,
+ 0xd0, 0xc4, 0x91, 0x8e, 0x6f, 0x33, 0xa7, 0x83, 0x9a, 0x84, 0x6f, 0x53, 0x92, 0x74, 0x16, 0x2a,
+ 0x37, 0x57, 0x40, 0xca, 0x68, 0xe3, 0x9f, 0x4b, 0xb0, 0xa6, 0x20, 0xc2, 0x80, 0xc6, 0xc1, 0xe1,
+ 0x49, 0xff, 0x7e, 0x7f, 0xa7, 0x7b, 0xd2, 0x3f, 0x3c, 0xe0, 0x5e, 0x2a, 0x66, 0x63, 0xa6, 0xc1,
+ 0xc8, 0x6b, 0x7d, 0x73, 0xb4, 0xdb, 0x3d, 0xe9, 0x31, 0xe3, 0x8a, 0xb9, 0x3a, 0xe7, 0x2f, 0x0a,
+ 0x76, 0x0f, 0x8f, 0x7a, 0x07, 0xea, 0x4e, 0xb7, 0xe2, 0xe2, 0x6f, 0xf1, 0x06, 0xd4, 0xbe, 0xea,
+ 0xf5, 0x8e, 0xba, 0x7b, 0xfd, 0x47, 0x3d, 0xde, 0x36, 0x15, 0xb3, 0xf6, 0x34, 0x02, 0x90, 0x19,
+ 0x32, 0x7b, 0xf7, 0xcd, 0xde, 0xf1, 0x43, 0xde, 0x1a, 0x15, 0x73, 0xcd, 0x97, 0x9f, 0xd4, 0x6e,
+ 0xb7, 0x7f, 0xbc, 0xd3, 0x35, 0x77, 0x7b, 0xbb, 0xbc, 0x29, 0xb0, 0xdd, 0x28, 0x02, 0xd0, 0x4c,
+ 0x9d, 0x1c, 0x9e, 0x74, 0xf7, 0x78, 0x4b, 0x54, 0x30, 0xe6, 0xa4, 0x0f, 0x0c, 0x72, 0x57, 0xa5,
+ 0x66, 0x13, 0xde, 0x99, 0x79, 0xf3, 0x50, 0xb9, 0x55, 0xf9, 0x41, 0x72, 0xe3, 0x3c, 0x13, 0x58,
+ 0x45, 0x95, 0xf2, 0xcb, 0xb0, 0x61, 0x55, 0x86, 0x37, 0xb8, 0xc7, 0x57, 0x29, 0x62, 0x73, 0x4e,
+ 0xd5, 0xec, 0x5e, 0xce, 0x06, 0x40, 0x3b, 0x8c, 0x35, 0x15, 0x95, 0xf8, 0x51, 0xfa, 0xa6, 0x68,
+ 0x3b, 0x4b, 0x9e, 0xba, 0x2b, 0xc2, 0x69, 0x6e, 0xe8, 0x5c, 0x48, 0xed, 0x91, 0xcf, 0x0c, 0xed,
+ 0x1a, 0x1a, 0xc0, 0xd0, 0x3f, 0x8b, 0x26, 0x5b, 0x01, 0x4d, 0x82, 0x91, 0xfe, 0xb2, 0x67, 0x8f,
+ 0xaf, 0x2d, 0x2b, 0x66, 0x95, 0x00, 0xc4, 0x09, 0xf5, 0x41, 0x3c, 0xb5, 0x6d, 0x0f, 0x43, 0x5f,
+ 0xdc, 0xbc, 0x99, 0x3b, 0xf5, 0xcd, 0x18, 0xd3, 0x57, 0x08, 0xb1, 0x0b, 0x37, 0x50, 0xb3, 0x9d,
+ 0xe9, 0x7c, 0x3a, 0x88, 0x75, 0x91, 0x82, 0x94, 0xa4, 0xa9, 0x5c, 0xa1, 0x37, 0x14, 0x55, 0x57,
+ 0x27, 0x8a, 0xb8, 0x18, 0xbf, 0x5d, 0x86, 0xba, 0x36, 0xbc, 0xff, 0xa7, 0xc3, 0xe0, 0x53, 0xb4,
+ 0x7d, 0xea, 0x86, 0x8e, 0x45, 0x06, 0x25, 0x11, 0x4e, 0x2a, 0xa2, 0x48, 0x70, 0x0f, 0x23, 0x31,
+ 0x93, 0x8b, 0xe5, 0x55, 0xa5, 0xf7, 0xf9, 0x8b, 0x65, 0xa9, 0x90, 0xf1, 0xb7, 0xf1, 0x9f, 0x25,
+ 0xa8, 0xc5, 0xe1, 0x30, 0x4d, 0x95, 0x72, 0x2f, 0xa9, 0xeb, 0xa1, 0x86, 0xf4, 0x31, 0xca, 0x1b,
+ 0xa0, 0xd1, 0x97, 0x44, 0xda, 0xa5, 0x9a, 0x0c, 0x13, 0x8e, 0x14, 0x8f, 0x69, 0x38, 0x1f, 0x8c,
+ 0x9c, 0x60, 0x88, 0x96, 0xd9, 0x3f, 0x53, 0x67, 0xd5, 0x06, 0x02, 0x77, 0x23, 0x18, 0x79, 0x71,
+ 0xf2, 0x84, 0x34, 0x9f, 0x53, 0x77, 0x64, 0xab, 0xfc, 0x43, 0x5d, 0xc1, 0xf6, 0x11, 0x44, 0xb6,
+ 0x59, 0x85, 0x26, 0x69, 0xef, 0xd4, 0x94, 0xd0, 0x6e, 0xf1, 0xe5, 0xfb, 0x6a, 0x74, 0xd1, 0x1d,
+ 0x5d, 0xbe, 0x93, 0xf3, 0x0a, 0x87, 0x78, 0xb8, 0x09, 0x02, 0x15, 0x7e, 0xad, 0xe2, 0xe7, 0x7e,
+ 0x10, 0x18, 0x5f, 0x40, 0x5d, 0x0b, 0xe9, 0x71, 0x6f, 0x5d, 0xd2, 0xe3, 0xff, 0x74, 0x7c, 0xb0,
+ 0xa9, 0xc5, 0xfb, 0x32, 0x38, 0x30, 0xe6, 0xb0, 0x2a, 0xe3, 0x19, 0xd2, 0x1d, 0xc7, 0x1b, 0xa4,
+ 0x0e, 0xf8, 0x55, 0xc7, 0x53, 0xc8, 0x77, 0x60, 0x63, 0x6a, 0x05, 0x4f, 0x07, 0x13, 0x7b, 0x76,
+ 0x8a, 0xfe, 0x1f, 0x97, 0x5c, 0x4d, 0x59, 0x93, 0xc0, 0x7b, 0x0c, 0xdd, 0x77, 0x66, 0x39, 0x3a,
+ 0xeb, 0xb9, 0x72, 0xf0, 0x3a, 0x9d, 0xf5, 0xdc, 0xf8, 0x9b, 0x12, 0x40, 0x72, 0x35, 0xf2, 0x12,
+ 0x77, 0x55, 0x85, 0x67, 0x7d, 0x84, 0x4d, 0x9c, 0x20, 0xe4, 0x92, 0x11, 0x84, 0xd1, 0x6f, 0x4e,
+ 0xc9, 0x47, 0x81, 0x7d, 0x25, 0x97, 0x92, 0x67, 0x8c, 0x19, 0x53, 0x18, 0x0f, 0xd0, 0xfc, 0x5b,
+ 0xe1, 0xf0, 0x09, 0x09, 0xf3, 0x6e, 0x4a, 0x18, 0xed, 0xc0, 0xc5, 0x14, 0xe7, 0x8b, 0x62, 0x3c,
+ 0x82, 0x46, 0x37, 0xa0, 0xb4, 0x87, 0x1c, 0x2b, 0xae, 0x87, 0xce, 0x4c, 0x3b, 0xc2, 0xe8, 0x54,
+ 0x1a, 0x4f, 0xd4, 0x7e, 0x39, 0x77, 0x91, 0xf5, 0x94, 0x5f, 0xc6, 0xaf, 0xcb, 0x00, 0x68, 0xd0,
+ 0x46, 0x8e, 0x4c, 0x45, 0x7c, 0x04, 0xaa, 0x86, 0x61, 0x90, 0xdc, 0x47, 0x89, 0x8c, 0xa4, 0x74,
+ 0xe7, 0x54, 0x93, 0x54, 0x34, 0xac, 0x4f, 0xa1, 0x11, 0x47, 0x4a, 0xd4, 0x68, 0x79, 0x61, 0xa3,
+ 0x38, 0x2b, 0x44, 0xcd, 0x7e, 0x06, 0xeb, 0x56, 0x30, 0xa0, 0x14, 0x8e, 0x5a, 0x54, 0x75, 0x1a,
+ 0xbb, 0x5c, 0x3c, 0x14, 0x8c, 0x05, 0xf5, 0xe1, 0xdf, 0x45, 0xd7, 0xaf, 0x5a, 0x53, 0x9f, 0x95,
+ 0xc5, 0x82, 0xca, 0x66, 0xd4, 0xe3, 0x67, 0x64, 0xe9, 0x54, 0xd0, 0xc2, 0xad, 0x56, 0x16, 0xb6,
+ 0x6a, 0xc4, 0x84, 0xd4, 0xf0, 0xe7, 0xb0, 0x69, 0x3f, 0x0f, 0x07, 0xe9, 0xc6, 0xab, 0x0b, 0x1b,
+ 0x6f, 0x20, 0xf1, 0x8e, 0xde, 0x9e, 0x36, 0xa1, 0xf7, 0xd4, 0xa1, 0x0a, 0x0b, 0x8c, 0xc3, 0x79,
+ 0x9f, 0xad, 0xe0, 0x26, 0x94, 0x17, 0xc8, 0x08, 0x31, 0xc6, 0xb0, 0x11, 0x37, 0xe8, 0xca, 0xba,
+ 0xb6, 0x8f, 0x52, 0xeb, 0x7b, 0x3d, 0xe9, 0x26, 0x43, 0xa8, 0x2d, 0x31, 0xc6, 0xc7, 0x91, 0x88,
+ 0x8e, 0x2d, 0x93, 0x66, 0x18, 0x1f, 0x6b, 0x20, 0xe3, 0x00, 0x6a, 0xfb, 0xf6, 0x48, 0xf5, 0xf0,
+ 0xa3, 0x54, 0x0f, 0x57, 0xf4, 0xf0, 0x62, 0x94, 0xe3, 0x8d, 0x2e, 0x19, 0xad, 0xee, 0x3c, 0x2a,
+ 0xbd, 0x91, 0x1f, 0xc6, 0x00, 0x36, 0x70, 0x8d, 0x7c, 0xdb, 0xc3, 0x78, 0x50, 0x71, 0xa5, 0x24,
+ 0x6a, 0x30, 0x53, 0x9e, 0x9b, 0x7e, 0x92, 0xe6, 0x11, 0x85, 0x15, 0xfb, 0x6d, 0xf9, 0x85, 0xb1,
+ 0x4a, 0x73, 0x1e, 0xd8, 0xb8, 0xf8, 0xe3, 0x10, 0xad, 0x5c, 0x10, 0x2a, 0x4b, 0x58, 0x47, 0xe0,
+ 0x1e, 0xc2, 0xf6, 0x5d, 0x4e, 0x44, 0x37, 0x0f, 0x70, 0x36, 0xf1, 0xe4, 0xa2, 0xd8, 0x9f, 0x5b,
+ 0xc6, 0x10, 0xd8, 0x93, 0xb1, 0xca, 0xbe, 0xf3, 0x6f, 0xe3, 0x5d, 0xd8, 0xd8, 0x63, 0xcb, 0x8b,
+ 0xca, 0xaa, 0x18, 0xc4, 0x03, 0x51, 0xb1, 0x85, 0x1c, 0xc8, 0x5f, 0x95, 0x61, 0x4d, 0x12, 0x04,
+ 0x49, 0xa6, 0xc3, 0x92, 0xf5, 0x8b, 0x39, 0xdb, 0xc1, 0x66, 0x51, 0x52, 0xab, 0x4c, 0x87, 0xe2,
+ 0xfd, 0x19, 0xd4, 0x92, 0x50, 0x59, 0x6e, 0x83, 0xab, 0x0b, 0x17, 0xce, 0x4c, 0x68, 0xd1, 0x98,
+ 0x97, 0xa7, 0x18, 0x13, 0x96, 0xb3, 0x99, 0x98, 0x78, 0x25, 0x4c, 0xc2, 0xa3, 0x64, 0x40, 0x4a,
+ 0x2f, 0xe7, 0x5b, 0xe9, 0xfc, 0xd5, 0xd4, 0x76, 0xd1, 0x97, 0x82, 0x55, 0x5f, 0x02, 0x50, 0x83,
+ 0x9b, 0x29, 0x0d, 0x56, 0xaa, 0x7f, 0x8e, 0x74, 0x0d, 0x5d, 0x89, 0x51, 0x1b, 0xd7, 0x66, 0x72,
+ 0x1d, 0x94, 0xde, 0x6b, 0xea, 0x92, 0x5a, 0x20, 0x33, 0xa2, 0x23, 0x61, 0x95, 0x1f, 0xc4, 0xc9,
+ 0x57, 0x19, 0x29, 0xad, 0xbf, 0xcc, 0xba, 0x44, 0x2e, 0x12, 0x01, 0x74, 0x6f, 0x58, 0x8b, 0x6f,
+ 0xbe, 0x62, 0x63, 0x58, 0xd2, 0xec, 0xf2, 0x27, 0x00, 0xc3, 0xd8, 0x66, 0xa9, 0x99, 0xde, 0xd2,
+ 0xc7, 0x12, 0xe1, 0x4c, 0x8d, 0x0e, 0x15, 0x7e, 0x4d, 0x2e, 0x69, 0xa0, 0x66, 0x5a, 0x0b, 0xa9,
+ 0xd5, 0xe2, 0x9b, 0x11, 0x85, 0xf1, 0x35, 0xfa, 0x2f, 0x99, 0x35, 0x2a, 0x12, 0x20, 0x7d, 0x77,
+ 0xbe, 0x7c, 0xb1, 0xbb, 0xf3, 0x7f, 0x2d, 0x41, 0x2b, 0x9b, 0x60, 0xa2, 0x4a, 0x08, 0x6d, 0x17,
+ 0x6e, 0x65, 0x53, 0x51, 0xda, 0x16, 0xd4, 0xeb, 0x20, 0x97, 0x2f, 0x50, 0x07, 0x59, 0x50, 0x29,
+ 0x9e, 0xba, 0x4f, 0xae, 0xbc, 0xe8, 0x3e, 0x59, 0x7c, 0x08, 0x6b, 0x23, 0x7b, 0x6c, 0x91, 0xcd,
+ 0x5a, 0x39, 0x6f, 0x13, 0x44, 0x54, 0xc6, 0x5f, 0x97, 0xa0, 0x6c, 0xba, 0x16, 0xe5, 0x3e, 0xac,
+ 0x40, 0xed, 0x30, 0xfc, 0x45, 0xc7, 0x01, 0xe9, 0x2f, 0xd0, 0xd2, 0x47, 0x21, 0x51, 0x0c, 0x20,
+ 0x03, 0x81, 0xfe, 0x9c, 0x50, 0x2a, 0xa3, 0x2e, 0xbf, 0xb4, 0x74, 0x71, 0x25, 0x75, 0x2d, 0x10,
+ 0x25, 0x6e, 0x57, 0xce, 0x2f, 0x04, 0xc3, 0xdd, 0xcf, 0x59, 0x73, 0xd7, 0x7a, 0x51, 0x71, 0x97,
+ 0x2c, 0xd6, 0x61, 0xc2, 0xa4, 0x58, 0xc7, 0x77, 0xad, 0x82, 0x62, 0x1d, 0x22, 0x62, 0x94, 0x31,
+ 0x84, 0xf2, 0x23, 0x7f, 0x5c, 0xa8, 0x1d, 0x38, 0x7c, 0x5f, 0x26, 0x40, 0x1a, 0x26, 0xfe, 0xe2,
+ 0x08, 0x48, 0xe6, 0x1d, 0x7d, 0x19, 0x4b, 0x34, 0x30, 0x02, 0x62, 0x80, 0xc9, 0x75, 0xb8, 0x2a,
+ 0xab, 0xe9, 0x87, 0xbc, 0x26, 0x88, 0x94, 0x00, 0x33, 0x34, 0xfe, 0xbd, 0x04, 0xab, 0xf2, 0x72,
+ 0x2c, 0x37, 0xa7, 0xd8, 0x8e, 0x6d, 0x8f, 0x96, 0x6c, 0xa9, 0x4a, 0x40, 0x7f, 0x44, 0x1e, 0x87,
+ 0x82, 0x15, 0x7b, 0x26, 0xc3, 0xbe, 0xb2, 0xf4, 0x38, 0x12, 0xc4, 0x61, 0xdf, 0x7b, 0xd0, 0x52,
+ 0x04, 0xca, 0x7e, 0x2a, 0x85, 0xa8, 0x99, 0x1b, 0x12, 0xde, 0x8d, 0xc0, 0xa9, 0xec, 0xfb, 0x4a,
+ 0x26, 0xfb, 0xfe, 0x43, 0x58, 0x9f, 0x7a, 0x93, 0x60, 0x30, 0xb1, 0x1e, 0xdb, 0x13, 0x8e, 0xde,
+ 0x64, 0x84, 0xd9, 0x20, 0xe8, 0x1e, 0x01, 0x29, 0x78, 0xcb, 0x50, 0x61, 0xec, 0xb6, 0x96, 0xa5,
+ 0xb2, 0x9e, 0xdf, 0xde, 0x81, 0x6a, 0xa4, 0xc5, 0x02, 0x70, 0xd8, 0x7b, 0x87, 0x5f, 0x76, 0xf7,
+ 0x5a, 0x4b, 0xa2, 0x06, 0x2b, 0x7b, 0x87, 0x3b, 0xf8, 0xb3, 0x44, 0xe0, 0xee, 0xee, 0x2f, 0x07,
+ 0xfd, 0x83, 0xd6, 0xb2, 0xa8, 0xa3, 0xc5, 0xc6, 0xdf, 0x54, 0xf4, 0x5d, 0xa6, 0x7a, 0xd8, 0x47,
+ 0xe6, 0xfd, 0x56, 0xe5, 0xf6, 0x80, 0x6e, 0x96, 0xe2, 0xd0, 0x8e, 0x1a, 0x1c, 0xe1, 0x11, 0xb5,
+ 0xff, 0x2d, 0xf2, 0x69, 0x40, 0xf5, 0xa0, 0xd7, 0x7f, 0xf0, 0xf0, 0xcb, 0x43, 0x13, 0x59, 0x61,
+ 0x8b, 0x93, 0xee, 0x03, 0xc5, 0xe7, 0x78, 0x70, 0xd4, 0x3d, 0x79, 0x88, 0x7c, 0x9a, 0x50, 0xdb,
+ 0x39, 0xdc, 0xdf, 0xff, 0xe6, 0xa0, 0x7f, 0xf2, 0x5d, 0xab, 0x22, 0x36, 0xa1, 0xd9, 0xfb, 0xf6,
+ 0x64, 0x90, 0x80, 0x56, 0x6e, 0xbf, 0x87, 0x2e, 0x34, 0x0a, 0xd7, 0x88, 0x49, 0xf7, 0xe0, 0x3b,
+ 0x59, 0x7d, 0xde, 0xdd, 0x53, 0x12, 0xf6, 0x0f, 0x1e, 0xf5, 0xcc, 0x93, 0xd6, 0xf2, 0xed, 0xdb,
+ 0xd0, 0xca, 0x06, 0x63, 0x54, 0xae, 0xde, 0xfb, 0x1a, 0x1b, 0xe0, 0xdf, 0x07, 0x3d, 0xa4, 0xc7,
+ 0xbf, 0x7b, 0x3d, 0xa4, 0xfd, 0x50, 0x45, 0xdb, 0xca, 0x93, 0x54, 0xa1, 0x72, 0x70, 0x78, 0x40,
+ 0x05, 0xbe, 0x34, 0xe4, 0x9d, 0x9d, 0xde, 0xd1, 0x89, 0x64, 0x6e, 0xf6, 0x7e, 0xd9, 0xdb, 0x21,
+ 0xe6, 0xdf, 0xc0, 0xa5, 0x82, 0x48, 0x80, 0x24, 0x8e, 0xa5, 0x1d, 0x74, 0x77, 0x77, 0x91, 0xc3,
+ 0x16, 0xb4, 0x12, 0x90, 0xd9, 0xdb, 0x3f, 0x7c, 0x44, 0x1d, 0x6f, 0xc3, 0xa6, 0x0e, 0x3d, 0xda,
+ 0xeb, 0xee, 0x90, 0x1c, 0x1f, 0x40, 0x33, 0xe5, 0xfe, 0x69, 0x7a, 0xf6, 0x7b, 0xbb, 0x83, 0xfd,
+ 0x43, 0x62, 0xb5, 0x01, 0x75, 0xfa, 0x88, 0xc8, 0x4b, 0xb7, 0xdf, 0x07, 0x48, 0xec, 0x54, 0x5c,
+ 0x8b, 0x4f, 0x93, 0xb0, 0x7f, 0x74, 0x68, 0x2a, 0x99, 0x7b, 0xdf, 0xf2, 0xef, 0xe5, 0xbb, 0xff,
+ 0x78, 0x03, 0xaa, 0x0f, 0x68, 0x27, 0x75, 0x3d, 0x47, 0xec, 0x41, 0x5d, 0xbb, 0xe4, 0x15, 0x6f,
+ 0xa4, 0xac, 0x67, 0xe6, 0xee, 0xb8, 0x73, 0x7d, 0x01, 0x56, 0xdd, 0x14, 0x2d, 0x89, 0x3e, 0x40,
+ 0x72, 0x0d, 0x2c, 0xae, 0xe9, 0xe4, 0x99, 0x1b, 0xe3, 0xce, 0x1b, 0xc5, 0xc8, 0x98, 0xd5, 0x7d,
+ 0xa8, 0xc5, 0x97, 0xdf, 0x42, 0x0b, 0xac, 0xb3, 0xb7, 0xe4, 0x9d, 0x6b, 0x85, 0xb8, 0x98, 0x0f,
+ 0x0e, 0x50, 0x7b, 0xf4, 0xa1, 0x0f, 0x30, 0xff, 0x8a, 0x44, 0x1f, 0x60, 0xd1, 0x4b, 0x91, 0x25,
+ 0xf1, 0x0d, 0xac, 0xa7, 0x9f, 0x7b, 0x88, 0x37, 0xf5, 0xd3, 0x4c, 0xc1, 0x2b, 0x92, 0xce, 0x5b,
+ 0x8b, 0x09, 0x74, 0x21, 0xb5, 0x07, 0x4e, 0xba, 0x90, 0xf9, 0xd7, 0x50, 0xba, 0x90, 0x05, 0xaf,
+ 0xa2, 0x90, 0x9b, 0x09, 0xcd, 0xd4, 0x6b, 0x0b, 0x71, 0x23, 0xe5, 0xa1, 0xf2, 0x1c, 0xdf, 0x5c,
+ 0x88, 0x8f, 0x79, 0xfe, 0x31, 0x6c, 0xe6, 0x5e, 0x71, 0x08, 0xe3, 0xc5, 0xaf, 0x49, 0x3a, 0x3f,
+ 0x38, 0x97, 0x26, 0xe6, 0xff, 0x07, 0xd0, 0xca, 0xbe, 0xe9, 0x10, 0x37, 0xb5, 0xa6, 0xc5, 0x8f,
+ 0x44, 0x3a, 0xc6, 0x79, 0x24, 0xfa, 0xaa, 0xa5, 0x5f, 0x78, 0xe8, 0xab, 0x56, 0xf8, 0x5c, 0x44,
+ 0x5f, 0xb5, 0x05, 0x8f, 0x43, 0x96, 0xc4, 0xb7, 0xb0, 0x91, 0x79, 0xea, 0x21, 0xf4, 0xc5, 0x2e,
+ 0x7c, 0x39, 0xd2, 0xb9, 0x79, 0x0e, 0x45, 0xcc, 0xf9, 0x0b, 0x34, 0xbc, 0x7c, 0x63, 0x2c, 0xae,
+ 0xa4, 0x16, 0x3b, 0xb9, 0x05, 0xee, 0xb4, 0xf3, 0x08, 0x5d, 0x9d, 0xb4, 0x9b, 0x5c, 0x5d, 0x9d,
+ 0xf2, 0xd7, 0xc9, 0xba, 0x3a, 0x15, 0x5d, 0xff, 0x2e, 0x89, 0x5f, 0xa0, 0x69, 0x96, 0x4f, 0xcb,
+ 0x44, 0x3b, 0xb5, 0x3f, 0xb4, 0x27, 0x64, 0x9d, 0xab, 0x05, 0x18, 0xdd, 0x2c, 0x24, 0x0f, 0xb9,
+ 0x74, 0xb3, 0x90, 0x7b, 0x8a, 0xa6, 0x9b, 0x85, 0x82, 0xb7, 0x5f, 0x4b, 0x14, 0xcf, 0xaa, 0x67,
+ 0x18, 0x34, 0xb2, 0xec, 0xc5, 0x79, 0xa7, 0xf8, 0xa2, 0xdf, 0x58, 0xfa, 0x71, 0x49, 0x7c, 0x1e,
+ 0x3f, 0xe0, 0x48, 0x2e, 0x3c, 0xb4, 0x60, 0x31, 0x7e, 0x23, 0xd8, 0xc9, 0x3c, 0xf4, 0xe2, 0xc6,
+ 0x68, 0x8d, 0xe2, 0x17, 0x35, 0xba, 0x35, 0xca, 0xbe, 0xe7, 0xd1, 0xad, 0x51, 0xfe, 0x09, 0x8e,
+ 0x9c, 0x89, 0xf8, 0xbd, 0x4d, 0x6a, 0x26, 0xb2, 0x4f, 0x73, 0x52, 0x33, 0x91, 0x7f, 0xa2, 0xb3,
+ 0x24, 0x1e, 0x42, 0x2d, 0x7e, 0x23, 0xa3, 0x8b, 0x94, 0x7d, 0xb9, 0xa3, 0x8b, 0x94, 0x7f, 0x54,
+ 0xb3, 0x74, 0xab, 0x44, 0xda, 0x26, 0x5f, 0xaa, 0xe8, 0xda, 0x96, 0x7a, 0x14, 0xd3, 0x69, 0xe7,
+ 0x11, 0xba, 0xa5, 0x8e, 0x1f, 0xa5, 0xe8, 0x82, 0x64, 0xdf, 0xba, 0x74, 0xae, 0x15, 0xe2, 0x74,
+ 0x3d, 0x53, 0xc5, 0xfd, 0x22, 0xa3, 0xdc, 0x49, 0x55, 0xb8, 0xae, 0x67, 0x99, 0x97, 0x00, 0xb1,
+ 0xa6, 0x66, 0x39, 0xa4, 0x8b, 0xfe, 0x33, 0x9a, 0x9a, 0xe1, 0x10, 0x6b, 0x2a, 0x33, 0xc9, 0x09,
+ 0xac, 0xf3, 0x79, 0xa3, 0x18, 0xa9, 0xb3, 0x4a, 0xea, 0xee, 0x45, 0x4e, 0x2f, 0x16, 0xb0, 0x2a,
+ 0x28, 0xd5, 0xe7, 0xfd, 0xac, 0x15, 0xdf, 0x8b, 0xbc, 0x66, 0xe8, 0xcc, 0xae, 0x2f, 0xc0, 0xea,
+ 0xeb, 0x15, 0x97, 0xce, 0xeb, 0xeb, 0x95, 0xad, 0xc0, 0xd7, 0xd7, 0x2b, 0x5f, 0x6b, 0xcf, 0x6e,
+ 0x26, 0x55, 0x86, 0xaf, 0xbb, 0x99, 0xa2, 0x8a, 0x7e, 0xdd, 0xcd, 0x14, 0xd7, 0xef, 0xc7, 0x86,
+ 0x0f, 0x0f, 0x2f, 0x19, 0xc3, 0x17, 0x1f, 0x1f, 0xb2, 0x86, 0x2f, 0x39, 0x2e, 0xc8, 0xe6, 0xb2,
+ 0x10, 0x3f, 0xa3, 0xc9, 0x49, 0x15, 0x7e, 0x46, 0x93, 0xf5, 0x4a, 0x7b, 0x4d, 0x93, 0x89, 0x43,
+ 0x4e, 0x93, 0x35, 0x26, 0xd7, 0x0a, 0x71, 0x99, 0x51, 0x64, 0xc4, 0x48, 0xbd, 0x4c, 0xc8, 0x8c,
+ 0x22, 0xdd, 0xdc, 0xe4, 0x13, 0x93, 0x96, 0x3f, 0xbd, 0x91, 0x22, 0xce, 0xd5, 0xad, 0xeb, 0x13,
+ 0x5b, 0x58, 0xe8, 0x2f, 0x79, 0xa6, 0x0a, 0xf0, 0x75, 0x9e, 0x45, 0x95, 0xfd, 0x3a, 0xcf, 0xe2,
+ 0xca, 0x7d, 0xf6, 0xd9, 0xd9, 0x32, 0x7b, 0xdd, 0x67, 0x2f, 0xa8, 0xeb, 0xd7, 0x7d, 0xf6, 0xc2,
+ 0x2a, 0x7d, 0x0e, 0x38, 0x72, 0x35, 0xf6, 0x7a, 0xc0, 0xb1, 0xa8, 0x88, 0x5f, 0x0f, 0x38, 0x16,
+ 0x17, 0xe9, 0x2f, 0x89, 0x43, 0x68, 0xe8, 0xf5, 0xf8, 0x22, 0x1d, 0x55, 0x65, 0x4b, 0xcf, 0x3b,
+ 0x37, 0x16, 0xa1, 0x75, 0x86, 0x7a, 0x25, 0xbd, 0x48, 0xc7, 0x92, 0xe7, 0x31, 0x2c, 0x2c, 0xc0,
+ 0x97, 0xe1, 0x45, 0xba, 0x46, 0x5e, 0xe4, 0x62, 0xc9, 0x1c, 0xdb, 0x9b, 0xe7, 0x50, 0xe8, 0x0b,
+ 0x97, 0x2d, 0x8a, 0xd7, 0x17, 0x6e, 0x41, 0xf9, 0x7d, 0xc7, 0x38, 0x8f, 0x24, 0x13, 0xb8, 0xab,
+ 0xac, 0x4d, 0x3a, 0x70, 0x4f, 0x95, 0x78, 0x67, 0x02, 0xf7, 0x4c, 0x3d, 0x35, 0xf3, 0x89, 0x4b,
+ 0x88, 0x75, 0x3e, 0xd9, 0xda, 0x7a, 0x9d, 0x4f, 0xbe, 0xfa, 0x9d, 0xd7, 0x45, 0x2f, 0xfe, 0xd5,
+ 0xd7, 0xa5, 0xa0, 0x2c, 0x5e, 0x5f, 0x97, 0xc2, 0x8a, 0x75, 0x15, 0x5e, 0x6b, 0xd5, 0xbc, 0xe9,
+ 0xf0, 0x3a, 0x5f, 0xcb, 0x9e, 0x0e, 0xaf, 0x8b, 0x8a, 0xc7, 0x97, 0xc4, 0x88, 0x1f, 0x8d, 0xe4,
+ 0xd2, 0x52, 0x3f, 0x2c, 0x98, 0xa2, 0x5c, 0x69, 0x72, 0xe7, 0xed, 0x17, 0x50, 0xe9, 0xbd, 0x14,
+ 0x54, 0x65, 0xeb, 0xbd, 0x2c, 0x2e, 0x07, 0xd7, 0x7b, 0x39, 0xaf, 0xb4, 0x7b, 0x49, 0x4c, 0xa3,
+ 0xa7, 0x23, 0xb9, 0x8e, 0xde, 0x2d, 0x9e, 0xdb, 0x7c, 0x5f, 0xb7, 0x5e, 0x4c, 0x18, 0x77, 0xe7,
+ 0xc5, 0xef, 0x45, 0xf2, 0x59, 0xbd, 0x05, 0x13, 0x9f, 0xef, 0xf0, 0xbd, 0x0b, 0x50, 0x46, 0x3d,
+ 0x3e, 0x5e, 0xe5, 0xff, 0x5a, 0xf1, 0xf1, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xee, 0x6a,
+ 0x0e, 0xc4, 0x42, 0x00, 0x00,
}
diff --git a/api/gobgp.proto b/api/gobgp.proto
index 51298fb9..8f6f87d6 100644
--- a/api/gobgp.proto
+++ b/api/gobgp.proto
@@ -36,7 +36,6 @@ service GobgpApi {
rpc AddPath(AddPathRequest) returns (AddPathResponse) {}
rpc DeletePath(DeletePathRequest) returns (DeletePathResponse) {}
rpc MonitorRib(Table) returns (stream Destination) {}
- rpc MonitorBestChanged(Arguments) returns (stream Destination) {}
rpc MonitorPeerState(Arguments) returns (stream Peer) {}
rpc EnableMrt(EnableMrtRequest) returns (EnableMrtResponse) {}
rpc DisableMrt(DisableMrtRequest) returns (DisableMrtResponse) {}
diff --git a/docs/sources/lib.md b/docs/sources/lib.md
index d5d0d299..a8c14d65 100644
--- a/docs/sources/lib.md
+++ b/docs/sources/lib.md
@@ -73,7 +73,9 @@ func main() {
}
// monitor new routes
- req = gobgp.NewGrpcRequest(gobgp.REQ_MONITOR_GLOBAL_BEST_CHANGED, "", bgp.RF_IPv4_UC, nil)
+ req = gobgp.NewGrpcRequest(gobgp.REQ_MONITOR_RIB, "", bgp.RF_IPv4_UC, &api.Table{
+ Type: api.Resource_GLOBAL,
+ })
s.GrpcReqCh <- req
for res := range req.ResponseCh {
p, _ := cmd.ApiStruct2Path(res.Data.(*api.Destination).Paths[0])
diff --git a/gobgp/cmd/monitor.go b/gobgp/cmd/monitor.go
index 7e262de8..4cb95ece 100644
--- a/gobgp/cmd/monitor.go
+++ b/gobgp/cmd/monitor.go
@@ -27,42 +27,45 @@ import (
)
func NewMonitorCmd() *cobra.Command {
- ribCmd := &cobra.Command{
- Use: CMD_RIB,
- Run: func(cmd *cobra.Command, args []string) {
- family, err := checkAddressFamily(bgp.RouteFamily(0))
+
+ monitor := func(arg *gobgpapi.Table) {
+ stream, err := client.MonitorRib(context.Background(), arg)
+ if err != nil {
+ exitWithError(err)
+ }
+ for {
+ d, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ exitWithError(err)
+ }
+ p, err := ApiStruct2Path(d.Paths[0])
if err != nil {
exitWithError(err)
}
- arg := &gobgpapi.Arguments{
- Resource: gobgpapi.Resource_GLOBAL,
- Family: uint32(family),
+
+ if globalOpts.Json {
+ j, _ := json.Marshal(p)
+ fmt.Println(string(j))
+ } else {
+ ShowRoute(p, false, false, false, true, false)
}
+ }
+ }
- stream, err := client.MonitorBestChanged(context.Background(), arg)
+ ribCmd := &cobra.Command{
+ Use: CMD_RIB,
+ Run: func(cmd *cobra.Command, args []string) {
+ family, err := checkAddressFamily(bgp.RouteFamily(0))
if err != nil {
exitWithError(err)
}
- for {
- d, err := stream.Recv()
- if err == io.EOF {
- break
- } else if err != nil {
- exitWithError(err)
- }
- p, err := ApiStruct2Path(d.Paths[0])
- if err != nil {
- exitWithError(err)
- }
-
- if globalOpts.Json {
- j, _ := json.Marshal(p)
- fmt.Println(string(j))
- } else {
- ShowRoute(p, false, false, false, true, false)
- }
+ arg := &gobgpapi.Table{
+ Type: gobgpapi.Resource_GLOBAL,
+ Family: uint32(family),
}
-
+ monitor(arg)
},
}
ribCmd.PersistentFlags().StringVarP(&subOpts.AddressFamily, "address-family", "a", "", "address family")
@@ -125,31 +128,7 @@ func NewMonitorCmd() *cobra.Command {
Family: uint32(family),
Name: name,
}
-
- stream, err := client.MonitorRib(context.Background(), arg)
- if err != nil {
- exitWithError(err)
- }
- for {
- d, err := stream.Recv()
- if err == io.EOF {
- break
- } else if err != nil {
- exitWithError(err)
- }
- p, err := ApiStruct2Path(d.Paths[0])
- if err != nil {
- exitWithError(err)
- }
-
- if globalOpts.Json {
- j, _ := json.Marshal(p)
- fmt.Println(string(j))
- } else {
- ShowRoute(p, false, false, false, true, false)
- }
- }
-
+ monitor(arg)
},
}
adjInCmd.PersistentFlags().StringVarP(&subOpts.AddressFamily, "address-family", "a", "", "address family")
diff --git a/openswitch/openswitch.go b/openswitch/openswitch.go
index 1792fc9e..c6ff5e55 100644
--- a/openswitch/openswitch.go
+++ b/openswitch/openswitch.go
@@ -567,15 +567,15 @@ func (m *OpsManager) GobgpMonitor(ready *bool) {
time.Sleep(time.Duration(time.Second * 2))
reqCh := m.grpcCh
family := bgp.RF_IPv4_UC
- arg := &api.Arguments{
- Resource: api.Resource_GLOBAL,
- Family: uint32(family),
+ arg := &api.Table{
+ Type: api.Resource_GLOBAL,
+ Family: uint32(family),
}
for {
if !*ready {
return
}
- req := server.NewGrpcRequest(server.REQ_MONITOR_GLOBAL_BEST_CHANGED, "", bgp.RouteFamily(0), arg)
+ req := server.NewGrpcRequest(server.REQ_MONITOR_RIB, "", bgp.RouteFamily(arg.Family), arg)
reqCh <- req
res := <-req.ResponseCh
if err := res.Err(); err != nil {
diff --git a/server/grpc_server.go b/server/grpc_server.go
index cbe642a2..5963b780 100644
--- a/server/grpc_server.go
+++ b/server/grpc_server.go
@@ -51,8 +51,7 @@ const (
REQ_GRPC_DELETE_NEIGHBOR
REQ_UPDATE_NEIGHBOR
REQ_GLOBAL_RIB
- REQ_MONITOR_GLOBAL_BEST_CHANGED
- REQ_MONITOR_INCOMING
+ REQ_MONITOR_RIB
REQ_MONITOR_NEIGHBOR_PEER_STATE
REQ_ENABLE_MRT
REQ_DISABLE_MRT
@@ -189,31 +188,14 @@ func (s *Server) GetRib(ctx context.Context, arg *api.GetRibRequest) (*api.GetRi
return d.(*api.GetRibResponse), nil
}
-func (s *Server) MonitorBestChanged(arg *api.Arguments, stream api.GobgpApi_MonitorBestChangedServer) error {
- var reqType int
- switch arg.Resource {
- case api.Resource_GLOBAL:
- reqType = REQ_MONITOR_GLOBAL_BEST_CHANGED
- default:
- return fmt.Errorf("unsupported resource type: %v", arg.Resource)
- }
-
- req := NewGrpcRequest(reqType, "", bgp.RouteFamily(arg.Family), nil)
- s.bgpServerCh <- req
-
- return handleMultipleResponses(req, func(res *GrpcResponse) error {
- return stream.Send(res.Data.(*api.Destination))
- })
-}
-
func (s *Server) MonitorRib(arg *api.Table, stream api.GobgpApi_MonitorRibServer) error {
switch arg.Type {
- case api.Resource_ADJ_IN:
+ case api.Resource_ADJ_IN, api.Resource_GLOBAL:
default:
return fmt.Errorf("unsupported resource type: %v", arg.Type)
}
- req := NewGrpcRequest(REQ_MONITOR_INCOMING, arg.Name, bgp.RouteFamily(arg.Family), arg)
+ req := NewGrpcRequest(REQ_MONITOR_RIB, arg.Name, bgp.RouteFamily(arg.Family), arg)
s.bgpServerCh <- req
return handleMultipleResponses(req, func(res *GrpcResponse) error {
return stream.Send(res.Data.(*api.Destination))
diff --git a/server/monitor.go b/server/monitor.go
index ac9c775b..c7236fed 100644
--- a/server/monitor.go
+++ b/server/monitor.go
@@ -22,99 +22,125 @@ import (
"gopkg.in/tomb.v2"
)
-type grpcIncomingWatcher struct {
+type grpcWatcher struct {
t tomb.Tomb
ch chan watcherEvent
ctlCh chan *GrpcRequest
- reqs []*GrpcRequest
+ reqs map[watcherEventType][]*GrpcRequest
}
-func (w *grpcIncomingWatcher) notify(t watcherEventType) chan watcherEvent {
- if t == WATCHER_EVENT_UPDATE_MSG || t == WATCHER_EVENT_POST_POLICY_UPDATE_MSG {
+func (w *grpcWatcher) notify(t watcherEventType) chan watcherEvent {
+ if t == WATCHER_EVENT_BESTPATH_CHANGE || t == WATCHER_EVENT_UPDATE_MSG || t == WATCHER_EVENT_POST_POLICY_UPDATE_MSG {
return w.ch
}
return nil
}
-func (w *grpcIncomingWatcher) stop() {
+func (w *grpcWatcher) stop() {
w.t.Kill(nil)
}
-func (w *grpcIncomingWatcher) watchingEventTypes() []watcherEventType {
- pre := false
- post := false
- for _, req := range w.reqs {
- if req.Data.(*api.Table).PostPolicy {
- post = true
- } else {
- pre = true
+func (w *grpcWatcher) watchingEventTypes() []watcherEventType {
+ types := make([]watcherEventType, 0, 3)
+ for _, t := range []watcherEventType{WATCHER_EVENT_UPDATE_MSG, WATCHER_EVENT_POST_POLICY_UPDATE_MSG, WATCHER_EVENT_BESTPATH_CHANGE} {
+ if len(w.reqs[t]) > 0 {
+ types = append(types, t)
}
}
- types := make([]watcherEventType, 0, 2)
- if pre {
- types = append(types, WATCHER_EVENT_UPDATE_MSG)
- }
- if post {
- types = append(types, WATCHER_EVENT_POST_POLICY_UPDATE_MSG)
- }
return types
}
-func (w *grpcIncomingWatcher) loop() error {
+func (w *grpcWatcher) loop() error {
for {
select {
case <-w.t.Dying():
- for _, req := range w.reqs {
- close(req.ResponseCh)
+ for _, rs := range w.reqs {
+ for _, req := range rs {
+ close(req.ResponseCh)
+ }
}
return nil
case req := <-w.ctlCh:
- w.reqs = append(w.reqs, req)
- case ev := <-w.ch:
- msg := ev.(*watcherEventUpdateMsg)
- for _, path := range msg.pathList {
- remains := make([]*GrpcRequest, 0, len(w.reqs))
- result := &GrpcResponse{
- Data: &api.Destination{
- Prefix: path.GetNlri().String(),
- Paths: []*api.Path{path.ToApiStruct(table.GLOBAL_RIB_NAME)},
- },
+ tbl := req.Data.(*api.Table)
+ var reqType watcherEventType
+ switch tbl.Type {
+ case api.Resource_GLOBAL:
+ reqType = WATCHER_EVENT_BESTPATH_CHANGE
+ case api.Resource_ADJ_IN:
+ if tbl.PostPolicy {
+ reqType = WATCHER_EVENT_POST_POLICY_UPDATE_MSG
+ } else {
+ reqType = WATCHER_EVENT_UPDATE_MSG
}
- for _, req := range w.reqs {
- select {
- case <-req.EndCh:
+ default:
+ continue
+ }
+ reqs := w.reqs[reqType]
+ if reqs == nil {
+ reqs = make([]*GrpcRequest, 0, 16)
+ }
+ reqs = append(reqs, req)
+ w.reqs[reqType] = reqs
+ case ev := <-w.ch:
+ sendPaths := func(reqType watcherEventType, paths []*table.Path) {
+ for _, path := range paths {
+ if path == nil {
continue
- default:
}
- remains = append(remains, req)
- if req.RouteFamily != bgp.RouteFamily(0) && req.RouteFamily != path.GetRouteFamily() {
- continue
+ remains := make([]*GrpcRequest, 0, len(w.reqs[reqType]))
+ result := &GrpcResponse{
+ Data: &api.Destination{
+ Prefix: path.GetNlri().String(),
+ Paths: []*api.Path{path.ToApiStruct(table.GLOBAL_RIB_NAME)},
+ },
}
- if req.Name != "" && req.Name != path.GetSource().Address.String() {
- continue
+ for _, req := range w.reqs[reqType] {
+ select {
+ case <-req.EndCh:
+ continue
+ default:
+ }
+ remains = append(remains, req)
+ if req.RouteFamily != bgp.RouteFamily(0) && req.RouteFamily != path.GetRouteFamily() {
+ continue
+ }
+ if req.Name != "" && req.Name != path.GetSource().Address.String() {
+ continue
+ }
+ req.ResponseCh <- result
}
- req.ResponseCh <- result
+ w.reqs[reqType] = remains
}
- w.reqs = remains
}
+ switch msg := ev.(type) {
+ case *watcherEventBestPathMsg:
+ sendPaths(WATCHER_EVENT_BESTPATH_CHANGE, msg.pathList)
+ case *watcherEventUpdateMsg:
+ if msg.postPolicy {
+ sendPaths(WATCHER_EVENT_POST_POLICY_UPDATE_MSG, msg.pathList)
+ } else {
+ sendPaths(WATCHER_EVENT_UPDATE_MSG, msg.pathList)
+ }
+ }
+
}
}
}
-func (w *grpcIncomingWatcher) restart(string) error {
+func (w *grpcWatcher) restart(string) error {
return nil
}
-func (w *grpcIncomingWatcher) addRequest(req *GrpcRequest) error {
+func (w *grpcWatcher) addRequest(req *GrpcRequest) error {
w.ctlCh <- req
return nil
}
-func newGrpcIncomingWatcher() (*grpcIncomingWatcher, error) {
- w := &grpcIncomingWatcher{
+func newGrpcWatcher() (*grpcWatcher, error) {
+ w := &grpcWatcher{
ch: make(chan watcherEvent),
ctlCh: make(chan *GrpcRequest),
- reqs: make([]*GrpcRequest, 0, 16),
+ reqs: make(map[watcherEventType][]*GrpcRequest),
}
w.t.Go(w.loop)
return w, nil
diff --git a/server/server.go b/server/server.go
index faf4a06c..7bd29048 100644
--- a/server/server.go
+++ b/server/server.go
@@ -195,8 +195,8 @@ func (server *BgpServer) Listeners(addr string) []*net.TCPListener {
}
func (server *BgpServer) Serve() {
- w, _ := newGrpcIncomingWatcher()
- server.watchers[WATCHER_GRPC_INCOMING] = w
+ w, _ := newGrpcWatcher()
+ server.watchers[WATCHER_GRPC_MONITOR] = w
senderCh := make(chan *SenderMsg, 1<<16)
go func(ch chan *SenderMsg) {
@@ -478,7 +478,7 @@ func (server *BgpServer) dropPeerAllRoutes(peer *Peer, families []bgp.RouteFamil
best, _ := server.globalRib.DeletePathsByPeer(ids, peer.fsm.peerInfo, rf)
if !peer.isRouteServerClient() {
- server.broadcastBests(best[table.GLOBAL_RIB_NAME])
+ server.notify2watchers(WATCHER_EVENT_BESTPATH_CHANGE, &watcherEventBestPathMsg{pathList: best[table.GLOBAL_RIB_NAME]})
}
for _, targetPeer := range server.neighborMap {
@@ -493,44 +493,6 @@ func (server *BgpServer) dropPeerAllRoutes(peer *Peer, families []bgp.RouteFamil
return msgs
}
-func (server *BgpServer) broadcastBests(bests []*table.Path) {
- server.notify2watchers(WATCHER_EVENT_BESTPATH_CHANGE, &watcherEventBestPathMsg{pathList: bests})
- for _, path := range bests {
- if path == nil {
- continue
- }
- rf := path.GetRouteFamily()
-
- result := &GrpcResponse{
- Data: &api.Destination{
- Prefix: path.GetNlri().String(),
- Paths: []*api.Path{path.ToApiStruct(table.GLOBAL_RIB_NAME)},
- },
- }
- remainReqs := make([]*GrpcRequest, 0, len(server.broadcastReqs))
- for _, req := range server.broadcastReqs {
- select {
- case <-req.EndCh:
- continue
- default:
- }
- if req.RequestType != REQ_MONITOR_GLOBAL_BEST_CHANGED {
- remainReqs = append(remainReqs, req)
- continue
- }
- if req.RouteFamily == bgp.RouteFamily(0) || req.RouteFamily == rf {
- m := &broadcastGrpcMsg{
- req: req,
- result: result,
- }
- server.broadcastMsgs = append(server.broadcastMsgs, m)
- }
- remainReqs = append(remainReqs, req)
- }
- server.broadcastReqs = remainReqs
- }
-}
-
func (server *BgpServer) broadcastPeerState(peer *Peer, oldState bgp.FSMState) {
result := &GrpcResponse{
Data: peer.ToApiStruct(),
@@ -688,7 +650,7 @@ func (server *BgpServer) propagateUpdate(peer *Peer, pathList []*table.Path) ([]
if len(best[table.GLOBAL_RIB_NAME]) == 0 {
return nil, alteredPathList
}
- server.broadcastBests(best[table.GLOBAL_RIB_NAME])
+ server.notify2watchers(WATCHER_EVENT_BESTPATH_CHANGE, &watcherEventBestPathMsg{pathList: best[table.GLOBAL_RIB_NAME]})
}
for _, targetPeer := range server.neighborMap {
@@ -2291,16 +2253,16 @@ func (server *BgpServer) handleGrpc(grpcReq *GrpcRequest) []*SenderMsg {
Data: data,
}
close(grpcReq.ResponseCh)
- case REQ_MONITOR_GLOBAL_BEST_CHANGED, REQ_MONITOR_NEIGHBOR_PEER_STATE:
+ case REQ_MONITOR_NEIGHBOR_PEER_STATE:
server.broadcastReqs = append(server.broadcastReqs, grpcReq)
- case REQ_MONITOR_INCOMING:
+ case REQ_MONITOR_RIB:
if grpcReq.Name != "" {
if _, err = server.checkNeighborRequest(grpcReq); err != nil {
break
}
}
- w := server.watchers[WATCHER_GRPC_INCOMING]
- go w.(*grpcIncomingWatcher).addRequest(grpcReq)
+ w := server.watchers[WATCHER_GRPC_MONITOR]
+ go w.(*grpcWatcher).addRequest(grpcReq)
case REQ_ENABLE_MRT:
server.handleEnableMrtRequest(grpcReq)
case REQ_DISABLE_MRT:
diff --git a/server/watcher.go b/server/watcher.go
index 8df5edbb..8c92fab3 100644
--- a/server/watcher.go
+++ b/server/watcher.go
@@ -44,8 +44,7 @@ const (
WATCHER_BMP
WATCHER_ZEBRA
WATCHER_COLLECTOR
- WATCHER_GRPC_BESTPATH
- WATCHER_GRPC_INCOMING
+ WATCHER_GRPC_MONITOR
)
type watcherEventType uint8
diff --git a/server/zclient.go b/server/zclient.go
index 87e303d4..1b37e5db 100644
--- a/server/zclient.go
+++ b/server/zclient.go
@@ -29,7 +29,7 @@ import (
)
func newIPRouteMessage(path *table.Path) *zebra.Message {
- if path.IsFromExternal() {
+ if path == nil || path.IsFromExternal() {
return nil
}
l := strings.SplitN(path.GetNlri().String(), "/", 2)
diff --git a/server/zclient_test.go b/server/zclient_test.go
index a09b59e6..8067c53f 100644
--- a/server/zclient_test.go
+++ b/server/zclient_test.go
@@ -16,14 +16,16 @@
package server
import (
+ "github.com/osrg/gobgp/gobgp/cmd"
"github.com/osrg/gobgp/table"
"github.com/osrg/gobgp/zebra"
"github.com/stretchr/testify/assert"
"net"
"testing"
+ "time"
)
-func Test_createPathFromIPRouteMessage(t *testing.T) {
+func Test_createRequestFromIPRouteMessage(t *testing.T) {
assert := assert.New(t)
m := &zebra.Message{}
@@ -51,28 +53,36 @@ func Test_createPathFromIPRouteMessage(t *testing.T) {
m.Header = *h
m.Body = b
- pi := &table.PeerInfo{
- AS: 65000,
- LocalID: net.ParseIP("10.0.0.1"),
- }
- p := createPathFromIPRouteMessage(m, pi)
- assert.NotEqual(nil, p)
- assert.Equal("0.0.0.0", p.GetNexthop().String())
- assert.Equal("192.168.100.0/24", p.GetNlri().String())
- assert.True(p.IsFromExternal())
- assert.False(p.IsWithdraw)
+ p := createRequestFromIPRouteMessage(m)
+ assert.NotNil(p)
+ paths, err := cmd.ApiStruct2Path(p.Path)
+ assert.Nil(err)
+ assert.Equal(len(paths), 1)
+ path := paths[0]
+ pp := table.NewPath(nil, path.Nlri, path.IsWithdraw, path.PathAttrs, time.Now(), false)
+ pp.SetIsFromExternal(p.Path.IsFromExternal)
+ assert.Equal("0.0.0.0", pp.GetNexthop().String())
+ assert.Equal("192.168.100.0/24", pp.GetNlri().String())
+ assert.True(pp.IsFromExternal())
+ assert.False(pp.IsWithdraw)
// withdraw
h.Command = zebra.IPV4_ROUTE_DELETE
m.Header = *h
- p = createPathFromIPRouteMessage(m, pi)
- assert.NotEqual(nil, p)
- assert.Equal("0.0.0.0", p.GetNexthop().String())
- assert.Equal("192.168.100.0/24", p.GetNlri().String())
- med, _ := p.GetMed()
+ p = createRequestFromIPRouteMessage(m)
+ assert.NotNil(p)
+ paths, err = cmd.ApiStruct2Path(p.Path)
+ assert.Nil(err)
+ assert.Equal(len(paths), 1)
+ path = paths[0]
+ pp = table.NewPath(nil, path.Nlri, path.IsWithdraw, path.PathAttrs, time.Now(), false)
+ pp.SetIsFromExternal(p.Path.IsFromExternal)
+ assert.Equal("0.0.0.0", pp.GetNexthop().String())
+ assert.Equal("192.168.100.0/24", pp.GetNlri().String())
+ med, _ := pp.GetMed()
assert.Equal(uint32(100), med)
- assert.True(p.IsFromExternal())
- assert.True(p.IsWithdraw)
+ assert.True(pp.IsFromExternal())
+ assert.True(pp.IsWithdraw)
// IPv6
h.Command = zebra.IPV6_ROUTE_ADD
@@ -82,23 +92,34 @@ func Test_createPathFromIPRouteMessage(t *testing.T) {
m.Header = *h
m.Body = b
- p = createPathFromIPRouteMessage(m, pi)
- assert.NotEqual(nil, p)
- assert.Equal("::", p.GetNexthop().String())
- assert.Equal("2001:db8:0:f101::/64", p.GetNlri().String())
- med, _ = p.GetMed()
+ p = createRequestFromIPRouteMessage(m)
+ assert.NotNil(p)
+ paths, err = cmd.ApiStruct2Path(p.Path)
+ assert.Nil(err)
+ assert.Equal(len(paths), 1)
+ path = paths[0]
+ pp = table.NewPath(nil, path.Nlri, path.IsWithdraw, path.PathAttrs, time.Now(), false)
+ pp.SetIsFromExternal(p.Path.IsFromExternal)
+ assert.Equal("::", pp.GetNexthop().String())
+ assert.Equal("2001:db8:0:f101::/64", pp.GetNlri().String())
+ med, _ = pp.GetMed()
assert.Equal(uint32(100), med)
- assert.True(p.IsFromExternal())
- assert.False(p.IsWithdraw)
+ assert.True(pp.IsFromExternal())
+ assert.False(pp.IsWithdraw)
// withdraw
h.Command = zebra.IPV6_ROUTE_DELETE
m.Header = *h
- p = createPathFromIPRouteMessage(m, pi)
- assert.NotEqual(nil, p)
- assert.Equal("::", p.GetNexthop().String())
- assert.Equal("2001:db8:0:f101::/64", p.GetNlri().String())
- assert.True(p.IsFromExternal())
- assert.True(p.IsWithdraw)
-
+ p = createRequestFromIPRouteMessage(m)
+ assert.NotNil(p)
+ paths, err = cmd.ApiStruct2Path(p.Path)
+ assert.Nil(err)
+ assert.Equal(len(paths), 1)
+ path = paths[0]
+ pp = table.NewPath(nil, path.Nlri, path.IsWithdraw, path.PathAttrs, time.Now(), false)
+ pp.SetIsFromExternal(p.Path.IsFromExternal)
+ assert.Equal("::", pp.GetNexthop().String())
+ assert.Equal("2001:db8:0:f101::/64", pp.GetNlri().String())
+ assert.True(pp.IsFromExternal())
+ assert.True(pp.IsWithdraw)
}