From 20b3114100afb836a5d64d048ab66c3b8135005f Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Fri, 7 Dec 2018 18:39:34 -0800 Subject: [PATCH 1/7] htlcswitch+lnwallet+peer: default max htlc in fwding policy of new chans In this commit, we set a default max HTLC in the forwarding policies of newly open channels. The ForwardingPolicy's MaxHTLC field (added in this commit) will later be used to decide whether an HTLC satisfies our policy before forwarding it. To ensure the ForwardingPolicy's MaxHTLC default matches the max HTLC advertised in the ChannelUpdate sent out for this channel, we also add a MaxPendingAmount() function to the lnwallet.Channel. --- htlcswitch/link.go | 3 +++ lnwallet/channel.go | 6 ++++++ peer.go | 12 +++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/htlcswitch/link.go b/htlcswitch/link.go index c245ea65..c88026f8 100644 --- a/htlcswitch/link.go +++ b/htlcswitch/link.go @@ -71,6 +71,9 @@ type ForwardingPolicy struct { // lifetime of the channel. MinHTLC lnwire.MilliSatoshi + // MaxHTLC is the largest HTLC that is to be forwarded. + MaxHTLC lnwire.MilliSatoshi + // BaseFee is the base fee, expressed in milli-satoshi that must be // paid for each incoming HTLC. This field, combined with FeeRate is // used to compute the required fee for a given HTLC. diff --git a/lnwallet/channel.go b/lnwallet/channel.go index 8a9bcddb..b3b79682 100644 --- a/lnwallet/channel.go +++ b/lnwallet/channel.go @@ -6336,3 +6336,9 @@ func (lc *LightningChannel) RemoteCommitHeight() uint64 { func (lc *LightningChannel) FwdMinHtlc() lnwire.MilliSatoshi { return lc.localChanCfg.MinHTLC } + +// MaxPendingAmount returns the maximum HTLC value that can be pending at +// any time over this channel. +func (lc *LightningChannel) MaxPendingAmount() lnwire.MilliSatoshi { + return lc.localChanCfg.MaxPendingAmount +} diff --git a/peer.go b/peer.go index 41a55892..d8793ca4 100644 --- a/peer.go +++ b/peer.go @@ -1670,15 +1670,17 @@ out: continue } - // We'll query the localChanCfg of the new channel to - // determine the minimum HTLC value that can be - // forwarded. For fees we'll use the default values, as - // they currently are always set to the default values - // at initial channel creation. + // We'll query the localChanCfg of the new channel to determine the + // minimum HTLC value that can be forwarded. For the maximum HTLC + // value that can be forwarded and fees we'll use the default + // values, as they currently are always set to the default values + // at initial channel creation. Note that the maximum HTLC value + // defaults to the cap on the total value of outstanding HTLCs. fwdMinHtlc := lnChan.FwdMinHtlc() defaultPolicy := p.server.cc.routingPolicy forwardingPolicy := &htlcswitch.ForwardingPolicy{ MinHTLC: fwdMinHtlc, + MaxHTLC: lnChan.MaxPendingAmount(), BaseFee: defaultPolicy.BaseFee, FeeRate: defaultPolicy.FeeRate, TimeLockDelta: defaultPolicy.TimeLockDelta, From e62a8f3269d2ebb8fe75484624e82f856f9162f5 Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 17:43:25 -0800 Subject: [PATCH 2/7] lnrpc: add max_htlc to RoutingPolicy --- lnrpc/rpc.pb.go | 1127 ++++++++++++++++++++-------------------- lnrpc/rpc.proto | 1 + lnrpc/rpc.swagger.json | 4 + 3 files changed, 573 insertions(+), 559 deletions(-) diff --git a/lnrpc/rpc.pb.go b/lnrpc/rpc.pb.go index 98dacbc7..21a03053 100644 --- a/lnrpc/rpc.pb.go +++ b/lnrpc/rpc.pb.go @@ -49,7 +49,7 @@ func (x AddressType) String() string { return proto.EnumName(AddressType_name, int32(x)) } func (AddressType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{0} } type ChannelCloseSummary_ClosureType int32 @@ -84,7 +84,7 @@ func (x ChannelCloseSummary_ClosureType) String() string { return proto.EnumName(ChannelCloseSummary_ClosureType_name, int32(x)) } func (ChannelCloseSummary_ClosureType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{39, 0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{39, 0} } type ChannelEventUpdate_UpdateType int32 @@ -113,7 +113,7 @@ func (x ChannelEventUpdate_UpdateType) String() string { return proto.EnumName(ChannelEventUpdate_UpdateType_name, int32(x)) } func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{60, 0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{60, 0} } type Invoice_InvoiceState int32 @@ -139,7 +139,7 @@ func (x Invoice_InvoiceState) String() string { return proto.EnumName(Invoice_InvoiceState_name, int32(x)) } func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{89, 0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{89, 0} } type GenSeedRequest struct { @@ -160,7 +160,7 @@ func (m *GenSeedRequest) Reset() { *m = GenSeedRequest{} } func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) } func (*GenSeedRequest) ProtoMessage() {} func (*GenSeedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{0} } func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b) @@ -215,7 +215,7 @@ func (m *GenSeedResponse) Reset() { *m = GenSeedResponse{} } func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) } func (*GenSeedResponse) ProtoMessage() {} func (*GenSeedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{1} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{1} } func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b) @@ -280,7 +280,7 @@ func (m *InitWalletRequest) Reset() { *m = InitWalletRequest{} } func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) } func (*InitWalletRequest) ProtoMessage() {} func (*InitWalletRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{2} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{2} } func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b) @@ -338,7 +338,7 @@ func (m *InitWalletResponse) Reset() { *m = InitWalletResponse{} } func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) } func (*InitWalletResponse) ProtoMessage() {} func (*InitWalletResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{3} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{3} } func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b) @@ -380,7 +380,7 @@ func (m *UnlockWalletRequest) Reset() { *m = UnlockWalletRequest{} } func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) } func (*UnlockWalletRequest) ProtoMessage() {} func (*UnlockWalletRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{4} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{4} } func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b) @@ -424,7 +424,7 @@ func (m *UnlockWalletResponse) Reset() { *m = UnlockWalletResponse{} } func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) } func (*UnlockWalletResponse) ProtoMessage() {} func (*UnlockWalletResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{5} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{5} } func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b) @@ -462,7 +462,7 @@ func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} } func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) } func (*ChangePasswordRequest) ProtoMessage() {} func (*ChangePasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{6} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{6} } func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b) @@ -506,7 +506,7 @@ func (m *ChangePasswordResponse) Reset() { *m = ChangePasswordResponse{} func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) } func (*ChangePasswordResponse) ProtoMessage() {} func (*ChangePasswordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{7} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{7} } func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b) @@ -548,7 +548,7 @@ func (m *Utxo) Reset() { *m = Utxo{} } func (m *Utxo) String() string { return proto.CompactTextString(m) } func (*Utxo) ProtoMessage() {} func (*Utxo) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{8} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{8} } func (m *Utxo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Utxo.Unmarshal(m, b) @@ -636,7 +636,7 @@ func (m *Transaction) Reset() { *m = Transaction{} } func (m *Transaction) String() string { return proto.CompactTextString(m) } func (*Transaction) ProtoMessage() {} func (*Transaction) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{9} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{9} } func (m *Transaction) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Transaction.Unmarshal(m, b) @@ -722,7 +722,7 @@ func (m *GetTransactionsRequest) Reset() { *m = GetTransactionsRequest{} func (m *GetTransactionsRequest) String() string { return proto.CompactTextString(m) } func (*GetTransactionsRequest) ProtoMessage() {} func (*GetTransactionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{10} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{10} } func (m *GetTransactionsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTransactionsRequest.Unmarshal(m, b) @@ -754,7 +754,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} } func (m *TransactionDetails) String() string { return proto.CompactTextString(m) } func (*TransactionDetails) ProtoMessage() {} func (*TransactionDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{11} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{11} } func (m *TransactionDetails) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransactionDetails.Unmarshal(m, b) @@ -795,7 +795,7 @@ func (m *FeeLimit) Reset() { *m = FeeLimit{} } func (m *FeeLimit) String() string { return proto.CompactTextString(m) } func (*FeeLimit) ProtoMessage() {} func (*FeeLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{12} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{12} } func (m *FeeLimit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FeeLimit.Unmarshal(m, b) @@ -955,7 +955,7 @@ func (m *SendRequest) Reset() { *m = SendRequest{} } func (m *SendRequest) String() string { return proto.CompactTextString(m) } func (*SendRequest) ProtoMessage() {} func (*SendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{13} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{13} } func (m *SendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendRequest.Unmarshal(m, b) @@ -1052,7 +1052,7 @@ func (m *SendResponse) Reset() { *m = SendResponse{} } func (m *SendResponse) String() string { return proto.CompactTextString(m) } func (*SendResponse) ProtoMessage() {} func (*SendResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{14} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{14} } func (m *SendResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendResponse.Unmarshal(m, b) @@ -1122,7 +1122,7 @@ func (m *SendToRouteRequest) Reset() { *m = SendToRouteRequest{} } func (m *SendToRouteRequest) String() string { return proto.CompactTextString(m) } func (*SendToRouteRequest) ProtoMessage() {} func (*SendToRouteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{15} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{15} } func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendToRouteRequest.Unmarshal(m, b) @@ -1187,7 +1187,7 @@ func (m *ChannelPoint) Reset() { *m = ChannelPoint{} } func (m *ChannelPoint) String() string { return proto.CompactTextString(m) } func (*ChannelPoint) ProtoMessage() {} func (*ChannelPoint) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{16} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{16} } func (m *ChannelPoint) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelPoint.Unmarshal(m, b) @@ -1333,7 +1333,7 @@ func (m *OutPoint) Reset() { *m = OutPoint{} } func (m *OutPoint) String() string { return proto.CompactTextString(m) } func (*OutPoint) ProtoMessage() {} func (*OutPoint) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{17} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{17} } func (m *OutPoint) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OutPoint.Unmarshal(m, b) @@ -1388,7 +1388,7 @@ func (m *LightningAddress) Reset() { *m = LightningAddress{} } func (m *LightningAddress) String() string { return proto.CompactTextString(m) } func (*LightningAddress) ProtoMessage() {} func (*LightningAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{18} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{18} } func (m *LightningAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LightningAddress.Unmarshal(m, b) @@ -1438,7 +1438,7 @@ func (m *SendManyRequest) Reset() { *m = SendManyRequest{} } func (m *SendManyRequest) String() string { return proto.CompactTextString(m) } func (*SendManyRequest) ProtoMessage() {} func (*SendManyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{19} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{19} } func (m *SendManyRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendManyRequest.Unmarshal(m, b) @@ -1491,7 +1491,7 @@ func (m *SendManyResponse) Reset() { *m = SendManyResponse{} } func (m *SendManyResponse) String() string { return proto.CompactTextString(m) } func (*SendManyResponse) ProtoMessage() {} func (*SendManyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{20} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{20} } func (m *SendManyResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendManyResponse.Unmarshal(m, b) @@ -1541,7 +1541,7 @@ func (m *SendCoinsRequest) Reset() { *m = SendCoinsRequest{} } func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) } func (*SendCoinsRequest) ProtoMessage() {} func (*SendCoinsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{21} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{21} } func (m *SendCoinsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendCoinsRequest.Unmarshal(m, b) @@ -1608,7 +1608,7 @@ func (m *SendCoinsResponse) Reset() { *m = SendCoinsResponse{} } func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) } func (*SendCoinsResponse) ProtoMessage() {} func (*SendCoinsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{22} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{22} } func (m *SendCoinsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendCoinsResponse.Unmarshal(m, b) @@ -1649,7 +1649,7 @@ func (m *ListUnspentRequest) Reset() { *m = ListUnspentRequest{} } func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) } func (*ListUnspentRequest) ProtoMessage() {} func (*ListUnspentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{23} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{23} } func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListUnspentRequest.Unmarshal(m, b) @@ -1695,7 +1695,7 @@ func (m *ListUnspentResponse) Reset() { *m = ListUnspentResponse{} } func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) } func (*ListUnspentResponse) ProtoMessage() {} func (*ListUnspentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{24} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{24} } func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListUnspentResponse.Unmarshal(m, b) @@ -1734,7 +1734,7 @@ func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} } func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) } func (*NewAddressRequest) ProtoMessage() {} func (*NewAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{25} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{25} } func (m *NewAddressRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NewAddressRequest.Unmarshal(m, b) @@ -1773,7 +1773,7 @@ func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} } func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) } func (*NewAddressResponse) ProtoMessage() {} func (*NewAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{26} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{26} } func (m *NewAddressResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NewAddressResponse.Unmarshal(m, b) @@ -1812,7 +1812,7 @@ func (m *SignMessageRequest) Reset() { *m = SignMessageRequest{} } func (m *SignMessageRequest) String() string { return proto.CompactTextString(m) } func (*SignMessageRequest) ProtoMessage() {} func (*SignMessageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{27} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{27} } func (m *SignMessageRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignMessageRequest.Unmarshal(m, b) @@ -1851,7 +1851,7 @@ func (m *SignMessageResponse) Reset() { *m = SignMessageResponse{} } func (m *SignMessageResponse) String() string { return proto.CompactTextString(m) } func (*SignMessageResponse) ProtoMessage() {} func (*SignMessageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{28} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{28} } func (m *SignMessageResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignMessageResponse.Unmarshal(m, b) @@ -1892,7 +1892,7 @@ func (m *VerifyMessageRequest) Reset() { *m = VerifyMessageRequest{} } func (m *VerifyMessageRequest) String() string { return proto.CompactTextString(m) } func (*VerifyMessageRequest) ProtoMessage() {} func (*VerifyMessageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{29} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{29} } func (m *VerifyMessageRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VerifyMessageRequest.Unmarshal(m, b) @@ -1940,7 +1940,7 @@ func (m *VerifyMessageResponse) Reset() { *m = VerifyMessageResponse{} } func (m *VerifyMessageResponse) String() string { return proto.CompactTextString(m) } func (*VerifyMessageResponse) ProtoMessage() {} func (*VerifyMessageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{30} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{30} } func (m *VerifyMessageResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VerifyMessageResponse.Unmarshal(m, b) @@ -1989,7 +1989,7 @@ func (m *ConnectPeerRequest) Reset() { *m = ConnectPeerRequest{} } func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) } func (*ConnectPeerRequest) ProtoMessage() {} func (*ConnectPeerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{31} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{31} } func (m *ConnectPeerRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConnectPeerRequest.Unmarshal(m, b) @@ -2033,7 +2033,7 @@ func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} } func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) } func (*ConnectPeerResponse) ProtoMessage() {} func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{32} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{32} } func (m *ConnectPeerResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConnectPeerResponse.Unmarshal(m, b) @@ -2065,7 +2065,7 @@ func (m *DisconnectPeerRequest) Reset() { *m = DisconnectPeerRequest{} } func (m *DisconnectPeerRequest) String() string { return proto.CompactTextString(m) } func (*DisconnectPeerRequest) ProtoMessage() {} func (*DisconnectPeerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{33} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{33} } func (m *DisconnectPeerRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DisconnectPeerRequest.Unmarshal(m, b) @@ -2102,7 +2102,7 @@ func (m *DisconnectPeerResponse) Reset() { *m = DisconnectPeerResponse{} func (m *DisconnectPeerResponse) String() string { return proto.CompactTextString(m) } func (*DisconnectPeerResponse) ProtoMessage() {} func (*DisconnectPeerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{34} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{34} } func (m *DisconnectPeerResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DisconnectPeerResponse.Unmarshal(m, b) @@ -2136,7 +2136,7 @@ func (m *HTLC) Reset() { *m = HTLC{} } func (m *HTLC) String() string { return proto.CompactTextString(m) } func (*HTLC) ProtoMessage() {} func (*HTLC) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{35} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{35} } func (m *HTLC) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HTLC.Unmarshal(m, b) @@ -2250,7 +2250,7 @@ func (m *Channel) Reset() { *m = Channel{} } func (m *Channel) String() string { return proto.CompactTextString(m) } func (*Channel) ProtoMessage() {} func (*Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{36} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{36} } func (m *Channel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Channel.Unmarshal(m, b) @@ -2410,7 +2410,7 @@ func (m *ListChannelsRequest) Reset() { *m = ListChannelsRequest{} } func (m *ListChannelsRequest) String() string { return proto.CompactTextString(m) } func (*ListChannelsRequest) ProtoMessage() {} func (*ListChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{37} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{37} } func (m *ListChannelsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListChannelsRequest.Unmarshal(m, b) @@ -2470,7 +2470,7 @@ func (m *ListChannelsResponse) Reset() { *m = ListChannelsResponse{} } func (m *ListChannelsResponse) String() string { return proto.CompactTextString(m) } func (*ListChannelsResponse) ProtoMessage() {} func (*ListChannelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{38} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{38} } func (m *ListChannelsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListChannelsResponse.Unmarshal(m, b) @@ -2527,7 +2527,7 @@ func (m *ChannelCloseSummary) Reset() { *m = ChannelCloseSummary{} } func (m *ChannelCloseSummary) String() string { return proto.CompactTextString(m) } func (*ChannelCloseSummary) ProtoMessage() {} func (*ChannelCloseSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{39} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{39} } func (m *ChannelCloseSummary) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelCloseSummary.Unmarshal(m, b) @@ -2633,7 +2633,7 @@ func (m *ClosedChannelsRequest) Reset() { *m = ClosedChannelsRequest{} } func (m *ClosedChannelsRequest) String() string { return proto.CompactTextString(m) } func (*ClosedChannelsRequest) ProtoMessage() {} func (*ClosedChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{40} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{40} } func (m *ClosedChannelsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClosedChannelsRequest.Unmarshal(m, b) @@ -2706,7 +2706,7 @@ func (m *ClosedChannelsResponse) Reset() { *m = ClosedChannelsResponse{} func (m *ClosedChannelsResponse) String() string { return proto.CompactTextString(m) } func (*ClosedChannelsResponse) ProtoMessage() {} func (*ClosedChannelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{41} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{41} } func (m *ClosedChannelsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClosedChannelsResponse.Unmarshal(m, b) @@ -2759,7 +2759,7 @@ func (m *Peer) Reset() { *m = Peer{} } func (m *Peer) String() string { return proto.CompactTextString(m) } func (*Peer) ProtoMessage() {} func (*Peer) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{42} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{42} } func (m *Peer) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Peer.Unmarshal(m, b) @@ -2845,7 +2845,7 @@ func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} } func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) } func (*ListPeersRequest) ProtoMessage() {} func (*ListPeersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{43} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{43} } func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListPeersRequest.Unmarshal(m, b) @@ -2877,7 +2877,7 @@ func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} } func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) } func (*ListPeersResponse) ProtoMessage() {} func (*ListPeersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{44} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{44} } func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListPeersResponse.Unmarshal(m, b) @@ -2914,7 +2914,7 @@ func (m *GetInfoRequest) Reset() { *m = GetInfoRequest{} } func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetInfoRequest) ProtoMessage() {} func (*GetInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{45} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{45} } func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetInfoRequest.Unmarshal(m, b) @@ -2974,7 +2974,7 @@ func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} } func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetInfoResponse) ProtoMessage() {} func (*GetInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{46} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{46} } func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetInfoResponse.Unmarshal(m, b) @@ -3107,7 +3107,7 @@ func (m *Chain) Reset() { *m = Chain{} } func (m *Chain) String() string { return proto.CompactTextString(m) } func (*Chain) ProtoMessage() {} func (*Chain) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{47} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{47} } func (m *Chain) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Chain.Unmarshal(m, b) @@ -3154,7 +3154,7 @@ func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} } func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) } func (*ConfirmationUpdate) ProtoMessage() {} func (*ConfirmationUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{48} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{48} } func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConfirmationUpdate.Unmarshal(m, b) @@ -3206,7 +3206,7 @@ func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} } func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelOpenUpdate) ProtoMessage() {} func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{49} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{49} } func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelOpenUpdate.Unmarshal(m, b) @@ -3245,7 +3245,7 @@ func (m *ChannelCloseUpdate) Reset() { *m = ChannelCloseUpdate{} } func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelCloseUpdate) ProtoMessage() {} func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{50} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{50} } func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelCloseUpdate.Unmarshal(m, b) @@ -3300,7 +3300,7 @@ func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} } func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) } func (*CloseChannelRequest) ProtoMessage() {} func (*CloseChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{51} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{51} } func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CloseChannelRequest.Unmarshal(m, b) @@ -3362,7 +3362,7 @@ func (m *CloseStatusUpdate) Reset() { *m = CloseStatusUpdate{} } func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) } func (*CloseStatusUpdate) ProtoMessage() {} func (*CloseStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{52} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{52} } func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CloseStatusUpdate.Unmarshal(m, b) @@ -3505,7 +3505,7 @@ func (m *PendingUpdate) Reset() { *m = PendingUpdate{} } func (m *PendingUpdate) String() string { return proto.CompactTextString(m) } func (*PendingUpdate) ProtoMessage() {} func (*PendingUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{53} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{53} } func (m *PendingUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingUpdate.Unmarshal(m, b) @@ -3571,7 +3571,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} } func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) } func (*OpenChannelRequest) ProtoMessage() {} func (*OpenChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{54} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{54} } func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OpenChannelRequest.Unmarshal(m, b) @@ -3682,7 +3682,7 @@ func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} } func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) } func (*OpenStatusUpdate) ProtoMessage() {} func (*OpenStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{55} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{55} } func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OpenStatusUpdate.Unmarshal(m, b) @@ -3838,7 +3838,7 @@ func (m *PendingHTLC) Reset() { *m = PendingHTLC{} } func (m *PendingHTLC) String() string { return proto.CompactTextString(m) } func (*PendingHTLC) ProtoMessage() {} func (*PendingHTLC) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{56} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{56} } func (m *PendingHTLC) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingHTLC.Unmarshal(m, b) @@ -3910,7 +3910,7 @@ func (m *PendingChannelsRequest) Reset() { *m = PendingChannelsRequest{} func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) } func (*PendingChannelsRequest) ProtoMessage() {} func (*PendingChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{57} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{57} } func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsRequest.Unmarshal(m, b) @@ -3950,7 +3950,7 @@ func (m *PendingChannelsResponse) Reset() { *m = PendingChannelsResponse func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse) ProtoMessage() {} func (*PendingChannelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58} } func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse.Unmarshal(m, b) @@ -4022,7 +4022,7 @@ func (m *PendingChannelsResponse_PendingChannel) Reset() { func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58, 0} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58, 0} } func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse_PendingChannel.Unmarshal(m, b) @@ -4109,7 +4109,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string { } func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58, 1} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58, 1} } func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse_PendingOpenChannel.Unmarshal(m, b) @@ -4182,7 +4182,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string { } func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {} func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58, 2} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58, 2} } func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse_WaitingCloseChannel.Unmarshal(m, b) @@ -4230,7 +4230,7 @@ func (m *PendingChannelsResponse_ClosedChannel) Reset() { *m = PendingCh func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58, 3} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58, 3} } func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse_ClosedChannel.Unmarshal(m, b) @@ -4294,7 +4294,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string { } func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{58, 4} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{58, 4} } func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PendingChannelsResponse_ForceClosedChannel.Unmarshal(m, b) @@ -4373,7 +4373,7 @@ func (m *ChannelEventSubscription) Reset() { *m = ChannelEventSubscripti func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) } func (*ChannelEventSubscription) ProtoMessage() {} func (*ChannelEventSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{59} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{59} } func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelEventSubscription.Unmarshal(m, b) @@ -4410,7 +4410,7 @@ func (m *ChannelEventUpdate) Reset() { *m = ChannelEventUpdate{} } func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelEventUpdate) ProtoMessage() {} func (*ChannelEventUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{60} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{60} } func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelEventUpdate.Unmarshal(m, b) @@ -4622,7 +4622,7 @@ func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} } func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) } func (*WalletBalanceRequest) ProtoMessage() {} func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{61} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{61} } func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WalletBalanceRequest.Unmarshal(m, b) @@ -4658,7 +4658,7 @@ func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} } func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) } func (*WalletBalanceResponse) ProtoMessage() {} func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{62} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{62} } func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WalletBalanceResponse.Unmarshal(m, b) @@ -4709,7 +4709,7 @@ func (m *ChannelBalanceRequest) Reset() { *m = ChannelBalanceRequest{} } func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) } func (*ChannelBalanceRequest) ProtoMessage() {} func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{63} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{63} } func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelBalanceRequest.Unmarshal(m, b) @@ -4743,7 +4743,7 @@ func (m *ChannelBalanceResponse) Reset() { *m = ChannelBalanceResponse{} func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) } func (*ChannelBalanceResponse) ProtoMessage() {} func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{64} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{64} } func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelBalanceResponse.Unmarshal(m, b) @@ -4801,7 +4801,7 @@ func (m *QueryRoutesRequest) Reset() { *m = QueryRoutesRequest{} } func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) } func (*QueryRoutesRequest) ProtoMessage() {} func (*QueryRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{65} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{65} } func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QueryRoutesRequest.Unmarshal(m, b) @@ -4867,7 +4867,7 @@ func (m *QueryRoutesResponse) Reset() { *m = QueryRoutesResponse{} } func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) } func (*QueryRoutesResponse) ProtoMessage() {} func (*QueryRoutesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{66} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{66} } func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QueryRoutesResponse.Unmarshal(m, b) @@ -4919,7 +4919,7 @@ func (m *Hop) Reset() { *m = Hop{} } func (m *Hop) String() string { return proto.CompactTextString(m) } func (*Hop) ProtoMessage() {} func (*Hop) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{67} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{67} } func (m *Hop) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Hop.Unmarshal(m, b) @@ -5040,7 +5040,7 @@ func (m *Route) Reset() { *m = Route{} } func (m *Route) String() string { return proto.CompactTextString(m) } func (*Route) ProtoMessage() {} func (*Route) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{68} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{68} } func (m *Route) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Route.Unmarshal(m, b) @@ -5116,7 +5116,7 @@ func (m *NodeInfoRequest) Reset() { *m = NodeInfoRequest{} } func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) } func (*NodeInfoRequest) ProtoMessage() {} func (*NodeInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{69} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{69} } func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeInfoRequest.Unmarshal(m, b) @@ -5161,7 +5161,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} } func (m *NodeInfo) String() string { return proto.CompactTextString(m) } func (*NodeInfo) ProtoMessage() {} func (*NodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{70} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{70} } func (m *NodeInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeInfo.Unmarshal(m, b) @@ -5222,7 +5222,7 @@ func (m *LightningNode) Reset() { *m = LightningNode{} } func (m *LightningNode) String() string { return proto.CompactTextString(m) } func (*LightningNode) ProtoMessage() {} func (*LightningNode) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{71} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{71} } func (m *LightningNode) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LightningNode.Unmarshal(m, b) @@ -5289,7 +5289,7 @@ func (m *NodeAddress) Reset() { *m = NodeAddress{} } func (m *NodeAddress) String() string { return proto.CompactTextString(m) } func (*NodeAddress) ProtoMessage() {} func (*NodeAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{72} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{72} } func (m *NodeAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeAddress.Unmarshal(m, b) @@ -5329,6 +5329,7 @@ type RoutingPolicy struct { FeeBaseMsat int64 `protobuf:"varint,3,opt,name=fee_base_msat,proto3" json:"fee_base_msat,omitempty"` FeeRateMilliMsat int64 `protobuf:"varint,4,opt,name=fee_rate_milli_msat,proto3" json:"fee_rate_milli_msat,omitempty"` Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` + MaxHtlc uint64 `protobuf:"varint,6,opt,name=max_htlc,proto3" json:"max_htlc,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5338,7 +5339,7 @@ func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} } func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) } func (*RoutingPolicy) ProtoMessage() {} func (*RoutingPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{73} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{73} } func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RoutingPolicy.Unmarshal(m, b) @@ -5393,6 +5394,13 @@ func (m *RoutingPolicy) GetDisabled() bool { return false } +func (m *RoutingPolicy) GetMaxHtlc() uint64 { + if m != nil { + return m.MaxHtlc + } + return 0 +} + // * // A fully authenticated channel along with all its unique attributes. // Once an authenticated channel announcement has been processed on the network, @@ -5421,7 +5429,7 @@ func (m *ChannelEdge) Reset() { *m = ChannelEdge{} } func (m *ChannelEdge) String() string { return proto.CompactTextString(m) } func (*ChannelEdge) ProtoMessage() {} func (*ChannelEdge) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{74} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{74} } func (m *ChannelEdge) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelEdge.Unmarshal(m, b) @@ -5512,7 +5520,7 @@ func (m *ChannelGraphRequest) Reset() { *m = ChannelGraphRequest{} } func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) } func (*ChannelGraphRequest) ProtoMessage() {} func (*ChannelGraphRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{75} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{75} } func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelGraphRequest.Unmarshal(m, b) @@ -5554,7 +5562,7 @@ func (m *ChannelGraph) Reset() { *m = ChannelGraph{} } func (m *ChannelGraph) String() string { return proto.CompactTextString(m) } func (*ChannelGraph) ProtoMessage() {} func (*ChannelGraph) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{76} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{76} } func (m *ChannelGraph) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelGraph.Unmarshal(m, b) @@ -5603,7 +5611,7 @@ func (m *ChanInfoRequest) Reset() { *m = ChanInfoRequest{} } func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) } func (*ChanInfoRequest) ProtoMessage() {} func (*ChanInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{77} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{77} } func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChanInfoRequest.Unmarshal(m, b) @@ -5640,7 +5648,7 @@ func (m *NetworkInfoRequest) Reset() { *m = NetworkInfoRequest{} } func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) } func (*NetworkInfoRequest) ProtoMessage() {} func (*NetworkInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{78} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{78} } func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NetworkInfoRequest.Unmarshal(m, b) @@ -5679,7 +5687,7 @@ func (m *NetworkInfo) Reset() { *m = NetworkInfo{} } func (m *NetworkInfo) String() string { return proto.CompactTextString(m) } func (*NetworkInfo) ProtoMessage() {} func (*NetworkInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{79} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{79} } func (m *NetworkInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NetworkInfo.Unmarshal(m, b) @@ -5772,7 +5780,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} } func (m *StopRequest) String() string { return proto.CompactTextString(m) } func (*StopRequest) ProtoMessage() {} func (*StopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{80} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{80} } func (m *StopRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopRequest.Unmarshal(m, b) @@ -5802,7 +5810,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} } func (m *StopResponse) String() string { return proto.CompactTextString(m) } func (*StopResponse) ProtoMessage() {} func (*StopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{81} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{81} } func (m *StopResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopResponse.Unmarshal(m, b) @@ -5832,7 +5840,7 @@ func (m *GraphTopologySubscription) Reset() { *m = GraphTopologySubscrip func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) } func (*GraphTopologySubscription) ProtoMessage() {} func (*GraphTopologySubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{82} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{82} } func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GraphTopologySubscription.Unmarshal(m, b) @@ -5865,7 +5873,7 @@ func (m *GraphTopologyUpdate) Reset() { *m = GraphTopologyUpdate{} } func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) } func (*GraphTopologyUpdate) ProtoMessage() {} func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{83} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{83} } func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GraphTopologyUpdate.Unmarshal(m, b) @@ -5920,7 +5928,7 @@ func (m *NodeUpdate) Reset() { *m = NodeUpdate{} } func (m *NodeUpdate) String() string { return proto.CompactTextString(m) } func (*NodeUpdate) ProtoMessage() {} func (*NodeUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{84} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{84} } func (m *NodeUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeUpdate.Unmarshal(m, b) @@ -5988,7 +5996,7 @@ func (m *ChannelEdgeUpdate) Reset() { *m = ChannelEdgeUpdate{} } func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelEdgeUpdate) ProtoMessage() {} func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{85} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{85} } func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelEdgeUpdate.Unmarshal(m, b) @@ -6068,7 +6076,7 @@ func (m *ClosedChannelUpdate) Reset() { *m = ClosedChannelUpdate{} } func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) } func (*ClosedChannelUpdate) ProtoMessage() {} func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{86} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{86} } func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClosedChannelUpdate.Unmarshal(m, b) @@ -6138,7 +6146,7 @@ func (m *HopHint) Reset() { *m = HopHint{} } func (m *HopHint) String() string { return proto.CompactTextString(m) } func (*HopHint) ProtoMessage() {} func (*HopHint) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{87} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{87} } func (m *HopHint) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HopHint.Unmarshal(m, b) @@ -6207,7 +6215,7 @@ func (m *RouteHint) Reset() { *m = RouteHint{} } func (m *RouteHint) String() string { return proto.CompactTextString(m) } func (*RouteHint) ProtoMessage() {} func (*RouteHint) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{88} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{88} } func (m *RouteHint) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RouteHint.Unmarshal(m, b) @@ -6322,7 +6330,7 @@ func (m *Invoice) Reset() { *m = Invoice{} } func (m *Invoice) String() string { return proto.CompactTextString(m) } func (*Invoice) ProtoMessage() {} func (*Invoice) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{89} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{89} } func (m *Invoice) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Invoice.Unmarshal(m, b) @@ -6514,7 +6522,7 @@ func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} } func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) } func (*AddInvoiceResponse) ProtoMessage() {} func (*AddInvoiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{90} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{90} } func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AddInvoiceResponse.Unmarshal(m, b) @@ -6571,7 +6579,7 @@ func (m *PaymentHash) Reset() { *m = PaymentHash{} } func (m *PaymentHash) String() string { return proto.CompactTextString(m) } func (*PaymentHash) ProtoMessage() {} func (*PaymentHash) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{91} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{91} } func (m *PaymentHash) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PaymentHash.Unmarshal(m, b) @@ -6627,7 +6635,7 @@ func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} } func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) } func (*ListInvoiceRequest) ProtoMessage() {} func (*ListInvoiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{92} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{92} } func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListInvoiceRequest.Unmarshal(m, b) @@ -6697,7 +6705,7 @@ func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} } func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) } func (*ListInvoiceResponse) ProtoMessage() {} func (*ListInvoiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{93} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{93} } func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListInvoiceResponse.Unmarshal(m, b) @@ -6760,7 +6768,7 @@ func (m *InvoiceSubscription) Reset() { *m = InvoiceSubscription{} } func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) } func (*InvoiceSubscription) ProtoMessage() {} func (*InvoiceSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{94} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{94} } func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvoiceSubscription.Unmarshal(m, b) @@ -6820,7 +6828,7 @@ func (m *Payment) Reset() { *m = Payment{} } func (m *Payment) String() string { return proto.CompactTextString(m) } func (*Payment) ProtoMessage() {} func (*Payment) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{95} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{95} } func (m *Payment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Payment.Unmarshal(m, b) @@ -6907,7 +6915,7 @@ func (m *ListPaymentsRequest) Reset() { *m = ListPaymentsRequest{} } func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) } func (*ListPaymentsRequest) ProtoMessage() {} func (*ListPaymentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{96} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{96} } func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListPaymentsRequest.Unmarshal(m, b) @@ -6939,7 +6947,7 @@ func (m *ListPaymentsResponse) Reset() { *m = ListPaymentsResponse{} } func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) } func (*ListPaymentsResponse) ProtoMessage() {} func (*ListPaymentsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{97} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{97} } func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListPaymentsResponse.Unmarshal(m, b) @@ -6976,7 +6984,7 @@ func (m *DeleteAllPaymentsRequest) Reset() { *m = DeleteAllPaymentsReque func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllPaymentsRequest) ProtoMessage() {} func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{98} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{98} } func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteAllPaymentsRequest.Unmarshal(m, b) @@ -7006,7 +7014,7 @@ func (m *DeleteAllPaymentsResponse) Reset() { *m = DeleteAllPaymentsResp func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) } func (*DeleteAllPaymentsResponse) ProtoMessage() {} func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{99} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{99} } func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteAllPaymentsResponse.Unmarshal(m, b) @@ -7037,7 +7045,7 @@ func (m *AbandonChannelRequest) Reset() { *m = AbandonChannelRequest{} } func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) } func (*AbandonChannelRequest) ProtoMessage() {} func (*AbandonChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{100} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{100} } func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AbandonChannelRequest.Unmarshal(m, b) @@ -7074,7 +7082,7 @@ func (m *AbandonChannelResponse) Reset() { *m = AbandonChannelResponse{} func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) } func (*AbandonChannelResponse) ProtoMessage() {} func (*AbandonChannelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{101} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{101} } func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AbandonChannelResponse.Unmarshal(m, b) @@ -7106,7 +7114,7 @@ func (m *DebugLevelRequest) Reset() { *m = DebugLevelRequest{} } func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) } func (*DebugLevelRequest) ProtoMessage() {} func (*DebugLevelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{102} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{102} } func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DebugLevelRequest.Unmarshal(m, b) @@ -7151,7 +7159,7 @@ func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} } func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) } func (*DebugLevelResponse) ProtoMessage() {} func (*DebugLevelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{103} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{103} } func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DebugLevelResponse.Unmarshal(m, b) @@ -7190,7 +7198,7 @@ func (m *PayReqString) Reset() { *m = PayReqString{} } func (m *PayReqString) String() string { return proto.CompactTextString(m) } func (*PayReqString) ProtoMessage() {} func (*PayReqString) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{104} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{104} } func (m *PayReqString) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PayReqString.Unmarshal(m, b) @@ -7237,7 +7245,7 @@ func (m *PayReq) Reset() { *m = PayReq{} } func (m *PayReq) String() string { return proto.CompactTextString(m) } func (*PayReq) ProtoMessage() {} func (*PayReq) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{105} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{105} } func (m *PayReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PayReq.Unmarshal(m, b) @@ -7337,7 +7345,7 @@ func (m *FeeReportRequest) Reset() { *m = FeeReportRequest{} } func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) } func (*FeeReportRequest) ProtoMessage() {} func (*FeeReportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{106} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{106} } func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FeeReportRequest.Unmarshal(m, b) @@ -7375,7 +7383,7 @@ func (m *ChannelFeeReport) Reset() { *m = ChannelFeeReport{} } func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) } func (*ChannelFeeReport) ProtoMessage() {} func (*ChannelFeeReport) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{107} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{107} } func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelFeeReport.Unmarshal(m, b) @@ -7441,7 +7449,7 @@ func (m *FeeReportResponse) Reset() { *m = FeeReportResponse{} } func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) } func (*FeeReportResponse) ProtoMessage() {} func (*FeeReportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{108} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{108} } func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FeeReportResponse.Unmarshal(m, b) @@ -7509,7 +7517,7 @@ func (m *PolicyUpdateRequest) Reset() { *m = PolicyUpdateRequest{} } func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) } func (*PolicyUpdateRequest) ProtoMessage() {} func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{109} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{109} } func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PolicyUpdateRequest.Unmarshal(m, b) @@ -7670,7 +7678,7 @@ func (m *PolicyUpdateResponse) Reset() { *m = PolicyUpdateResponse{} } func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) } func (*PolicyUpdateResponse) ProtoMessage() {} func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{110} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{110} } func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PolicyUpdateResponse.Unmarshal(m, b) @@ -7708,7 +7716,7 @@ func (m *ForwardingHistoryRequest) Reset() { *m = ForwardingHistoryReque func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) } func (*ForwardingHistoryRequest) ProtoMessage() {} func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{111} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{111} } func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ForwardingHistoryRequest.Unmarshal(m, b) @@ -7780,7 +7788,7 @@ func (m *ForwardingEvent) Reset() { *m = ForwardingEvent{} } func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) } func (*ForwardingEvent) ProtoMessage() {} func (*ForwardingEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{112} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{112} } func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ForwardingEvent.Unmarshal(m, b) @@ -7863,7 +7871,7 @@ func (m *ForwardingHistoryResponse) Reset() { *m = ForwardingHistoryResp func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) } func (*ForwardingHistoryResponse) ProtoMessage() {} func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_rpc_38da331231ebb227, []int{113} + return fileDescriptor_rpc_b39befcd0cdbfb71, []int{113} } func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ForwardingHistoryResponse.Unmarshal(m, b) @@ -10363,446 +10371,447 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } -func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_38da331231ebb227) } +func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_b39befcd0cdbfb71) } -var fileDescriptor_rpc_38da331231ebb227 = []byte{ - // 7002 bytes of a gzipped FileDescriptorProto +var fileDescriptor_rpc_b39befcd0cdbfb71 = []byte{ + // 7012 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x5f, 0x6c, 0x24, 0xc9, 0x59, 0xdf, 0x9e, 0x3f, 0xf6, 0xcc, 0x37, 0xe3, 0xf1, 0xb8, 0xfc, 0x67, 0x67, 0xe7, 0xf6, 0xf6, 0xf6, 0x3a, 0xcb, 0xad, 0xe3, 0x1c, 0xeb, 0xbd, 0x4d, 0x72, 0x5c, 0xee, 0x48, 0xc0, 0x6b, 0x7b, 0xd7, 0x9b, 0xf8, 0xbc, 0x4e, 0x7b, 0x37, 0x4b, 0x2e, 0x41, 0x93, 0xf6, 0x4c, 0x79, 0xdc, 0xb7, 0x3d, 0xdd, 0x93, 0xee, 0x1e, 0x7b, 0x27, 0xc7, 0x49, 0x08, 0x10, 0x91, 0x10, 0x08, 0x01, 0x2f, - 0x04, 0x05, 0x21, 0x05, 0x24, 0xc8, 0x23, 0x0f, 0x89, 0x90, 0x80, 0x37, 0x84, 0x04, 0x12, 0x42, - 0x90, 0x47, 0x24, 0x24, 0x04, 0x2f, 0xc0, 0x1b, 0x12, 0x8f, 0x48, 0xa8, 0xbe, 0xfa, 0xd3, 0x55, - 0xdd, 0x3d, 0xeb, 0xbd, 0x24, 0xf0, 0x64, 0xd7, 0xaf, 0xbe, 0xae, 0xbf, 0xdf, 0xbf, 0xfa, 0xea, - 0xab, 0x81, 0x7a, 0x34, 0xee, 0xdf, 0x1a, 0x47, 0x61, 0x12, 0x92, 0xaa, 0x1f, 0x44, 0xe3, 0x7e, - 0xf7, 0xea, 0x30, 0x0c, 0x87, 0x3e, 0xdd, 0x74, 0xc7, 0xde, 0xa6, 0x1b, 0x04, 0x61, 0xe2, 0x26, - 0x5e, 0x18, 0xc4, 0x9c, 0xc8, 0xfe, 0x1a, 0xb4, 0xee, 0xd3, 0xe0, 0x88, 0xd2, 0x81, 0x43, 0xbf, - 0x3e, 0xa1, 0x71, 0x42, 0x3e, 0x01, 0x4b, 0x2e, 0xfd, 0x06, 0xa5, 0x83, 0xde, 0xd8, 0x8d, 0xe3, - 0xf1, 0x69, 0xe4, 0xc6, 0xb4, 0x63, 0x5d, 0xb7, 0xd6, 0x9b, 0x4e, 0x9b, 0x57, 0x1c, 0x2a, 0x9c, - 0xbc, 0x0a, 0xcd, 0x98, 0x91, 0xd2, 0x20, 0x89, 0xc2, 0xf1, 0xb4, 0x53, 0x42, 0xba, 0x06, 0xc3, - 0x76, 0x39, 0x64, 0xfb, 0xb0, 0xa8, 0x7a, 0x88, 0xc7, 0x61, 0x10, 0x53, 0x72, 0x1b, 0x56, 0xfa, - 0xde, 0xf8, 0x94, 0x46, 0x3d, 0xfc, 0x78, 0x14, 0xd0, 0x51, 0x18, 0x78, 0xfd, 0x8e, 0x75, 0xbd, - 0xbc, 0x5e, 0x77, 0x08, 0xaf, 0x63, 0x5f, 0xbc, 0x2b, 0x6a, 0xc8, 0x4d, 0x58, 0xa4, 0x01, 0xc7, - 0xe9, 0x00, 0xbf, 0x12, 0x5d, 0xb5, 0x52, 0x98, 0x7d, 0x60, 0xff, 0x95, 0x05, 0x4b, 0x0f, 0x02, - 0x2f, 0x79, 0xe2, 0xfa, 0x3e, 0x4d, 0xe4, 0x9c, 0x6e, 0xc2, 0xe2, 0x39, 0x02, 0x38, 0xa7, 0xf3, - 0x30, 0x1a, 0x88, 0x19, 0xb5, 0x38, 0x7c, 0x28, 0xd0, 0x99, 0x23, 0x2b, 0xcd, 0x1c, 0x59, 0xe1, - 0x72, 0x95, 0x67, 0x2c, 0xd7, 0x4d, 0x58, 0x8c, 0x68, 0x3f, 0x3c, 0xa3, 0xd1, 0xb4, 0x77, 0xee, - 0x05, 0x83, 0xf0, 0xbc, 0x53, 0xb9, 0x6e, 0xad, 0x57, 0x9d, 0x96, 0x84, 0x9f, 0x20, 0x6a, 0xaf, - 0x00, 0xd1, 0x67, 0xc1, 0xd7, 0xcd, 0x1e, 0xc2, 0xf2, 0xe3, 0xc0, 0x0f, 0xfb, 0x4f, 0x7f, 0xc8, - 0xd9, 0x15, 0x74, 0x5f, 0x2a, 0xec, 0x7e, 0x0d, 0x56, 0xcc, 0x8e, 0xc4, 0x00, 0x28, 0xac, 0x6e, - 0x9f, 0xba, 0xc1, 0x90, 0xca, 0x26, 0xe5, 0x10, 0x3e, 0x0e, 0xed, 0xfe, 0x24, 0x8a, 0x68, 0x90, - 0x1b, 0xc3, 0xa2, 0xc0, 0xd5, 0x20, 0x5e, 0x85, 0x66, 0x40, 0xcf, 0x53, 0x32, 0xc1, 0x32, 0x01, - 0x3d, 0x97, 0x24, 0x76, 0x07, 0xd6, 0xb2, 0xdd, 0x88, 0x01, 0xfc, 0x8b, 0x05, 0x95, 0xc7, 0xc9, - 0xb3, 0x90, 0xdc, 0x82, 0x4a, 0x32, 0x1d, 0x73, 0xc6, 0x6c, 0xdd, 0x21, 0xb7, 0x90, 0xd7, 0x6f, - 0x6d, 0x0d, 0x06, 0x11, 0x8d, 0xe3, 0x47, 0xd3, 0x31, 0x75, 0x9a, 0x2e, 0x2f, 0xf4, 0x18, 0x1d, - 0xe9, 0xc0, 0xbc, 0x28, 0x63, 0x87, 0x75, 0x47, 0x16, 0xc9, 0x35, 0x00, 0x77, 0x14, 0x4e, 0x82, - 0xa4, 0x17, 0xbb, 0x09, 0xee, 0x5c, 0xd9, 0xd1, 0x10, 0x72, 0x15, 0xea, 0xe3, 0xa7, 0xbd, 0xb8, - 0x1f, 0x79, 0xe3, 0x04, 0x77, 0xab, 0xee, 0xa4, 0x00, 0xf9, 0x04, 0xd4, 0xc2, 0x49, 0x32, 0x0e, - 0xbd, 0x20, 0xe9, 0x54, 0xaf, 0x5b, 0xeb, 0x8d, 0x3b, 0x8b, 0x62, 0x2c, 0x0f, 0x27, 0xc9, 0x21, - 0x83, 0x1d, 0x45, 0x40, 0x6e, 0xc0, 0x42, 0x3f, 0x0c, 0x4e, 0xbc, 0x68, 0xc4, 0x65, 0xb0, 0x33, - 0x87, 0xbd, 0x99, 0xa0, 0xfd, 0xad, 0x12, 0x34, 0x1e, 0x45, 0x6e, 0x10, 0xbb, 0x7d, 0x06, 0xb0, - 0xa1, 0x27, 0xcf, 0x7a, 0xa7, 0x6e, 0x7c, 0x8a, 0xb3, 0xad, 0x3b, 0xb2, 0x48, 0xd6, 0x60, 0x8e, - 0x0f, 0x14, 0xe7, 0x54, 0x76, 0x44, 0x89, 0xbc, 0x0e, 0x4b, 0xc1, 0x64, 0xd4, 0x33, 0xfb, 0x2a, - 0xe3, 0x4e, 0xe7, 0x2b, 0xd8, 0x02, 0x1c, 0xb3, 0xbd, 0xe6, 0x5d, 0xf0, 0x19, 0x6a, 0x08, 0xb1, - 0xa1, 0x29, 0x4a, 0xd4, 0x1b, 0x9e, 0xf2, 0x69, 0x56, 0x1d, 0x03, 0x63, 0x6d, 0x24, 0xde, 0x88, - 0xf6, 0xe2, 0xc4, 0x1d, 0x8d, 0xc5, 0xb4, 0x34, 0x04, 0xeb, 0xc3, 0xc4, 0xf5, 0x7b, 0x27, 0x94, - 0xc6, 0x9d, 0x79, 0x51, 0xaf, 0x10, 0xf2, 0x1a, 0xb4, 0x06, 0x34, 0x4e, 0x7a, 0x62, 0x53, 0x68, - 0xdc, 0xa9, 0xa1, 0xc4, 0x65, 0x50, 0xc6, 0x19, 0xf7, 0x69, 0xa2, 0xad, 0x4e, 0x2c, 0x38, 0xd0, - 0xde, 0x07, 0xa2, 0xc1, 0x3b, 0x34, 0x71, 0x3d, 0x3f, 0x26, 0x6f, 0x42, 0x33, 0xd1, 0x88, 0x51, - 0xc3, 0x34, 0x14, 0xbb, 0x68, 0x1f, 0x38, 0x06, 0x9d, 0x7d, 0x1f, 0x6a, 0xf7, 0x28, 0xdd, 0xf7, - 0x46, 0x5e, 0x42, 0xd6, 0xa0, 0x7a, 0xe2, 0x3d, 0xa3, 0x9c, 0xa1, 0xcb, 0x7b, 0x97, 0x1c, 0x5e, - 0x24, 0x5d, 0x98, 0x1f, 0xd3, 0xa8, 0x4f, 0xe5, 0xf2, 0xef, 0x5d, 0x72, 0x24, 0x70, 0x77, 0x1e, - 0xaa, 0x3e, 0xfb, 0xd8, 0xfe, 0xc7, 0x12, 0x34, 0x8e, 0x68, 0xa0, 0x04, 0x85, 0x40, 0x85, 0x4d, - 0x49, 0x08, 0x07, 0xfe, 0x4f, 0x5e, 0x81, 0x06, 0x4e, 0x33, 0x4e, 0x22, 0x2f, 0x18, 0x0a, 0xfe, - 0x04, 0x06, 0x1d, 0x21, 0x42, 0xda, 0x50, 0x76, 0x47, 0x92, 0x37, 0xd9, 0xbf, 0x4c, 0x88, 0xc6, - 0xee, 0x74, 0xc4, 0xe4, 0x4d, 0xed, 0x5a, 0xd3, 0x69, 0x08, 0x6c, 0x8f, 0x6d, 0xdb, 0x2d, 0x58, - 0xd6, 0x49, 0x64, 0xeb, 0x55, 0x6c, 0x7d, 0x49, 0xa3, 0x14, 0x9d, 0xdc, 0x84, 0x45, 0x49, 0x1f, - 0xf1, 0xc1, 0xe2, 0x3e, 0xd6, 0x9d, 0x96, 0x80, 0xe5, 0x14, 0xd6, 0xa1, 0x7d, 0xe2, 0x05, 0xae, - 0xdf, 0xeb, 0xfb, 0xc9, 0x59, 0x6f, 0x40, 0xfd, 0xc4, 0xc5, 0x1d, 0xad, 0x3a, 0x2d, 0xc4, 0xb7, - 0xfd, 0xe4, 0x6c, 0x87, 0xa1, 0xe4, 0x75, 0xa8, 0x9f, 0x50, 0xda, 0xc3, 0x95, 0xe8, 0xd4, 0x0c, - 0xe9, 0x90, 0xab, 0xeb, 0xd4, 0x4e, 0xe4, 0x3a, 0xaf, 0x43, 0x3b, 0x9c, 0x24, 0xc3, 0xd0, 0x0b, - 0x86, 0xbd, 0xfe, 0xa9, 0x1b, 0xf4, 0xbc, 0x41, 0xa7, 0x7e, 0xdd, 0x5a, 0xaf, 0x38, 0x2d, 0x89, - 0x33, 0xad, 0xf0, 0x60, 0x60, 0xff, 0x99, 0x05, 0x4d, 0xbe, 0xa8, 0xc2, 0xa0, 0xdc, 0x80, 0x05, - 0x39, 0x76, 0x1a, 0x45, 0x61, 0x24, 0x04, 0xc5, 0x04, 0xc9, 0x06, 0xb4, 0x25, 0x30, 0x8e, 0xa8, - 0x37, 0x72, 0x87, 0x54, 0x68, 0x9f, 0x1c, 0x4e, 0xee, 0xa4, 0x2d, 0x46, 0xe1, 0x24, 0xe1, 0x2a, - 0xbd, 0x71, 0xa7, 0x29, 0x86, 0xef, 0x30, 0xcc, 0x31, 0x49, 0x98, 0xa0, 0x14, 0x6c, 0x8a, 0x81, - 0xd9, 0xdf, 0xb3, 0x80, 0xb0, 0xa1, 0x3f, 0x0a, 0x79, 0x13, 0x62, 0x4d, 0xb3, 0xfb, 0x69, 0xbd, - 0xf0, 0x7e, 0x96, 0x66, 0xed, 0xe7, 0x3a, 0xcc, 0xe1, 0xb0, 0x98, 0xe4, 0x97, 0xb3, 0x43, 0xbf, - 0x5b, 0xea, 0x58, 0x8e, 0xa8, 0x27, 0x36, 0x54, 0xf9, 0x1c, 0x2b, 0x05, 0x73, 0xe4, 0x55, 0xf6, - 0x77, 0x2c, 0x68, 0xb2, 0xd5, 0x0f, 0xa8, 0x8f, 0x5a, 0x8d, 0xdc, 0x06, 0x72, 0x32, 0x09, 0x06, - 0x6c, 0xb3, 0x92, 0x67, 0xde, 0xa0, 0x77, 0x3c, 0x65, 0x5d, 0xe1, 0xb8, 0xf7, 0x2e, 0x39, 0x05, - 0x75, 0xe4, 0x75, 0x68, 0x1b, 0x68, 0x9c, 0x44, 0x7c, 0xf4, 0x7b, 0x97, 0x9c, 0x5c, 0x0d, 0x5b, - 0x4c, 0xa6, 0x37, 0x27, 0x49, 0xcf, 0x0b, 0x06, 0xf4, 0x19, 0xae, 0xff, 0x82, 0x63, 0x60, 0x77, - 0x5b, 0xd0, 0xd4, 0xbf, 0xb3, 0xdf, 0x87, 0x9a, 0xd4, 0xba, 0xa8, 0x71, 0x32, 0xe3, 0x72, 0x34, - 0x84, 0x74, 0xa1, 0x66, 0x8e, 0xc2, 0xa9, 0x7d, 0x94, 0xbe, 0xed, 0xcf, 0x41, 0x7b, 0x9f, 0xa9, - 0xbe, 0xc0, 0x0b, 0x86, 0xc2, 0xec, 0x30, 0x7d, 0x3c, 0x9e, 0x1c, 0x3f, 0xa5, 0x53, 0xc1, 0x7f, - 0xa2, 0xc4, 0x84, 0xfe, 0x34, 0x8c, 0x13, 0xd1, 0x0f, 0xfe, 0x6f, 0xff, 0xab, 0x05, 0x8b, 0x8c, - 0x11, 0xde, 0x75, 0x83, 0xa9, 0xe4, 0x82, 0x7d, 0x68, 0xb2, 0xa6, 0x1e, 0x85, 0x5b, 0x5c, 0xab, - 0x73, 0x6d, 0xb5, 0x2e, 0xf6, 0x23, 0x43, 0x7d, 0x4b, 0x27, 0x65, 0xce, 0xd6, 0xd4, 0x31, 0xbe, - 0x66, 0x6a, 0x25, 0x71, 0xa3, 0x21, 0x4d, 0x50, 0xdf, 0x0b, 0xfd, 0x0f, 0x1c, 0xda, 0x0e, 0x83, - 0x13, 0x72, 0x1d, 0x9a, 0xb1, 0x9b, 0xf4, 0xc6, 0x34, 0xc2, 0x35, 0x41, 0xd5, 0x50, 0x76, 0x20, - 0x76, 0x93, 0x43, 0x1a, 0xdd, 0x9d, 0x26, 0xb4, 0xfb, 0x33, 0xb0, 0x94, 0xeb, 0x85, 0x69, 0xa3, - 0x74, 0x8a, 0xec, 0x5f, 0xb2, 0x02, 0xd5, 0x33, 0xd7, 0x9f, 0x50, 0x61, 0x86, 0x78, 0xe1, 0xed, - 0xd2, 0x5b, 0x96, 0xfd, 0x1a, 0xb4, 0xd3, 0x61, 0x0b, 0x61, 0x25, 0x50, 0x61, 0x2b, 0x2d, 0x1a, - 0xc0, 0xff, 0xed, 0x6f, 0x5b, 0x9c, 0x70, 0x3b, 0xf4, 0x94, 0x4a, 0x67, 0x84, 0x4c, 0xf3, 0x4b, - 0x42, 0xf6, 0xff, 0x4c, 0x93, 0xf7, 0xa3, 0x4f, 0x96, 0x5c, 0x81, 0x5a, 0x4c, 0x83, 0x41, 0xcf, - 0xf5, 0x7d, 0xd4, 0x7c, 0x35, 0x67, 0x9e, 0x95, 0xb7, 0x7c, 0xdf, 0xbe, 0x09, 0x4b, 0xda, 0xe8, - 0x9e, 0x33, 0x8f, 0x03, 0x20, 0xfb, 0x5e, 0x9c, 0x3c, 0x0e, 0xe2, 0xb1, 0xa6, 0x31, 0x5f, 0x82, - 0xfa, 0xc8, 0x0b, 0x70, 0x64, 0x9c, 0x15, 0xab, 0x4e, 0x6d, 0xe4, 0x05, 0x6c, 0x5c, 0x31, 0x56, - 0xba, 0xcf, 0x44, 0x65, 0x49, 0x54, 0xba, 0xcf, 0xb0, 0xd2, 0x7e, 0x0b, 0x96, 0x8d, 0xf6, 0x44, - 0xd7, 0xaf, 0x42, 0x75, 0x92, 0x3c, 0x0b, 0xa5, 0x3d, 0x6b, 0x08, 0x0e, 0x61, 0x9e, 0x91, 0xc3, - 0x6b, 0xec, 0x77, 0x60, 0xe9, 0x80, 0x9e, 0x0b, 0xce, 0x94, 0x03, 0x79, 0xed, 0x42, 0xaf, 0x09, - 0xeb, 0xed, 0x5b, 0x40, 0xf4, 0x8f, 0x45, 0xaf, 0x9a, 0x0f, 0x65, 0x19, 0x3e, 0x94, 0xfd, 0x1a, - 0x90, 0x23, 0x6f, 0x18, 0xbc, 0x4b, 0xe3, 0xd8, 0x1d, 0x2a, 0xa5, 0xd6, 0x86, 0xf2, 0x28, 0x1e, - 0x0a, 0xd9, 0x63, 0xff, 0xda, 0x9f, 0x84, 0x65, 0x83, 0x4e, 0x34, 0x7c, 0x15, 0xea, 0xb1, 0x37, - 0x0c, 0xdc, 0x64, 0x12, 0x51, 0xd1, 0x74, 0x0a, 0xd8, 0xf7, 0x60, 0xe5, 0x4b, 0x34, 0xf2, 0x4e, - 0xa6, 0x17, 0x35, 0x6f, 0xb6, 0x53, 0xca, 0xb6, 0xb3, 0x0b, 0xab, 0x99, 0x76, 0x44, 0xf7, 0x9c, - 0x7d, 0xc5, 0x4e, 0xd6, 0x1c, 0x5e, 0xd0, 0x84, 0xb9, 0xa4, 0x0b, 0xb3, 0xfd, 0x18, 0xc8, 0x76, - 0x18, 0x04, 0xb4, 0x9f, 0x1c, 0x52, 0x1a, 0xa5, 0xa7, 0xa6, 0x94, 0x57, 0x1b, 0x77, 0x2e, 0x8b, - 0x95, 0xcd, 0x6a, 0x08, 0xc1, 0xc4, 0x04, 0x2a, 0x63, 0x1a, 0x8d, 0xb0, 0xe1, 0x9a, 0x83, 0xff, - 0xdb, 0xab, 0xb0, 0x6c, 0x34, 0x2b, 0x1c, 0xde, 0x37, 0x60, 0x75, 0xc7, 0x8b, 0xfb, 0xf9, 0x0e, - 0x3b, 0x30, 0x3f, 0x9e, 0x1c, 0xf7, 0x52, 0x49, 0x94, 0x45, 0xe6, 0x23, 0x65, 0x3f, 0x11, 0x8d, - 0xfd, 0xaa, 0x05, 0x95, 0xbd, 0x47, 0xfb, 0xdb, 0x4c, 0xf9, 0x79, 0x41, 0x3f, 0x1c, 0x31, 0x03, - 0xc2, 0x27, 0xad, 0xca, 0x33, 0x25, 0xec, 0x2a, 0xd4, 0xd1, 0xee, 0x30, 0xb7, 0x4f, 0x1c, 0x70, - 0x52, 0x80, 0xb9, 0x9c, 0xf4, 0xd9, 0xd8, 0x8b, 0xd0, 0xa7, 0x94, 0x9e, 0x62, 0x05, 0xf5, 0x66, - 0xbe, 0xc2, 0xfe, 0x76, 0x15, 0xe6, 0x85, 0x35, 0xc1, 0xfe, 0xfa, 0x89, 0x77, 0x46, 0xc5, 0x48, - 0x44, 0x89, 0xd9, 0xf4, 0x88, 0x8e, 0xc2, 0x84, 0xf6, 0x8c, 0x6d, 0x30, 0x41, 0x74, 0xa9, 0x79, - 0x43, 0x3d, 0xee, 0x84, 0x97, 0x39, 0x95, 0x01, 0xb2, 0xc5, 0x92, 0x1e, 0x45, 0x05, 0x3d, 0x0a, - 0x59, 0x64, 0x2b, 0xd1, 0x77, 0xc7, 0x6e, 0xdf, 0x4b, 0xa6, 0x42, 0x25, 0xa8, 0x32, 0x6b, 0xdb, - 0x0f, 0xfb, 0xae, 0xdf, 0x3b, 0x76, 0x7d, 0x37, 0xe8, 0x53, 0xe9, 0xae, 0x1b, 0x20, 0x73, 0x5d, - 0xc5, 0x90, 0x24, 0x19, 0x77, 0x6f, 0x33, 0x28, 0x33, 0x48, 0xfd, 0x70, 0x34, 0xf2, 0x12, 0xe6, - 0xf1, 0xa2, 0x37, 0x54, 0x76, 0x34, 0x84, 0x1f, 0x0e, 0xb0, 0x74, 0xce, 0x57, 0xaf, 0x2e, 0x0f, - 0x07, 0x1a, 0xc8, 0x5a, 0x61, 0x2e, 0x15, 0x53, 0x63, 0x4f, 0xcf, 0x3b, 0xc0, 0x5b, 0x49, 0x11, - 0xb6, 0x0f, 0x93, 0x20, 0xa6, 0x49, 0xe2, 0xd3, 0x81, 0x1a, 0x50, 0x03, 0xc9, 0xf2, 0x15, 0xe4, - 0x36, 0x2c, 0x73, 0x27, 0x3c, 0x76, 0x93, 0x30, 0x3e, 0xf5, 0xe2, 0x5e, 0xcc, 0xdc, 0xd9, 0x26, - 0xd2, 0x17, 0x55, 0x91, 0xb7, 0xe0, 0x72, 0x06, 0x8e, 0x68, 0x9f, 0x7a, 0x67, 0x74, 0xd0, 0x59, - 0xc0, 0xaf, 0x66, 0x55, 0x93, 0xeb, 0xd0, 0x60, 0x67, 0x8f, 0xc9, 0x78, 0xe0, 0x32, 0x8b, 0xdc, - 0xc2, 0x7d, 0xd0, 0x21, 0xf2, 0x06, 0x2c, 0x8c, 0x29, 0x37, 0xe7, 0xa7, 0x89, 0xdf, 0x8f, 0x3b, - 0x8b, 0x86, 0x76, 0x63, 0x9c, 0xeb, 0x98, 0x14, 0x8c, 0x29, 0xfb, 0x31, 0x3a, 0xa1, 0xee, 0xb4, - 0xd3, 0x46, 0x76, 0x4b, 0x01, 0x94, 0x91, 0xc8, 0x3b, 0x73, 0x13, 0xda, 0x59, 0xe2, 0x0a, 0x5d, - 0x14, 0xd9, 0x77, 0x5e, 0xe0, 0x25, 0x9e, 0x9b, 0x84, 0x51, 0x87, 0x60, 0x5d, 0x0a, 0xd8, 0x7f, - 0x60, 0x71, 0xb5, 0x2b, 0x58, 0x54, 0xa9, 0xcf, 0x57, 0xa0, 0xc1, 0x99, 0xb3, 0x17, 0x06, 0xfe, - 0x54, 0xf0, 0x2b, 0x70, 0xe8, 0x61, 0xe0, 0x4f, 0xc9, 0xc7, 0x60, 0xc1, 0x0b, 0x74, 0x12, 0x2e, - 0xe1, 0x4d, 0x09, 0x22, 0xd1, 0x2b, 0xd0, 0x18, 0x4f, 0x8e, 0x7d, 0xaf, 0xcf, 0x49, 0xca, 0xbc, - 0x15, 0x0e, 0x21, 0x01, 0x73, 0x06, 0xf9, 0x38, 0x39, 0x45, 0x05, 0x29, 0x1a, 0x02, 0x63, 0x24, - 0xf6, 0x5d, 0x58, 0x31, 0x07, 0x28, 0x54, 0xd9, 0x06, 0xd4, 0x04, 0xe7, 0xc7, 0x9d, 0x06, 0xae, - 0x5e, 0x4b, 0xac, 0x9e, 0x20, 0x75, 0x54, 0xbd, 0xfd, 0xfd, 0x0a, 0x2c, 0x0b, 0x74, 0xdb, 0x0f, - 0x63, 0x7a, 0x34, 0x19, 0x8d, 0xdc, 0xa8, 0x40, 0xa4, 0xac, 0x0b, 0x44, 0xaa, 0x64, 0x8a, 0x14, - 0x63, 0xf4, 0x53, 0xd7, 0x0b, 0xb8, 0x27, 0xcb, 0xe5, 0x51, 0x43, 0xc8, 0x3a, 0x2c, 0xf6, 0xfd, - 0x30, 0xe6, 0x5e, 0x9b, 0x7e, 0xe8, 0xcc, 0xc2, 0x79, 0x15, 0x50, 0x2d, 0x52, 0x01, 0xba, 0x08, - 0xcf, 0x65, 0x44, 0xd8, 0x86, 0x26, 0x6b, 0x94, 0x4a, 0x8d, 0x34, 0xcf, 0x3d, 0x39, 0x1d, 0x63, - 0xe3, 0xc9, 0x0a, 0x0c, 0x97, 0xce, 0xc5, 0x22, 0x71, 0x61, 0x67, 0x5a, 0xa6, 0xf1, 0x34, 0xea, - 0xba, 0x10, 0x97, 0x7c, 0x15, 0xb9, 0x07, 0xc0, 0xfb, 0x42, 0xb3, 0x0b, 0x68, 0x76, 0x5f, 0x33, - 0x77, 0x44, 0x5f, 0xfb, 0x5b, 0xac, 0x30, 0x89, 0x28, 0x9a, 0x62, 0xed, 0x4b, 0xfb, 0xd7, 0x2c, - 0x68, 0x68, 0x75, 0x64, 0x15, 0x96, 0xb6, 0x1f, 0x3e, 0x3c, 0xdc, 0x75, 0xb6, 0x1e, 0x3d, 0xf8, - 0xd2, 0x6e, 0x6f, 0x7b, 0xff, 0xe1, 0xd1, 0x6e, 0xfb, 0x12, 0x83, 0xf7, 0x1f, 0x6e, 0x6f, 0xed, - 0xf7, 0xee, 0x3d, 0x74, 0xb6, 0x25, 0x6c, 0x91, 0x35, 0x20, 0xce, 0xee, 0xbb, 0x0f, 0x1f, 0xed, - 0x1a, 0x78, 0x89, 0xb4, 0xa1, 0x79, 0xd7, 0xd9, 0xdd, 0xda, 0xde, 0x13, 0x48, 0x99, 0xac, 0x40, - 0xfb, 0xde, 0xe3, 0x83, 0x9d, 0x07, 0x07, 0xf7, 0x7b, 0xdb, 0x5b, 0x07, 0xdb, 0xbb, 0xfb, 0xbb, - 0x3b, 0xed, 0x0a, 0x59, 0x80, 0xfa, 0xd6, 0xdd, 0xad, 0x83, 0x9d, 0x87, 0x07, 0xbb, 0x3b, 0xed, - 0xaa, 0xfd, 0xcf, 0x16, 0xac, 0xe2, 0xa8, 0x07, 0x59, 0x01, 0xb9, 0x0e, 0x8d, 0x7e, 0x18, 0x8e, - 0x29, 0xd3, 0xf6, 0x4a, 0xa1, 0xeb, 0x10, 0x63, 0x7e, 0xae, 0x3e, 0x4f, 0xc2, 0xa8, 0x4f, 0x85, - 0x7c, 0x00, 0x42, 0xf7, 0x18, 0xc2, 0x98, 0x5f, 0x6c, 0x2f, 0xa7, 0xe0, 0xe2, 0xd1, 0xe0, 0x18, - 0x27, 0x59, 0x83, 0xb9, 0xe3, 0x88, 0xba, 0xfd, 0x53, 0x21, 0x19, 0xa2, 0x44, 0x3e, 0x9e, 0x1e, - 0x30, 0xfa, 0x6c, 0xf5, 0x7d, 0x3a, 0x40, 0x8e, 0xa9, 0x39, 0x8b, 0x02, 0xdf, 0x16, 0x30, 0x93, - 0x7f, 0xf7, 0xd8, 0x0d, 0x06, 0x61, 0x40, 0x07, 0xc2, 0xd9, 0x4b, 0x01, 0xfb, 0x10, 0xd6, 0xb2, - 0xf3, 0x13, 0xf2, 0xf5, 0xa6, 0x26, 0x5f, 0xdc, 0xf7, 0xea, 0xce, 0xde, 0x4d, 0x4d, 0xd6, 0xfe, - 0xc3, 0x82, 0x0a, 0x33, 0xc5, 0xb3, 0xcd, 0xb6, 0xee, 0x5d, 0x95, 0x73, 0x11, 0x2a, 0x3c, 0xb3, - 0x70, 0xe5, 0xcc, 0x0d, 0x98, 0x86, 0xa4, 0xf5, 0x11, 0xed, 0x9f, 0xe1, 0x8c, 0x55, 0x3d, 0x43, - 0x98, 0x80, 0x30, 0xd7, 0x17, 0xbf, 0x16, 0x02, 0x22, 0xcb, 0xb2, 0x0e, 0xbf, 0x9c, 0x4f, 0xeb, - 0xf0, 0xbb, 0x0e, 0xcc, 0x7b, 0xc1, 0x71, 0x38, 0x09, 0x06, 0x28, 0x10, 0x35, 0x47, 0x16, 0x31, - 0x26, 0x86, 0x82, 0xea, 0x8d, 0x24, 0xfb, 0xa7, 0x80, 0x4d, 0xd8, 0xd1, 0x28, 0x46, 0xd7, 0x43, - 0x85, 0x67, 0xde, 0x84, 0x25, 0x0d, 0x4b, 0xdd, 0xd8, 0x31, 0x03, 0x32, 0x6e, 0x2c, 0xfa, 0x2c, - 0xbc, 0xc6, 0x6e, 0x43, 0xeb, 0x3e, 0x4d, 0x1e, 0x04, 0x27, 0xa1, 0x6c, 0xe9, 0x8f, 0x2b, 0xb0, - 0xa8, 0x20, 0xd1, 0xd0, 0x3a, 0x2c, 0x7a, 0x03, 0x1a, 0x24, 0x5e, 0x32, 0xed, 0x19, 0x27, 0xb0, - 0x2c, 0xcc, 0x7c, 0x3d, 0xd7, 0xf7, 0x5c, 0x19, 0x05, 0xe4, 0x05, 0x72, 0x07, 0x56, 0x98, 0x21, - 0x92, 0xb6, 0x45, 0x6d, 0x31, 0x3f, 0xf8, 0x15, 0xd6, 0x31, 0x65, 0xc0, 0x70, 0xa1, 0xed, 0xd5, - 0x27, 0xdc, 0xe7, 0x29, 0xaa, 0x62, 0xab, 0xc6, 0x5b, 0x62, 0x53, 0xae, 0x72, 0x63, 0xa5, 0x80, - 0x5c, 0x98, 0x6d, 0x8e, 0xab, 0xaa, 0x6c, 0x98, 0x4d, 0x0b, 0xd5, 0xd5, 0x72, 0xa1, 0x3a, 0xa6, - 0xca, 0xa6, 0x41, 0x9f, 0x0e, 0x7a, 0x49, 0xd8, 0x43, 0x95, 0x8b, 0xbb, 0x53, 0x73, 0xb2, 0x30, - 0xb9, 0x0a, 0xf3, 0x09, 0x8d, 0x93, 0x80, 0x26, 0xa8, 0x95, 0x6a, 0x18, 0x10, 0x90, 0x10, 0x73, - 0x50, 0x27, 0x91, 0x17, 0x77, 0x9a, 0x18, 0x84, 0xc3, 0xff, 0xc9, 0xa7, 0x60, 0xf5, 0x98, 0xc6, - 0x49, 0xef, 0x94, 0xba, 0x03, 0x1a, 0xe1, 0x4e, 0xf3, 0x68, 0x1f, 0xb7, 0xfb, 0xc5, 0x95, 0x8c, - 0x87, 0xce, 0x68, 0x14, 0x7b, 0x61, 0x80, 0x16, 0xbf, 0xee, 0xc8, 0x22, 0x6b, 0x8f, 0x4d, 0x5e, - 0xd9, 0x4b, 0xb5, 0x82, 0x8b, 0x38, 0xf1, 0xe2, 0x4a, 0x72, 0x03, 0xe6, 0x70, 0x02, 0x71, 0xa7, - 0x6d, 0x44, 0x35, 0xb6, 0x19, 0xe8, 0x88, 0xba, 0xcf, 0x57, 0x6a, 0x8d, 0x76, 0xd3, 0xfe, 0x29, - 0xa8, 0x22, 0xcc, 0x36, 0x9d, 0x2f, 0x06, 0x67, 0x0a, 0x5e, 0x60, 0x43, 0x0b, 0x68, 0x72, 0x1e, - 0x46, 0x4f, 0x65, 0x48, 0x58, 0x14, 0xed, 0x6f, 0xa0, 0x8b, 0xaf, 0x42, 0xa4, 0x8f, 0xd1, 0x3f, - 0x61, 0x07, 0x35, 0xbe, 0xd4, 0xf1, 0xa9, 0x2b, 0x4e, 0x1d, 0x35, 0x04, 0x8e, 0x4e, 0x5d, 0xa6, - 0xb6, 0x8c, 0xdd, 0xe3, 0x07, 0xb9, 0x06, 0x62, 0x7b, 0x7c, 0xf3, 0x6e, 0x40, 0x4b, 0x06, 0x5f, - 0xe3, 0x9e, 0x4f, 0x4f, 0x12, 0x19, 0x57, 0x08, 0x26, 0x23, 0x3c, 0xed, 0xed, 0xd3, 0x93, 0xc4, - 0x3e, 0x80, 0x25, 0xa1, 0x4a, 0x1e, 0x8e, 0xa9, 0xec, 0xfa, 0x33, 0x45, 0x26, 0xb9, 0x71, 0x67, - 0xd9, 0xd4, 0x3d, 0x3c, 0xdc, 0x6c, 0x52, 0xda, 0x0e, 0x10, 0x5d, 0x35, 0x89, 0x06, 0x85, 0x5d, - 0x94, 0x91, 0x13, 0x31, 0x1d, 0x03, 0x63, 0xeb, 0x13, 0x4f, 0xfa, 0x7d, 0x19, 0x32, 0x67, 0xc7, - 0x61, 0x5e, 0xb4, 0xff, 0xc4, 0x82, 0x65, 0x6c, 0x4d, 0x3a, 0x15, 0x42, 0xfd, 0xbf, 0xf5, 0x11, - 0x86, 0xd9, 0xec, 0xeb, 0xd1, 0xa4, 0x15, 0xa8, 0xea, 0x06, 0x81, 0x17, 0x3e, 0xfa, 0xa1, 0xbe, - 0x92, 0x3d, 0xd4, 0xdb, 0xbf, 0x6b, 0xc1, 0x12, 0xd7, 0xc9, 0x89, 0x9b, 0x4c, 0x62, 0x31, 0xfd, - 0x9f, 0x86, 0x05, 0x6e, 0x5c, 0x85, 0x54, 0x8b, 0x81, 0xae, 0x28, 0x05, 0x84, 0x28, 0x27, 0xde, - 0xbb, 0xe4, 0x98, 0xc4, 0xe4, 0x1d, 0x74, 0x70, 0x82, 0x1e, 0xa2, 0x22, 0x30, 0x78, 0xa5, 0xc0, - 0x0c, 0xa8, 0xef, 0x35, 0xf2, 0xbb, 0x35, 0x98, 0xe3, 0xfe, 0xae, 0x7d, 0x1f, 0x16, 0x8c, 0x8e, - 0x8c, 0x80, 0x42, 0x93, 0x07, 0x14, 0x72, 0xa1, 0xa8, 0x52, 0x41, 0x28, 0xea, 0x4f, 0xcb, 0x40, - 0x18, 0xb3, 0x64, 0x76, 0x83, 0x39, 0xdc, 0xe1, 0xc0, 0x38, 0x3e, 0x35, 0x1d, 0x1d, 0x22, 0xb7, - 0x80, 0x68, 0x45, 0x19, 0x51, 0xe4, 0xd6, 0xa7, 0xa0, 0x86, 0xa9, 0x49, 0x61, 0xbc, 0x85, 0x99, - 0x15, 0x07, 0x45, 0xbe, 0xec, 0x85, 0x75, 0xcc, 0xc0, 0x8c, 0x27, 0xf1, 0x29, 0x5e, 0xae, 0x88, - 0x03, 0x96, 0x2c, 0x67, 0xf7, 0x77, 0xee, 0xc2, 0xfd, 0x9d, 0xcf, 0x05, 0x6d, 0x34, 0x17, 0xbf, - 0x66, 0xba, 0xf8, 0x37, 0x60, 0x61, 0xc4, 0x5c, 0xce, 0xc4, 0xef, 0xf7, 0x46, 0xac, 0x77, 0x71, - 0x9e, 0x32, 0x40, 0xb2, 0x01, 0x6d, 0xe1, 0x6e, 0xa4, 0xe7, 0x08, 0xc0, 0x35, 0xce, 0xe1, 0x4c, - 0x7f, 0xa7, 0x61, 0x9c, 0x06, 0x0e, 0x36, 0x05, 0xd8, 0xc9, 0x2b, 0x66, 0x1c, 0xd2, 0x9b, 0x04, - 0xe2, 0x7e, 0x85, 0x0e, 0xf0, 0x24, 0x55, 0x73, 0xf2, 0x15, 0xf6, 0x6f, 0x5b, 0xd0, 0x66, 0x7b, - 0x66, 0xb0, 0xe5, 0xdb, 0x80, 0x52, 0xf1, 0x82, 0x5c, 0x69, 0xd0, 0x92, 0xb7, 0xa0, 0x8e, 0xe5, - 0x70, 0x4c, 0x03, 0xc1, 0x93, 0x1d, 0x93, 0x27, 0x53, 0x7d, 0xb2, 0x77, 0xc9, 0x49, 0x89, 0x35, - 0x8e, 0xfc, 0x7b, 0x0b, 0x1a, 0xa2, 0x97, 0x1f, 0x3a, 0x4c, 0xd0, 0xd5, 0x2e, 0xc4, 0x38, 0x27, - 0xa5, 0xf7, 0x5f, 0xeb, 0xb0, 0x38, 0x72, 0x93, 0x49, 0xc4, 0xec, 0xb1, 0x11, 0x22, 0xc8, 0xc2, - 0xcc, 0xb8, 0xa2, 0xea, 0x8c, 0x7b, 0x89, 0xe7, 0xf7, 0x64, 0xad, 0xb8, 0x7a, 0x2a, 0xaa, 0x62, - 0x1a, 0x24, 0x4e, 0xdc, 0x21, 0x15, 0x76, 0x93, 0x17, 0xec, 0x0e, 0xac, 0x89, 0x09, 0x65, 0x5c, - 0x55, 0xfb, 0x2f, 0x9b, 0x70, 0x39, 0x57, 0xa5, 0xee, 0xa7, 0xc5, 0xd9, 0xd7, 0xf7, 0x46, 0xc7, - 0xa1, 0xf2, 0xf3, 0x2d, 0xfd, 0x58, 0x6c, 0x54, 0x91, 0x21, 0xac, 0x4a, 0x07, 0x81, 0xad, 0x69, - 0x6a, 0xcc, 0x4a, 0x68, 0xa5, 0xde, 0x30, 0xb7, 0x30, 0xdb, 0xa1, 0xc4, 0x75, 0x21, 0x2e, 0x6e, - 0x8f, 0x9c, 0x42, 0x47, 0x79, 0x22, 0x42, 0x59, 0x6b, 0xde, 0x0a, 0xeb, 0xeb, 0xf5, 0x0b, 0xfa, - 0x32, 0x3c, 0x5b, 0x67, 0x66, 0x6b, 0x64, 0x0a, 0xd7, 0x64, 0x1d, 0x6a, 0xe3, 0x7c, 0x7f, 0x95, - 0x17, 0x9a, 0x1b, 0xfa, 0xec, 0x66, 0xa7, 0x17, 0x34, 0x4c, 0xde, 0x87, 0xb5, 0x73, 0xd7, 0x4b, - 0xe4, 0xb0, 0x34, 0xdf, 0xa0, 0x8a, 0x5d, 0xde, 0xb9, 0xa0, 0xcb, 0x27, 0xfc, 0x63, 0xc3, 0x44, - 0xcd, 0x68, 0xb1, 0xfb, 0xb7, 0x16, 0xb4, 0xcc, 0x76, 0x18, 0x9b, 0x0a, 0xd9, 0x97, 0x3a, 0x50, - 0x7a, 0x93, 0x19, 0x38, 0x7f, 0x54, 0x2e, 0x15, 0x1d, 0x95, 0xf5, 0x03, 0x6a, 0xf9, 0xa2, 0x18, - 0x53, 0xe5, 0xc5, 0x62, 0x4c, 0xd5, 0xa2, 0x18, 0x53, 0xf7, 0xbf, 0x2d, 0x20, 0x79, 0x5e, 0x22, - 0xf7, 0xf9, 0x59, 0x3d, 0xa0, 0xbe, 0x50, 0x29, 0x3f, 0xf9, 0x62, 0xfc, 0x28, 0xd7, 0x4e, 0x7e, - 0xcd, 0x04, 0x43, 0xbf, 0x3b, 0xd6, 0x9d, 0x9d, 0x05, 0xa7, 0xa8, 0x2a, 0x13, 0xf5, 0xaa, 0x5c, - 0x1c, 0xf5, 0xaa, 0x5e, 0x1c, 0xf5, 0x9a, 0xcb, 0x46, 0xbd, 0xba, 0xbf, 0x62, 0xc1, 0x72, 0xc1, - 0xa6, 0xff, 0xf8, 0x26, 0xce, 0xb6, 0xc9, 0xd0, 0x05, 0x25, 0xb1, 0x4d, 0x3a, 0xd8, 0xfd, 0x05, - 0x58, 0x30, 0x18, 0xfd, 0xc7, 0xd7, 0x7f, 0xd6, 0x5f, 0xe3, 0x7c, 0x66, 0x60, 0xdd, 0xff, 0x2c, - 0x01, 0xc9, 0x0b, 0xdb, 0xff, 0xeb, 0x18, 0xf2, 0xeb, 0x54, 0x2e, 0x58, 0xa7, 0xff, 0x53, 0x3b, - 0xf0, 0x3a, 0x2c, 0x89, 0x64, 0x16, 0x2d, 0x42, 0xc3, 0x39, 0x26, 0x5f, 0xc1, 0x3c, 0x56, 0x33, - 0xe4, 0x58, 0x33, 0x12, 0x04, 0x34, 0x63, 0x98, 0x89, 0x3c, 0xda, 0x5d, 0xe8, 0x88, 0x15, 0xda, - 0x3d, 0xa3, 0x41, 0x72, 0x34, 0x39, 0xe6, 0x19, 0x21, 0x5e, 0x18, 0xd8, 0xdf, 0x2b, 0x2b, 0xa7, - 0x1b, 0x2b, 0x85, 0x79, 0xff, 0x14, 0x34, 0x75, 0x65, 0x2e, 0xb6, 0x23, 0x13, 0xa0, 0x63, 0x86, - 0x5d, 0xa7, 0x22, 0x3b, 0xd0, 0x42, 0x95, 0x35, 0x50, 0xdf, 0x95, 0xf0, 0xbb, 0xe7, 0x04, 0x1e, - 0xf6, 0x2e, 0x39, 0x99, 0x6f, 0xc8, 0x67, 0xa1, 0x65, 0x1e, 0xa5, 0x84, 0x8f, 0x50, 0xe4, 0x9b, - 0xb3, 0xcf, 0x4d, 0x62, 0xb2, 0x05, 0xed, 0xec, 0x59, 0x4c, 0xdc, 0x16, 0xcf, 0x68, 0x20, 0x47, - 0x4e, 0xde, 0x12, 0x77, 0x4f, 0x55, 0x0c, 0x82, 0xdd, 0x30, 0x3f, 0xd3, 0x96, 0xe9, 0x16, 0xff, - 0xa3, 0xdd, 0x46, 0x7d, 0x15, 0x20, 0xc5, 0x48, 0x1b, 0x9a, 0x0f, 0x0f, 0x77, 0x0f, 0x7a, 0xdb, - 0x7b, 0x5b, 0x07, 0x07, 0xbb, 0xfb, 0xed, 0x4b, 0x84, 0x40, 0x0b, 0xe3, 0x57, 0x3b, 0x0a, 0xb3, - 0x18, 0xb6, 0xb5, 0xcd, 0x63, 0x63, 0x02, 0x2b, 0x91, 0x15, 0x68, 0x3f, 0x38, 0xc8, 0xa0, 0xe5, - 0xbb, 0x75, 0x25, 0x1f, 0xf6, 0x1a, 0xac, 0xf0, 0x84, 0xa7, 0xbb, 0x9c, 0x3d, 0xa4, 0xaf, 0xf0, - 0xfb, 0x16, 0xac, 0x66, 0x2a, 0xd2, 0xc4, 0x03, 0xee, 0x0e, 0x98, 0x3e, 0x82, 0x09, 0x32, 0x9e, - 0x54, 0x9e, 0x5f, 0x46, 0x83, 0xe4, 0x2b, 0x18, 0xcf, 0x6b, 0x9e, 0x62, 0x46, 0x92, 0x8a, 0xaa, - 0xec, 0xcb, 0x3c, 0x2d, 0x2b, 0xa0, 0x7e, 0x66, 0xe0, 0x27, 0x3c, 0x91, 0x4a, 0xaf, 0x48, 0xef, - 0xf2, 0xcc, 0x21, 0xcb, 0x22, 0x73, 0xf2, 0x0d, 0xd7, 0xc3, 0x1c, 0x6f, 0x61, 0x9d, 0xfd, 0x7d, - 0x0b, 0xc8, 0x17, 0x27, 0x34, 0x9a, 0x62, 0xce, 0x80, 0x0a, 0x07, 0x5e, 0xce, 0x06, 0xbb, 0xe6, - 0xc6, 0x93, 0xe3, 0x2f, 0xd0, 0xa9, 0x4c, 0x68, 0x29, 0xa5, 0x09, 0x2d, 0x2f, 0x03, 0xb0, 0xc3, - 0xb1, 0xca, 0x58, 0x40, 0xe7, 0x3a, 0x98, 0x8c, 0x78, 0x83, 0x85, 0x39, 0x27, 0x95, 0x8b, 0x73, - 0x4e, 0xaa, 0x17, 0xe4, 0x9c, 0xd8, 0xef, 0xc0, 0xb2, 0x31, 0x6e, 0xb5, 0xad, 0x32, 0x77, 0xc2, - 0xca, 0xe7, 0x4e, 0xc8, 0xbc, 0x09, 0xfb, 0x9b, 0x25, 0x28, 0xef, 0x85, 0x63, 0x3d, 0x14, 0x6e, - 0x99, 0xa1, 0x70, 0xe1, 0x1f, 0xf4, 0x94, 0xf9, 0x17, 0x66, 0xc3, 0x00, 0xc9, 0x06, 0xb4, 0xdc, - 0x51, 0xd2, 0x4b, 0x42, 0xe6, 0x0f, 0x9d, 0xbb, 0xd1, 0x80, 0xef, 0x35, 0x86, 0x64, 0x32, 0x35, - 0x64, 0x05, 0xca, 0xca, 0x90, 0x22, 0x01, 0x2b, 0x32, 0x67, 0x1c, 0x2f, 0xd9, 0xa6, 0x22, 0xac, - 0x24, 0x4a, 0x8c, 0x95, 0xcc, 0xef, 0xf9, 0x49, 0x88, 0xab, 0xc3, 0xa2, 0x2a, 0xe6, 0xab, 0xb0, - 0xe5, 0x43, 0x32, 0x11, 0x0f, 0x94, 0x65, 0x3d, 0x76, 0x59, 0x33, 0xaf, 0x1c, 0xff, 0xdd, 0x82, - 0x2a, 0xae, 0x0d, 0x53, 0xed, 0x9c, 0xf7, 0x55, 0x34, 0x1c, 0xd7, 0x64, 0xc1, 0xc9, 0xc2, 0xc4, - 0x36, 0x52, 0xc2, 0x4a, 0x6a, 0x42, 0x7a, 0x5a, 0xd8, 0x75, 0xa8, 0xf3, 0x92, 0x4a, 0x7f, 0x42, - 0x92, 0x14, 0x24, 0xd7, 0xa0, 0x72, 0x1a, 0x8e, 0xa5, 0x2f, 0x0a, 0xf2, 0xaa, 0x28, 0x1c, 0x3b, - 0x88, 0xa7, 0xe3, 0x61, 0xed, 0xf1, 0x69, 0x71, 0x0f, 0x23, 0x0b, 0x33, 0x1f, 0x4b, 0x35, 0xab, - 0x2f, 0x53, 0x06, 0xb5, 0x37, 0x60, 0xf1, 0x20, 0x1c, 0x50, 0x2d, 0x24, 0x39, 0x93, 0xcf, 0xed, - 0x5f, 0xb4, 0xa0, 0x26, 0x89, 0xc9, 0x3a, 0x54, 0x98, 0xe3, 0x98, 0x39, 0xd5, 0xa9, 0x2b, 0x62, - 0x46, 0xe7, 0x20, 0x05, 0xb3, 0xb4, 0x18, 0x29, 0x4a, 0x0f, 0x11, 0x32, 0x4e, 0x94, 0xfa, 0xc8, - 0x6a, 0xb8, 0x19, 0xd7, 0x32, 0x83, 0xda, 0xdf, 0xb5, 0x60, 0xc1, 0xe8, 0x83, 0x5c, 0x87, 0x86, - 0xef, 0xc6, 0x89, 0xb8, 0x76, 0x13, 0xdb, 0xa3, 0x43, 0xfa, 0x46, 0x97, 0xcc, 0x20, 0xb5, 0x0a, - 0x9f, 0x96, 0xf5, 0xf0, 0xe9, 0x6d, 0xa8, 0xa7, 0x89, 0x7b, 0x15, 0xc3, 0x82, 0xb2, 0x1e, 0xe5, - 0xe5, 0x77, 0x4a, 0x84, 0x11, 0xb9, 0xd0, 0x0f, 0x23, 0x71, 0xa3, 0xc3, 0x0b, 0xf6, 0x3b, 0xd0, - 0xd0, 0xe8, 0xf5, 0x00, 0x9d, 0x65, 0x04, 0xe8, 0x54, 0x66, 0x48, 0x29, 0xcd, 0x0c, 0xb1, 0xff, - 0xc6, 0x82, 0x05, 0xc6, 0x83, 0x5e, 0x30, 0x3c, 0x0c, 0x7d, 0xaf, 0x3f, 0xc5, 0xbd, 0x97, 0xec, - 0x26, 0x74, 0x86, 0xe4, 0x45, 0x13, 0x66, 0x5c, 0x2f, 0xc3, 0x02, 0x42, 0x44, 0x55, 0x99, 0xc9, - 0x30, 0x93, 0x80, 0x63, 0x37, 0x16, 0x62, 0x21, 0x5c, 0x1a, 0x03, 0x64, 0x92, 0xc6, 0x80, 0xc8, - 0x4d, 0x68, 0x6f, 0xe4, 0xf9, 0xbe, 0xc7, 0x69, 0xb9, 0xc3, 0x5b, 0x54, 0xc5, 0xfa, 0x1c, 0x78, - 0xb1, 0x7b, 0x9c, 0xde, 0x52, 0xa8, 0xb2, 0xfd, 0xe7, 0x25, 0x68, 0x48, 0xcb, 0x38, 0x18, 0x52, - 0x71, 0xa5, 0x86, 0x47, 0x0a, 0xa5, 0x64, 0x34, 0x44, 0xd6, 0x1b, 0x87, 0x10, 0x0d, 0xc9, 0x6e, - 0x79, 0x39, 0xbf, 0xe5, 0x57, 0xa1, 0xce, 0x58, 0xef, 0x0d, 0x3c, 0xed, 0x88, 0x2c, 0x57, 0x05, - 0xc8, 0xda, 0x3b, 0x58, 0x5b, 0x4d, 0x6b, 0x11, 0x78, 0xee, 0x05, 0xdc, 0x5b, 0xd0, 0x14, 0xcd, - 0xe0, 0x9e, 0xa0, 0x4e, 0x49, 0x99, 0xdf, 0xd8, 0x2f, 0xc7, 0xa0, 0x94, 0x5f, 0xde, 0x91, 0x5f, - 0xd6, 0x2e, 0xfa, 0x52, 0x52, 0xda, 0xf7, 0xd5, 0xbd, 0xe6, 0xfd, 0xc8, 0x1d, 0x9f, 0x4a, 0x29, - 0xbd, 0x0d, 0xcb, 0x5e, 0xd0, 0xf7, 0x27, 0x03, 0xda, 0x9b, 0x04, 0x6e, 0x10, 0x84, 0x93, 0xa0, - 0x4f, 0x65, 0xd2, 0x47, 0x51, 0x95, 0x3d, 0x50, 0x39, 0x6f, 0xd8, 0x10, 0xd9, 0x80, 0x2a, 0xeb, - 0x48, 0x5a, 0x85, 0x62, 0x11, 0xe6, 0x24, 0x64, 0x1d, 0xaa, 0x74, 0x30, 0xa4, 0x32, 0x02, 0x40, - 0x32, 0xfe, 0xce, 0x60, 0x48, 0x1d, 0x4e, 0xc0, 0x14, 0x0a, 0xe6, 0x35, 0x9a, 0x0a, 0xc5, 0xb4, - 0x28, 0x73, 0x7d, 0x9e, 0xf9, 0xb8, 0x02, 0xe4, 0x80, 0xcb, 0x80, 0x7e, 0x25, 0xf2, 0xcb, 0x65, - 0x68, 0x68, 0x30, 0xd3, 0x0d, 0x43, 0x36, 0xe0, 0xde, 0xc0, 0x73, 0x47, 0x34, 0xa1, 0x91, 0xe0, - 0xfb, 0x0c, 0xca, 0xe8, 0xdc, 0xb3, 0x61, 0x2f, 0x9c, 0x24, 0xbd, 0x01, 0x1d, 0x46, 0x94, 0x1b, - 0x79, 0x66, 0x74, 0x0c, 0x94, 0xd1, 0x8d, 0xdc, 0x67, 0x3a, 0x1d, 0xe7, 0xa0, 0x0c, 0x2a, 0x2f, - 0x38, 0xf8, 0x1a, 0x55, 0xd2, 0x0b, 0x0e, 0xbe, 0x22, 0x59, 0xad, 0x56, 0x2d, 0xd0, 0x6a, 0x6f, - 0xc2, 0x1a, 0xd7, 0x5f, 0x42, 0xd2, 0x7b, 0x19, 0xc6, 0x9a, 0x51, 0x4b, 0x36, 0xa0, 0xcd, 0xc6, - 0x2c, 0x45, 0x22, 0xf6, 0xbe, 0xc1, 0x83, 0x85, 0x96, 0x93, 0xc3, 0x19, 0x2d, 0x46, 0xed, 0x74, - 0x5a, 0x7e, 0xe1, 0x9b, 0xc3, 0x91, 0xd6, 0x7d, 0x66, 0xd2, 0xd6, 0x05, 0x6d, 0x06, 0xb7, 0x17, - 0xa0, 0x71, 0x94, 0x84, 0x63, 0xb9, 0x29, 0x2d, 0x68, 0xf2, 0xa2, 0x48, 0xbe, 0x79, 0x09, 0xae, - 0x20, 0x17, 0x3d, 0x0a, 0xc7, 0xa1, 0x1f, 0x0e, 0xa7, 0xc6, 0x89, 0xe1, 0xef, 0x2c, 0x58, 0x36, - 0x6a, 0xd3, 0x23, 0x03, 0x06, 0x1b, 0x64, 0xd6, 0x04, 0x67, 0xbc, 0x25, 0x4d, 0xb9, 0x72, 0x42, - 0x1e, 0xd7, 0x7d, 0x2c, 0x12, 0x29, 0xb6, 0x60, 0x51, 0x8e, 0x4c, 0x7e, 0xc8, 0xb9, 0xb0, 0x93, - 0xe7, 0x42, 0xf1, 0x7d, 0x4b, 0x7c, 0x20, 0x9b, 0xf8, 0xac, 0xb8, 0x38, 0xe7, 0x27, 0x08, 0x19, - 0x5b, 0x52, 0x67, 0x0e, 0xfd, 0x84, 0x29, 0x47, 0xd0, 0x57, 0x60, 0x6c, 0xff, 0xba, 0x05, 0x90, - 0x8e, 0x0e, 0xaf, 0x5b, 0x95, 0x81, 0xe0, 0xaf, 0x3c, 0x34, 0x63, 0xf0, 0x2a, 0x34, 0xd5, 0x35, - 0x5d, 0x6a, 0x73, 0x1a, 0x12, 0x63, 0x0e, 0xe3, 0x4d, 0x58, 0x1c, 0xfa, 0xe1, 0x31, 0x1a, 0x6c, - 0xcc, 0xe6, 0x8a, 0x45, 0x0a, 0x52, 0x8b, 0xc3, 0xf7, 0x04, 0x9a, 0x1a, 0xa8, 0x8a, 0x66, 0xa0, - 0xec, 0xdf, 0x28, 0xa9, 0x5b, 0x95, 0x74, 0xce, 0x33, 0xa5, 0x8c, 0xdc, 0xc9, 0xa9, 0xd3, 0x19, - 0x97, 0x18, 0x18, 0x45, 0x3d, 0xbc, 0x30, 0xc8, 0xf3, 0x0e, 0xb4, 0x22, 0xae, 0xaf, 0xa4, 0x32, - 0xab, 0x3c, 0x47, 0x99, 0x2d, 0x44, 0x86, 0x15, 0xfb, 0x38, 0xb4, 0xdd, 0xc1, 0x19, 0x8d, 0x12, - 0x0f, 0x8f, 0xd9, 0xe8, 0x42, 0x70, 0x15, 0xbc, 0xa8, 0xe1, 0x68, 0xd9, 0x6f, 0xc2, 0xa2, 0x48, - 0xfb, 0x52, 0x94, 0x22, 0x85, 0x3b, 0x85, 0x19, 0xa1, 0xfd, 0x87, 0xf2, 0x02, 0xc7, 0xdc, 0xc3, - 0xd9, 0x2b, 0xa2, 0xcf, 0xae, 0x94, 0x99, 0xdd, 0xc7, 0xc4, 0x65, 0xca, 0x40, 0x9e, 0xe5, 0xcb, - 0x5a, 0x92, 0xc5, 0x40, 0x5c, 0x7e, 0x99, 0x4b, 0x5a, 0x79, 0x91, 0x25, 0xb5, 0x7f, 0x60, 0xc1, - 0xfc, 0x5e, 0x38, 0xde, 0x13, 0xe9, 0x26, 0x28, 0x08, 0x2a, 0xdf, 0x52, 0x16, 0x9f, 0x93, 0x88, - 0x52, 0x68, 0xb9, 0x17, 0xb2, 0x96, 0xfb, 0x67, 0xe1, 0x25, 0x8c, 0x24, 0x45, 0xe1, 0x38, 0x8c, - 0x98, 0x30, 0xba, 0x3e, 0x37, 0xd3, 0x61, 0x90, 0x9c, 0x4a, 0x35, 0xf6, 0x3c, 0x12, 0x3c, 0xde, - 0xb1, 0x63, 0x09, 0x77, 0xba, 0x85, 0xa7, 0xc1, 0xb5, 0x5b, 0xbe, 0xc2, 0xfe, 0x0c, 0xd4, 0xd1, - 0x55, 0xc6, 0x69, 0xbd, 0x0e, 0xf5, 0xd3, 0x70, 0xdc, 0x3b, 0xf5, 0x82, 0x44, 0x0a, 0x77, 0x2b, - 0xf5, 0x61, 0xf7, 0x70, 0x41, 0x14, 0x81, 0xfd, 0xcd, 0x39, 0x98, 0x7f, 0x10, 0x9c, 0x85, 0x5e, - 0x1f, 0x2f, 0x8b, 0x46, 0x74, 0x14, 0xca, 0xec, 0x53, 0xf6, 0x3f, 0xb9, 0x0a, 0xf3, 0x98, 0x6e, - 0x35, 0xe6, 0x4c, 0xdb, 0xe4, 0x97, 0xba, 0x02, 0x62, 0x4e, 0x42, 0x94, 0x26, 0xbe, 0x73, 0xf1, - 0xd1, 0x10, 0x76, 0x88, 0x88, 0xf4, 0xc4, 0x75, 0x51, 0x4a, 0xb3, 0x7b, 0xab, 0x5a, 0x76, 0x2f, - 0xeb, 0x4b, 0xa4, 0xc7, 0xf0, 0xfc, 0x09, 0xde, 0x97, 0x80, 0xf0, 0xe0, 0x13, 0x51, 0x1e, 0x09, - 0x44, 0x97, 0x63, 0x5e, 0x1c, 0x7c, 0x74, 0x90, 0xb9, 0x25, 0xfc, 0x03, 0x4e, 0xc3, 0x95, 0xb0, - 0x0e, 0x31, 0x17, 0x2e, 0xfb, 0x28, 0xa1, 0xce, 0x79, 0x3f, 0x03, 0x33, 0x4d, 0x3d, 0xa0, 0x4a, - 0xa1, 0xf2, 0x79, 0x00, 0x4f, 0xee, 0xcf, 0xe2, 0xda, 0x71, 0x89, 0x67, 0xc6, 0xc9, 0xe3, 0x12, - 0x63, 0x18, 0xd7, 0xf7, 0x8f, 0xdd, 0xfe, 0x53, 0x7c, 0x73, 0x82, 0xd7, 0x37, 0x75, 0xc7, 0x04, - 0x31, 0xc9, 0x25, 0xdd, 0x55, 0xbc, 0xfe, 0xae, 0x38, 0x3a, 0x44, 0xee, 0x40, 0x03, 0x8f, 0x88, - 0x62, 0x5f, 0x5b, 0xb8, 0xaf, 0x6d, 0xfd, 0x0c, 0x89, 0x3b, 0xab, 0x13, 0xe9, 0x17, 0x59, 0x8b, - 0xb9, 0x5c, 0x35, 0x77, 0x30, 0x10, 0xf7, 0x7f, 0x6d, 0xec, 0x2d, 0x05, 0x98, 0x55, 0x15, 0x0b, - 0xc6, 0x09, 0x96, 0x90, 0xc0, 0xc0, 0xc8, 0x35, 0xa8, 0xb1, 0xe3, 0xcb, 0xd8, 0xf5, 0x06, 0x98, - 0xec, 0xc6, 0x4f, 0x51, 0x0a, 0x63, 0x6d, 0xc8, 0xff, 0xf1, 0x9e, 0x6e, 0x19, 0x57, 0xc5, 0xc0, - 0xd8, 0xda, 0xa8, 0x32, 0x0a, 0xd3, 0x0a, 0xdf, 0x51, 0x03, 0x24, 0x6f, 0xe0, 0x2d, 0x4c, 0x42, - 0x3b, 0xab, 0x18, 0xe5, 0x79, 0x49, 0xcc, 0x59, 0x30, 0xad, 0xfc, 0x7b, 0xc4, 0x48, 0x1c, 0x4e, - 0x69, 0x7f, 0x12, 0x9a, 0x3a, 0x4c, 0x6a, 0x50, 0x79, 0x78, 0xb8, 0x7b, 0xd0, 0xbe, 0x44, 0x1a, - 0x30, 0x7f, 0xb4, 0xfb, 0xe8, 0xd1, 0xfe, 0xee, 0x4e, 0xdb, 0x22, 0x4d, 0xa8, 0xa9, 0x8c, 0xa4, - 0x92, 0x9d, 0x00, 0xd9, 0x1a, 0x0c, 0xc4, 0x77, 0xea, 0xd8, 0x9e, 0x72, 0xb0, 0x65, 0x70, 0x70, - 0x01, 0x17, 0x95, 0x8a, 0xb9, 0xe8, 0xb9, 0x6b, 0x6d, 0xef, 0x42, 0xe3, 0x50, 0x7b, 0x91, 0x81, - 0x02, 0x25, 0xdf, 0x62, 0x08, 0x41, 0xd4, 0x10, 0x6d, 0x38, 0x25, 0x7d, 0x38, 0xf6, 0x1f, 0x59, - 0x3c, 0x4b, 0x5c, 0x0d, 0x9f, 0xf7, 0x6d, 0x43, 0x53, 0x05, 0x57, 0xd2, 0xf4, 0x42, 0x03, 0x63, - 0x34, 0x38, 0x94, 0x5e, 0x78, 0x72, 0x12, 0x53, 0x99, 0x0c, 0x64, 0x60, 0x4c, 0x12, 0x98, 0x4f, - 0xc5, 0xfc, 0x13, 0x8f, 0xf7, 0x10, 0x8b, 0xa4, 0xa0, 0x1c, 0xce, 0xf4, 0x7a, 0x44, 0xcf, 0x68, - 0x14, 0xab, 0x34, 0x28, 0x55, 0x56, 0x59, 0x90, 0xd9, 0x55, 0xde, 0x80, 0x9a, 0x6a, 0xd7, 0x54, - 0x59, 0x92, 0x52, 0xd5, 0x33, 0xd5, 0x88, 0xa7, 0x0c, 0x63, 0xd0, 0x5c, 0x4d, 0xe7, 0x2b, 0xc8, - 0x2d, 0x20, 0x27, 0x5e, 0x94, 0x25, 0x2f, 0x23, 0x79, 0x41, 0x8d, 0xfd, 0x04, 0x96, 0x25, 0xeb, - 0x68, 0xce, 0x94, 0xb9, 0x89, 0xd6, 0x45, 0x02, 0x53, 0xca, 0x0b, 0x8c, 0xfd, 0x3f, 0x16, 0xcc, - 0x8b, 0x9d, 0xce, 0xbd, 0xea, 0xe1, 0xfb, 0x6c, 0x60, 0xa4, 0x63, 0x3c, 0x80, 0x40, 0xe9, 0x12, - 0x6a, 0x32, 0xa7, 0x08, 0xcb, 0x45, 0x8a, 0x90, 0x40, 0x65, 0xec, 0x26, 0xa7, 0x78, 0x76, 0xae, - 0x3b, 0xf8, 0x3f, 0x69, 0xf3, 0x48, 0x0f, 0x57, 0xba, 0x18, 0xe5, 0x29, 0x7a, 0xbf, 0xc4, 0xed, - 0x7b, 0xfe, 0xfd, 0xd2, 0x55, 0xa8, 0xe3, 0x00, 0x7a, 0x69, 0x20, 0x27, 0x05, 0x18, 0xe7, 0xf2, - 0x02, 0x4a, 0xb2, 0xc8, 0x45, 0x4e, 0x11, 0x7b, 0x95, 0xef, 0xbc, 0x58, 0x02, 0x75, 0x67, 0x2a, - 0xb2, 0x4e, 0x53, 0x38, 0xe5, 0x08, 0x31, 0x80, 0x2c, 0x47, 0x08, 0x52, 0x47, 0xd5, 0xdb, 0x5d, - 0xe8, 0xec, 0x50, 0x9f, 0x26, 0x74, 0xcb, 0xf7, 0xb3, 0xed, 0xbf, 0x04, 0x57, 0x0a, 0xea, 0x84, - 0xff, 0xfc, 0x45, 0x58, 0xdd, 0xe2, 0x19, 0x7a, 0x3f, 0xae, 0xac, 0x13, 0xbb, 0x03, 0x6b, 0xd9, - 0x26, 0x45, 0x67, 0xf7, 0x60, 0x69, 0x87, 0x1e, 0x4f, 0x86, 0xfb, 0xf4, 0x2c, 0xed, 0x88, 0x40, - 0x25, 0x3e, 0x0d, 0xcf, 0x85, 0x60, 0xe2, 0xff, 0xe4, 0x65, 0x00, 0x9f, 0xd1, 0xf4, 0xe2, 0x31, - 0xed, 0xcb, 0x37, 0x07, 0x88, 0x1c, 0x8d, 0x69, 0xdf, 0x7e, 0x13, 0x88, 0xde, 0x8e, 0x58, 0x2f, - 0x66, 0xf7, 0x26, 0xc7, 0xbd, 0x78, 0x1a, 0x27, 0x74, 0x24, 0x1f, 0x53, 0xe8, 0x90, 0x7d, 0x13, - 0x9a, 0x87, 0xee, 0xd4, 0xa1, 0x5f, 0x17, 0x8f, 0xb9, 0x2e, 0xc3, 0xfc, 0xd8, 0x9d, 0x32, 0x35, - 0xa5, 0x22, 0x4c, 0x58, 0x6d, 0xff, 0x57, 0x09, 0xe6, 0x38, 0x25, 0x6b, 0x75, 0x40, 0xe3, 0xc4, - 0x0b, 0x90, 0xb1, 0x64, 0xab, 0x1a, 0x94, 0x63, 0xe5, 0x52, 0x01, 0x2b, 0x8b, 0x53, 0x9a, 0xcc, - 0xdf, 0x16, 0xfc, 0x6a, 0x60, 0x8c, 0xb9, 0xd2, 0xf4, 0x2f, 0x1e, 0xe2, 0x48, 0x81, 0x4c, 0x30, - 0x32, 0xb5, 0xae, 0x7c, 0x7c, 0x52, 0x4a, 0x05, 0xe7, 0xea, 0x50, 0xa1, 0x0d, 0x9f, 0xe7, 0x0c, - 0x9e, 0xb3, 0xe1, 0x39, 0x5b, 0x5d, 0x7b, 0x01, 0x5b, 0xcd, 0x8f, 0x6e, 0xcf, 0xb3, 0xd5, 0xf0, - 0x02, 0xb6, 0xda, 0x26, 0xd0, 0xbe, 0x47, 0xa9, 0x43, 0x99, 0x37, 0x28, 0x79, 0xf7, 0x5b, 0x16, - 0xb4, 0x05, 0x17, 0xa9, 0x3a, 0xf2, 0xaa, 0xe1, 0xf5, 0x16, 0xe6, 0x51, 0xdf, 0x80, 0x05, 0xf4, - 0x45, 0x55, 0xd4, 0x55, 0x84, 0x88, 0x0d, 0x90, 0xcd, 0x43, 0x5e, 0x77, 0x8e, 0x3c, 0x5f, 0x6c, - 0x8a, 0x0e, 0xc9, 0xc0, 0x6d, 0xe4, 0x8a, 0x34, 0x28, 0xcb, 0x51, 0x65, 0xfb, 0x2f, 0x2c, 0x58, - 0xd2, 0x06, 0x2c, 0xb8, 0xf0, 0x1d, 0x90, 0xd2, 0xc0, 0x43, 0xb0, 0x5c, 0x72, 0x2f, 0x9b, 0x62, - 0x93, 0x7e, 0x66, 0x10, 0xe3, 0x66, 0xba, 0x53, 0x1c, 0x60, 0x3c, 0x19, 0x09, 0x25, 0xaa, 0x43, - 0x8c, 0x91, 0xce, 0x29, 0x7d, 0xaa, 0x48, 0xb8, 0x1a, 0x37, 0x30, 0xcc, 0xd1, 0x61, 0x3e, 0xb4, - 0x22, 0xe2, 0xf6, 0xcc, 0x04, 0xed, 0x7f, 0xb2, 0x60, 0x99, 0x1f, 0x86, 0xc4, 0x51, 0x53, 0x3d, - 0x81, 0x99, 0xe3, 0xa7, 0x3f, 0x2e, 0x91, 0x7b, 0x97, 0x1c, 0x51, 0x26, 0x9f, 0x7e, 0xc1, 0x03, - 0x9c, 0xca, 0xcd, 0x9a, 0xb1, 0x17, 0xe5, 0xa2, 0xbd, 0x78, 0xce, 0x4a, 0x17, 0x85, 0x1c, 0xab, - 0x85, 0x21, 0xc7, 0xbb, 0xf3, 0x50, 0x8d, 0xfb, 0xe1, 0x98, 0xda, 0x6b, 0xb0, 0x62, 0x4e, 0x4e, - 0xa8, 0xa0, 0xef, 0x58, 0xd0, 0xb9, 0xc7, 0x43, 0xf3, 0x5e, 0x30, 0xdc, 0xf3, 0xe2, 0x24, 0x8c, - 0xd4, 0x4b, 0xc1, 0x6b, 0x00, 0x71, 0xe2, 0x46, 0x09, 0xcf, 0xc0, 0x15, 0x01, 0xc1, 0x14, 0x61, - 0x63, 0xa4, 0xc1, 0x80, 0xd7, 0xf2, 0xbd, 0x51, 0xe5, 0x9c, 0x0f, 0x21, 0x8e, 0x6b, 0x86, 0x25, - 0x7e, 0x8d, 0xe7, 0x2a, 0x32, 0x5f, 0x81, 0x9e, 0xa1, 0x5e, 0xe7, 0xe7, 0xa0, 0x0c, 0x6a, 0xff, - 0x83, 0x05, 0x8b, 0xe9, 0x20, 0xf1, 0x16, 0xcf, 0xd4, 0x0e, 0xc2, 0xfc, 0xa6, 0xda, 0x41, 0x86, - 0x2a, 0x3d, 0x66, 0x8f, 0xc5, 0xd8, 0x34, 0x04, 0x25, 0x56, 0x94, 0xc2, 0x89, 0x74, 0x70, 0x74, - 0x88, 0x67, 0x1e, 0x31, 0x4f, 0x40, 0x78, 0x35, 0xa2, 0x84, 0x09, 0xd4, 0xa3, 0x04, 0xbf, 0x9a, - 0xe3, 0x07, 0x41, 0x51, 0x94, 0xa6, 0x74, 0x1e, 0x51, 0x34, 0xa5, 0xfa, 0x35, 0x47, 0x8d, 0xaf, - 0x8f, 0x2c, 0xdb, 0xbf, 0x69, 0xc1, 0x95, 0x82, 0x85, 0x17, 0x52, 0xb3, 0x03, 0x4b, 0x27, 0xaa, - 0x52, 0x2e, 0x0e, 0x17, 0x9d, 0x35, 0x79, 0xcf, 0x64, 0x2e, 0x88, 0x93, 0xff, 0x40, 0xf9, 0x45, - 0x7c, 0xb9, 0x8d, 0xdc, 0xbe, 0x7c, 0xc5, 0xc6, 0xe7, 0xa0, 0xa1, 0xbd, 0xd1, 0x23, 0x97, 0x61, - 0xf9, 0xc9, 0x83, 0x47, 0x07, 0xbb, 0x47, 0x47, 0xbd, 0xc3, 0xc7, 0x77, 0xbf, 0xb0, 0xfb, 0xe5, - 0xde, 0xde, 0xd6, 0xd1, 0x5e, 0xfb, 0x12, 0x59, 0x03, 0x72, 0xb0, 0x7b, 0xf4, 0x68, 0x77, 0xc7, - 0xc0, 0xad, 0x3b, 0xbf, 0x55, 0x86, 0x16, 0xbf, 0xbf, 0xe4, 0xbf, 0xea, 0x40, 0x23, 0xf2, 0x2e, - 0xcc, 0x8b, 0x5f, 0xe5, 0x20, 0xab, 0x62, 0xd8, 0xe6, 0xef, 0x80, 0x74, 0xd7, 0xb2, 0xb0, 0xe0, - 0xcb, 0xe5, 0x5f, 0xfa, 0xc1, 0xbf, 0xfd, 0x4e, 0x69, 0x81, 0x34, 0x36, 0xcf, 0xde, 0xd8, 0x1c, - 0xd2, 0x20, 0x66, 0x6d, 0x7c, 0x15, 0x20, 0xfd, 0xbd, 0x0a, 0xd2, 0x51, 0xfe, 0x60, 0xe6, 0x87, - 0x38, 0xba, 0x57, 0x0a, 0x6a, 0x44, 0xbb, 0x57, 0xb0, 0xdd, 0x65, 0xbb, 0xc5, 0xda, 0xf5, 0x02, - 0x2f, 0xe1, 0x3f, 0x5e, 0xf1, 0xb6, 0xb5, 0x41, 0x06, 0xd0, 0xd4, 0x7f, 0x8e, 0x82, 0xc8, 0x30, - 0x54, 0xc1, 0x8f, 0x61, 0x74, 0x5f, 0x2a, 0xac, 0x93, 0x31, 0x38, 0xec, 0x63, 0xd5, 0x6e, 0xb3, - 0x3e, 0x26, 0x48, 0x91, 0xf6, 0xe2, 0x43, 0xcb, 0xfc, 0xd5, 0x09, 0x72, 0x55, 0x53, 0x19, 0xb9, - 0xdf, 0xbc, 0xe8, 0xbe, 0x3c, 0xa3, 0x56, 0xf4, 0xf5, 0x32, 0xf6, 0x75, 0xd9, 0x26, 0xac, 0xaf, - 0x3e, 0xd2, 0xc8, 0xdf, 0xbc, 0x78, 0xdb, 0xda, 0xb8, 0xf3, 0xd7, 0xd7, 0xa1, 0xae, 0x02, 0xc7, - 0xe4, 0x7d, 0x58, 0x30, 0x2e, 0x98, 0x89, 0x9c, 0x46, 0xd1, 0x7d, 0x74, 0xf7, 0x6a, 0x71, 0xa5, - 0xe8, 0xf8, 0x1a, 0x76, 0xdc, 0x21, 0x6b, 0xac, 0x63, 0x71, 0x43, 0xbb, 0x89, 0xa9, 0x12, 0x3c, - 0xef, 0xf9, 0x29, 0x9f, 0x67, 0x7a, 0x29, 0x6c, 0xcc, 0x33, 0x77, 0x89, 0x6c, 0xcc, 0x33, 0x7f, - 0x93, 0x6c, 0x5f, 0xc5, 0xee, 0xd6, 0xc8, 0x8a, 0xde, 0x9d, 0x0a, 0xe8, 0x52, 0x4c, 0xd6, 0xd7, - 0x7f, 0xb0, 0x81, 0xbc, 0xac, 0x18, 0xab, 0xe8, 0x87, 0x1c, 0x14, 0x8b, 0xe4, 0x7f, 0xcd, 0xc1, - 0xee, 0x60, 0x57, 0x84, 0xe0, 0xf6, 0xe9, 0xbf, 0xd7, 0x40, 0xbe, 0x02, 0x75, 0xf5, 0x40, 0x97, - 0x5c, 0xd6, 0x1e, 0x4c, 0xeb, 0x0f, 0x8a, 0xbb, 0x9d, 0x7c, 0x45, 0x11, 0x63, 0xe8, 0x2d, 0x33, - 0xc6, 0x78, 0x02, 0x0d, 0xed, 0x11, 0x2e, 0xb9, 0xa2, 0xc2, 0xfe, 0xd9, 0x87, 0xbe, 0xdd, 0x6e, - 0x51, 0x95, 0xe8, 0x62, 0x09, 0xbb, 0x68, 0x90, 0x3a, 0xf2, 0x5e, 0xf2, 0x2c, 0x8c, 0xc9, 0x3e, - 0xac, 0x8a, 0x83, 0xcb, 0x31, 0xfd, 0x28, 0x4b, 0x54, 0xf0, 0xfb, 0x15, 0xb7, 0x2d, 0xf2, 0x0e, - 0xd4, 0xe4, 0x5b, 0x6b, 0xb2, 0x56, 0xfc, 0x66, 0xbc, 0x7b, 0x39, 0x87, 0x0b, 0xb5, 0xf6, 0x65, - 0x80, 0xf4, 0xc5, 0xaf, 0x12, 0xe0, 0xdc, 0x0b, 0x62, 0xb5, 0x3b, 0xf9, 0xe7, 0xc1, 0xf6, 0x1a, - 0x4e, 0xb0, 0x4d, 0x50, 0x80, 0x03, 0x7a, 0x2e, 0x9f, 0xaf, 0x7c, 0x0d, 0x1a, 0xda, 0xa3, 0x5f, - 0xb5, 0x7c, 0xf9, 0x07, 0xc3, 0x6a, 0xf9, 0x0a, 0xde, 0x08, 0xdb, 0x5d, 0x6c, 0x7d, 0xc5, 0x5e, - 0x64, 0xad, 0xc7, 0xde, 0x30, 0x18, 0x71, 0x02, 0xb6, 0x41, 0xa7, 0xb0, 0x60, 0xbc, 0xec, 0x55, - 0xd2, 0x53, 0xf4, 0x6e, 0x58, 0x49, 0x4f, 0xe1, 0x63, 0x60, 0xc9, 0xce, 0xf6, 0x12, 0xeb, 0xe7, - 0x0c, 0x49, 0xb4, 0x9e, 0xde, 0x83, 0x86, 0xf6, 0x4a, 0x57, 0xcd, 0x25, 0xff, 0x20, 0x58, 0xcd, - 0xa5, 0xe8, 0x51, 0xef, 0x0a, 0xf6, 0xd1, 0xb2, 0x91, 0x15, 0xf0, 0xf5, 0x07, 0x6b, 0xfb, 0x7d, - 0x68, 0x99, 0xef, 0x76, 0x95, 0x5c, 0x16, 0xbe, 0x00, 0x56, 0x72, 0x39, 0xe3, 0xb1, 0xaf, 0x60, - 0xe9, 0x8d, 0x65, 0xd5, 0xc9, 0xe6, 0x07, 0xe2, 0x1a, 0xf7, 0x43, 0xf2, 0x45, 0xa6, 0x7c, 0xc4, - 0x73, 0x1c, 0x72, 0x59, 0xe3, 0x5a, 0xfd, 0xd1, 0x8e, 0x92, 0x97, 0xdc, 0xcb, 0x1d, 0x93, 0x99, - 0xf9, 0xfb, 0x15, 0xb4, 0x28, 0xf8, 0x2c, 0x47, 0xb3, 0x28, 0xfa, 0xcb, 0x1d, 0xcd, 0xa2, 0x18, - 0xaf, 0x77, 0xb2, 0x16, 0x25, 0xf1, 0x58, 0x1b, 0x01, 0x2c, 0x66, 0x12, 0xd4, 0x94, 0x54, 0x14, - 0x67, 0xf4, 0x76, 0xaf, 0x3d, 0x3f, 0xaf, 0xcd, 0x54, 0x54, 0x52, 0x41, 0x6d, 0xca, 0xfc, 0xe9, - 0x9f, 0x87, 0xa6, 0xfe, 0xa2, 0x92, 0xe8, 0xa2, 0x9c, 0xed, 0xe9, 0xa5, 0xc2, 0x3a, 0x73, 0x73, - 0x49, 0x53, 0xef, 0x86, 0x7c, 0x09, 0xd6, 0x94, 0xa8, 0xeb, 0x39, 0x4f, 0x31, 0x79, 0xa5, 0x20, - 0x13, 0x4a, 0x0f, 0x67, 0x74, 0xaf, 0xcc, 0x4c, 0x95, 0xba, 0x6d, 0x31, 0xa6, 0x31, 0x9f, 0xaa, - 0xa5, 0xca, 0xbc, 0xe8, 0x85, 0x5e, 0xaa, 0xcc, 0x0b, 0xdf, 0xb7, 0x49, 0xa6, 0x21, 0xcb, 0xc6, - 0x1a, 0xf1, 0x48, 0x3e, 0x79, 0x0f, 0x16, 0xb5, 0xac, 0xd2, 0xa3, 0x69, 0xd0, 0x57, 0x02, 0x90, - 0x7f, 0x7e, 0xd0, 0x2d, 0xf2, 0xb7, 0xed, 0xcb, 0xd8, 0xfe, 0x92, 0x6d, 0x2c, 0x0e, 0x63, 0xfe, - 0x6d, 0x68, 0xe8, 0x19, 0xab, 0xcf, 0x69, 0xf7, 0xb2, 0x56, 0xa5, 0x67, 0xcf, 0xdf, 0xb6, 0xc8, - 0xef, 0x59, 0xd0, 0x34, 0xf2, 0x3f, 0x8d, 0xfb, 0xaa, 0x4c, 0x3b, 0x1d, 0xbd, 0x4e, 0x6f, 0xc8, - 0x76, 0x70, 0x90, 0xfb, 0x1b, 0x9f, 0x37, 0x16, 0xe1, 0x03, 0xe3, 0xdc, 0x76, 0x2b, 0xfb, 0x83, - 0x25, 0x1f, 0x66, 0x09, 0xf4, 0x27, 0x1a, 0x1f, 0xde, 0xb6, 0xc8, 0x77, 0x2d, 0x68, 0x99, 0xd1, - 0x06, 0xb5, 0x55, 0x85, 0x71, 0x0d, 0xb5, 0x55, 0x33, 0x42, 0x14, 0xef, 0xe1, 0x28, 0x1f, 0x6d, - 0x38, 0xc6, 0x28, 0xc5, 0x23, 0xc6, 0x1f, 0x6d, 0xb4, 0xe4, 0x6d, 0xfe, 0xa3, 0x45, 0x32, 0x04, - 0x46, 0x34, 0xab, 0x91, 0xdd, 0x5e, 0xfd, 0x77, 0x78, 0xd6, 0xad, 0xdb, 0x16, 0xf9, 0x1a, 0xff, - 0x5d, 0x13, 0xf1, 0x2d, 0x72, 0xc9, 0x8b, 0x7e, 0x6f, 0xdf, 0xc0, 0x39, 0x5d, 0xb3, 0xaf, 0x18, - 0x73, 0xca, 0xda, 0xe3, 0x2d, 0x3e, 0x3a, 0xf1, 0x13, 0x3a, 0xa9, 0x41, 0xc9, 0xfd, 0xac, 0xce, - 0xec, 0x41, 0x8e, 0xf8, 0x20, 0x05, 0xb9, 0xc1, 0xca, 0x2f, 0xd8, 0x8c, 0xbd, 0x81, 0x63, 0xbd, - 0x61, 0xbf, 0x32, 0x73, 0xac, 0x9b, 0x18, 0x33, 0x60, 0x23, 0x3e, 0x04, 0x48, 0xc3, 0xd5, 0x24, - 0x13, 0x2e, 0x55, 0x02, 0x9e, 0x8f, 0x68, 0x9b, 0xf2, 0x22, 0xa3, 0xaa, 0xac, 0xc5, 0xaf, 0x70, - 0x75, 0xf5, 0x40, 0x06, 0x5a, 0x75, 0xa7, 0xc4, 0x8c, 0x2b, 0x1b, 0x4e, 0x49, 0xb6, 0x7d, 0x43, - 0x59, 0xa9, 0xa8, 0xed, 0x63, 0x58, 0xd8, 0x0f, 0xc3, 0xa7, 0x93, 0xb1, 0xba, 0x6c, 0x32, 0xc3, - 0x79, 0x7b, 0x6e, 0x7c, 0xda, 0xcd, 0xcc, 0xc2, 0xbe, 0x8e, 0x4d, 0x75, 0x49, 0x47, 0x6b, 0x6a, - 0xf3, 0x83, 0x34, 0x1c, 0xfe, 0x21, 0x71, 0x61, 0x49, 0xe9, 0x40, 0x35, 0xf0, 0xae, 0xd9, 0x8c, - 0xa1, 0xf9, 0xb2, 0x5d, 0x18, 0x9e, 0xad, 0x1c, 0xed, 0x66, 0x2c, 0xdb, 0xbc, 0x6d, 0x91, 0x43, - 0x68, 0xee, 0xd0, 0x7e, 0x38, 0xa0, 0x22, 0x26, 0xb6, 0x9c, 0x0e, 0x5c, 0x05, 0xd3, 0xba, 0x0b, - 0x06, 0x68, 0xda, 0x85, 0xb1, 0x3b, 0x8d, 0xe8, 0xd7, 0x37, 0x3f, 0x10, 0xd1, 0xb6, 0x0f, 0xa5, - 0x5d, 0x90, 0xe1, 0x48, 0xc3, 0x2e, 0x64, 0xe2, 0x97, 0x86, 0x5d, 0xc8, 0xc5, 0x2f, 0x8d, 0xa5, - 0x96, 0xe1, 0x50, 0xe2, 0xc3, 0x52, 0x2e, 0xe4, 0xa9, 0x4c, 0xc2, 0xac, 0x40, 0x69, 0xf7, 0xfa, - 0x6c, 0x02, 0xb3, 0xb7, 0x0d, 0xb3, 0xb7, 0x23, 0x58, 0xd8, 0xa1, 0x7c, 0xb1, 0x78, 0x46, 0x4b, - 0x26, 0x89, 0x58, 0xcf, 0x97, 0xc9, 0x2a, 0x70, 0xac, 0x33, 0x0d, 0x3f, 0xa6, 0x93, 0x90, 0xaf, - 0x40, 0xe3, 0x3e, 0x4d, 0x64, 0x0a, 0x8b, 0x72, 0x3d, 0x33, 0x39, 0x2d, 0xdd, 0x82, 0x0c, 0x18, - 0x93, 0x67, 0xb0, 0xb5, 0x4d, 0x3a, 0x18, 0x52, 0xae, 0x9c, 0x7a, 0xde, 0xe0, 0x43, 0xf2, 0x73, - 0xd8, 0xb8, 0xca, 0xa1, 0x5b, 0xd3, 0x32, 0x1f, 0xf4, 0xc6, 0x17, 0x33, 0x78, 0x51, 0xcb, 0x41, - 0x38, 0xa0, 0x9a, 0x0b, 0x14, 0x40, 0x43, 0x4b, 0xfd, 0x54, 0x02, 0x94, 0x4f, 0x63, 0x55, 0x02, - 0x54, 0x90, 0x29, 0x6a, 0xaf, 0x63, 0x3f, 0x36, 0xb9, 0x9e, 0xf6, 0xc3, 0xb3, 0x43, 0xd3, 0x9e, - 0x36, 0x3f, 0x70, 0x47, 0xc9, 0x87, 0xe4, 0x09, 0xbe, 0x64, 0xd6, 0xd3, 0x74, 0x52, 0x5f, 0x3a, - 0x9b, 0xd1, 0xa3, 0x16, 0x4b, 0xab, 0x32, 0xfd, 0x6b, 0xde, 0x15, 0x7a, 0x4a, 0x9f, 0x06, 0x38, - 0x4a, 0xc2, 0xf1, 0x8e, 0x4b, 0x47, 0x61, 0x90, 0xea, 0xda, 0x34, 0x15, 0x25, 0xd5, 0x5f, 0x5a, - 0x3e, 0x0a, 0x79, 0xa2, 0x1d, 0x3e, 0x8c, 0x2c, 0x27, 0xc9, 0x5c, 0x33, 0xb3, 0x55, 0xd4, 0x82, - 0x14, 0x64, 0xac, 0xdc, 0xb6, 0xc8, 0x16, 0x40, 0x1a, 0xf3, 0x56, 0x47, 0x89, 0x5c, 0x38, 0x5d, - 0xa9, 0xbd, 0x82, 0x00, 0xf9, 0x21, 0xd4, 0xd3, 0x20, 0xea, 0xe5, 0x34, 0x7d, 0xd7, 0x08, 0xb9, - 0x2a, 0x0b, 0x9e, 0x0b, 0x6d, 0xda, 0x6d, 0x5c, 0x2a, 0x20, 0x35, 0xb6, 0x54, 0x18, 0xaf, 0xf4, - 0x60, 0x99, 0x0f, 0x50, 0xb9, 0x23, 0x98, 0x5c, 0x21, 0x67, 0x52, 0x10, 0x5e, 0x54, 0xd2, 0x5c, - 0x18, 0x9d, 0x33, 0xa2, 0x15, 0x8c, 0x5b, 0x79, 0x62, 0x07, 0x53, 0xcd, 0x23, 0x58, 0xca, 0x85, - 0x8f, 0x94, 0x48, 0xcf, 0x8a, 0xe8, 0x29, 0x91, 0x9e, 0x19, 0x79, 0xb2, 0x57, 0xb1, 0xcb, 0x45, - 0x1b, 0xf0, 0x04, 0x74, 0xee, 0x25, 0xfd, 0xd3, 0xb7, 0xad, 0x8d, 0xbb, 0x37, 0xdf, 0xfb, 0x89, - 0xa1, 0x97, 0x9c, 0x4e, 0x8e, 0x6f, 0xf5, 0xc3, 0xd1, 0xa6, 0x2f, 0x43, 0x0a, 0x22, 0x45, 0x6a, - 0xd3, 0x0f, 0x06, 0x9b, 0xd8, 0xf2, 0xf1, 0x1c, 0xfe, 0xe2, 0xeb, 0x27, 0xff, 0x37, 0x00, 0x00, - 0xff, 0xff, 0xb1, 0x6a, 0x89, 0xcb, 0x23, 0x56, 0x00, 0x00, + 0x04, 0x05, 0x21, 0x05, 0x24, 0xc8, 0x23, 0x0f, 0x89, 0x90, 0x80, 0x37, 0xc4, 0x03, 0x12, 0x42, + 0x90, 0x47, 0x24, 0x24, 0x04, 0x3c, 0x00, 0x6f, 0x48, 0x3c, 0x22, 0xa1, 0xfa, 0xea, 0x4f, 0x57, + 0x75, 0xf7, 0xac, 0xf7, 0x92, 0xc0, 0x93, 0x5d, 0xbf, 0xfa, 0xba, 0xfe, 0x7e, 0xff, 0xea, 0xab, + 0xaf, 0x06, 0xea, 0xd1, 0xb8, 0x7f, 0x6b, 0x1c, 0x85, 0x49, 0x48, 0xaa, 0x7e, 0x10, 0x8d, 0xfb, + 0xdd, 0xab, 0xc3, 0x30, 0x1c, 0xfa, 0x74, 0xd3, 0x1d, 0x7b, 0x9b, 0x6e, 0x10, 0x84, 0x89, 0x9b, + 0x78, 0x61, 0x10, 0x73, 0x22, 0xfb, 0x6b, 0xd0, 0xba, 0x4f, 0x83, 0x23, 0x4a, 0x07, 0x0e, 0xfd, + 0xfa, 0x84, 0xc6, 0x09, 0xf9, 0x04, 0x2c, 0xb9, 0xf4, 0x1b, 0x94, 0x0e, 0x7a, 0x63, 0x37, 0x8e, + 0xc7, 0xa7, 0x91, 0x1b, 0xd3, 0x8e, 0x75, 0xdd, 0x5a, 0x6f, 0x3a, 0x6d, 0x5e, 0x71, 0xa8, 0x70, + 0xf2, 0x2a, 0x34, 0x63, 0x46, 0x4a, 0x83, 0x24, 0x0a, 0xc7, 0xd3, 0x4e, 0x09, 0xe9, 0x1a, 0x0c, + 0xdb, 0xe5, 0x90, 0xed, 0xc3, 0xa2, 0xea, 0x21, 0x1e, 0x87, 0x41, 0x4c, 0xc9, 0x6d, 0x58, 0xe9, + 0x7b, 0xe3, 0x53, 0x1a, 0xf5, 0xf0, 0xe3, 0x51, 0x40, 0x47, 0x61, 0xe0, 0xf5, 0x3b, 0xd6, 0xf5, + 0xf2, 0x7a, 0xdd, 0x21, 0xbc, 0x8e, 0x7d, 0xf1, 0xae, 0xa8, 0x21, 0x37, 0x61, 0x91, 0x06, 0x1c, + 0xa7, 0x03, 0xfc, 0x4a, 0x74, 0xd5, 0x4a, 0x61, 0xf6, 0x81, 0xfd, 0x57, 0x16, 0x2c, 0x3d, 0x08, + 0xbc, 0xe4, 0x89, 0xeb, 0xfb, 0x34, 0x91, 0x73, 0xba, 0x09, 0x8b, 0xe7, 0x08, 0xe0, 0x9c, 0xce, + 0xc3, 0x68, 0x20, 0x66, 0xd4, 0xe2, 0xf0, 0xa1, 0x40, 0x67, 0x8e, 0xac, 0x34, 0x73, 0x64, 0x85, + 0xcb, 0x55, 0x9e, 0xb1, 0x5c, 0x37, 0x61, 0x31, 0xa2, 0xfd, 0xf0, 0x8c, 0x46, 0xd3, 0xde, 0xb9, + 0x17, 0x0c, 0xc2, 0xf3, 0x4e, 0xe5, 0xba, 0xb5, 0x5e, 0x75, 0x5a, 0x12, 0x7e, 0x82, 0xa8, 0xbd, + 0x02, 0x44, 0x9f, 0x05, 0x5f, 0x37, 0x7b, 0x08, 0xcb, 0x8f, 0x03, 0x3f, 0xec, 0x3f, 0xfd, 0x21, + 0x67, 0x57, 0xd0, 0x7d, 0xa9, 0xb0, 0xfb, 0x35, 0x58, 0x31, 0x3b, 0x12, 0x03, 0xa0, 0xb0, 0xba, + 0x7d, 0xea, 0x06, 0x43, 0x2a, 0x9b, 0x94, 0x43, 0xf8, 0x38, 0xb4, 0xfb, 0x93, 0x28, 0xa2, 0x41, + 0x6e, 0x0c, 0x8b, 0x02, 0x57, 0x83, 0x78, 0x15, 0x9a, 0x01, 0x3d, 0x4f, 0xc9, 0x04, 0xcb, 0x04, + 0xf4, 0x5c, 0x92, 0xd8, 0x1d, 0x58, 0xcb, 0x76, 0x23, 0x06, 0xf0, 0xcf, 0x16, 0x54, 0x1e, 0x27, + 0xcf, 0x42, 0x72, 0x0b, 0x2a, 0xc9, 0x74, 0xcc, 0x19, 0xb3, 0x75, 0x87, 0xdc, 0x42, 0x5e, 0xbf, + 0xb5, 0x35, 0x18, 0x44, 0x34, 0x8e, 0x1f, 0x4d, 0xc7, 0xd4, 0x69, 0xba, 0xbc, 0xd0, 0x63, 0x74, + 0xa4, 0x03, 0xf3, 0xa2, 0x8c, 0x1d, 0xd6, 0x1d, 0x59, 0x24, 0xd7, 0x00, 0xdc, 0x51, 0x38, 0x09, + 0x92, 0x5e, 0xec, 0x26, 0xb8, 0x73, 0x65, 0x47, 0x43, 0xc8, 0x55, 0xa8, 0x8f, 0x9f, 0xf6, 0xe2, + 0x7e, 0xe4, 0x8d, 0x13, 0xdc, 0xad, 0xba, 0x93, 0x02, 0xe4, 0x13, 0x50, 0x0b, 0x27, 0xc9, 0x38, + 0xf4, 0x82, 0xa4, 0x53, 0xbd, 0x6e, 0xad, 0x37, 0xee, 0x2c, 0x8a, 0xb1, 0x3c, 0x9c, 0x24, 0x87, + 0x0c, 0x76, 0x14, 0x01, 0xb9, 0x01, 0x0b, 0xfd, 0x30, 0x38, 0xf1, 0xa2, 0x11, 0x97, 0xc1, 0xce, + 0x1c, 0xf6, 0x66, 0x82, 0xf6, 0xb7, 0x4a, 0xd0, 0x78, 0x14, 0xb9, 0x41, 0xec, 0xf6, 0x19, 0xc0, + 0x86, 0x9e, 0x3c, 0xeb, 0x9d, 0xba, 0xf1, 0x29, 0xce, 0xb6, 0xee, 0xc8, 0x22, 0x59, 0x83, 0x39, + 0x3e, 0x50, 0x9c, 0x53, 0xd9, 0x11, 0x25, 0xf2, 0x3a, 0x2c, 0x05, 0x93, 0x51, 0xcf, 0xec, 0xab, + 0x8c, 0x3b, 0x9d, 0xaf, 0x60, 0x0b, 0x70, 0xcc, 0xf6, 0x9a, 0x77, 0xc1, 0x67, 0xa8, 0x21, 0xc4, + 0x86, 0xa6, 0x28, 0x51, 0x6f, 0x78, 0xca, 0xa7, 0x59, 0x75, 0x0c, 0x8c, 0xb5, 0x91, 0x78, 0x23, + 0xda, 0x8b, 0x13, 0x77, 0x34, 0x16, 0xd3, 0xd2, 0x10, 0xac, 0x0f, 0x13, 0xd7, 0xef, 0x9d, 0x50, + 0x1a, 0x77, 0xe6, 0x45, 0xbd, 0x42, 0xc8, 0x6b, 0xd0, 0x1a, 0xd0, 0x38, 0xe9, 0x89, 0x4d, 0xa1, + 0x71, 0xa7, 0x86, 0x12, 0x97, 0x41, 0x19, 0x67, 0xdc, 0xa7, 0x89, 0xb6, 0x3a, 0xb1, 0xe0, 0x40, + 0x7b, 0x1f, 0x88, 0x06, 0xef, 0xd0, 0xc4, 0xf5, 0xfc, 0x98, 0xbc, 0x09, 0xcd, 0x44, 0x23, 0x46, + 0x0d, 0xd3, 0x50, 0xec, 0xa2, 0x7d, 0xe0, 0x18, 0x74, 0xf6, 0x7d, 0xa8, 0xdd, 0xa3, 0x74, 0xdf, + 0x1b, 0x79, 0x09, 0x59, 0x83, 0xea, 0x89, 0xf7, 0x8c, 0x72, 0x86, 0x2e, 0xef, 0x5d, 0x72, 0x78, + 0x91, 0x74, 0x61, 0x7e, 0x4c, 0xa3, 0x3e, 0x95, 0xcb, 0xbf, 0x77, 0xc9, 0x91, 0xc0, 0xdd, 0x79, + 0xa8, 0xfa, 0xec, 0x63, 0xfb, 0x1f, 0x4a, 0xd0, 0x38, 0xa2, 0x81, 0x12, 0x14, 0x02, 0x15, 0x36, + 0x25, 0x21, 0x1c, 0xf8, 0x3f, 0x79, 0x05, 0x1a, 0x38, 0xcd, 0x38, 0x89, 0xbc, 0x60, 0x28, 0xf8, + 0x13, 0x18, 0x74, 0x84, 0x08, 0x69, 0x43, 0xd9, 0x1d, 0x49, 0xde, 0x64, 0xff, 0x32, 0x21, 0x1a, + 0xbb, 0xd3, 0x11, 0x93, 0x37, 0xb5, 0x6b, 0x4d, 0xa7, 0x21, 0xb0, 0x3d, 0xb6, 0x6d, 0xb7, 0x60, + 0x59, 0x27, 0x91, 0xad, 0x57, 0xb1, 0xf5, 0x25, 0x8d, 0x52, 0x74, 0x72, 0x13, 0x16, 0x25, 0x7d, + 0xc4, 0x07, 0x8b, 0xfb, 0x58, 0x77, 0x5a, 0x02, 0x96, 0x53, 0x58, 0x87, 0xf6, 0x89, 0x17, 0xb8, + 0x7e, 0xaf, 0xef, 0x27, 0x67, 0xbd, 0x01, 0xf5, 0x13, 0x17, 0x77, 0xb4, 0xea, 0xb4, 0x10, 0xdf, + 0xf6, 0x93, 0xb3, 0x1d, 0x86, 0x92, 0xd7, 0xa1, 0x7e, 0x42, 0x69, 0x0f, 0x57, 0xa2, 0x53, 0x33, + 0xa4, 0x43, 0xae, 0xae, 0x53, 0x3b, 0x91, 0xeb, 0xbc, 0x0e, 0xed, 0x70, 0x92, 0x0c, 0x43, 0x2f, + 0x18, 0xf6, 0xfa, 0xa7, 0x6e, 0xd0, 0xf3, 0x06, 0x9d, 0xfa, 0x75, 0x6b, 0xbd, 0xe2, 0xb4, 0x24, + 0xce, 0xb4, 0xc2, 0x83, 0x81, 0xfd, 0x67, 0x16, 0x34, 0xf9, 0xa2, 0x0a, 0x83, 0x72, 0x03, 0x16, + 0xe4, 0xd8, 0x69, 0x14, 0x85, 0x91, 0x10, 0x14, 0x13, 0x24, 0x1b, 0xd0, 0x96, 0xc0, 0x38, 0xa2, + 0xde, 0xc8, 0x1d, 0x52, 0xa1, 0x7d, 0x72, 0x38, 0xb9, 0x93, 0xb6, 0x18, 0x85, 0x93, 0x84, 0xab, + 0xf4, 0xc6, 0x9d, 0xa6, 0x18, 0xbe, 0xc3, 0x30, 0xc7, 0x24, 0x61, 0x82, 0x52, 0xb0, 0x29, 0x06, + 0x66, 0x7f, 0xcf, 0x02, 0xc2, 0x86, 0xfe, 0x28, 0xe4, 0x4d, 0x88, 0x35, 0xcd, 0xee, 0xa7, 0xf5, + 0xc2, 0xfb, 0x59, 0x9a, 0xb5, 0x9f, 0xeb, 0x30, 0x87, 0xc3, 0x62, 0x92, 0x5f, 0xce, 0x0e, 0xfd, + 0x6e, 0xa9, 0x63, 0x39, 0xa2, 0x9e, 0xd8, 0x50, 0xe5, 0x73, 0xac, 0x14, 0xcc, 0x91, 0x57, 0xd9, + 0xdf, 0xb1, 0xa0, 0xc9, 0x56, 0x3f, 0xa0, 0x3e, 0x6a, 0x35, 0x72, 0x1b, 0xc8, 0xc9, 0x24, 0x18, + 0xb0, 0xcd, 0x4a, 0x9e, 0x79, 0x83, 0xde, 0xf1, 0x94, 0x75, 0x85, 0xe3, 0xde, 0xbb, 0xe4, 0x14, + 0xd4, 0x91, 0xd7, 0xa1, 0x6d, 0xa0, 0x71, 0x12, 0xf1, 0xd1, 0xef, 0x5d, 0x72, 0x72, 0x35, 0x6c, + 0x31, 0x99, 0xde, 0x9c, 0x24, 0x3d, 0x2f, 0x18, 0xd0, 0x67, 0xb8, 0xfe, 0x0b, 0x8e, 0x81, 0xdd, + 0x6d, 0x41, 0x53, 0xff, 0xce, 0x7e, 0x1f, 0x6a, 0x52, 0xeb, 0xa2, 0xc6, 0xc9, 0x8c, 0xcb, 0xd1, + 0x10, 0xd2, 0x85, 0x9a, 0x39, 0x0a, 0xa7, 0xf6, 0x51, 0xfa, 0xb6, 0x3f, 0x07, 0xed, 0x7d, 0xa6, + 0xfa, 0x02, 0x2f, 0x18, 0x0a, 0xb3, 0xc3, 0xf4, 0xf1, 0x78, 0x72, 0xfc, 0x94, 0x4e, 0x05, 0xff, + 0x89, 0x12, 0x13, 0xfa, 0xd3, 0x30, 0x4e, 0x44, 0x3f, 0xf8, 0xbf, 0xfd, 0x2f, 0x16, 0x2c, 0x32, + 0x46, 0x78, 0xd7, 0x0d, 0xa6, 0x92, 0x0b, 0xf6, 0xa1, 0xc9, 0x9a, 0x7a, 0x14, 0x6e, 0x71, 0xad, + 0xce, 0xb5, 0xd5, 0xba, 0xd8, 0x8f, 0x0c, 0xf5, 0x2d, 0x9d, 0x94, 0x39, 0x5b, 0x53, 0xc7, 0xf8, + 0x9a, 0xa9, 0x95, 0xc4, 0x8d, 0x86, 0x34, 0x41, 0x7d, 0x2f, 0xf4, 0x3f, 0x70, 0x68, 0x3b, 0x0c, + 0x4e, 0xc8, 0x75, 0x68, 0xc6, 0x6e, 0xd2, 0x1b, 0xd3, 0x08, 0xd7, 0x04, 0x55, 0x43, 0xd9, 0x81, + 0xd8, 0x4d, 0x0e, 0x69, 0x74, 0x77, 0x9a, 0xd0, 0xee, 0xcf, 0xc0, 0x52, 0xae, 0x17, 0xa6, 0x8d, + 0xd2, 0x29, 0xb2, 0x7f, 0xc9, 0x0a, 0x54, 0xcf, 0x5c, 0x7f, 0x42, 0x85, 0x19, 0xe2, 0x85, 0xb7, + 0x4b, 0x6f, 0x59, 0xf6, 0x6b, 0xd0, 0x4e, 0x87, 0x2d, 0x84, 0x95, 0x40, 0x85, 0xad, 0xb4, 0x68, + 0x00, 0xff, 0xb7, 0xbf, 0x6d, 0x71, 0xc2, 0xed, 0xd0, 0x53, 0x2a, 0x9d, 0x11, 0x32, 0xcd, 0x2f, + 0x09, 0xd9, 0xff, 0x33, 0x4d, 0xde, 0x8f, 0x3e, 0x59, 0x72, 0x05, 0x6a, 0x31, 0x0d, 0x06, 0x3d, + 0xd7, 0xf7, 0x51, 0xf3, 0xd5, 0x9c, 0x79, 0x56, 0xde, 0xf2, 0x7d, 0xfb, 0x26, 0x2c, 0x69, 0xa3, + 0x7b, 0xce, 0x3c, 0x0e, 0x80, 0xec, 0x7b, 0x71, 0xf2, 0x38, 0x88, 0xc7, 0x9a, 0xc6, 0x7c, 0x09, + 0xea, 0x23, 0x2f, 0xc0, 0x91, 0x71, 0x56, 0xac, 0x3a, 0xb5, 0x91, 0x17, 0xb0, 0x71, 0xc5, 0x58, + 0xe9, 0x3e, 0x13, 0x95, 0x25, 0x51, 0xe9, 0x3e, 0xc3, 0x4a, 0xfb, 0x2d, 0x58, 0x36, 0xda, 0x13, + 0x5d, 0xbf, 0x0a, 0xd5, 0x49, 0xf2, 0x2c, 0x94, 0xf6, 0xac, 0x21, 0x38, 0x84, 0x79, 0x46, 0x0e, + 0xaf, 0xb1, 0xdf, 0x81, 0xa5, 0x03, 0x7a, 0x2e, 0x38, 0x53, 0x0e, 0xe4, 0xb5, 0x0b, 0xbd, 0x26, + 0xac, 0xb7, 0x6f, 0x01, 0xd1, 0x3f, 0x16, 0xbd, 0x6a, 0x3e, 0x94, 0x65, 0xf8, 0x50, 0xf6, 0x6b, + 0x40, 0x8e, 0xbc, 0x61, 0xf0, 0x2e, 0x8d, 0x63, 0x77, 0xa8, 0x94, 0x5a, 0x1b, 0xca, 0xa3, 0x78, + 0x28, 0x64, 0x8f, 0xfd, 0x6b, 0x7f, 0x12, 0x96, 0x0d, 0x3a, 0xd1, 0xf0, 0x55, 0xa8, 0xc7, 0xde, + 0x30, 0x70, 0x93, 0x49, 0x44, 0x45, 0xd3, 0x29, 0x60, 0xdf, 0x83, 0x95, 0x2f, 0xd1, 0xc8, 0x3b, + 0x99, 0x5e, 0xd4, 0xbc, 0xd9, 0x4e, 0x29, 0xdb, 0xce, 0x2e, 0xac, 0x66, 0xda, 0x11, 0xdd, 0x73, + 0xf6, 0x15, 0x3b, 0x59, 0x73, 0x78, 0x41, 0x13, 0xe6, 0x92, 0x2e, 0xcc, 0xf6, 0x63, 0x20, 0xdb, + 0x61, 0x10, 0xd0, 0x7e, 0x72, 0x48, 0x69, 0x94, 0x9e, 0x9a, 0x52, 0x5e, 0x6d, 0xdc, 0xb9, 0x2c, + 0x56, 0x36, 0xab, 0x21, 0x04, 0x13, 0x13, 0xa8, 0x8c, 0x69, 0x34, 0xc2, 0x86, 0x6b, 0x0e, 0xfe, + 0x6f, 0xaf, 0xc2, 0xb2, 0xd1, 0xac, 0x70, 0x78, 0xdf, 0x80, 0xd5, 0x1d, 0x2f, 0xee, 0xe7, 0x3b, + 0xec, 0xc0, 0xfc, 0x78, 0x72, 0xdc, 0x4b, 0x25, 0x51, 0x16, 0x99, 0x8f, 0x94, 0xfd, 0x44, 0x34, + 0xf6, 0xab, 0x16, 0x54, 0xf6, 0x1e, 0xed, 0x6f, 0x33, 0xe5, 0xe7, 0x05, 0xfd, 0x70, 0xc4, 0x0c, + 0x08, 0x9f, 0xb4, 0x2a, 0xcf, 0x94, 0xb0, 0xab, 0x50, 0x47, 0xbb, 0xc3, 0xdc, 0x3e, 0x71, 0xc0, + 0x49, 0x01, 0xe6, 0x72, 0xd2, 0x67, 0x63, 0x2f, 0x42, 0x9f, 0x52, 0x7a, 0x8a, 0x15, 0xd4, 0x9b, + 0xf9, 0x0a, 0xfb, 0xdb, 0x55, 0x98, 0x17, 0xd6, 0x04, 0xfb, 0xeb, 0x27, 0xde, 0x19, 0x15, 0x23, + 0x11, 0x25, 0x66, 0xd3, 0x23, 0x3a, 0x0a, 0x13, 0xda, 0x33, 0xb6, 0xc1, 0x04, 0xd1, 0xa5, 0xe6, + 0x0d, 0xf5, 0xb8, 0x13, 0x5e, 0xe6, 0x54, 0x06, 0xc8, 0x16, 0x4b, 0x7a, 0x14, 0x15, 0xf4, 0x28, + 0x64, 0x91, 0xad, 0x44, 0xdf, 0x1d, 0xbb, 0x7d, 0x2f, 0x99, 0x0a, 0x95, 0xa0, 0xca, 0xac, 0x6d, + 0x3f, 0xec, 0xbb, 0x7e, 0xef, 0xd8, 0xf5, 0xdd, 0xa0, 0x4f, 0xa5, 0xbb, 0x6e, 0x80, 0xcc, 0x75, + 0x15, 0x43, 0x92, 0x64, 0xdc, 0xbd, 0xcd, 0xa0, 0xcc, 0x20, 0xf5, 0xc3, 0xd1, 0xc8, 0x4b, 0x98, + 0xc7, 0x8b, 0xde, 0x50, 0xd9, 0xd1, 0x10, 0x7e, 0x38, 0xc0, 0xd2, 0x39, 0x5f, 0xbd, 0xba, 0x3c, + 0x1c, 0x68, 0x20, 0x6b, 0x85, 0xb9, 0x54, 0x4c, 0x8d, 0x3d, 0x3d, 0xef, 0x00, 0x6f, 0x25, 0x45, + 0xd8, 0x3e, 0x4c, 0x82, 0x98, 0x26, 0x89, 0x4f, 0x07, 0x6a, 0x40, 0x0d, 0x24, 0xcb, 0x57, 0x90, + 0xdb, 0xb0, 0xcc, 0x9d, 0xf0, 0xd8, 0x4d, 0xc2, 0xf8, 0xd4, 0x8b, 0x7b, 0x31, 0x73, 0x67, 0x9b, + 0x48, 0x5f, 0x54, 0x45, 0xde, 0x82, 0xcb, 0x19, 0x38, 0xa2, 0x7d, 0xea, 0x9d, 0xd1, 0x41, 0x67, + 0x01, 0xbf, 0x9a, 0x55, 0x4d, 0xae, 0x43, 0x83, 0x9d, 0x3d, 0x26, 0xe3, 0x81, 0xcb, 0x2c, 0x72, + 0x0b, 0xf7, 0x41, 0x87, 0xc8, 0x1b, 0xb0, 0x30, 0xa6, 0xdc, 0x9c, 0x9f, 0x26, 0x7e, 0x3f, 0xee, + 0x2c, 0x1a, 0xda, 0x8d, 0x71, 0xae, 0x63, 0x52, 0x30, 0xa6, 0xec, 0xc7, 0xe8, 0x84, 0xba, 0xd3, + 0x4e, 0x1b, 0xd9, 0x2d, 0x05, 0x50, 0x46, 0x22, 0xef, 0xcc, 0x4d, 0x68, 0x67, 0x89, 0x2b, 0x74, + 0x51, 0x64, 0xdf, 0x79, 0x81, 0x97, 0x78, 0x6e, 0x12, 0x46, 0x1d, 0x82, 0x75, 0x29, 0x60, 0xff, + 0x81, 0xc5, 0xd5, 0xae, 0x60, 0x51, 0xa5, 0x3e, 0x5f, 0x81, 0x06, 0x67, 0xce, 0x5e, 0x18, 0xf8, + 0x53, 0xc1, 0xaf, 0xc0, 0xa1, 0x87, 0x81, 0x3f, 0x25, 0x1f, 0x83, 0x05, 0x2f, 0xd0, 0x49, 0xb8, + 0x84, 0x37, 0x25, 0x88, 0x44, 0xaf, 0x40, 0x63, 0x3c, 0x39, 0xf6, 0xbd, 0x3e, 0x27, 0x29, 0xf3, + 0x56, 0x38, 0x84, 0x04, 0xcc, 0x19, 0xe4, 0xe3, 0xe4, 0x14, 0x15, 0xa4, 0x68, 0x08, 0x8c, 0x91, + 0xd8, 0x77, 0x61, 0xc5, 0x1c, 0xa0, 0x50, 0x65, 0x1b, 0x50, 0x13, 0x9c, 0x1f, 0x77, 0x1a, 0xb8, + 0x7a, 0x2d, 0xb1, 0x7a, 0x82, 0xd4, 0x51, 0xf5, 0xf6, 0xf7, 0x2b, 0xb0, 0x2c, 0xd0, 0x6d, 0x3f, + 0x8c, 0xe9, 0xd1, 0x64, 0x34, 0x72, 0xa3, 0x02, 0x91, 0xb2, 0x2e, 0x10, 0xa9, 0x92, 0x29, 0x52, + 0x8c, 0xd1, 0x4f, 0x5d, 0x2f, 0xe0, 0x9e, 0x2c, 0x97, 0x47, 0x0d, 0x21, 0xeb, 0xb0, 0xd8, 0xf7, + 0xc3, 0x98, 0x7b, 0x6d, 0xfa, 0xa1, 0x33, 0x0b, 0xe7, 0x55, 0x40, 0xb5, 0x48, 0x05, 0xe8, 0x22, + 0x3c, 0x97, 0x11, 0x61, 0x1b, 0x9a, 0xac, 0x51, 0x2a, 0x35, 0xd2, 0x3c, 0xf7, 0xe4, 0x74, 0x8c, + 0x8d, 0x27, 0x2b, 0x30, 0x5c, 0x3a, 0x17, 0x8b, 0xc4, 0x85, 0x9d, 0x69, 0x99, 0xc6, 0xd3, 0xa8, + 0xeb, 0x42, 0x5c, 0xf2, 0x55, 0xe4, 0x1e, 0x00, 0xef, 0x0b, 0xcd, 0x2e, 0xa0, 0xd9, 0x7d, 0xcd, + 0xdc, 0x11, 0x7d, 0xed, 0x6f, 0xb1, 0xc2, 0x24, 0xa2, 0x68, 0x8a, 0xb5, 0x2f, 0xed, 0x5f, 0xb3, + 0xa0, 0xa1, 0xd5, 0x91, 0x55, 0x58, 0xda, 0x7e, 0xf8, 0xf0, 0x70, 0xd7, 0xd9, 0x7a, 0xf4, 0xe0, + 0x4b, 0xbb, 0xbd, 0xed, 0xfd, 0x87, 0x47, 0xbb, 0xed, 0x4b, 0x0c, 0xde, 0x7f, 0xb8, 0xbd, 0xb5, + 0xdf, 0xbb, 0xf7, 0xd0, 0xd9, 0x96, 0xb0, 0x45, 0xd6, 0x80, 0x38, 0xbb, 0xef, 0x3e, 0x7c, 0xb4, + 0x6b, 0xe0, 0x25, 0xd2, 0x86, 0xe6, 0x5d, 0x67, 0x77, 0x6b, 0x7b, 0x4f, 0x20, 0x65, 0xb2, 0x02, + 0xed, 0x7b, 0x8f, 0x0f, 0x76, 0x1e, 0x1c, 0xdc, 0xef, 0x6d, 0x6f, 0x1d, 0x6c, 0xef, 0xee, 0xef, + 0xee, 0xb4, 0x2b, 0x64, 0x01, 0xea, 0x5b, 0x77, 0xb7, 0x0e, 0x76, 0x1e, 0x1e, 0xec, 0xee, 0xb4, + 0xab, 0xf6, 0x3f, 0x59, 0xb0, 0x8a, 0xa3, 0x1e, 0x64, 0x05, 0xe4, 0x3a, 0x34, 0xfa, 0x61, 0x38, + 0xa6, 0x4c, 0xdb, 0x2b, 0x85, 0xae, 0x43, 0x8c, 0xf9, 0xb9, 0xfa, 0x3c, 0x09, 0xa3, 0x3e, 0x15, + 0xf2, 0x01, 0x08, 0xdd, 0x63, 0x08, 0x63, 0x7e, 0xb1, 0xbd, 0x9c, 0x82, 0x8b, 0x47, 0x83, 0x63, + 0x9c, 0x64, 0x0d, 0xe6, 0x8e, 0x23, 0xea, 0xf6, 0x4f, 0x85, 0x64, 0x88, 0x12, 0xf9, 0x78, 0x7a, + 0xc0, 0xe8, 0xb3, 0xd5, 0xf7, 0xe9, 0x00, 0x39, 0xa6, 0xe6, 0x2c, 0x0a, 0x7c, 0x5b, 0xc0, 0x4c, + 0xfe, 0xdd, 0x63, 0x37, 0x18, 0x84, 0x01, 0x1d, 0x08, 0x67, 0x2f, 0x05, 0xec, 0x43, 0x58, 0xcb, + 0xce, 0x4f, 0xc8, 0xd7, 0x9b, 0x9a, 0x7c, 0x71, 0xdf, 0xab, 0x3b, 0x7b, 0x37, 0x35, 0x59, 0xfb, + 0x0f, 0x0b, 0x2a, 0xcc, 0x14, 0xcf, 0x36, 0xdb, 0xba, 0x77, 0x55, 0xce, 0x45, 0xa8, 0xf0, 0xcc, + 0xc2, 0x95, 0x33, 0x37, 0x60, 0x1a, 0x92, 0xd6, 0x47, 0xb4, 0x7f, 0x86, 0x33, 0x56, 0xf5, 0x0c, + 0x61, 0x02, 0xc2, 0x5c, 0x5f, 0xfc, 0x5a, 0x08, 0x88, 0x2c, 0xcb, 0x3a, 0xfc, 0x72, 0x3e, 0xad, + 0xc3, 0xef, 0x3a, 0x30, 0xef, 0x05, 0xc7, 0xe1, 0x24, 0x18, 0xa0, 0x40, 0xd4, 0x1c, 0x59, 0xc4, + 0x98, 0x18, 0x0a, 0xaa, 0x37, 0x92, 0xec, 0x9f, 0x02, 0x36, 0x61, 0x47, 0xa3, 0x18, 0x5d, 0x0f, + 0x15, 0x9e, 0x79, 0x13, 0x96, 0x34, 0x2c, 0x75, 0x63, 0xc7, 0x0c, 0xc8, 0xb8, 0xb1, 0xe8, 0xb3, + 0xf0, 0x1a, 0xbb, 0x0d, 0xad, 0xfb, 0x34, 0x79, 0x10, 0x9c, 0x84, 0xb2, 0xa5, 0x3f, 0xae, 0xc0, + 0xa2, 0x82, 0x44, 0x43, 0xeb, 0xb0, 0xe8, 0x0d, 0x68, 0x90, 0x78, 0xc9, 0xb4, 0x67, 0x9c, 0xc0, + 0xb2, 0x30, 0xf3, 0xf5, 0x5c, 0xdf, 0x73, 0x65, 0x14, 0x90, 0x17, 0xc8, 0x1d, 0x58, 0x61, 0x86, + 0x48, 0xda, 0x16, 0xb5, 0xc5, 0xfc, 0xe0, 0x57, 0x58, 0xc7, 0x94, 0x01, 0xc3, 0x85, 0xb6, 0x57, + 0x9f, 0x70, 0x9f, 0xa7, 0xa8, 0x8a, 0xad, 0x1a, 0x6f, 0x89, 0x4d, 0xb9, 0xca, 0x8d, 0x95, 0x02, + 0x72, 0x61, 0xb6, 0x39, 0xae, 0xaa, 0xb2, 0x61, 0x36, 0x2d, 0x54, 0x57, 0xcb, 0x85, 0xea, 0x98, + 0x2a, 0x9b, 0x06, 0x7d, 0x3a, 0xe8, 0x25, 0x61, 0x0f, 0x55, 0x2e, 0xee, 0x4e, 0xcd, 0xc9, 0xc2, + 0xe4, 0x2a, 0xcc, 0x27, 0x34, 0x4e, 0x02, 0x9a, 0xa0, 0x56, 0xaa, 0x61, 0x40, 0x40, 0x42, 0xcc, + 0x41, 0x9d, 0x44, 0x5e, 0xdc, 0x69, 0x62, 0x10, 0x0e, 0xff, 0x27, 0x9f, 0x82, 0xd5, 0x63, 0x1a, + 0x27, 0xbd, 0x53, 0xea, 0x0e, 0x68, 0x84, 0x3b, 0xcd, 0xa3, 0x7d, 0xdc, 0xee, 0x17, 0x57, 0x32, + 0x1e, 0x3a, 0xa3, 0x51, 0xec, 0x85, 0x01, 0x5a, 0xfc, 0xba, 0x23, 0x8b, 0xac, 0x3d, 0x36, 0x79, + 0x65, 0x2f, 0xd5, 0x0a, 0x2e, 0xe2, 0xc4, 0x8b, 0x2b, 0xc9, 0x0d, 0x98, 0xc3, 0x09, 0xc4, 0x9d, + 0xb6, 0x11, 0xd5, 0xd8, 0x66, 0xa0, 0x23, 0xea, 0x3e, 0x5f, 0xa9, 0x35, 0xda, 0x4d, 0xfb, 0xa7, + 0xa0, 0x8a, 0x30, 0xdb, 0x74, 0xbe, 0x18, 0x9c, 0x29, 0x78, 0x81, 0x0d, 0x2d, 0xa0, 0xc9, 0x79, + 0x18, 0x3d, 0x95, 0x21, 0x61, 0x51, 0xb4, 0xbf, 0x81, 0x2e, 0xbe, 0x0a, 0x91, 0x3e, 0x46, 0xff, + 0x84, 0x1d, 0xd4, 0xf8, 0x52, 0xc7, 0xa7, 0xae, 0x38, 0x75, 0xd4, 0x10, 0x38, 0x3a, 0x75, 0x99, + 0xda, 0x32, 0x76, 0x8f, 0x1f, 0xe4, 0x1a, 0x88, 0xed, 0xf1, 0xcd, 0xbb, 0x01, 0x2d, 0x19, 0x7c, + 0x8d, 0x7b, 0x3e, 0x3d, 0x49, 0x64, 0x5c, 0x21, 0x98, 0x8c, 0xf0, 0xb4, 0xb7, 0x4f, 0x4f, 0x12, + 0xfb, 0x00, 0x96, 0x84, 0x2a, 0x79, 0x38, 0xa6, 0xb2, 0xeb, 0xcf, 0x14, 0x99, 0xe4, 0xc6, 0x9d, + 0x65, 0x53, 0xf7, 0xf0, 0x70, 0xb3, 0x49, 0x69, 0x3b, 0x40, 0x74, 0xd5, 0x24, 0x1a, 0x14, 0x76, + 0x51, 0x46, 0x4e, 0xc4, 0x74, 0x0c, 0x8c, 0xad, 0x4f, 0x3c, 0xe9, 0xf7, 0x65, 0xc8, 0x9c, 0x1d, + 0x87, 0x79, 0xd1, 0xfe, 0x13, 0x0b, 0x96, 0xb1, 0x35, 0xe9, 0x54, 0x08, 0xf5, 0xff, 0xd6, 0x47, + 0x18, 0x66, 0xb3, 0xaf, 0x47, 0x93, 0x56, 0xa0, 0xaa, 0x1b, 0x04, 0x5e, 0xf8, 0xe8, 0x87, 0xfa, + 0x4a, 0xf6, 0x50, 0x6f, 0xff, 0xae, 0x05, 0x4b, 0x5c, 0x27, 0x27, 0x6e, 0x32, 0x89, 0xc5, 0xf4, + 0x7f, 0x1a, 0x16, 0xb8, 0x71, 0x15, 0x52, 0x2d, 0x06, 0xba, 0xa2, 0x14, 0x10, 0xa2, 0x9c, 0x78, + 0xef, 0x92, 0x63, 0x12, 0x93, 0x77, 0xd0, 0xc1, 0x09, 0x7a, 0x88, 0x8a, 0xc0, 0xe0, 0x95, 0x02, + 0x33, 0xa0, 0xbe, 0xd7, 0xc8, 0xef, 0xd6, 0x60, 0x8e, 0xfb, 0xbb, 0xf6, 0x7d, 0x58, 0x30, 0x3a, + 0x32, 0x02, 0x0a, 0x4d, 0x1e, 0x50, 0xc8, 0x85, 0xa2, 0x4a, 0x05, 0xa1, 0xa8, 0x3f, 0x2d, 0x03, + 0x61, 0xcc, 0x92, 0xd9, 0x0d, 0xe6, 0x70, 0x87, 0x03, 0xe3, 0xf8, 0xd4, 0x74, 0x74, 0x88, 0xdc, + 0x02, 0xa2, 0x15, 0x65, 0x44, 0x91, 0x5b, 0x9f, 0x82, 0x1a, 0xa6, 0x26, 0x85, 0xf1, 0x16, 0x66, + 0x56, 0x1c, 0x14, 0xf9, 0xb2, 0x17, 0xd6, 0x31, 0x03, 0x33, 0x9e, 0xc4, 0xa7, 0x78, 0xb9, 0x22, + 0x0e, 0x58, 0xb2, 0x9c, 0xdd, 0xdf, 0xb9, 0x0b, 0xf7, 0x77, 0x3e, 0x17, 0xb4, 0xd1, 0x5c, 0xfc, + 0x9a, 0xe9, 0xe2, 0xdf, 0x80, 0x85, 0x11, 0x73, 0x39, 0x13, 0xbf, 0xdf, 0x1b, 0xb1, 0xde, 0xc5, + 0x79, 0xca, 0x00, 0xc9, 0x06, 0xb4, 0x85, 0xbb, 0x91, 0x9e, 0x23, 0x00, 0xd7, 0x38, 0x87, 0x33, + 0xfd, 0x9d, 0x86, 0x71, 0x1a, 0x38, 0xd8, 0x14, 0x60, 0x27, 0xaf, 0x98, 0x71, 0x48, 0x6f, 0x12, + 0x88, 0xfb, 0x15, 0x3a, 0xc0, 0x93, 0x54, 0xcd, 0xc9, 0x57, 0xd8, 0xbf, 0x6d, 0x41, 0x9b, 0xed, + 0x99, 0xc1, 0x96, 0x6f, 0x03, 0x4a, 0xc5, 0x0b, 0x72, 0xa5, 0x41, 0x4b, 0xde, 0x82, 0x3a, 0x96, + 0xc3, 0x31, 0x0d, 0x04, 0x4f, 0x76, 0x4c, 0x9e, 0x4c, 0xf5, 0xc9, 0xde, 0x25, 0x27, 0x25, 0xd6, + 0x38, 0xf2, 0xef, 0x2c, 0x68, 0x88, 0x5e, 0x7e, 0xe8, 0x30, 0x41, 0x57, 0xbb, 0x10, 0xe3, 0x9c, + 0x94, 0xde, 0x7f, 0xad, 0xc3, 0xe2, 0xc8, 0x4d, 0x26, 0x11, 0xb3, 0xc7, 0x46, 0x88, 0x20, 0x0b, + 0x33, 0xe3, 0x8a, 0xaa, 0x33, 0xee, 0x25, 0x9e, 0xdf, 0x93, 0xb5, 0xe2, 0xea, 0xa9, 0xa8, 0x8a, + 0x69, 0x90, 0x38, 0x71, 0x87, 0x54, 0xd8, 0x4d, 0x5e, 0xb0, 0x3b, 0xb0, 0x26, 0x26, 0x94, 0x71, + 0x55, 0xed, 0xbf, 0x6c, 0xc2, 0xe5, 0x5c, 0x95, 0xba, 0x9f, 0x16, 0x67, 0x5f, 0xdf, 0x1b, 0x1d, + 0x87, 0xca, 0xcf, 0xb7, 0xf4, 0x63, 0xb1, 0x51, 0x45, 0x86, 0xb0, 0x2a, 0x1d, 0x04, 0xb6, 0xa6, + 0xa9, 0x31, 0x2b, 0xa1, 0x95, 0x7a, 0xc3, 0xdc, 0xc2, 0x6c, 0x87, 0x12, 0xd7, 0x85, 0xb8, 0xb8, + 0x3d, 0x72, 0x0a, 0x1d, 0xe5, 0x89, 0x08, 0x65, 0xad, 0x79, 0x2b, 0xac, 0xaf, 0xd7, 0x2f, 0xe8, + 0xcb, 0xf0, 0x6c, 0x9d, 0x99, 0xad, 0x91, 0x29, 0x5c, 0x93, 0x75, 0xa8, 0x8d, 0xf3, 0xfd, 0x55, + 0x5e, 0x68, 0x6e, 0xe8, 0xb3, 0x9b, 0x9d, 0x5e, 0xd0, 0x30, 0x79, 0x1f, 0xd6, 0xce, 0x5d, 0x2f, + 0x91, 0xc3, 0xd2, 0x7c, 0x83, 0x2a, 0x76, 0x79, 0xe7, 0x82, 0x2e, 0x9f, 0xf0, 0x8f, 0x0d, 0x13, + 0x35, 0xa3, 0xc5, 0xee, 0xdf, 0x58, 0xd0, 0x32, 0xdb, 0x61, 0x6c, 0x2a, 0x64, 0x5f, 0xea, 0x40, + 0xe9, 0x4d, 0x66, 0xe0, 0xfc, 0x51, 0xb9, 0x54, 0x74, 0x54, 0xd6, 0x0f, 0xa8, 0xe5, 0x8b, 0x62, + 0x4c, 0x95, 0x17, 0x8b, 0x31, 0x55, 0x8b, 0x62, 0x4c, 0xdd, 0xff, 0xb6, 0x80, 0xe4, 0x79, 0x89, + 0xdc, 0xe7, 0x67, 0xf5, 0x80, 0xfa, 0x42, 0xa5, 0xfc, 0xe4, 0x8b, 0xf1, 0xa3, 0x5c, 0x3b, 0xf9, + 0x35, 0x13, 0x0c, 0xfd, 0xee, 0x58, 0x77, 0x76, 0x16, 0x9c, 0xa2, 0xaa, 0x4c, 0xd4, 0xab, 0x72, + 0x71, 0xd4, 0xab, 0x7a, 0x71, 0xd4, 0x6b, 0x2e, 0x1b, 0xf5, 0xea, 0xfe, 0x8a, 0x05, 0xcb, 0x05, + 0x9b, 0xfe, 0xe3, 0x9b, 0x38, 0xdb, 0x26, 0x43, 0x17, 0x94, 0xc4, 0x36, 0xe9, 0x60, 0xf7, 0x17, + 0x60, 0xc1, 0x60, 0xf4, 0x1f, 0x5f, 0xff, 0x59, 0x7f, 0x8d, 0xf3, 0x99, 0x81, 0x75, 0xff, 0xb3, + 0x04, 0x24, 0x2f, 0x6c, 0xff, 0xaf, 0x63, 0xc8, 0xaf, 0x53, 0xb9, 0x60, 0x9d, 0xfe, 0x4f, 0xed, + 0xc0, 0xeb, 0xb0, 0x24, 0x92, 0x59, 0xb4, 0x08, 0x0d, 0xe7, 0x98, 0x7c, 0x05, 0xf3, 0x58, 0xcd, + 0x90, 0x63, 0xcd, 0x48, 0x10, 0xd0, 0x8c, 0x61, 0x26, 0xf2, 0x68, 0x77, 0xa1, 0x23, 0x56, 0x68, + 0xf7, 0x8c, 0x06, 0xc9, 0xd1, 0xe4, 0x98, 0x67, 0x84, 0x78, 0x61, 0x60, 0x7f, 0xaf, 0xac, 0x9c, + 0x6e, 0xac, 0x14, 0xe6, 0xfd, 0x53, 0xd0, 0xd4, 0x95, 0xb9, 0xd8, 0x8e, 0x4c, 0x80, 0x8e, 0x19, + 0x76, 0x9d, 0x8a, 0xec, 0x40, 0x0b, 0x55, 0xd6, 0x40, 0x7d, 0x57, 0xc2, 0xef, 0x9e, 0x13, 0x78, + 0xd8, 0xbb, 0xe4, 0x64, 0xbe, 0x21, 0x9f, 0x85, 0x96, 0x79, 0x94, 0x12, 0x3e, 0x42, 0x91, 0x6f, + 0xce, 0x3e, 0x37, 0x89, 0xc9, 0x16, 0xb4, 0xb3, 0x67, 0x31, 0x71, 0x5b, 0x3c, 0xa3, 0x81, 0x1c, + 0x39, 0x79, 0x4b, 0xdc, 0x3d, 0x55, 0x31, 0x08, 0x76, 0xc3, 0xfc, 0x4c, 0x5b, 0xa6, 0x5b, 0xfc, + 0x8f, 0x76, 0x1b, 0xf5, 0x55, 0x80, 0x14, 0x23, 0x6d, 0x68, 0x3e, 0x3c, 0xdc, 0x3d, 0xe8, 0x6d, + 0xef, 0x6d, 0x1d, 0x1c, 0xec, 0xee, 0xb7, 0x2f, 0x11, 0x02, 0x2d, 0x8c, 0x5f, 0xed, 0x28, 0xcc, + 0x62, 0xd8, 0xd6, 0x36, 0x8f, 0x8d, 0x09, 0xac, 0x44, 0x56, 0xa0, 0xfd, 0xe0, 0x20, 0x83, 0x96, + 0xef, 0xd6, 0x95, 0x7c, 0xd8, 0x6b, 0xb0, 0xc2, 0x13, 0x9e, 0xee, 0x72, 0xf6, 0x90, 0xbe, 0xc2, + 0xef, 0x5b, 0xb0, 0x9a, 0xa9, 0x48, 0x13, 0x0f, 0xb8, 0x3b, 0x60, 0xfa, 0x08, 0x26, 0xc8, 0x78, + 0x52, 0x79, 0x7e, 0x19, 0x0d, 0x92, 0xaf, 0x60, 0x3c, 0xaf, 0x79, 0x8a, 0x19, 0x49, 0x2a, 0xaa, + 0xb2, 0x2f, 0xf3, 0xb4, 0xac, 0x80, 0xfa, 0x99, 0x81, 0x9f, 0xf0, 0x44, 0x2a, 0xbd, 0x22, 0xbd, + 0xcb, 0x33, 0x87, 0x2c, 0x8b, 0xcc, 0xc9, 0x37, 0x5c, 0x0f, 0x73, 0xbc, 0x85, 0x75, 0xf6, 0xf7, + 0x2d, 0x20, 0x5f, 0x9c, 0xd0, 0x68, 0x8a, 0x39, 0x03, 0x2a, 0x1c, 0x78, 0x39, 0x1b, 0xec, 0x9a, + 0x1b, 0x4f, 0x8e, 0xbf, 0x40, 0xa7, 0x32, 0xa1, 0xa5, 0x94, 0x26, 0xb4, 0xbc, 0x0c, 0xc0, 0x0e, + 0xc7, 0x2a, 0x63, 0x01, 0x9d, 0xeb, 0x60, 0x32, 0xe2, 0x0d, 0x16, 0xe6, 0x9c, 0x54, 0x2e, 0xce, + 0x39, 0xa9, 0x5e, 0x90, 0x73, 0x62, 0xbf, 0x03, 0xcb, 0xc6, 0xb8, 0xd5, 0xb6, 0xca, 0xdc, 0x09, + 0x2b, 0x9f, 0x3b, 0x21, 0xf3, 0x26, 0xec, 0x6f, 0x96, 0xa0, 0xbc, 0x17, 0x8e, 0xf5, 0x50, 0xb8, + 0x65, 0x86, 0xc2, 0x85, 0x7f, 0xd0, 0x53, 0xe6, 0x5f, 0x98, 0x0d, 0x03, 0x24, 0x1b, 0xd0, 0x72, + 0x47, 0x49, 0x2f, 0x09, 0x99, 0x3f, 0x74, 0xee, 0x46, 0x03, 0xbe, 0xd7, 0x18, 0x92, 0xc9, 0xd4, + 0x90, 0x15, 0x28, 0x2b, 0x43, 0x8a, 0x04, 0xac, 0xc8, 0x9c, 0x71, 0xbc, 0x64, 0x9b, 0x8a, 0xb0, + 0x92, 0x28, 0x31, 0x56, 0x32, 0xbf, 0xe7, 0x27, 0x21, 0xae, 0x0e, 0x8b, 0xaa, 0x98, 0xaf, 0xc2, + 0x96, 0x0f, 0xc9, 0x44, 0x3c, 0x50, 0x96, 0xf5, 0xd8, 0x65, 0xcd, 0xbc, 0x72, 0xfc, 0x77, 0x0b, + 0xaa, 0xb8, 0x36, 0x4c, 0xb5, 0x73, 0xde, 0x57, 0xd1, 0x70, 0x5c, 0x93, 0x05, 0x27, 0x0b, 0x13, + 0xdb, 0x48, 0x09, 0x2b, 0xa9, 0x09, 0xe9, 0x69, 0x61, 0xd7, 0xa1, 0xce, 0x4b, 0x2a, 0xfd, 0x09, + 0x49, 0x52, 0x90, 0x5c, 0x83, 0xca, 0x69, 0x38, 0x96, 0xbe, 0x28, 0xc8, 0xab, 0xa2, 0x70, 0xec, + 0x20, 0x9e, 0x8e, 0x87, 0xb5, 0xc7, 0xa7, 0xc5, 0x3d, 0x8c, 0x2c, 0xcc, 0x7c, 0x2c, 0xd5, 0xac, + 0xbe, 0x4c, 0x19, 0xd4, 0xde, 0x80, 0xc5, 0x83, 0x70, 0x40, 0xb5, 0x90, 0xe4, 0x4c, 0x3e, 0xb7, + 0x7f, 0xd1, 0x82, 0x9a, 0x24, 0x26, 0xeb, 0x50, 0x61, 0x8e, 0x63, 0xe6, 0x54, 0xa7, 0xae, 0x88, + 0x19, 0x9d, 0x83, 0x14, 0xcc, 0xd2, 0x62, 0xa4, 0x28, 0x3d, 0x44, 0xc8, 0x38, 0x51, 0xea, 0x23, + 0xab, 0xe1, 0x66, 0x5c, 0xcb, 0x0c, 0x6a, 0x7f, 0xd7, 0x82, 0x05, 0xa3, 0x0f, 0x72, 0x1d, 0x1a, + 0xbe, 0x1b, 0x27, 0xe2, 0xda, 0x4d, 0x6c, 0x8f, 0x0e, 0xe9, 0x1b, 0x5d, 0x32, 0x83, 0xd4, 0x2a, + 0x7c, 0x5a, 0xd6, 0xc3, 0xa7, 0xb7, 0xa1, 0x9e, 0x26, 0xee, 0x55, 0x0c, 0x0b, 0xca, 0x7a, 0x94, + 0x97, 0xdf, 0x29, 0x11, 0x46, 0xe4, 0x42, 0x3f, 0x8c, 0xc4, 0x8d, 0x0e, 0x2f, 0xd8, 0xef, 0x40, + 0x43, 0xa3, 0xd7, 0x03, 0x74, 0x96, 0x11, 0xa0, 0x53, 0x99, 0x21, 0xa5, 0x34, 0x33, 0xc4, 0xfe, + 0x37, 0x0b, 0x16, 0x18, 0x0f, 0x7a, 0xc1, 0xf0, 0x30, 0xf4, 0xbd, 0xfe, 0x14, 0xf7, 0x5e, 0xb2, + 0x9b, 0xd0, 0x19, 0x92, 0x17, 0x4d, 0x98, 0x71, 0xbd, 0x0c, 0x0b, 0x08, 0x11, 0x55, 0x65, 0x26, + 0xc3, 0x4c, 0x02, 0x8e, 0xdd, 0x58, 0x88, 0x85, 0x70, 0x69, 0x0c, 0x90, 0x49, 0x1a, 0x03, 0x22, + 0x37, 0xa1, 0xbd, 0x91, 0xe7, 0xfb, 0x1e, 0xa7, 0xe5, 0x0e, 0x6f, 0x51, 0x15, 0xeb, 0x73, 0xe0, + 0xc5, 0xee, 0x71, 0x7a, 0x4b, 0xa1, 0xca, 0x38, 0x1e, 0xf7, 0x19, 0x1f, 0xcf, 0x1c, 0xaa, 0x14, + 0x55, 0xb6, 0xff, 0xbc, 0x04, 0x0d, 0x69, 0x35, 0x07, 0x43, 0x2a, 0xae, 0xdb, 0xf0, 0xb8, 0xa1, + 0x14, 0x90, 0x86, 0xc8, 0x7a, 0xe3, 0x80, 0xa2, 0x21, 0x59, 0x76, 0x28, 0xe7, 0xd9, 0xe1, 0x2a, + 0xd4, 0x19, 0x5b, 0xbe, 0x81, 0x27, 0x21, 0x91, 0x01, 0xab, 0x00, 0x59, 0x7b, 0x07, 0x6b, 0xab, + 0x69, 0x2d, 0x02, 0xcf, 0xbd, 0x9c, 0x7b, 0x0b, 0x9a, 0xa2, 0x19, 0xdc, 0x2f, 0xd4, 0x37, 0xa9, + 0x60, 0x18, 0x7b, 0xe9, 0x18, 0x94, 0xf2, 0xcb, 0x3b, 0xf2, 0xcb, 0xda, 0x45, 0x5f, 0x4a, 0x4a, + 0xfb, 0xbe, 0xba, 0xf3, 0xbc, 0x1f, 0xb9, 0xe3, 0x53, 0x29, 0xc1, 0xb7, 0x61, 0xd9, 0x0b, 0xfa, + 0xfe, 0x64, 0x40, 0x7b, 0x93, 0xc0, 0x0d, 0x82, 0x70, 0x12, 0xf4, 0xa9, 0x4c, 0x08, 0x29, 0xaa, + 0xb2, 0x07, 0x2a, 0x1f, 0x0e, 0x1b, 0x22, 0x1b, 0x50, 0x65, 0x1d, 0x49, 0x8b, 0x51, 0x2c, 0xde, + 0x9c, 0x84, 0xac, 0x43, 0x95, 0x0e, 0x86, 0x54, 0x46, 0x07, 0x48, 0xc6, 0x17, 0x1a, 0x0c, 0xa9, + 0xc3, 0x09, 0x98, 0xb2, 0xc1, 0x9c, 0x47, 0x53, 0xd9, 0x98, 0xd6, 0x66, 0xae, 0xcf, 0xb3, 0x22, + 0x57, 0x80, 0x1c, 0x70, 0xf9, 0xd0, 0xaf, 0x4b, 0x7e, 0xb9, 0x0c, 0x0d, 0x0d, 0x66, 0x7a, 0x63, + 0xc8, 0x06, 0xdc, 0x1b, 0x78, 0xee, 0x88, 0x26, 0x34, 0x12, 0x32, 0x91, 0x41, 0x19, 0x9d, 0x7b, + 0x36, 0xec, 0x85, 0x93, 0xa4, 0x37, 0xa0, 0xc3, 0x88, 0x72, 0x07, 0x80, 0x19, 0x24, 0x03, 0x65, + 0x74, 0x8c, 0x35, 0x35, 0x3a, 0xce, 0x41, 0x19, 0x54, 0x5e, 0x7e, 0xf0, 0x35, 0xaa, 0xa4, 0x97, + 0x1f, 0x7c, 0x45, 0xb2, 0x1a, 0xaf, 0x5a, 0xa0, 0xf1, 0xde, 0x84, 0x35, 0xae, 0xdb, 0x84, 0x16, + 0xe8, 0x65, 0x18, 0x6b, 0x46, 0x2d, 0xd9, 0x80, 0x36, 0x1b, 0xb3, 0x14, 0x89, 0xd8, 0xfb, 0x06, + 0x0f, 0x24, 0x5a, 0x4e, 0x0e, 0x67, 0xb4, 0x18, 0xd1, 0xd3, 0x69, 0xf9, 0x65, 0x70, 0x0e, 0x47, + 0x5a, 0xf7, 0x99, 0x49, 0x5b, 0x17, 0xb4, 0x19, 0xdc, 0x5e, 0x80, 0xc6, 0x51, 0x12, 0x8e, 0xe5, + 0xa6, 0xb4, 0xa0, 0xc9, 0x8b, 0x22, 0x31, 0xe7, 0x25, 0xb8, 0x82, 0x5c, 0xf4, 0x28, 0x1c, 0x87, + 0x7e, 0x38, 0x9c, 0x1a, 0xa7, 0x89, 0xbf, 0xb5, 0x60, 0xd9, 0xa8, 0x4d, 0x8f, 0x13, 0x18, 0x88, + 0x90, 0x19, 0x15, 0x9c, 0xf1, 0x96, 0x34, 0xc5, 0xcb, 0x09, 0x79, 0xcc, 0xf7, 0xb1, 0x48, 0xb2, + 0xd8, 0x82, 0x45, 0x39, 0x32, 0xf9, 0x21, 0xe7, 0xc2, 0x4e, 0x9e, 0x0b, 0xc5, 0xf7, 0x2d, 0xf1, + 0x81, 0x6c, 0xe2, 0xb3, 0xe2, 0x52, 0x9d, 0x9f, 0x2e, 0x64, 0xdc, 0x49, 0x9d, 0x47, 0xf4, 0xd3, + 0xa7, 0x1c, 0x41, 0x5f, 0x81, 0xb1, 0xfd, 0xeb, 0x16, 0x40, 0x3a, 0x3a, 0xbc, 0x8a, 0x55, 0xc6, + 0x83, 0xbf, 0x00, 0xd1, 0x0c, 0xc5, 0xab, 0xd0, 0x54, 0x57, 0x78, 0xa9, 0x3d, 0x6a, 0x48, 0x8c, + 0x39, 0x93, 0x37, 0x61, 0x71, 0xe8, 0x87, 0xc7, 0x68, 0xcc, 0x31, 0xd3, 0x2b, 0x16, 0xe9, 0x49, + 0x2d, 0x0e, 0xdf, 0x13, 0x68, 0x6a, 0xbc, 0x2a, 0x9a, 0xf1, 0xb2, 0x7f, 0xa3, 0xa4, 0x6e, 0x5c, + 0xd2, 0x39, 0xcf, 0x94, 0x32, 0x72, 0x27, 0xa7, 0x4e, 0x67, 0x5c, 0x70, 0x60, 0x84, 0xf5, 0xf0, + 0xc2, 0x00, 0xd0, 0x3b, 0xd0, 0x8a, 0xb8, 0xbe, 0x92, 0xca, 0xac, 0xf2, 0x1c, 0x65, 0xb6, 0x10, + 0x19, 0x16, 0xee, 0xe3, 0xd0, 0x76, 0x07, 0x67, 0x34, 0x4a, 0x3c, 0x3c, 0x82, 0xa3, 0x7b, 0xc1, + 0x55, 0xf0, 0xa2, 0x86, 0xa3, 0xd5, 0xbf, 0x09, 0x8b, 0x22, 0x25, 0x4c, 0x51, 0x8a, 0xf4, 0xee, + 0x14, 0x66, 0x84, 0xf6, 0x1f, 0xca, 0xcb, 0x1d, 0x73, 0x0f, 0x67, 0xaf, 0x88, 0x3e, 0xbb, 0x52, + 0x66, 0x76, 0x1f, 0x13, 0x17, 0x2d, 0x03, 0x79, 0xce, 0x2f, 0x6b, 0x09, 0x18, 0x03, 0x71, 0x31, + 0x66, 0x2e, 0x69, 0xe5, 0x45, 0x96, 0xd4, 0xfe, 0x81, 0x05, 0xf3, 0x7b, 0xe1, 0x78, 0x4f, 0xa4, + 0xa2, 0xa0, 0x20, 0xa8, 0x5c, 0x4c, 0x59, 0x7c, 0x4e, 0x92, 0x4a, 0xa1, 0x55, 0x5f, 0xc8, 0x5a, + 0xf5, 0x9f, 0x85, 0x97, 0x30, 0xca, 0x14, 0x85, 0xe3, 0x30, 0x62, 0xc2, 0xe8, 0xfa, 0xdc, 0x84, + 0x87, 0x41, 0x72, 0x2a, 0xd5, 0xd8, 0xf3, 0x48, 0xf0, 0xe8, 0xc7, 0x8e, 0x2c, 0xdc, 0x21, 0x17, + 0x5e, 0x08, 0xd7, 0x6e, 0xf9, 0x0a, 0xfb, 0x33, 0x50, 0x47, 0x37, 0x1a, 0xa7, 0xf5, 0x3a, 0xd4, + 0x4f, 0xc3, 0x71, 0xef, 0xd4, 0x0b, 0x12, 0x29, 0xdc, 0xad, 0xd4, 0xbf, 0xdd, 0xc3, 0x05, 0x51, + 0x04, 0xf6, 0x37, 0xe7, 0x60, 0xfe, 0x41, 0x70, 0x16, 0x7a, 0x7d, 0xbc, 0x48, 0x1a, 0xd1, 0x51, + 0x28, 0x33, 0x53, 0xd9, 0xff, 0xe4, 0x2a, 0xcc, 0x63, 0x2a, 0xd6, 0x98, 0x33, 0x6d, 0x93, 0x5f, + 0xf8, 0x0a, 0x88, 0x39, 0x09, 0x51, 0x9a, 0x14, 0xcf, 0xc5, 0x47, 0x43, 0xd8, 0x01, 0x23, 0xd2, + 0x93, 0xda, 0x45, 0x29, 0xcd, 0xfc, 0xad, 0x6a, 0x99, 0xbf, 0xac, 0x2f, 0x91, 0x3a, 0xc3, 0x73, + 0x2b, 0x78, 0x5f, 0x02, 0xc2, 0x43, 0x51, 0x44, 0x79, 0x94, 0x10, 0x5d, 0x8e, 0x79, 0x71, 0x28, + 0xd2, 0x41, 0xe6, 0x96, 0xf0, 0x0f, 0x38, 0x0d, 0x57, 0xc2, 0x3a, 0xc4, 0xdc, 0xbb, 0xec, 0x83, + 0x85, 0x3a, 0xe7, 0xfd, 0x0c, 0xcc, 0x34, 0xf5, 0x80, 0x2a, 0x85, 0xca, 0xe7, 0x01, 0x3c, 0xf1, + 0x3f, 0x8b, 0x6b, 0x47, 0x29, 0x9e, 0x35, 0x27, 0x8f, 0x52, 0x8c, 0x61, 0x5c, 0xdf, 0x3f, 0x76, + 0xfb, 0x4f, 0xf1, 0x3d, 0x0a, 0x5e, 0xed, 0xd4, 0x1d, 0x13, 0xc4, 0x04, 0x98, 0x74, 0x57, 0xf1, + 0x6a, 0xbc, 0xe2, 0xe8, 0x10, 0xb9, 0x03, 0x0d, 0x3c, 0x3e, 0x8a, 0x7d, 0x6d, 0xe1, 0xbe, 0xb6, + 0xf5, 0xf3, 0x25, 0xee, 0xac, 0x4e, 0xa4, 0x5f, 0x72, 0x2d, 0xe6, 0xf2, 0xd8, 0xdc, 0xc1, 0x40, + 0xdc, 0x0d, 0xb6, 0xb1, 0xb7, 0x14, 0x60, 0x56, 0x55, 0x2c, 0x18, 0x27, 0x58, 0x42, 0x02, 0x03, + 0x23, 0xd7, 0xa0, 0xc6, 0x8e, 0x36, 0x63, 0xd7, 0x1b, 0x60, 0x22, 0x1c, 0x3f, 0x61, 0x29, 0x8c, + 0xb5, 0x21, 0xff, 0xc7, 0x3b, 0xbc, 0x65, 0x5c, 0x15, 0x03, 0x63, 0x6b, 0xa3, 0xca, 0x28, 0x4c, + 0x2b, 0x7c, 0x47, 0x0d, 0x90, 0xbc, 0x81, 0x37, 0x34, 0x09, 0xed, 0xac, 0x62, 0x04, 0xe8, 0x25, + 0x31, 0x67, 0xc1, 0xb4, 0xf2, 0xef, 0x11, 0x23, 0x71, 0x38, 0xa5, 0xfd, 0x49, 0x68, 0xea, 0x30, + 0xa9, 0x41, 0xe5, 0xe1, 0xe1, 0xee, 0x41, 0xfb, 0x12, 0x69, 0xc0, 0xfc, 0xd1, 0xee, 0xa3, 0x47, + 0xfb, 0xbb, 0x3b, 0x6d, 0x8b, 0x34, 0xa1, 0xa6, 0xb2, 0x95, 0x4a, 0x76, 0x02, 0x64, 0x6b, 0x30, + 0x10, 0xdf, 0xa9, 0x23, 0x7d, 0xca, 0xc1, 0x96, 0xc1, 0xc1, 0x05, 0x5c, 0x54, 0x2a, 0xe6, 0xa2, + 0xe7, 0xae, 0xb5, 0xbd, 0x0b, 0x8d, 0x43, 0xed, 0xb5, 0x06, 0x0a, 0x94, 0x7c, 0xa7, 0x21, 0x04, + 0x51, 0x43, 0xb4, 0xe1, 0x94, 0xf4, 0xe1, 0xd8, 0x7f, 0x64, 0xf1, 0x0c, 0x72, 0x35, 0x7c, 0xde, + 0xb7, 0x0d, 0x4d, 0x15, 0x78, 0x49, 0x53, 0x0f, 0x0d, 0x8c, 0xd1, 0xe0, 0x50, 0x7a, 0xe1, 0xc9, + 0x49, 0x4c, 0x65, 0xa2, 0x90, 0x81, 0x31, 0x49, 0x60, 0x3e, 0x15, 0xf3, 0x4f, 0x3c, 0xde, 0x43, + 0x2c, 0x12, 0x86, 0x72, 0x38, 0xd3, 0xeb, 0x11, 0x3d, 0xa3, 0x51, 0xac, 0x52, 0xa4, 0x54, 0x59, + 0x65, 0x48, 0x66, 0x57, 0x79, 0x03, 0x6a, 0xaa, 0x5d, 0x53, 0x65, 0x49, 0x4a, 0x55, 0xcf, 0x54, + 0x23, 0x9e, 0x32, 0x8c, 0x41, 0x73, 0x35, 0x9d, 0xaf, 0x20, 0xb7, 0x80, 0x9c, 0x78, 0x51, 0x96, + 0xbc, 0x8c, 0xe4, 0x05, 0x35, 0xf6, 0x13, 0x58, 0x96, 0xac, 0xa3, 0x39, 0x53, 0xe6, 0x26, 0x5a, + 0x17, 0x09, 0x4c, 0x29, 0x2f, 0x30, 0xf6, 0xff, 0x58, 0x30, 0x2f, 0x76, 0x3a, 0xf7, 0xe2, 0x87, + 0xef, 0xb3, 0x81, 0x91, 0x8e, 0xf1, 0x38, 0x02, 0xa5, 0x4b, 0xa8, 0xc9, 0x9c, 0x22, 0x2c, 0x17, + 0x29, 0x42, 0x02, 0x95, 0xb1, 0x9b, 0x9c, 0xe2, 0xb9, 0xba, 0xee, 0xe0, 0xff, 0xa4, 0xcd, 0xa3, + 0x40, 0x5c, 0xe9, 0x62, 0x04, 0xa8, 0xe8, 0x6d, 0x13, 0xb7, 0xef, 0xf9, 0xb7, 0x4d, 0x57, 0xa1, + 0x8e, 0x03, 0xe8, 0xa5, 0x41, 0x9e, 0x14, 0x60, 0x9c, 0xcb, 0x0b, 0x28, 0xc9, 0x22, 0x4f, 0x39, + 0x45, 0xec, 0x55, 0xbe, 0xf3, 0x62, 0x09, 0xd4, 0x7d, 0xaa, 0xc8, 0x48, 0x4d, 0xe1, 0x94, 0x23, + 0xc4, 0x00, 0xb2, 0x1c, 0x21, 0x48, 0x1d, 0x55, 0x6f, 0x77, 0xa1, 0xb3, 0x43, 0x7d, 0x9a, 0xd0, + 0x2d, 0xdf, 0xcf, 0xb6, 0xff, 0x12, 0x5c, 0x29, 0xa8, 0x13, 0xfe, 0xf3, 0x17, 0x61, 0x75, 0x8b, + 0x67, 0xef, 0xfd, 0xb8, 0x32, 0x52, 0xec, 0x0e, 0xac, 0x65, 0x9b, 0x14, 0x9d, 0xdd, 0x83, 0xa5, + 0x1d, 0x7a, 0x3c, 0x19, 0xee, 0xd3, 0xb3, 0xb4, 0x23, 0x02, 0x95, 0xf8, 0x34, 0x3c, 0x17, 0x82, + 0x89, 0xff, 0x93, 0x97, 0x01, 0x7c, 0x46, 0xd3, 0x8b, 0xc7, 0xb4, 0x2f, 0xdf, 0x23, 0x20, 0x72, + 0x34, 0xa6, 0x7d, 0xfb, 0x4d, 0x20, 0x7a, 0x3b, 0x62, 0xbd, 0x98, 0xdd, 0x9b, 0x1c, 0xf7, 0xe2, + 0x69, 0x9c, 0xd0, 0x91, 0x7c, 0x68, 0xa1, 0x43, 0xf6, 0x4d, 0x68, 0x1e, 0xba, 0x53, 0x87, 0x7e, + 0x5d, 0x3c, 0xf4, 0xba, 0x0c, 0xf3, 0x63, 0x77, 0xca, 0xd4, 0x94, 0x8a, 0x3e, 0x61, 0xb5, 0xfd, + 0x5f, 0x25, 0x98, 0xe3, 0x94, 0xac, 0xd5, 0x01, 0x8d, 0x13, 0x2f, 0x40, 0xc6, 0x92, 0xad, 0x6a, + 0x50, 0x8e, 0x95, 0x4b, 0x05, 0xac, 0x2c, 0x4e, 0x69, 0x32, 0xb7, 0x5b, 0xf0, 0xab, 0x81, 0x31, + 0xe6, 0x4a, 0x53, 0xc3, 0x78, 0xf8, 0x23, 0x05, 0x32, 0x81, 0xca, 0xd4, 0xba, 0xf2, 0xf1, 0x49, + 0x29, 0x15, 0x9c, 0xab, 0x43, 0x85, 0x36, 0x7c, 0x9e, 0x33, 0x78, 0xce, 0x86, 0xe7, 0x6c, 0x75, + 0xed, 0x05, 0x6c, 0x35, 0x3f, 0xba, 0x3d, 0xcf, 0x56, 0xc3, 0x0b, 0xd8, 0x6a, 0x9b, 0x40, 0xfb, + 0x1e, 0xa5, 0x0e, 0x65, 0xde, 0xa0, 0xe4, 0xdd, 0x6f, 0x59, 0xd0, 0x16, 0x5c, 0xa4, 0xea, 0xc8, + 0xab, 0x86, 0xd7, 0x5b, 0x98, 0x63, 0x7d, 0x03, 0x16, 0xd0, 0x17, 0x55, 0x11, 0x59, 0x11, 0x3e, + 0x36, 0x40, 0x36, 0x0f, 0x79, 0x15, 0x3a, 0xf2, 0x7c, 0xb1, 0x29, 0x3a, 0x24, 0x83, 0xba, 0x91, + 0x2b, 0x52, 0xa4, 0x2c, 0x47, 0x95, 0xed, 0xbf, 0xb0, 0x60, 0x49, 0x1b, 0xb0, 0xe0, 0xc2, 0x77, + 0x40, 0x4a, 0x03, 0x0f, 0xcf, 0x72, 0xc9, 0xbd, 0x6c, 0x8a, 0x4d, 0xfa, 0x99, 0x41, 0x8c, 0x9b, + 0xe9, 0x4e, 0x71, 0x80, 0xf1, 0x64, 0x24, 0x94, 0xa8, 0x0e, 0x31, 0x46, 0x3a, 0xa7, 0xf4, 0xa9, + 0x22, 0xe1, 0x6a, 0xdc, 0xc0, 0x30, 0x7f, 0x87, 0xf9, 0xd0, 0x8a, 0x88, 0xdb, 0x33, 0x13, 0xb4, + 0xff, 0xd1, 0x82, 0x65, 0x7e, 0x18, 0x12, 0x47, 0x4d, 0xf5, 0x3c, 0x66, 0x8e, 0x9f, 0xfe, 0xb8, + 0x44, 0xee, 0x5d, 0x72, 0x44, 0x99, 0x7c, 0xfa, 0x05, 0x0f, 0x70, 0x2a, 0x6f, 0x6b, 0xc6, 0x5e, + 0x94, 0x8b, 0xf6, 0xe2, 0x39, 0x2b, 0x5d, 0x14, 0x8e, 0xac, 0x16, 0x86, 0x23, 0xef, 0xce, 0x43, + 0x35, 0xee, 0x87, 0x63, 0x6a, 0xaf, 0xc1, 0x8a, 0x39, 0x39, 0xa1, 0x82, 0xbe, 0x63, 0x41, 0xe7, + 0x1e, 0x0f, 0xdb, 0x7b, 0xc1, 0x70, 0xcf, 0x8b, 0x93, 0x30, 0x52, 0xaf, 0x08, 0xaf, 0x01, 0xc4, + 0x89, 0x1b, 0x25, 0x3c, 0x3b, 0x57, 0x04, 0x04, 0x53, 0x84, 0x8d, 0x91, 0x06, 0x03, 0x5e, 0xcb, + 0xf7, 0x46, 0x95, 0x73, 0x3e, 0x84, 0x38, 0xae, 0x19, 0x96, 0xf8, 0x35, 0x9e, 0xc7, 0xc8, 0x7c, + 0x05, 0x7a, 0x86, 0x7a, 0x9d, 0x9f, 0x83, 0x32, 0xa8, 0xfd, 0xf7, 0x16, 0x2c, 0xa6, 0x83, 0xc4, + 0x1b, 0x3e, 0x53, 0x3b, 0x08, 0xf3, 0x9b, 0x6a, 0x07, 0x19, 0xaa, 0xf4, 0x98, 0x3d, 0x16, 0x63, + 0xd3, 0x10, 0x94, 0x58, 0x51, 0x0a, 0x27, 0xd2, 0xc1, 0xd1, 0x21, 0x9e, 0x95, 0xc4, 0x3c, 0x01, + 0xe1, 0xd5, 0x88, 0x12, 0x26, 0x57, 0x8f, 0x12, 0xfc, 0x8a, 0xc7, 0x53, 0x65, 0x51, 0x9a, 0xd2, + 0x79, 0x44, 0xd1, 0x94, 0xea, 0x57, 0x20, 0x35, 0xbe, 0x3e, 0xb2, 0x6c, 0xff, 0xa6, 0x05, 0x57, + 0x0a, 0x16, 0x5e, 0x48, 0xcd, 0x0e, 0x2c, 0x9d, 0xa8, 0x4a, 0xb9, 0x38, 0x5c, 0x74, 0xd6, 0xe4, + 0x1d, 0x94, 0xb9, 0x20, 0x4e, 0xfe, 0x03, 0xe5, 0x17, 0xf1, 0xe5, 0x36, 0xf2, 0xfe, 0xf2, 0x15, + 0x1b, 0x9f, 0x83, 0x86, 0xf6, 0x7e, 0x8f, 0x5c, 0x86, 0xe5, 0x27, 0x0f, 0x1e, 0x1d, 0xec, 0x1e, + 0x1d, 0xf5, 0x0e, 0x1f, 0xdf, 0xfd, 0xc2, 0xee, 0x97, 0x7b, 0x7b, 0x5b, 0x47, 0x7b, 0xed, 0x4b, + 0x64, 0x0d, 0xc8, 0xc1, 0xee, 0xd1, 0xa3, 0xdd, 0x1d, 0x03, 0xb7, 0xee, 0xfc, 0x56, 0x19, 0x5a, + 0xfc, 0x6e, 0x93, 0xff, 0xe2, 0x03, 0x8d, 0xc8, 0xbb, 0x30, 0x2f, 0x7e, 0xb1, 0x83, 0xac, 0x8a, + 0x61, 0x9b, 0xbf, 0x11, 0xd2, 0x5d, 0xcb, 0xc2, 0x82, 0x2f, 0x97, 0x7f, 0xe9, 0x07, 0xff, 0xfa, + 0x3b, 0xa5, 0x05, 0xd2, 0xd8, 0x3c, 0x7b, 0x63, 0x73, 0x48, 0x83, 0x98, 0xb5, 0xf1, 0x55, 0x80, + 0xf4, 0xb7, 0x2c, 0x48, 0x47, 0xf9, 0x83, 0x99, 0x1f, 0xe9, 0xe8, 0x5e, 0x29, 0xa8, 0x11, 0xed, + 0x5e, 0xc1, 0x76, 0x97, 0xed, 0x16, 0x6b, 0xd7, 0x0b, 0xbc, 0x84, 0xff, 0xb0, 0xc5, 0xdb, 0xd6, + 0x06, 0x19, 0x40, 0x53, 0xff, 0xa9, 0x0a, 0x22, 0xc3, 0x50, 0x05, 0x3f, 0x94, 0xd1, 0x7d, 0xa9, + 0xb0, 0x4e, 0xc6, 0xe0, 0xb0, 0x8f, 0x55, 0xbb, 0xcd, 0xfa, 0x98, 0x20, 0x45, 0xda, 0x8b, 0x0f, + 0x2d, 0xf3, 0x17, 0x29, 0xc8, 0x55, 0x4d, 0x65, 0xe4, 0x7e, 0x0f, 0xa3, 0xfb, 0xf2, 0x8c, 0x5a, + 0xd1, 0xd7, 0xcb, 0xd8, 0xd7, 0x65, 0x9b, 0xb0, 0xbe, 0xfa, 0x48, 0x23, 0x7f, 0x0f, 0xe3, 0x6d, + 0x6b, 0xe3, 0xce, 0x5f, 0x5f, 0x87, 0xba, 0x0a, 0x1c, 0x93, 0xf7, 0x61, 0xc1, 0xb8, 0x7c, 0x26, + 0x72, 0x1a, 0x45, 0x77, 0xd5, 0xdd, 0xab, 0xc5, 0x95, 0xa2, 0xe3, 0x6b, 0xd8, 0x71, 0x87, 0xac, + 0xb1, 0x8e, 0xc5, 0xed, 0xed, 0x26, 0xa6, 0x51, 0xf0, 0x9c, 0xe8, 0xa7, 0x7c, 0x9e, 0xe9, 0x85, + 0xb1, 0x31, 0xcf, 0xdc, 0x05, 0xb3, 0x31, 0xcf, 0xfc, 0x2d, 0xb3, 0x7d, 0x15, 0xbb, 0x5b, 0x23, + 0x2b, 0x7a, 0x77, 0x2a, 0xa0, 0x4b, 0x31, 0x91, 0x5f, 0xff, 0x31, 0x07, 0xf2, 0xb2, 0x62, 0xac, + 0xa2, 0x1f, 0x79, 0x50, 0x2c, 0x92, 0xff, 0xa5, 0x07, 0xbb, 0x83, 0x5d, 0x11, 0x82, 0xdb, 0xa7, + 0xff, 0x96, 0x03, 0xf9, 0x0a, 0xd4, 0xd5, 0xe3, 0x5d, 0x72, 0x59, 0x7b, 0x4c, 0xad, 0x3f, 0x36, + 0xee, 0x76, 0xf2, 0x15, 0x45, 0x8c, 0xa1, 0xb7, 0xcc, 0x18, 0xe3, 0x09, 0x34, 0xb4, 0x07, 0xba, + 0xe4, 0x8a, 0x0a, 0xfb, 0x67, 0x1f, 0x01, 0x77, 0xbb, 0x45, 0x55, 0xa2, 0x8b, 0x25, 0xec, 0xa2, + 0x41, 0xea, 0xc8, 0x7b, 0xc9, 0xb3, 0x30, 0x26, 0xfb, 0xb0, 0x2a, 0x0e, 0x2e, 0xc7, 0xf4, 0xa3, + 0x2c, 0x51, 0xc1, 0x6f, 0x5b, 0xdc, 0xb6, 0xc8, 0x3b, 0x50, 0x93, 0xef, 0xb0, 0xc9, 0x5a, 0xf1, + 0x7b, 0xf2, 0xee, 0xe5, 0x1c, 0x2e, 0xd4, 0xda, 0x97, 0x01, 0xd2, 0xd7, 0xc0, 0x4a, 0x80, 0x73, + 0xaf, 0x8b, 0xd5, 0xee, 0xe4, 0x9f, 0x0e, 0xdb, 0x6b, 0x38, 0xc1, 0x36, 0x41, 0x01, 0x0e, 0xe8, + 0xb9, 0x7c, 0xda, 0xf2, 0x35, 0x68, 0x68, 0x0f, 0x82, 0xd5, 0xf2, 0xe5, 0x1f, 0x13, 0xab, 0xe5, + 0x2b, 0x78, 0x3f, 0x6c, 0x77, 0xb1, 0xf5, 0x15, 0x7b, 0x91, 0xb5, 0x1e, 0x7b, 0xc3, 0x60, 0xc4, + 0x09, 0xd8, 0x06, 0x9d, 0xc2, 0x82, 0xf1, 0xea, 0x57, 0x49, 0x4f, 0xd1, 0x9b, 0x62, 0x25, 0x3d, + 0x85, 0x0f, 0x85, 0x25, 0x3b, 0xdb, 0x4b, 0xac, 0x9f, 0x33, 0x24, 0xd1, 0x7a, 0x7a, 0x0f, 0x1a, + 0xda, 0x0b, 0x5e, 0x35, 0x97, 0xfc, 0x63, 0x61, 0x35, 0x97, 0xa2, 0x07, 0xbf, 0x2b, 0xd8, 0x47, + 0xcb, 0x46, 0x56, 0xc0, 0x97, 0x21, 0xac, 0xed, 0xf7, 0xa1, 0x65, 0xbe, 0xe9, 0x55, 0x72, 0x59, + 0xf8, 0x3a, 0x58, 0xc9, 0xe5, 0x8c, 0x87, 0xc0, 0x82, 0xa5, 0x37, 0x96, 0x55, 0x27, 0x9b, 0x1f, + 0x88, 0x2b, 0xde, 0x0f, 0xc9, 0x17, 0x99, 0xf2, 0x11, 0x4f, 0x75, 0xc8, 0x65, 0x8d, 0x6b, 0xf5, + 0x07, 0x3d, 0x4a, 0x5e, 0x72, 0xaf, 0x7a, 0x4c, 0x66, 0xe6, 0x6f, 0x5b, 0xd0, 0xa2, 0xe0, 0x93, + 0x1d, 0xcd, 0xa2, 0xe8, 0xaf, 0x7a, 0x34, 0x8b, 0x62, 0xbc, 0xec, 0xc9, 0x5a, 0x94, 0xc4, 0x63, + 0x6d, 0x04, 0xb0, 0x98, 0x49, 0x5e, 0x53, 0x52, 0x51, 0x9c, 0xed, 0xdb, 0xbd, 0xf6, 0xfc, 0x9c, + 0x37, 0x53, 0x51, 0x49, 0x05, 0xb5, 0x29, 0x73, 0xab, 0x7f, 0x1e, 0x9a, 0xfa, 0x6b, 0x4b, 0xa2, + 0x8b, 0x72, 0xb6, 0xa7, 0x97, 0x0a, 0xeb, 0xcc, 0xcd, 0x25, 0x4d, 0xbd, 0x1b, 0xf2, 0x25, 0x58, + 0x53, 0xa2, 0xae, 0xe7, 0x43, 0xc5, 0xe4, 0x95, 0x82, 0x2c, 0x29, 0x3d, 0x9c, 0xd1, 0xbd, 0x32, + 0x33, 0x8d, 0xea, 0xb6, 0xc5, 0x98, 0xc6, 0x7c, 0xc6, 0x96, 0x2a, 0xf3, 0xa2, 0xd7, 0x7b, 0xa9, + 0x32, 0x2f, 0x7c, 0xfb, 0x26, 0x99, 0x86, 0x2c, 0x1b, 0x6b, 0xc4, 0x23, 0xf9, 0xe4, 0x3d, 0x58, + 0xd4, 0x32, 0x4e, 0x8f, 0xa6, 0x41, 0x5f, 0x09, 0x40, 0xfe, 0x69, 0x42, 0xb7, 0xc8, 0xdf, 0xb6, + 0x2f, 0x63, 0xfb, 0x4b, 0xb6, 0xb1, 0x38, 0x8c, 0xf9, 0xb7, 0xa1, 0xa1, 0x67, 0xb3, 0x3e, 0xa7, + 0xdd, 0xcb, 0x5a, 0x95, 0x9e, 0x59, 0x7f, 0xdb, 0x22, 0xbf, 0x67, 0x41, 0xd3, 0xc8, 0x0d, 0x35, + 0xee, 0xab, 0x32, 0xed, 0x74, 0xf4, 0x3a, 0xbd, 0x21, 0xdb, 0xc1, 0x41, 0xee, 0x6f, 0x7c, 0xde, + 0x58, 0x84, 0x0f, 0x8c, 0x73, 0xdb, 0xad, 0xec, 0x8f, 0x99, 0x7c, 0x98, 0x25, 0xd0, 0x9f, 0x6f, + 0x7c, 0x78, 0xdb, 0x22, 0xdf, 0xb5, 0xa0, 0x65, 0x46, 0x1b, 0xd4, 0x56, 0x15, 0xc6, 0x35, 0xd4, + 0x56, 0xcd, 0x08, 0x51, 0xbc, 0x87, 0xa3, 0x7c, 0xb4, 0xe1, 0x18, 0xa3, 0x14, 0x0f, 0x1c, 0x7f, + 0xb4, 0xd1, 0x92, 0xb7, 0xf9, 0x0f, 0x1a, 0xc9, 0x10, 0x18, 0xd1, 0xac, 0x46, 0x76, 0x7b, 0xf5, + 0xdf, 0xe8, 0x59, 0xb7, 0x6e, 0x5b, 0xe4, 0x6b, 0xfc, 0x37, 0x4f, 0xc4, 0xb7, 0xc8, 0x25, 0x2f, + 0xfa, 0xbd, 0x7d, 0x03, 0xe7, 0x74, 0xcd, 0xbe, 0x62, 0xcc, 0x29, 0x6b, 0x8f, 0xb7, 0xf8, 0xe8, + 0xc4, 0xcf, 0xeb, 0xa4, 0x06, 0x25, 0xf7, 0x93, 0x3b, 0xb3, 0x07, 0x39, 0xe2, 0x83, 0x14, 0xe4, + 0x06, 0x2b, 0xbf, 0x60, 0x33, 0xf6, 0x06, 0x8e, 0xf5, 0x86, 0xfd, 0xca, 0xcc, 0xb1, 0x6e, 0x62, + 0xcc, 0x80, 0x8d, 0xf8, 0x10, 0x20, 0x0d, 0x57, 0x93, 0x4c, 0xb8, 0x54, 0x09, 0x78, 0x3e, 0xa2, + 0x6d, 0xca, 0x8b, 0x8c, 0xaa, 0xb2, 0x16, 0xbf, 0xc2, 0xd5, 0xd5, 0x03, 0x19, 0x68, 0xd5, 0x9d, + 0x12, 0x33, 0xae, 0x6c, 0x38, 0x25, 0xd9, 0xf6, 0x0d, 0x65, 0xa5, 0xa2, 0xb6, 0x8f, 0x61, 0x61, + 0x3f, 0x0c, 0x9f, 0x4e, 0xc6, 0xea, 0xb2, 0xc9, 0x0c, 0xe7, 0xed, 0xb9, 0xf1, 0x69, 0x37, 0x33, + 0x0b, 0xfb, 0x3a, 0x36, 0xd5, 0x25, 0x1d, 0xad, 0xa9, 0xcd, 0x0f, 0xd2, 0x70, 0xf8, 0x87, 0xc4, + 0x85, 0x25, 0xa5, 0x03, 0xd5, 0xc0, 0xbb, 0x66, 0x33, 0x86, 0xe6, 0xcb, 0x76, 0x61, 0x78, 0xb6, + 0x72, 0xb4, 0x9b, 0xb1, 0x6c, 0xf3, 0xb6, 0x45, 0x0e, 0xa1, 0xb9, 0x43, 0xfb, 0xe1, 0x80, 0x8a, + 0x98, 0xd8, 0x72, 0x3a, 0x70, 0x15, 0x4c, 0xeb, 0x2e, 0x18, 0xa0, 0x69, 0x17, 0xc6, 0xee, 0x34, + 0xa2, 0x5f, 0xdf, 0xfc, 0x40, 0x44, 0xdb, 0x3e, 0x94, 0x76, 0x41, 0x86, 0x23, 0x0d, 0xbb, 0x90, + 0x89, 0x5f, 0x1a, 0x76, 0x21, 0x17, 0xbf, 0x34, 0x96, 0x5a, 0x86, 0x43, 0x89, 0x0f, 0x4b, 0xb9, + 0x90, 0xa7, 0x32, 0x09, 0xb3, 0x02, 0xa5, 0xdd, 0xeb, 0xb3, 0x09, 0xcc, 0xde, 0x36, 0xcc, 0xde, + 0x8e, 0x60, 0x61, 0x87, 0xf2, 0xc5, 0xe2, 0x19, 0x2d, 0x99, 0x04, 0x63, 0x3d, 0x5f, 0x26, 0xab, + 0xc0, 0xb1, 0xce, 0x34, 0xfc, 0x98, 0x4e, 0x42, 0xbe, 0x02, 0x8d, 0xfb, 0x34, 0x91, 0x29, 0x2c, + 0xca, 0xf5, 0xcc, 0xe4, 0xb4, 0x74, 0x0b, 0x32, 0x60, 0x4c, 0x9e, 0xc1, 0xd6, 0x36, 0xe9, 0x60, + 0x48, 0xb9, 0x72, 0xea, 0x79, 0x83, 0x0f, 0xc9, 0xcf, 0x61, 0xe3, 0x2a, 0xbf, 0x6e, 0x4d, 0xcb, + 0x7c, 0xd0, 0x1b, 0x5f, 0xcc, 0xe0, 0x45, 0x2d, 0x07, 0xe1, 0x80, 0x6a, 0x2e, 0x50, 0x00, 0x0d, + 0x2d, 0x2d, 0x54, 0x09, 0x50, 0x3e, 0xc5, 0x55, 0x09, 0x50, 0x41, 0x16, 0xa9, 0xbd, 0x8e, 0xfd, + 0xd8, 0xe4, 0x7a, 0xda, 0x0f, 0xcf, 0x1c, 0x4d, 0x7b, 0xda, 0xfc, 0xc0, 0x1d, 0x25, 0x1f, 0x92, + 0x27, 0xf8, 0xca, 0x59, 0x4f, 0xd3, 0x49, 0x7d, 0xe9, 0x6c, 0x46, 0x8f, 0x5a, 0x2c, 0xad, 0xca, + 0xf4, 0xaf, 0x79, 0x57, 0xe8, 0x29, 0x7d, 0x1a, 0xe0, 0x28, 0x09, 0xc7, 0x3b, 0x2e, 0x1d, 0x85, + 0x41, 0xaa, 0x6b, 0xd3, 0x54, 0x94, 0x54, 0x7f, 0x69, 0xf9, 0x28, 0xe4, 0x89, 0x76, 0xf8, 0x30, + 0xb2, 0x9c, 0x24, 0x73, 0xcd, 0xcc, 0x56, 0x51, 0x0b, 0x52, 0x90, 0xb1, 0x72, 0xdb, 0x22, 0x5b, + 0x00, 0x69, 0xcc, 0x5b, 0x1d, 0x25, 0x72, 0xe1, 0x74, 0xa5, 0xf6, 0x0a, 0x02, 0xe4, 0x87, 0x50, + 0x4f, 0x83, 0xa8, 0x97, 0xd3, 0xd4, 0x5e, 0x23, 0xe4, 0xaa, 0x2c, 0x78, 0x2e, 0xb4, 0x69, 0xb7, + 0x71, 0xa9, 0x80, 0xd4, 0xd8, 0x52, 0x61, 0xbc, 0xd2, 0x83, 0x65, 0x3e, 0x40, 0xe5, 0x8e, 0x60, + 0x72, 0x85, 0x9c, 0x49, 0x41, 0x78, 0x51, 0x49, 0x73, 0x61, 0x74, 0xce, 0x88, 0x56, 0x30, 0x6e, + 0xe5, 0x89, 0x1d, 0x4c, 0x35, 0x8f, 0x60, 0x29, 0x17, 0x3e, 0x52, 0x22, 0x3d, 0x2b, 0xa2, 0xa7, + 0x44, 0x7a, 0x66, 0xe4, 0xc9, 0x5e, 0xc5, 0x2e, 0x17, 0x6d, 0xc0, 0x13, 0xd0, 0xb9, 0x97, 0xf4, + 0x4f, 0xdf, 0xb6, 0x36, 0xee, 0xde, 0x7c, 0xef, 0x27, 0x86, 0x5e, 0x72, 0x3a, 0x39, 0xbe, 0xd5, + 0x0f, 0x47, 0x9b, 0xbe, 0x0c, 0x29, 0x88, 0x14, 0xa9, 0x4d, 0x3f, 0x18, 0x6c, 0x62, 0xcb, 0xc7, + 0x73, 0xf8, 0x6b, 0xb0, 0x9f, 0xfc, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0xe7, 0x9f, 0x71, + 0x3f, 0x56, 0x00, 0x00, } diff --git a/lnrpc/rpc.proto b/lnrpc/rpc.proto index 7639616a..50f3c4d1 100644 --- a/lnrpc/rpc.proto +++ b/lnrpc/rpc.proto @@ -1597,6 +1597,7 @@ message RoutingPolicy { int64 fee_base_msat = 3 [json_name = "fee_base_msat"]; int64 fee_rate_milli_msat = 4 [json_name = "fee_rate_milli_msat"]; bool disabled = 5 [json_name = "disabled"]; + uint64 max_htlc = 6 [json_name = "max_htlc"]; } /** diff --git a/lnrpc/rpc.swagger.json b/lnrpc/rpc.swagger.json index 5e866ebf..e00cff6f 100644 --- a/lnrpc/rpc.swagger.json +++ b/lnrpc/rpc.swagger.json @@ -2815,6 +2815,10 @@ "disabled": { "type": "boolean", "format": "boolean" + }, + "max_htlc": { + "type": "string", + "format": "uint64" } } }, From 0c6c1040d8de958f600b8494ec5cfe429b424c27 Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 17:51:26 -0800 Subject: [PATCH 3/7] routing/ntfns+rpcserver: include max htlc in topology notifications --- routing/notifications.go | 4 ++++ routing/notifications_test.go | 6 ++++++ rpcserver.go | 1 + 3 files changed, 11 insertions(+) diff --git a/routing/notifications.go b/routing/notifications.go index 6ea68d5d..dee5300c 100644 --- a/routing/notifications.go +++ b/routing/notifications.go @@ -266,6 +266,9 @@ type ChannelEdgeUpdate struct { // MinHTLC is the minimum HTLC amount that this channel will forward. MinHTLC lnwire.MilliSatoshi + // MaxHTLC is the maximum HTLC amount that this channel will forward. + MaxHTLC lnwire.MilliSatoshi + // BaseFee is the base fee that will charged for all HTLC's forwarded // across the this channel direction. BaseFee lnwire.MilliSatoshi @@ -359,6 +362,7 @@ func addToTopologyChange(graph *channeldb.ChannelGraph, update *TopologyChange, TimeLockDelta: m.TimeLockDelta, Capacity: edgeInfo.Capacity, MinHTLC: m.MinHTLC, + MaxHTLC: m.MaxHTLC, BaseFee: m.FeeBaseMSat, FeeRate: m.FeeProportionalMillionths, AdvertisingNode: aNode, diff --git a/routing/notifications_test.go b/routing/notifications_test.go index c87813e0..9869cb67 100644 --- a/routing/notifications_test.go +++ b/routing/notifications_test.go @@ -77,6 +77,7 @@ func randEdgePolicy(chanID *lnwire.ShortChannelID, LastUpdate: time.Unix(int64(prand.Int31()), 0), TimeLockDelta: uint16(prand.Int63()), MinHTLC: lnwire.MilliSatoshi(prand.Int31()), + MaxHTLC: lnwire.MilliSatoshi(prand.Int31()), FeeBaseMSat: lnwire.MilliSatoshi(prand.Int31()), FeeProportionalMillionths: lnwire.MilliSatoshi(prand.Int31()), Node: node, @@ -435,6 +436,11 @@ func TestEdgeUpdateNotification(t *testing.T) { "expected %v, got %v", edgeAnn.MinHTLC, edgeUpdate.MinHTLC) } + if edgeUpdate.MaxHTLC != edgeAnn.MaxHTLC { + t.Fatalf("max HTLC of edge doesn't match: "+ + "expected %v, got %v", edgeAnn.MaxHTLC, + edgeUpdate.MaxHTLC) + } if edgeUpdate.BaseFee != edgeAnn.FeeBaseMSat { t.Fatalf("base fee of edge doesn't match: "+ "expected %v, got %v", edgeAnn.FeeBaseMSat, diff --git a/rpcserver.go b/rpcserver.go index e2328805..1528f6a8 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -4408,6 +4408,7 @@ func marshallTopologyChange(topChange *routing.TopologyChange) *lnrpc.GraphTopol RoutingPolicy: &lnrpc.RoutingPolicy{ TimeLockDelta: uint32(channelUpdate.TimeLockDelta), MinHtlc: int64(channelUpdate.MinHTLC), + MaxHtlc: uint64(channelUpdate.MaxHTLC), FeeBaseMsat: int64(channelUpdate.BaseFee), FeeRateMilliMsat: int64(channelUpdate.FeeRate), Disabled: channelUpdate.Disabled, From 675a8b2d9e5a8ec60ef7656053bb5bdb1623286b Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 17:53:47 -0800 Subject: [PATCH 4/7] rpcserver: include max htlc in DescribeGraph response --- rpcserver.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rpcserver.go b/rpcserver.go index 1528f6a8..53077dc6 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -3850,6 +3850,7 @@ func marshalDbEdge(edgeInfo *channeldb.ChannelEdgeInfo, edge.Node1Policy = &lnrpc.RoutingPolicy{ TimeLockDelta: uint32(c1.TimeLockDelta), MinHtlc: int64(c1.MinHTLC), + MaxHtlc: uint64(c1.MaxHTLC), FeeBaseMsat: int64(c1.FeeBaseMSat), FeeRateMilliMsat: int64(c1.FeeProportionalMillionths), Disabled: c1.ChannelFlags&lnwire.ChanUpdateDisabled != 0, @@ -3860,6 +3861,7 @@ func marshalDbEdge(edgeInfo *channeldb.ChannelEdgeInfo, edge.Node2Policy = &lnrpc.RoutingPolicy{ TimeLockDelta: uint32(c2.TimeLockDelta), MinHtlc: int64(c2.MinHTLC), + MaxHtlc: uint64(c2.MaxHTLC), FeeBaseMsat: int64(c2.FeeBaseMSat), FeeRateMilliMsat: int64(c2.FeeProportionalMillionths), Disabled: c2.ChannelFlags&lnwire.ChanUpdateDisabled != 0, From 833c31eacafbc0a62e48ed8debe3d638bfc71851 Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 18:14:51 -0800 Subject: [PATCH 5/7] htlcswitch/link_test+test_utils: add max htlc to forwarding policies --- htlcswitch/link_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htlcswitch/link_test.go b/htlcswitch/link_test.go index 3095d2fb..9bbdab45 100644 --- a/htlcswitch/link_test.go +++ b/htlcswitch/link_test.go @@ -1528,6 +1528,7 @@ func newSingleLinkTestHarness(chanAmt, chanReserve btcutil.Amount) ( } globalPolicy = ForwardingPolicy{ MinHTLC: lnwire.NewMSatFromSatoshis(5), + MaxHTLC: lnwire.NewMSatFromSatoshis(chanAmt), BaseFee: lnwire.NewMSatFromSatoshis(1), TimeLockDelta: 6, } @@ -5400,6 +5401,7 @@ func TestHtlcSatisfyPolicy(t *testing.T) { FwrdingPolicy: ForwardingPolicy{ TimeLockDelta: 20, MinHTLC: 500, + MaxHTLC: 1000, BaseFee: 10, }, FetchLastChannelUpdate: fetchLastChannelUpdate, From 90cbf9fe351a64d3606fe164e49ea8e5e568dbc2 Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 18:18:20 -0800 Subject: [PATCH 6/7] peer: set max htlc when loading active channels on start --- peer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/peer.go b/peer.go index d8793ca4..166b264e 100644 --- a/peer.go +++ b/peer.go @@ -480,6 +480,7 @@ func (p *peer) loadActiveChannels(chans []*channeldb.OpenChannel) error { if selfPolicy != nil { forwardingPolicy = &htlcswitch.ForwardingPolicy{ MinHTLC: selfPolicy.MinHTLC, + MaxHTLC: selfPolicy.MaxHTLC, BaseFee: selfPolicy.FeeBaseMSat, FeeRate: selfPolicy.FeeProportionalMillionths, TimeLockDelta: uint32(selfPolicy.TimeLockDelta), From f0e668974e86e1e4b9b6e450fa389c410913d60f Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Sat, 8 Dec 2018 18:21:18 -0800 Subject: [PATCH 7/7] htlcswitch/link: verify an htlc is not too large in HtlcSatifiesPolicy Before forwarding an HTLC, ensure that the amount to forward including fees does not exceed the max HTLC set for the channel link. --- htlcswitch/link.go | 19 +++++++++++ htlcswitch/link_test.go | 75 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/htlcswitch/link.go b/htlcswitch/link.go index c88026f8..0aa20772 100644 --- a/htlcswitch/link.go +++ b/htlcswitch/link.go @@ -1967,6 +1967,25 @@ func (l *channelLink) HtlcSatifiesPolicy(payHash [32]byte, return failure } + // Next, ensure that the passed HTLC isn't too large. If so, we'll cancel + // the HTLC directly. + if policy.MaxHTLC != 0 && amtToForward > policy.MaxHTLC { + l.errorf("outgoing htlc(%x) is too large: max_htlc=%v, "+ + "htlc_value=%v", payHash[:], policy.MaxHTLC, amtToForward) + + // As part of the returned error, we'll send our latest routing policy + // so the sending node obtains the most up-to-date data. + var failure lnwire.FailureMessage + update, err := l.cfg.FetchLastChannelUpdate(l.ShortChanID()) + if err != nil { + failure = &lnwire.FailTemporaryNodeFailure{} + } else { + failure = lnwire.NewTemporaryChannelFailure(update) + } + + return failure + } + // Next, using the amount of the incoming HTLC, we'll calculate the // expected fee this incoming HTLC must carry in order to satisfy the // constraints of the outgoing link. diff --git a/htlcswitch/link_test.go b/htlcswitch/link_test.go index 9bbdab45..6c5f10ba 100644 --- a/htlcswitch/link_test.go +++ b/htlcswitch/link_test.go @@ -772,6 +772,73 @@ func TestLinkForwardMinHTLCPolicyMismatch(t *testing.T) { } } +// TestLinkForwardMaxHTLCPolicyMismatch tests that if a node is an intermediate +// node and receives an HTLC which is _above_ its max HTLC policy then the +// HTLC will be rejected. +func TestLinkForwardMaxHTLCPolicyMismatch(t *testing.T) { + t.Parallel() + + channels, cleanUp, _, err := createClusterChannels( + btcutil.SatoshiPerBitcoin*5, btcutil.SatoshiPerBitcoin*5, + ) + if err != nil { + t.Fatalf("unable to create channel: %v", err) + } + defer cleanUp() + + n := newThreeHopNetwork( + t, channels.aliceToBob, channels.bobToAlice, channels.bobToCarol, + channels.carolToBob, testStartingHeight, + ) + if err := n.start(); err != nil { + t.Fatal(err) + } + defer n.stop() + + // In order to trigger this failure mode, we'll update our policy to have + // a new max HTLC of 10 satoshis. + maxHtlc := lnwire.NewMSatFromSatoshis(10) + + // First we'll generate a route over 2 hops within the network that + // attempts to pay out an amount greater than the max HTLC we're about to + // set. + amountNoFee := maxHtlc + 1 + htlcAmt, htlcExpiry, hops := generateHops( + amountNoFee, testStartingHeight, n.firstBobChannelLink, + n.carolChannelLink, + ) + + // We'll now update Bob's policy to set the max HTLC we chose earlier. + n.secondBobChannelLink.cfg.FwrdingPolicy.MaxHTLC = maxHtlc + + // Finally, we'll make the payment which'll send an HTLC with our + // specified parameters. + firstHop := n.firstBobChannelLink.ShortChanID() + _, err = makePayment( + n.aliceServer, n.carolServer, firstHop, hops, amountNoFee, + htlcAmt, htlcExpiry, + ).Wait(30 * time.Second) + + // We should get an error indicating a temporary channel failure, The + // failure is temporary because this payment would be allowed if Bob + // updated his policy to increase the max HTLC. + if err == nil { + t.Fatalf("payment should have failed but didn't") + } + + ferr, ok := err.(*ForwardingError) + if !ok { + t.Fatalf("expected a ForwardingError, instead got: %T", err) + } + + switch ferr.FailureMessage.(type) { + case *lnwire.FailTemporaryChannelFailure: + default: + t.Fatalf("incorrect error, expected temporary channel failure, "+ + "instead have: %v", err) + } +} + // TestUpdateForwardingPolicy tests that the forwarding policy for a link is // able to be updated properly. We'll first create an HTLC that meets the // specified policy, assert that it succeeds, update the policy (to invalidate @@ -5426,6 +5493,14 @@ func TestHtlcSatisfyPolicy(t *testing.T) { } }) + t.Run("above maxhtlc", func(t *testing.T) { + result := link.HtlcSatifiesPolicy(hash, 1500, 1200, + 200, 150, 0) + if _, ok := result.(*lnwire.FailTemporaryChannelFailure); !ok { + t.Fatalf("expected FailTemporaryChannelFailure failure code") + } + }) + t.Run("insufficient fee", func(t *testing.T) { result := link.HtlcSatifiesPolicy(hash, 1005, 1000, 200, 150, 0)