Merge pull request #259 from carlaKC/252-loopstates

looprpc: surface all failure reasons for failed swaps
pull/263/head
Carla Kirk-Cohen 4 years ago committed by GitHub
commit e2c54bd052
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -277,16 +277,22 @@ func parseAmt(text string) (btcutil.Amount, error) {
}
func logSwap(swap *looprpc.SwapStatus) {
// If our swap failed, we add our failure reason to the state.
swapState := fmt.Sprintf("%v", swap.State)
if swap.State == looprpc.SwapState_FAILED {
swapState = fmt.Sprintf("%v (%v)", swapState, swap.FailureReason)
}
if swap.Type == looprpc.SwapType_LOOP_OUT {
fmt.Printf("%v %v %v %v - %v",
time.Unix(0, swap.LastUpdateTime).Format(time.RFC3339),
swap.Type, swap.State, btcutil.Amount(swap.Amt),
swap.Type, swapState, btcutil.Amount(swap.Amt),
swap.HtlcAddressP2Wsh,
)
} else {
fmt.Printf("%v %v %v %v -",
time.Unix(0, swap.LastUpdateTime).Format(time.RFC3339),
swap.Type, swap.State, btcutil.Amount(swap.Amt))
swap.Type, swapState, btcutil.Amount(swap.Amt))
if swap.HtlcAddressP2Wsh != "" {
fmt.Printf(" P2WSH: %v", swap.HtlcAddressP2Wsh)
}

@ -121,20 +121,57 @@ func (s *swapClientServer) LoopOut(ctx context.Context,
func (s *swapClientServer) marshallSwap(loopSwap *loop.SwapInfo) (
*looprpc.SwapStatus, error) {
var state looprpc.SwapState
var (
state looprpc.SwapState
failureReason = looprpc.FailureReason_FAILURE_REASON_NONE
)
// Set our state var for non-failure states. If we get a failure, we
// will update our failure reason. To remain backwards compatible with
// previous versions where we squashed all failure reasons to a single
// failure state, we set a failure reason for all our different failure
// states, and set our failed state for all of them.
switch loopSwap.State {
case loopdb.StateInitiated:
state = looprpc.SwapState_INITIATED
case loopdb.StatePreimageRevealed:
state = looprpc.SwapState_PREIMAGE_REVEALED
case loopdb.StateHtlcPublished:
state = looprpc.SwapState_HTLC_PUBLISHED
case loopdb.StateInvoiceSettled:
state = looprpc.SwapState_INVOICE_SETTLED
case loopdb.StateSuccess:
state = looprpc.SwapState_SUCCESS
case loopdb.StateFailOffchainPayments:
failureReason = looprpc.FailureReason_FAILURE_REASON_OFFCHAIN
case loopdb.StateFailTimeout:
failureReason = looprpc.FailureReason_FAILURE_REASON_TIMEOUT
case loopdb.StateFailSweepTimeout:
failureReason = looprpc.FailureReason_FAILURE_REASON_SWEEP_TIMEOUT
case loopdb.StateFailInsufficientValue:
failureReason = looprpc.FailureReason_FAILURE_REASON_INSUFFICIENT_VALUE
case loopdb.StateFailTemporary:
failureReason = looprpc.FailureReason_FAILURE_REASON_TEMPORARY
case loopdb.StateFailIncorrectHtlcAmt:
failureReason = looprpc.FailureReason_FAILURE_REASON_INCORRECT_AMOUNT
default:
// Return less granular status over rpc.
return nil, fmt.Errorf("unknown swap state: %v", loopSwap.State)
}
// If we have a failure reason, we have a failure state, so should use
// our catchall failed state.
if failureReason != looprpc.FailureReason_FAILURE_REASON_NONE {
state = looprpc.SwapState_FAILED
}
@ -167,6 +204,7 @@ func (s *swapClientServer) marshallSwap(loopSwap *loop.SwapInfo) (
Id: loopSwap.SwapHash.String(),
IdBytes: loopSwap.SwapHash[:],
State: state,
FailureReason: failureReason,
InitiationTime: loopSwap.InitiationTime.UnixNano(),
LastUpdateTime: loopSwap.LastUpdate.UnixNano(),
HtlcAddress: htlcAddress,

@ -111,6 +111,70 @@ func (SwapState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_014de31d7ac8c57c, []int{1}
}
type FailureReason int32
const (
//
//FAILURE_REASON_NONE is set when the swap did not fail, it is either in
//progress or succeeded.
FailureReason_FAILURE_REASON_NONE FailureReason = 0
//
//FAILURE_REASON_OFFCHAIN indicates that a loop out failed because it wasn't
//possible to find a route for one or both off chain payments that met the fee
//and timelock limits required.
FailureReason_FAILURE_REASON_OFFCHAIN FailureReason = 1
//
//FAILURE_REASON_TIMEOUT indicates that the swap failed because on chain htlc
//did not confirm before its expiry, or it confirmed too late for us to reveal
//our preimage and claim.
FailureReason_FAILURE_REASON_TIMEOUT FailureReason = 2
//
//FAILURE_REASON_SWEEP_TIMEOUT indicates that a loop out permanently failed
//because the on chain htlc wasn't swept before the server revoked the
//htlc.
FailureReason_FAILURE_REASON_SWEEP_TIMEOUT FailureReason = 3
//
//FAILURE_REASON_INSUFFICIENT_VALUE indicates that a loop out has failed
//because the on chain htlc had a lower value than requested.
FailureReason_FAILURE_REASON_INSUFFICIENT_VALUE FailureReason = 4
//
//FAILURE_REASON_TEMPORARY indicates that a swap cannot continue due to an
//internal error. Manual intervention such as a restart is required.
FailureReason_FAILURE_REASON_TEMPORARY FailureReason = 5
//
//FAILURE_REASON_INCORRECT_AMOUNT indicates that a loop in permanently failed
//because the amount extended by an external loop in htlc is insufficient.
FailureReason_FAILURE_REASON_INCORRECT_AMOUNT FailureReason = 6
)
var FailureReason_name = map[int32]string{
0: "FAILURE_REASON_NONE",
1: "FAILURE_REASON_OFFCHAIN",
2: "FAILURE_REASON_TIMEOUT",
3: "FAILURE_REASON_SWEEP_TIMEOUT",
4: "FAILURE_REASON_INSUFFICIENT_VALUE",
5: "FAILURE_REASON_TEMPORARY",
6: "FAILURE_REASON_INCORRECT_AMOUNT",
}
var FailureReason_value = map[string]int32{
"FAILURE_REASON_NONE": 0,
"FAILURE_REASON_OFFCHAIN": 1,
"FAILURE_REASON_TIMEOUT": 2,
"FAILURE_REASON_SWEEP_TIMEOUT": 3,
"FAILURE_REASON_INSUFFICIENT_VALUE": 4,
"FAILURE_REASON_TEMPORARY": 5,
"FAILURE_REASON_INCORRECT_AMOUNT": 6,
}
func (x FailureReason) String() string {
return proto.EnumName(FailureReason_name, int32(x))
}
func (FailureReason) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_014de31d7ac8c57c, []int{2}
}
type LoopOutRequest struct {
//*
//Requested swap amount in sat. This does not include the swap and miner fee.
@ -540,6 +604,9 @@ type SwapStatus struct {
//*
//State the swap is currently in, see State enum.
State SwapState `protobuf:"varint,4,opt,name=state,proto3,enum=looprpc.SwapState" json:"state,omitempty"`
//
//A failure reason for the swap, only set if the swap has failed.
FailureReason FailureReason `protobuf:"varint,14,opt,name=failure_reason,json=failureReason,proto3,enum=looprpc.FailureReason" json:"failure_reason,omitempty"`
//*
//Initiation time of the swap.
InitiationTime int64 `protobuf:"varint,5,opt,name=initiation_time,json=initiationTime,proto3" json:"initiation_time,omitempty"`
@ -631,6 +698,13 @@ func (m *SwapStatus) GetState() SwapState {
return SwapState_INITIATED
}
func (m *SwapStatus) GetFailureReason() FailureReason {
if m != nil {
return m.FailureReason
}
return FailureReason_FAILURE_REASON_NONE
}
func (m *SwapStatus) GetInitiationTime() int64 {
if m != nil {
return m.InitiationTime
@ -1370,6 +1444,7 @@ func (m *LsatToken) GetStorageName() string {
func init() {
proto.RegisterEnum("looprpc.SwapType", SwapType_name, SwapType_value)
proto.RegisterEnum("looprpc.SwapState", SwapState_name, SwapState_value)
proto.RegisterEnum("looprpc.FailureReason", FailureReason_name, FailureReason_value)
proto.RegisterType((*LoopOutRequest)(nil), "looprpc.LoopOutRequest")
proto.RegisterType((*LoopInRequest)(nil), "looprpc.LoopInRequest")
proto.RegisterType((*SwapResponse)(nil), "looprpc.SwapResponse")
@ -1392,111 +1467,120 @@ func init() {
func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) }
var fileDescriptor_014de31d7ac8c57c = []byte{
// 1651 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6e, 0x23, 0x49,
0x15, 0xde, 0xf6, 0x4f, 0x6c, 0x1f, 0xb7, 0xdb, 0x9d, 0xca, 0xce, 0xc4, 0xb1, 0x40, 0xeb, 0x69,
0x76, 0x20, 0x1b, 0x56, 0x63, 0x36, 0x7b, 0xc5, 0x0a, 0x21, 0x65, 0x1c, 0xef, 0xc6, 0x51, 0x7e,
0x4c, 0xdb, 0x59, 0x09, 0x84, 0xd4, 0xaa, 0xd8, 0x95, 0xb8, 0x85, 0xbb, 0xab, 0xb7, 0xab, 0x3c,
0x93, 0x68, 0x85, 0x90, 0x78, 0x01, 0x2e, 0x78, 0x03, 0x5e, 0x83, 0x37, 0x40, 0xdc, 0x00, 0x0f,
0xc0, 0x0d, 0x37, 0xbc, 0x04, 0x42, 0x75, 0xaa, 0xbb, 0xdd, 0x9d, 0x38, 0x41, 0x5c, 0xec, 0x9d,
0xfb, 0xab, 0xaf, 0x4e, 0x9d, 0x9f, 0x3a, 0xe7, 0x2b, 0x83, 0x39, 0x5b, 0xfa, 0x2c, 0x94, 0x6f,
0xa2, 0x98, 0x4b, 0x4e, 0x6a, 0x4b, 0xce, 0xa3, 0x38, 0x9a, 0x75, 0xbf, 0x77, 0xcb, 0xf9, 0xed,
0x92, 0xf5, 0x69, 0xe4, 0xf7, 0x69, 0x18, 0x72, 0x49, 0xa5, 0xcf, 0x43, 0xa1, 0x69, 0xce, 0x5f,
0xca, 0x60, 0x9d, 0x71, 0x1e, 0x5d, 0xae, 0xa4, 0xcb, 0xbe, 0x59, 0x31, 0x21, 0x89, 0x0d, 0x65,
0x1a, 0xc8, 0x8e, 0xd1, 0x33, 0xf6, 0xcb, 0xae, 0xfa, 0x49, 0x08, 0x54, 0xe6, 0x4c, 0xc8, 0x4e,
0xa9, 0x67, 0xec, 0x37, 0x5c, 0xfc, 0x4d, 0xfa, 0xf0, 0x61, 0x40, 0xef, 0x3c, 0xf1, 0x9e, 0x46,
0x5e, 0xcc, 0x57, 0xd2, 0x0f, 0x6f, 0xbd, 0x1b, 0xc6, 0x3a, 0x65, 0xdc, 0xb6, 0x1d, 0xd0, 0xbb,
0xc9, 0x7b, 0x1a, 0xb9, 0x7a, 0xe5, 0x4b, 0xc6, 0xc8, 0xe7, 0xf0, 0x52, 0x6d, 0x88, 0x62, 0x16,
0xd1, 0xfb, 0xc2, 0x96, 0x0a, 0x6e, 0xd9, 0x09, 0xe8, 0xdd, 0x18, 0x17, 0x73, 0x9b, 0x7a, 0x60,
0x66, 0xa7, 0x28, 0x6a, 0x15, 0xa9, 0x90, 0x58, 0x57, 0x8c, 0x8f, 0xc1, 0xca, 0x99, 0x55, 0x8e,
0x6f, 0x21, 0xc7, 0xcc, 0xcc, 0x1d, 0x05, 0x92, 0x38, 0xd0, 0x52, 0xac, 0xc0, 0x0f, 0x59, 0x8c,
0x86, 0x6a, 0x48, 0x6a, 0x06, 0xf4, 0xee, 0x5c, 0x61, 0xca, 0xd2, 0xa7, 0x60, 0xab, 0x9c, 0x79,
0x7c, 0x25, 0xbd, 0xd9, 0x82, 0x86, 0x21, 0x5b, 0x76, 0xea, 0x3d, 0x63, 0xbf, 0xf2, 0xb6, 0xd4,
0x31, 0x5c, 0x6b, 0xa9, 0xb3, 0x34, 0xd0, 0x2b, 0xe4, 0x00, 0xb6, 0xf9, 0x4a, 0xde, 0x72, 0x15,
0x84, 0x62, 0x7b, 0x82, 0xc9, 0x4e, 0xb3, 0x57, 0xde, 0xaf, 0xb8, 0xed, 0x74, 0x41, 0x71, 0x27,
0x4c, 0x2a, 0xae, 0x78, 0xcf, 0x58, 0xe4, 0xcd, 0x78, 0x78, 0xe3, 0x49, 0x1a, 0xdf, 0x32, 0xd9,
0x69, 0xf4, 0x8c, 0xfd, 0xaa, 0xdb, 0xc6, 0x85, 0x01, 0x0f, 0x6f, 0xa6, 0x08, 0x93, 0x2f, 0x60,
0x0f, 0xa3, 0x8d, 0x56, 0xd7, 0x4b, 0x7f, 0x86, 0xb5, 0xf2, 0xe6, 0x8c, 0xce, 0x97, 0x7e, 0xc8,
0x3a, 0xa0, 0xdc, 0x71, 0x77, 0x15, 0x61, 0xbc, 0x5e, 0x3f, 0x4e, 0x96, 0x9d, 0xbf, 0x19, 0xd0,
0x52, 0xc5, 0x1c, 0x85, 0x4f, 0xd7, 0xf2, 0x61, 0x46, 0x4b, 0x8f, 0x32, 0xfa, 0x28, 0x57, 0xe5,
0xc7, 0xb9, 0xda, 0x83, 0xfa, 0x92, 0x0a, 0xe9, 0x2d, 0x78, 0x84, 0xe5, 0x33, 0xdd, 0x9a, 0xfa,
0x3e, 0xe1, 0x11, 0xf9, 0x01, 0xb4, 0xd8, 0x9d, 0x64, 0x71, 0x48, 0x97, 0xde, 0x42, 0x2e, 0x67,
0x58, 0xb3, 0xba, 0x6b, 0xa6, 0xe0, 0x89, 0x5c, 0xce, 0xc8, 0x3e, 0xd8, 0x6a, 0xad, 0x90, 0x90,
0x2d, 0x4c, 0x88, 0xa5, 0xf0, 0x75, 0x3e, 0x9c, 0x7f, 0x1b, 0x60, 0xe2, 0x4d, 0x62, 0x22, 0xe2,
0xa1, 0x60, 0x84, 0x40, 0xc9, 0x9f, 0x63, 0x44, 0x0d, 0x2c, 0x4c, 0xc9, 0x9f, 0x2b, 0x77, 0xfc,
0xb9, 0x77, 0x7d, 0x2f, 0x99, 0x40, 0x6f, 0x4d, 0xb7, 0xe6, 0xcf, 0xdf, 0xaa, 0x4f, 0xf2, 0x1a,
0x4c, 0x3c, 0x89, 0xce, 0xe7, 0x31, 0x13, 0x42, 0xdf, 0x61, 0xdc, 0xd8, 0x54, 0xf8, 0x91, 0x86,
0xc9, 0x1b, 0xd8, 0xc9, 0xd3, 0xbc, 0x30, 0x3a, 0x7c, 0x2f, 0x16, 0x18, 0x5b, 0xc3, 0xdd, 0xce,
0x31, 0x2f, 0x70, 0x81, 0x7c, 0x0a, 0xa4, 0xc0, 0xd7, 0xf4, 0x2a, 0xd2, 0xed, 0x1c, 0x7d, 0x8c,
0xec, 0xd7, 0x60, 0x09, 0x16, 0xbf, 0x63, 0xb1, 0x17, 0x30, 0x21, 0xe8, 0x2d, 0xc3, 0x60, 0x1b,
0x6e, 0x4b, 0xa3, 0xe7, 0x1a, 0x74, 0x6c, 0xb0, 0xce, 0x79, 0xe8, 0x4b, 0x1e, 0x27, 0xf5, 0x73,
0xfe, 0x59, 0x06, 0x50, 0xd1, 0x4f, 0x24, 0x95, 0x2b, 0xb1, 0xb1, 0x35, 0x55, 0x36, 0x4a, 0x4f,
0x66, 0xa3, 0xf9, 0x30, 0x1b, 0x15, 0x79, 0x1f, 0xe9, 0x92, 0x5a, 0x87, 0xdb, 0x6f, 0x92, 0x21,
0xf1, 0x46, 0x9d, 0x31, 0xbd, 0x8f, 0x98, 0x8b, 0xcb, 0x64, 0x1f, 0xaa, 0x42, 0x52, 0xa9, 0x5b,
0xd3, 0x3a, 0x24, 0x05, 0x9e, 0xf2, 0x85, 0xb9, 0x9a, 0x40, 0x7e, 0x04, 0x6d, 0x3f, 0xf4, 0xa5,
0xaf, 0x2f, 0xaa, 0xf4, 0x83, 0xb4, 0x47, 0xad, 0x35, 0x3c, 0xf5, 0x03, 0x65, 0xd2, 0xc6, 0x1b,
0xb3, 0x8a, 0xe6, 0x54, 0x32, 0xcd, 0xd4, 0x9d, 0x6a, 0x29, 0xfc, 0x0a, 0x61, 0x64, 0x3e, 0xac,
0x58, 0x6d, 0x73, 0xc5, 0x36, 0x57, 0xc0, 0x7c, 0xa2, 0x02, 0x4f, 0xd4, 0xb7, 0xf5, 0x54, 0x7d,
0x3f, 0x82, 0xe6, 0x8c, 0x0b, 0xe9, 0xe9, 0x02, 0xe1, 0x1c, 0x28, 0xbb, 0xa0, 0xa0, 0x09, 0x22,
0xe4, 0x15, 0x98, 0x48, 0xe0, 0xe1, 0x6c, 0x41, 0xfd, 0x10, 0xdb, 0xb9, 0xec, 0xe2, 0xa6, 0x4b,
0x0d, 0xa9, 0x4e, 0xd0, 0x94, 0x9b, 0x1b, 0xcd, 0x01, 0x3d, 0x99, 0x90, 0x93, 0x60, 0x0e, 0x01,
0xfb, 0xcc, 0x17, 0x52, 0x25, 0x56, 0xa4, 0x55, 0xff, 0x39, 0x6c, 0xe7, 0xb0, 0xe4, 0xde, 0x7f,
0x02, 0x55, 0xd5, 0xb4, 0xa2, 0x63, 0xf4, 0xca, 0xfb, 0xcd, 0xc3, 0x9d, 0x47, 0x35, 0x59, 0x09,
0x57, 0x33, 0x9c, 0x57, 0xd0, 0x56, 0xe0, 0x28, 0xbc, 0xe1, 0xe9, 0x20, 0xb0, 0xb2, 0xae, 0x31,
0xd5, 0x1d, 0x71, 0x2c, 0x30, 0xa7, 0x2c, 0x0e, 0xb2, 0x23, 0x7f, 0x07, 0xed, 0x51, 0x98, 0x20,
0xc9, 0x81, 0x3f, 0x84, 0x76, 0xe0, 0x87, 0x7a, 0x52, 0xd0, 0x80, 0xaf, 0x42, 0x99, 0x94, 0xb6,
0x15, 0xf8, 0xa1, 0xb2, 0x7f, 0x84, 0x20, 0xf2, 0xd2, 0x89, 0x92, 0xf0, 0xb6, 0x12, 0x9e, 0x1e,
0x2a, 0x9a, 0x77, 0x5a, 0xa9, 0x1b, 0x76, 0xe9, 0xb4, 0x52, 0x2f, 0xd9, 0xe5, 0xd3, 0x4a, 0xbd,
0x6c, 0x57, 0x4e, 0x2b, 0xf5, 0x8a, 0x5d, 0x3d, 0xad, 0xd4, 0x6b, 0x76, 0xdd, 0xf9, 0xab, 0x01,
0xf6, 0xe5, 0x4a, 0x7e, 0xa7, 0x2e, 0xa0, 0x58, 0xf8, 0xa1, 0x37, 0x5b, 0xca, 0x77, 0xde, 0x9c,
0x2d, 0x25, 0xc5, 0xc2, 0x56, 0x5d, 0x33, 0xf0, 0xc3, 0xc1, 0x52, 0xbe, 0x3b, 0x56, 0x58, 0x2a,
0x29, 0x39, 0x56, 0x23, 0x61, 0xd1, 0xbb, 0x8c, 0xf5, 0x3f, 0xc2, 0xf9, 0x93, 0x01, 0xe6, 0x2f,
0x56, 0x5c, 0xb2, 0xa7, 0x27, 0x31, 0x5e, 0xb1, 0xf5, 0xf8, 0x2b, 0xe1, 0x19, 0x30, 0x5b, 0x4b,
0xc1, 0xa3, 0x49, 0x5a, 0xde, 0x30, 0x49, 0x9f, 0xd5, 0x8b, 0xca, 0xf3, 0x7a, 0xf1, 0x07, 0x43,
0x55, 0x3d, 0x71, 0x33, 0x49, 0x79, 0x0f, 0xcc, 0x54, 0x1b, 0x3c, 0x41, 0x53, 0x87, 0x41, 0x68,
0x71, 0x98, 0x50, 0x54, 0x7e, 0x6c, 0x25, 0x3c, 0x51, 0x2c, 0x32, 0x66, 0xa2, 0xfc, 0x6a, 0x6d,
0xac, 0x97, 0x92, 0x0d, 0xdf, 0x07, 0xc8, 0xe5, 0xb2, 0x8a, 0x71, 0x36, 0x66, 0xb9, 0x44, 0xea,
0x14, 0x56, 0xec, 0xaa, 0xf3, 0x77, 0x7d, 0x0b, 0xfe, 0x5f, 0x97, 0x3e, 0x06, 0x6b, 0xfd, 0x00,
0x40, 0x8e, 0x96, 0x35, 0x33, 0x4a, 0x5f, 0x00, 0x8a, 0xf5, 0xe3, 0x64, 0x62, 0x68, 0x2d, 0x2e,
0xba, 0xdd, 0x56, 0x2b, 0x13, 0xb5, 0x90, 0x98, 0x44, 0xcd, 0x56, 0x79, 0xa5, 0xf7, 0x01, 0x0b,
0xa5, 0x87, 0x0f, 0x20, 0x2d, 0x75, 0x6d, 0xcc, 0xa7, 0xc6, 0x8f, 0x55, 0x6d, 0x9f, 0x0f, 0xd0,
0x69, 0x43, 0x6b, 0xca, 0x7f, 0xc3, 0xc2, 0xac, 0xd9, 0x7e, 0x06, 0x56, 0x0a, 0x24, 0x21, 0x1e,
0xc0, 0x96, 0x44, 0x24, 0xe9, 0xee, 0xf5, 0xc4, 0x3d, 0x13, 0x54, 0x22, 0xd9, 0x4d, 0x18, 0xce,
0x9f, 0x4b, 0xd0, 0xc8, 0x50, 0x75, 0x49, 0xae, 0xa9, 0x60, 0x5e, 0x40, 0x67, 0x34, 0xe6, 0x3c,
0x4c, 0x7a, 0xdc, 0x54, 0xe0, 0x79, 0x82, 0xa9, 0x61, 0x95, 0xc6, 0xb1, 0xa0, 0x62, 0x81, 0xd9,
0x31, 0xdd, 0x66, 0x82, 0x9d, 0x50, 0xb1, 0x20, 0x9f, 0x80, 0x9d, 0x52, 0xa2, 0x98, 0xf9, 0x81,
0x12, 0x29, 0x2d, 0xa5, 0xed, 0x04, 0x1f, 0x27, 0xb0, 0x1a, 0xe5, 0xba, 0xc9, 0xbc, 0x88, 0xfa,
0x73, 0x2f, 0x50, 0x59, 0xd4, 0x6f, 0x38, 0x4b, 0xe3, 0x63, 0xea, 0xcf, 0xcf, 0x05, 0x95, 0xe4,
0x33, 0x78, 0x91, 0x7b, 0xe8, 0xe5, 0xe8, 0xba, 0x8b, 0x49, 0x9c, 0xbd, 0xf4, 0xb2, 0x2d, 0xaf,
0xc0, 0x54, 0xda, 0xe0, 0xcd, 0x62, 0x46, 0x25, 0x9b, 0x27, 0x7d, 0xdc, 0x54, 0xd8, 0x40, 0x43,
0xa4, 0x03, 0x35, 0x76, 0x17, 0xf9, 0x31, 0x9b, 0xa3, 0x36, 0xd4, 0xdd, 0xf4, 0x53, 0x6d, 0x16,
0x92, 0xc7, 0xf4, 0x96, 0x79, 0x21, 0x0d, 0x18, 0x76, 0x77, 0xc3, 0x6d, 0x26, 0xd8, 0x05, 0x0d,
0xd8, 0xc1, 0x6b, 0xa8, 0xa7, 0x62, 0x47, 0x4c, 0xa8, 0x9f, 0x5d, 0x5e, 0x8e, 0xbd, 0xcb, 0xab,
0xa9, 0xfd, 0x01, 0x69, 0x42, 0x0d, 0xbf, 0x46, 0x17, 0xb6, 0x71, 0x20, 0xa0, 0x91, 0x69, 0x1d,
0x69, 0x41, 0x63, 0x74, 0x31, 0x9a, 0x8e, 0x8e, 0xa6, 0xc3, 0x63, 0xfb, 0x03, 0xf2, 0x02, 0xb6,
0xc7, 0xee, 0x70, 0x74, 0x7e, 0xf4, 0xd5, 0xd0, 0x73, 0x87, 0x5f, 0x0f, 0x8f, 0xce, 0x86, 0xc7,
0xb6, 0x41, 0x08, 0x58, 0x27, 0xd3, 0xb3, 0x81, 0x37, 0xbe, 0x7a, 0x7b, 0x36, 0x9a, 0x9c, 0x0c,
0x8f, 0xed, 0x92, 0xb2, 0x39, 0xb9, 0x1a, 0x0c, 0x86, 0x93, 0x89, 0x5d, 0x26, 0x00, 0x5b, 0x5f,
0x1e, 0x8d, 0x14, 0xb9, 0x42, 0x76, 0xa0, 0x3d, 0xba, 0xf8, 0xfa, 0x72, 0x34, 0x18, 0x7a, 0x93,
0xe1, 0x74, 0xaa, 0xc0, 0xea, 0xe1, 0x7f, 0xb6, 0xb4, 0xda, 0x0f, 0xf0, 0x21, 0x4f, 0x5c, 0xa8,
0x25, 0x4f, 0x73, 0xb2, 0xbb, 0xbe, 0x0f, 0x85, 0xc7, 0x7a, 0xf7, 0x45, 0x41, 0x06, 0xd2, 0xfb,
0xe4, 0xec, 0xfe, 0xfe, 0x1f, 0xff, 0xfa, 0x63, 0x69, 0xdb, 0x31, 0xfb, 0xef, 0x3e, 0xeb, 0x2b,
0x46, 0x9f, 0xaf, 0xe4, 0x17, 0xc6, 0x01, 0xb9, 0x84, 0x2d, 0xfd, 0x42, 0x24, 0x2f, 0x0b, 0x26,
0xb3, 0x27, 0xe3, 0x53, 0x16, 0x5f, 0xa2, 0x45, 0xdb, 0x69, 0x66, 0x16, 0xfd, 0x50, 0x19, 0xfc,
0x29, 0xd4, 0x92, 0x37, 0x4b, 0xce, 0xc9, 0xe2, 0x2b, 0xa6, 0xbb, 0x49, 0xab, 0x7e, 0x62, 0x90,
0x5f, 0x41, 0x23, 0x93, 0x39, 0xb2, 0xb7, 0x76, 0xe7, 0x81, 0x1c, 0x76, 0xbb, 0x9b, 0x96, 0x8a,
0x6e, 0x11, 0x2b, 0x73, 0x0b, 0x25, 0x90, 0x5c, 0xe9, 0x32, 0x2b, 0x09, 0x24, 0x9d, 0xc2, 0xf1,
0x39, 0x55, 0xdc, 0xe8, 0x98, 0xd3, 0x45, 0x93, 0x1f, 0x12, 0x52, 0x30, 0xd9, 0xff, 0xd6, 0x9f,
0xff, 0x96, 0xfc, 0x1a, 0xcc, 0xa4, 0x00, 0x28, 0x54, 0x64, 0x9d, 0xac, 0xbc, 0x9a, 0x76, 0xd7,
0xc1, 0x3c, 0x94, 0xb4, 0x0d, 0xd6, 0xf9, 0x4a, 0xf6, 0x25, 0x5a, 0xbb, 0xce, 0xac, 0xe3, 0x00,
0xcc, 0x59, 0xcf, 0x4b, 0x49, 0xd1, 0x7a, 0x61, 0x54, 0x3a, 0x3d, 0xb4, 0xde, 0x25, 0x9d, 0x82,
0xf5, 0x6f, 0x14, 0xa7, 0xff, 0x2d, 0x0d, 0xa4, 0x8a, 0xc0, 0xfa, 0x8a, 0x49, 0x5d, 0xf2, 0x67,
0x63, 0x58, 0x67, 0xed, 0xc1, 0xc3, 0xc0, 0xd9, 0xc3, 0x43, 0x76, 0xc8, 0x76, 0xee, 0x2a, 0x64,
0x11, 0xac, 0xad, 0x3f, 0x1b, 0x43, 0xde, 0x7a, 0x31, 0x84, 0x8f, 0xd0, 0xfa, 0x1e, 0xd9, 0xcd,
0x5b, 0xcf, 0x47, 0xf0, 0x4b, 0x68, 0xa9, 0x33, 0xd2, 0x09, 0x28, 0x72, 0x37, 0xb9, 0x30, 0x66,
0xbb, 0xbb, 0x8f, 0xf0, 0x62, 0x77, 0x90, 0x36, 0x1e, 0x21, 0xa8, 0xec, 0xeb, 0xd1, 0x7a, 0xbd,
0x85, 0x7f, 0x8a, 0x3f, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x67, 0x1f, 0xc0, 0xa6, 0x4b,
0x0f, 0x00, 0x00,
// 1803 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xdd, 0x6e, 0x23, 0x49,
0x15, 0x1e, 0xff, 0xc5, 0xf6, 0x71, 0xbb, 0xdd, 0xa9, 0xec, 0x24, 0x8e, 0x19, 0x34, 0x9e, 0xde,
0x1d, 0xc8, 0x86, 0xd5, 0x98, 0xcd, 0x5e, 0xb1, 0x02, 0x24, 0x8f, 0xd3, 0xd9, 0x38, 0x4a, 0x6c,
0xd3, 0x76, 0x06, 0x2d, 0x42, 0x6a, 0x55, 0xec, 0x4a, 0xdc, 0xc2, 0xfd, 0xb3, 0x5d, 0xe5, 0x99,
0x44, 0x2b, 0x84, 0xc4, 0x0b, 0x70, 0xc1, 0x3d, 0x17, 0xbc, 0x06, 0x6f, 0x80, 0xb8, 0x01, 0x5e,
0x81, 0x1b, 0x2e, 0x78, 0x05, 0x84, 0xea, 0x54, 0xbb, 0xdd, 0xed, 0xfc, 0x20, 0x2e, 0xb8, 0x4b,
0x7f, 0xe7, 0xab, 0x53, 0xe7, 0xa7, 0xce, 0x8f, 0x03, 0xda, 0x74, 0xe1, 0x32, 0x5f, 0xbc, 0x09,
0xa3, 0x40, 0x04, 0xa4, 0xbc, 0x08, 0x82, 0x30, 0x0a, 0xa7, 0xad, 0x17, 0x37, 0x41, 0x70, 0xb3,
0x60, 0x1d, 0x1a, 0xba, 0x1d, 0xea, 0xfb, 0x81, 0xa0, 0xc2, 0x0d, 0x7c, 0xae, 0x68, 0xe6, 0x9f,
0x0b, 0xa0, 0x9f, 0x07, 0x41, 0x38, 0x5c, 0x0a, 0x9b, 0x7d, 0xb3, 0x64, 0x5c, 0x10, 0x03, 0x0a,
0xd4, 0x13, 0xcd, 0x5c, 0x3b, 0x77, 0x50, 0xb0, 0xe5, 0x9f, 0x84, 0x40, 0x71, 0xc6, 0xb8, 0x68,
0xe6, 0xdb, 0xb9, 0x83, 0xaa, 0x8d, 0x7f, 0x93, 0x0e, 0x7c, 0xe4, 0xd1, 0x5b, 0x87, 0x7f, 0xa0,
0xa1, 0x13, 0x05, 0x4b, 0xe1, 0xfa, 0x37, 0xce, 0x35, 0x63, 0xcd, 0x02, 0x1e, 0xdb, 0xf6, 0xe8,
0xed, 0xf8, 0x03, 0x0d, 0x6d, 0x25, 0x39, 0x61, 0x8c, 0x7c, 0x01, 0xbb, 0xf2, 0x40, 0x18, 0xb1,
0x90, 0xde, 0x65, 0x8e, 0x14, 0xf1, 0xc8, 0x8e, 0x47, 0x6f, 0x47, 0x28, 0x4c, 0x1d, 0x6a, 0x83,
0x96, 0xdc, 0x22, 0xa9, 0x25, 0xa4, 0x42, 0xac, 0x5d, 0x32, 0x3e, 0x01, 0x3d, 0xa5, 0x56, 0x1a,
0xbe, 0x85, 0x1c, 0x2d, 0x51, 0xd7, 0xf5, 0x04, 0x31, 0xa1, 0x2e, 0x59, 0x9e, 0xeb, 0xb3, 0x08,
0x15, 0x95, 0x91, 0x54, 0xf3, 0xe8, 0xed, 0x85, 0xc4, 0xa4, 0xa6, 0xcf, 0xc0, 0x90, 0x31, 0x73,
0x82, 0xa5, 0x70, 0xa6, 0x73, 0xea, 0xfb, 0x6c, 0xd1, 0xac, 0xb4, 0x73, 0x07, 0xc5, 0xb7, 0xf9,
0x66, 0xce, 0xd6, 0x17, 0x2a, 0x4a, 0x3d, 0x25, 0x21, 0x87, 0xb0, 0x1d, 0x2c, 0xc5, 0x4d, 0x20,
0x9d, 0x90, 0x6c, 0x87, 0x33, 0xd1, 0xac, 0xb5, 0x0b, 0x07, 0x45, 0xbb, 0xb1, 0x12, 0x48, 0xee,
0x98, 0x09, 0xc9, 0xe5, 0x1f, 0x18, 0x0b, 0x9d, 0x69, 0xe0, 0x5f, 0x3b, 0x82, 0x46, 0x37, 0x4c,
0x34, 0xab, 0xed, 0xdc, 0x41, 0xc9, 0x6e, 0xa0, 0xa0, 0x17, 0xf8, 0xd7, 0x13, 0x84, 0xc9, 0x97,
0xb0, 0x8f, 0xde, 0x86, 0xcb, 0xab, 0x85, 0x3b, 0xc5, 0x5c, 0x39, 0x33, 0x46, 0x67, 0x0b, 0xd7,
0x67, 0x4d, 0x90, 0xe6, 0xd8, 0x7b, 0x92, 0x30, 0x5a, 0xcb, 0x8f, 0x63, 0xb1, 0xf9, 0xd7, 0x1c,
0xd4, 0x65, 0x32, 0xfb, 0xfe, 0xe3, 0xb9, 0xdc, 0x8c, 0x68, 0xfe, 0x5e, 0x44, 0xef, 0xc5, 0xaa,
0x70, 0x3f, 0x56, 0xfb, 0x50, 0x59, 0x50, 0x2e, 0x9c, 0x79, 0x10, 0x62, 0xfa, 0x34, 0xbb, 0x2c,
0xbf, 0x4f, 0x83, 0x90, 0x7c, 0x0c, 0x75, 0x76, 0x2b, 0x58, 0xe4, 0xd3, 0x85, 0x33, 0x17, 0x8b,
0x29, 0xe6, 0xac, 0x62, 0x6b, 0x2b, 0xf0, 0x54, 0x2c, 0xa6, 0xe4, 0x00, 0x0c, 0x29, 0xcb, 0x04,
0x64, 0x0b, 0x03, 0xa2, 0x4b, 0x7c, 0x1d, 0x0f, 0xf3, 0x9f, 0x39, 0xd0, 0xf0, 0x25, 0x31, 0x1e,
0x06, 0x3e, 0x67, 0x84, 0x40, 0xde, 0x9d, 0xa1, 0x47, 0x55, 0x4c, 0x4c, 0xde, 0x9d, 0x49, 0x73,
0xdc, 0x99, 0x73, 0x75, 0x27, 0x18, 0x47, 0x6b, 0x35, 0xbb, 0xec, 0xce, 0xde, 0xca, 0x4f, 0xf2,
0x1a, 0x34, 0xbc, 0x89, 0xce, 0x66, 0x11, 0xe3, 0x5c, 0xbd, 0x61, 0x3c, 0x58, 0x93, 0x78, 0x57,
0xc1, 0xe4, 0x0d, 0xec, 0xa4, 0x69, 0x8e, 0x1f, 0x1e, 0x7d, 0xe0, 0x73, 0xf4, 0xad, 0x6a, 0x6f,
0xa7, 0x98, 0x03, 0x14, 0x90, 0xcf, 0x80, 0x64, 0xf8, 0x8a, 0x5e, 0x42, 0xba, 0x91, 0xa2, 0x8f,
0x90, 0xfd, 0x1a, 0x74, 0xce, 0xa2, 0xf7, 0x2c, 0x72, 0x3c, 0xc6, 0x39, 0xbd, 0x61, 0xe8, 0x6c,
0xd5, 0xae, 0x2b, 0xf4, 0x42, 0x81, 0xa6, 0x01, 0xfa, 0x45, 0xe0, 0xbb, 0x22, 0x88, 0xe2, 0xfc,
0x99, 0x7f, 0x28, 0x02, 0x48, 0xef, 0xc7, 0x82, 0x8a, 0x25, 0x7f, 0xb0, 0x34, 0x65, 0x34, 0xf2,
0x8f, 0x46, 0xa3, 0xb6, 0x19, 0x8d, 0xa2, 0xb8, 0x0b, 0x55, 0x4a, 0xf5, 0xa3, 0xed, 0x37, 0x71,
0x93, 0x78, 0x23, 0xef, 0x98, 0xdc, 0x85, 0xcc, 0x46, 0x31, 0x39, 0x80, 0x12, 0x17, 0x54, 0xa8,
0xd2, 0xd4, 0x8f, 0x48, 0x86, 0x27, 0x6d, 0x61, 0xb6, 0x22, 0x90, 0x9f, 0x80, 0x7e, 0x4d, 0xdd,
0xc5, 0x32, 0x62, 0x4e, 0xc4, 0x28, 0x0f, 0xfc, 0xa6, 0x8e, 0x47, 0x76, 0x93, 0x23, 0x27, 0x4a,
0x6c, 0xa3, 0xd4, 0xae, 0x5f, 0xa7, 0x3f, 0xc9, 0xf7, 0xa1, 0xe1, 0xfa, 0xae, 0x70, 0xd5, 0x3b,
0x17, 0xae, 0xb7, 0x2a, 0x71, 0x7d, 0x0d, 0x4f, 0x5c, 0x4f, 0x5a, 0x64, 0xe0, 0x83, 0x5b, 0x86,
0x33, 0x2a, 0x98, 0x62, 0xaa, 0x42, 0xd7, 0x25, 0x7e, 0x89, 0x30, 0x32, 0x37, 0x13, 0x5e, 0x7e,
0x38, 0xe1, 0x0f, 0x27, 0x50, 0x7b, 0x24, 0x81, 0x8f, 0x3c, 0x8f, 0xfa, 0x63, 0xcf, 0xe3, 0x25,
0xd4, 0xa6, 0x01, 0x17, 0x8e, 0xca, 0x2f, 0xb6, 0x91, 0x82, 0x0d, 0x12, 0x1a, 0x23, 0x42, 0x5e,
0x81, 0x86, 0x84, 0xc0, 0x9f, 0xce, 0xa9, 0xeb, 0x63, 0x37, 0x28, 0xd8, 0x78, 0x68, 0xa8, 0x20,
0x59, 0x48, 0x8a, 0x72, 0x7d, 0xad, 0x38, 0xa0, 0x1a, 0x1b, 0x72, 0x62, 0xcc, 0x24, 0x60, 0x9c,
0xbb, 0x5c, 0xc8, 0xbc, 0xf0, 0xd5, 0xa3, 0xf9, 0x29, 0x6c, 0xa7, 0xb0, 0xb8, 0x6c, 0x3e, 0x85,
0x92, 0xac, 0x79, 0xde, 0xcc, 0xb5, 0x0b, 0x07, 0xb5, 0xa3, 0x9d, 0x7b, 0x29, 0x5d, 0x72, 0x5b,
0x31, 0xcc, 0x57, 0xd0, 0x90, 0x60, 0xdf, 0xbf, 0x0e, 0x56, 0x7d, 0x44, 0x4f, 0x8a, 0x4e, 0x93,
0x4f, 0xcc, 0xd4, 0x41, 0x9b, 0xb0, 0xc8, 0x4b, 0xae, 0xfc, 0x0d, 0x34, 0xfa, 0x7e, 0x8c, 0xc4,
0x17, 0x7e, 0x0f, 0x1a, 0x9e, 0xeb, 0xab, 0x46, 0x43, 0xbd, 0x60, 0xe9, 0x8b, 0x38, 0xb5, 0x75,
0xcf, 0xf5, 0xa5, 0xfe, 0x2e, 0x82, 0xc8, 0x5b, 0x35, 0xa4, 0x98, 0xb7, 0x15, 0xf3, 0x54, 0x4f,
0x52, 0xbc, 0xb3, 0x62, 0x25, 0x67, 0xe4, 0xcf, 0x8a, 0x95, 0xbc, 0x51, 0x38, 0x2b, 0x56, 0x0a,
0x46, 0xf1, 0xac, 0x58, 0x29, 0x1a, 0xa5, 0xb3, 0x62, 0xa5, 0x6c, 0x54, 0xcc, 0xbf, 0xe4, 0xc0,
0x18, 0x2e, 0xc5, 0xff, 0xd5, 0x04, 0x9c, 0x35, 0xae, 0xef, 0x4c, 0x17, 0xe2, 0xbd, 0x33, 0x63,
0x0b, 0x41, 0x31, 0xb1, 0x25, 0x5b, 0xf3, 0x5c, 0xbf, 0xb7, 0x10, 0xef, 0x8f, 0x25, 0xb6, 0x9a,
0x48, 0x29, 0x56, 0x35, 0x66, 0xd1, 0xdb, 0x84, 0xf5, 0x5f, 0xdc, 0xf9, 0x63, 0x0e, 0xb4, 0x9f,
0x2d, 0x03, 0xc1, 0x1e, 0x6f, 0xe4, 0xf8, 0xc4, 0xd6, 0xdd, 0x33, 0x8f, 0x77, 0xc0, 0x74, 0x3d,
0x49, 0xee, 0x35, 0xe2, 0xc2, 0x03, 0x8d, 0xf8, 0xc9, 0x71, 0x53, 0x7c, 0x7a, 0xdc, 0xfc, 0x2e,
0x27, 0xb3, 0x1e, 0x9b, 0x19, 0x87, 0xbc, 0x0d, 0xda, 0x6a, 0xb4, 0x38, 0x9c, 0xae, 0x0c, 0x06,
0xae, 0x66, 0xcb, 0x98, 0xe2, 0xe2, 0x80, 0xa5, 0x84, 0x37, 0xf2, 0x79, 0xc2, 0x8c, 0x17, 0x07,
0x29, 0x1b, 0x29, 0x51, 0x7c, 0xe0, 0xbb, 0x00, 0xa9, 0x58, 0x96, 0xd0, 0xcf, 0xea, 0x34, 0x15,
0x48, 0x15, 0xc2, 0xa2, 0x51, 0x32, 0xff, 0xa6, 0x5e, 0xc1, 0xff, 0x6a, 0xd2, 0x27, 0xa0, 0xaf,
0xf7, 0x07, 0xe4, 0xa8, 0xa9, 0xa8, 0x85, 0xab, 0x05, 0x42, 0xb2, 0x7e, 0x10, 0x77, 0x0c, 0x35,
0xca, 0xb3, 0x66, 0x37, 0xa4, 0x64, 0x2c, 0x05, 0xb1, 0x4a, 0x1c, 0xf9, 0x32, 0xae, 0xf4, 0xce,
0x63, 0xbe, 0x70, 0x70, 0x7f, 0x52, 0x93, 0xb2, 0x81, 0xf1, 0x54, 0xf8, 0xb1, 0xcc, 0xed, 0xd3,
0x0e, 0x9a, 0x0d, 0xa8, 0x4f, 0x82, 0x5f, 0x31, 0x3f, 0x29, 0xb6, 0x1f, 0x83, 0xbe, 0x02, 0x62,
0x17, 0x0f, 0x61, 0x4b, 0x20, 0x12, 0x57, 0xf7, 0xba, 0x61, 0x9f, 0x73, 0x2a, 0x90, 0x6c, 0xc7,
0x0c, 0xf3, 0x4f, 0x79, 0xa8, 0x26, 0xa8, 0x7c, 0x24, 0x57, 0x94, 0x33, 0xc7, 0xa3, 0x53, 0x1a,
0x05, 0x81, 0x1f, 0xd7, 0xb8, 0x26, 0xc1, 0x8b, 0x18, 0x93, 0xcd, 0x6a, 0xe5, 0xc7, 0x9c, 0xf2,
0x39, 0x46, 0x47, 0xb3, 0x6b, 0x31, 0x76, 0x4a, 0xf9, 0x9c, 0x7c, 0x0a, 0xc6, 0x8a, 0x12, 0x46,
0xcc, 0xf5, 0xe4, 0x8c, 0x53, 0x93, 0xb8, 0x11, 0xe3, 0xa3, 0x18, 0x96, 0xad, 0x5c, 0x15, 0x99,
0x13, 0x52, 0x77, 0xe6, 0x78, 0x32, 0x8a, 0x6a, 0x05, 0xd4, 0x15, 0x3e, 0xa2, 0xee, 0xec, 0x82,
0x53, 0x41, 0x3e, 0x87, 0xe7, 0xa9, 0x3d, 0x31, 0x45, 0x57, 0x55, 0x4c, 0xa2, 0x64, 0x51, 0x4c,
0x8e, 0xbc, 0x02, 0x4d, 0xce, 0x06, 0x67, 0x1a, 0x31, 0x2a, 0xd8, 0x2c, 0xae, 0xe3, 0x9a, 0xc4,
0x7a, 0x0a, 0x22, 0x4d, 0x28, 0xb3, 0xdb, 0xd0, 0x8d, 0xd8, 0x0c, 0x67, 0x43, 0xc5, 0x5e, 0x7d,
0xca, 0xc3, 0x5c, 0x04, 0x11, 0xbd, 0x61, 0x8e, 0x4f, 0x3d, 0x86, 0xd5, 0x5d, 0xb5, 0x6b, 0x31,
0x36, 0xa0, 0x1e, 0x3b, 0x7c, 0x0d, 0x95, 0xd5, 0xac, 0x24, 0x1a, 0x54, 0xce, 0x87, 0xc3, 0x91,
0x33, 0xbc, 0x9c, 0x18, 0xcf, 0x48, 0x0d, 0xca, 0xf8, 0xd5, 0x1f, 0x18, 0xb9, 0x43, 0x0e, 0xd5,
0x64, 0x54, 0x92, 0x3a, 0x54, 0xfb, 0x83, 0xfe, 0xa4, 0xdf, 0x9d, 0x58, 0xc7, 0xc6, 0x33, 0xf2,
0x1c, 0xb6, 0x47, 0xb6, 0xd5, 0xbf, 0xe8, 0x7e, 0x65, 0x39, 0xb6, 0xf5, 0xce, 0xea, 0x9e, 0x5b,
0xc7, 0x46, 0x8e, 0x10, 0xd0, 0x4f, 0x27, 0xe7, 0x3d, 0x67, 0x74, 0xf9, 0xf6, 0xbc, 0x3f, 0x3e,
0xb5, 0x8e, 0x8d, 0xbc, 0xd4, 0x39, 0xbe, 0xec, 0xf5, 0xac, 0xf1, 0xd8, 0x28, 0x10, 0x80, 0xad,
0x93, 0x6e, 0x5f, 0x92, 0x8b, 0x64, 0x07, 0x1a, 0xfd, 0xc1, 0xbb, 0x61, 0xbf, 0x67, 0x39, 0x63,
0x6b, 0x32, 0x91, 0x60, 0xe9, 0xf0, 0x5f, 0x39, 0xa8, 0x67, 0xa6, 0x2d, 0xd9, 0x83, 0x1d, 0x79,
0xe4, 0xd2, 0x96, 0x37, 0x75, 0xc7, 0xc3, 0x81, 0x33, 0x18, 0x0e, 0x2c, 0xe3, 0x19, 0xf9, 0x0e,
0xec, 0x6d, 0x08, 0x86, 0x27, 0x27, 0xbd, 0xd3, 0xae, 0x34, 0x9e, 0xb4, 0x60, 0x77, 0x43, 0x38,
0xe9, 0x5f, 0x58, 0xd2, 0xcb, 0x3c, 0x69, 0xc3, 0x8b, 0x0d, 0xd9, 0xf8, 0xe7, 0x96, 0x35, 0x4a,
0x18, 0x05, 0xf2, 0x1a, 0x5e, 0x6d, 0x30, 0xfa, 0x83, 0xf1, 0xe5, 0xc9, 0x49, 0xbf, 0xd7, 0xb7,
0x06, 0x13, 0xe7, 0x5d, 0xf7, 0xfc, 0xd2, 0x32, 0x8a, 0xe4, 0x05, 0x34, 0x37, 0x2f, 0xb1, 0x2e,
0x46, 0x43, 0xbb, 0x6b, 0x7f, 0x6d, 0x94, 0xc8, 0xc7, 0xf0, 0xf2, 0x9e, 0x92, 0xde, 0xd0, 0xb6,
0xad, 0xde, 0xc4, 0xe9, 0x5e, 0x0c, 0x2f, 0x07, 0x13, 0x63, 0xeb, 0xe8, 0xdf, 0x5b, 0x6a, 0x39,
0xea, 0xe1, 0xef, 0x1e, 0x62, 0x43, 0x39, 0xfe, 0x25, 0x43, 0xf6, 0xd6, 0xef, 0x3f, 0xf3, 0xdb,
0xa6, 0xf5, 0x3c, 0x33, 0xf6, 0x56, 0xf5, 0x63, 0xee, 0xfd, 0xf6, 0xef, 0xff, 0xf8, 0x7d, 0x7e,
0xdb, 0xd4, 0x3a, 0xef, 0x3f, 0xef, 0x48, 0x46, 0x27, 0x58, 0x8a, 0x2f, 0x73, 0x87, 0x64, 0x08,
0x5b, 0x6a, 0xa1, 0x26, 0xbb, 0x19, 0x95, 0xc9, 0x86, 0xfd, 0x98, 0xc6, 0x5d, 0xd4, 0x68, 0x98,
0xb5, 0x44, 0xa3, 0xeb, 0x4b, 0x85, 0x3f, 0x82, 0x72, 0xbc, 0xe2, 0xa5, 0x8c, 0xcc, 0x2e, 0x7d,
0xad, 0x87, 0x66, 0xf3, 0x0f, 0x73, 0xe4, 0x17, 0x50, 0x4d, 0xc6, 0x3a, 0xd9, 0x5f, 0x9b, 0xb3,
0x31, 0xfe, 0x5b, 0xad, 0x87, 0x44, 0x59, 0xb3, 0x88, 0x9e, 0x98, 0x85, 0x23, 0x9f, 0x5c, 0xaa,
0x67, 0x2d, 0x47, 0x3e, 0x69, 0x66, 0xae, 0x4f, 0x6d, 0x01, 0x0f, 0x1a, 0x66, 0xb6, 0x50, 0xe5,
0x47, 0x84, 0x64, 0x54, 0x76, 0xbe, 0x75, 0x67, 0xbf, 0x26, 0xbf, 0x04, 0x2d, 0x4e, 0x00, 0x0e,
0x66, 0xb2, 0x0e, 0x56, 0x7a, 0x7b, 0x68, 0xad, 0x9d, 0xd9, 0x1c, 0xe1, 0x0f, 0x68, 0x0f, 0x96,
0xa2, 0x23, 0x50, 0xdb, 0x55, 0xa2, 0x1d, 0x1b, 0x7e, 0x4a, 0x7b, 0x7a, 0x74, 0x66, 0xb5, 0x67,
0x46, 0x83, 0xd9, 0x46, 0xed, 0x2d, 0xd2, 0xcc, 0x68, 0xff, 0x46, 0x72, 0x3a, 0xdf, 0x52, 0x4f,
0x48, 0x0f, 0xf4, 0xaf, 0x98, 0x50, 0x29, 0x7f, 0xd2, 0x87, 0x75, 0xd4, 0x36, 0x16, 0x21, 0x73,
0x1f, 0x2f, 0xd9, 0x21, 0xdb, 0xa9, 0xa7, 0x90, 0x78, 0xb0, 0xd6, 0xfe, 0xa4, 0x0f, 0x69, 0xed,
0x59, 0x17, 0x5e, 0xa2, 0xf6, 0x7d, 0xb2, 0x97, 0xd6, 0x9e, 0xf6, 0xe0, 0x6b, 0xa8, 0xcb, 0x3b,
0x56, 0x1d, 0x9f, 0xa7, 0x5e, 0x72, 0x66, 0xac, 0xb4, 0xf6, 0xee, 0xe1, 0xd9, 0xea, 0x20, 0x0d,
0xbc, 0x82, 0x53, 0xd1, 0x51, 0xa3, 0xe4, 0x6a, 0x0b, 0xff, 0x87, 0xf0, 0xc5, 0x7f, 0x02, 0x00,
0x00, 0xff, 0xff, 0xbf, 0xed, 0xab, 0x0a, 0x7a, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

@ -311,6 +311,11 @@ message SwapStatus {
*/
SwapState state = 4;
/*
A failure reason for the swap, only set if the swap has failed.
*/
FailureReason failure_reason = 14;
/**
Initiation time of the swap.
*/
@ -392,12 +397,59 @@ enum SwapState {
FAILED = 4;
/**
INVOICE_SETTLED is reached when the swap invoice in a loop in swap has been
paid, but we are still waiting for the htlc spend to confirm.
*/
INVOICE_SETTLED is reached when the swap invoice in a loop in swap has been
paid, but we are still waiting for the htlc spend to confirm.
*/
INVOICE_SETTLED = 5;
}
enum FailureReason{
/*
FAILURE_REASON_NONE is set when the swap did not fail, it is either in
progress or succeeded.
*/
FAILURE_REASON_NONE = 0;
/*
FAILURE_REASON_OFFCHAIN indicates that a loop out failed because it wasn't
possible to find a route for one or both off chain payments that met the fee
and timelock limits required.
*/
FAILURE_REASON_OFFCHAIN = 1;
/*
FAILURE_REASON_TIMEOUT indicates that the swap failed because on chain htlc
did not confirm before its expiry, or it confirmed too late for us to reveal
our preimage and claim.
*/
FAILURE_REASON_TIMEOUT = 2;
/*
FAILURE_REASON_SWEEP_TIMEOUT indicates that a loop out permanently failed
because the on chain htlc wasn't swept before the server revoked the
htlc.
*/
FAILURE_REASON_SWEEP_TIMEOUT = 3;
/*
FAILURE_REASON_INSUFFICIENT_VALUE indicates that a loop out has failed
because the on chain htlc had a lower value than requested.
*/
FAILURE_REASON_INSUFFICIENT_VALUE = 4;
/*
FAILURE_REASON_TEMPORARY indicates that a swap cannot continue due to an
internal error. Manual intervention such as a restart is required.
*/
FAILURE_REASON_TEMPORARY = 5;
/*
FAILURE_REASON_INCORRECT_AMOUNT indicates that a loop in permanently failed
because the amount extended by an external loop in htlc is insufficient.
*/
FAILURE_REASON_INCORRECT_AMOUNT = 6;
}
message ListSwapsRequest {
}

@ -318,6 +318,20 @@
}
},
"definitions": {
"looprpcFailureReason": {
"type": "string",
"enum": [
"FAILURE_REASON_NONE",
"FAILURE_REASON_OFFCHAIN",
"FAILURE_REASON_TIMEOUT",
"FAILURE_REASON_SWEEP_TIMEOUT",
"FAILURE_REASON_INSUFFICIENT_VALUE",
"FAILURE_REASON_TEMPORARY",
"FAILURE_REASON_INCORRECT_AMOUNT"
],
"default": "FAILURE_REASON_NONE",
"description": " - FAILURE_REASON_NONE: FAILURE_REASON_NONE is set when the swap did not fail, it is either in\nprogress or succeeded.\n - FAILURE_REASON_OFFCHAIN: FAILURE_REASON_OFFCHAIN indicates that a loop out failed because it wasn't\npossible to find a route for one or both off chain payments that met the fee\nand timelock limits required.\n - FAILURE_REASON_TIMEOUT: FAILURE_REASON_TIMEOUT indicates that the swap failed because on chain htlc\ndid not confirm before its expiry, or it confirmed too late for us to reveal\nour preimage and claim.\n - FAILURE_REASON_SWEEP_TIMEOUT: FAILURE_REASON_SWEEP_TIMEOUT indicates that a loop out permanently failed\nbecause the on chain htlc wasn't swept before the server revoked the\nhtlc.\n - FAILURE_REASON_INSUFFICIENT_VALUE: FAILURE_REASON_INSUFFICIENT_VALUE indicates that a loop out has failed\nbecause the on chain htlc had a lower value than requested.\n - FAILURE_REASON_TEMPORARY: FAILURE_REASON_TEMPORARY indicates that a swap cannot continue due to an\ninternal error. Manual intervention such as a restart is required.\n - FAILURE_REASON_INCORRECT_AMOUNT: FAILURE_REASON_INCORRECT_AMOUNT indicates that a loop in permanently failed\nbecause the amount extended by an external loop in htlc is insufficient."
},
"looprpcInQuoteResponse": {
"type": "object",
"properties": {
@ -629,6 +643,10 @@
"$ref": "#/definitions/looprpcSwapState",
"description": "*\nState the swap is currently in, see State enum."
},
"failure_reason": {
"$ref": "#/definitions/looprpcFailureReason",
"description": "A failure reason for the swap, only set if the swap has failed."
},
"initiation_time": {
"type": "string",
"format": "int64",

Loading…
Cancel
Save