routerrpc: format router.proto and remove json_name fields

We now use the jsonpb marshaler to convert the RPC responses to
JSON in lncli and REST. The jsonpb has a setting to use the
original name as defined in the proto file and the explicit
json_name definition is not necessary any more.
The jsonpb setting is called OrigName and needs to be true.
This commit is contained in:
Oliver Gugger 2020-02-11 13:58:45 +01:00
parent 5a6fea31d9
commit 1b543f0d50
No known key found for this signature in database
GPG Key ID: 8E4256593F177720
2 changed files with 193 additions and 190 deletions

@ -248,7 +248,7 @@ type SendPaymentRequest struct {
CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"` CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"`
//* //*
//Optional route hints to reach the destination through private channels. //Optional route hints to reach the destination through private channels.
RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,proto3" json:"route_hints,omitempty"` RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
//* //*
//An optional field that can be used to pass an arbitrary set of TLV records //An optional field that can be used to pass an arbitrary set of TLV records
//to a peer which understands the new records. This can be used to pass //to a peer which understands the new records. This can be used to pass
@ -1134,9 +1134,9 @@ func (m *QueryMissionControlResponse) GetPairs() []*PairHistory {
/// PairHistory contains the mission control state for a particular node pair. /// PairHistory contains the mission control state for a particular node pair.
type PairHistory struct { type PairHistory struct {
/// The source node pubkey of the pair. /// The source node pubkey of the pair.
NodeFrom []byte `protobuf:"bytes,1,opt,name=node_from,proto3" json:"node_from,omitempty"` NodeFrom []byte `protobuf:"bytes,1,opt,name=node_from,json=nodeFrom,proto3" json:"node_from,omitempty"`
/// The destination node pubkey of the pair. /// The destination node pubkey of the pair.
NodeTo []byte `protobuf:"bytes,2,opt,name=node_to,proto3" json:"node_to,omitempty"` NodeTo []byte `protobuf:"bytes,2,opt,name=node_to,json=nodeTo,proto3" json:"node_to,omitempty"`
History *PairData `protobuf:"bytes,7,opt,name=history,proto3" json:"history,omitempty"` History *PairData `protobuf:"bytes,7,opt,name=history,proto3" json:"history,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -1191,21 +1191,21 @@ func (m *PairHistory) GetHistory() *PairData {
type PairData struct { type PairData struct {
/// Time of last failure. /// Time of last failure.
FailTime int64 `protobuf:"varint,1,opt,name=fail_time,proto3" json:"fail_time,omitempty"` FailTime int64 `protobuf:"varint,1,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"`
//* //*
//Lowest amount that failed to forward rounded to whole sats. This may be //Lowest amount that failed to forward rounded to whole sats. This may be
//set to zero if the failure is independent of amount. //set to zero if the failure is independent of amount.
FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,proto3" json:"fail_amt_sat,omitempty"` FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,json=failAmtSat,proto3" json:"fail_amt_sat,omitempty"`
//* //*
//Lowest amount that failed to forward in millisats. This may be //Lowest amount that failed to forward in millisats. This may be
//set to zero if the failure is independent of amount. //set to zero if the failure is independent of amount.
FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,proto3" json:"fail_amt_msat,omitempty"` FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,json=failAmtMsat,proto3" json:"fail_amt_msat,omitempty"`
/// Time of last success. /// Time of last success.
SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,proto3" json:"success_time,omitempty"` SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"`
/// Highest amount that we could successfully forward rounded to whole sats. /// Highest amount that we could successfully forward rounded to whole sats.
SuccessAmtSat int64 `protobuf:"varint,6,opt,name=success_amt_sat,proto3" json:"success_amt_sat,omitempty"` SuccessAmtSat int64 `protobuf:"varint,6,opt,name=success_amt_sat,json=successAmtSat,proto3" json:"success_amt_sat,omitempty"`
/// Highest amount that we could successfully forward in millisats. /// Highest amount that we could successfully forward in millisats.
SuccessAmtMsat int64 `protobuf:"varint,7,opt,name=success_amt_msat,proto3" json:"success_amt_msat,omitempty"` SuccessAmtMsat int64 `protobuf:"varint,7,opt,name=success_amt_msat,json=successAmtMsat,proto3" json:"success_amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1280,11 +1280,11 @@ func (m *PairData) GetSuccessAmtMsat() int64 {
type QueryProbabilityRequest struct { type QueryProbabilityRequest struct {
/// The source node pubkey of the pair. /// The source node pubkey of the pair.
FromNode []byte `protobuf:"bytes,1,opt,name=from_node,proto3" json:"from_node,omitempty"` FromNode []byte `protobuf:"bytes,1,opt,name=from_node,json=fromNode,proto3" json:"from_node,omitempty"`
/// The destination node pubkey of the pair. /// The destination node pubkey of the pair.
ToNode []byte `protobuf:"bytes,2,opt,name=to_node,proto3" json:"to_node,omitempty"` ToNode []byte `protobuf:"bytes,2,opt,name=to_node,json=toNode,proto3" json:"to_node,omitempty"`
/// The amount for which to calculate a probability. /// The amount for which to calculate a probability.
AmtMsat int64 `protobuf:"varint,3,opt,name=amt_msat,proto3" json:"amt_msat,omitempty"` AmtMsat int64 `protobuf:"varint,3,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1529,139 +1529,140 @@ func init() {
func init() { proto.RegisterFile("routerrpc/router.proto", fileDescriptor_7a0613f69d37b0a5) } func init() { proto.RegisterFile("routerrpc/router.proto", fileDescriptor_7a0613f69d37b0a5) }
var fileDescriptor_7a0613f69d37b0a5 = []byte{ var fileDescriptor_7a0613f69d37b0a5 = []byte{
// 2102 bytes of a gzipped FileDescriptorProto // 2126 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcb, 0x73, 0xdb, 0xc6, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcd, 0x76, 0xdb, 0xc6,
0x19, 0x0f, 0xc4, 0xf7, 0xc7, 0x17, 0xb4, 0x92, 0x65, 0x98, 0xb2, 0x62, 0x05, 0x76, 0x1d, 0x8e, 0x15, 0x0e, 0xc4, 0x5f, 0x5d, 0xfe, 0x41, 0x23, 0x45, 0xa2, 0x29, 0x2b, 0x61, 0x10, 0xd7, 0xe1,
0xc7, 0x91, 0x5c, 0xb5, 0xf1, 0x78, 0x7a, 0x68, 0x87, 0x22, 0xc1, 0x08, 0x32, 0x09, 0xca, 0x4b, 0xf1, 0x71, 0x24, 0x47, 0x6d, 0x7c, 0x7c, 0xba, 0x68, 0x0f, 0x45, 0x82, 0x11, 0x64, 0x12, 0x94,
0xd2, 0x89, 0x9b, 0xc3, 0x0e, 0x44, 0xae, 0x44, 0x8c, 0x40, 0x80, 0x01, 0x96, 0x8e, 0xf5, 0x0f, 0x87, 0xa4, 0x13, 0x37, 0x8b, 0x39, 0x10, 0x39, 0x12, 0x51, 0xe1, 0x87, 0x01, 0x86, 0x8e, 0xf5,
0xf4, 0xd4, 0xff, 0xa3, 0xbd, 0xb4, 0x97, 0x9e, 0xfb, 0xef, 0xb4, 0xf7, 0xde, 0x7a, 0xeb, 0xec, 0x02, 0x5d, 0xf4, 0x45, 0xda, 0x4d, 0xbb, 0xe9, 0xba, 0xaf, 0xd3, 0xf6, 0x11, 0xba, 0xec, 0x99,
0x2e, 0x40, 0x82, 0x14, 0xe5, 0xf4, 0x44, 0xec, 0xef, 0x7b, 0xed, 0xee, 0xb7, 0xdf, 0x8b, 0xb0, 0x19, 0x80, 0x04, 0x29, 0xca, 0xe9, 0x4a, 0xc4, 0x77, 0xbf, 0xb9, 0x77, 0x66, 0xee, 0xdc, 0x3f,
0x17, 0xf8, 0x73, 0x46, 0x83, 0x60, 0x36, 0x3a, 0x96, 0x5f, 0x47, 0xb3, 0xc0, 0x67, 0x3e, 0x2a, 0xc1, 0x7e, 0xe0, 0xcf, 0x19, 0x0d, 0x82, 0xd9, 0xf8, 0x44, 0xfe, 0x3a, 0x9e, 0x05, 0x3e, 0xf3,
0x2c, 0xf0, 0x5a, 0x21, 0x98, 0x8d, 0x24, 0xaa, 0xff, 0x37, 0x03, 0xa8, 0x4f, 0xbd, 0xf1, 0x85, 0xd1, 0xf6, 0x02, 0xaf, 0x6d, 0x07, 0xb3, 0xb1, 0x44, 0xb5, 0xff, 0x66, 0x00, 0x0d, 0xa8, 0x37,
0x7d, 0x3b, 0xa5, 0x1e, 0xc3, 0xf4, 0xa7, 0x39, 0x0d, 0x19, 0x42, 0x90, 0x1e, 0xd3, 0x90, 0x69, 0xb9, 0xb4, 0xee, 0x5c, 0xea, 0x31, 0x4c, 0x7f, 0x9a, 0xd3, 0x90, 0x21, 0x04, 0xe9, 0x09, 0x0d,
0xca, 0xa1, 0x52, 0x2f, 0x61, 0xf1, 0x8d, 0x54, 0x48, 0xd9, 0x53, 0xa6, 0x6d, 0x1d, 0x2a, 0xf5, 0x59, 0x55, 0xa9, 0x2b, 0x8d, 0x22, 0x16, 0xbf, 0x91, 0x0a, 0x29, 0xcb, 0x65, 0xd5, 0xad, 0xba,
0x14, 0xe6, 0x9f, 0xe8, 0x11, 0xe4, 0xed, 0x29, 0x23, 0xd3, 0xd0, 0x66, 0x5a, 0x49, 0xc0, 0x39, 0xd2, 0x48, 0x61, 0xfe, 0x13, 0x3d, 0x82, 0xbc, 0xe5, 0x32, 0xe2, 0x86, 0x16, 0xab, 0x16, 0x05,
0x7b, 0xca, 0xba, 0xa1, 0xcd, 0xd0, 0x57, 0x50, 0x9a, 0x49, 0x95, 0x64, 0x62, 0x87, 0x13, 0x2d, 0x9c, 0xb3, 0x5c, 0xd6, 0x0b, 0x2d, 0x86, 0xbe, 0x80, 0xe2, 0x4c, 0xaa, 0x24, 0x53, 0x2b, 0x9c,
0x25, 0x14, 0x15, 0x23, 0xec, 0xcc, 0x0e, 0x27, 0xa8, 0x0e, 0xea, 0x95, 0xe3, 0xd9, 0x2e, 0x19, 0x56, 0x53, 0x42, 0x51, 0x21, 0xc2, 0xce, 0xad, 0x70, 0x8a, 0x1a, 0xa0, 0x5e, 0xdb, 0x9e, 0xe5,
0xb9, 0xec, 0x23, 0x19, 0x53, 0x97, 0xd9, 0x5a, 0xfa, 0x50, 0xa9, 0x67, 0x70, 0x45, 0xe0, 0x4d, 0x90, 0xb1, 0xc3, 0xde, 0x93, 0x09, 0x75, 0x98, 0x55, 0x4d, 0xd7, 0x95, 0x46, 0x06, 0x97, 0x05,
0x97, 0x7d, 0x6c, 0x71, 0x14, 0x7d, 0x0d, 0xd5, 0x58, 0x59, 0x20, 0x37, 0xa8, 0x65, 0x0e, 0x95, 0xde, 0x72, 0xd8, 0xfb, 0x36, 0x47, 0xd1, 0x57, 0x50, 0x89, 0x95, 0x05, 0x72, 0x83, 0xd5, 0x4c,
0x7a, 0x01, 0x57, 0x66, 0xab, 0xdb, 0xfe, 0x1a, 0xaa, 0xcc, 0x99, 0x52, 0x7f, 0xce, 0x48, 0x48, 0x5d, 0x69, 0x6c, 0xe3, 0xf2, 0x6c, 0x75, 0xdb, 0x5f, 0x41, 0x85, 0xd9, 0x2e, 0xf5, 0xe7, 0x8c,
0x47, 0xbe, 0x37, 0x0e, 0xb5, 0xac, 0xd4, 0x18, 0xc1, 0x7d, 0x89, 0x22, 0x1d, 0xca, 0x57, 0x94, 0x84, 0x74, 0xec, 0x7b, 0x93, 0xb0, 0x9a, 0x95, 0x1a, 0x23, 0x78, 0x20, 0x51, 0xa4, 0x41, 0xe9,
0x12, 0xd7, 0x99, 0x3a, 0x8c, 0xf0, 0xed, 0xe7, 0xc4, 0xf6, 0x8b, 0x57, 0x94, 0x76, 0x38, 0xd6, 0x9a, 0x52, 0xe2, 0xd8, 0xae, 0xcd, 0x08, 0xdf, 0x7e, 0x4e, 0x6c, 0xbf, 0x70, 0x4d, 0x69, 0x97,
0xb7, 0x19, 0x7a, 0x06, 0x95, 0x25, 0x8f, 0x38, 0x63, 0x59, 0x30, 0x95, 0x62, 0x26, 0x71, 0xd0, 0x63, 0x03, 0x8b, 0xa1, 0x27, 0x50, 0x5e, 0x72, 0xc4, 0x19, 0x4b, 0x82, 0x54, 0x8c, 0x49, 0xe2,
0x97, 0xa0, 0xfa, 0x73, 0x76, 0xed, 0x3b, 0xde, 0x35, 0x19, 0x4d, 0x6c, 0x8f, 0x38, 0x63, 0x2d, 0xa0, 0xcf, 0x41, 0xf5, 0xe7, 0xec, 0xc6, 0xb7, 0xbd, 0x1b, 0x32, 0x9e, 0x5a, 0x1e, 0xb1, 0x27,
0x7f, 0xa8, 0xd4, 0xd3, 0xa7, 0x5b, 0xaf, 0x14, 0x5c, 0x89, 0x69, 0xcd, 0x89, 0xed, 0x99, 0x63, 0xd5, 0x7c, 0x5d, 0x69, 0xa4, 0xcf, 0xb6, 0x5e, 0x28, 0xb8, 0x1c, 0xcb, 0x5a, 0x53, 0xcb, 0x33,
0xf4, 0x1c, 0xaa, 0xae, 0x1d, 0x32, 0x32, 0xf1, 0x67, 0x64, 0x36, 0xbf, 0xbc, 0xa1, 0xb7, 0x5a, 0x26, 0xe8, 0x29, 0x54, 0x1c, 0x2b, 0x64, 0x64, 0xea, 0xcf, 0xc8, 0x6c, 0x7e, 0x75, 0x4b, 0xef,
0x45, 0xdc, 0x4c, 0x99, 0xc3, 0x67, 0xfe, 0xec, 0x42, 0x80, 0xe8, 0x00, 0x40, 0xdc, 0x8a, 0x30, 0xaa, 0x65, 0x71, 0x33, 0x25, 0x0e, 0x9f, 0xfb, 0xb3, 0x4b, 0x01, 0xa2, 0x23, 0x00, 0x71, 0x2b,
0xae, 0x15, 0xc4, 0x19, 0x0a, 0x1c, 0x11, 0x86, 0xd1, 0x09, 0x14, 0x85, 0x37, 0xc9, 0xc4, 0xf1, 0xc2, 0x78, 0x75, 0x5b, 0x9c, 0x61, 0x9b, 0x23, 0xc2, 0x30, 0xfa, 0x06, 0x0a, 0xc2, 0x9b, 0x64,
0x58, 0xa8, 0xc1, 0x61, 0xaa, 0x5e, 0x3c, 0x51, 0x8f, 0x5c, 0x8f, 0x3b, 0x16, 0x73, 0xca, 0x99, 0x6a, 0x7b, 0x2c, 0xac, 0x42, 0x3d, 0xd5, 0x28, 0x9c, 0xaa, 0xc7, 0x8e, 0xc7, 0x1d, 0x8b, 0xb9,
0xe3, 0x31, 0x9c, 0x64, 0x42, 0x63, 0xd8, 0xe1, 0x6e, 0x24, 0xa3, 0x79, 0xc8, 0xfc, 0x29, 0x09, 0xe4, 0xdc, 0xf6, 0x18, 0x86, 0x20, 0xfe, 0x19, 0xa2, 0x09, 0xec, 0x72, 0x2f, 0x92, 0xf1, 0x3c,
0xe8, 0xc8, 0x0f, 0xc6, 0xa1, 0x56, 0x14, 0xb2, 0xbf, 0x3d, 0x5a, 0xbc, 0x8e, 0xa3, 0xbb, 0xcf, 0x64, 0xbe, 0x4b, 0x02, 0x3a, 0xf6, 0x83, 0x49, 0x58, 0x2d, 0x88, 0xa5, 0xbf, 0x39, 0x5e, 0x3c,
0xe1, 0xa8, 0x45, 0x43, 0xd6, 0x14, 0x72, 0x58, 0x8a, 0x19, 0x1e, 0x0b, 0x6e, 0xf1, 0xf6, 0x78, 0x8e, 0xe3, 0xfb, 0xaf, 0xe1, 0xb8, 0x4d, 0x43, 0xd6, 0x12, 0xeb, 0xb0, 0x5c, 0xa6, 0x7b, 0x2c,
0x1d, 0x47, 0x2f, 0x01, 0xd9, 0xae, 0xeb, 0xff, 0x4c, 0x42, 0xea, 0x5e, 0x91, 0xc8, 0x3d, 0x5a, 0xb8, 0xc3, 0x3b, 0x93, 0x75, 0x1c, 0x3d, 0x07, 0x64, 0x39, 0x8e, 0xff, 0x33, 0x09, 0xa9, 0x73,
0xf5, 0x50, 0xa9, 0xe7, 0xb1, 0x2a, 0x28, 0x7d, 0xea, 0x5e, 0x45, 0xea, 0xd1, 0x6b, 0x28, 0x8b, 0x4d, 0x22, 0xef, 0x54, 0x2b, 0x75, 0xa5, 0x91, 0xc7, 0xaa, 0x90, 0x0c, 0xa8, 0x73, 0x1d, 0xa9,
0x3d, 0x5d, 0x51, 0x9b, 0xcd, 0x03, 0x1a, 0x6a, 0xea, 0x61, 0xaa, 0x5e, 0x39, 0xd9, 0x8e, 0x4e, 0x47, 0x2f, 0xa1, 0x24, 0xf6, 0x74, 0x4d, 0x2d, 0x36, 0x0f, 0x68, 0x58, 0x55, 0xeb, 0xa9, 0x46,
0xd2, 0x96, 0xf0, 0xa9, 0xc3, 0x70, 0x89, 0xf3, 0x45, 0xeb, 0xb0, 0xd6, 0x82, 0xbd, 0xcd, 0x5b, 0xf9, 0x74, 0x27, 0x3a, 0x48, 0x47, 0xc2, 0x67, 0x36, 0xc3, 0x45, 0xce, 0x8b, 0xbe, 0xc3, 0x5a,
0xe2, 0x8f, 0x94, 0x5f, 0x2a, 0x7f, 0xb7, 0x69, 0xcc, 0x3f, 0xd1, 0x2e, 0x64, 0x3e, 0xda, 0xee, 0x1b, 0xf6, 0x37, 0x6f, 0x89, 0xbf, 0x51, 0x7e, 0xa7, 0xfc, 0xd9, 0xa6, 0x31, 0xff, 0x89, 0xf6,
0x9c, 0x8a, 0x87, 0x5b, 0xc2, 0x72, 0xf1, 0xbb, 0xad, 0x37, 0x8a, 0xfe, 0x06, 0x76, 0x06, 0x81, 0x20, 0xf3, 0xde, 0x72, 0xe6, 0x54, 0xbc, 0xdb, 0x22, 0x96, 0x1f, 0xbf, 0xdd, 0x7a, 0xa5, 0x68,
0x3d, 0xba, 0x59, 0x7b, 0xfb, 0xeb, 0x4f, 0x57, 0xb9, 0xf3, 0x74, 0xf5, 0xbf, 0x2a, 0x50, 0x8e, 0xaf, 0x60, 0x77, 0x18, 0x58, 0xe3, 0xdb, 0xb5, 0xa7, 0xbf, 0xfe, 0x72, 0x95, 0x7b, 0x2f, 0x57,
0xa4, 0xfa, 0xcc, 0x66, 0xf3, 0x10, 0x7d, 0x03, 0x99, 0x90, 0xd9, 0x8c, 0x0a, 0xee, 0xca, 0xc9, 0xfb, 0xab, 0x02, 0xa5, 0x68, 0xd5, 0x80, 0x59, 0x6c, 0x1e, 0xa2, 0xaf, 0x21, 0x13, 0x32, 0x8b,
0xc3, 0xc4, 0x7d, 0x26, 0x18, 0x29, 0x96, 0x5c, 0xa8, 0x06, 0xf9, 0x59, 0x40, 0x9d, 0xa9, 0x7d, 0x51, 0xc1, 0x2e, 0x9f, 0x1e, 0x24, 0xee, 0x33, 0x41, 0xa4, 0x58, 0xb2, 0x50, 0x0d, 0xf2, 0xb3,
0x1d, 0xef, 0x6b, 0xb1, 0x46, 0x3a, 0x64, 0x84, 0xb0, 0x88, 0x99, 0xe2, 0x49, 0x29, 0xe9, 0x56, 0x80, 0xda, 0xae, 0x75, 0x13, 0xef, 0x6b, 0xf1, 0x8d, 0x34, 0xc8, 0x88, 0xc5, 0x22, 0x64, 0x0a,
0x2c, 0x49, 0xa8, 0x0e, 0x99, 0x09, 0x73, 0x47, 0xa1, 0x96, 0x16, 0xee, 0x43, 0x11, 0xcf, 0xd9, 0xa7, 0xc5, 0xa4, 0x57, 0xb1, 0x14, 0xa1, 0x06, 0x64, 0xa6, 0xcc, 0x19, 0x87, 0xd5, 0xb4, 0x70,
0xa0, 0xd3, 0x6c, 0x30, 0x46, 0xa7, 0x33, 0x86, 0x25, 0x83, 0xfe, 0x7b, 0xa8, 0x0a, 0xc9, 0x36, 0x1f, 0x8a, 0x38, 0xe7, 0xc3, 0x6e, 0xab, 0xc9, 0x18, 0x75, 0x67, 0x0c, 0x4b, 0x82, 0xf6, 0x3b,
0xa5, 0x9f, 0x0b, 0xee, 0x87, 0xc0, 0x43, 0x57, 0x84, 0x82, 0x0c, 0xf0, 0xac, 0x3d, 0xe5, 0x51, 0xa8, 0x88, 0x95, 0x1d, 0x4a, 0x3f, 0x16, 0xdb, 0x07, 0xc0, 0x23, 0x57, 0x44, 0x82, 0x8c, 0xef,
0xa0, 0x8f, 0x41, 0x5d, 0xca, 0x87, 0x33, 0xdf, 0x0b, 0xb9, 0x75, 0x95, 0x6f, 0x83, 0x3f, 0x79, 0xac, 0xe5, 0xf2, 0x20, 0xd0, 0x26, 0xa0, 0x2e, 0xd7, 0x87, 0x33, 0xdf, 0x0b, 0xb9, 0x75, 0x95,
0x1e, 0x21, 0x22, 0x36, 0x14, 0x21, 0x55, 0x89, 0xf0, 0x36, 0xa5, 0x22, 0x3a, 0x9e, 0xcb, 0x80, 0x6f, 0x83, 0xbf, 0x78, 0x1e, 0x20, 0x22, 0x34, 0x14, 0xb1, 0xaa, 0x1c, 0xe1, 0x1d, 0x4a, 0x45,
0x24, 0xae, 0x3f, 0xba, 0xe1, 0x21, 0x6e, 0xdf, 0x46, 0xea, 0xcb, 0x1c, 0xee, 0xf8, 0xa3, 0x9b, 0x70, 0x3c, 0x95, 0xf1, 0x48, 0x1c, 0x7f, 0x7c, 0xcb, 0x23, 0xdc, 0xba, 0x8b, 0xd4, 0x97, 0x38,
0x16, 0x07, 0xf5, 0x1f, 0x65, 0x16, 0x1a, 0xf8, 0xf2, 0x94, 0xff, 0xb7, 0x27, 0x96, 0x97, 0xb5, 0xdc, 0xf5, 0xc7, 0xb7, 0x6d, 0x0e, 0x6a, 0x3f, 0xca, 0x24, 0x34, 0xf4, 0xe5, 0x29, 0xff, 0x6f,
0x75, 0xef, 0x65, 0xe9, 0x04, 0x76, 0x56, 0x94, 0x47, 0xa7, 0x48, 0xfa, 0x40, 0x59, 0xf3, 0xc1, 0x4f, 0x2c, 0x2f, 0x6b, 0xeb, 0xc1, 0xcb, 0xd2, 0x08, 0xec, 0xae, 0x28, 0x8f, 0x4e, 0x91, 0xf4,
0x4b, 0xc8, 0x5d, 0xd9, 0x8e, 0x3b, 0x0f, 0x62, 0xc5, 0x28, 0xe1, 0xd0, 0xb6, 0xa4, 0xe0, 0x98, 0x81, 0xb2, 0xe6, 0x83, 0xe7, 0x90, 0xbb, 0xb6, 0x6c, 0x67, 0x1e, 0xc4, 0x8a, 0x51, 0xc2, 0xa1,
0x45, 0xff, 0x53, 0x1e, 0x72, 0x11, 0x88, 0x4e, 0x20, 0x3d, 0xf2, 0xc7, 0xf1, 0x3b, 0xf8, 0xf2, 0x1d, 0x29, 0xc1, 0x31, 0x45, 0xfb, 0x53, 0x1e, 0x72, 0x11, 0x88, 0x4e, 0x21, 0x3d, 0xf6, 0x27,
0xae, 0x58, 0xfc, 0xdb, 0xf4, 0xc7, 0x14, 0x0b, 0x5e, 0xf4, 0x07, 0xa8, 0xf0, 0xd4, 0xe1, 0x51, 0xf1, 0x3b, 0xf8, 0xec, 0xfe, 0xb2, 0xf8, 0x6f, 0xcb, 0x9f, 0x50, 0x2c, 0xb8, 0xe8, 0xf7, 0x50,
0x97, 0xcc, 0x67, 0x63, 0x7b, 0xe1, 0x7a, 0x2d, 0x21, 0xdd, 0x94, 0x0c, 0x43, 0x41, 0xc7, 0xe5, 0xe6, 0x99, 0xc3, 0xa3, 0x0e, 0x99, 0xcf, 0x26, 0xd6, 0xc2, 0xf5, 0xd5, 0xc4, 0xea, 0x96, 0x24,
0x51, 0x72, 0x89, 0xf6, 0xa1, 0xc0, 0xbd, 0x2d, 0x3d, 0x91, 0x16, 0x6f, 0x3f, 0xcf, 0x01, 0xe1, 0x8c, 0x84, 0x1c, 0x97, 0xc6, 0xc9, 0x4f, 0x74, 0x08, 0xdb, 0xdc, 0xdb, 0xd2, 0x13, 0x69, 0xf1,
0x03, 0x1d, 0xca, 0xbe, 0xe7, 0xf8, 0x1e, 0x09, 0x27, 0x36, 0x39, 0xf9, 0xf6, 0xb5, 0xc8, 0x9d, 0xf6, 0xf3, 0x1c, 0x10, 0x3e, 0xd0, 0xa0, 0xe4, 0x7b, 0xb6, 0xef, 0x91, 0x70, 0x6a, 0x91, 0xd3,
0x25, 0x5c, 0x14, 0x60, 0x7f, 0x62, 0x9f, 0x7c, 0xfb, 0x1a, 0x3d, 0x81, 0xa2, 0xc8, 0x37, 0xf4, 0x6f, 0x5f, 0x8a, 0xd4, 0x59, 0xc4, 0x05, 0x01, 0x0e, 0xa6, 0xd6, 0xe9, 0xb7, 0x2f, 0xd1, 0xe7,
0xd3, 0xcc, 0x09, 0x6e, 0x45, 0xd2, 0x2c, 0x63, 0x91, 0x82, 0x0c, 0x81, 0xf0, 0x28, 0xba, 0x72, 0x50, 0x10, 0xe9, 0x86, 0x7e, 0x98, 0xd9, 0xc1, 0x9d, 0xc8, 0x99, 0x25, 0x2c, 0x32, 0x90, 0x2e,
0xed, 0xeb, 0x50, 0x24, 0xca, 0x32, 0x96, 0x0b, 0xf4, 0x0a, 0x76, 0xa3, 0x3b, 0x20, 0xa1, 0x3f, 0x10, 0x1e, 0x45, 0xd7, 0x8e, 0x75, 0x13, 0x8a, 0x3c, 0x59, 0xc2, 0xf2, 0x03, 0xbd, 0x80, 0xbd,
0x0f, 0x46, 0x94, 0x38, 0xde, 0x98, 0x7e, 0x12, 0x09, 0xb0, 0x8c, 0x51, 0x44, 0xeb, 0x0b, 0x92, 0xe8, 0x0e, 0x48, 0xe8, 0xcf, 0x83, 0x31, 0x25, 0xb6, 0x37, 0xa1, 0x1f, 0x44, 0xfe, 0x2b, 0x61,
0xc9, 0x29, 0x68, 0x0f, 0xb2, 0x13, 0xea, 0x5c, 0x4f, 0x64, 0x52, 0x2b, 0xe3, 0x68, 0xa5, 0xff, 0x14, 0xc9, 0x06, 0x42, 0x64, 0x70, 0x09, 0xda, 0x87, 0xec, 0x94, 0xda, 0x37, 0x53, 0x99, 0xd3,
0x33, 0x03, 0xc5, 0xc4, 0xc5, 0xa0, 0x12, 0xe4, 0xb1, 0xd1, 0x37, 0xf0, 0x7b, 0xa3, 0xa5, 0x7e, 0x4a, 0x38, 0xfa, 0xd2, 0xfe, 0x99, 0x81, 0x42, 0xe2, 0x62, 0x50, 0x11, 0xf2, 0x58, 0x1f, 0xe8,
0x81, 0xea, 0xf0, 0xcc, 0xb4, 0x9a, 0x3d, 0x8c, 0x8d, 0xe6, 0x80, 0xf4, 0x30, 0x19, 0x5a, 0x6f, 0xf8, 0xad, 0xde, 0x56, 0x3f, 0x41, 0x0d, 0x78, 0x62, 0x98, 0xad, 0x3e, 0xc6, 0x7a, 0x6b, 0x48,
0xad, 0xde, 0xf7, 0x16, 0xb9, 0x68, 0x7c, 0xe8, 0x1a, 0xd6, 0x80, 0xb4, 0x8c, 0x41, 0xc3, 0xec, 0xfa, 0x98, 0x8c, 0xcc, 0xd7, 0x66, 0xff, 0x7b, 0x93, 0x5c, 0x36, 0xdf, 0xf5, 0x74, 0x73, 0x48,
0xf4, 0x55, 0x05, 0x3d, 0x06, 0x6d, 0xc9, 0x19, 0x93, 0x1b, 0xdd, 0xde, 0xd0, 0x1a, 0xa8, 0x5b, 0xda, 0xfa, 0xb0, 0x69, 0x74, 0x07, 0xaa, 0x82, 0x1e, 0x43, 0x75, 0xc9, 0x8c, 0xc5, 0xcd, 0x5e,
0xe8, 0x09, 0xec, 0xb7, 0x4d, 0xab, 0xd1, 0x21, 0x4b, 0x9e, 0x66, 0x67, 0xf0, 0x9e, 0x18, 0x3f, 0x7f, 0x64, 0x0e, 0xd5, 0x2d, 0xf4, 0x39, 0x1c, 0x76, 0x0c, 0xb3, 0xd9, 0x25, 0x4b, 0x4e, 0xab,
0x5c, 0x98, 0xf8, 0x83, 0x9a, 0xda, 0xc4, 0xc0, 0x63, 0x2a, 0xd6, 0x90, 0x46, 0x8f, 0xe0, 0x81, 0x3b, 0x7c, 0x4b, 0xf4, 0x1f, 0x2e, 0x0d, 0xfc, 0x4e, 0x4d, 0x6d, 0x22, 0xf0, 0x98, 0x8a, 0x35,
0x64, 0x90, 0x22, 0x64, 0xd0, 0xeb, 0x91, 0x7e, 0xaf, 0x67, 0xa9, 0x19, 0xb4, 0x0d, 0x65, 0xd3, 0xa4, 0xd1, 0x23, 0xf8, 0x54, 0x12, 0xe4, 0x12, 0x32, 0xec, 0xf7, 0xc9, 0xa0, 0xdf, 0x37, 0xd5,
0x7a, 0xdf, 0xe8, 0x98, 0x2d, 0x82, 0x8d, 0x46, 0xa7, 0xab, 0x66, 0xd1, 0x0e, 0x54, 0xd7, 0xf9, 0x0c, 0xda, 0x81, 0x92, 0x61, 0xbe, 0x6d, 0x76, 0x8d, 0x36, 0xc1, 0x7a, 0xb3, 0xdb, 0x53, 0xb3,
0x72, 0x5c, 0x45, 0xcc, 0xd7, 0xb3, 0xcc, 0x9e, 0x45, 0xde, 0x1b, 0xb8, 0x6f, 0xf6, 0x2c, 0x35, 0x68, 0x17, 0x2a, 0xeb, 0xbc, 0x1c, 0x57, 0x11, 0xf3, 0xfa, 0xa6, 0xd1, 0x37, 0xc9, 0x5b, 0x1d,
0x8f, 0xf6, 0x00, 0xad, 0x92, 0xce, 0xba, 0x8d, 0xa6, 0x5a, 0x40, 0x0f, 0x60, 0x7b, 0x15, 0x7f, 0x0f, 0x8c, 0xbe, 0xa9, 0xe6, 0xd1, 0x3e, 0xa0, 0x55, 0xd1, 0x79, 0xaf, 0xd9, 0x52, 0xb7, 0xd1,
0x6b, 0x7c, 0x50, 0x01, 0x69, 0xb0, 0x2b, 0x37, 0x46, 0x4e, 0x8d, 0x4e, 0xef, 0x7b, 0xd2, 0x35, 0xa7, 0xb0, 0xb3, 0x8a, 0xbf, 0xd6, 0xdf, 0xa9, 0x80, 0xaa, 0xb0, 0x27, 0x37, 0x46, 0xce, 0xf4,
0x2d, 0xb3, 0x3b, 0xec, 0xaa, 0x45, 0xb4, 0x0b, 0x6a, 0xdb, 0x30, 0x88, 0x69, 0xf5, 0x87, 0xed, 0x6e, 0xff, 0x7b, 0xd2, 0x33, 0x4c, 0xa3, 0x37, 0xea, 0xa9, 0x05, 0xb4, 0x07, 0x6a, 0x47, 0xd7,
0xb6, 0xd9, 0x34, 0x0d, 0x6b, 0xa0, 0x96, 0xa4, 0xe5, 0x4d, 0x07, 0x2f, 0x73, 0x81, 0xe6, 0x59, 0x89, 0x61, 0x0e, 0x46, 0x9d, 0x8e, 0xd1, 0x32, 0x74, 0x73, 0xa8, 0x16, 0xa5, 0xe5, 0x4d, 0x07,
0xc3, 0xb2, 0x8c, 0x0e, 0x69, 0x99, 0xfd, 0xc6, 0x69, 0xc7, 0x68, 0xa9, 0x15, 0x74, 0x00, 0x8f, 0x2f, 0xf1, 0x05, 0xad, 0xf3, 0xa6, 0x69, 0xea, 0x5d, 0xd2, 0x36, 0x06, 0xcd, 0xb3, 0xae, 0xde,
0x06, 0x46, 0xf7, 0xa2, 0x87, 0x1b, 0xf8, 0x03, 0x89, 0xe9, 0xed, 0x86, 0xd9, 0x19, 0x62, 0x43, 0x56, 0xcb, 0xe8, 0x08, 0x1e, 0x0d, 0xf5, 0xde, 0x65, 0x1f, 0x37, 0xf1, 0x3b, 0x12, 0xcb, 0x3b,
0xad, 0xa2, 0xaf, 0xe0, 0x00, 0x1b, 0xef, 0x86, 0x26, 0x36, 0x5a, 0xc4, 0xea, 0xb5, 0x0c, 0xd2, 0x4d, 0xa3, 0x3b, 0xc2, 0xba, 0x5a, 0x41, 0x5f, 0xc0, 0x11, 0xd6, 0xdf, 0x8c, 0x0c, 0xac, 0xb7,
0x36, 0x1a, 0x83, 0x21, 0x36, 0x48, 0xd7, 0xec, 0xf7, 0x4d, 0xeb, 0x3b, 0x55, 0x45, 0xcf, 0xe0, 0x89, 0xd9, 0x6f, 0xeb, 0xa4, 0xa3, 0x37, 0x87, 0x23, 0xac, 0x93, 0x9e, 0x31, 0x18, 0x18, 0xe6,
0x70, 0xc1, 0xb2, 0x50, 0xb0, 0xc6, 0xb5, 0xcd, 0xcf, 0x17, 0xbb, 0xd4, 0x32, 0x7e, 0x18, 0x90, 0x77, 0xaa, 0x8a, 0x9e, 0x40, 0x7d, 0x41, 0x59, 0x28, 0x58, 0x63, 0xed, 0xf0, 0xf3, 0xc5, 0x2e,
0x0b, 0xc3, 0xc0, 0x2a, 0x42, 0x35, 0xd8, 0x5b, 0x9a, 0x97, 0x06, 0x22, 0xdb, 0x3b, 0x9c, 0x76, 0x35, 0xf5, 0x1f, 0x86, 0xe4, 0x52, 0xd7, 0xb1, 0x8a, 0x50, 0x0d, 0xf6, 0x97, 0xe6, 0xa5, 0x81,
0x61, 0xe0, 0x6e, 0xc3, 0xe2, 0x0e, 0x5e, 0xa1, 0xed, 0xf2, 0x6d, 0x2f, 0x69, 0xeb, 0xdb, 0x7e, 0xc8, 0xf6, 0x2e, 0x97, 0x5d, 0xea, 0xb8, 0xd7, 0x34, 0xb9, 0x83, 0x57, 0x64, 0x7b, 0x7c, 0xdb,
0x80, 0x10, 0x54, 0x12, 0x5e, 0x69, 0x37, 0xb0, 0xba, 0x87, 0xaa, 0x50, 0xec, 0x5e, 0x5c, 0x90, 0x4b, 0xd9, 0xfa, 0xb6, 0x3f, 0x45, 0x08, 0xca, 0x09, 0xaf, 0x74, 0x9a, 0x58, 0xdd, 0x47, 0x15,
0x81, 0xd9, 0x35, 0x7a, 0xc3, 0x81, 0xfa, 0x10, 0xed, 0x42, 0x35, 0xde, 0x52, 0x2c, 0xf9, 0xaf, 0x28, 0xf4, 0x2e, 0x2f, 0xc9, 0xd0, 0xe8, 0xe9, 0xfd, 0xd1, 0x50, 0x3d, 0x40, 0x7b, 0x50, 0x89,
0x1c, 0x7a, 0x08, 0x68, 0x68, 0x61, 0xa3, 0xd1, 0xe2, 0x37, 0xb4, 0x20, 0xfc, 0x3b, 0x77, 0x9e, 0xb7, 0x14, 0xaf, 0xfc, 0x57, 0x0e, 0x1d, 0x00, 0x1a, 0x99, 0x58, 0x6f, 0xb6, 0xf9, 0x0d, 0x2d,
0xce, 0x6f, 0xa9, 0x29, 0xfd, 0x1f, 0x29, 0x28, 0xaf, 0x04, 0x2a, 0x7a, 0x0c, 0x85, 0xd0, 0xb9, 0x04, 0xff, 0xce, 0x5d, 0xa4, 0xf3, 0x5b, 0x6a, 0x4a, 0xfb, 0x47, 0x0a, 0x4a, 0x2b, 0x81, 0x8a,
0xf6, 0x44, 0xdd, 0x8a, 0xb2, 0xcc, 0x12, 0x10, 0x65, 0x7e, 0x62, 0x3b, 0x9e, 0x4c, 0x6f, 0xb2, 0x1e, 0xc3, 0x76, 0x68, 0xdf, 0x78, 0xa2, 0x6e, 0x45, 0x59, 0x66, 0x09, 0x88, 0x2a, 0x3f, 0xb5,
0x10, 0x14, 0x04, 0x22, 0x92, 0xdb, 0x3e, 0xe4, 0xe2, 0x96, 0x22, 0xb5, 0x68, 0x29, 0xb2, 0x23, 0x6c, 0x4f, 0xa6, 0x37, 0x59, 0x08, 0xb6, 0x05, 0x22, 0x92, 0xdb, 0x21, 0xe4, 0xe2, 0x8e, 0x22,
0xd9, 0x4a, 0x3c, 0x86, 0x02, 0xcf, 0xa1, 0x21, 0xb3, 0xa7, 0x33, 0x11, 0xf3, 0x65, 0xbc, 0x04, 0xb5, 0xe8, 0x28, 0xb2, 0x63, 0xd9, 0x49, 0x3c, 0x86, 0x6d, 0x9e, 0x43, 0x43, 0x66, 0xb9, 0x33,
0xd0, 0x53, 0x28, 0x4f, 0x69, 0x18, 0xda, 0xd7, 0x94, 0xc8, 0xb8, 0x05, 0xc1, 0x51, 0x8a, 0xc0, 0x11, 0xf3, 0x25, 0xbc, 0x04, 0xd0, 0x97, 0x50, 0x72, 0x69, 0x18, 0x5a, 0x37, 0x94, 0xc8, 0xb8,
0xb6, 0x08, 0xdf, 0xa7, 0x10, 0xe7, 0x91, 0x88, 0x29, 0x23, 0x99, 0x22, 0x50, 0x32, 0xad, 0xa7, 0x05, 0xc1, 0x28, 0x46, 0x60, 0x47, 0x84, 0xef, 0x97, 0x10, 0xe7, 0x91, 0x88, 0x94, 0x91, 0xa4,
0x70, 0x66, 0x47, 0xe9, 0x21, 0x99, 0xc2, 0x99, 0x8d, 0x5e, 0xc0, 0xb6, 0xcc, 0x41, 0x8e, 0xe7, 0x08, 0x94, 0xa4, 0xf5, 0x14, 0xce, 0xac, 0x28, 0x3d, 0x24, 0x53, 0x38, 0xb3, 0xd0, 0x33, 0xd8,
0x4c, 0xe7, 0x53, 0x99, 0x8b, 0x72, 0x22, 0x17, 0x55, 0x45, 0x2e, 0x92, 0xb8, 0x48, 0x49, 0x8f, 0x91, 0x39, 0xc8, 0xf6, 0x6c, 0x77, 0xee, 0xca, 0x5c, 0x94, 0x13, 0xb9, 0xa8, 0x22, 0x72, 0x91,
0x20, 0x7f, 0x69, 0x87, 0x94, 0x57, 0x8f, 0x28, 0x57, 0xe4, 0xf8, 0xba, 0x4d, 0x29, 0x27, 0xf1, 0xc4, 0x45, 0x4a, 0x7a, 0x04, 0xf9, 0x2b, 0x2b, 0xa4, 0xbc, 0x7a, 0x44, 0xb9, 0x22, 0xc7, 0xbf,
0x9a, 0x12, 0xf0, 0x2c, 0x28, 0x53, 0x44, 0xee, 0x8a, 0x52, 0xcc, 0xef, 0x72, 0x61, 0xc1, 0xfe, 0x3b, 0x94, 0x72, 0x11, 0xaf, 0x29, 0x01, 0xcf, 0x82, 0x32, 0x45, 0xe4, 0xae, 0x29, 0xc5, 0xfc,
0xb4, 0xb4, 0x50, 0x4c, 0x58, 0x90, 0xb8, 0xb0, 0xf0, 0x02, 0xb6, 0xe9, 0x27, 0x16, 0xd8, 0xc4, 0x2e, 0x17, 0x16, 0xac, 0x0f, 0x4b, 0x0b, 0x85, 0x84, 0x05, 0x89, 0x0b, 0x0b, 0xcf, 0x60, 0x87,
0x9f, 0xd9, 0x3f, 0xcd, 0x29, 0x19, 0xdb, 0xcc, 0x16, 0x3d, 0x6a, 0x09, 0x57, 0x05, 0xa1, 0x27, 0x7e, 0x60, 0x81, 0x45, 0xfc, 0x99, 0xf5, 0xd3, 0x9c, 0x92, 0x89, 0xc5, 0x2c, 0xd1, 0xa2, 0x16,
0xf0, 0x96, 0xcd, 0x6c, 0xfd, 0x31, 0xd4, 0x30, 0x0d, 0x29, 0xeb, 0x3a, 0x61, 0xe8, 0xf8, 0x5e, 0x71, 0x45, 0x08, 0xfa, 0x02, 0x6f, 0x5b, 0xcc, 0xd2, 0x1e, 0x43, 0x0d, 0xd3, 0x90, 0xb2, 0x9e,
0xd3, 0xf7, 0x58, 0xe0, 0xbb, 0x51, 0x11, 0xd2, 0x0f, 0x60, 0x7f, 0x23, 0x55, 0x56, 0x11, 0x2e, 0x1d, 0x86, 0xb6, 0xef, 0xb5, 0x7c, 0x8f, 0x05, 0xbe, 0x13, 0x15, 0x21, 0xed, 0x08, 0x0e, 0x37,
0xfc, 0x6e, 0x4e, 0x83, 0xdb, 0xcd, 0xc2, 0xef, 0x60, 0x7f, 0x23, 0x35, 0x2a, 0x41, 0x2f, 0x21, 0x4a, 0x65, 0x15, 0xe1, 0x8b, 0xdf, 0xcc, 0x69, 0x70, 0xb7, 0x79, 0xf1, 0x1b, 0x38, 0xdc, 0x28,
0x33, 0xb3, 0x9d, 0x20, 0xd4, 0xb6, 0x44, 0x19, 0xdf, 0x5b, 0xe9, 0x1a, 0x9c, 0xe0, 0xcc, 0x09, 0x8d, 0x4a, 0xd0, 0x73, 0xc8, 0xcc, 0x2c, 0x3b, 0x08, 0xab, 0x5b, 0xa2, 0x8c, 0xef, 0xaf, 0x74,
0x99, 0x1f, 0xdc, 0x62, 0xc9, 0x74, 0x9e, 0xce, 0x2b, 0xea, 0x96, 0xfe, 0x67, 0x05, 0x8a, 0x09, 0x0d, 0x76, 0x70, 0x6e, 0x87, 0xcc, 0x0f, 0xee, 0xb0, 0x24, 0x5d, 0xa4, 0xf3, 0x8a, 0xba, 0xa5,
0x22, 0x7f, 0x07, 0x9e, 0x3f, 0xa6, 0xe4, 0x2a, 0xf0, 0xa7, 0xf1, 0x0b, 0x5b, 0x00, 0x48, 0x83, 0xfd, 0x59, 0x81, 0x42, 0x42, 0xc8, 0x73, 0xbf, 0xe7, 0x4f, 0x28, 0xb9, 0x0e, 0x7c, 0x37, 0xae,
0x9c, 0x58, 0x30, 0x3f, 0x7a, 0x5e, 0xf1, 0x12, 0x7d, 0x03, 0xb9, 0x89, 0x54, 0x21, 0xbc, 0x54, 0x63, 0x1c, 0xe8, 0x04, 0xbe, 0xcb, 0xcb, 0xba, 0x10, 0x32, 0x3f, 0x7a, 0x5d, 0x59, 0xfe, 0x39,
0x3c, 0xd9, 0x59, 0xb3, 0xce, 0xef, 0x06, 0xc7, 0x3c, 0xe7, 0xe9, 0x7c, 0x4a, 0x4d, 0x9f, 0xa7, 0xf4, 0xd1, 0xd7, 0x90, 0x9b, 0x4a, 0x05, 0xc2, 0x47, 0x85, 0xd3, 0xdd, 0x35, 0xdb, 0xfc, 0x66,
0xf3, 0x69, 0x35, 0x73, 0x9e, 0xce, 0x67, 0xd4, 0xec, 0x79, 0x3a, 0x9f, 0x55, 0x73, 0xfa, 0x7f, 0x70, 0xcc, 0xb9, 0x48, 0xe7, 0x53, 0x6a, 0xfa, 0x22, 0x9d, 0x4f, 0xab, 0x99, 0x8b, 0x74, 0x3e,
0x14, 0xc8, 0xc7, 0xdc, 0x7c, 0x2f, 0x3c, 0xe7, 0x13, 0xfe, 0x32, 0xa2, 0x8e, 0x60, 0x09, 0x20, 0xa3, 0x66, 0x2f, 0xd2, 0xf9, 0xac, 0x9a, 0xd3, 0xfe, 0xa3, 0x40, 0x3e, 0x66, 0xf3, 0x9d, 0xf0,
0x1d, 0x4a, 0x62, 0xb1, 0xda, 0x68, 0xac, 0x60, 0xe8, 0x19, 0x94, 0x17, 0xeb, 0x45, 0x35, 0x4b, 0x8c, 0x4f, 0xf8, 0xbb, 0x88, 0xfa, 0x81, 0x3c, 0x07, 0x86, 0xb6, 0x4b, 0x51, 0x1d, 0x8a, 0x42,
0xe1, 0x55, 0x90, 0x6b, 0x0a, 0xe7, 0xa3, 0x11, 0x0d, 0x43, 0x69, 0x2a, 0x23, 0x35, 0x25, 0x31, 0xb8, 0xda, 0x65, 0x00, 0xc7, 0x9a, 0xa2, 0xd3, 0x10, 0x2d, 0x79, 0xcc, 0x58, 0x14, 0x32, 0xde,
0x54, 0x87, 0x6a, 0xbc, 0x8e, 0x0d, 0x66, 0x05, 0xdb, 0x3a, 0x8c, 0x5e, 0x80, 0x9a, 0x84, 0xa6, 0x92, 0x4b, 0x4a, 0x3c, 0x55, 0x84, 0xf3, 0xf1, 0x98, 0x86, 0xa1, 0xb4, 0x92, 0x91, 0x94, 0x08,
0xcb, 0x79, 0xe0, 0x0e, 0x2e, 0xaf, 0x41, 0x9f, 0xc2, 0x43, 0xe1, 0xd6, 0x8b, 0xc0, 0xbf, 0xb4, 0x13, 0x86, 0x9e, 0x42, 0x25, 0xa6, 0xc4, 0xb6, 0xb2, 0xb2, 0xe5, 0x88, 0xe0, 0xc8, 0x5c, 0x03,
0x2f, 0x1d, 0xd7, 0x61, 0xb7, 0x71, 0xcf, 0xc2, 0xaf, 0x20, 0xf0, 0xa7, 0xc4, 0x8b, 0x9b, 0x80, 0xd4, 0x24, 0xcf, 0x5d, 0x0e, 0x01, 0xe5, 0x25, 0x91, 0x1b, 0x95, 0x87, 0xd7, 0xfe, 0x08, 0x07,
0x12, 0x5e, 0x02, 0xdc, 0x1d, 0xcc, 0x97, 0xb4, 0xc8, 0x1d, 0xd1, 0x92, 0x77, 0x23, 0x0b, 0xe3, 0xc2, 0x95, 0x97, 0x81, 0x7f, 0x65, 0x5d, 0xd9, 0x8e, 0xcd, 0xee, 0xe2, 0x3e, 0x85, 0x1f, 0x3c,
0x29, 0x61, 0x7c, 0xb1, 0xd6, 0x6f, 0x40, 0xbb, 0x6b, 0x2e, 0x7a, 0x42, 0x87, 0x50, 0x9c, 0x2d, 0xf0, 0x5d, 0xe2, 0xc5, 0x85, 0xbf, 0x88, 0xf3, 0x1c, 0x30, 0x79, 0x25, 0x3b, 0x80, 0x1c, 0xf3,
0x61, 0x61, 0x51, 0xc1, 0x49, 0x28, 0xe9, 0xe8, 0xad, 0x5f, 0x76, 0xb4, 0xfe, 0x17, 0x05, 0xb6, 0xa5, 0x28, 0x72, 0x01, 0xf3, 0x85, 0x20, 0x39, 0x3c, 0xa5, 0x56, 0x86, 0x27, 0xed, 0x16, 0xaa,
0x4f, 0xe7, 0x8e, 0x3b, 0x5e, 0x69, 0xc5, 0x92, 0xa3, 0x9e, 0xb2, 0x3a, 0xea, 0x6d, 0x9a, 0xe3, 0xf7, 0x6d, 0x45, 0x6f, 0xa6, 0x0e, 0x85, 0xd9, 0x12, 0x16, 0xe6, 0x14, 0x9c, 0x84, 0x92, 0xbe,
0xb6, 0x36, 0xce, 0x71, 0x9b, 0x66, 0xa5, 0xd4, 0xbd, 0xb3, 0xd2, 0x13, 0x28, 0x2e, 0xc7, 0x24, 0xdd, 0xfa, 0x65, 0xdf, 0x6a, 0x7f, 0x51, 0x60, 0xe7, 0x6c, 0x6e, 0x3b, 0x93, 0x95, 0xde, 0x2b,
0xd9, 0xe9, 0x96, 0x30, 0x4c, 0xe2, 0x19, 0x29, 0xd4, 0xdf, 0x00, 0x4a, 0x6e, 0x34, 0xba, 0x90, 0xb9, 0x3b, 0x65, 0x75, 0xb4, 0xdb, 0x34, 0xb7, 0x6d, 0x6d, 0x9c, 0xdb, 0x36, 0xcd, 0x46, 0xa9,
0x45, 0x47, 0xa8, 0xdc, 0xdb, 0x11, 0xbe, 0xf8, 0xbb, 0x02, 0xa5, 0x64, 0x5b, 0x8e, 0xca, 0x50, 0x07, 0x67, 0xa3, 0xcf, 0xa1, 0xb0, 0x1c, 0x8b, 0x64, 0x6b, 0x5b, 0xc4, 0x30, 0x8d, 0x67, 0xa2,
0x30, 0x2d, 0xd2, 0xee, 0x98, 0xdf, 0x9d, 0x0d, 0xd4, 0x2f, 0xf8, 0xb2, 0x3f, 0x6c, 0x36, 0x0d, 0x50, 0x7b, 0x05, 0x28, 0xb9, 0xd1, 0xe8, 0x42, 0x16, 0x2d, 0xa0, 0xf2, 0x60, 0x0b, 0xf8, 0xec,
0xa3, 0x65, 0xb4, 0x54, 0x85, 0x17, 0x0c, 0x9e, 0xea, 0x8d, 0xd6, 0xa2, 0x3e, 0x6c, 0xf1, 0xd2, 0xef, 0x0a, 0x14, 0x93, 0x7d, 0x38, 0x2a, 0xc1, 0xb6, 0x61, 0x92, 0x4e, 0xd7, 0xf8, 0xee, 0x7c,
0x1e, 0x61, 0x56, 0x8f, 0xe0, 0xde, 0x70, 0x60, 0xa8, 0x29, 0xa4, 0x42, 0x29, 0x02, 0x0d, 0x8c, 0xa8, 0x7e, 0xc2, 0x3f, 0x07, 0xa3, 0x56, 0x4b, 0xd7, 0xdb, 0x7a, 0x5b, 0x55, 0x78, 0x85, 0xe0,
0x7b, 0x58, 0x4d, 0xf3, 0xfa, 0x17, 0x21, 0x77, 0xdb, 0x92, 0xb8, 0x6b, 0xc9, 0x88, 0xb6, 0x23, 0xb9, 0x5d, 0x6f, 0x2f, 0x0a, 0xc2, 0x16, 0xaf, 0xe5, 0x11, 0x66, 0xf6, 0x09, 0xee, 0x8f, 0x86,
0xe6, 0x5a, 0x56, 0x6c, 0x72, 0xda, 0xe8, 0x34, 0xac, 0xa6, 0xa1, 0x66, 0x4f, 0xfe, 0x96, 0x81, 0xba, 0x9a, 0x42, 0x2a, 0x14, 0x23, 0x50, 0xc7, 0xb8, 0x8f, 0xd5, 0x34, 0x2f, 0x78, 0x11, 0x72,
0xac, 0x38, 0x41, 0x80, 0xce, 0xa0, 0x98, 0x98, 0xd0, 0xd0, 0xc1, 0x67, 0x27, 0xb7, 0x9a, 0xb6, 0xbf, 0x0f, 0x89, 0xdb, 0x94, 0x8c, 0xe8, 0x33, 0x62, 0xd6, 0xb2, 0x44, 0x93, 0xb3, 0x66, 0xb7,
0x79, 0x10, 0x99, 0x87, 0xaf, 0x14, 0x74, 0x0e, 0xa5, 0xe4, 0xfc, 0x83, 0x92, 0xcd, 0xea, 0x86, 0x69, 0xb6, 0x74, 0x35, 0x7b, 0xfa, 0xb7, 0x0c, 0x64, 0xc5, 0x09, 0x02, 0x74, 0x0e, 0x85, 0xc4,
0xc1, 0xe8, 0xb3, 0xba, 0xde, 0x82, 0x6a, 0x84, 0xcc, 0x99, 0xf2, 0xe6, 0x34, 0x1a, 0x17, 0x50, 0x48, 0x86, 0x8e, 0x3e, 0x3a, 0xaa, 0xd5, 0xaa, 0x9b, 0x27, 0x8f, 0x79, 0xf8, 0x42, 0x41, 0x17,
0x2d, 0xc1, 0xbf, 0x36, 0x83, 0xd4, 0xf6, 0x37, 0xd2, 0x22, 0x17, 0x76, 0xe4, 0x11, 0xa3, 0x86, 0x50, 0x4c, 0x0e, 0x3c, 0x28, 0xd9, 0x9d, 0x6e, 0x98, 0x84, 0x3e, 0xaa, 0xeb, 0x35, 0xa8, 0x7a,
0xfd, 0xce, 0x11, 0x57, 0xa7, 0x84, 0xda, 0x97, 0xf7, 0x91, 0x23, 0x6d, 0x63, 0xd8, 0xd9, 0x90, 0xc8, 0x6c, 0x97, 0x77, 0xa3, 0xd1, 0x7c, 0x80, 0x6a, 0x09, 0xfe, 0xda, 0xd0, 0x51, 0x3b, 0xdc,
0xc0, 0xd1, 0xaf, 0x92, 0x3b, 0xb8, 0x37, 0xfd, 0xd7, 0x9e, 0xff, 0x12, 0xdb, 0xd2, 0xca, 0x86, 0x28, 0x8b, 0x5c, 0xd8, 0x95, 0x47, 0x8c, 0x3a, 0xf4, 0x7b, 0x47, 0x5c, 0x1d, 0x0b, 0x6a, 0x9f,
0x4c, 0xbf, 0x62, 0xe5, 0xfe, 0x3a, 0xb1, 0x62, 0xe5, 0x73, 0x05, 0xe3, 0x47, 0x50, 0xd7, 0x33, 0x3d, 0x24, 0x8e, 0xb4, 0x4d, 0x60, 0x77, 0x43, 0xc6, 0x46, 0xbf, 0x4a, 0xee, 0xe0, 0xc1, 0x7c,
0x01, 0xd2, 0xd7, 0x65, 0xef, 0x66, 0xa5, 0xda, 0xd3, 0xcf, 0xf2, 0x44, 0xca, 0x4d, 0x80, 0x65, 0x5f, 0x7b, 0xfa, 0x4b, 0xb4, 0xa5, 0x95, 0x0d, 0xa9, 0x7d, 0xc5, 0xca, 0xc3, 0x85, 0x61, 0xc5,
0x3c, 0xa1, 0xc7, 0x09, 0x91, 0x3b, 0xf9, 0xa0, 0x76, 0x70, 0x0f, 0x55, 0xaa, 0x3a, 0xfd, 0xf5, 0xca, 0xc7, 0x2a, 0xc4, 0x8f, 0xa0, 0xae, 0x67, 0x02, 0xa4, 0xad, 0xaf, 0xbd, 0x9f, 0x92, 0x6a,
0x1f, 0x8f, 0xaf, 0x1d, 0x36, 0x99, 0x5f, 0x1e, 0x8d, 0xfc, 0xe9, 0xb1, 0xcb, 0x5b, 0x7c, 0xcf, 0x5f, 0x7e, 0x94, 0x13, 0x29, 0x37, 0x00, 0x96, 0xf1, 0x84, 0x1e, 0x27, 0x96, 0xdc, 0xcb, 0x07,
0xf1, 0xae, 0x3d, 0xca, 0x7e, 0xf6, 0x83, 0x9b, 0x63, 0xd7, 0x1b, 0x1f, 0x8b, 0xb0, 0x3c, 0x5e, 0xb5, 0xa3, 0x07, 0xa4, 0x52, 0xd5, 0xd9, 0x37, 0x7f, 0x38, 0xb9, 0xb1, 0xd9, 0x74, 0x7e, 0x75,
0x68, 0xb9, 0xcc, 0x8a, 0x3f, 0xa4, 0x7e, 0xf3, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0xf6, 0x3c, 0xf6, 0xdd, 0x13, 0x87, 0xf7, 0xf4, 0x9e, 0xed, 0xdd, 0x78, 0x94, 0xfd, 0xec, 0x07, 0xb7,
0xab, 0x74, 0xc0, 0x12, 0x00, 0x00, 0x27, 0x8e, 0x37, 0x39, 0x11, 0x61, 0x79, 0xb2, 0xd0, 0x72, 0x95, 0x15, 0xff, 0x80, 0xfa, 0xf5,
0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x77, 0x3e, 0x21, 0x8e, 0xb0, 0x12, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -60,15 +60,15 @@ message SendPaymentRequest {
*/ */
int64 fee_limit_sat = 7; int64 fee_limit_sat = 7;
/** /**
The maximum number of millisatoshis that will be paid as a fee of the The maximum number of millisatoshis that will be paid as a fee of the
payment. If this field is left to the default value of 0, only zero-fee payment. If this field is left to the default value of 0, only zero-fee
routes will be considered. This usually means single hop routes connecting routes will be considered. This usually means single hop routes connecting
directly to the destination. To send the payment without a fee limit, use directly to the destination. To send the payment without a fee limit, use
max int here. max int here.
The fields fee_limit_sat and fee_limit_msat are mutually exclusive. The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
*/ */
int64 fee_limit_msat = 13; int64 fee_limit_msat = 13;
/** /**
@ -92,7 +92,7 @@ message SendPaymentRequest {
/** /**
Optional route hints to reach the destination through private channels. Optional route hints to reach the destination through private channels.
*/ */
repeated lnrpc.RouteHint route_hints = 10 [json_name = "route_hints"]; repeated lnrpc.RouteHint route_hints = 10;
/** /**
An optional field that can be used to pass an arbitrary set of TLV records An optional field that can be used to pass an arbitrary set of TLV records
@ -383,78 +383,81 @@ message ChannelUpdate {
*/ */
bytes extra_opaque_data = 12; bytes extra_opaque_data = 12;
} }
message ResetMissionControlRequest{} message ResetMissionControlRequest {
}
message ResetMissionControlResponse{} message ResetMissionControlResponse {
}
message QueryMissionControlRequest {} message QueryMissionControlRequest {
}
/// QueryMissionControlResponse contains mission control state. /// QueryMissionControlResponse contains mission control state.
message QueryMissionControlResponse { message QueryMissionControlResponse {
reserved 1; reserved 1;
/// Node pair-level mission control state. /// Node pair-level mission control state.
repeated PairHistory pairs = 2 [json_name = "pairs"]; repeated PairHistory pairs = 2;
} }
/// PairHistory contains the mission control state for a particular node pair. /// PairHistory contains the mission control state for a particular node pair.
message PairHistory { message PairHistory {
/// The source node pubkey of the pair. /// The source node pubkey of the pair.
bytes node_from = 1 [json_name ="node_from"]; bytes node_from = 1;
/// The destination node pubkey of the pair. /// The destination node pubkey of the pair.
bytes node_to = 2 [json_name="node_to"]; bytes node_to = 2;
reserved 3, 4, 5, 6; reserved 3, 4, 5, 6;
PairData history = 7 [json_name="history"]; PairData history = 7;
} }
message PairData { message PairData {
/// Time of last failure. /// Time of last failure.
int64 fail_time = 1 [json_name = "fail_time"]; int64 fail_time = 1;
/** /**
Lowest amount that failed to forward rounded to whole sats. This may be Lowest amount that failed to forward rounded to whole sats. This may be
set to zero if the failure is independent of amount. set to zero if the failure is independent of amount.
*/ */
int64 fail_amt_sat = 2 [json_name = "fail_amt_sat"]; int64 fail_amt_sat = 2;
/** /**
Lowest amount that failed to forward in millisats. This may be Lowest amount that failed to forward in millisats. This may be
set to zero if the failure is independent of amount. set to zero if the failure is independent of amount.
*/ */
int64 fail_amt_msat = 4 [json_name = "fail_amt_msat"]; int64 fail_amt_msat = 4;
reserved 3; reserved 3;
/// Time of last success. /// Time of last success.
int64 success_time = 5 [json_name = "success_time"]; int64 success_time = 5;
/// Highest amount that we could successfully forward rounded to whole sats. /// Highest amount that we could successfully forward rounded to whole sats.
int64 success_amt_sat = 6 [json_name = "success_amt_sat"]; int64 success_amt_sat = 6;
/// Highest amount that we could successfully forward in millisats. /// Highest amount that we could successfully forward in millisats.
int64 success_amt_msat = 7 [json_name = "success_amt_msat"]; int64 success_amt_msat = 7;
} }
message QueryProbabilityRequest{ message QueryProbabilityRequest {
/// The source node pubkey of the pair. /// The source node pubkey of the pair.
bytes from_node = 1 [json_name = "from_node"]; bytes from_node = 1;
/// The destination node pubkey of the pair. /// The destination node pubkey of the pair.
bytes to_node = 2 [json_name = "to_node"]; bytes to_node = 2;
/// The amount for which to calculate a probability. /// The amount for which to calculate a probability.
int64 amt_msat = 3 [json_name = "amt_msat"]; int64 amt_msat = 3;
} }
message QueryProbabilityResponse{ message QueryProbabilityResponse {
/// The success probability for the requested pair. /// The success probability for the requested pair.
double probability = 1 [json_name = "probability"]; double probability = 1;
/// The historical data for the requested pair. /// The historical data for the requested pair.
PairData history = 2 [json_name = "history"]; PairData history = 2;
} }
message BuildRouteRequest { message BuildRouteRequest {
@ -496,50 +499,49 @@ service Router {
PaymentRequest to the final destination. The call returns a stream of PaymentRequest to the final destination. The call returns a stream of
payment status updates. payment status updates.
*/ */
rpc SendPayment(SendPaymentRequest) returns (stream PaymentStatus); rpc SendPayment (SendPaymentRequest) returns (stream PaymentStatus);
/** /**
TrackPayment returns an update stream for the payment identified by the TrackPayment returns an update stream for the payment identified by the
payment hash. payment hash.
*/ */
rpc TrackPayment(TrackPaymentRequest) returns (stream PaymentStatus); rpc TrackPayment (TrackPaymentRequest) returns (stream PaymentStatus);
/** /**
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
may cost to send an HTLC to the target end destination. may cost to send an HTLC to the target end destination.
*/ */
rpc EstimateRouteFee(RouteFeeRequest) returns (RouteFeeResponse); rpc EstimateRouteFee (RouteFeeRequest) returns (RouteFeeResponse);
/** /**
SendToRoute attempts to make a payment via the specified route. This method SendToRoute attempts to make a payment via the specified route. This method
differs from SendPayment in that it allows users to specify a full route differs from SendPayment in that it allows users to specify a full route
manually. This can be used for things like rebalancing, and atomic swaps. manually. This can be used for things like rebalancing, and atomic swaps.
*/ */
rpc SendToRoute(SendToRouteRequest) returns (SendToRouteResponse); rpc SendToRoute (SendToRouteRequest) returns (SendToRouteResponse);
/** /**
ResetMissionControl clears all mission control state and starts with a clean ResetMissionControl clears all mission control state and starts with a clean
slate. slate.
*/ */
rpc ResetMissionControl(ResetMissionControlRequest) returns (ResetMissionControlResponse); rpc ResetMissionControl (ResetMissionControlRequest) returns (ResetMissionControlResponse);
/** /**
QueryMissionControl exposes the internal mission control state to callers. QueryMissionControl exposes the internal mission control state to callers.
It is a development feature. It is a development feature.
*/ */
rpc QueryMissionControl(QueryMissionControlRequest) returns (QueryMissionControlResponse); rpc QueryMissionControl (QueryMissionControlRequest) returns (QueryMissionControlResponse);
/** /**
QueryProbability returns the current success probability estimate for a QueryProbability returns the current success probability estimate for a
given node pair and amount. given node pair and amount.
*/ */
rpc QueryProbability(QueryProbabilityRequest) returns (QueryProbabilityResponse); rpc QueryProbability (QueryProbabilityRequest) returns (QueryProbabilityResponse);
/** /**
BuildRoute builds a fully specified route based on a list of hop public BuildRoute builds a fully specified route based on a list of hop public
keys. It retrieves the relevant channel policies from the graph in order to keys. It retrieves the relevant channel policies from the graph in order to
calculate the correct fees and time locks. calculate the correct fees and time locks.
*/ */
rpc BuildRoute(BuildRouteRequest) returns (BuildRouteResponse); rpc BuildRoute (BuildRouteRequest) returns (BuildRouteResponse);
} }