From d451ef4ee101f324426812283e0c285ac6fc1e8a Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 13 Apr 2020 10:07:53 +0200 Subject: [PATCH 1/3] routerrpc: rename rpcs to SendPaymentV2 and TrackPaymentV2 The message in the response stream changed. Rename the calls themselves, to prevent older applications from getting decode errors. Especially troublesome is the case where the request is executed (send payment), but the application can't read the outcome (payment sent or not?) --- cmd/lncli/cmd_pay.go | 4 +- lnrpc/routerrpc/router.pb.go | 324 +++++++++++++++---------------- lnrpc/routerrpc/router.proto | 8 +- lnrpc/routerrpc/router_server.go | 18 +- lntest/itest/lnd_test.go | 10 +- 5 files changed, 182 insertions(+), 182 deletions(-) diff --git a/cmd/lncli/cmd_pay.go b/cmd/lncli/cmd_pay.go index 78f5167e..26e3c9ef 100644 --- a/cmd/lncli/cmd_pay.go +++ b/cmd/lncli/cmd_pay.go @@ -399,7 +399,7 @@ func sendPaymentRequest(ctx *cli.Context, showInflight := ctx.Bool(showInflightFlag.Name) - stream, err := routerClient.SendPayment(context.Background(), req) + stream, err := routerClient.SendPaymentV2(context.Background(), req) if err != nil { return err } @@ -462,7 +462,7 @@ func trackPayment(ctx *cli.Context) error { PaymentHash: hash, } - stream, err := client.TrackPayment(context.Background(), req) + stream, err := client.TrackPaymentV2(context.Background(), req) if err != nil { return err } diff --git a/lnrpc/routerrpc/router.pb.go b/lnrpc/routerrpc/router.pb.go index c5d8feae..7b0b18d0 100644 --- a/lnrpc/routerrpc/router.pb.go +++ b/lnrpc/routerrpc/router.pb.go @@ -1606,135 +1606,135 @@ func init() { func init() { proto.RegisterFile("routerrpc/router.proto", fileDescriptor_7a0613f69d37b0a5) } var fileDescriptor_7a0613f69d37b0a5 = []byte{ - // 2040 bytes of a gzipped FileDescriptorProto + // 2044 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcd, 0x76, 0xdb, 0xc6, - 0x15, 0x0e, 0x44, 0x50, 0x22, 0x2f, 0xff, 0xa0, 0xa1, 0x23, 0xb3, 0x54, 0x9c, 0x32, 0x68, 0x63, - 0xf3, 0xb8, 0xae, 0xe4, 0xa8, 0x3d, 0xad, 0x4f, 0xdb, 0xb8, 0xa5, 0x08, 0x28, 0x82, 0x45, 0x01, - 0xcc, 0x10, 0xb2, 0x9d, 0x7a, 0x31, 0x07, 0x22, 0x87, 0x22, 0x2a, 0xfc, 0xb0, 0xc0, 0xd0, 0x8e, - 0x96, 0xdd, 0xf6, 0x05, 0xfa, 0x08, 0x7d, 0x89, 0xbe, 0x4b, 0xb7, 0xdd, 0x75, 0xd7, 0x75, 0xcf, - 0x0c, 0x00, 0x12, 0x94, 0x28, 0x27, 0x1b, 0x09, 0xf8, 0xee, 0x37, 0x77, 0xee, 0x9d, 0xfb, 0xdd, - 0x99, 0x01, 0x61, 0x2f, 0x0a, 0x17, 0x8c, 0x46, 0xd1, 0x7c, 0x7c, 0x98, 0x3c, 0x1d, 0xcc, 0xa3, - 0x90, 0x85, 0xa8, 0xbc, 0xc4, 0xdb, 0xe5, 0x68, 0x3e, 0x4e, 0x50, 0xf5, 0x1f, 0xdb, 0x80, 0x46, - 0x34, 0x98, 0x0c, 0x9d, 0x1b, 0x9f, 0x06, 0x0c, 0xd3, 0xbf, 0x2e, 0x68, 0xcc, 0x10, 0x02, 0x79, - 0x42, 0x63, 0xd6, 0x92, 0x3a, 0x52, 0xb7, 0x8a, 0xc5, 0x33, 0x52, 0xa0, 0xe0, 0xf8, 0xac, 0xb5, - 0xd5, 0x91, 0xba, 0x05, 0xcc, 0x1f, 0xd1, 0x4f, 0xa0, 0xe4, 0xf8, 0x8c, 0xf8, 0xb1, 0xc3, 0x5a, - 0x55, 0x01, 0xef, 0x38, 0x3e, 0x3b, 0x8f, 0x1d, 0x86, 0xbe, 0x80, 0xea, 0x3c, 0x71, 0x49, 0x66, - 0x4e, 0x3c, 0x6b, 0x15, 0x84, 0xa3, 0x4a, 0x8a, 0x9d, 0x3a, 0xf1, 0x0c, 0x75, 0x41, 0x99, 0xba, - 0x81, 0xe3, 0x91, 0xb1, 0xc7, 0xde, 0x93, 0x09, 0xf5, 0x98, 0xd3, 0x92, 0x3b, 0x52, 0xb7, 0x88, - 0xeb, 0x02, 0xef, 0x7b, 0xec, 0xbd, 0xc6, 0x51, 0xf4, 0x04, 0x1a, 0x99, 0xb3, 0x28, 0x09, 0xb0, - 0x55, 0xec, 0x48, 0xdd, 0x32, 0xae, 0xcf, 0xd7, 0xc3, 0x7e, 0x02, 0x0d, 0xe6, 0xfa, 0x34, 0x5c, - 0x30, 0x12, 0xd3, 0x71, 0x18, 0x4c, 0xe2, 0xd6, 0x76, 0xe2, 0x31, 0x85, 0x47, 0x09, 0x8a, 0x54, - 0xa8, 0x4d, 0x29, 0x25, 0x9e, 0xeb, 0xbb, 0x8c, 0xf0, 0xf0, 0x77, 0x44, 0xf8, 0x95, 0x29, 0xa5, - 0x03, 0x8e, 0x8d, 0x1c, 0x86, 0x7e, 0x0e, 0xf5, 0x15, 0x47, 0xe4, 0x58, 0x13, 0xa4, 0x6a, 0x46, - 0x12, 0x89, 0x3e, 0x03, 0x25, 0x5c, 0xb0, 0xab, 0xd0, 0x0d, 0xae, 0xc8, 0x78, 0xe6, 0x04, 0xc4, - 0x9d, 0xb4, 0x4a, 0x1d, 0xa9, 0x2b, 0x1f, 0x6f, 0x3d, 0x97, 0x70, 0x3d, 0xb3, 0xf5, 0x67, 0x4e, - 0x60, 0x4c, 0xd0, 0x63, 0x68, 0x78, 0x4e, 0xcc, 0xc8, 0x2c, 0x9c, 0x93, 0xf9, 0xe2, 0xf2, 0x9a, - 0xde, 0xb4, 0xea, 0x62, 0x65, 0x6a, 0x1c, 0x3e, 0x0d, 0xe7, 0x43, 0x01, 0xa2, 0x47, 0x00, 0x62, - 0x55, 0xc4, 0xe4, 0xad, 0xb2, 0xc8, 0xa1, 0xcc, 0x11, 0x31, 0x31, 0xfa, 0x0a, 0x2a, 0xa2, 0x9a, - 0x64, 0xe6, 0x06, 0x2c, 0x6e, 0x41, 0xa7, 0xd0, 0xad, 0x1c, 0x29, 0x07, 0x5e, 0xc0, 0x0b, 0x8b, - 0xb9, 0xe5, 0xd4, 0x0d, 0x18, 0x86, 0x28, 0x7b, 0x8c, 0xd1, 0x04, 0x9a, 0xbc, 0x8a, 0x64, 0xbc, - 0x88, 0x59, 0xe8, 0x93, 0x88, 0x8e, 0xc3, 0x68, 0x12, 0xb7, 0x2a, 0x62, 0xe8, 0xaf, 0x0f, 0x96, - 0xe2, 0x38, 0xb8, 0xab, 0x86, 0x03, 0x8d, 0xc6, 0xac, 0x2f, 0xc6, 0xe1, 0x64, 0x98, 0x1e, 0xb0, - 0xe8, 0x06, 0xef, 0x4e, 0x6e, 0xe3, 0xe8, 0x19, 0x20, 0xc7, 0xf3, 0xc2, 0x0f, 0x24, 0xa6, 0xde, - 0x94, 0xa4, 0xd5, 0x69, 0x35, 0x3a, 0x52, 0xb7, 0x84, 0x15, 0x61, 0x19, 0x51, 0x6f, 0x9a, 0xba, - 0x47, 0xbf, 0x81, 0x9a, 0x88, 0x69, 0x4a, 0x1d, 0xb6, 0x88, 0x68, 0xdc, 0x52, 0x3a, 0x85, 0x6e, - 0xfd, 0x68, 0x37, 0x4d, 0xe4, 0x24, 0x81, 0x8f, 0x5d, 0x86, 0xab, 0x9c, 0x97, 0xbe, 0xc7, 0x7c, - 0x75, 0x7c, 0xe7, 0x7b, 0x12, 0xcf, 0x1c, 0x9e, 0xc2, 0x6e, 0x47, 0xea, 0xd6, 0x70, 0xd9, 0x77, - 0xbe, 0x1f, 0x09, 0xa0, 0xad, 0xc1, 0xde, 0xe6, 0x88, 0xb9, 0x84, 0xf9, 0x92, 0x73, 0x55, 0xcb, - 0x98, 0x3f, 0xa2, 0x07, 0x50, 0x7c, 0xef, 0x78, 0x0b, 0x2a, 0x64, 0x5d, 0xc5, 0xc9, 0xcb, 0xef, - 0xb6, 0x5e, 0x48, 0xea, 0x0b, 0x68, 0xda, 0x91, 0x33, 0xbe, 0xbe, 0xd5, 0x19, 0xb7, 0x85, 0x2d, - 0xdd, 0x11, 0xb6, 0xfa, 0x12, 0x1a, 0xa2, 0x06, 0x27, 0x94, 0x7e, 0xac, 0x9f, 0x1e, 0x02, 0xef, - 0x16, 0xa1, 0xbe, 0xa4, 0xa7, 0xb6, 0x1d, 0x9f, 0x0b, 0x4f, 0x9d, 0x80, 0xb2, 0x1a, 0x1f, 0xcf, - 0xc3, 0x20, 0xa6, 0xbc, 0x59, 0x78, 0x89, 0xb8, 0xca, 0xb8, 0x28, 0x85, 0x1c, 0x25, 0x31, 0xaa, - 0x9e, 0xe2, 0x27, 0x94, 0x0a, 0x41, 0x3e, 0x4e, 0x7a, 0x80, 0x78, 0xe1, 0xf8, 0x9a, 0x77, 0x95, - 0x73, 0x93, 0xba, 0xaf, 0x71, 0x78, 0x10, 0x8e, 0xaf, 0x35, 0x0e, 0xaa, 0xef, 0x92, 0xc6, 0xb7, - 0x43, 0x31, 0xd7, 0x8f, 0x4f, 0x0f, 0xa9, 0x50, 0x14, 0x6a, 0x11, 0x6e, 0x2b, 0x47, 0xd5, 0xbc, - 0xec, 0x70, 0x62, 0x52, 0xdf, 0x41, 0x73, 0xcd, 0x79, 0x9a, 0x45, 0x1b, 0x4a, 0xf3, 0x88, 0xba, - 0xbe, 0x73, 0x45, 0x53, 0xcf, 0xcb, 0x77, 0xd4, 0x85, 0x9d, 0xa9, 0xe3, 0x7a, 0x8b, 0x28, 0x73, - 0x5c, 0xcf, 0x64, 0x90, 0xa0, 0x38, 0x33, 0xab, 0x9f, 0x41, 0x1b, 0xd3, 0x98, 0xb2, 0x73, 0x37, - 0x8e, 0xdd, 0x30, 0xe8, 0x87, 0x01, 0x8b, 0x42, 0x2f, 0xcd, 0x40, 0x7d, 0x04, 0xfb, 0x1b, 0xad, - 0x49, 0x08, 0x7c, 0xf0, 0xb7, 0x0b, 0x1a, 0xdd, 0x6c, 0x1e, 0xfc, 0x2d, 0xec, 0x6f, 0xb4, 0xa6, - 0xf1, 0x3f, 0x83, 0xe2, 0xdc, 0x71, 0xa3, 0xb8, 0xb5, 0x25, 0xda, 0x66, 0x2f, 0xd7, 0x36, 0x43, - 0xc7, 0x8d, 0x4e, 0xdd, 0x98, 0x85, 0xd1, 0x0d, 0x4e, 0x48, 0xaf, 0xe4, 0x92, 0xa4, 0x6c, 0xa9, - 0x7f, 0x97, 0xa0, 0x92, 0x33, 0xa2, 0x7d, 0x28, 0x07, 0xe1, 0x84, 0x92, 0x69, 0x14, 0xfa, 0xd9, - 0x22, 0x70, 0xe0, 0x24, 0x0a, 0x7d, 0xae, 0x09, 0x61, 0x64, 0x61, 0x2a, 0xc8, 0x6d, 0xfe, 0x6a, - 0x87, 0xe8, 0x97, 0xb0, 0x33, 0x4b, 0x1c, 0x88, 0xad, 0xaa, 0x72, 0xd4, 0xbc, 0x35, 0xb7, 0xe6, - 0x30, 0x07, 0x67, 0x9c, 0x57, 0x72, 0xa9, 0xa0, 0xc8, 0xaf, 0xe4, 0x92, 0xac, 0x14, 0x5f, 0xc9, - 0xa5, 0xa2, 0xb2, 0xfd, 0x4a, 0x2e, 0x6d, 0x2b, 0x3b, 0xea, 0x7f, 0x24, 0x28, 0x65, 0x6c, 0x1e, - 0x09, 0x5f, 0x52, 0xc2, 0x75, 0x91, 0x8a, 0xa9, 0xc4, 0x01, 0xdb, 0xf5, 0x29, 0xea, 0x40, 0x55, - 0x18, 0xd7, 0x25, 0x0a, 0x1c, 0xeb, 0x09, 0x99, 0x8a, 0x3d, 0x34, 0x63, 0x08, 0x3d, 0xca, 0xe9, - 0x1e, 0x9a, 0x50, 0xb2, 0x63, 0x20, 0x5e, 0x8c, 0xc7, 0x34, 0x8e, 0x93, 0x59, 0x8a, 0x09, 0x25, - 0xc5, 0xc4, 0x44, 0x8f, 0xa1, 0x91, 0x51, 0xb2, 0xb9, 0xb6, 0x13, 0xbd, 0xa6, 0x70, 0x3a, 0x5d, - 0x17, 0x94, 0x3c, 0xcf, 0x5f, 0xed, 0xda, 0xf5, 0x15, 0x91, 0x4f, 0x9a, 0x24, 0xaf, 0xfe, 0x05, - 0x1e, 0x8a, 0x52, 0x0e, 0xa3, 0xf0, 0xd2, 0xb9, 0x74, 0x3d, 0x97, 0xdd, 0x64, 0x22, 0xe7, 0x89, - 0x47, 0xa1, 0x4f, 0xf8, 0xda, 0x66, 0x25, 0xe0, 0x80, 0x19, 0x4e, 0x28, 0x2f, 0x01, 0x0b, 0x13, - 0x53, 0x5a, 0x02, 0x16, 0x0a, 0x43, 0xfe, 0xb4, 0x2b, 0xac, 0x9d, 0x76, 0xea, 0x35, 0xb4, 0xee, - 0xce, 0x95, 0x6a, 0xa6, 0x03, 0x95, 0xf9, 0x0a, 0x16, 0xd3, 0x49, 0x38, 0x0f, 0xe5, 0x6b, 0xbb, - 0xf5, 0xc3, 0xb5, 0x55, 0xff, 0x29, 0xc1, 0xee, 0xf1, 0xc2, 0xf5, 0x26, 0x6b, 0x8d, 0x9b, 0x8f, - 0x4e, 0x5a, 0x3f, 0x8b, 0x37, 0x1d, 0xb4, 0x5b, 0x1b, 0x0f, 0xda, 0x4d, 0x87, 0x59, 0xe1, 0xde, - 0xc3, 0xec, 0xa7, 0x50, 0x59, 0x9d, 0x63, 0x71, 0x4b, 0xee, 0x14, 0xba, 0x55, 0x0c, 0xb3, 0xec, - 0x10, 0x8b, 0xd5, 0x17, 0x80, 0xf2, 0x81, 0xa6, 0x0b, 0xb2, 0xdc, 0x3f, 0xa4, 0xfb, 0xf7, 0x8f, - 0xcf, 0xa0, 0x3d, 0x5a, 0x5c, 0xc6, 0xe3, 0xc8, 0xbd, 0xa4, 0xa7, 0xcc, 0x1b, 0xeb, 0xef, 0x69, - 0xc0, 0xe2, 0xac, 0x4b, 0xff, 0x27, 0x43, 0x79, 0x89, 0xa2, 0x03, 0x68, 0xba, 0xc1, 0x38, 0xf4, - 0xb3, 0xa0, 0x03, 0xea, 0xf1, 0xb8, 0x93, 0x4d, 0x7e, 0x37, 0x33, 0xf5, 0x13, 0x8b, 0x31, 0xe1, - 0xfc, 0xb5, 0x24, 0x53, 0xfe, 0x56, 0xc2, 0xcf, 0xe7, 0x98, 0xf0, 0xbb, 0xa0, 0x2c, 0xfd, 0xcf, - 0x98, 0x37, 0x5e, 0x2e, 0x0a, 0xae, 0x67, 0x38, 0x0f, 0x26, 0x61, 0x2e, 0x3d, 0x67, 0x4c, 0x39, - 0x61, 0x66, 0x78, 0xca, 0xfc, 0x02, 0xaa, 0xbc, 0x1f, 0x62, 0xe6, 0xf8, 0x73, 0x12, 0xc4, 0xa2, - 0x2f, 0x64, 0x5c, 0x59, 0x62, 0x66, 0x8c, 0xbe, 0x06, 0xa0, 0x3c, 0x3f, 0xc2, 0x6e, 0xe6, 0x54, - 0xb4, 0x44, 0xfd, 0xe8, 0xf3, 0x9c, 0x30, 0x96, 0x0b, 0x70, 0x20, 0xfe, 0xda, 0x37, 0x73, 0x8a, - 0xcb, 0x34, 0x7b, 0x44, 0x2f, 0xa1, 0x36, 0x0d, 0xa3, 0x0f, 0x4e, 0x34, 0x21, 0x02, 0x4c, 0xb7, - 0x8d, 0x87, 0x39, 0x0f, 0x27, 0x89, 0x5d, 0x0c, 0x3f, 0xfd, 0x04, 0x57, 0xa7, 0xb9, 0x77, 0x74, - 0x06, 0x28, 0x1b, 0x2f, 0xba, 0x3c, 0x71, 0x52, 0x12, 0x4e, 0xf6, 0xef, 0x3a, 0xe1, 0x9b, 0x74, - 0xe6, 0x48, 0x99, 0xde, 0xc2, 0xd0, 0xef, 0xa1, 0x1a, 0x53, 0xc6, 0x3c, 0x9a, 0xba, 0x29, 0x0b, - 0x37, 0x7b, 0x6b, 0xb7, 0x0e, 0x6e, 0xce, 0x3c, 0x54, 0xe2, 0xd5, 0x2b, 0x3a, 0x86, 0x86, 0xe7, - 0x06, 0xd7, 0xf9, 0x30, 0x40, 0x8c, 0x6f, 0xe5, 0xc6, 0x0f, 0xdc, 0xe0, 0x3a, 0x1f, 0x43, 0xcd, - 0xcb, 0x03, 0xea, 0x1f, 0xa0, 0xbc, 0x5c, 0x25, 0x54, 0x81, 0x9d, 0x0b, 0xf3, 0xcc, 0xb4, 0xde, - 0x98, 0xca, 0x27, 0xa8, 0x04, 0xf2, 0x48, 0x37, 0x35, 0x45, 0xe2, 0x30, 0xd6, 0xfb, 0xba, 0xf1, - 0x5a, 0x57, 0xb6, 0xf8, 0xcb, 0x89, 0x85, 0xdf, 0xf4, 0xb0, 0xa6, 0x14, 0x8e, 0x77, 0xa0, 0x28, - 0xe6, 0x55, 0xff, 0x25, 0x41, 0x49, 0x54, 0x30, 0x98, 0x86, 0xe8, 0x17, 0xb0, 0x14, 0x97, 0xd8, - 0xdc, 0xf8, 0x81, 0x2b, 0x54, 0x57, 0xc3, 0x4b, 0xc1, 0xd8, 0x29, 0xce, 0xc9, 0x4b, 0x69, 0x2c, - 0xc9, 0x5b, 0x09, 0x39, 0x33, 0x2c, 0xc9, 0x4f, 0x73, 0x9e, 0xd7, 0xb6, 0x1c, 0x19, 0x37, 0x32, - 0x43, 0xb6, 0xc3, 0x3e, 0xcd, 0x39, 0x5e, 0xdb, 0x89, 0x65, 0xdc, 0xc8, 0x0c, 0x29, 0x57, 0xfd, - 0x2d, 0x54, 0xf3, 0x35, 0x47, 0x4f, 0x40, 0x76, 0x83, 0x69, 0x98, 0x36, 0x62, 0xf3, 0x96, 0xb8, - 0x78, 0x92, 0x58, 0x10, 0x54, 0x04, 0xca, 0xed, 0x3a, 0xab, 0x35, 0xa8, 0xe4, 0x8a, 0xa6, 0xfe, - 0x5b, 0x82, 0xda, 0x5a, 0x11, 0x7e, 0xb4, 0x77, 0xf4, 0x35, 0x54, 0x3f, 0xb8, 0x11, 0x25, 0xf9, - 0xe3, 0xbf, 0x7e, 0xd4, 0x5e, 0x3f, 0xfe, 0xb3, 0xff, 0xfd, 0x70, 0x42, 0x71, 0x85, 0xf3, 0x53, - 0x00, 0xfd, 0x11, 0xea, 0xe9, 0x48, 0x32, 0xa1, 0xcc, 0x71, 0x3d, 0xb1, 0x54, 0xf5, 0x35, 0x79, - 0xa4, 0x5c, 0x4d, 0xd8, 0x71, 0x6d, 0x9a, 0x7f, 0x45, 0x5f, 0xae, 0x1c, 0xc4, 0x2c, 0x72, 0x83, - 0x2b, 0xb1, 0x7e, 0xe5, 0x25, 0x6d, 0x24, 0xc0, 0xa7, 0x7f, 0x93, 0xa1, 0xb6, 0xe6, 0x67, 0x5d, - 0x48, 0x35, 0x28, 0x9b, 0x16, 0xd1, 0x74, 0xbb, 0x67, 0x0c, 0x14, 0x09, 0x29, 0x50, 0xb5, 0x4c, - 0xc3, 0x32, 0x89, 0xa6, 0xf7, 0x2d, 0x8d, 0x4b, 0xea, 0x53, 0xd8, 0x1d, 0x18, 0xe6, 0x19, 0x31, - 0x2d, 0x9b, 0xe8, 0x03, 0xe3, 0x1b, 0xe3, 0x78, 0xa0, 0x2b, 0x05, 0xf4, 0x00, 0x14, 0xcb, 0x24, - 0xfd, 0xd3, 0x9e, 0x61, 0x12, 0xdb, 0x38, 0xd7, 0xad, 0x0b, 0x5b, 0x91, 0x39, 0x7a, 0x6a, 0x0f, - 0xfa, 0x44, 0x7f, 0xdb, 0xd7, 0x75, 0x6d, 0x44, 0xce, 0x7b, 0x6f, 0x95, 0x22, 0x6a, 0xc1, 0x03, - 0xc3, 0x1c, 0x5d, 0x9c, 0x9c, 0x18, 0x7d, 0x43, 0x37, 0x6d, 0x72, 0xdc, 0x1b, 0xf4, 0xcc, 0xbe, - 0xae, 0x6c, 0xa3, 0x3d, 0x40, 0x86, 0xd9, 0xb7, 0xce, 0x87, 0x03, 0xdd, 0xd6, 0x49, 0x26, 0xdd, - 0x1d, 0xd4, 0x84, 0x86, 0xf0, 0xd3, 0xd3, 0x34, 0x72, 0xd2, 0x33, 0x06, 0xba, 0xa6, 0x94, 0x78, - 0x24, 0x29, 0x63, 0x44, 0x34, 0x63, 0xd4, 0x3b, 0xe6, 0x70, 0x99, 0xcf, 0x69, 0x98, 0xaf, 0x2d, - 0xa3, 0xaf, 0x93, 0x3e, 0x77, 0xcb, 0x51, 0xe0, 0xe4, 0x0c, 0xbd, 0x30, 0x35, 0x1d, 0x0f, 0x7b, - 0x86, 0xa6, 0x54, 0xd0, 0x3e, 0x3c, 0xcc, 0x60, 0xfd, 0xed, 0xd0, 0xc0, 0xdf, 0x11, 0xdb, 0xb2, - 0xc8, 0xc8, 0xb2, 0x4c, 0xa5, 0x9a, 0xf7, 0xc4, 0xb3, 0xb5, 0x86, 0xba, 0xa9, 0xd4, 0xd0, 0x43, - 0x68, 0x9e, 0x0f, 0x87, 0x24, 0xb3, 0x64, 0xc9, 0xd6, 0x39, 0xbd, 0xa7, 0x69, 0x58, 0x1f, 0x8d, - 0xc8, 0xb9, 0x31, 0x3a, 0xef, 0xd9, 0xfd, 0x53, 0xa5, 0xc1, 0x53, 0x1a, 0xe9, 0x36, 0xb1, 0x2d, - 0xbb, 0x37, 0x58, 0xe1, 0x0a, 0x0f, 0x68, 0x85, 0xf3, 0x49, 0x07, 0xd6, 0x1b, 0x65, 0x97, 0x2f, - 0x38, 0x87, 0xad, 0xd7, 0x69, 0x88, 0x88, 0xe7, 0x9e, 0x96, 0x27, 0x9b, 0x53, 0x69, 0x72, 0xd0, - 0x30, 0x5f, 0xf7, 0x06, 0x86, 0x46, 0xce, 0xf4, 0xef, 0x44, 0xeb, 0x3f, 0xe0, 0x60, 0x12, 0x19, - 0x19, 0x62, 0xeb, 0x1b, 0x1e, 0x88, 0xf2, 0x29, 0x42, 0x50, 0xef, 0x1b, 0xb8, 0x7f, 0x31, 0xe8, - 0x61, 0x82, 0xad, 0x0b, 0x5b, 0x57, 0xf6, 0x8e, 0xfe, 0x5b, 0x84, 0x6d, 0x71, 0x50, 0x45, 0xe8, - 0x25, 0xd7, 0xff, 0xf2, 0x53, 0x09, 0x3d, 0xfa, 0xe8, 0x27, 0x54, 0x3b, 0xbb, 0xcc, 0xa6, 0xf0, - 0x73, 0x09, 0xfd, 0x09, 0xaa, 0xf9, 0xef, 0x0b, 0x94, 0xdf, 0xdb, 0x37, 0x7c, 0x78, 0x6c, 0xf0, - 0x70, 0x06, 0x8a, 0x1e, 0x33, 0xd7, 0x77, 0x18, 0xcd, 0xbe, 0x17, 0x50, 0x3b, 0xe7, 0xe5, 0xd6, - 0x47, 0x48, 0x7b, 0x7f, 0xa3, 0x2d, 0x3d, 0x95, 0x07, 0x49, 0x3a, 0xe9, 0x8d, 0xfd, 0x4e, 0x3a, - 0xeb, 0x9f, 0x09, 0xed, 0xcf, 0xef, 0x33, 0xa7, 0xde, 0x26, 0xd0, 0xdc, 0x70, 0x09, 0x47, 0x5f, - 0xe6, 0x23, 0xb8, 0xf7, 0x0a, 0xdf, 0x7e, 0xfc, 0x43, 0xb4, 0xd5, 0x2c, 0x1b, 0x6e, 0xeb, 0x6b, - 0xb3, 0xdc, 0x7f, 0xd7, 0x5f, 0x9b, 0xe5, 0x63, 0x97, 0xfe, 0x77, 0xa0, 0xdc, 0xbe, 0xdc, 0x21, - 0xf5, 0xf6, 0xd8, 0xbb, 0xb7, 0xcc, 0xf6, 0xcf, 0x3e, 0xca, 0x49, 0x9d, 0x1b, 0x00, 0xab, 0x2b, - 0x12, 0xfa, 0x2c, 0x37, 0xe4, 0xce, 0x15, 0xaf, 0xfd, 0xe8, 0x1e, 0x6b, 0xea, 0xca, 0x86, 0xe6, - 0x86, 0x3b, 0xd3, 0xda, 0x6a, 0xdc, 0x7f, 0xa7, 0x6a, 0x3f, 0xd8, 0x74, 0xb5, 0x78, 0x2e, 0x1d, - 0x7f, 0xf5, 0xe7, 0xc3, 0x2b, 0x97, 0xcd, 0x16, 0x97, 0x07, 0xe3, 0xd0, 0x3f, 0xf4, 0xdc, 0xab, - 0x19, 0x0b, 0xdc, 0xe0, 0x2a, 0xa0, 0xec, 0x43, 0x18, 0x5d, 0x1f, 0x7a, 0xc1, 0xe4, 0x50, 0xe8, - 0xf2, 0x70, 0x39, 0xfc, 0x72, 0x5b, 0xfc, 0xb4, 0xf4, 0xab, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, - 0x27, 0x10, 0x6c, 0xe6, 0x8a, 0x12, 0x00, 0x00, + 0x15, 0x0e, 0x44, 0x50, 0x22, 0x2f, 0xff, 0xa0, 0xa1, 0x23, 0xb3, 0x94, 0x9d, 0x32, 0x68, 0x63, + 0xf3, 0xb8, 0xae, 0xe4, 0xa8, 0x3d, 0xad, 0x4f, 0xdb, 0xa4, 0xa5, 0x08, 0x28, 0x82, 0x4d, 0x01, + 0xcc, 0x10, 0x92, 0x9d, 0x7a, 0x31, 0x07, 0x22, 0x87, 0x22, 0x2a, 0xfc, 0xb0, 0xc0, 0xd0, 0x8e, + 0x96, 0xdd, 0xf6, 0x05, 0xfa, 0x08, 0x7d, 0x89, 0xbe, 0x4b, 0xb7, 0xdd, 0xf7, 0x9c, 0xae, 0x7b, + 0x66, 0x00, 0x90, 0xa0, 0x44, 0x39, 0xd9, 0x48, 0xc0, 0x77, 0xbf, 0xb9, 0x73, 0xef, 0xdc, 0xef, + 0xce, 0x0c, 0x08, 0x7b, 0x51, 0xb8, 0x60, 0x34, 0x8a, 0xe6, 0xe3, 0xc3, 0xe4, 0xe9, 0x60, 0x1e, + 0x85, 0x2c, 0x44, 0xe5, 0x25, 0xde, 0x2e, 0x47, 0xf3, 0x71, 0x82, 0xaa, 0xff, 0xd8, 0x06, 0x34, + 0xa2, 0xc1, 0x64, 0xe8, 0xdc, 0xf8, 0x34, 0x60, 0x98, 0xfe, 0x75, 0x41, 0x63, 0x86, 0x10, 0xc8, + 0x13, 0x1a, 0xb3, 0x96, 0xd4, 0x91, 0xba, 0x55, 0x2c, 0x9e, 0x91, 0x02, 0x05, 0xc7, 0x67, 0xad, + 0xad, 0x8e, 0xd4, 0x2d, 0x60, 0xfe, 0x88, 0x7e, 0x02, 0x25, 0xc7, 0x67, 0xc4, 0x8f, 0x1d, 0xd6, + 0xaa, 0x0a, 0x78, 0xc7, 0xf1, 0xd9, 0x59, 0xec, 0x30, 0xf4, 0x39, 0x54, 0xe7, 0x89, 0x4b, 0x32, + 0x73, 0xe2, 0x59, 0xab, 0x20, 0x1c, 0x55, 0x52, 0xec, 0xd4, 0x89, 0x67, 0xa8, 0x0b, 0xca, 0xd4, + 0x0d, 0x1c, 0x8f, 0x8c, 0x3d, 0xf6, 0x9e, 0x4c, 0xa8, 0xc7, 0x9c, 0x96, 0xdc, 0x91, 0xba, 0x45, + 0x5c, 0x17, 0x78, 0xdf, 0x63, 0xef, 0x35, 0x8e, 0xa2, 0xa7, 0xd0, 0xc8, 0x9c, 0x45, 0x49, 0x80, + 0xad, 0x62, 0x47, 0xea, 0x96, 0x71, 0x7d, 0xbe, 0x1e, 0xf6, 0x53, 0x68, 0x30, 0xd7, 0xa7, 0xe1, + 0x82, 0x91, 0x98, 0x8e, 0xc3, 0x60, 0x12, 0xb7, 0xb6, 0x13, 0x8f, 0x29, 0x3c, 0x4a, 0x50, 0xa4, + 0x42, 0x6d, 0x4a, 0x29, 0xf1, 0x5c, 0xdf, 0x65, 0x84, 0x87, 0xbf, 0x23, 0xc2, 0xaf, 0x4c, 0x29, + 0x1d, 0x70, 0x6c, 0xe4, 0x30, 0xf4, 0x73, 0xa8, 0xaf, 0x38, 0x22, 0xc7, 0x9a, 0x20, 0x55, 0x33, + 0x92, 0x48, 0xf4, 0x39, 0x28, 0xe1, 0x82, 0x5d, 0x85, 0x6e, 0x70, 0x45, 0xc6, 0x33, 0x27, 0x20, + 0xee, 0xa4, 0x55, 0xea, 0x48, 0x5d, 0xf9, 0x78, 0xeb, 0x85, 0x84, 0xeb, 0x99, 0xad, 0x3f, 0x73, + 0x02, 0x63, 0x82, 0x9e, 0x40, 0xc3, 0x73, 0x62, 0x46, 0x66, 0xe1, 0x9c, 0xcc, 0x17, 0x97, 0xd7, + 0xf4, 0xa6, 0x55, 0x17, 0x2b, 0x53, 0xe3, 0xf0, 0x69, 0x38, 0x1f, 0x0a, 0x10, 0x3d, 0x06, 0x10, + 0xab, 0x22, 0x26, 0x6f, 0x95, 0x45, 0x0e, 0x65, 0x8e, 0x88, 0x89, 0xd1, 0x97, 0x50, 0x11, 0xd5, + 0x24, 0x33, 0x37, 0x60, 0x71, 0x0b, 0x3a, 0x85, 0x6e, 0xe5, 0x48, 0x39, 0xf0, 0x02, 0x5e, 0x58, + 0xcc, 0x2d, 0xa7, 0x6e, 0xc0, 0x30, 0x44, 0xd9, 0x63, 0x8c, 0x26, 0xd0, 0xe4, 0x55, 0x24, 0xe3, + 0x45, 0xcc, 0x42, 0x9f, 0x44, 0x74, 0x1c, 0x46, 0x93, 0xb8, 0x55, 0x11, 0x43, 0x7f, 0x7d, 0xb0, + 0x14, 0xc7, 0xc1, 0x5d, 0x35, 0x1c, 0x68, 0x34, 0x66, 0x7d, 0x31, 0x0e, 0x27, 0xc3, 0xf4, 0x80, + 0x45, 0x37, 0x78, 0x77, 0x72, 0x1b, 0x47, 0xcf, 0x01, 0x39, 0x9e, 0x17, 0x7e, 0x20, 0x31, 0xf5, + 0xa6, 0x24, 0xad, 0x4e, 0xab, 0xd1, 0x91, 0xba, 0x25, 0xac, 0x08, 0xcb, 0x88, 0x7a, 0xd3, 0xd4, + 0x3d, 0xfa, 0x0d, 0xd4, 0x44, 0x4c, 0x53, 0xea, 0xb0, 0x45, 0x44, 0xe3, 0x96, 0xd2, 0x29, 0x74, + 0xeb, 0x47, 0xbb, 0x69, 0x22, 0x27, 0x09, 0x7c, 0xec, 0x32, 0x5c, 0xe5, 0xbc, 0xf4, 0x3d, 0xe6, + 0xab, 0xe3, 0x3b, 0xdf, 0x93, 0x78, 0xe6, 0xf0, 0x14, 0x76, 0x3b, 0x52, 0xb7, 0x86, 0xcb, 0xbe, + 0xf3, 0xfd, 0x48, 0x00, 0x6d, 0x0d, 0xf6, 0x36, 0x47, 0xcc, 0x25, 0xcc, 0x97, 0x9c, 0xab, 0x5a, + 0xc6, 0xfc, 0x11, 0x3d, 0x80, 0xe2, 0x7b, 0xc7, 0x5b, 0x50, 0x21, 0xeb, 0x2a, 0x4e, 0x5e, 0x7e, + 0xb7, 0xf5, 0x52, 0x52, 0x5f, 0x42, 0xd3, 0x8e, 0x9c, 0xf1, 0xf5, 0xad, 0xce, 0xb8, 0x2d, 0x6c, + 0xe9, 0x8e, 0xb0, 0xd5, 0xaf, 0xa1, 0x21, 0x6a, 0x70, 0x42, 0xe9, 0xc7, 0xfa, 0xe9, 0x21, 0xf0, + 0x6e, 0x11, 0xea, 0x4b, 0x7a, 0x6a, 0xdb, 0xf1, 0xb9, 0xf0, 0xd4, 0x09, 0x28, 0xab, 0xf1, 0xf1, + 0x3c, 0x0c, 0x62, 0xca, 0x9b, 0x85, 0x97, 0x88, 0xab, 0x8c, 0x8b, 0x52, 0xc8, 0x51, 0x12, 0xa3, + 0xea, 0x29, 0x7e, 0x42, 0xa9, 0x10, 0xe4, 0x93, 0xa4, 0x07, 0x88, 0x17, 0x8e, 0xaf, 0x79, 0x57, + 0x39, 0x37, 0xa9, 0xfb, 0x1a, 0x87, 0x07, 0xe1, 0xf8, 0x5a, 0xe3, 0xa0, 0xfa, 0x2e, 0x69, 0x7c, + 0x3b, 0x14, 0x73, 0xfd, 0xf8, 0xf4, 0x90, 0x0a, 0x45, 0xa1, 0x16, 0xe1, 0xb6, 0x72, 0x54, 0xcd, + 0xcb, 0x0e, 0x27, 0x26, 0xf5, 0x1d, 0x34, 0xd7, 0x9c, 0xa7, 0x59, 0xb4, 0xa1, 0x34, 0x8f, 0xa8, + 0xeb, 0x3b, 0x57, 0x34, 0xf5, 0xbc, 0x7c, 0x47, 0x5d, 0xd8, 0x99, 0x3a, 0xae, 0xb7, 0x88, 0x32, + 0xc7, 0xf5, 0x4c, 0x06, 0x09, 0x8a, 0x33, 0xb3, 0xfa, 0x08, 0xda, 0x98, 0xc6, 0x94, 0x9d, 0xb9, + 0x71, 0xec, 0x86, 0x41, 0x3f, 0x0c, 0x58, 0x14, 0x7a, 0x69, 0x06, 0xea, 0x63, 0xd8, 0xdf, 0x68, + 0x4d, 0x42, 0xe0, 0x83, 0xbf, 0x5d, 0xd0, 0xe8, 0x66, 0xf3, 0xe0, 0x6f, 0x61, 0x7f, 0xa3, 0x35, + 0x8d, 0xff, 0x39, 0x14, 0xe7, 0x8e, 0x1b, 0xc5, 0xad, 0x2d, 0xd1, 0x36, 0x7b, 0xb9, 0xb6, 0x19, + 0x3a, 0x6e, 0x74, 0xea, 0xc6, 0x2c, 0x8c, 0x6e, 0x70, 0x42, 0x7a, 0x25, 0x97, 0x24, 0x65, 0x4b, + 0xfd, 0xbb, 0x04, 0x95, 0x9c, 0x11, 0xed, 0x43, 0x39, 0x08, 0x27, 0x94, 0x4c, 0xa3, 0xd0, 0xcf, + 0x16, 0x81, 0x03, 0x27, 0x51, 0xe8, 0x73, 0x4d, 0x08, 0x23, 0x0b, 0x53, 0x41, 0x6e, 0xf3, 0x57, + 0x3b, 0x44, 0xbf, 0x84, 0x9d, 0x59, 0xe2, 0x40, 0x6c, 0x55, 0x95, 0xa3, 0xe6, 0xad, 0xb9, 0x35, + 0x87, 0x39, 0x38, 0xe3, 0xbc, 0x92, 0x4b, 0x05, 0x45, 0x7e, 0x25, 0x97, 0x64, 0xa5, 0xf8, 0x4a, + 0x2e, 0x15, 0x95, 0xed, 0x57, 0x72, 0x69, 0x5b, 0xd9, 0x51, 0xff, 0x23, 0x41, 0x29, 0x63, 0xf3, + 0x48, 0xf8, 0x92, 0x12, 0xae, 0x8b, 0x54, 0x4c, 0x25, 0x0e, 0xd8, 0xae, 0x4f, 0x51, 0x07, 0xaa, + 0xc2, 0xb8, 0x2e, 0x51, 0xe0, 0x58, 0x4f, 0xc8, 0x54, 0xec, 0xa1, 0x19, 0x43, 0xe8, 0x51, 0x4e, + 0xf7, 0xd0, 0x84, 0x92, 0x1d, 0x03, 0xf1, 0x62, 0x3c, 0xa6, 0x71, 0x9c, 0xcc, 0x52, 0x4c, 0x28, + 0x29, 0x26, 0x26, 0x7a, 0x02, 0x8d, 0x8c, 0x92, 0xcd, 0xb5, 0x9d, 0xe8, 0x35, 0x85, 0xd3, 0xe9, + 0xba, 0xa0, 0xe4, 0x79, 0xfe, 0x6a, 0xd7, 0xae, 0xaf, 0x88, 0x7c, 0xd2, 0x24, 0x79, 0xf5, 0x2f, + 0xf0, 0x50, 0x94, 0x72, 0x18, 0x85, 0x97, 0xce, 0xa5, 0xeb, 0xb9, 0xec, 0x26, 0x13, 0x39, 0x4f, + 0x3c, 0x0a, 0x7d, 0xc2, 0xd7, 0x36, 0x2b, 0x01, 0x07, 0xcc, 0x70, 0x42, 0x79, 0x09, 0x58, 0x98, + 0x98, 0xd2, 0x12, 0xb0, 0x50, 0x18, 0xf2, 0xa7, 0x5d, 0x61, 0xed, 0xb4, 0x53, 0xaf, 0xa1, 0x75, + 0x77, 0xae, 0x54, 0x33, 0x1d, 0xa8, 0xcc, 0x57, 0xb0, 0x98, 0x4e, 0xc2, 0x79, 0x28, 0x5f, 0xdb, + 0xad, 0x1f, 0xae, 0xad, 0xfa, 0x4f, 0x09, 0x76, 0x8f, 0x17, 0xae, 0x37, 0x59, 0x6b, 0xdc, 0x7c, + 0x74, 0xd2, 0xfa, 0x59, 0xbc, 0xe9, 0xa0, 0xdd, 0xda, 0x78, 0xd0, 0x6e, 0x3a, 0xcc, 0x0a, 0xf7, + 0x1e, 0x66, 0x3f, 0x85, 0xca, 0xea, 0x1c, 0x8b, 0x5b, 0x72, 0xa7, 0xd0, 0xad, 0x62, 0x98, 0x65, + 0x87, 0x58, 0xac, 0xbe, 0x04, 0x94, 0x0f, 0x34, 0x5d, 0x90, 0xe5, 0xfe, 0x21, 0xdd, 0xbf, 0x7f, + 0x3c, 0x82, 0xf6, 0x68, 0x71, 0x19, 0x8f, 0x23, 0xf7, 0x92, 0x9e, 0x32, 0x6f, 0xac, 0xbf, 0xa7, + 0x01, 0x8b, 0xb3, 0x2e, 0xfd, 0x9f, 0x0c, 0xe5, 0x25, 0x8a, 0x0e, 0xa0, 0xe9, 0x06, 0xe3, 0xd0, + 0xcf, 0x82, 0x0e, 0xa8, 0xc7, 0xe3, 0x4e, 0x36, 0xf9, 0xdd, 0xcc, 0xd4, 0x4f, 0x2c, 0xc6, 0x84, + 0xf3, 0xd7, 0x92, 0x4c, 0xf9, 0x5b, 0x09, 0x3f, 0x9f, 0x63, 0xc2, 0xef, 0x82, 0xb2, 0xf4, 0x3f, + 0x63, 0xde, 0x78, 0xb9, 0x28, 0xb8, 0x9e, 0xe1, 0x3c, 0x98, 0x84, 0xb9, 0xf4, 0x9c, 0x31, 0xe5, + 0x84, 0x99, 0xe1, 0x29, 0xf3, 0x73, 0xa8, 0xf2, 0x7e, 0x88, 0x99, 0xe3, 0xcf, 0x49, 0x10, 0x8b, + 0xbe, 0x90, 0x71, 0x65, 0x89, 0x99, 0x31, 0xfa, 0x0a, 0x80, 0xf2, 0xfc, 0x08, 0xbb, 0x99, 0x53, + 0xd1, 0x12, 0xf5, 0xa3, 0xcf, 0x72, 0xc2, 0x58, 0x2e, 0xc0, 0x81, 0xf8, 0x6b, 0xdf, 0xcc, 0x29, + 0x2e, 0xd3, 0xec, 0x11, 0x7d, 0x0d, 0xb5, 0x69, 0x18, 0x7d, 0x70, 0xa2, 0x09, 0x11, 0x60, 0xba, + 0x6d, 0x3c, 0xcc, 0x79, 0x38, 0x49, 0xec, 0x62, 0xf8, 0xe9, 0x27, 0xb8, 0x3a, 0xcd, 0xbd, 0xa3, + 0xd7, 0x80, 0xb2, 0xf1, 0xa2, 0xcb, 0x13, 0x27, 0x25, 0xe1, 0x64, 0xff, 0xae, 0x13, 0xbe, 0x49, + 0x67, 0x8e, 0x94, 0xe9, 0x2d, 0x0c, 0xfd, 0x1e, 0xaa, 0x31, 0x65, 0xcc, 0xa3, 0xa9, 0x9b, 0xb2, + 0x70, 0xb3, 0xb7, 0x76, 0xeb, 0xe0, 0xe6, 0xcc, 0x43, 0x25, 0x5e, 0xbd, 0xa2, 0x63, 0x68, 0x78, + 0x6e, 0x70, 0x9d, 0x0f, 0x03, 0xc4, 0xf8, 0x56, 0x6e, 0xfc, 0xc0, 0x0d, 0xae, 0xf3, 0x31, 0xd4, + 0xbc, 0x3c, 0xa0, 0xfe, 0x01, 0xca, 0xcb, 0x55, 0x42, 0x15, 0xd8, 0x39, 0x37, 0x5f, 0x9b, 0xd6, + 0x1b, 0x53, 0xf9, 0x04, 0x95, 0x40, 0x1e, 0xe9, 0xa6, 0xa6, 0x48, 0x1c, 0xc6, 0x7a, 0x5f, 0x37, + 0x2e, 0x74, 0x65, 0x8b, 0xbf, 0x9c, 0x58, 0xf8, 0x4d, 0x0f, 0x6b, 0x4a, 0xe1, 0x78, 0x07, 0x8a, + 0x62, 0x5e, 0xf5, 0x5f, 0x12, 0x94, 0x44, 0x05, 0x83, 0x69, 0x88, 0x7e, 0x01, 0x4b, 0x71, 0x89, + 0xcd, 0x8d, 0x1f, 0xb8, 0x42, 0x75, 0x35, 0xbc, 0x14, 0x8c, 0x9d, 0xe2, 0x9c, 0xbc, 0x94, 0xc6, + 0x92, 0xbc, 0x95, 0x90, 0x33, 0xc3, 0x92, 0xfc, 0x2c, 0xe7, 0x79, 0x6d, 0xcb, 0x91, 0x71, 0x23, + 0x33, 0x64, 0x3b, 0xec, 0xb3, 0x9c, 0xe3, 0xb5, 0x9d, 0x58, 0xc6, 0x8d, 0xcc, 0x90, 0x72, 0xd5, + 0xdf, 0x42, 0x35, 0x5f, 0x73, 0xf4, 0x14, 0x64, 0x37, 0x98, 0x86, 0x69, 0x23, 0x36, 0x6f, 0x89, + 0x8b, 0x27, 0x89, 0x05, 0x41, 0x45, 0xa0, 0xdc, 0xae, 0xb3, 0x5a, 0x83, 0x4a, 0xae, 0x68, 0xea, + 0xbf, 0x25, 0xa8, 0xad, 0x15, 0xe1, 0x47, 0x7b, 0x47, 0x5f, 0x41, 0xf5, 0x83, 0x1b, 0x51, 0x92, + 0x3f, 0xfe, 0xeb, 0x47, 0xed, 0xf5, 0xe3, 0x3f, 0xfb, 0xdf, 0x0f, 0x27, 0x14, 0x57, 0x38, 0x3f, + 0x05, 0xd0, 0x1f, 0xa1, 0x9e, 0x8e, 0x24, 0x13, 0xca, 0x1c, 0xd7, 0x13, 0x4b, 0x55, 0x5f, 0x93, + 0x47, 0xca, 0xd5, 0x84, 0x1d, 0xd7, 0xa6, 0xf9, 0x57, 0xf4, 0xc5, 0xca, 0x41, 0xcc, 0x22, 0x37, + 0xb8, 0x12, 0xeb, 0x57, 0x5e, 0xd2, 0x46, 0x02, 0x7c, 0xf6, 0x37, 0x19, 0x6a, 0x6b, 0x7e, 0xd6, + 0x85, 0x54, 0x83, 0xb2, 0x69, 0x11, 0x4d, 0xb7, 0x7b, 0xc6, 0x40, 0x91, 0x90, 0x02, 0x55, 0xcb, + 0x34, 0x2c, 0x93, 0x68, 0x7a, 0xdf, 0xd2, 0xb8, 0xa4, 0x3e, 0x85, 0xdd, 0x81, 0x61, 0xbe, 0x26, + 0xa6, 0x65, 0x13, 0x7d, 0x60, 0x7c, 0x63, 0x1c, 0x0f, 0x74, 0xa5, 0x80, 0x1e, 0x80, 0x62, 0x99, + 0xa4, 0x7f, 0xda, 0x33, 0x4c, 0x62, 0x1b, 0x67, 0xba, 0x75, 0x6e, 0x2b, 0x32, 0x47, 0x4f, 0xed, + 0x41, 0x9f, 0xe8, 0x6f, 0xfb, 0xba, 0xae, 0x8d, 0xc8, 0x59, 0xef, 0xad, 0x52, 0x44, 0x2d, 0x78, + 0x60, 0x98, 0xa3, 0xf3, 0x93, 0x13, 0xa3, 0x6f, 0xe8, 0xa6, 0x4d, 0x8e, 0x7b, 0x83, 0x9e, 0xd9, + 0xd7, 0x95, 0x6d, 0xb4, 0x07, 0xc8, 0x30, 0xfb, 0xd6, 0xd9, 0x70, 0xa0, 0xdb, 0x3a, 0xc9, 0xa4, + 0xbb, 0x83, 0x9a, 0xd0, 0x10, 0x7e, 0x7a, 0x9a, 0x46, 0x4e, 0x7a, 0xc6, 0x40, 0xd7, 0x94, 0x12, + 0x8f, 0x24, 0x65, 0x8c, 0x88, 0x66, 0x8c, 0x7a, 0xc7, 0x1c, 0x2e, 0xf3, 0x39, 0x0d, 0xf3, 0xc2, + 0x32, 0xfa, 0x3a, 0xe9, 0x73, 0xb7, 0x1c, 0x05, 0x4e, 0xce, 0xd0, 0x73, 0x53, 0xd3, 0xf1, 0xb0, + 0x67, 0x68, 0x4a, 0x05, 0xed, 0xc3, 0xc3, 0x0c, 0xd6, 0xdf, 0x0e, 0x0d, 0xfc, 0x1d, 0xb1, 0x2d, + 0x8b, 0x8c, 0x2c, 0xcb, 0x54, 0xaa, 0x79, 0x4f, 0x3c, 0x5b, 0x6b, 0xa8, 0x9b, 0x4a, 0x0d, 0x3d, + 0x84, 0xe6, 0xd9, 0x70, 0x48, 0x32, 0x4b, 0x96, 0x6c, 0x9d, 0xd3, 0x7b, 0x9a, 0x86, 0xf5, 0xd1, + 0x88, 0x9c, 0x19, 0xa3, 0xb3, 0x9e, 0xdd, 0x3f, 0x55, 0x1a, 0x3c, 0xa5, 0x91, 0x6e, 0x13, 0xdb, + 0xb2, 0x7b, 0x83, 0x15, 0xae, 0xf0, 0x80, 0x56, 0x38, 0x9f, 0x74, 0x60, 0xbd, 0x51, 0x76, 0xf9, + 0x82, 0x73, 0xd8, 0xba, 0x48, 0x43, 0x44, 0x3c, 0xf7, 0xb4, 0x3c, 0xd9, 0x9c, 0x4a, 0x93, 0x83, + 0x86, 0x79, 0xd1, 0x1b, 0x18, 0x1a, 0x79, 0xad, 0x7f, 0x27, 0x5a, 0xff, 0x01, 0x07, 0x93, 0xc8, + 0xc8, 0x10, 0x5b, 0xdf, 0xf0, 0x40, 0x94, 0x4f, 0x11, 0x82, 0x7a, 0xdf, 0xc0, 0xfd, 0xf3, 0x41, + 0x0f, 0x13, 0x6c, 0x9d, 0xdb, 0xba, 0xb2, 0x77, 0xf4, 0xdf, 0x22, 0x6c, 0x8b, 0x83, 0x2a, 0x42, + 0x7f, 0x82, 0x5a, 0xee, 0x53, 0xe9, 0xe2, 0x08, 0x3d, 0xfe, 0xe8, 0x47, 0x54, 0x3b, 0xbb, 0xce, + 0xa6, 0xf0, 0x0b, 0x09, 0x1d, 0x43, 0x3d, 0xff, 0x85, 0x71, 0x71, 0x84, 0xf2, 0xfb, 0xfb, 0x86, + 0x8f, 0x8f, 0x0d, 0x3e, 0x5e, 0x83, 0xa2, 0xc7, 0xcc, 0xf5, 0x1d, 0x46, 0xb3, 0x6f, 0x06, 0xd4, + 0xce, 0x79, 0xb9, 0xf5, 0x21, 0xd2, 0xde, 0xdf, 0x68, 0x4b, 0x4f, 0xe6, 0x01, 0x6f, 0xe9, 0xe5, + 0xad, 0xfd, 0x4e, 0x42, 0xeb, 0x9f, 0x0a, 0xed, 0xcf, 0xee, 0x33, 0xa7, 0xde, 0x26, 0xd0, 0xdc, + 0x70, 0x11, 0x47, 0x5f, 0xe4, 0x23, 0xb8, 0xf7, 0x1a, 0xdf, 0x7e, 0xf2, 0x43, 0xb4, 0xd5, 0x2c, + 0x1b, 0x6e, 0xec, 0x6b, 0xb3, 0xdc, 0x7f, 0xdf, 0x5f, 0x9b, 0xe5, 0x63, 0x17, 0xff, 0x77, 0xa0, + 0xdc, 0xbe, 0xe0, 0x21, 0xf5, 0xf6, 0xd8, 0xbb, 0x37, 0xcd, 0xf6, 0xcf, 0x3e, 0xca, 0x49, 0x9d, + 0x1b, 0x00, 0xab, 0x6b, 0x12, 0x7a, 0x94, 0x1b, 0x72, 0xe7, 0x9a, 0xd7, 0x7e, 0x7c, 0x8f, 0x35, + 0x75, 0x65, 0x43, 0x73, 0xc3, 0xbd, 0x69, 0x6d, 0x35, 0xee, 0xbf, 0x57, 0xb5, 0x1f, 0x6c, 0xba, + 0x5e, 0xbc, 0x90, 0x8e, 0xbf, 0xfc, 0xf3, 0xe1, 0x95, 0xcb, 0x66, 0x8b, 0xcb, 0x83, 0x71, 0xe8, + 0x1f, 0x7a, 0xee, 0xd5, 0x8c, 0x05, 0x6e, 0x70, 0x15, 0x50, 0xf6, 0x21, 0x8c, 0xae, 0x0f, 0xbd, + 0x60, 0x72, 0x28, 0x74, 0x79, 0xb8, 0x1c, 0x7e, 0xb9, 0x2d, 0x7e, 0x5e, 0xfa, 0xd5, 0xff, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x40, 0x4b, 0x61, 0x91, 0x8e, 0x12, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1750,14 +1750,14 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type RouterClient interface { //* - //SendPayment attempts to route a payment described by the passed + //SendPaymentV2 attempts to route a payment described by the passed //PaymentRequest to the final destination. The call returns a stream of //payment updates. - SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) + SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error) //* - //TrackPayment returns an update stream for the payment identified by the + //TrackPaymentV2 returns an update stream for the payment identified by the //payment hash. - TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) + TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error) //* //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. @@ -1798,12 +1798,12 @@ func NewRouterClient(cc *grpc.ClientConn) RouterClient { return &routerClient{cc} } -func (c *routerClient) SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) { - stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[0], "/routerrpc.Router/SendPayment", opts...) +func (c *routerClient) SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error) { + stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[0], "/routerrpc.Router/SendPaymentV2", opts...) if err != nil { return nil, err } - x := &routerSendPaymentClient{stream} + x := &routerSendPaymentV2Client{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1813,16 +1813,16 @@ func (c *routerClient) SendPayment(ctx context.Context, in *SendPaymentRequest, return x, nil } -type Router_SendPaymentClient interface { +type Router_SendPaymentV2Client interface { Recv() (*lnrpc.Payment, error) grpc.ClientStream } -type routerSendPaymentClient struct { +type routerSendPaymentV2Client struct { grpc.ClientStream } -func (x *routerSendPaymentClient) Recv() (*lnrpc.Payment, error) { +func (x *routerSendPaymentV2Client) Recv() (*lnrpc.Payment, error) { m := new(lnrpc.Payment) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err @@ -1830,12 +1830,12 @@ func (x *routerSendPaymentClient) Recv() (*lnrpc.Payment, error) { return m, nil } -func (c *routerClient) TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) { - stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[1], "/routerrpc.Router/TrackPayment", opts...) +func (c *routerClient) TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error) { + stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[1], "/routerrpc.Router/TrackPaymentV2", opts...) if err != nil { return nil, err } - x := &routerTrackPaymentClient{stream} + x := &routerTrackPaymentV2Client{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1845,16 +1845,16 @@ func (c *routerClient) TrackPayment(ctx context.Context, in *TrackPaymentRequest return x, nil } -type Router_TrackPaymentClient interface { +type Router_TrackPaymentV2Client interface { Recv() (*lnrpc.Payment, error) grpc.ClientStream } -type routerTrackPaymentClient struct { +type routerTrackPaymentV2Client struct { grpc.ClientStream } -func (x *routerTrackPaymentClient) Recv() (*lnrpc.Payment, error) { +func (x *routerTrackPaymentV2Client) Recv() (*lnrpc.Payment, error) { m := new(lnrpc.Payment) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err @@ -1951,14 +1951,14 @@ func (x *routerSubscribeHtlcEventsClient) Recv() (*HtlcEvent, error) { // RouterServer is the server API for Router service. type RouterServer interface { //* - //SendPayment attempts to route a payment described by the passed + //SendPaymentV2 attempts to route a payment described by the passed //PaymentRequest to the final destination. The call returns a stream of //payment updates. - SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error + SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error //* - //TrackPayment returns an update stream for the payment identified by the + //TrackPaymentV2 returns an update stream for the payment identified by the //payment hash. - TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error + TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error //* //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. @@ -1995,45 +1995,45 @@ func RegisterRouterServer(s *grpc.Server, srv RouterServer) { s.RegisterService(&_Router_serviceDesc, srv) } -func _Router_SendPayment_Handler(srv interface{}, stream grpc.ServerStream) error { +func _Router_SendPaymentV2_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(SendPaymentRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(RouterServer).SendPayment(m, &routerSendPaymentServer{stream}) + return srv.(RouterServer).SendPaymentV2(m, &routerSendPaymentV2Server{stream}) } -type Router_SendPaymentServer interface { +type Router_SendPaymentV2Server interface { Send(*lnrpc.Payment) error grpc.ServerStream } -type routerSendPaymentServer struct { +type routerSendPaymentV2Server struct { grpc.ServerStream } -func (x *routerSendPaymentServer) Send(m *lnrpc.Payment) error { +func (x *routerSendPaymentV2Server) Send(m *lnrpc.Payment) error { return x.ServerStream.SendMsg(m) } -func _Router_TrackPayment_Handler(srv interface{}, stream grpc.ServerStream) error { +func _Router_TrackPaymentV2_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(TrackPaymentRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(RouterServer).TrackPayment(m, &routerTrackPaymentServer{stream}) + return srv.(RouterServer).TrackPaymentV2(m, &routerTrackPaymentV2Server{stream}) } -type Router_TrackPaymentServer interface { +type Router_TrackPaymentV2Server interface { Send(*lnrpc.Payment) error grpc.ServerStream } -type routerTrackPaymentServer struct { +type routerTrackPaymentV2Server struct { grpc.ServerStream } -func (x *routerTrackPaymentServer) Send(m *lnrpc.Payment) error { +func (x *routerTrackPaymentV2Server) Send(m *lnrpc.Payment) error { return x.ServerStream.SendMsg(m) } @@ -2197,13 +2197,13 @@ var _Router_serviceDesc = grpc.ServiceDesc{ }, Streams: []grpc.StreamDesc{ { - StreamName: "SendPayment", - Handler: _Router_SendPayment_Handler, + StreamName: "SendPaymentV2", + Handler: _Router_SendPaymentV2_Handler, ServerStreams: true, }, { - StreamName: "TrackPayment", - Handler: _Router_TrackPayment_Handler, + StreamName: "TrackPaymentV2", + Handler: _Router_TrackPaymentV2_Handler, ServerStreams: true, }, { diff --git a/lnrpc/routerrpc/router.proto b/lnrpc/routerrpc/router.proto index 5bf947ad..62980527 100644 --- a/lnrpc/routerrpc/router.proto +++ b/lnrpc/routerrpc/router.proto @@ -413,17 +413,17 @@ enum FailureDetail { service Router { /** - SendPayment attempts to route a payment described by the passed + SendPaymentV2 attempts to route a payment described by the passed PaymentRequest to the final destination. The call returns a stream of payment updates. */ - rpc SendPayment (SendPaymentRequest) returns (stream lnrpc.Payment); + rpc SendPaymentV2 (SendPaymentRequest) returns (stream lnrpc.Payment); /** - TrackPayment returns an update stream for the payment identified by the + TrackPaymentV2 returns an update stream for the payment identified by the payment hash. */ - rpc TrackPayment (TrackPaymentRequest) returns (stream lnrpc.Payment); + rpc TrackPaymentV2 (TrackPaymentRequest) returns (stream lnrpc.Payment); /** EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go index d30ad868..b3801745 100644 --- a/lnrpc/routerrpc/router_server.go +++ b/lnrpc/routerrpc/router_server.go @@ -48,7 +48,7 @@ var ( // macPermissions maps RPC calls to the permissions they require. macPermissions = map[string][]bakery.Op{ - "/routerrpc.Router/SendPayment": {{ + "/routerrpc.Router/SendPaymentV2": {{ Entity: "offchain", Action: "write", }}, @@ -56,7 +56,7 @@ var ( Entity: "offchain", Action: "write", }}, - "/routerrpc.Router/TrackPayment": {{ + "/routerrpc.Router/TrackPaymentV2": {{ Entity: "offchain", Action: "read", }}, @@ -214,13 +214,13 @@ func (s *Server) RegisterWithRootServer(grpcServer *grpc.Server) error { return nil } -// SendPayment attempts to route a payment described by the passed +// SendPaymentV2 attempts to route a payment described by the passed // PaymentRequest to the final destination. If we are unable to route the // payment, or cannot find a route that satisfies the constraints in the // PaymentRequest, then an error will be returned. Otherwise, the payment // pre-image, along with the final route will be returned. -func (s *Server) SendPayment(req *SendPaymentRequest, - stream Router_SendPaymentServer) error { +func (s *Server) SendPaymentV2(req *SendPaymentRequest, + stream Router_SendPaymentV2Server) error { payment, err := s.cfg.RouterBackend.extractIntentFromSendRequest(req) if err != nil { @@ -419,10 +419,10 @@ func (s *Server) QueryProbability(ctx context.Context, }, nil } -// TrackPayment returns a stream of payment state updates. The stream is +// TrackPaymentV2 returns a stream of payment state updates. The stream is // closed when the payment completes. -func (s *Server) TrackPayment(request *TrackPaymentRequest, - stream Router_TrackPaymentServer) error { +func (s *Server) TrackPaymentV2(request *TrackPaymentRequest, + stream Router_TrackPaymentV2Server) error { paymentHash, err := lntypes.MakeHash(request.PaymentHash) if err != nil { @@ -436,7 +436,7 @@ func (s *Server) TrackPayment(request *TrackPaymentRequest, // trackPayment writes payment status updates to the provided stream. func (s *Server) trackPayment(paymentHash lntypes.Hash, - stream Router_TrackPaymentServer) error { + stream Router_TrackPaymentV2Server) error { router := s.cfg.RouterBackend diff --git a/lntest/itest/lnd_test.go b/lntest/itest/lnd_test.go index 94cc2744..b5e1eade 100644 --- a/lntest/itest/lnd_test.go +++ b/lntest/itest/lnd_test.go @@ -14248,12 +14248,12 @@ func testHoldInvoicePersistence(net *lntest.NetworkHarness, t *harnessTest) { } // Let Alice initiate payments for all the created invoices. - var paymentStreams []routerrpc.Router_SendPaymentClient + var paymentStreams []routerrpc.Router_SendPaymentV2Client for _, payReq := range payReqs { ctx, cancel := context.WithCancel(ctxb) defer cancel() - payStream, err := net.Alice.RouterClient.SendPayment( + payStream, err := net.Alice.RouterClient.SendPaymentV2( ctx, &routerrpc.SendPaymentRequest{ PaymentRequest: payReq, TimeoutSeconds: 60, @@ -14365,7 +14365,7 @@ func testHoldInvoicePersistence(net *lntest.NetworkHarness, t *harnessTest) { ctx, cancel := context.WithCancel(ctxb) defer cancel() - payStream, err := net.Alice.RouterClient.TrackPayment( + payStream, err := net.Alice.RouterClient.TrackPaymentV2( ctx, &routerrpc.TrackPaymentRequest{ PaymentHash: hash[:], }, @@ -14724,7 +14724,7 @@ func sendAndAssertSuccess(t *harnessTest, node *lntest.HarnessNode, ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() - stream, err := node.RouterClient.SendPayment(ctx, req) + stream, err := node.RouterClient.SendPaymentV2(ctx, req) if err != nil { t.Fatalf("unable to send payment: %v", err) } @@ -14742,7 +14742,7 @@ func sendAndAssertSuccess(t *harnessTest, node *lntest.HarnessNode, } // getPaymentResult reads a final result from the stream and returns it. -func getPaymentResult(stream routerrpc.Router_SendPaymentClient) ( +func getPaymentResult(stream routerrpc.Router_SendPaymentV2Client) ( *lnrpc.Payment, error) { for { From ad5f1404cb5ae177ed5b689660e39020cff1429c Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 13 Apr 2020 10:20:22 +0200 Subject: [PATCH 2/3] lnrpc: remove experimental tag from payment htlcs --- lnrpc/rpc.pb.go | 2 +- lnrpc/rpc.proto | 2 +- lnrpc/rpc.swagger.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lnrpc/rpc.pb.go b/lnrpc/rpc.pb.go index 10f9a7cd..2c55f6b0 100644 --- a/lnrpc/rpc.pb.go +++ b/lnrpc/rpc.pb.go @@ -9556,7 +9556,7 @@ type Payment struct { FeeMsat int64 `protobuf:"varint,12,opt,name=fee_msat,json=feeMsat,proto3" json:"fee_msat,omitempty"` /// The time in UNIX nanoseconds at which the payment was created. CreationTimeNs int64 `protobuf:"varint,13,opt,name=creation_time_ns,json=creationTimeNs,proto3" json:"creation_time_ns,omitempty"` - /// The HTLCs made in attempt to settle the payment [EXPERIMENTAL]. + /// The HTLCs made in attempt to settle the payment. Htlcs []*HTLCAttempt `protobuf:"bytes,14,rep,name=htlcs,proto3" json:"htlcs,omitempty"` //* //The creation index of this payment. Each payment can be uniquely identified diff --git a/lnrpc/rpc.proto b/lnrpc/rpc.proto index 1317b964..7f58e59e 100644 --- a/lnrpc/rpc.proto +++ b/lnrpc/rpc.proto @@ -3136,7 +3136,7 @@ message Payment { /// The time in UNIX nanoseconds at which the payment was created. int64 creation_time_ns = 13; - /// The HTLCs made in attempt to settle the payment [EXPERIMENTAL]. + /// The HTLCs made in attempt to settle the payment. repeated HTLCAttempt htlcs = 14; /** diff --git a/lnrpc/rpc.swagger.json b/lnrpc/rpc.swagger.json index 90859472..189fb6f0 100644 --- a/lnrpc/rpc.swagger.json +++ b/lnrpc/rpc.swagger.json @@ -3987,7 +3987,7 @@ "items": { "$ref": "#/definitions/lnrpcHTLCAttempt" }, - "description": "/ The HTLCs made in attempt to settle the payment [EXPERIMENTAL]." + "description": "/ The HTLCs made in attempt to settle the payment." }, "payment_index": { "type": "string", From 7fe100bcfb04834fc71d61e49cbe013837892da7 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 13 Apr 2020 12:16:55 +0200 Subject: [PATCH 3/3] routerrpc: bring back legacy track and send rpcs To soften the transition for routerrpc users to the V2 messages. --- lnrpc/routerrpc/router.pb.go | 523 +++++++++++++++----- lnrpc/routerrpc/router.proto | 73 +++ lnrpc/routerrpc/router_server.go | 8 + lnrpc/routerrpc/router_server_deprecated.go | 95 ++++ 4 files changed, 570 insertions(+), 129 deletions(-) create mode 100644 lnrpc/routerrpc/router_server_deprecated.go diff --git a/lnrpc/routerrpc/router.pb.go b/lnrpc/routerrpc/router.pb.go index 7b0b18d0..4f6dd0fc 100644 --- a/lnrpc/routerrpc/router.pb.go +++ b/lnrpc/routerrpc/router.pb.go @@ -111,6 +111,62 @@ func (FailureDetail) EnumDescriptor() ([]byte, []int) { return fileDescriptor_7a0613f69d37b0a5, []int{0} } +type PaymentState int32 + +const ( + //* + //Payment is still in flight. + PaymentState_IN_FLIGHT PaymentState = 0 + //* + //Payment completed successfully. + PaymentState_SUCCEEDED PaymentState = 1 + //* + //There are more routes to try, but the payment timeout was exceeded. + PaymentState_FAILED_TIMEOUT PaymentState = 2 + //* + //All possible routes were tried and failed permanently. Or were no + //routes to the destination at all. + PaymentState_FAILED_NO_ROUTE PaymentState = 3 + //* + //A non-recoverable error has occured. + PaymentState_FAILED_ERROR PaymentState = 4 + //* + //Payment details incorrect (unknown hash, invalid amt or + //invalid final cltv delta) + PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5 + //* + //Insufficient local balance. + PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6 +) + +var PaymentState_name = map[int32]string{ + 0: "IN_FLIGHT", + 1: "SUCCEEDED", + 2: "FAILED_TIMEOUT", + 3: "FAILED_NO_ROUTE", + 4: "FAILED_ERROR", + 5: "FAILED_INCORRECT_PAYMENT_DETAILS", + 6: "FAILED_INSUFFICIENT_BALANCE", +} + +var PaymentState_value = map[string]int32{ + "IN_FLIGHT": 0, + "SUCCEEDED": 1, + "FAILED_TIMEOUT": 2, + "FAILED_NO_ROUTE": 3, + "FAILED_ERROR": 4, + "FAILED_INCORRECT_PAYMENT_DETAILS": 5, + "FAILED_INSUFFICIENT_BALANCE": 6, +} + +func (x PaymentState) String() string { + return proto.EnumName(PaymentState_name, int32(x)) +} + +func (PaymentState) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7a0613f69d37b0a5, []int{1} +} + type HtlcEvent_EventType int32 const ( @@ -1574,8 +1630,69 @@ func (m *LinkFailEvent) GetFailureString() string { return "" } +type PaymentStatus struct { + /// Current state the payment is in. + State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"` + //* + //The pre-image of the payment when state is SUCCEEDED. + Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"` + //* + //The HTLCs made in attempt to settle the payment [EXPERIMENTAL]. + Htlcs []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PaymentStatus) Reset() { *m = PaymentStatus{} } +func (m *PaymentStatus) String() string { return proto.CompactTextString(m) } +func (*PaymentStatus) ProtoMessage() {} +func (*PaymentStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_7a0613f69d37b0a5, []int{23} +} + +func (m *PaymentStatus) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PaymentStatus.Unmarshal(m, b) +} +func (m *PaymentStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PaymentStatus.Marshal(b, m, deterministic) +} +func (m *PaymentStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_PaymentStatus.Merge(m, src) +} +func (m *PaymentStatus) XXX_Size() int { + return xxx_messageInfo_PaymentStatus.Size(m) +} +func (m *PaymentStatus) XXX_DiscardUnknown() { + xxx_messageInfo_PaymentStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_PaymentStatus proto.InternalMessageInfo + +func (m *PaymentStatus) GetState() PaymentState { + if m != nil { + return m.State + } + return PaymentState_IN_FLIGHT +} + +func (m *PaymentStatus) GetPreimage() []byte { + if m != nil { + return m.Preimage + } + return nil +} + +func (m *PaymentStatus) GetHtlcs() []*lnrpc.HTLCAttempt { + if m != nil { + return m.Htlcs + } + return nil +} + func init() { proto.RegisterEnum("routerrpc.FailureDetail", FailureDetail_name, FailureDetail_value) + proto.RegisterEnum("routerrpc.PaymentState", PaymentState_name, PaymentState_value) proto.RegisterEnum("routerrpc.HtlcEvent_EventType", HtlcEvent_EventType_name, HtlcEvent_EventType_value) proto.RegisterType((*SendPaymentRequest)(nil), "routerrpc.SendPaymentRequest") proto.RegisterMapType((map[uint64][]byte)(nil), "routerrpc.SendPaymentRequest.DestCustomRecordsEntry") @@ -1601,140 +1718,152 @@ func init() { proto.RegisterType((*ForwardFailEvent)(nil), "routerrpc.ForwardFailEvent") proto.RegisterType((*SettleEvent)(nil), "routerrpc.SettleEvent") proto.RegisterType((*LinkFailEvent)(nil), "routerrpc.LinkFailEvent") + proto.RegisterType((*PaymentStatus)(nil), "routerrpc.PaymentStatus") } func init() { proto.RegisterFile("routerrpc/router.proto", fileDescriptor_7a0613f69d37b0a5) } var fileDescriptor_7a0613f69d37b0a5 = []byte{ - // 2044 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcd, 0x76, 0xdb, 0xc6, - 0x15, 0x0e, 0x44, 0x50, 0x22, 0x2f, 0xff, 0xa0, 0xa1, 0x23, 0xb3, 0x94, 0x9d, 0x32, 0x68, 0x63, - 0xf3, 0xb8, 0xae, 0xe4, 0xa8, 0x3d, 0xad, 0x4f, 0xdb, 0xa4, 0xa5, 0x08, 0x28, 0x82, 0x4d, 0x01, - 0xcc, 0x10, 0x92, 0x9d, 0x7a, 0x31, 0x07, 0x22, 0x87, 0x22, 0x2a, 0xfc, 0xb0, 0xc0, 0xd0, 0x8e, - 0x96, 0xdd, 0xf6, 0x05, 0xfa, 0x08, 0x7d, 0x89, 0xbe, 0x4b, 0xb7, 0xdd, 0xf7, 0x9c, 0xae, 0x7b, - 0x66, 0x00, 0x90, 0xa0, 0x44, 0x39, 0xd9, 0x48, 0xc0, 0x77, 0xbf, 0xb9, 0x73, 0xef, 0xdc, 0xef, - 0xce, 0x0c, 0x08, 0x7b, 0x51, 0xb8, 0x60, 0x34, 0x8a, 0xe6, 0xe3, 0xc3, 0xe4, 0xe9, 0x60, 0x1e, - 0x85, 0x2c, 0x44, 0xe5, 0x25, 0xde, 0x2e, 0x47, 0xf3, 0x71, 0x82, 0xaa, 0xff, 0xd8, 0x06, 0x34, - 0xa2, 0xc1, 0x64, 0xe8, 0xdc, 0xf8, 0x34, 0x60, 0x98, 0xfe, 0x75, 0x41, 0x63, 0x86, 0x10, 0xc8, - 0x13, 0x1a, 0xb3, 0x96, 0xd4, 0x91, 0xba, 0x55, 0x2c, 0x9e, 0x91, 0x02, 0x05, 0xc7, 0x67, 0xad, - 0xad, 0x8e, 0xd4, 0x2d, 0x60, 0xfe, 0x88, 0x7e, 0x02, 0x25, 0xc7, 0x67, 0xc4, 0x8f, 0x1d, 0xd6, - 0xaa, 0x0a, 0x78, 0xc7, 0xf1, 0xd9, 0x59, 0xec, 0x30, 0xf4, 0x39, 0x54, 0xe7, 0x89, 0x4b, 0x32, - 0x73, 0xe2, 0x59, 0xab, 0x20, 0x1c, 0x55, 0x52, 0xec, 0xd4, 0x89, 0x67, 0xa8, 0x0b, 0xca, 0xd4, - 0x0d, 0x1c, 0x8f, 0x8c, 0x3d, 0xf6, 0x9e, 0x4c, 0xa8, 0xc7, 0x9c, 0x96, 0xdc, 0x91, 0xba, 0x45, - 0x5c, 0x17, 0x78, 0xdf, 0x63, 0xef, 0x35, 0x8e, 0xa2, 0xa7, 0xd0, 0xc8, 0x9c, 0x45, 0x49, 0x80, - 0xad, 0x62, 0x47, 0xea, 0x96, 0x71, 0x7d, 0xbe, 0x1e, 0xf6, 0x53, 0x68, 0x30, 0xd7, 0xa7, 0xe1, - 0x82, 0x91, 0x98, 0x8e, 0xc3, 0x60, 0x12, 0xb7, 0xb6, 0x13, 0x8f, 0x29, 0x3c, 0x4a, 0x50, 0xa4, - 0x42, 0x6d, 0x4a, 0x29, 0xf1, 0x5c, 0xdf, 0x65, 0x84, 0x87, 0xbf, 0x23, 0xc2, 0xaf, 0x4c, 0x29, - 0x1d, 0x70, 0x6c, 0xe4, 0x30, 0xf4, 0x73, 0xa8, 0xaf, 0x38, 0x22, 0xc7, 0x9a, 0x20, 0x55, 0x33, - 0x92, 0x48, 0xf4, 0x39, 0x28, 0xe1, 0x82, 0x5d, 0x85, 0x6e, 0x70, 0x45, 0xc6, 0x33, 0x27, 0x20, - 0xee, 0xa4, 0x55, 0xea, 0x48, 0x5d, 0xf9, 0x78, 0xeb, 0x85, 0x84, 0xeb, 0x99, 0xad, 0x3f, 0x73, - 0x02, 0x63, 0x82, 0x9e, 0x40, 0xc3, 0x73, 0x62, 0x46, 0x66, 0xe1, 0x9c, 0xcc, 0x17, 0x97, 0xd7, - 0xf4, 0xa6, 0x55, 0x17, 0x2b, 0x53, 0xe3, 0xf0, 0x69, 0x38, 0x1f, 0x0a, 0x10, 0x3d, 0x06, 0x10, - 0xab, 0x22, 0x26, 0x6f, 0x95, 0x45, 0x0e, 0x65, 0x8e, 0x88, 0x89, 0xd1, 0x97, 0x50, 0x11, 0xd5, - 0x24, 0x33, 0x37, 0x60, 0x71, 0x0b, 0x3a, 0x85, 0x6e, 0xe5, 0x48, 0x39, 0xf0, 0x02, 0x5e, 0x58, - 0xcc, 0x2d, 0xa7, 0x6e, 0xc0, 0x30, 0x44, 0xd9, 0x63, 0x8c, 0x26, 0xd0, 0xe4, 0x55, 0x24, 0xe3, - 0x45, 0xcc, 0x42, 0x9f, 0x44, 0x74, 0x1c, 0x46, 0x93, 0xb8, 0x55, 0x11, 0x43, 0x7f, 0x7d, 0xb0, - 0x14, 0xc7, 0xc1, 0x5d, 0x35, 0x1c, 0x68, 0x34, 0x66, 0x7d, 0x31, 0x0e, 0x27, 0xc3, 0xf4, 0x80, - 0x45, 0x37, 0x78, 0x77, 0x72, 0x1b, 0x47, 0xcf, 0x01, 0x39, 0x9e, 0x17, 0x7e, 0x20, 0x31, 0xf5, - 0xa6, 0x24, 0xad, 0x4e, 0xab, 0xd1, 0x91, 0xba, 0x25, 0xac, 0x08, 0xcb, 0x88, 0x7a, 0xd3, 0xd4, - 0x3d, 0xfa, 0x0d, 0xd4, 0x44, 0x4c, 0x53, 0xea, 0xb0, 0x45, 0x44, 0xe3, 0x96, 0xd2, 0x29, 0x74, - 0xeb, 0x47, 0xbb, 0x69, 0x22, 0x27, 0x09, 0x7c, 0xec, 0x32, 0x5c, 0xe5, 0xbc, 0xf4, 0x3d, 0xe6, - 0xab, 0xe3, 0x3b, 0xdf, 0x93, 0x78, 0xe6, 0xf0, 0x14, 0x76, 0x3b, 0x52, 0xb7, 0x86, 0xcb, 0xbe, - 0xf3, 0xfd, 0x48, 0x00, 0x6d, 0x0d, 0xf6, 0x36, 0x47, 0xcc, 0x25, 0xcc, 0x97, 0x9c, 0xab, 0x5a, - 0xc6, 0xfc, 0x11, 0x3d, 0x80, 0xe2, 0x7b, 0xc7, 0x5b, 0x50, 0x21, 0xeb, 0x2a, 0x4e, 0x5e, 0x7e, - 0xb7, 0xf5, 0x52, 0x52, 0x5f, 0x42, 0xd3, 0x8e, 0x9c, 0xf1, 0xf5, 0xad, 0xce, 0xb8, 0x2d, 0x6c, - 0xe9, 0x8e, 0xb0, 0xd5, 0xaf, 0xa1, 0x21, 0x6a, 0x70, 0x42, 0xe9, 0xc7, 0xfa, 0xe9, 0x21, 0xf0, - 0x6e, 0x11, 0xea, 0x4b, 0x7a, 0x6a, 0xdb, 0xf1, 0xb9, 0xf0, 0xd4, 0x09, 0x28, 0xab, 0xf1, 0xf1, - 0x3c, 0x0c, 0x62, 0xca, 0x9b, 0x85, 0x97, 0x88, 0xab, 0x8c, 0x8b, 0x52, 0xc8, 0x51, 0x12, 0xa3, - 0xea, 0x29, 0x7e, 0x42, 0xa9, 0x10, 0xe4, 0x93, 0xa4, 0x07, 0x88, 0x17, 0x8e, 0xaf, 0x79, 0x57, - 0x39, 0x37, 0xa9, 0xfb, 0x1a, 0x87, 0x07, 0xe1, 0xf8, 0x5a, 0xe3, 0xa0, 0xfa, 0x2e, 0x69, 0x7c, - 0x3b, 0x14, 0x73, 0xfd, 0xf8, 0xf4, 0x90, 0x0a, 0x45, 0xa1, 0x16, 0xe1, 0xb6, 0x72, 0x54, 0xcd, - 0xcb, 0x0e, 0x27, 0x26, 0xf5, 0x1d, 0x34, 0xd7, 0x9c, 0xa7, 0x59, 0xb4, 0xa1, 0x34, 0x8f, 0xa8, - 0xeb, 0x3b, 0x57, 0x34, 0xf5, 0xbc, 0x7c, 0x47, 0x5d, 0xd8, 0x99, 0x3a, 0xae, 0xb7, 0x88, 0x32, - 0xc7, 0xf5, 0x4c, 0x06, 0x09, 0x8a, 0x33, 0xb3, 0xfa, 0x08, 0xda, 0x98, 0xc6, 0x94, 0x9d, 0xb9, - 0x71, 0xec, 0x86, 0x41, 0x3f, 0x0c, 0x58, 0x14, 0x7a, 0x69, 0x06, 0xea, 0x63, 0xd8, 0xdf, 0x68, - 0x4d, 0x42, 0xe0, 0x83, 0xbf, 0x5d, 0xd0, 0xe8, 0x66, 0xf3, 0xe0, 0x6f, 0x61, 0x7f, 0xa3, 0x35, - 0x8d, 0xff, 0x39, 0x14, 0xe7, 0x8e, 0x1b, 0xc5, 0xad, 0x2d, 0xd1, 0x36, 0x7b, 0xb9, 0xb6, 0x19, - 0x3a, 0x6e, 0x74, 0xea, 0xc6, 0x2c, 0x8c, 0x6e, 0x70, 0x42, 0x7a, 0x25, 0x97, 0x24, 0x65, 0x4b, - 0xfd, 0xbb, 0x04, 0x95, 0x9c, 0x11, 0xed, 0x43, 0x39, 0x08, 0x27, 0x94, 0x4c, 0xa3, 0xd0, 0xcf, - 0x16, 0x81, 0x03, 0x27, 0x51, 0xe8, 0x73, 0x4d, 0x08, 0x23, 0x0b, 0x53, 0x41, 0x6e, 0xf3, 0x57, - 0x3b, 0x44, 0xbf, 0x84, 0x9d, 0x59, 0xe2, 0x40, 0x6c, 0x55, 0x95, 0xa3, 0xe6, 0xad, 0xb9, 0x35, - 0x87, 0x39, 0x38, 0xe3, 0xbc, 0x92, 0x4b, 0x05, 0x45, 0x7e, 0x25, 0x97, 0x64, 0xa5, 0xf8, 0x4a, - 0x2e, 0x15, 0x95, 0xed, 0x57, 0x72, 0x69, 0x5b, 0xd9, 0x51, 0xff, 0x23, 0x41, 0x29, 0x63, 0xf3, - 0x48, 0xf8, 0x92, 0x12, 0xae, 0x8b, 0x54, 0x4c, 0x25, 0x0e, 0xd8, 0xae, 0x4f, 0x51, 0x07, 0xaa, - 0xc2, 0xb8, 0x2e, 0x51, 0xe0, 0x58, 0x4f, 0xc8, 0x54, 0xec, 0xa1, 0x19, 0x43, 0xe8, 0x51, 0x4e, - 0xf7, 0xd0, 0x84, 0x92, 0x1d, 0x03, 0xf1, 0x62, 0x3c, 0xa6, 0x71, 0x9c, 0xcc, 0x52, 0x4c, 0x28, - 0x29, 0x26, 0x26, 0x7a, 0x02, 0x8d, 0x8c, 0x92, 0xcd, 0xb5, 0x9d, 0xe8, 0x35, 0x85, 0xd3, 0xe9, - 0xba, 0xa0, 0xe4, 0x79, 0xfe, 0x6a, 0xd7, 0xae, 0xaf, 0x88, 0x7c, 0xd2, 0x24, 0x79, 0xf5, 0x2f, - 0xf0, 0x50, 0x94, 0x72, 0x18, 0x85, 0x97, 0xce, 0xa5, 0xeb, 0xb9, 0xec, 0x26, 0x13, 0x39, 0x4f, - 0x3c, 0x0a, 0x7d, 0xc2, 0xd7, 0x36, 0x2b, 0x01, 0x07, 0xcc, 0x70, 0x42, 0x79, 0x09, 0x58, 0x98, - 0x98, 0xd2, 0x12, 0xb0, 0x50, 0x18, 0xf2, 0xa7, 0x5d, 0x61, 0xed, 0xb4, 0x53, 0xaf, 0xa1, 0x75, - 0x77, 0xae, 0x54, 0x33, 0x1d, 0xa8, 0xcc, 0x57, 0xb0, 0x98, 0x4e, 0xc2, 0x79, 0x28, 0x5f, 0xdb, - 0xad, 0x1f, 0xae, 0xad, 0xfa, 0x4f, 0x09, 0x76, 0x8f, 0x17, 0xae, 0x37, 0x59, 0x6b, 0xdc, 0x7c, - 0x74, 0xd2, 0xfa, 0x59, 0xbc, 0xe9, 0xa0, 0xdd, 0xda, 0x78, 0xd0, 0x6e, 0x3a, 0xcc, 0x0a, 0xf7, - 0x1e, 0x66, 0x3f, 0x85, 0xca, 0xea, 0x1c, 0x8b, 0x5b, 0x72, 0xa7, 0xd0, 0xad, 0x62, 0x98, 0x65, - 0x87, 0x58, 0xac, 0xbe, 0x04, 0x94, 0x0f, 0x34, 0x5d, 0x90, 0xe5, 0xfe, 0x21, 0xdd, 0xbf, 0x7f, - 0x3c, 0x82, 0xf6, 0x68, 0x71, 0x19, 0x8f, 0x23, 0xf7, 0x92, 0x9e, 0x32, 0x6f, 0xac, 0xbf, 0xa7, - 0x01, 0x8b, 0xb3, 0x2e, 0xfd, 0x9f, 0x0c, 0xe5, 0x25, 0x8a, 0x0e, 0xa0, 0xe9, 0x06, 0xe3, 0xd0, - 0xcf, 0x82, 0x0e, 0xa8, 0xc7, 0xe3, 0x4e, 0x36, 0xf9, 0xdd, 0xcc, 0xd4, 0x4f, 0x2c, 0xc6, 0x84, - 0xf3, 0xd7, 0x92, 0x4c, 0xf9, 0x5b, 0x09, 0x3f, 0x9f, 0x63, 0xc2, 0xef, 0x82, 0xb2, 0xf4, 0x3f, - 0x63, 0xde, 0x78, 0xb9, 0x28, 0xb8, 0x9e, 0xe1, 0x3c, 0x98, 0x84, 0xb9, 0xf4, 0x9c, 0x31, 0xe5, - 0x84, 0x99, 0xe1, 0x29, 0xf3, 0x73, 0xa8, 0xf2, 0x7e, 0x88, 0x99, 0xe3, 0xcf, 0x49, 0x10, 0x8b, - 0xbe, 0x90, 0x71, 0x65, 0x89, 0x99, 0x31, 0xfa, 0x0a, 0x80, 0xf2, 0xfc, 0x08, 0xbb, 0x99, 0x53, - 0xd1, 0x12, 0xf5, 0xa3, 0xcf, 0x72, 0xc2, 0x58, 0x2e, 0xc0, 0x81, 0xf8, 0x6b, 0xdf, 0xcc, 0x29, - 0x2e, 0xd3, 0xec, 0x11, 0x7d, 0x0d, 0xb5, 0x69, 0x18, 0x7d, 0x70, 0xa2, 0x09, 0x11, 0x60, 0xba, - 0x6d, 0x3c, 0xcc, 0x79, 0x38, 0x49, 0xec, 0x62, 0xf8, 0xe9, 0x27, 0xb8, 0x3a, 0xcd, 0xbd, 0xa3, - 0xd7, 0x80, 0xb2, 0xf1, 0xa2, 0xcb, 0x13, 0x27, 0x25, 0xe1, 0x64, 0xff, 0xae, 0x13, 0xbe, 0x49, - 0x67, 0x8e, 0x94, 0xe9, 0x2d, 0x0c, 0xfd, 0x1e, 0xaa, 0x31, 0x65, 0xcc, 0xa3, 0xa9, 0x9b, 0xb2, - 0x70, 0xb3, 0xb7, 0x76, 0xeb, 0xe0, 0xe6, 0xcc, 0x43, 0x25, 0x5e, 0xbd, 0xa2, 0x63, 0x68, 0x78, - 0x6e, 0x70, 0x9d, 0x0f, 0x03, 0xc4, 0xf8, 0x56, 0x6e, 0xfc, 0xc0, 0x0d, 0xae, 0xf3, 0x31, 0xd4, - 0xbc, 0x3c, 0xa0, 0xfe, 0x01, 0xca, 0xcb, 0x55, 0x42, 0x15, 0xd8, 0x39, 0x37, 0x5f, 0x9b, 0xd6, - 0x1b, 0x53, 0xf9, 0x04, 0x95, 0x40, 0x1e, 0xe9, 0xa6, 0xa6, 0x48, 0x1c, 0xc6, 0x7a, 0x5f, 0x37, - 0x2e, 0x74, 0x65, 0x8b, 0xbf, 0x9c, 0x58, 0xf8, 0x4d, 0x0f, 0x6b, 0x4a, 0xe1, 0x78, 0x07, 0x8a, - 0x62, 0x5e, 0xf5, 0x5f, 0x12, 0x94, 0x44, 0x05, 0x83, 0x69, 0x88, 0x7e, 0x01, 0x4b, 0x71, 0x89, - 0xcd, 0x8d, 0x1f, 0xb8, 0x42, 0x75, 0x35, 0xbc, 0x14, 0x8c, 0x9d, 0xe2, 0x9c, 0xbc, 0x94, 0xc6, - 0x92, 0xbc, 0x95, 0x90, 0x33, 0xc3, 0x92, 0xfc, 0x2c, 0xe7, 0x79, 0x6d, 0xcb, 0x91, 0x71, 0x23, - 0x33, 0x64, 0x3b, 0xec, 0xb3, 0x9c, 0xe3, 0xb5, 0x9d, 0x58, 0xc6, 0x8d, 0xcc, 0x90, 0x72, 0xd5, - 0xdf, 0x42, 0x35, 0x5f, 0x73, 0xf4, 0x14, 0x64, 0x37, 0x98, 0x86, 0x69, 0x23, 0x36, 0x6f, 0x89, - 0x8b, 0x27, 0x89, 0x05, 0x41, 0x45, 0xa0, 0xdc, 0xae, 0xb3, 0x5a, 0x83, 0x4a, 0xae, 0x68, 0xea, - 0xbf, 0x25, 0xa8, 0xad, 0x15, 0xe1, 0x47, 0x7b, 0x47, 0x5f, 0x41, 0xf5, 0x83, 0x1b, 0x51, 0x92, - 0x3f, 0xfe, 0xeb, 0x47, 0xed, 0xf5, 0xe3, 0x3f, 0xfb, 0xdf, 0x0f, 0x27, 0x14, 0x57, 0x38, 0x3f, - 0x05, 0xd0, 0x1f, 0xa1, 0x9e, 0x8e, 0x24, 0x13, 0xca, 0x1c, 0xd7, 0x13, 0x4b, 0x55, 0x5f, 0x93, - 0x47, 0xca, 0xd5, 0x84, 0x1d, 0xd7, 0xa6, 0xf9, 0x57, 0xf4, 0xc5, 0xca, 0x41, 0xcc, 0x22, 0x37, - 0xb8, 0x12, 0xeb, 0x57, 0x5e, 0xd2, 0x46, 0x02, 0x7c, 0xf6, 0x37, 0x19, 0x6a, 0x6b, 0x7e, 0xd6, - 0x85, 0x54, 0x83, 0xb2, 0x69, 0x11, 0x4d, 0xb7, 0x7b, 0xc6, 0x40, 0x91, 0x90, 0x02, 0x55, 0xcb, - 0x34, 0x2c, 0x93, 0x68, 0x7a, 0xdf, 0xd2, 0xb8, 0xa4, 0x3e, 0x85, 0xdd, 0x81, 0x61, 0xbe, 0x26, - 0xa6, 0x65, 0x13, 0x7d, 0x60, 0x7c, 0x63, 0x1c, 0x0f, 0x74, 0xa5, 0x80, 0x1e, 0x80, 0x62, 0x99, - 0xa4, 0x7f, 0xda, 0x33, 0x4c, 0x62, 0x1b, 0x67, 0xba, 0x75, 0x6e, 0x2b, 0x32, 0x47, 0x4f, 0xed, - 0x41, 0x9f, 0xe8, 0x6f, 0xfb, 0xba, 0xae, 0x8d, 0xc8, 0x59, 0xef, 0xad, 0x52, 0x44, 0x2d, 0x78, - 0x60, 0x98, 0xa3, 0xf3, 0x93, 0x13, 0xa3, 0x6f, 0xe8, 0xa6, 0x4d, 0x8e, 0x7b, 0x83, 0x9e, 0xd9, - 0xd7, 0x95, 0x6d, 0xb4, 0x07, 0xc8, 0x30, 0xfb, 0xd6, 0xd9, 0x70, 0xa0, 0xdb, 0x3a, 0xc9, 0xa4, - 0xbb, 0x83, 0x9a, 0xd0, 0x10, 0x7e, 0x7a, 0x9a, 0x46, 0x4e, 0x7a, 0xc6, 0x40, 0xd7, 0x94, 0x12, - 0x8f, 0x24, 0x65, 0x8c, 0x88, 0x66, 0x8c, 0x7a, 0xc7, 0x1c, 0x2e, 0xf3, 0x39, 0x0d, 0xf3, 0xc2, - 0x32, 0xfa, 0x3a, 0xe9, 0x73, 0xb7, 0x1c, 0x05, 0x4e, 0xce, 0xd0, 0x73, 0x53, 0xd3, 0xf1, 0xb0, - 0x67, 0x68, 0x4a, 0x05, 0xed, 0xc3, 0xc3, 0x0c, 0xd6, 0xdf, 0x0e, 0x0d, 0xfc, 0x1d, 0xb1, 0x2d, - 0x8b, 0x8c, 0x2c, 0xcb, 0x54, 0xaa, 0x79, 0x4f, 0x3c, 0x5b, 0x6b, 0xa8, 0x9b, 0x4a, 0x0d, 0x3d, - 0x84, 0xe6, 0xd9, 0x70, 0x48, 0x32, 0x4b, 0x96, 0x6c, 0x9d, 0xd3, 0x7b, 0x9a, 0x86, 0xf5, 0xd1, - 0x88, 0x9c, 0x19, 0xa3, 0xb3, 0x9e, 0xdd, 0x3f, 0x55, 0x1a, 0x3c, 0xa5, 0x91, 0x6e, 0x13, 0xdb, - 0xb2, 0x7b, 0x83, 0x15, 0xae, 0xf0, 0x80, 0x56, 0x38, 0x9f, 0x74, 0x60, 0xbd, 0x51, 0x76, 0xf9, - 0x82, 0x73, 0xd8, 0xba, 0x48, 0x43, 0x44, 0x3c, 0xf7, 0xb4, 0x3c, 0xd9, 0x9c, 0x4a, 0x93, 0x83, - 0x86, 0x79, 0xd1, 0x1b, 0x18, 0x1a, 0x79, 0xad, 0x7f, 0x27, 0x5a, 0xff, 0x01, 0x07, 0x93, 0xc8, - 0xc8, 0x10, 0x5b, 0xdf, 0xf0, 0x40, 0x94, 0x4f, 0x11, 0x82, 0x7a, 0xdf, 0xc0, 0xfd, 0xf3, 0x41, - 0x0f, 0x13, 0x6c, 0x9d, 0xdb, 0xba, 0xb2, 0x77, 0xf4, 0xdf, 0x22, 0x6c, 0x8b, 0x83, 0x2a, 0x42, - 0x7f, 0x82, 0x5a, 0xee, 0x53, 0xe9, 0xe2, 0x08, 0x3d, 0xfe, 0xe8, 0x47, 0x54, 0x3b, 0xbb, 0xce, - 0xa6, 0xf0, 0x0b, 0x09, 0x1d, 0x43, 0x3d, 0xff, 0x85, 0x71, 0x71, 0x84, 0xf2, 0xfb, 0xfb, 0x86, - 0x8f, 0x8f, 0x0d, 0x3e, 0x5e, 0x83, 0xa2, 0xc7, 0xcc, 0xf5, 0x1d, 0x46, 0xb3, 0x6f, 0x06, 0xd4, - 0xce, 0x79, 0xb9, 0xf5, 0x21, 0xd2, 0xde, 0xdf, 0x68, 0x4b, 0x4f, 0xe6, 0x01, 0x6f, 0xe9, 0xe5, - 0xad, 0xfd, 0x4e, 0x42, 0xeb, 0x9f, 0x0a, 0xed, 0xcf, 0xee, 0x33, 0xa7, 0xde, 0x26, 0xd0, 0xdc, - 0x70, 0x11, 0x47, 0x5f, 0xe4, 0x23, 0xb8, 0xf7, 0x1a, 0xdf, 0x7e, 0xf2, 0x43, 0xb4, 0xd5, 0x2c, - 0x1b, 0x6e, 0xec, 0x6b, 0xb3, 0xdc, 0x7f, 0xdf, 0x5f, 0x9b, 0xe5, 0x63, 0x17, 0xff, 0x77, 0xa0, - 0xdc, 0xbe, 0xe0, 0x21, 0xf5, 0xf6, 0xd8, 0xbb, 0x37, 0xcd, 0xf6, 0xcf, 0x3e, 0xca, 0x49, 0x9d, - 0x1b, 0x00, 0xab, 0x6b, 0x12, 0x7a, 0x94, 0x1b, 0x72, 0xe7, 0x9a, 0xd7, 0x7e, 0x7c, 0x8f, 0x35, - 0x75, 0x65, 0x43, 0x73, 0xc3, 0xbd, 0x69, 0x6d, 0x35, 0xee, 0xbf, 0x57, 0xb5, 0x1f, 0x6c, 0xba, - 0x5e, 0xbc, 0x90, 0x8e, 0xbf, 0xfc, 0xf3, 0xe1, 0x95, 0xcb, 0x66, 0x8b, 0xcb, 0x83, 0x71, 0xe8, - 0x1f, 0x7a, 0xee, 0xd5, 0x8c, 0x05, 0x6e, 0x70, 0x15, 0x50, 0xf6, 0x21, 0x8c, 0xae, 0x0f, 0xbd, - 0x60, 0x72, 0x28, 0x74, 0x79, 0xb8, 0x1c, 0x7e, 0xb9, 0x2d, 0x7e, 0x5e, 0xfa, 0xd5, 0xff, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x40, 0x4b, 0x61, 0x91, 0x8e, 0x12, 0x00, 0x00, + // 2215 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x4d, 0x77, 0xdb, 0xc6, + 0xd5, 0x0e, 0x48, 0x50, 0x22, 0x2f, 0x3f, 0x04, 0x8d, 0x1c, 0x99, 0x2f, 0x15, 0x27, 0x0c, 0xde, + 0xc4, 0xe6, 0x71, 0x1d, 0xc9, 0x51, 0x7b, 0x5a, 0x9f, 0xb6, 0x49, 0x4b, 0x91, 0x90, 0x05, 0x9b, + 0x02, 0x98, 0x21, 0x25, 0xdb, 0xf5, 0x62, 0x0e, 0x44, 0x0e, 0x45, 0x54, 0xf8, 0x60, 0x81, 0xa1, + 0x1d, 0x2d, 0xbb, 0xeb, 0xe9, 0xb6, 0x8b, 0xfe, 0x84, 0xee, 0xfa, 0x0b, 0xfa, 0x5f, 0xba, 0xed, + 0x2f, 0xe8, 0xba, 0x67, 0x06, 0x03, 0x12, 0x94, 0x28, 0x3b, 0x1b, 0x9b, 0x78, 0xee, 0x33, 0x77, + 0xee, 0x9d, 0xfb, 0xdc, 0xf9, 0x10, 0xec, 0x46, 0xe1, 0x9c, 0xd1, 0x28, 0x9a, 0x8d, 0x0e, 0x92, + 0x5f, 0xfb, 0xb3, 0x28, 0x64, 0x21, 0x2a, 0x2d, 0xf0, 0x46, 0x29, 0x9a, 0x8d, 0x12, 0x54, 0xff, + 0xfb, 0x06, 0xa0, 0x01, 0x0d, 0xc6, 0x7d, 0xe7, 0xda, 0xa7, 0x01, 0xc3, 0xf4, 0x4f, 0x73, 0x1a, + 0x33, 0x84, 0x40, 0x1d, 0xd3, 0x98, 0xd5, 0x95, 0xa6, 0xd2, 0xaa, 0x60, 0xf1, 0x1b, 0x69, 0x90, + 0x77, 0x7c, 0x56, 0xcf, 0x35, 0x95, 0x56, 0x1e, 0xf3, 0x9f, 0xe8, 0xff, 0xa0, 0xe8, 0xf8, 0x8c, + 0xf8, 0xb1, 0xc3, 0xea, 0x15, 0x01, 0x6f, 0x3a, 0x3e, 0x3b, 0x8d, 0x1d, 0x86, 0xbe, 0x84, 0xca, + 0x2c, 0x71, 0x49, 0xa6, 0x4e, 0x3c, 0xad, 0xe7, 0x85, 0xa3, 0xb2, 0xc4, 0x4e, 0x9c, 0x78, 0x8a, + 0x5a, 0xa0, 0x4d, 0xdc, 0xc0, 0xf1, 0xc8, 0xc8, 0x63, 0xef, 0xc8, 0x98, 0x7a, 0xcc, 0xa9, 0xab, + 0x4d, 0xa5, 0x55, 0xc0, 0x35, 0x81, 0x77, 0x3c, 0xf6, 0xae, 0xcb, 0x51, 0xf4, 0x08, 0xb6, 0x52, + 0x67, 0x51, 0x12, 0x60, 0xbd, 0xd0, 0x54, 0x5a, 0x25, 0x5c, 0x9b, 0xad, 0x86, 0xfd, 0x08, 0xb6, + 0x98, 0xeb, 0xd3, 0x70, 0xce, 0x48, 0x4c, 0x47, 0x61, 0x30, 0x8e, 0xeb, 0x1b, 0x89, 0x47, 0x09, + 0x0f, 0x12, 0x14, 0xe9, 0x50, 0x9d, 0x50, 0x4a, 0x3c, 0xd7, 0x77, 0x19, 0xe1, 0xe1, 0x6f, 0x8a, + 0xf0, 0xcb, 0x13, 0x4a, 0x7b, 0x1c, 0x1b, 0x38, 0x0c, 0x7d, 0x05, 0xb5, 0x25, 0x47, 0xe4, 0x58, + 0x15, 0xa4, 0x4a, 0x4a, 0x12, 0x89, 0x3e, 0x01, 0x2d, 0x9c, 0xb3, 0xcb, 0xd0, 0x0d, 0x2e, 0xc9, + 0x68, 0xea, 0x04, 0xc4, 0x1d, 0xd7, 0x8b, 0x4d, 0xa5, 0xa5, 0x1e, 0xe5, 0x9e, 0x2a, 0xb8, 0x96, + 0xda, 0x3a, 0x53, 0x27, 0x30, 0xc7, 0xe8, 0x21, 0x6c, 0x79, 0x4e, 0xcc, 0xc8, 0x34, 0x9c, 0x91, + 0xd9, 0xfc, 0xe2, 0x8a, 0x5e, 0xd7, 0x6b, 0x62, 0x65, 0xaa, 0x1c, 0x3e, 0x09, 0x67, 0x7d, 0x01, + 0xa2, 0x07, 0x00, 0x62, 0x55, 0xc4, 0xe4, 0xf5, 0x92, 0xc8, 0xa1, 0xc4, 0x11, 0x31, 0x31, 0xfa, + 0x16, 0xca, 0xa2, 0x9a, 0x64, 0xea, 0x06, 0x2c, 0xae, 0x43, 0x33, 0xdf, 0x2a, 0x1f, 0x6a, 0xfb, + 0x5e, 0xc0, 0x0b, 0x8b, 0xb9, 0xe5, 0xc4, 0x0d, 0x18, 0x86, 0x28, 0xfd, 0x19, 0xa3, 0x31, 0xec, + 0xf0, 0x2a, 0x92, 0xd1, 0x3c, 0x66, 0xa1, 0x4f, 0x22, 0x3a, 0x0a, 0xa3, 0x71, 0x5c, 0x2f, 0x8b, + 0xa1, 0xbf, 0xd8, 0x5f, 0x88, 0x63, 0xff, 0xb6, 0x1a, 0xf6, 0xbb, 0x34, 0x66, 0x1d, 0x31, 0x0e, + 0x27, 0xc3, 0x8c, 0x80, 0x45, 0xd7, 0x78, 0x7b, 0x7c, 0x13, 0x47, 0x4f, 0x00, 0x39, 0x9e, 0x17, + 0xbe, 0x27, 0x31, 0xf5, 0x26, 0x44, 0x56, 0xa7, 0xbe, 0xd5, 0x54, 0x5a, 0x45, 0xac, 0x09, 0xcb, + 0x80, 0x7a, 0x13, 0xe9, 0x1e, 0xfd, 0x12, 0xaa, 0x22, 0xa6, 0x09, 0x75, 0xd8, 0x3c, 0xa2, 0x71, + 0x5d, 0x6b, 0xe6, 0x5b, 0xb5, 0xc3, 0x6d, 0x99, 0xc8, 0x71, 0x02, 0x1f, 0xb9, 0x0c, 0x57, 0x38, + 0x4f, 0x7e, 0xc7, 0x7c, 0x75, 0x7c, 0xe7, 0x47, 0x12, 0x4f, 0x1d, 0x9e, 0xc2, 0x76, 0x53, 0x69, + 0x55, 0x71, 0xc9, 0x77, 0x7e, 0x1c, 0x08, 0xa0, 0xd1, 0x85, 0xdd, 0xf5, 0x11, 0x73, 0x09, 0xf3, + 0x25, 0xe7, 0xaa, 0x56, 0x31, 0xff, 0x89, 0xee, 0x41, 0xe1, 0x9d, 0xe3, 0xcd, 0xa9, 0x90, 0x75, + 0x05, 0x27, 0x1f, 0xbf, 0xce, 0x3d, 0x53, 0xf4, 0x67, 0xb0, 0x33, 0x8c, 0x9c, 0xd1, 0xd5, 0x8d, + 0xce, 0xb8, 0x29, 0x6c, 0xe5, 0x96, 0xb0, 0xf5, 0xef, 0x61, 0x4b, 0xd4, 0xe0, 0x98, 0xd2, 0x0f, + 0xf5, 0xd3, 0x7d, 0xe0, 0xdd, 0x22, 0xd4, 0x97, 0xf4, 0xd4, 0x86, 0xe3, 0x73, 0xe1, 0xe9, 0x63, + 0xd0, 0x96, 0xe3, 0xe3, 0x59, 0x18, 0xc4, 0x94, 0x37, 0x0b, 0x2f, 0x11, 0x57, 0x19, 0x17, 0xa5, + 0x90, 0xa3, 0x22, 0x46, 0xd5, 0x24, 0x7e, 0x4c, 0xa9, 0x10, 0xe4, 0xc3, 0xa4, 0x07, 0x88, 0x17, + 0x8e, 0xae, 0x78, 0x57, 0x39, 0xd7, 0xd2, 0x7d, 0x95, 0xc3, 0xbd, 0x70, 0x74, 0xd5, 0xe5, 0xa0, + 0xfe, 0x36, 0x69, 0xfc, 0x61, 0x28, 0xe6, 0xfa, 0xe9, 0xe9, 0x21, 0x1d, 0x0a, 0x42, 0x2d, 0xc2, + 0x6d, 0xf9, 0xb0, 0x92, 0x95, 0x1d, 0x4e, 0x4c, 0xfa, 0x5b, 0xd8, 0x59, 0x71, 0x2e, 0xb3, 0x68, + 0x40, 0x71, 0x16, 0x51, 0xd7, 0x77, 0x2e, 0xa9, 0xf4, 0xbc, 0xf8, 0x46, 0x2d, 0xd8, 0x9c, 0x38, + 0xae, 0x37, 0x8f, 0x52, 0xc7, 0xb5, 0x54, 0x06, 0x09, 0x8a, 0x53, 0xb3, 0xfe, 0x19, 0x34, 0x30, + 0x8d, 0x29, 0x3b, 0x75, 0xe3, 0xd8, 0x0d, 0x83, 0x4e, 0x18, 0xb0, 0x28, 0xf4, 0x64, 0x06, 0xfa, + 0x03, 0xd8, 0x5b, 0x6b, 0x4d, 0x42, 0xe0, 0x83, 0x7f, 0x98, 0xd3, 0xe8, 0x7a, 0xfd, 0xe0, 0x1f, + 0x60, 0x6f, 0xad, 0x55, 0xc6, 0xff, 0x04, 0x0a, 0x33, 0xc7, 0x8d, 0xe2, 0x7a, 0x4e, 0xb4, 0xcd, + 0x6e, 0xa6, 0x6d, 0xfa, 0x8e, 0x1b, 0x9d, 0xb8, 0x31, 0x0b, 0xa3, 0x6b, 0x9c, 0x90, 0x5e, 0xa8, + 0x45, 0x45, 0xcb, 0xe9, 0x7f, 0x55, 0xa0, 0x9c, 0x31, 0xa2, 0x3d, 0x28, 0x05, 0xe1, 0x98, 0x92, + 0x49, 0x14, 0xfa, 0xe9, 0x22, 0x70, 0xe0, 0x38, 0x0a, 0x7d, 0xae, 0x09, 0x61, 0x64, 0xa1, 0x14, + 0xe4, 0x06, 0xff, 0x1c, 0x86, 0xe8, 0x1b, 0xd8, 0x9c, 0x26, 0x0e, 0xc4, 0x56, 0x55, 0x3e, 0xdc, + 0xb9, 0x31, 0x77, 0xd7, 0x61, 0x0e, 0x4e, 0x39, 0x2f, 0xd4, 0x62, 0x5e, 0x53, 0x5f, 0xa8, 0x45, + 0x55, 0x2b, 0xbc, 0x50, 0x8b, 0x05, 0x6d, 0xe3, 0x85, 0x5a, 0xdc, 0xd0, 0x36, 0xf5, 0xff, 0x28, + 0x50, 0x4c, 0xd9, 0x3c, 0x12, 0xbe, 0xa4, 0x84, 0xeb, 0x42, 0x8a, 0xa9, 0xc8, 0x81, 0xa1, 0xeb, + 0x53, 0xd4, 0x84, 0x8a, 0x30, 0xae, 0x4a, 0x14, 0x38, 0xd6, 0x16, 0x32, 0x15, 0x7b, 0x68, 0xca, + 0x10, 0x7a, 0x54, 0xe5, 0x1e, 0x9a, 0x50, 0xd2, 0x63, 0x20, 0x9e, 0x8f, 0x46, 0x34, 0x8e, 0x93, + 0x59, 0x0a, 0x09, 0x45, 0x62, 0x62, 0xa2, 0x87, 0xb0, 0x95, 0x52, 0xd2, 0xb9, 0x36, 0x12, 0xbd, + 0x4a, 0x58, 0x4e, 0xd7, 0x02, 0x2d, 0xcb, 0xf3, 0x97, 0xbb, 0x76, 0x6d, 0x49, 0xe4, 0x93, 0x26, + 0xc9, 0xeb, 0x7f, 0x84, 0xfb, 0xa2, 0x94, 0xfd, 0x28, 0xbc, 0x70, 0x2e, 0x5c, 0xcf, 0x65, 0xd7, + 0xa9, 0xc8, 0x79, 0xe2, 0x51, 0xe8, 0x13, 0xbe, 0xb6, 0x69, 0x09, 0x38, 0x60, 0x85, 0x63, 0xca, + 0x4b, 0xc0, 0xc2, 0xc4, 0x24, 0x4b, 0xc0, 0x42, 0x61, 0xc8, 0x9e, 0x76, 0xf9, 0x95, 0xd3, 0x4e, + 0xbf, 0x82, 0xfa, 0xed, 0xb9, 0xa4, 0x66, 0x9a, 0x50, 0x9e, 0x2d, 0x61, 0x31, 0x9d, 0x82, 0xb3, + 0x50, 0xb6, 0xb6, 0xb9, 0x8f, 0xd7, 0x56, 0xff, 0x87, 0x02, 0xdb, 0x47, 0x73, 0xd7, 0x1b, 0xaf, + 0x34, 0x6e, 0x36, 0x3a, 0x65, 0xf5, 0x2c, 0x5e, 0x77, 0xd0, 0xe6, 0xd6, 0x1e, 0xb4, 0xeb, 0x0e, + 0xb3, 0xfc, 0x9d, 0x87, 0xd9, 0x17, 0x50, 0x5e, 0x9e, 0x63, 0x71, 0x5d, 0x6d, 0xe6, 0x5b, 0x15, + 0x0c, 0xd3, 0xf4, 0x10, 0x8b, 0xf5, 0x67, 0x80, 0xb2, 0x81, 0xca, 0x05, 0x59, 0xec, 0x1f, 0xca, + 0xdd, 0xfb, 0xc7, 0x67, 0xd0, 0x18, 0xcc, 0x2f, 0xe2, 0x51, 0xe4, 0x5e, 0xd0, 0x13, 0xe6, 0x8d, + 0x8c, 0x77, 0x34, 0x60, 0x71, 0xda, 0xa5, 0xff, 0x55, 0xa1, 0xb4, 0x40, 0xd1, 0x3e, 0xec, 0xb8, + 0xc1, 0x28, 0xf4, 0xd3, 0xa0, 0x03, 0xea, 0xf1, 0xb8, 0x93, 0x4d, 0x7e, 0x3b, 0x35, 0x75, 0x12, + 0x8b, 0x39, 0xe6, 0xfc, 0x95, 0x24, 0x25, 0x3f, 0x97, 0xf0, 0xb3, 0x39, 0x26, 0xfc, 0x16, 0x68, + 0x0b, 0xff, 0x53, 0xe6, 0x8d, 0x16, 0x8b, 0x82, 0x6b, 0x29, 0xce, 0x83, 0x49, 0x98, 0x0b, 0xcf, + 0x29, 0x53, 0x4d, 0x98, 0x29, 0x2e, 0x99, 0x5f, 0x42, 0x85, 0xf7, 0x43, 0xcc, 0x1c, 0x7f, 0x46, + 0x82, 0x58, 0xf4, 0x85, 0x8a, 0xcb, 0x0b, 0xcc, 0x8a, 0xd1, 0x77, 0x00, 0x94, 0xe7, 0x47, 0xd8, + 0xf5, 0x8c, 0x8a, 0x96, 0xa8, 0x1d, 0x7e, 0x9e, 0x11, 0xc6, 0x62, 0x01, 0xf6, 0xc5, 0xbf, 0xc3, + 0xeb, 0x19, 0xc5, 0x25, 0x9a, 0xfe, 0x44, 0xdf, 0x43, 0x75, 0x12, 0x46, 0xef, 0x9d, 0x68, 0x4c, + 0x04, 0x28, 0xb7, 0x8d, 0xfb, 0x19, 0x0f, 0xc7, 0x89, 0x5d, 0x0c, 0x3f, 0xf9, 0x04, 0x57, 0x26, + 0x99, 0x6f, 0xf4, 0x12, 0x50, 0x3a, 0x5e, 0x74, 0x79, 0xe2, 0xa4, 0x28, 0x9c, 0xec, 0xdd, 0x76, + 0xc2, 0x37, 0xe9, 0xd4, 0x91, 0x36, 0xb9, 0x81, 0xa1, 0xdf, 0x40, 0x25, 0xa6, 0x8c, 0x79, 0x54, + 0xba, 0x29, 0x09, 0x37, 0xbb, 0x2b, 0xb7, 0x0e, 0x6e, 0x4e, 0x3d, 0x94, 0xe3, 0xe5, 0x27, 0x3a, + 0x82, 0x2d, 0xcf, 0x0d, 0xae, 0xb2, 0x61, 0x80, 0x18, 0x5f, 0xcf, 0x8c, 0xef, 0xb9, 0xc1, 0x55, + 0x36, 0x86, 0xaa, 0x97, 0x05, 0xf4, 0xdf, 0x42, 0x69, 0xb1, 0x4a, 0xa8, 0x0c, 0x9b, 0x67, 0xd6, + 0x4b, 0xcb, 0x7e, 0x65, 0x69, 0x9f, 0xa0, 0x22, 0xa8, 0x03, 0xc3, 0xea, 0x6a, 0x0a, 0x87, 0xb1, + 0xd1, 0x31, 0xcc, 0x73, 0x43, 0xcb, 0xf1, 0x8f, 0x63, 0x1b, 0xbf, 0x6a, 0xe3, 0xae, 0x96, 0x3f, + 0xda, 0x84, 0x82, 0x98, 0x57, 0xff, 0x97, 0x02, 0x45, 0x51, 0xc1, 0x60, 0x12, 0xa2, 0x9f, 0xc1, + 0x42, 0x5c, 0x62, 0x73, 0xe3, 0x07, 0xae, 0x50, 0x5d, 0x15, 0x2f, 0x04, 0x33, 0x94, 0x38, 0x27, + 0x2f, 0xa4, 0xb1, 0x20, 0xe7, 0x12, 0x72, 0x6a, 0x58, 0x90, 0x1f, 0x67, 0x3c, 0xaf, 0x6c, 0x39, + 0x2a, 0xde, 0x4a, 0x0d, 0xe9, 0x0e, 0xfb, 0x38, 0xe3, 0x78, 0x65, 0x27, 0x56, 0xf1, 0x56, 0x6a, + 0x90, 0x5c, 0xfd, 0x57, 0x50, 0xc9, 0xd6, 0x1c, 0x3d, 0x02, 0xd5, 0x0d, 0x26, 0xa1, 0x6c, 0xc4, + 0x9d, 0x1b, 0xe2, 0xe2, 0x49, 0x62, 0x41, 0xd0, 0x11, 0x68, 0x37, 0xeb, 0xac, 0x57, 0xa1, 0x9c, + 0x29, 0x9a, 0xfe, 0x6f, 0x05, 0xaa, 0x2b, 0x45, 0xf8, 0xc9, 0xde, 0xd1, 0x77, 0x50, 0x79, 0xef, + 0x46, 0x94, 0x64, 0x8f, 0xff, 0xda, 0x61, 0x63, 0xf5, 0xf8, 0x4f, 0xff, 0xef, 0x84, 0x63, 0x8a, + 0xcb, 0x9c, 0x2f, 0x01, 0xf4, 0x3b, 0xa8, 0xc9, 0x91, 0x64, 0x4c, 0x99, 0xe3, 0x7a, 0x62, 0xa9, + 0x6a, 0x2b, 0xf2, 0x90, 0xdc, 0xae, 0xb0, 0xe3, 0xea, 0x24, 0xfb, 0x89, 0xbe, 0x5e, 0x3a, 0x88, + 0x59, 0xe4, 0x06, 0x97, 0x62, 0xfd, 0x4a, 0x0b, 0xda, 0x40, 0x80, 0xfc, 0x20, 0xaf, 0xca, 0xcb, + 0xe0, 0x80, 0x39, 0x6c, 0x1e, 0xa3, 0x6f, 0xa0, 0x10, 0x33, 0x47, 0xee, 0x64, 0xb5, 0x95, 0xde, + 0xca, 0x10, 0x29, 0x4e, 0x58, 0x2b, 0xb7, 0x9f, 0xdc, 0xad, 0xdb, 0x4f, 0x81, 0xef, 0x18, 0xc9, + 0x2e, 0x5a, 0x3e, 0x44, 0x32, 0xf9, 0x93, 0x61, 0xaf, 0xd3, 0x66, 0x8c, 0xfa, 0x33, 0x86, 0x13, + 0x42, 0x72, 0xba, 0x3d, 0xfe, 0xb3, 0x0a, 0xd5, 0x95, 0xa4, 0x56, 0x55, 0x5d, 0x85, 0x92, 0x65, + 0x93, 0xae, 0x31, 0x6c, 0x9b, 0x3d, 0x4d, 0x41, 0x1a, 0x54, 0x6c, 0xcb, 0xb4, 0x2d, 0xd2, 0x35, + 0x3a, 0x76, 0x97, 0xeb, 0xfb, 0x53, 0xd8, 0xee, 0x99, 0xd6, 0x4b, 0x62, 0xd9, 0x43, 0x62, 0xf4, + 0xcc, 0xe7, 0xe6, 0x51, 0xcf, 0xd0, 0xf2, 0xe8, 0x1e, 0x68, 0xb6, 0x45, 0x3a, 0x27, 0x6d, 0xd3, + 0x22, 0x43, 0xf3, 0xd4, 0xb0, 0xcf, 0x86, 0x9a, 0xca, 0x51, 0x1e, 0x08, 0x31, 0x5e, 0x77, 0x0c, + 0xa3, 0x3b, 0x20, 0xa7, 0xed, 0xd7, 0x5a, 0x01, 0xd5, 0xe1, 0x9e, 0x69, 0x0d, 0xce, 0x8e, 0x8f, + 0xcd, 0x8e, 0x69, 0x58, 0x43, 0x72, 0xd4, 0xee, 0xb5, 0xad, 0x8e, 0xa1, 0x6d, 0xa0, 0x5d, 0x40, + 0xa6, 0xd5, 0xb1, 0x4f, 0xfb, 0x3d, 0x63, 0x68, 0x90, 0xb4, 0x8f, 0x36, 0xd1, 0x0e, 0x6c, 0x09, + 0x3f, 0xed, 0x6e, 0x97, 0x1c, 0xb7, 0xcd, 0x9e, 0xd1, 0xd5, 0x8a, 0x3c, 0x12, 0xc9, 0x18, 0x90, + 0xae, 0x39, 0x68, 0x1f, 0x71, 0xb8, 0xc4, 0xe7, 0x34, 0xad, 0x73, 0xdb, 0xec, 0x18, 0xa4, 0xc3, + 0xdd, 0x72, 0x14, 0x38, 0x39, 0x45, 0xcf, 0xac, 0xae, 0x81, 0xfb, 0x6d, 0xb3, 0xab, 0x95, 0xd1, + 0x1e, 0xdc, 0x4f, 0x61, 0xe3, 0x75, 0xdf, 0xc4, 0x6f, 0xc8, 0xd0, 0xb6, 0xc9, 0xc0, 0xb6, 0x2d, + 0xad, 0x92, 0xf5, 0xc4, 0xb3, 0xb5, 0xfb, 0x86, 0xa5, 0x55, 0xd1, 0x7d, 0xd8, 0x39, 0xed, 0xf7, + 0x49, 0x6a, 0x49, 0x93, 0xad, 0x71, 0x7a, 0xbb, 0xdb, 0xc5, 0xc6, 0x60, 0x40, 0x4e, 0xcd, 0xc1, + 0x69, 0x7b, 0xd8, 0x39, 0xd1, 0xb6, 0x78, 0x4a, 0x03, 0x63, 0x48, 0x86, 0xf6, 0xb0, 0xdd, 0x5b, + 0xe2, 0x1a, 0x0f, 0x68, 0x89, 0xf3, 0x49, 0x7b, 0xf6, 0x2b, 0x6d, 0x9b, 0x2f, 0x38, 0x87, 0xed, + 0x73, 0x19, 0x22, 0xe2, 0xb9, 0xcb, 0xf2, 0xa4, 0x73, 0x6a, 0x3b, 0x1c, 0x34, 0xad, 0xf3, 0x76, + 0xcf, 0xec, 0x92, 0x97, 0xc6, 0x1b, 0xb1, 0x0f, 0xdd, 0xe3, 0x60, 0x12, 0x19, 0xe9, 0x63, 0xfb, + 0x39, 0x0f, 0x44, 0xfb, 0x14, 0x21, 0xa8, 0x75, 0x4c, 0xdc, 0x39, 0xeb, 0xb5, 0x31, 0xc1, 0xf6, + 0xd9, 0xd0, 0xd0, 0x76, 0x1f, 0xff, 0x53, 0x81, 0x4a, 0x56, 0x67, 0xbc, 0xea, 0xa6, 0x45, 0x8e, + 0x7b, 0xe6, 0xf3, 0x93, 0x61, 0x22, 0x82, 0xc1, 0x59, 0x87, 0x97, 0xcc, 0xe0, 0xfb, 0x1b, 0x82, + 0x5a, 0xb2, 0xe8, 0x8b, 0x64, 0x73, 0x7c, 0x2e, 0x89, 0x59, 0xb6, 0xf4, 0x9b, 0xe7, 0xc1, 0x4b, + 0xd0, 0xc0, 0xd8, 0xc6, 0x9a, 0x8a, 0xbe, 0x82, 0xa6, 0x44, 0x78, 0x5d, 0x31, 0x36, 0x3a, 0x43, + 0xd2, 0x6f, 0xbf, 0x39, 0xe5, 0x65, 0x4f, 0x44, 0x36, 0xd0, 0x0a, 0xe8, 0x0b, 0xd8, 0x5b, 0xb0, + 0xd6, 0xe9, 0xe2, 0xf0, 0x6f, 0x9b, 0xb0, 0x21, 0x8e, 0xf9, 0x08, 0xfd, 0x1e, 0xaa, 0x99, 0x87, + 0xe6, 0xf9, 0x21, 0x7a, 0xf0, 0xc1, 0x27, 0x68, 0x23, 0x7d, 0x0c, 0x48, 0xf8, 0xa9, 0x82, 0x8e, + 0xa0, 0x96, 0x7d, 0x9f, 0x9d, 0x1f, 0xa2, 0xec, 0xe9, 0xb8, 0xe6, 0xe9, 0xb6, 0xc6, 0xc7, 0x4b, + 0xd0, 0x8c, 0x98, 0xb9, 0x3e, 0x6f, 0x52, 0xf9, 0xe2, 0x42, 0x8d, 0x8c, 0x97, 0x1b, 0xcf, 0xb8, + 0xc6, 0xde, 0x5a, 0x9b, 0xbc, 0xd7, 0xf4, 0xf8, 0x86, 0xb8, 0x78, 0xf3, 0xdc, 0x4a, 0x68, 0xf5, + 0xa1, 0xd5, 0xf8, 0xfc, 0x2e, 0xb3, 0xf4, 0x36, 0x86, 0x9d, 0x35, 0xcf, 0x18, 0xf4, 0x75, 0x36, + 0x82, 0x3b, 0x1f, 0x41, 0x8d, 0x87, 0x1f, 0xa3, 0x2d, 0x67, 0x59, 0xf3, 0xde, 0x59, 0x99, 0xe5, + 0xee, 0xd7, 0xd2, 0xca, 0x2c, 0x1f, 0x7a, 0x36, 0xbd, 0x05, 0xed, 0xe6, 0xf5, 0x18, 0xe9, 0x37, + 0xc7, 0xde, 0xbe, 0xa7, 0x37, 0xfe, 0xff, 0x83, 0x1c, 0xe9, 0xdc, 0x04, 0x58, 0x5e, 0x32, 0xd1, + 0x67, 0x99, 0x21, 0xb7, 0x2e, 0xc9, 0x8d, 0x07, 0x77, 0x58, 0xa5, 0xab, 0x21, 0xec, 0xac, 0xb9, + 0x75, 0xae, 0xac, 0xc6, 0xdd, 0xb7, 0xd2, 0xc6, 0xbd, 0x75, 0x97, 0xb3, 0xa7, 0x0a, 0x3a, 0x4d, + 0x74, 0x91, 0xfe, 0xd1, 0xe3, 0x23, 0x42, 0xaf, 0xaf, 0x3f, 0x44, 0xe6, 0xb1, 0x9e, 0xff, 0x4b, + 0x4e, 0x79, 0xaa, 0x20, 0x1b, 0x2a, 0x59, 0x71, 0x7f, 0x54, 0xf5, 0x1f, 0x73, 0x78, 0xf4, 0xed, + 0x1f, 0x0e, 0x2e, 0x5d, 0x36, 0x9d, 0x5f, 0xec, 0x8f, 0x42, 0xff, 0xc0, 0x73, 0x2f, 0xa7, 0x2c, + 0x70, 0x83, 0xcb, 0x80, 0xb2, 0xf7, 0x61, 0x74, 0x75, 0xe0, 0x05, 0xe3, 0x03, 0xd1, 0x37, 0x07, + 0x0b, 0x3f, 0x17, 0x1b, 0xe2, 0x8f, 0x87, 0x3f, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, + 0xc8, 0xdd, 0x00, 0x6c, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1788,6 +1917,15 @@ type RouterClient interface { //SubscribeHtlcEvents creates a uni-directional stream from the server to //the client which delivers a stream of htlc events. SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error) + //* + //Deprecated, use SendPaymentV2. SendPayment attempts to route a payment + //described by the passed PaymentRequest to the final destination. The call + //returns a stream of payment status updates. + SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) + //* + //Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for + //the payment identified by the payment hash. + TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) } type routerClient struct { @@ -1948,6 +2086,72 @@ func (x *routerSubscribeHtlcEventsClient) Recv() (*HtlcEvent, error) { return m, nil } +// Deprecated: Do not use. +func (c *routerClient) SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) { + stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[3], "/routerrpc.Router/SendPayment", opts...) + if err != nil { + return nil, err + } + x := &routerSendPaymentClient{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 Router_SendPaymentClient interface { + Recv() (*PaymentStatus, error) + grpc.ClientStream +} + +type routerSendPaymentClient struct { + grpc.ClientStream +} + +func (x *routerSendPaymentClient) Recv() (*PaymentStatus, error) { + m := new(PaymentStatus) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// Deprecated: Do not use. +func (c *routerClient) TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) { + stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[4], "/routerrpc.Router/TrackPayment", opts...) + if err != nil { + return nil, err + } + x := &routerTrackPaymentClient{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 Router_TrackPaymentClient interface { + Recv() (*PaymentStatus, error) + grpc.ClientStream +} + +type routerTrackPaymentClient struct { + grpc.ClientStream +} + +func (x *routerTrackPaymentClient) Recv() (*PaymentStatus, error) { + m := new(PaymentStatus) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // RouterServer is the server API for Router service. type RouterServer interface { //* @@ -1989,6 +2193,15 @@ type RouterServer interface { //SubscribeHtlcEvents creates a uni-directional stream from the server to //the client which delivers a stream of htlc events. SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error + //* + //Deprecated, use SendPaymentV2. SendPayment attempts to route a payment + //described by the passed PaymentRequest to the final destination. The call + //returns a stream of payment status updates. + SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error + //* + //Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for + //the payment identified by the payment hash. + TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error } func RegisterRouterServer(s *grpc.Server, srv RouterServer) { @@ -2166,6 +2379,48 @@ func (x *routerSubscribeHtlcEventsServer) Send(m *HtlcEvent) error { return x.ServerStream.SendMsg(m) } +func _Router_SendPayment_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SendPaymentRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(RouterServer).SendPayment(m, &routerSendPaymentServer{stream}) +} + +type Router_SendPaymentServer interface { + Send(*PaymentStatus) error + grpc.ServerStream +} + +type routerSendPaymentServer struct { + grpc.ServerStream +} + +func (x *routerSendPaymentServer) Send(m *PaymentStatus) error { + return x.ServerStream.SendMsg(m) +} + +func _Router_TrackPayment_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(TrackPaymentRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(RouterServer).TrackPayment(m, &routerTrackPaymentServer{stream}) +} + +type Router_TrackPaymentServer interface { + Send(*PaymentStatus) error + grpc.ServerStream +} + +type routerTrackPaymentServer struct { + grpc.ServerStream +} + +func (x *routerTrackPaymentServer) Send(m *PaymentStatus) error { + return x.ServerStream.SendMsg(m) +} + var _Router_serviceDesc = grpc.ServiceDesc{ ServiceName: "routerrpc.Router", HandlerType: (*RouterServer)(nil), @@ -2211,6 +2466,16 @@ var _Router_serviceDesc = grpc.ServiceDesc{ Handler: _Router_SubscribeHtlcEvents_Handler, ServerStreams: true, }, + { + StreamName: "SendPayment", + Handler: _Router_SendPayment_Handler, + ServerStreams: true, + }, + { + StreamName: "TrackPayment", + Handler: _Router_TrackPayment_Handler, + ServerStreams: true, + }, }, Metadata: "routerrpc/router.proto", } diff --git a/lnrpc/routerrpc/router.proto b/lnrpc/routerrpc/router.proto index 62980527..d0a33cc7 100644 --- a/lnrpc/routerrpc/router.proto +++ b/lnrpc/routerrpc/router.proto @@ -411,6 +411,62 @@ enum FailureDetail { CIRCULAR_ROUTE = 22; } +enum PaymentState { + /** + Payment is still in flight. + */ + IN_FLIGHT = 0; + + /** + Payment completed successfully. + */ + SUCCEEDED = 1; + + /** + There are more routes to try, but the payment timeout was exceeded. + */ + FAILED_TIMEOUT = 2; + + /** + All possible routes were tried and failed permanently. Or were no + routes to the destination at all. + */ + FAILED_NO_ROUTE = 3; + + /** + A non-recoverable error has occured. + */ + FAILED_ERROR = 4; + + /** + Payment details incorrect (unknown hash, invalid amt or + invalid final cltv delta) + */ + FAILED_INCORRECT_PAYMENT_DETAILS = 5; + + /** + Insufficient local balance. + */ + FAILED_INSUFFICIENT_BALANCE = 6; +} + +message PaymentStatus { + /// Current state the payment is in. + PaymentState state = 1; + + /** + The pre-image of the payment when state is SUCCEEDED. + */ + bytes preimage = 2; + + reserved 3; + + /** + The HTLCs made in attempt to settle the payment [EXPERIMENTAL]. + */ + repeated lnrpc.HTLCAttempt htlcs = 4; +} + service Router { /** SendPaymentV2 attempts to route a payment described by the passed @@ -472,4 +528,21 @@ service Router { */ rpc SubscribeHtlcEvents (SubscribeHtlcEventsRequest) returns (stream HtlcEvent); + + /** + Deprecated, use SendPaymentV2. SendPayment attempts to route a payment + described by the passed PaymentRequest to the final destination. The call + returns a stream of payment status updates. + */ + rpc SendPayment(SendPaymentRequest) returns (stream PaymentStatus) { + option deprecated = true; + } + + /** + Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for + the payment identified by the payment hash. + */ + rpc TrackPayment(TrackPaymentRequest) returns (stream PaymentStatus) { + option deprecated = true; + } } diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go index b3801745..5a98f212 100644 --- a/lnrpc/routerrpc/router_server.go +++ b/lnrpc/routerrpc/router_server.go @@ -84,6 +84,14 @@ var ( Entity: "offchain", Action: "read", }}, + "/routerrpc.Router/SendPayment": {{ + Entity: "offchain", + Action: "write", + }}, + "/routerrpc.Router/TrackPayment": {{ + Entity: "offchain", + Action: "read", + }}, } // DefaultRouterMacFilename is the default name of the router macaroon diff --git a/lnrpc/routerrpc/router_server_deprecated.go b/lnrpc/routerrpc/router_server_deprecated.go new file mode 100644 index 00000000..199ec841 --- /dev/null +++ b/lnrpc/routerrpc/router_server_deprecated.go @@ -0,0 +1,95 @@ +package routerrpc + +import ( + "encoding/hex" + "errors" + "fmt" + + "github.com/lightningnetwork/lnd/lnrpc" +) + +// legacyTrackPaymentServer is a wrapper struct that transforms a stream of main +// rpc payment structs into the legacy PaymentStatus format. +type legacyTrackPaymentServer struct { + Router_TrackPaymentServer +} + +// Send converts a Payment object and sends it as a PaymentStatus object on the +// embedded stream. +func (i *legacyTrackPaymentServer) Send(p *lnrpc.Payment) error { + var state PaymentState + switch p.Status { + case lnrpc.Payment_IN_FLIGHT: + state = PaymentState_IN_FLIGHT + case lnrpc.Payment_SUCCEEDED: + state = PaymentState_SUCCEEDED + case lnrpc.Payment_FAILED: + switch p.FailureReason { + case lnrpc.PaymentFailureReason_FAILURE_REASON_NONE: + return fmt.Errorf("expected fail reason") + + case lnrpc.PaymentFailureReason_FAILURE_REASON_TIMEOUT: + state = PaymentState_FAILED_TIMEOUT + + case lnrpc.PaymentFailureReason_FAILURE_REASON_NO_ROUTE: + state = PaymentState_FAILED_NO_ROUTE + + case lnrpc.PaymentFailureReason_FAILURE_REASON_ERROR: + state = PaymentState_FAILED_ERROR + + case lnrpc.PaymentFailureReason_FAILURE_REASON_INCORRECT_PAYMENT_DETAILS: + state = PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS + + case lnrpc.PaymentFailureReason_FAILURE_REASON_INSUFFICIENT_BALANCE: + state = PaymentState_FAILED_INSUFFICIENT_BALANCE + + default: + return fmt.Errorf("unknown failure reason %v", + p.FailureReason) + } + default: + return fmt.Errorf("unknown state %v", p.Status) + } + + preimage, err := hex.DecodeString(p.PaymentPreimage) + if err != nil { + return err + } + + legacyState := PaymentStatus{ + State: state, + Preimage: preimage, + Htlcs: p.Htlcs, + } + + return i.Router_TrackPaymentServer.Send(&legacyState) +} + +// TrackPayment returns a stream of payment state updates. The stream is +// closed when the payment completes. +func (s *Server) TrackPayment(request *TrackPaymentRequest, + stream Router_TrackPaymentServer) error { + + legacyStream := legacyTrackPaymentServer{ + Router_TrackPaymentServer: stream, + } + return s.TrackPaymentV2(request, &legacyStream) +} + +// SendPayment attempts to route a payment described by the passed +// PaymentRequest to the final destination. If we are unable to route the +// payment, or cannot find a route that satisfies the constraints in the +// PaymentRequest, then an error will be returned. Otherwise, the payment +// pre-image, along with the final route will be returned. +func (s *Server) SendPayment(request *SendPaymentRequest, + stream Router_SendPaymentServer) error { + + if request.MaxShards > 1 { + return errors.New("for multi-part payments, use SendPaymentV2") + } + + legacyStream := legacyTrackPaymentServer{ + Router_TrackPaymentServer: stream, + } + return s.SendPaymentV2(request, &legacyStream) +}