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

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