github.com/livekit/protocol@v1.39.3/rpc/ingress.psrpc.go (about)

     1  // Code generated by protoc-gen-psrpc v0.6.0, DO NOT EDIT.
     2  // source: rpc/ingress.proto
     3  
     4  package rpc
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/livekit/psrpc"
    10  	"github.com/livekit/psrpc/pkg/client"
    11  	"github.com/livekit/psrpc/pkg/info"
    12  	"github.com/livekit/psrpc/pkg/rand"
    13  	"github.com/livekit/psrpc/pkg/server"
    14  	"github.com/livekit/psrpc/version"
    15  )
    16  import google_protobuf "google.golang.org/protobuf/types/known/emptypb"
    17  import livekit5 "github.com/livekit/protocol/livekit"
    18  
    19  var _ = version.PsrpcVersion_0_6
    20  
    21  // ================================
    22  // IngressInternal Client Interface
    23  // ================================
    24  
    25  type IngressInternalClient interface {
    26  	StartIngress(ctx context.Context, req *StartIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressInfo, error)
    27  
    28  	ListActiveIngress(ctx context.Context, topic string, req *ListActiveIngressRequest, opts ...psrpc.RequestOption) (<-chan *psrpc.Response[*ListActiveIngressResponse], error)
    29  
    30  	KillIngressSession(ctx context.Context, ingressId string, resourceId string, req *KillIngressSessionRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    31  
    32  	// Close immediately, without waiting for pending RPCs
    33  	Close()
    34  }
    35  
    36  // ====================================
    37  // IngressInternal ServerImpl Interface
    38  // ====================================
    39  
    40  type IngressInternalServerImpl interface {
    41  	StartIngress(context.Context, *StartIngressRequest) (*livekit5.IngressInfo, error)
    42  	StartIngressAffinity(context.Context, *StartIngressRequest) float32
    43  
    44  	ListActiveIngress(context.Context, *ListActiveIngressRequest) (*ListActiveIngressResponse, error)
    45  
    46  	KillIngressSession(context.Context, *KillIngressSessionRequest) (*google_protobuf.Empty, error)
    47  }
    48  
    49  // ================================
    50  // IngressInternal Server Interface
    51  // ================================
    52  
    53  type IngressInternalServer interface {
    54  	RegisterListActiveIngressTopic(topic string) error
    55  	DeregisterListActiveIngressTopic(topic string)
    56  	RegisterKillIngressSessionTopic(ingressId string, resourceId string) error
    57  	DeregisterKillIngressSessionTopic(ingressId string, resourceId string)
    58  
    59  	// Close and wait for pending RPCs to complete
    60  	Shutdown()
    61  
    62  	// Close immediately, without waiting for pending RPCs
    63  	Kill()
    64  }
    65  
    66  // ======================
    67  // IngressInternal Client
    68  // ======================
    69  
    70  type ingressInternalClient struct {
    71  	client *client.RPCClient
    72  }
    73  
    74  // NewIngressInternalClient creates a psrpc client that implements the IngressInternalClient interface.
    75  func NewIngressInternalClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (IngressInternalClient, error) {
    76  	sd := &info.ServiceDefinition{
    77  		Name: "IngressInternal",
    78  		ID:   rand.NewClientID(),
    79  	}
    80  
    81  	sd.RegisterMethod("StartIngress", true, false, true, false)
    82  	sd.RegisterMethod("ListActiveIngress", false, true, false, false)
    83  	sd.RegisterMethod("KillIngressSession", false, false, true, true)
    84  
    85  	rpcClient, err := client.NewRPCClient(sd, bus, opts...)
    86  	if err != nil {
    87  		return nil, err
    88  	}
    89  
    90  	return &ingressInternalClient{
    91  		client: rpcClient,
    92  	}, nil
    93  }
    94  
    95  func (c *ingressInternalClient) StartIngress(ctx context.Context, req *StartIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressInfo, error) {
    96  	return client.RequestSingle[*livekit5.IngressInfo](ctx, c.client, "StartIngress", nil, req, opts...)
    97  }
    98  
    99  func (c *ingressInternalClient) ListActiveIngress(ctx context.Context, topic string, req *ListActiveIngressRequest, opts ...psrpc.RequestOption) (<-chan *psrpc.Response[*ListActiveIngressResponse], error) {
   100  	return client.RequestMulti[*ListActiveIngressResponse](ctx, c.client, "ListActiveIngress", []string{topic}, req, opts...)
   101  }
   102  
   103  func (c *ingressInternalClient) KillIngressSession(ctx context.Context, ingressId string, resourceId string, req *KillIngressSessionRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   104  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "KillIngressSession", []string{ingressId, resourceId}, req, opts...)
   105  }
   106  
   107  func (s *ingressInternalClient) Close() {
   108  	s.client.Close()
   109  }
   110  
   111  // ======================
   112  // IngressInternal Server
   113  // ======================
   114  
   115  type ingressInternalServer struct {
   116  	svc IngressInternalServerImpl
   117  	rpc *server.RPCServer
   118  }
   119  
   120  // NewIngressInternalServer builds a RPCServer that will route requests
   121  // to the corresponding method in the provided svc implementation.
   122  func NewIngressInternalServer(svc IngressInternalServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (IngressInternalServer, error) {
   123  	sd := &info.ServiceDefinition{
   124  		Name: "IngressInternal",
   125  		ID:   rand.NewServerID(),
   126  	}
   127  
   128  	s := server.NewRPCServer(sd, bus, opts...)
   129  
   130  	sd.RegisterMethod("StartIngress", true, false, true, false)
   131  	var err error
   132  	err = server.RegisterHandler(s, "StartIngress", nil, svc.StartIngress, svc.StartIngressAffinity)
   133  	if err != nil {
   134  		s.Close(false)
   135  		return nil, err
   136  	}
   137  
   138  	sd.RegisterMethod("ListActiveIngress", false, true, false, false)
   139  	sd.RegisterMethod("KillIngressSession", false, false, true, true)
   140  	return &ingressInternalServer{
   141  		svc: svc,
   142  		rpc: s,
   143  	}, nil
   144  }
   145  
   146  func (s *ingressInternalServer) RegisterListActiveIngressTopic(topic string) error {
   147  	return server.RegisterHandler(s.rpc, "ListActiveIngress", []string{topic}, s.svc.ListActiveIngress, nil)
   148  }
   149  
   150  func (s *ingressInternalServer) DeregisterListActiveIngressTopic(topic string) {
   151  	s.rpc.DeregisterHandler("ListActiveIngress", []string{topic})
   152  }
   153  
   154  func (s *ingressInternalServer) RegisterKillIngressSessionTopic(ingressId string, resourceId string) error {
   155  	return server.RegisterHandler(s.rpc, "KillIngressSession", []string{ingressId, resourceId}, s.svc.KillIngressSession, nil)
   156  }
   157  
   158  func (s *ingressInternalServer) DeregisterKillIngressSessionTopic(ingressId string, resourceId string) {
   159  	s.rpc.DeregisterHandler("KillIngressSession", []string{ingressId, resourceId})
   160  }
   161  
   162  func (s *ingressInternalServer) Shutdown() {
   163  	s.rpc.Close(false)
   164  }
   165  
   166  func (s *ingressInternalServer) Kill() {
   167  	s.rpc.Close(true)
   168  }
   169  
   170  // ===============================
   171  // IngressHandler Client Interface
   172  // ===============================
   173  
   174  type IngressHandlerClient interface {
   175  	UpdateIngress(ctx context.Context, topic string, req *livekit5.UpdateIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressState, error)
   176  
   177  	DeleteIngress(ctx context.Context, topic string, req *livekit5.DeleteIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressState, error)
   178  
   179  	DeleteWHIPResource(ctx context.Context, topic string, req *DeleteWHIPResourceRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
   180  
   181  	ICERestartWHIPResource(ctx context.Context, topic string, req *ICERestartWHIPResourceRequest, opts ...psrpc.RequestOption) (*ICERestartWHIPResourceResponse, error)
   182  
   183  	// Close immediately, without waiting for pending RPCs
   184  	Close()
   185  }
   186  
   187  // ===================================
   188  // IngressHandler ServerImpl Interface
   189  // ===================================
   190  
   191  type IngressHandlerServerImpl interface {
   192  	UpdateIngress(context.Context, *livekit5.UpdateIngressRequest) (*livekit5.IngressState, error)
   193  
   194  	DeleteIngress(context.Context, *livekit5.DeleteIngressRequest) (*livekit5.IngressState, error)
   195  
   196  	DeleteWHIPResource(context.Context, *DeleteWHIPResourceRequest) (*google_protobuf.Empty, error)
   197  
   198  	ICERestartWHIPResource(context.Context, *ICERestartWHIPResourceRequest) (*ICERestartWHIPResourceResponse, error)
   199  }
   200  
   201  // ===============================
   202  // IngressHandler Server Interface
   203  // ===============================
   204  
   205  type IngressHandlerServer interface {
   206  	RegisterUpdateIngressTopic(topic string) error
   207  	DeregisterUpdateIngressTopic(topic string)
   208  	RegisterDeleteIngressTopic(topic string) error
   209  	DeregisterDeleteIngressTopic(topic string)
   210  	RegisterDeleteWHIPResourceTopic(topic string) error
   211  	DeregisterDeleteWHIPResourceTopic(topic string)
   212  	RegisterICERestartWHIPResourceTopic(topic string) error
   213  	DeregisterICERestartWHIPResourceTopic(topic string)
   214  
   215  	// Close and wait for pending RPCs to complete
   216  	Shutdown()
   217  
   218  	// Close immediately, without waiting for pending RPCs
   219  	Kill()
   220  }
   221  
   222  // =====================
   223  // IngressHandler Client
   224  // =====================
   225  
   226  type ingressHandlerClient struct {
   227  	client *client.RPCClient
   228  }
   229  
   230  // NewIngressHandlerClient creates a psrpc client that implements the IngressHandlerClient interface.
   231  func NewIngressHandlerClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (IngressHandlerClient, error) {
   232  	sd := &info.ServiceDefinition{
   233  		Name: "IngressHandler",
   234  		ID:   rand.NewClientID(),
   235  	}
   236  
   237  	sd.RegisterMethod("UpdateIngress", false, false, true, true)
   238  	sd.RegisterMethod("DeleteIngress", false, false, true, true)
   239  	sd.RegisterMethod("DeleteWHIPResource", false, false, true, true)
   240  	sd.RegisterMethod("ICERestartWHIPResource", false, false, true, true)
   241  
   242  	rpcClient, err := client.NewRPCClient(sd, bus, opts...)
   243  	if err != nil {
   244  		return nil, err
   245  	}
   246  
   247  	return &ingressHandlerClient{
   248  		client: rpcClient,
   249  	}, nil
   250  }
   251  
   252  func (c *ingressHandlerClient) UpdateIngress(ctx context.Context, topic string, req *livekit5.UpdateIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressState, error) {
   253  	return client.RequestSingle[*livekit5.IngressState](ctx, c.client, "UpdateIngress", []string{topic}, req, opts...)
   254  }
   255  
   256  func (c *ingressHandlerClient) DeleteIngress(ctx context.Context, topic string, req *livekit5.DeleteIngressRequest, opts ...psrpc.RequestOption) (*livekit5.IngressState, error) {
   257  	return client.RequestSingle[*livekit5.IngressState](ctx, c.client, "DeleteIngress", []string{topic}, req, opts...)
   258  }
   259  
   260  func (c *ingressHandlerClient) DeleteWHIPResource(ctx context.Context, topic string, req *DeleteWHIPResourceRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   261  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "DeleteWHIPResource", []string{topic}, req, opts...)
   262  }
   263  
   264  func (c *ingressHandlerClient) ICERestartWHIPResource(ctx context.Context, topic string, req *ICERestartWHIPResourceRequest, opts ...psrpc.RequestOption) (*ICERestartWHIPResourceResponse, error) {
   265  	return client.RequestSingle[*ICERestartWHIPResourceResponse](ctx, c.client, "ICERestartWHIPResource", []string{topic}, req, opts...)
   266  }
   267  
   268  func (s *ingressHandlerClient) Close() {
   269  	s.client.Close()
   270  }
   271  
   272  // =====================
   273  // IngressHandler Server
   274  // =====================
   275  
   276  type ingressHandlerServer struct {
   277  	svc IngressHandlerServerImpl
   278  	rpc *server.RPCServer
   279  }
   280  
   281  // NewIngressHandlerServer builds a RPCServer that will route requests
   282  // to the corresponding method in the provided svc implementation.
   283  func NewIngressHandlerServer(svc IngressHandlerServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (IngressHandlerServer, error) {
   284  	sd := &info.ServiceDefinition{
   285  		Name: "IngressHandler",
   286  		ID:   rand.NewServerID(),
   287  	}
   288  
   289  	s := server.NewRPCServer(sd, bus, opts...)
   290  
   291  	sd.RegisterMethod("UpdateIngress", false, false, true, true)
   292  	sd.RegisterMethod("DeleteIngress", false, false, true, true)
   293  	sd.RegisterMethod("DeleteWHIPResource", false, false, true, true)
   294  	sd.RegisterMethod("ICERestartWHIPResource", false, false, true, true)
   295  	return &ingressHandlerServer{
   296  		svc: svc,
   297  		rpc: s,
   298  	}, nil
   299  }
   300  
   301  func (s *ingressHandlerServer) RegisterUpdateIngressTopic(topic string) error {
   302  	return server.RegisterHandler(s.rpc, "UpdateIngress", []string{topic}, s.svc.UpdateIngress, nil)
   303  }
   304  
   305  func (s *ingressHandlerServer) DeregisterUpdateIngressTopic(topic string) {
   306  	s.rpc.DeregisterHandler("UpdateIngress", []string{topic})
   307  }
   308  
   309  func (s *ingressHandlerServer) RegisterDeleteIngressTopic(topic string) error {
   310  	return server.RegisterHandler(s.rpc, "DeleteIngress", []string{topic}, s.svc.DeleteIngress, nil)
   311  }
   312  
   313  func (s *ingressHandlerServer) DeregisterDeleteIngressTopic(topic string) {
   314  	s.rpc.DeregisterHandler("DeleteIngress", []string{topic})
   315  }
   316  
   317  func (s *ingressHandlerServer) RegisterDeleteWHIPResourceTopic(topic string) error {
   318  	return server.RegisterHandler(s.rpc, "DeleteWHIPResource", []string{topic}, s.svc.DeleteWHIPResource, nil)
   319  }
   320  
   321  func (s *ingressHandlerServer) DeregisterDeleteWHIPResourceTopic(topic string) {
   322  	s.rpc.DeregisterHandler("DeleteWHIPResource", []string{topic})
   323  }
   324  
   325  func (s *ingressHandlerServer) RegisterICERestartWHIPResourceTopic(topic string) error {
   326  	return server.RegisterHandler(s.rpc, "ICERestartWHIPResource", []string{topic}, s.svc.ICERestartWHIPResource, nil)
   327  }
   328  
   329  func (s *ingressHandlerServer) DeregisterICERestartWHIPResourceTopic(topic string) {
   330  	s.rpc.DeregisterHandler("ICERestartWHIPResource", []string{topic})
   331  }
   332  
   333  func (s *ingressHandlerServer) Shutdown() {
   334  	s.rpc.Close(false)
   335  }
   336  
   337  func (s *ingressHandlerServer) Kill() {
   338  	s.rpc.Close(true)
   339  }
   340  
   341  var psrpcFileDescriptor3 = []byte{
   342  	// 748 bytes of a gzipped FileDescriptorProto
   343  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xcd, 0x6e, 0xdb, 0x46,
   344  	0x10, 0xc6, 0x52, 0xb2, 0x6a, 0x8d, 0x2c, 0x5b, 0x5e, 0xff, 0x80, 0x62, 0x21, 0xff, 0xd0, 0x17,
   345  	0x01, 0x45, 0xa9, 0x42, 0xbd, 0x14, 0x3d, 0x14, 0xae, 0x5b, 0x1b, 0x56, 0xed, 0x02, 0x06, 0x15,
   346  	0x23, 0x40, 0x02, 0x84, 0xa0, 0xc9, 0x15, 0xb3, 0x10, 0xc5, 0x65, 0x76, 0x57, 0x36, 0x74, 0x0b,
   347  	0x72, 0xd3, 0xbb, 0xe4, 0xa4, 0x27, 0xc8, 0x1b, 0xe5, 0x15, 0x02, 0x92, 0x4b, 0x59, 0xbf, 0x46,
   348  	0x2e, 0xb9, 0x69, 0xbe, 0x19, 0xce, 0xce, 0x7e, 0xf3, 0xed, 0x27, 0xd8, 0xe5, 0xb1, 0xd7, 0xa2,
   349  	0x51, 0xc0, 0x89, 0x10, 0x56, 0xcc, 0x99, 0x64, 0xb8, 0xc0, 0x63, 0xcf, 0xa8, 0xb2, 0x58, 0x52,
   350  	0x16, 0x29, 0xcc, 0x38, 0x08, 0xe9, 0x23, 0xe9, 0x53, 0xe9, 0xcc, 0x95, 0x1a, 0x3f, 0x07, 0x8c,
   351  	0x05, 0x21, 0x69, 0xa5, 0xd1, 0xc3, 0xb0, 0xd7, 0x22, 0x83, 0x58, 0x8e, 0xb2, 0xa4, 0x69, 0x80,
   352  	0x7e, 0x4b, 0x85, 0xfc, 0xdb, 0x93, 0xf4, 0x91, 0x74, 0xb2, 0xef, 0x6c, 0xf2, 0x61, 0x48, 0x84,
   353  	0x34, 0x3f, 0x22, 0xa8, 0xaf, 0x48, 0x8a, 0x98, 0x45, 0x82, 0xe0, 0x33, 0xa8, 0xa8, 0x73, 0x1c,
   354  	0xea, 0x0b, 0x1d, 0x9d, 0x14, 0x9a, 0xe5, 0x0b, 0x4d, 0x47, 0x36, 0x28, 0xb8, 0xe3, 0x0b, 0xfc,
   355  	0x17, 0xd4, 0xf2, 0x22, 0x41, 0x84, 0x48, 0x86, 0xd5, 0xb5, 0x93, 0x42, 0xb3, 0xd2, 0xde, 0xb3,
   356  	0x78, 0xec, 0x59, 0xaa, 0x69, 0x37, 0xcb, 0xd9, 0x3b, 0x74, 0x2e, 0x16, 0xe6, 0x5b, 0xa8, 0xff,
   357  	0x4b, 0x42, 0x22, 0xc9, 0xeb, 0xeb, 0xce, 0x9d, 0x4d, 0x04, 0x1b, 0x72, 0x8f, 0xa8, 0xf9, 0xf0,
   358  	0x31, 0x54, 0xb8, 0x82, 0x1c, 0xea, 0xeb, 0xe8, 0x04, 0x35, 0xcb, 0x36, 0xe4, 0x50, 0xc7, 0xc7,
   359  	0x0d, 0x00, 0x21, 0x39, 0x71, 0x07, 0x4e, 0x9f, 0x8c, 0x74, 0x2d, 0xcd, 0x97, 0x33, 0xe4, 0x86,
   360  	0x8c, 0xcc, 0x2f, 0x08, 0x1a, 0x9d, 0x7f, 0x2e, 0x6d, 0x22, 0xa4, 0xcb, 0xe5, 0x0f, 0x38, 0x01,
   361  	0x9f, 0x41, 0x75, 0x28, 0x08, 0x77, 0x7a, 0xdc, 0x0d, 0x06, 0x24, 0x92, 0x7a, 0x21, 0xad, 0xd8,
   362  	0x4a, 0xc0, 0x2b, 0x85, 0x61, 0x03, 0x36, 0x63, 0x57, 0x88, 0x27, 0xc6, 0x7d, 0xbd, 0x98, 0xe6,
   363  	0xa7, 0x31, 0x3e, 0x02, 0xf0, 0xdc, 0xc8, 0xa7, 0xbe, 0x2b, 0x89, 0xd0, 0x37, 0x12, 0x8e, 0xed,
   364  	0x19, 0xc4, 0xbc, 0x83, 0xa3, 0x75, 0x37, 0x50, 0x6b, 0xb2, 0x60, 0x4f, 0x72, 0xea, 0xf5, 0x43,
   365  	0xe2, 0x50, 0x8f, 0x38, 0xc2, 0x8f, 0x93, 0x61, 0xd4, 0x55, 0x76, 0x55, 0xaa, 0xe3, 0x91, 0x6e,
   366  	0x96, 0x30, 0x3f, 0x69, 0xb0, 0xd7, 0x4d, 0xba, 0xcd, 0x8b, 0x01, 0x37, 0xa1, 0x48, 0xa3, 0x1e,
   367  	0x4b, 0x3f, 0xac, 0xb4, 0xf7, 0x2d, 0xa5, 0xb5, 0x7c, 0x83, 0x9d, 0xa8, 0xc7, 0xec, 0xb4, 0x02,
   368  	0xef, 0xc3, 0x86, 0x64, 0x7d, 0x12, 0x29, 0x3a, 0xb2, 0x00, 0x1f, 0x40, 0xe9, 0x49, 0x38, 0x43,
   369  	0x1e, 0x2a, 0x0e, 0x36, 0x9e, 0xc4, 0x3d, 0x0f, 0xb1, 0x0d, 0xdb, 0x21, 0x0b, 0x02, 0x1a, 0x05,
   370  	0x4e, 0x8f, 0x92, 0xd0, 0x17, 0x7a, 0x31, 0x95, 0xc7, 0x2f, 0xa9, 0x3c, 0x56, 0x0c, 0x62, 0xdd,
   371  	0x66, 0xe5, 0x57, 0x69, 0xf5, 0x65, 0x24, 0xf9, 0xc8, 0xae, 0x86, 0xb3, 0x98, 0x71, 0x0e, 0x78,
   372  	0xb9, 0x08, 0xd7, 0xa0, 0x90, 0xec, 0x28, 0xbb, 0x78, 0xf2, 0x33, 0x19, 0xf4, 0xd1, 0x0d, 0x87,
   373  	0x24, 0x1f, 0x34, 0x0d, 0xfe, 0xd4, 0xfe, 0x40, 0xe6, 0x1d, 0x6c, 0xcf, 0x2b, 0x33, 0x59, 0xf4,
   374  	0xb3, 0xda, 0x55, 0x93, 0xf2, 0x54, 0xe8, 0x8b, 0x42, 0xd1, 0x16, 0x85, 0x62, 0xfe, 0x07, 0xf5,
   375  	0x1b, 0x1a, 0x86, 0x0b, 0x7a, 0x57, 0xdc, 0xfe, 0x0a, 0x3f, 0xa9, 0xd7, 0xa1, 0xe8, 0x5d, 0xf9,
   376  	0x38, 0xf2, 0x9a, 0xf6, 0x67, 0x0d, 0x76, 0xa6, 0xb4, 0x4b, 0xc2, 0x23, 0x37, 0xc4, 0xd7, 0xb0,
   377  	0x35, 0x4b, 0x16, 0xd6, 0xd7, 0xf1, 0x67, 0xac, 0x5c, 0x9d, 0xb9, 0x39, 0x19, 0xa3, 0xe2, 0x39,
   378  	0xfa, 0x0d, 0xe1, 0x77, 0xb0, 0xbb, 0xf4, 0xe8, 0x71, 0x23, 0x6d, 0xb7, 0xce, 0x29, 0x8c, 0xa3,
   379  	0x75, 0xe9, 0x4c, 0x84, 0x26, 0x4c, 0xc6, 0xa8, 0x54, 0x43, 0xe7, 0x5a, 0x13, 0x61, 0x06, 0x78,
   380  	0x99, 0x09, 0x9c, 0x75, 0x58, 0x4b, 0x91, 0x71, 0x68, 0x65, 0x2e, 0x66, 0xe5, 0x2e, 0x66, 0x5d,
   381  	0x26, 0x2e, 0x66, 0x9e, 0x4e, 0xc6, 0xa8, 0x51, 0x43, 0x46, 0x1d, 0xcf, 0xec, 0x07, 0xcf, 0x2e,
   382  	0xa3, 0xfd, 0x55, 0x9b, 0x6e, 0xf3, 0xda, 0x8d, 0xfc, 0x90, 0x70, 0xfc, 0x3f, 0x54, 0xef, 0xe3,
   383  	0xe4, 0x05, 0x3d, 0xdf, 0x2f, 0x27, 0x65, 0x0e, 0xcf, 0x4f, 0x3f, 0x58, 0xe4, 0xac, 0x2b, 0x5d,
   384  	0x49, 0xcc, 0xd2, 0x64, 0x8c, 0xb4, 0x1a, 0x4a, 0xda, 0x65, 0x2e, 0xb5, 0xdc, 0x6e, 0x0e, 0xff,
   385  	0xce, 0x76, 0xaf, 0x00, 0x2f, 0x9b, 0x9e, 0x62, 0x68, 0xad, 0x1b, 0xae, 0x65, 0x28, 0xef, 0x4a,
   386  	0xe1, 0x70, 0xb5, 0x55, 0x60, 0x33, 0x53, 0xdb, 0x4b, 0x4e, 0x68, 0x9c, 0xbd, 0x58, 0xa3, 0xd6,
   387  	0xac, 0x8e, 0xba, 0x38, 0x7d, 0x73, 0x1c, 0x50, 0xf9, 0x7e, 0xf8, 0x60, 0x79, 0x6c, 0xd0, 0x52,
   388  	0x77, 0xcd, 0xfe, 0x7f, 0x3c, 0x16, 0xb6, 0x78, 0xec, 0x3d, 0x94, 0xd2, 0xe8, 0xf7, 0x6f, 0x01,
   389  	0x00, 0x00, 0xff, 0xff, 0x93, 0x4e, 0x89, 0xdb, 0xdb, 0x06, 0x00, 0x00,
   390  }